2012-07-13 2 views
8

나는의 단어의 정의 에 대해 혼란스러워합니다. 나는 프로세서의 워드 크기가 데이터 버스 폭이라는 ​​것을 읽었다. 8 비트 프로세서와 마찬가지로 8 비트 폭의 데이터 버스가 있습니다. 나는 최근에 가상 주소 공간의 최대 크기가 단어 크기에 의해 결정된다는 것을 읽었다. 즉 단어 크기가 n 비트라면 최대 가상 주소 공간은 2^n-1이다. 그러나 나는 항상 최대 가상 주소 공간은 주소 버스 폭, 즉 n 비트 폭의 주소 버스가 최대 2^n 바이트를 처리 할 수 ​​있다고 판단했다. 그럼, 사실입니까?워드 크기 및 데이터 버스

또한 포인터는 n 비트 데이터 버스 만 N 비트 어드레스를 운반 할 수있는 바와 같이이 관련된다. 따라서 최대 2^n 바이트는 포인터를 통해 액세스 할 수 있습니다.

+0

포인터는 아키텍처보다 프로그래밍 언어 개념입니다. 이들은 메모리 주소의 추상화입니다. –

+0

@larsmans ... 포인터로 나는 간접 어드레싱을 의미했다. 이것은 프로세서의 명령어 세트 아키텍처의 필수 부분이며 데이터 버스에 주소를 가지고있다. – avinash

답변

8

나는 혼란의 일부가 아마도 수십 년 전에 단순 해졌으며 용어에 대한 이해가이 간단한 기계를 기반으로한다는 사실에서 비롯된 것이라고 처음부터 이야기 할 것입니다.

나는 워드 크기의 정의에 관하여 혼동 스럽다. 나는 프로세서의 워드 크기가 데이터 버스 폭이라는 ​​것을 읽었다. 8 비트 프로세서와 마찬가지로 8 비트 폭의 데이터 버스가 있습니다.

확실히 아닙니다. 데이터 버스는 이것과 전혀 관련이 없습니다. 프로세서의 워드 크기 (절대로 정확한 용어는 아니 었음)는 일반적으로 기계의 레지스터 크기 인 산술의 가장 큰 자연 크기로 가장 느슨하게 정의됩니다. 이것은 데이터 경로 (데이터 버스와는 분명히 다른)의 너비입니다. 데이터 경로는 단순히 ALU의 너비입니다. 단어 크기는 종종 포인터 크기와 동일합니다.

최근에 가상 주소 공간의 최대 크기는 단어 크기에 의해 결정됩니다. 즉 단어 크기가 n 비트이면 최대 가상 주소 공간은 2^n-1입니다. 하지만 나는 항상 최대 가상 주소 공간은 주소 버스 폭, 즉 n 비트 폭의 주소 버스가 최대 2^n 바이트를 처리 할 수 ​​있다고 판단했습니다. 그래서, 사실입니까?

가상 주소 공간의 크기는 단순히 페이지 테이블 (및 TLB)의 가상 페이지 번호에있는 비트 수에 의해 결정됩니다. 현재 amd64 기반 컴퓨터에서는 48 비트의 가상 주소 만 사용할 수 있습니다. 상단 16은 비트 47의 부호 확장입니다. 현재 amd64 시스템에서 실제 주소 크기는 52 비트입니다. 이 물리적 주소 비트는 버스에서 전송되는 비트입니다. 심지어 버스라는 용어조차도 실제로 부정확합니다. 거의 모든 링크는 지점 간 (DDRx DRAM은 예외)이며 주소 와이어 및 데이터 와이어 대신 패킷 화 된 형식 (헤더 + 페이로드)을 사용합니다.

또한 n 비트 데이터 버스가 n 비트 주소만을 전달할 수 있기 때문에 포인터와 관련이 있습니다. 따라서 최대 2^n 바이트는 포인터를 통해 액세스 할 수 있습니다.

