“8 비트, 16 비트, 32 비트, 64 비트”시스템을 결정하는 주소 버스 크기 또는 데이터 버스 크기입니까?


15

나의 간단한 이해는 다음과 같습니다.

메모리 (RAM)는 비트로 구성되며, 8 개의 그룹은 바이트를 형성하고, 각각은 어드레싱 될 수 있고, 따라서 바이트 어드레싱 가능한 메모리로 구성된다.

주소 버스는 1 바이트 메모리의 위치를 ​​저장합니다.

주소 버스의 크기가 32 비트 인 경우 최대 2 개의 32 개 숫자를 보유 할 수 있으므로 최대 2 개의 32 바이트의 메모리 = 4GB의 메모리 및 그보다 큰 메모리는 쓸모가 없습니다.

데이터 버스는 메모리에 쓰거나 읽을 값을 보내는 데 사용됩니다. 크기가 32 비트 인 데이터 버스가있는 경우 한 번에 최대 4 바이트를 메모리에 쓰거나 읽을 수 있습니다. 이 크기와 가능한 최대 메모리 크기 사이에는 아무런 관련이 없습니다.

그러나 나는 이것을 읽었 습니다 .

대부분의 시스템은 바이트 주소 지정이 가능하지만 프로세서가 가능한 한 많은 데이터를 이동시키는 것이 좋습니다. 이것은 데이터 버스에 의해 수행되며 데이터 버스의 크기는 8 비트 시스템, 16 비트 시스템, 32 비트 시스템, 64 비트 시스템 등의 이름입니다. 데이터 버스의 폭이 8 비트 인 경우 단일 메모리 작업으로 8 비트를 전송할 수 있습니다. 데이터 버스의 너비가 32 비트 (쓰기시 가장 일반적) 인 경우 단일 메모리 작업에서 최대 32 비트를 이동할 수 있습니다.

이것은 데이터 버스의 크기가 OS에 이름, 8 비트, 16 비트 등을 부여하는 것입니다. 내 이해에 어떤 ​​문제가 있습니까?


" 내 이해에 어떤 ​​문제가 있습니까? "-당신은 하나의 정의를 다른 것들에 적합 하게 만들려고 노력하고 있습니다. 비트 크기 설명자는 다른 시간에 서로 다른 시간에 사용되었습니다.
톱밥

1
제조업체가 말하는 모든 것을 의미합니다. 일반적으로 레지스터 크기와 비슷한 것이지만, 위조 / 스위 즐링하는 방법에는 여러 가지가 있습니다.
다니엘 R cks

답변:


12

일반적으로 데이터 버스의 크기는 프로세서 레지스터의 크기에 의해 결정됩니다. 종종 OS 유형 (64 대 32)을 결정하는 프로세서 레지스터의 크기입니다. 실제 버스 크기는 기술적으로이 예와 다를 수 있지만 (예 : 8088) 견적 작성자가이 두 가지를 연결하는 경우는 거의 없습니다.

일반적으로 포인터 크기는 레지스터 크기를 따르지만 물리적 주소 버스 너비는 20에서 8086 16 비트와 같이 더 크거나 (48에서 AMD 64와 같이) 더 작을 수 있습니다.


2
" 실제 주소 버스 너비가 더 클 수 있습니다 "-특히 4 비트 및 8 비트 프로세서의 경우!
톱밥

괜찮아. 그러나 나는 그것을 사소하게 이해하려고합니다. 주소 버스 크기로 설명 할 수있는 것처럼 데이터 버스의 크기와 가능한 최대 메모리 사이의 관계를 찾을 수 없었습니다. 따라서 대답은 "주소 버스 크기가 아니라 데이터 버스 크기"인 것 같습니다 (일반적으로 프로세서 레지스터 크기만큼 큼). 뭔가 빠졌습니까?
학습자

@learner 맞습니다. 혼란은 또한 시스템의 최대 포인터 크기가 프로세서 레지스터의 크기라는 사실에 있습니다. 프로세서 레지스터의 크기에 의해 제한되는 대부분의 최신 시스템과 마찬가지로 플랫 주소 공간에서 지적한대로 주소 지정 제한 사항. 일부 프로세서, 특히 오래된 프로세서는이 문제를 해결하기 위해 특수 세그먼트 주소 지정과 같은 트릭을 사용했습니다.
Dougvj

@Dougvj, 알았어, 점점 더 명확 해지고있다. 그러나 왜 주소 버스 크기를 프로세서 레지스터 크기와 다르게 만들었습니까? 그것들을 동일하게 유지하는 것이 더 합리적이지 않습니까? 주소가 어디에 보관되어 있는지 혼란스러워합니까? (주소 버스 또는 프로세서 레지스터?) 감사합니다
학습자

