x86 아키텍처에서 가상 주소 공간의 비트 수가 실제보다 적은 이유는 무엇입니까?


11

64 비트 컴퓨팅에 대해이 기사를 읽었 으며 다음과 같이 언급합니다.

예를 들어 2011 년 기준 AMD64 아키텍처는 물리적 메모리에 52 비트, 가상 메모리에 48 비트를 허용했습니다.

실제 메모리보다 더 많은 가상 메모리를 허용하는 것이 더 합리적이라고 생각합니다. 실제로 다른 방법은 무엇입니까?

보너스 질문 : 64 비트 아키텍처에서 52 비트 또는 48 비트에 대해 "허용"한다는 것은 무엇을 의미합니까? 다른 비트는 무엇에 사용됩니까?


x86의 경우, 사용하지 않는 VA 비트는 VA MSbit의 부호 확장이어야합니다. (ARM AArch64는 하드웨어에서 8 MSbit를 무시하여 태그에 편리하게 사용할 수 있도록하는 옵션을 제공합니다. Java 기기의 일부인 Azul Systems Vega 프로세서는 태그에 사용할 16 비트 VA를 제공했습니다.) 페이지 테이블에서 예약 된 PA 비트는 0이어야합니다 (주로 소프트웨어가 해당 비트를 사용하지 않고 후속 하드웨어와의 호환성을 유지하지 않도록).
Paul A. Clayton

답변:


11

다음은 AMD64 페이지 테이블의 사진입니다 (AMD Architecture Programmer 's Guide, Vol.2, Rev 3.23, 2013, 132 페이지).

AMD64 Longmode 페이지 테이블

AMD64 아키텍처에서 페이지의 "자연"크기는 2 12 = 4096 바이트입니다. (2 21 = 2Mbyte 페이지를 가질 수있는 모드가 있지만 지금은 무시할 것입니다.)

각 PTE (Page-Table Entry) (또는 PDE, PDPE 또는 PML4E라고하는 레벨에 따라)는 64 비트 = 2 3 바이트입니다. 따라서 페이지 당 2 9 개의 항목 이 있습니다 . 따라서 4 단계의 페이지 테이블은 프로세스 당 4x9 + 12 = 48 비트의 가상 주소를 제공합니다. 페이지 테이블을 걷는 것은 비용이 많이 들기 때문에 소비자의 요구가있을 때까지는 5-6 단계로 확장되지 않습니다.

왜 그들이 52 비트 물리적 주소 제한을 결정했는지 잘 모르겠습니다. 향후 최대 63 비트까지 확장 할 수 있습니다. 2013 년 10 월 가격 (4Gbit 칩의 경우 약 1US $ / 기가비트)은 2 52 바이트 메모리 를 구축하는 데 32,000,000.00 US $ 이상이 소요 되므로 물리적 주소 제한을 늘리는 데 상당한 시간이 소요될 수 있습니다. 물리적 주소를 가능한 작게 유지해야하는 모든 종류의 이유가 있습니다. 예를 들어 TLB 및 캐시 태그는 물리적 주소를 보유해야합니다.

가상 메모리보다 더 많은 실제 메모리가 있다는 것이 반드시 역순 인 것은 아닙니다. 가상 메모리는 프로세스 당 이지만 실제 메모리는 모든 프로세스에서 공유됩니다. 따라서 48 비트 가상 주소와 2 52 바이트의 메모리를 가진 서버는 16 개의 동시 프로세스를 지원할 수 있지만 여전히 스왑 할 필요는 없습니다.


컴퓨터 아키텍트는 일반적으로 OS에 음의 주소를 사용하기 위해 일반적으로 부호 확장을 사용하여 하드웨어에서 상위 비트를 사용하도록 요구하는 것을 배웠다는 점에 주목할 가치가 있습니다 ( "다른 비트는 무엇입니까?"). 또한 Ln 디렉토리 항목 캐싱을 사용하면 대부분 5 단계 테이블을 완전히 걸을 필요가 없습니다. PTE 비트 52:62는 소프트웨어 용으로 예약되어 있으므로 호환성을 유지하지 않으면 서 물리적 주소에 사용할 수 없으므로 4KiB 페이지를 52 비트 PA로 제한합니다. 또한 Linus Torvalds는 유명한 PAE에 대한 분노로 유명합니다 (VA> PA는 "전통적인"OS 설계를 단순화하는 것으로 보입니다).
Paul A. Clayton

"향후에는 최대 63 비트로 확장 될 수 있습니다." 페이지 테이블 구조를 바꾸지 않고서는 안됩니다. PxE의 비트 52 ~ 62는 운영 체제 용으로 예약되어 있습니다. 그리고 OS는이를 사용하고 (Windows는 "작업 세트 목록 색인"에 해당 필드를 사용합니다), 프로세서 설계자는 PFN 필드를 자유롭게 확장 할 수 없습니다. 물론 PFN의 비트를 더 허용하기 위해 PT 구조를 변경하는 PAE와 같은 옵션을 가질 수도 있지만 이는 아키텍처에 중대한 변화가 될 것입니다.
Jamie Hanrahan

3

고려해야 할 몇 가지 사항은 실제 RAM이 비쌉니다. 물론 16GB는 4GB가 불과 몇 년 전 이었으므로 저렴하지만 2 ^ 64 (16 엑사 바이트)는 엄청나게 큽니다.

따라서 x64 용 x86의 AMD 확장은 레지스터 를 제한 하여 최대 2 ^ 52까지 "허용"했습니다 . 이는 두 가지 작업을 수행하여 프로세서 비용을 낮추고 성능을 향상시킵니다. 사용되지 않는 레지스터가 많을수록 빈 공간이 많이 남아있어 작업 중에 고려해야합니다.

그리고 당신이 수학자가 아닌 경우에 ... 세 가지 크기의 차이는 엄청납니다! 나는 수학 전문가가 아니지만 십진수 52 비트는 64 비트의 약 .02 %입니다. 48 비트는 52 %의 6 %입니다. (누군가 내 수학을 확인 하시겠습니까?)

AMD가 가상보다 더 많은 물리적 RAM을 허용 한 이유는이 기사에서 AMD가 서버를 생각했기 때문이라고 설명합니다. 서버에는 많은 양의 물리적 RAM이 필요합니다. 가상 RAM이 너무 느려 수백 또는 수천 명의 직원이 평균 서버 응용 프로그램을 지원할 수 없습니다.

내 생각 : RAM이 작을 때 시간을 떠났고 하드 드라이브는 RAM을 지원해야했습니다. RAM 가격은 평균 페르소나가 충분한 RAM 이상을 넣을 수있는 수준으로 떨어졌습니다. 1-2GB의 RAM이 필요한 Office와 같은 일반적인 응용 프로그램을 사용하십시오. 7 년 전에 내 컴퓨터에서 처리 할 수있었습니다. 디스크에 대한 읽기 및 쓰기 속도가 있지만 가상 메모리에서 7GB 파일을 검색하지 않아도되기를 바랍니다 (이전 PM * 2.5 철학을 사용함).

또한 AMD가 통합 GPU의 RAM과 같은 물리적 RAM 레지스터를 사용하는 레지스터를위한 공간을 남겨두고 싶다고 가정 할 수 있습니다.

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