CPU에 16 비트 주소 버스와 8 비트 워드가있는 경우 얼마나 많은 메모리를 처리 할 수 ​​있습니까?


23

학기말 시험을 위해 공부하고 있는데 다음 질문과 혼동됩니다. CPU에 16 비트 주소 버스와 8 비트 단어가있는 경우 얼마나 많은 메모리를 KB로 지정할 수 있습니까? 내 이해는 64KB를 처리 할 수 ​​있다고 말하지만이 작업을 수행하기 위해 2 ^ 16 = 65,536을 사용했습니다. 그 계산은 실제로 8 비트 단어를 고려하지 않았으므로 정확한지 확실하지 않습니다. 또한 8 비트 단어는 무엇을 의미합니까?

건배


16
간접적으로 사용했습니다. 주소 지정 가능한 총 메모리 양은 2 ^ 16 * 8 비트입니다. 1 바이트 = 8 비트이므로 2 ^ 16 바이트, 즉 65536 바이트 또는 64KiB입니다. K는 1000의 SI 접두사입니다. 1024를 의미하는 경우 Ki를 사용하십시오.
jcaron

2
SI 접두사 킬로바이트 (1,000 바이트)와 이진 접두사 킬로바이트 (1,024 바이트)의 차이점에 유의하십시오. 2 ^ 16 = 65,536 = 64 킬로 ~ 65.5 킬로. 찾는 답은 아마도 kilo가 kibi를 의미하는 것으로 생각되지만 그 차이가 실제로 중요한 경우가 있습니다. 완전히 확신하려면 안전한 경로를 잡고 바이트 수를 지정하고 교사의 편의를 위해 킬로바이트 또는 킬로바이트와 같은 더 편리한 단위로 번역을 제공하십시오. Wikipedia : Binary prefix를 비교하십시오 . 메모리 칩은 일반적으로 65,536x8 비트를 지정합니다.
CVn


3
은행 교환이 없다고 가정합니다. 대부분의 16 비트 CPU는 어떤 형태의 뱅크 스와핑을 사용하여 실제로 대답하기 어렵습니다.
Joshua

1
@ MichaelKjörling이 질문은 KB가 항상 1024 바이트를 의미한다고 말합니다.
kasperd

답변:


38

대부분의 아키텍처에서 단어 는 단일 작업으로 작업 메모리와주고받을 수있는 가장 큰 데이터입니다.

메모리에서 위치를 지정하는 데 사용되는 가장 큰 주소 크기를 일반적으로 하드웨어 단어라고합니다.

따라서 CPU는 64KB (2 ^ 16)의 주소를 지정할 수 있지만 8 비트의 단일 작업으로 만 전송할 수 있습니다.


3
이 답변이 선생님이 따르는 답변이라고 확신하지만 실제로는 맞습니까? CPU가 64KB 이상에 액세스 할 수 있도록 3 레벨 계층 (또는 그 이상)을 허용하기 위해 PAE와 같은 것을 사용할 수 없습니까? 저는 하드웨어 전문가는 아니지만 Commodore 128은 RAM 뱅크 전환을 허용하여 8 비트 워드, 16 비트 버스에서 이와 같은 작업을 수행하지 않았습니까?
davidgo

5
귀하의 문장이 "단일 작업으로 만 전송할 수있는 것은 256B (2 ^ 8)"라는 것을 잘 모르겠습니다. 한 번의 작업으로 1 워드 = 1 바이트 = 8 비트 만 전송할 수 있습니다.
jcaron

8
@davidgo still PAE를 사용하려면 주소 버스의 크기가 적절해야합니다. PAE를 지원하는 인텔 CPU의 주소 버스는 36 비트입니다.
Dmitry Grigoryev

6
PAE는 최신 x86 CPU에 고유 한 브랜드 / 기능 이름입니다. 예, 예를 들어 XMS와 같이 더 많은 양의 메모리를 간접적으로 처리하는 방식이 구현되어 왔으며, 결국 이러한 시스템은 다른 메모리를 더 작은 주소 공간에 노출시키기 위해 지속적으로 재구성 할 수있는 주변 장치처럼 메모리 하위 시스템을 처리합니다. 또한 구식 x86의 세그먼트 메모리 모델을 참조하십시오.
rackandboneman

6
@ 당신은 대답을 조금 명확히해야한다고 생각합니다. 아무도 단일 B 를 하나의 단위로 사용하지 않으며 그 이유는 정확히 여기에서 일어난 일입니다. 비트와 바이트를 혼란스럽게 만들고 있습니다. 영업 상태 "8 비트 워드는 * - 각각의 워드 따라서 8 비트 (1 바이트)를 가지며, 하나 개의 동작이 전송할 수있다 (256)은 단순히 전송하지 얼마나 각 단어가 가지고있는 값의 개수이다..
아델 푸스

21

기계어 또는 일반적으로 단어 는 CPU가 공통 명령을 사용하여 전체적으로 조작 할 수있는 가장 큰 데이터 단위입니다. 이것은 메모리 주소 지정과 관련이 없습니다.

중요한 것은 16/32/64 비트 아키텍처에서도 8 비트 바이트 인 주소 해상도 단위입니다 . 기계어 크기와 같을 필요는 없지만 아마도 귀하의 경우 일 것입니다.

16 비트 주소 버스와 결합 된 8 비트 주소 지정 가능 장치는 CPU가 주소 지정할 수있는 64KiB의 RAM에 해당합니다.


3
그러나 주소 해상도 단위가 16 비트 인 기계를 사용했습니다. (그래서 개념은 의미가 있습니다.)
Martin Bonner는 Monica

