컴퓨터 구조 - 명령어집합구조를 공부하다 몇 가지 질문이 생겨 올립니다

cherry2370의 이미지

안녕하세요 it학부생인데, 명령어 집합 구조 부분에서

주소지정단위와 주소비트수의 관계/워드와 명령어형식/pc의 증가폭과 관련하여

개념이 많이 헷갈리네요 ...

첨부파일로 관련 질문 세가지를 정리하였습니다. 아시는분 계시면 도움주심 감사하겠습니다 ..

읽어주셔서 감사합니다 !

File attachments: 
세벌의 이미지

질문 잘 하는 방법
https://wiki.kldp.org/wiki.php/DocbookSgml/Beginner_QA-KLDP#AEN70

성의 없이 질문하고, 성의 있는 답을 기대하지 마세요.

cherry2370의 이미지

다음 업로드 시 더욱 주의하도록 하겠습니다 ..

익명 사용자의 이미지

질문을 깔끔하게 타이핑해서 올릴 노력은 커녕, 자기가 올린 사진이 제대로 된 방향으로 올라갔는지 다시 확인해 볼 생각도 없었던 거겠지요.

김정균의 이미지

음 그래도, 요즘 타자만 치는 시대에, 글씨를 예쁘게 잘 쓰는 데요.

jachin의 이미지

일단 개념이 헷갈리셔서 어려워하시는 내용이니, 질문의 내용을 떠나서 먼저 정리를 해보기로 하겠습니다.

1 Word 는 CPU 가 한 클럭에 받아들일 수 있는 Data 의 너비 (Data bus width) 입니다. 보통 8 bit, 16 bit, 32 bit, 64 bit 컴퓨터라고 하면, Data Bus Width 를 의미하는 것입니다. 하지만, 정확하게는 외부의 데이터를 내부에 저장해두는 레지스터의 크기입니다. 외부에 핀이 4 pin 밖에 없지만, 내부 레지스터가 4 bit씩 2개 연결되어 2 클럭에 저장이 된다면, 실제 Word 크기는 8 bit 가 되는 것입니다.

2. Data 는 피연산 대상인 수(Number)만을 의미하지는 않고, OP Code(Operator Code) Operand, ... 조합의 Instruction 일 수도 있으며, 여러개의 Operand 가 다음 Word 로 들어오는 경우도 있습니다. 즉, Inst. Operand 1 + Operand 2 + Operand 3 + ... 식으로 연결되어서 각 클럭마다 입력받을 수 있고 SIMD(Single Instruction Multi Data, 다중 피연산자처리 단일 명령어) 종류의 Instruction 에서 나타나는 형태입니다. 이 때, 이러한 종류의 명령어 길이에 따라 Program Counter 의 값이 2 Word 이상 늘어나게 됩니다.

3. Word 는 1. 에서 말했듯이 8, 16, 32 bit 너비일 수 있습니다. 바이트로 환산하면 1,2,4 bytes가 됩니다. 메모리 주소는 1 byte 단위로 지정(Addressing)하기 때문에, 32 bit 컴퓨터에서는 한 클럭마다 4의 배수로 Program Counter 값이 바뀔 것입니다.

4. PC(Program Counter) 레지스터는 실행할 명령어가 담겨있는 메모리주소를 저장하는 공간이기 때문에 Address Bus Width 와 같거나 더 큽니다.

5. Address Bus Width 는 꼭 Data Bus Width 와 일치하지는 않습니다. 32 bit CPU 이지만, 24 bit 메모리 주소 버스를 갖는 i386 CPU 처럼, 대부분은 비대칭적인 경우가 많습니다. 현재 64 bit CPU 인 x86_64 는 물리적 메모리 주소 버스 폭이 48 bit 입니다. 그러나 PC 레지스터의 크기는 64 bit 입니다.

A. 주소공간(Address Space) 이라는 개념에 대해 설명듣지 못하셨을 겁니다. 주 메모리의 한계용량을 의미하고, i686(IA32, x86) 구조에서는 32 bit, 즉 2^32 bytes 의 영역인 4 GB 가 주 메모리 한계공간입니다. i686은 Data Bus Width 가 32 bit, 즉 4 Bytes 이기 때문에, 32 bit 의 메모리 핀 중, 30 핀만 사용한다고 하더라도 충분히 4 GB 주소공간을 지정할 수 있었을 겁니다. 즉, 주소 지정 단위(Address Unit)가 어떻게 지정되느냐에 따라, Address Pin 의 갯수, 혹은 Address Bus Width 가 달라지는 셈입니다.

64 bit 컴퓨터인 x86_64 구조에서는 주소지정단위가 64bit, 즉 8 bytes 이므로, 48 bit 로 나타낼 수 있는 2^48 = 64 TBytes 의 공간을 8 Bytes 씩 지정한다고 했을 때, 45 bit 의 Address Bus Width 를 갖게 되는 셈입니다.

하지만, 최신 코어에서는 64 bit 컴퓨터라서 꼭 8 bytes 씩 단위를 쓰지는 않고, 16 bit (2 bytes), 32 bit (4 bytes) 단위로도 접근해서 쓰기 때문에, 동작하는 환경에 따라 주소공간이 각각 달라진다는 점을 알고 계시면 좋겠습니다.

답변이 도움이 되시기를.

cherry2370의 이미지

잘못 알고 있던 개념이 많았네요 .. 이해에 큰 도움이 되었습니다. 감사합니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.