물리 주소 확장

Physical Address Extension

컴퓨팅에서 Physical Address Extension(PAE; 물리 주소 확장)[1]은 x86 아키텍처의 메모리 관리 기능입니다.PAE는 인텔 Pentium Pro에서 처음 도입되었으며 이후 AMD에서 Athlon [2]프로세서에서 도입되었습니다.페이지 테이블 계층은 3가지 수준(2개 대신)으로 정의되며 테이블엔트리는 각각 32가 아닌 64비트입니다.이를 통해 이들 CPU는 4기가바이트(2바이트)보다32물리 주소 공간에 직접 액세스할 수 있습니다.

x86-64 CPU가 롱 모드로 동작할 때 사용하는 페이지 테이블 구조는 페이지 테이블 계층을 4단계로 확장하여 가상 주소 공간을 확장하고 페이지 테이블의 모든 수준에서 추가 물리 주소 비트를 사용하여 물리 주소 공간을 확장합니다.또한 64비트 페이지 테이블 항목의 맨 위 비트를 실행 안 함 또는 "NX" 비트로 사용하여 관련 페이지에서 코드를 실행할 수 없음을 나타냅니다.NX 기능은 PAE가 네이블로 되어 있는 경우 이들 CPU가 32비트 운영시스템을 실행하고 있는 경우에도 보호 모드로 사용할 수 있습니다.

역사

PAE는 1995년에 [3]인텔 Pentium Pro에서 처음 구현되었지만, 부수되는 칩셋은 일반적으로 필요한 추가 주소 [4]비트를 지원하지 않습니다.

PAE는 Pentium Pro, Pentium II, Pentium III 및 Pentium 4 프로세서에서 지원됩니다.2003년에 도입된 최초의 Pentium M 패밀리 프로세서(Banias)도 PAE를 지원하지만 CPUID 정보에 [5]PAE 지원 플래그는 표시되지 않습니다.AMD Athlon[6][7] 포함한 AMD 프로세서(칩셋은[8] 32비트 어드레싱으로 제한됨) 및 이후 AMD 프로세서 모델에서도 사용할 수 있습니다.

AMD는 업계 표준의 x86 아키텍처(AMD64 또는 x86-64)의 64비트 확장을 정의할 때 PAE에 기반한 "[9]롱 모드"에서도 페이징 시스템을 확장했습니다.64비트 가상[10]: 24 주소(2018년 11월 현재 48비트 구현)와[10]: 120 [11] 52비트 물리 [10]: 24 주소를 지원하며 NX 비트 기능을 포함합니다.x86-64 프로세서가 초기화되면 프로세서를 레거시 모드에서 롱 [9]모드로 전환하기 전에 PAE 기능을 활성화해야 합니다.

설계.

PAE를 사용하면 x86 아키텍처의 페이지 테이블 엔트리가 32비트에서 64비트로 확대됩니다.이렇게 하면 페이지 테이블 항목에 실제 페이지 주소 또는 "페이지 프레임 번호" 필드를 저장할 수 있는 공간이 늘어납니다.PAE의 초기 구현에서는 페이지 프레임 번호 필드가 20비트에서24비트로 확장되었습니다.변환되는 주소로부터의 「바이트 오프셋」의 사이즈는 12비트이기 때문에, 물리 주소의 합계 사이즈는 32비트에서 36비트(20+12에서24+12)로 증가합니다.이것에 의해, 이론적으로 CPU로 주소 지정할 수 있는 물리 메모리가 4 GB에서 64 GB로 증가했습니다.

PAE 를 서포트한 최초의 프로세서에서는, 보다 큰 물리 주소의 서포트는, 패키지 핀 할당으로 명확하게 나타나고 있습니다.주소 핀 지정은 A31 [12]로 끝나는 것이 아니라 A35 로 올라갑니다.이후 프로세서 패밀리는 전용 메모리 주소 신호가 없는 Hypertransport 또는 QuickPath Interconnect와 같은 상호 연결을 사용하기 때문에 이 관계가 명확하지 않습니다.