별도의 주소 버스가있는 대부분의 (거의 모든 경우에도) 컴퓨터는 주소 비트 수보다 더 좁은 주소 버스를 사용합니다. 이 비트들은 여러 클럭 사이클을 사용하여 간단히 분할되어 버스를 통해 전송됩니다. DDRx DRAM은 이것의 또 다른 예입니다.

+0

@nathan ... 단어 크기와 데이터 버스의 사실을 이해했습니다. (고마워요.)하지만 가상 주소에 대해서는, 나는 cpu가 논리적 주소를 생성한다는 것을 배웠다. (메모리가 분절되지 않았다면) 페이지 번호는 부분이고 오프셋이있다. 이제 2^(이 논리 주소의 총 비트 수) = 총 가상 주소 공간입니다. 그렇지 않습니까? ... 그리고 datapath (= 단어 크기)가이 주소를 전달하면 (그리고 프로그램 카운터는이 주소를 저장해야하므로 주소가 단어 크기보다 클 수 없습니다) ... 단어 크기가 총 가상 주소 비트와 같은가? ... 또는 단어의 일부 비트가 사용되지 않을 수도 있습니다. – avinash

+0

현재 x86 컴퓨터에서 워드 크기는 64 비트이지만 상위 16 비트는 사용할 수 없습니다. 그들은 비트 47의 부호 확장이 필요합니다. 나는이 경우에 가상 주소가 64 비트라고 주장 할 수 있다고 생각하지만 현실은 당신이 48 개를 사용할 수 없다는 것입니다. 당신은 페이지 번호와 오프셋 것에 대해 정확합니다. x86의 경우 4k 페이지에서 가상 페이지 번호는 36 비트이고 오프셋은 12 비트 (총 48 비트)입니다. 이 경우 물리적 페이지 번호는 40 비트입니다. –

1

가상 주소 공간의 최대 크기는

이 참이 사용 워드 사이즈에 의해 결정되지만, 일부 정보는 (즉, 물리 주소 확장 또는 PAE)이 제한을 무시하게 된 36 비트 메모리 주소 등을 가능하게합니다. 것을 제외

는 위키대로 단어를 정의한다 : 대부분의 경우 특정 프로세서 설계

의해 사용되는 데이터의

자연 유닛이 32 개 비트 시스템에 대한 32 비트 64 비트 시스템에서는 64 비트입니다. 64 비트 시스템에서 32 비트 단어에 대한 참조를 자주 찾을 수 있습니다 (amd64는 개정판이 아닌 Intel x86의 확장이기 때문에 부분적으로는). 또한 현대 컴퓨팅의 초창기 때부터의 한계점으로, DWORD 또는 더블 워드라고하는 32 비트 수량과 QWORD 또는 쿼드 워드로서의 64 비트 수를 자주 보게됩니다.

이것은 항상 사람들이 싸우는 것입니다. 저는 개인적으로 단어 크기 == 버스 폭의 정의를 사용합니다.

+0

@wug ... 당신의 대답은 확실하게 내 지식을 증가 시켰지만하지 않았다. 내 의심을 분명히해라. 단어 크기 == 버스 폭 ... 어느 버스? 데이터 또는 주소 ... 그리고 어떤 버스가 정상적인 기본 경우에 최대 가상 메모리 크기를 제어하는지 (즉, 36 비트 메모리 주소와 같은 경우를 고려하지 않음) ... – avinash

+0

단어의 유형이 많이 있습니다. 컴퓨터의 구성 요소마다 단어 크기가 다를 수 있습니다. 32 비트 프로세서에 대해 이야기 할 때, 32 비트 워드 크기의 프로세서에 대해 이야기하고 있지만 메모리 버스와 같은 일부 구성 요소는 기본적으로 다른 크기를 사용할 수 있습니다. 그런 다음 나머지 비트가 제공하는 주소 공간에 액세스하기 위해 프로세서가 특수 트릭을 수행합니다. "단어 크기의 정의"는 정의하고있는 단어에 따라 다릅니다. 위키 백과 페이지는 다음과 같습니다. http://en.wikipedia.org/wiki/Word_(computer_architecture) – Wug