인텔 5-레벨 페이징

Intel 5-level paging
5단계 페이징의 도표

인텔 문서에서 간단히 5레벨 페이징이라고 하는 인텔 5레벨 페이징x86-64 라인의 프로세서를 위한 프로세서 확장이다.[1]: 11 가상 주소의 크기를 48비트에서 57비트로 확장해 주소 지정 가능한 가상 메모리256TB에서 128PB로 늘렸다.증축은 아이스레이크 프로세서에서 처음 구현됐으며 4.14 리눅스 커널에는 이에 대한 지원이 추가됐다.[2][3]또한 서버 버전이 있는 Windows 10 및 11은 최신 업데이트에서 이 확장을 지원한다.ntkrla57.exe라는 시스템의 별도 커널에 의해 제공된다.[1]

기술

이 기능이 없는 x86-64 프로세서는 64비트 모드에서 작동할 때 4단계의 페이지 테이블 구조를 사용한다.[4]: 2806 32비트 IA-32 프로세서가 최대 4GB의 메모리(가상 및 물리적 모두)를 허용하면서 두 가지 레벨을 사용했을 때도 비슷한 상황이 발생했다.4GB 이상의 RAM을 지원하기 위해, 3단계 레벨이 포함된 PAE(Physical Address Extension)라는 추가 주소 변환 모드를 정의했다.[5]이것은 CR4 레지스터에 비트를 설정하여 활성화되었다.[4]: 2799 마찬가지로, 새 확장은 CR4 레지스터(LA57로 알려져 있음)의 비트 12를 설정하여 활성화된다.[1]: 16 이것은 프로세서가 64비트 모드에서 작동할 때만 사용되며, 그렇지 않을 때만 수정될 수 있다.[1]: 16 비트가 설정되지 않은 경우 프로세서는 네 가지 페이징 레벨로 작동한다.

페이지 테이블을 하나 더 추가하면 주소 공간이 512배로 늘어나면서 가상 한도는 256TB에서 128PB로 늘어났다.가상 주소 인덱스의 추가 9비트가 새 테이블을 사용하므로 이전에는 0~47비트가 사용되었지만 지금은 0~56비트가 사용 중이다.

4단계 페이징과 마찬가지로 주소 변환에 참여하지 않는 가상 주소의 고차 비트는 가장 중요한 구현 비트와 동일해야 한다.5 레벨 페이징이 활성화된 경우, 이는 비트 57에서 63은 비트 56의 복사본이어야 함을 의미한다.[1]: 17 인텔은 기존 페이징 시스템을 IA-32e 페이징으로 알려졌던 '4레벨 페이징'으로 이름을 바꿨다.[4]: 2788

페이지 테이블 항목을 128비트로 확장하면 4-레벨 페이징 방식으로 전체 64비트 주소 공간이 가능하며,[6] 5-레벨 구성으로 임의 할당 단위 크기가 가능하다.

실행

5단계 페이징은 아이스레이크 마이크로아키텍처가 구현한다.[2]

확장 지원은 2016년 12월 8일 리눅스 커널에 패치 세트로 제출되었다.[7]리눅스 커널 메일링 리스트에서 보고된 바와 같이, 리눅스 메모리 모델을 4개 레벨이 아닌 5개 레벨로 확장하는 것으로 구성되었다.[8]리눅스는 페이지 테이블의 세부사항을 추상화하지만, 여전히 그 자체로 여러 수준을 가지는 것에 달려 있기 때문이다.아키텍처가 더 적은 수준을 지원할 때, 리눅스는 아무것도 하지 않는 추가 수준을 모방한다.[9]이전에도 3단계에서 4단계로 확대하기 위해 비슷한 변화가 있었다.[10]

단점

다른 수준의 양방향으로 추가하면 페이지 테이블 "보행"이 길어진다.[11]페이지 테이블 워크는 프로세서의 메모리 관리 유닛 또는 운영 체제의 메모리 관리 코드 중 하나가 페이지 테이블 트리를 탐색하여 가상 주소에 해당하는 페이지 테이블 항목을 찾을 때 발생한다.[12][4]: 2806 이는 최악의 경우 프로세서나 메모리 관리자가 단일 가상 메모리 액세스에 대해 물리적 메모리에 6번 액세스해야 한다는 것을 의미하며, 이는 x86-64 프로세서의 이전 반복에 대해 5번 액세스해야 하는 것이 아니다.이로 인해 메모리 액세스 속도가 약간 감소한다.[13]실제로 이 비용은 TLB(translation lookaside buffer)와 같은 캐시에 의해 크게 경감된다.[13]추가 확장은 4096 128비트 페이지 테이블 항목을 사용하여 페이지 보행을 줄일 수 있으며, 64KB 페이지 할당 크기 및 4KB 페이지 작업과의 역호환성을 허용할 수 있다.[6]

참조

  1. ^ a b c d "5-Level Paging and 5-Level EPT" (PDF). Intel Corporation. May 2017.
  2. ^ a b Cutress, Ian. "Sunny Cove Microarchitecture: A Peek At the Back End". Intel's Architecture Day 2018: The Future of Core, Intel GPUs, 10nm, and Hybrid x86. Retrieved 15 October 2019.
  3. ^ Tung, Liam. "First Linux 4.14 release adds "very core" features, arrives in time for kernel's 26th birthday ZDNet". ZDNet. Retrieved 25 April 2018.
  4. ^ a b c d Intel® 64 and IA-32 Architectures Software Developer's Manual (PDF). Intel Corporation. 2018.
  5. ^ Hudek, Ted. "Operating Systems and PAE Support - Windows 10 hardware dev". docs.microsoft.com. Retrieved 26 April 2018.
  6. ^ a b 미국 특허 9858198, 래리 사일러(4KB 페이지 운영 지원 64KB 페이지 시스템)가 2016-12-29를 발행하고 인텔에 2018-01-02를 발행했다.
  7. ^ Michael Larabel (9 December 2016). "Intel Working On 5-Level Paging To Increase Linux Virtual/Physical Address Space - Phoronix". Phoronix. Retrieved 26 April 2018.
  8. ^ Shutemov, Kirill A. (8 December 2016). "[RFC, PATCHv1 00/28] 5-level paging". Linux kernel mailing list (Mailing list). Retrieved 26 April 2018.
  9. ^ "Page Table Management". www.kernel.org. Retrieved 26 April 2018.
  10. ^ "Four-level page tables [LWN.net]". lwn.net. 12 October 2004. Retrieved 26 April 2018.
  11. ^ MICRO-50 : the 50th Annual IEEE/ACM International Symposium on Microarchitecture : proceedings : October 14-18, 2017, Cambridge, MA. Institute of Electrical and Electronics Engineers., IEEE Computer Society., ACM Special Interest Group on Microprogramming. New York, New York. 14 October 2017. ISBN 9781450349529. OCLC 1032337814.{{cite book}}: CS1 maint : 기타(링크)
  12. ^ "ARM Information Center". infocenter.arm.com. Retrieved 26 April 2018.
  13. ^ a b Levy, Hank (Autumn 2008). "CSE 451: Operating Systems: Paging & TLBs" (PDF). University of Washington. Retrieved 26 April 2018.