가상 주소의 32비트 사이즈는 변경되지 않기 때문에 일반 응용 프로그램소프트웨어는 32비트주소를 가진 명령을 계속 사용합니다(플랫 메모리 모델에서는 가상 주소 공간은 4기가바이트로 제한됩니다).이 모드를 지원하는 운영 체제는 페이지 테이블을 사용하여 일반 4GB 가상 주소 공간을 물리적 메모리에 매핑합니다. 물리적 메모리는 운영 체제 및 하드웨어 플랫폼의 나머지 크기에 따라 64GB까지 커질 수 있습니다.매핑은 일반적으로 프로세스별로 개별적으로 적용되므로 추가 RAM은 단일 프로세스가 모든 RAM에 동시에 액세스할 수 없는 경우에도 유용합니다.

AMD의 x86-64 아키텍처 개발과 관련된 이후 작업은 이론적으로 가능한 물리 주소 크기를 52비트로 [10]: 24 확장했습니다.

페이지 테이블 구조

페이징이 유효하게 되어 있는 보호 모드(비트 31,PG제어 레지스터의 ,CR0설정되어 있습니다). 단, PAE가 없는 경우 x86 프로세서는 2레벨의 페이지 변환 방식을 사용합니다.제어 레지스터 CR3는, 4 KB 길이의 단일 페이지디렉토리의 페이지 정렬 물리 주소를 보관 유지합니다.이것은 1024개의 4바이트 페이지디렉토리 엔트리로 분할됩니다. 엔트리는 유효할 경우 페이지테이블의 페이지 정렬 물리 주소를 보관 유지합니다.각각의 크기는 4KB입니다.마찬가지로 1024개의 4바이트 페이지테이블 엔트리로 구성되어 있습니다.이 엔트리는 유효할 경우 4KB 길이의 물리 메모리(RAM)의 페이지 정렬된 물리 주소를 유지합니다.

PAE의 이니블화(비트5를 설정함으로써)PAE, 시스템 레지스터의CR4)에 의해 이 방식이 크게 변경됩니다.기본적으로는 각 페이지의 크기는 4KB로 유지됩니다.페이지 테이블 및 페이지 디렉토리의 각 엔트리는 주소 비트를 추가할 수 있도록 32비트가 아닌 64비트(8바이트)가 됩니다.단, 각 테이블의 크기는 변경되지 않으므로 테이블과 디렉토리 모두 512개의 엔트리밖에 없습니다.이렇게 하면 원래 구성표 항목의 절반만 허용되므로 계층이 추가되므로 CR3는 페이지 디렉토리에 대한 네 개의 포인터가 포함된 페이지 디렉토리 포인터 테이블인 페이지 디렉토리 포인터 테이블을 물리적으로 가리킵니다.

페이지 디렉토리의 엔트리는 비트7에 추가 플래그가 있습니다.PS(페이지 사이즈의 경우).시스템이 이 비트를 다음과 같이 설정했을 경우1페이지 디렉토리 엔트리는 페이지테이블이 아니라 1개의 큰2 MB 페이지(Page Size Extension)를 가리키고 있습니다.

x86x86-64에서 지원되는 모든 페이지 테이블 형식에서 페이지 테이블 엔트리의 최하위 12비트는 메모리 관리 유닛에 의해 해석되거나 운영체제용으로 예약됩니다."no-execute" 또는 "execution disable" 기능을 구현하는 프로세서에서 가장 중요한 비트(비트 63)는 NX 비트입니다.다음 11개의 최상위 비트(비트 52~62)는 인텔과 AMD의 아키텍처 사양에 따라 운영체제용으로 예약되어 있습니다.따라서 페이지 테이블엔트리의 64비트에서 하위 12비트와 상위 12비트가 다른 용도로 사용되며 물리 페이지 번호에는 40비트(비트 12~51)가 남습니다.리니어 주소의 12비트의 「페이지내의 오프셋」을 조합하면, 물리 메모리에 최대 52비트를 할당할 수 있습니다.따라서 최대 2바이트 또는 4페타바이트(약 4.5×10바이트15)의 RAM52 구성이 가능합니다.