4
@MartinBonner 그럼에도 불구하고 CPU 워드 크기와 직접 관련이 없습니다.
glglgl

1
@glglgl-매우 관련이 있습니다. 나는 거기에 생각하지 않습니다 어떤 의 주소 장치가없는 아키텍처 8 비트 또는 자신의 워드 크기.
Jules

1
CPU 가 전체적으로 조작 할 수 있는 가장 큰 단위라는 단어에 동의하지 않습니다 . Intel i7에는 64 비트 데이터 버스가 있으며 256 비트 SIMD 명령을 계속 사용할 수 있습니다. Wikipedia가 올 바르면 word 는 CPU 내부가 아닌 데이터 버스 너비를 나타냅니다.
토마스 웰러

1
@ThomasWeller : 8088에는 8 비트 데이터 버스가 있지만 여전히 16 비트 명령어가 있습니다. 실제로 데이터 버스가 더 작은 8086입니다. 참고 : 데이터 버스의 너비와 실제 전송도 다릅니다 (잘못된 정렬 된 데이터 생각).
Giacomo Catenazzi

1

또한 8 비트 단어는 무엇을 의미합니까?

문맥 상, 워드 크기는 메모리 버스를 설명하기 위해 주소 크기와 함께 사용됩니다. 64 비트 위치를 선택할 수 있도록 메모리에 16 비트 글링이 있습니다. 그런 다음 각 위치 에는 8 비트가 포함됩니다.

여기서 단어 크기는 CPU 계산 단위 크기와 일치하거나 일치하지 않을 수 있으며, 이는 주소 지정의 논리적 입도와 일치하거나 일치하지 않을 수 있습니다.

예를 들어, CPU는 (이 목적으로) 16 비트 버스를 보급 할 수 있습니다. 그것은 지침에 16 비트 주소를 사용하며 예를 들어 64ki가 있습니다. 그러나 15 비트의 주소 버스와 16 비트의 데이터 버스가 있습니다. 32ki 주소 만 필요하며 각 위치마다 항상 2 바이트를 가져옵니다. (명령이 1 바이트를 원하면 최소 비트 누락으로 주소를 디스패치하고 해당 단계에서 두 바이트를 모두 가져온 다음 원하는 주소의 최소 비트를보고 사용할 절반을 결정합니다.)

다른 사람들이 언급 한 뱅크 스위칭, PAE 등은 여기서 관련이 없습니다. 메모리 관리 장치는 16 비트 주소를 사용하고 20 비트 하드웨어 주소를 가질 수 있으므로 CPU는 주소를 지정할 수있는 실제 20 비트 주소 범위의 RAM 칩을 사용하도록 항목을 전환하고 매핑해야합니다.

답변에 단위를 지정하십시오. “64ki”. 어떤? 8 비트 워드로 64 키 바이트 의 주소 지정 가능한 RAM을 만듭니다. 이 단계는 혼란을 제거하고 사소한 문제를 만듭니다.


0

계산에도 단어 크기를 사용해야합니다. 답은 64KB입니다.

2 ^ 16 개의 단어를 지정할 수 있으며 각 단어는 8 비트 (= 1 바이트)입니다. 따라서 64KB입니다.

워드 크기가 16 비트 인 경우 대답은 128KB입니다.


1
(2 ^ 32) * 4 (16GB)가 아니라 2 ^ 32 바이트의 메모리 (4GB)를 처리 할 수있는 일반적인 32 비트 CPU에 대해서는 계산이 유지되지 않습니다.
Dmitry Grigoryev

최신 CPU는 더 큰 "행"을 처리하고 일치하는 주소 줄이 더 적습니다. 이 문제는 주소 버스 의 물리적 측면을 말합니다. 따라서 해당 버스 의 워드 크기 (CPU 레지스터 크기 아님)를 곱하는 것이 정확합니다.
JDługosz 2016 년

0

이것에는 두 가지 측면이 있습니다. 교수자는 probablly가 당신에게 그에게 말하고 싶어하는 것과 현실이 무엇인지 말입니다.

먼저 강사가 당신에게 그에게 말하고 싶은 것이 있습니다.

"16 비트는 2 ^ 16 메모리 위치를 처리 할 수 ​​있으며 각 위치는 8 비트입니다. 따라서 524288 비트 (65536 옥텟) 메모리를 처리 할 수 ​​있습니다."

그러나 이것은 다소 단순화 된 세계관을 반영합니다. 현실은 더 복잡하고 결정적인 대답을하려면 더 많은 정보가 필요합니다. 실제 시스템이 이보다 더 복잡 할 수있는 몇 가지 방법이 있습니다.

  • 많은 프로세서에는 전용 IO 맵이 없으므로 메모리 주소 공간의 일부를 메모리 이외의 용도로 사용해야 할 수도 있습니다.
  • 프로세서의 "워드 크기"는 메모리 데이터 버스의 너비 또는 가장 작은 주소 지정 가능한 메모리 단위와 거의 동일하지 않습니다.
  • 일부 버스는 다양한 크기의 데이터 단위를 이동할 수 있습니다. 이것은 메인 어드레스 버스의 비트에 의해 처리되거나 처리되지 않을 수있는 추가 어드레싱을 필요로한다.
  • 일부 버스는 동일한 회선에서 다른 신호를 다중화합니다. 예를 들어 SDRAM은 동일한 행을 두 번 사용하여 "행 주소"와 "열 주소"를 보냅니다.
  • 많은 시스템이 뱅크 스위칭 방식을 사용하여 프로그램이 프로세서가 기본적으로 처리 할 수있는 것보다 더 많은 메모리에 액세스 할 수 있도록했습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.