1
@learner 맞습니다. 요약하면 : OS 지정은 프로세서 레지스터의 크기와 정확히 일치합니다. 어드레스 버스는 프로세서 레지스터와 크기가 같거나 같지 않을 수 있으므로, 가능한 최대 어드레스 가능 RAM은 그것과 독립적이다. 그러나 내부적으로 프로세서는 거의 항상 프로세서 레지스터와 동일한 크기의 포인터를 포함하는 일종의 주소 지정 체계를 가지고 있습니다.
Dougvj

1

프로세서 내에서 레지스터 크기 및 메모리 처리입니다.

트릭을 사용하면 하나의 16 비트 프로세서에는 20 비트 주소 버스가 있으므로 프로세서 외부의 메모리가 아닙니다.


1

"순수한"32 또는 64 비트 시스템은 없으므로 용어는 근사치입니다.

예를 들어, "메모리 (RAM)는 비트로 구성되며, 8 개 그룹은 바이트를 형성하며 각각 주소를 지정할 수 있습니다 . " 흔하지는 않습니다. PC는 DIMM 모듈에 RAM이 있으며 너비는 64 비트입니다. 90 년대에는 SIMM이 있었으며 그 폭은 32 비트였습니다.

일부 시스템에서는 DIMM이 128 비트 데이터 버스 인 쌍을 이루거나 쌍을 이룰 수 있습니다 ( "갱단"/ "이중 채널"). 이 개념은 AMD와 Intel의 소위 "64 비트"프로세서보다 앞서 있습니다.

단일 DIMM의 64 비트 그룹은 실제로 8 바이트로 세분 될 수 있습니다. 그것은 CPU에 의해 투명하게 이루어졌습니다. 또한 64 비트를 4 * 16 비트, 2 * 32 비트로 분리하거나 64 비트를 모두 단일 변수로 사용할 수 있습니다.

그러나 가장 중요한 질문은 주소의 너비입니다. 메모리의 모든 바이트에는 고유 한 주소가 있지만 모든 비트가있는 것은 아닙니다. 즉, 단일 DIMM에서 얻는 64 비트에는 8 개의 주소가 있습니다. 이 중 가장 낮은 것은 항상 8의 배수입니다. 이제 CPU는 몇 개의 고유 한 주소를 지원합니까? 적어도 이론 상으로는 두 가지 일반적인 답변이 있습니다. 일부 CPU는 2 개의 32 개의 서로 다른 주소를 지원하고 일부는 2 64를 지원 합니다. 이 차이는 32 비트와 64 비트 시스템 사이에서 가장 일반적인 차이입니다.

실제로 오늘날 64 비트 시스템은 2 64 바이트 미만 의 RAM을 지원합니다. 그것은 비용이 들지 않으며 어쨌든 정상적인 PC에는 맞지 않을 것입니다. 그 많은 메모리는 수백만 톤에 달할 것입니다!


주소가 유지되는 프로세서 레지스터입니까, 아니면 주소 버스입니까? "일부 CPU는 2 ^ 32 개의 다른 주소를 지원합니다 ..."라고 말합니다. 그것들은 정확히 무엇에 의해 제한됩니까?
학습자

일반적으로 레지스터 크기와 MMU (메모리를 직접 담당하는 CPU의 일부인 메모리 관리 장치).
MSalters

0

둘 다 실제로.

CPU의 비트는 일반적으로 내부 레지스터의 크기를 나타냅니다. 32 비트 CPU에는 청크로 분할되거나 분할되지 않는 32 비트 레지스터가 있습니다.

모든 데이터를 메모리에서 레지스터로 직접 전송할 수 있지만 모든 데이터 버스 크기를 가질 수 있기 때문에 32 비트 데이터 버스가있는 32 비트 CPU를 사용하는 것이 좋습니다. 따라서 32 비트 CPU에는 일반적으로 32 비트 데이터 버스가있어 데이터를 쉽게주고받을 수 있습니다.

또한 두 가지 이유로 32 비트 주소 버스를 갖는 것이 좋습니다. 더 큰 주소 버스는 메모리 주소를 저장하기에 충분한 레지스터가 없거나 CPU가 메모리 주소 지정을위한 특수 레지스터를 필요로하기 때문에 간접 주소 지정을 더 어렵게 만듭니다 .Intel 8080과 같은 오래된 CPU는 8 비트였으며 16 비트 주소 버스. 반대로 레지스터보다 작은 주소 버스는 리소스 낭비 일뿐입니다. 더 작은 주소 버스를 사용하는 마이크로 컨트롤러가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.