네이티브 롱모드x86-64 프로세서에서는 주소 변환 방식에서는 PAE가 사용되지만 4번째 테이블인 512 엔트리 페이지 맵레벨 4 테이블이 추가되어 페이지 디렉토리 포인터 테이블이 보호 모드의 원래4 엔트리가 아닌 512 엔트리로 확장됩니다.현재 48비트의 가상 페이지 번호가 변환되어 최대 256TB의 [10]: 148 가상 주소 공간을 제공합니다.페이지 테이블 엔트리는, 원래의 사양에서는, 물리 페이지 번호의 40 비트가 실장되어 있다.

하드웨어 지원

소프트웨어는 를 통해 식별할 수 있습니다.CPUID깃발PAECPU가 PAE 모드를 지원하는지 여부를 확인합니다.PAE 지원을 포함한 많은 프로세서의 기능을 나열하는 Microsoft Windows용 무료 프로그램을 [13]이용할 수 있습니다.Linux 에서는 다음과 같은 명령어를 사용합니다.cat /proc/cpuinfo리스트 할 수 있다paeSYSLINUX 하드웨어 검출 툴등의 다른 툴이 [14]있는 경우는, 플래그가 표시됩니다.

프로세서를 PAE 모드로 동작시키려면 , operating system의 서포트가 필요합니다.PAE를 사용하여 4GB가 넘는 RAM에 액세스하려면 운영체제, 칩셋 및 메인보드에서의 추가 지원이 필요합니다.일부 칩셋은 4GB 이상의 물리 메모리 주소(16진수에서는 FFFFF)를 지원하지 않으며 일부 메인보드에는 4GB 이상의 RAM을 장착할 수 있는 충분한 RAM 소켓이 없습니다.단, 사용 가능한 RAM이 4GB를 넘지 않는 경우에도 No execute 기능을 사용할 수 있도록 PAE 지원 CPU를 PAE 모드로 실행할 수 있습니다.

운영 체제 지원

Microsoft Windows

Microsoft Windows32 비트판은, 적절한 옵션을 사용해 기동하는 경우, PAE 를 서포트합니다.마이크로소프트 테크니컬 펠로우 마크 러시노비치에 따르면, 일부 드라이버는 [15]4GB 이상의 물리적 주소가 발생할 때 불안정한 것으로 나타났습니다.

다음 표에 32비트 버전의 Microsoft Windows 메모리 제한을 나타냅니다.

Microsoft Windows의 32비트판 메모리 제한
PAE 지원[16][17][18] 포함
Windows 버전 메모리 제한
Windows 2000 Professional, Server 4 GB
Windows 2000 어드밴스드 서버 8 GB
Windows 2000 데이터 센터 32 GB
Windows XP 스타터 0.5 GB
Windows XP (기타 에디션) 4 GB
Windows Server 2003 Web SP2 2 GB
Windows Server 2003 Standard SP2 4 GB
Windows Server 2003 Enterprise/Datacenter SP2 64 GB
Windows Storage Server 2003 Enterprise 8 GB
Windows Storage Server 2003 (기타 에디션) 4 GB
Windows 홈 서버 4 GB
Windows Vista 스타터 1 GB
Windows Vista (기타 에디션) 4 GB
Windows Server 2008 Standard, Web 4 GB
Windows Server 2008 Enterprise, 데이터센터 64 GB
Windows 7 스타터 2 GB
Windows 7 (기타 에디션) 4 GB
Windows 8 (모든 에디션) 4 GB
Windows 10 (모든 에디션) 4 GB

