2010-04-27 2 views
18

WordByte 주소 지정이 다른 점을 다른 사람이 설명 할 수 있습니까? 메모리 크기 등과 어떤 관련이 있습니까?단어로 주소를 지정할 수있는 주소와 바이트로 주소를 지정할 수있는 주소의 차이

+2

[바이트 대 단어 주소 지정 체계] (http://tams-www.informatik.uni-hamburg.de/applets/)를 참조하십시오. hades/webdemos/50-rtlib/40-memory/byte-vs-word.html) :> 바이트 및 단어 기반 주소 지정 체계의 데모. –

답변

25

바이트는 저장소의 메모리 단위이며 메모리 칩은 이러한 바이트로 가득합니다. 메모리 단위는 주소 지정이 가능합니다. 그것이 우리가 기억을 사용할 수있는 유일한 방법입니다.

실제로 메모리는 바이트 주소 지정 만 가능합니다. 이진 주소는 항상 단일 바이트를 가리 킵니다.. 단어는 CPU의 데이터 버스 크기에 따라 바이트 – 2, 4, 8의 그룹입니다.


메모리 동작을 완전히 이해하려면 CPU의 다양한 레지스터와 RAM의 메모리 포트를 잘 알고 있어야합니다. 'MAR 메모리 주소 레지스터', 'MDR 메모리 데이터 레지스터', 'PC 프로그램 카운터 레지스터', 'MBR 메모리 버퍼 레지스터'를 알고 있다고 가정합니다. RAM에는 데이터/주소 용 32 비트, OPCODE 용 8 비트 메모리 포트가 있습니다.

CPU가 주소 xyz부터 한 단어 (예 : 4 바이트)를 읽길 원한다고 가정하십시오. CPU는 MAR에 주소를 넣고 메모리 판독 신호를 메모리 컨트롤러 칩에 보냅니다. 주소 및 읽기 신호를 수신하면 메모리 컨트롤러는 데이터 버스를 32 비트 포트에 연결하고 xyz 포트에서 MDR로 흘러 나가는 주소에서 시작하여 4 바이트를 연결합니다.

CPU가 다음 명령을 가져 오려면 PC 레지스터에 주소를 넣고 페치 신호를 메모리 컨트롤러로 보냅니다. 주소 및 패치 신호를 수신하면 메모리 컨트롤러는 데이터 버스를 8 비트 포트에 연결하고 수신 된 주소에 위치한 1 바이트 길이의 op 코드가 RAM에서 CPU의 MDR로 흘러갑니다.

그래서 우리는 특정 레지스터가 '메모리 주소 지정 가능'또는 '바이트 주소 지정 가능'이라는 것을 의미합니다. 이제 'word'2를 읽으려는 의도로 MAR에 바이너리로 10 진수 2를 넣으면 어떻게 될까요?

워드 2는 32 비트 컴퓨터의 바이트 4, 5, 6, 7을 의미합니다. 실제로 실제 메모리는 바이트 주소 지정 만 가능합니다. 따라서 '단어 주소 지정'을 처리하는 트릭이 있습니다.
MAR이 주소 버스에 배치되면 해당 32 비트가 32 개의 주소 라인 0-31에 각각 매핑되지 않습니다. 대신 MAR 비트 0은 버스 라인 2를 주소 지정하고 MAR 비트 1은 버스 라인 3을 주소 지정하는 방식으로 연결됩니다. MAR의 상위 2 비트는 2^32 이상의 워드 주소에만 필요하기 때문에 버려집니다. 32 비트 시스템에서는 유효하지 않습니다.
이 매핑을 사용하면 MAR이 1이면 버스에 4가 설정되고 MAR이 2이면 버스에 8이 놓입니다.

처음에는 조금 이해하기 어렵습니다. Andrew Tanenbaums의 'structured computer organization'에서 배웠습니다.

1

이 이미지는 쉽게 이해할 수 있도록해야합니다 http://i.stack.imgur.com/rpB7N.png

간단히 말해

, 주소 지정 체계 바이트에서

•를 첫 번째 단어는 주소 0에서 시작하고, 두 번째 단어는 주소 4에서 시작

• 단어 주소 지정 체계에서 첫 번째 단어의 모든 바이트는 주소 0에 에 위치하며 두 번째 단어의 모든 바이트는 주소 1에 있습니다.

바이트 주소 지정 기능의 이점은 데이터를 한 번에 1 바이트 씩 처리하는 응용 프로그램을 고려할 때 분명합니다. 바이트 주소 지정이 가능한 시스템에서 단일 바이트에 액세스하려면 단일 주소를 발행하면됩니다. 16 비트 워드 어 드레서 블 시스템에서, 먼저 바이트를 포함하는 단어의 주소를 계산하고 그 단어를 가져온 다음 2 바이트 단어에서 바이트를 추출해야합니다. 바이트 추출 프로세스가 잘 이해되어 있지만 바이트에 직접 액세스하는 것보다 효율적이지 않습니다. 이러한 이유로 많은 최신 기계는 바이트 주소 지정이 가능합니다.

1

주소 지정 가능성은 자체 주소가있는 메모리 단위의 크기입니다. 또한 이웃에 영향을 미치지 않고 수정할 수있는 메모리 중 가장 작은 부분입니다.

예 : 바이트가 일반 8 비트이고 워드 크기 = 4 바이트 인 시스템. 단어로 주소를 지정할 수있는 컴퓨터 인 경우 int의 두 번째 바이트 주소와 같은 것은 없습니다. 문자열 (예 : char str[]과 같은 배열)을 처리하면 불편할 수 있습니다. 이는 함께 포장 된 문자를 저장하기 때문입니다. 단지 str[1]을 수정하면 해당 단어를 포함하는 단어를로드하고 변경 사항을 적용하기 위해 몇 가지 쉬프트/및/또는 조작을 수행 한 다음 단어 저장을 수행합니다.

정렬되지 않은 단어로드/저장을 허용하지 않는 컴퓨터와 다릅니다 (단어 주소의 하위 2 비트는 0이어야 함). 그러한 기계는 일반적으로 바이트로드/저장 명령어를 가지고있다. 우리는 그것조차없는 기계에 대해서 이야기하고 있습니다.

CPU 주소에는 실제로 하위 비트가 포함될 수 있지만 항상 0이어야합니다 (또는 무시해야 함). 그러나 이들이 0인지 확인한 후 폐기 될 수 있으므로 메모리 시스템의 나머지 부분에서는 단어 주소 만 볼 수 있습니다. 두 개의 인접 단어는 1이 아닌 4 개의 주소를가집니다. 그러나 레지스터에 64k 개의 서로 다른 주소 만 저장할 수있는 16 비트 CPU에서는이 작업을 수행하지 않을 것입니다. 각각의 개별 CPU 주소는 하위 비트를 무시하는 대신 다른 2 바이트의 메모리를 참조합니다. 2B 워드 어 드레서 블 메모리는 바이트 주소 지정이 가능한 메모리가있는 64kiB 대신 128KB의 메모리 주소 지정을 가능하게합니다.

재미있는 사실 : ARM은 정렬되지 않은 워드로드의 셔플 제어로 낮은 2 비트 주소를 사용했습니다. (그러나 항상 바이트로드/저장 명령어를했다.)


은 참조 : 존재할 수 메모리 주소 비트


주 ,하지만하지 않습니다. 8 비트 바이트는 거의 보편적으로 표준입니다. (고대 컴퓨터는 때때로 더 큰 바이트를 가졌습니다. 역사 섹션의 wikipedia's Byte article을 참조하십시오.)

관련 문제