나는 혼란의 일부가 아마도 수십 년 전에 단순 해졌으며 용어에 대한 이해가이 간단한 기계를 기반으로한다는 사실에서 비롯된 것이라고 처음부터 이야기 할 것입니다.
나는 워드 크기의 정의에 관하여 혼동 스럽다. 나는 프로세서의 워드 크기가 데이터 버스 폭이라는 것을 읽었다. 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은 이것의 또 다른 예입니다.
포인터는 아키텍처보다 프로그래밍 언어 개념입니다. 이들은 메모리 주소의 추상화입니다. –
@larsmans ... 포인터로 나는 간접 어드레싱을 의미했다. 이것은 프로세서의 명령어 세트 아키텍처의 필수 부분이며 데이터 버스에 주소를 가지고있다. – avinash