Windows XP 및 Windows XP SP1의 원래 릴리스에서는 PAE 모드를 사용하여 RAM을 4GB 주소 제한을 초과하여 확장할 수 있었습니다.다만, 서드파티제 드라이버와의 호환성 문제로 인해 Microsoft는 Windows XP Service Pack 2에서 이 기능을 삭제했습니다.Windows XP SP2 이후는 기본적으로 NX(No-Execute) 또는 XD(Execute-Disable) 기능이 있는 프로세서에서 [19]NX를 허용하기 위해 PAE 모드로 실행됩니다.NX 비트는 페이지테이블 엔트리의 비트63에 존재하며 PAE가 없는 경우 32비트시스템상의 페이지테이블 엔트리는 32비트밖에 없습니다.따라서 NX 기능을 이용하려면 PAE 모드가 필요합니다.다만, 32비트 Windows 의 「클라이언트」버전(Windows XP SP2 이후, Windows Vista, Windows 7)에서는, 드라이버의 호환성을 위해서, 물리 주소 공간을 최초의 4 GB 로 제한하고 있습니다.이러한 버전은 NX 지원이 유효하게 되어 있는 경우, PAE 모드로 실행됩니다.

Windows 8 이후의 릴리스는, NX SSE2 [20][21]가세해 PAE 를 서포트하는 프로세서만으로 동작합니다.

MacOS

Mac OS X Tiger ~ Mac OS X Snow Leopard는 IA-32 프로세서에서 PAE 및 NX 비트를 지원합니다. Snow Leopard는 IA-32 프로세서를 지원하는 마지막 버전입니다.x86-64 프로세서에서는 모든 버전의 MacOS가 4GB 이상의 메모리를 수신처로 지정하기 위해 4레벨 페이징(PAE가 아닌 IA-32e 페이징)을 사용합니다.Mac Pro 및 Xserve 시스템은 최대 64GB의 [22]RAM을 사용할 수 있습니다.

리눅스

Linux 커널에는 1999년 버전 2.3.[23]23부터 PAE 모드가 완전히 지원되며 32비트 머신에서 최대 64GB의 메모리에 액세스할 수 있습니다.PAE 지원 Linux 커널에서는 CPU가 PAE도 지원해야 합니다.Linux 커널은 빌드 옵션으로 PAE를 지원하며 주요 배포에서는 기본 또는 옵션으로 PAE 커널을 제공합니다.

NX 비트 기능을 사용하려면 PAE [24]지원으로 구축된 커널이 필요합니다.

Linux 디스트리뷰션에서는 일반적으로 PAE 대응 커널을 디폴트로 사용합니다.[25]이것은 2009년에 시작된 트렌드입니다.2012년 현재 Ubuntu(및 XubuntuLinux [26][27]Mint와 같은 파생 모델), Red Hat Enterprise Linux 6.[28]0 및 CentOS를 포함한 많은 제품이 PAE가 지원하지 않는 커널 배포를 중지하여 PAE 지원 하드웨어가 필수화되었습니다.PAE를 필요로 하는 Linux 디스트리뷰션에서는 CPUID 정보에 PAE 지원 플래그가 표시되지 않기 때문에 Pentium M 패밀리프로세서에서의 기동이 거부될 수 있습니다(내부 [5]지원에도 불구하고).단, Ubuntu에서는 이 문제를 쉽게 우회할 수 있습니다.forcepae옵션을 선택합니다.[29]

Debian(및 LMDE 2(Linux Mint Debian Edition),[30] Slackware, LXLE 등의 파생 모델)을 포함한 비PAE 옵션을 제공하는 배포판은 일반적으로 "i386", "i486" 또는 "retro"[31][32] 라벨을 사용합니다.문서 Lightweight Linux 배포판에는 기타 몇 가지 목록이 있으므로 오래된 컴퓨터에 Linux를 설치할 수 있습니다.

다른이들

FreeBSDNetBSD는 커널 빌드 옵션으로서 PAE도 지원합니다.FreeBSD는 4.9 이후의 4.x 시리즈, 5.1 이후의 5.x 시리즈 및 6.x 이후의 모든 릴리스에서 PAE를 지원합니다.지원에는 커널이 필요합니다.PAE설정 옵션로드 가능한 커널 모듈은 PAE가 네이블로 되어 있는 커널에만 로드할 수 있습니다.FreeB의 바이너리 모듈은 PAE가 네이블로 되어 있는 경우입니다.SD 배포는 PAE가 네이블로 되어 있지 않기 때문에 PAE 커널에 로드할 수 없습니다.모든 드라이버가 4GB 이상의 물리 메모리를 지원하는 것은 아닙니다.PAE 탑재 시스템에서는,[33] 이러한 드라이버가 올바르게 동작하지 않습니다.

OpenBSD는 2006년부터 표준 GENERIC i386 커널에서 PAE를 지원하고 있습니다.GeNUA mbH는 초기 [34]구현을 지원했습니다.릴리스 5.0 PAE에서는 일련의 변경, 특히 PMAP용 i386 MMU 처리의 변경이 이루어졌기 때문에 pmap([35]9)을 참조해 주십시오.

Solaris는 Solaris 버전7 이후부터 PAE를 지원합니다.단, 버전7에서 사용하는 서드파티 드라이버는 PAE가 [36]탑재된 시스템에서 정상적으로 동작하지 않거나 완전히 실패할 수 있습니다.

하이쿠는 R1 Alpha 2 출시 직후 PAE에 대한 초기 지원을 추가했다.R1 Alpha 3 PAE가 출시됨에 따라 공식적으로 지원되게 되었습니다.

ArcaOS는 4GB [37]경계 이상의 RAM 디스크를 만들기 위해 PAE를 제한적으로 지원합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Dual-Core Intel® Xeon® Processor 2.80 GHz Specification Update (PDF). Intel Corporation. October 2006. p. 18.
  2. ^ AMD, Inc. (February 2002). "Appendix E". AMD Athlon™ Processor x86 Code Optimization Guide (PDF) (Revision K ed.). p. 250. Retrieved 2017-04-13. A 2-bit index consisting of PCD and PWT bits of the page table entry is used to select one of four PAT register fields when PAE (page address extensions) is enabled, or when the PDE doesn’t describe a large page.
  3. ^ T. Shanley (1998). Pentium Pro and Pentium II System Architecture. Addison-Wesley Professional. p. 439. ISBN 978-0-201-30973-7.
  4. ^ "Operating Systems and PAE Support". Hardware Developers Center. 14 July 2006. Retrieved 20 April 2014.
  5. ^ a b PAE - Ubuntu 커뮤니티 도움말 Wiki
  6. ^ AMD, Inc. (February 2002). "Appendix E". AMD Athlon™ Processor x86 Code Optimization Guide (PDF) (Revision K ed.). p. 250. Retrieved 2017-04-13. A 2-bit index consisting of PCD and PWT bits of the page table entry is used to select one of four PAT register fields when PAE (page address extensions) is enabled, or when the PDE doesn’t describe a large page.
  7. ^ "AMD Athlon 500 - AMD-K7500MTR51B C". Cpu-world.com. 26 March 2014. Retrieved 20 April 2014.
  8. ^ AMD-762 시스템 컨트롤러(2페이지): "최대 4GB의 메모리 지원"
  9. ^ a b AMD Corporation (March 2017). "Volume 2: System Programming" (PDF). AMD64 Architecture Programmer's Manual. AMD Corporation. p. 130. Retrieved 2017-05-23. Long-mode page translation requires the use of physical-address extensions (PAE). Before activating long mode, PAE must be enabled by setting CR4.PAE to 1. Activating long mode before enabling PAE causes a general-protection exception (#GP) to occur.
  10. ^ a b c d e AMD Corporation (September 2018). "Volume 2: System Programming" (PDF). AMD64 Architecture Programmer's Manual. AMD Corporation. Retrieved 2018-12-19.
  11. ^ "Volume 3 (3A, 3B, 3C & 3D): System Programming Guide". Intel 64 and IA-32 Architectures Software Developer’s Manual. Intel. November 2018. p. 4-6. Retrieved 2018-12-19.
  12. ^ Pentium® III Xeon™ Processor at 500 and 550 MHz Datasheet. Intel Corporation. February 2000. p. 86. 245094-002. A[35:03]# (I/O): The A[35:3]# (Address) signals define a 2-to-the-36-byte physical memory address space.
  13. ^ "Microsoft Sysinternals: Coreinfo". Windows Sysinternals. Microsoft. 19 December 2013. Retrieved 20 April 2014.
  14. ^ "Detecting your Hardware". Gentoo. October 8, 2008. Retrieved 2013-04-28.
  15. ^ a b Mark Russinovich (2008-07-21). "Pushing the Limits of Windows: Physical Memory". Retrieved 2010-07-11.
  16. ^ "Memory Limits for Windows releases". MSDN. Microsoft. December 5, 2007. Archived from the original on December 17, 2007. Retrieved 2015-11-16.
  17. ^ "Intel Physical Addressing Extensions (PAE) in Windows 2000". Support. Microsoft. October 26, 2007. Retrieved 2007-12-29.
  18. ^ "Overview of Windows Server 2003 R2 Datacenter Edition". TechNet. Microsoft. Retrieved 2009-05-15.
  19. ^ "The RAM reported by the System Properties dialog box and the System Information tool is less than you expect in Windows Vista or in Windows XP Service Pack 2 or later version (MSKB 888137)". Knowledge Base. Microsoft. Retrieved 2009-01-30.
  20. ^ Khurshid, Usman (2 November 2012). "How To Check If Your Processor Supports PAE, NX And SSE2 For Windows 8 Installation". technize.net. Technize. Retrieved 20 April 2014.
  21. ^ "PAE/NX/SSE2 Support Requirement Guide for Windows 8". Microsoft Docs. 10 February 2014. Retrieved 6 January 2022.
  22. ^ "Road to Mac OS X 10.6 Snow Leopard: 64-Bits". 2008-09-26. Retrieved 2008-09-26.
  23. ^ "2.3.23-pre4 x86 64 GB RAM changes [HIGHMEM patch] explained a bit".
  24. ^ Professional Linux 커널 아키텍처, 그림 3.16 paging_init 코드 흐름 "프로세서에서 지원되는 경우 및 PAE 지원으로 커널이 컴파일된 경우 보호 실행 비활성화도 유효합니다.유감스럽게도 이 기능은 사용할 수 없습니다."
  25. ^ "x86 Specifics for Fedora 11".
  26. ^ "Xubuntu 12.04 released". Xubuntu.org. April 26, 2012. Retrieved 24 October 2015. The non-PAE kernel will not be available in future Xubuntu releases.
  27. ^ "EnablingPAE". Retrieved 2013-04-28.
  28. ^ "RHEL 6 Release Notes, 12.6. General Kernel Updates 12.6.1. Physical Address Extension (PAE)". RedHat. Retrieved 27 November 2013.
  29. ^ PAE, 물리 주소 확장, Ubuntu 커뮤니티 도움말 Wiki.
  30. ^ "Known problems in Linux Mint Debian". To guarantee compatibility with non-PAE processors, the 32-bit versions of Linux Mint Debian come with a 486 kernel by default.
  31. ^ "Precise Puppy". puppylinux.org. PuppyLinux. Retrieved 20 April 2014.
  32. ^ "2.1. Supported Hardware". Debian GNU/Linux Installation Guide. SPI. Retrieved 20 April 2014.
  33. ^ "FreeBSD PAE(4) man page". 2003-04-08. Retrieved 2007-11-26.
  34. ^ "PAE for OpenBSD/i386 by Michael Shalayeff, NYC". 2006. Retrieved 2018-02-03.
  35. ^ pmap(9)OpenBSD 커널 개발자 매뉴얼
  36. ^ "Added Support for Physical Address Extension (PAE) Mode". Solaris 7 5/99 Release Notes (Intel Platform Edition), Appendix B: Hardware Compatibility List and Device Configuration Guide (Intel Platform Edition) 5/99. 1999. Retrieved 2018-03-23.
  37. ^ "ArcaOS 5.0 from Arca Noae is the new release of OS/2 for the 21st Century". 2017. Retrieved 2019-12-16.

추가 정보