2단계 주소 변환
Second Level Address Translation중첩 페이징이라고도 하는 SLAT(Second Level Address Translation)는 하드웨어 지원 가상화 기술로, 소프트웨어 관리 섀도 페이지 테이블과 관련된 오버헤드를 피할 수 있다.
AMD는 3세대 Opteron 프로세서(코드명 바르셀로나) 도입 이후 RVI(Rapid Virtualization Indexing) 기술을 통해 SLAT를 지원해왔다.인텔의 확장 페이지 테이블(EPT)로 알려진 SLAT 구현은 특정 코어 i7, 코어 i5, 코어 i3 프로세서에서 발견된 네할렘 마이크로아키텍처(Nehalem MicroArchitecture)에 도입됐다.
ARM의 가상화 확장은 2단계 MMU에서 제공하는 2단계 페이지 테이블로 알려진 SLAT를 지원한다. 게스트는 1단계 MMU를 사용한다. 지원 서비스는 ARMv7ve 아키텍처에서 옵션으로 추가되었으며 ARMv8(32비트 및 64비트) 아키텍처에서도 지원된다.
개요
현대[vague] 프로세서는 물리적 메모리와 가상 메모리의 개념을 사용한다. 실행 중인 프로세스는 가상 주소를 사용하고 명령이 메모리에 대한 액세스를 요청할 때 프로세서는 페이지 테이블이나 TLB(translation lookaside buffer)를 사용하여 가상 주소를 물리적 주소로 변환한다.가상 시스템을 실행할 때 게스트 시스템의 물리적 메모리 역할을 하는 호스트 시스템의 가상 메모리를 할당했으며, 게스트 시스템 내부에서도 동일한 주소 변환 프로세스가 진행된다.이는 주소 변환을 게스트 시스템 내부(소프트웨어가 에뮬레이션된 게스트 페이지 테이블 사용)와 호스트 시스템 내부(물리적 맵[pmap] 사용)에서 두 번 수행해야 하므로 메모리 액세스 비용이 증가한다.
이 번역을 효율적으로 만들기 위해 소프트웨어 엔지니어들은 소프트웨어 기반 섀도우 페이지 테이블을 구현했다.섀도 페이지 테이블은 게스트 가상 메모리를 호스트 물리적 메모리 주소로 직접 변환한다.각 VM에는 별도의 섀도 페이지 테이블이 있으며 하이퍼바이저가 이를 관리한다.그러나 게스트가 페이지 테이블을 업데이트할 때마다 하이퍼바이저가 참여하도록 하기 때문에 비용은 매우 비싸다.
이 번역을 보다 효율적으로 만들기 위해 프로세서 벤더는 일반적으로 SLAT라고 불리는 기술을 구현했다.각 게스트-물리적 주소를 호스트-가상 주소로 처리함으로써, 가상화되지 않은 페이지 테이블(현재 게스트 페이지 테이블)을 이동하는 데 사용되는 하드웨어의 약간의 확장이 호스트 페이지 테이블을 이동할 수 있다.다단계 페이지 테이블을 사용하면 호스트 페이지 테이블을 게스트 페이지 테이블 내에 중첩된 것으로 개념적으로 볼 수 있다.하드웨어 페이지 테이블 워커는 페이지 테이블에 레벨을 추가하는 것과 거의 비슷하게 추가 변환 계층을 처리할 수 있다.
SLAT와 다단계 페이지 테이블을 사용하면 게스트-물리적 주소가 게스트-가상 주소와 크기가 같고 동일한 페이지를 사용할 경우 변환을 찾기 위해 걸어야 하는 레벨 수가 두 배로 증가한다.이는 호스트 및 게스트 페이지 테이블의 중간 레벨에서 값을 캐싱하는 중요성을 증가시킨다.또한 수준 수를 줄이기 위해 호스트 페이지 테이블에서 큰 페이지를 사용하는 것이 유용하다(예: x86-64에서 2MB 페이지를 사용하는 경우 페이지 테이블에서 한 수준 제거).메모리는 일반적으로 가상 머신에 조밀하게 할당되기 때문에 게스트-물리적 변환을 위해 큰 페이지를 사용하는 것은 명백한 최적화로서 호스트 페이지 테이블에 필요한 검색의 깊이와 메모리를 줄인다.
구현
신속한 가상화 인덱싱
개발 중 중첩 페이지 테이블(NPT)로 알려진 RVI(Rapid Virtualization Indexing, RVI)는 MMU(Processor Memory Management Unit)용 AMD 2세대 하드웨어 지원 가상화 기술로,[1][2] 3세대 Opteron 프로세서인 코드네임 바르셀로나에 RVI가 도입됐다.[3]
VMware 연구 논문에 따르면 RVI는 소프트웨어 전용(섀도 페이지 테이블) 구현에 비해 최대 42% 향상된 성능을 제공하는 것으로 나타났다.[4]Red Hat이 수행한 테스트에서는 OLTP 벤치마크의 성능이 두 배로 향상되는 것으로 나타났다.[5]
확장 페이지 테이블
EPT(Extended Page Tables)는 MMU(메모리 관리 유닛)용 인텔 2세대 x86 가상화 기술로, EPT 지원은 인텔의 코어 i3, 코어 i5, 코어 i7, 코어 i9 CPU 등에서 찾아볼 수 있다.[6]일부 최신 VIA CPU에서도 발견된다. 실제 모드에서 논리 프로세서를 직접 실행하기 위해서는 EPT가 필요하며, 인텔 전문 용어로 "무제한 게스트"라고 불리는 기능이며, 웨스트미어 마이크로아키텍처(Westmere MicroArchitecture)에 도입되었다.[7][8]
VMware 평가서에 따르면, 실제로 어떤 경우에는 소프트웨어 구현보다 코드를 느리게 실행할 수 있지만, "EPT는 MMU 집약적인 벤치마크의 경우 최대 48%, MMU 집약적인 마이크로벤치마크의 경우 최대 600%의 성능 향상을 제공한다."[9]
2단계 페이지 테이블
2단계 페이지 테이블 지원은 예외 레벨 2(EL2)를 구현하는 ARM 프로세서에 존재한다.
확장
모드 기반 실행 제어
MBE(Mode Based Execution Control)는 인텔 케이비 레이크 및 AMD Zen 2 CPU에서 먼저 사용할 수 있는 x86 SLAT 구현의 확장이다.확장자는 확장 페이지 테이블(게스트 페이지 테이블)의 실행 비트를 2비트(사용자 실행용 1비트, 감독자 실행용 1비트)로 확장한다.[10]
커널 모드 코드 무결성 시행을 통해 게스트 사용자 모드 서명되지 않은 코드 실행 속도를 높이기 위해 MBE가 도입되었다.이 구성에서 서명되지 않은 코드 페이지는 사용자 모드에서 실행된 것으로 표시할 수 있지만 커널 모드에서는 실행되지 않은 것으로 표시해야 한다.게스트 커널이 손상된 경우에도 모든 게스트 커널 모드 실행 코드가 서명되도록 하여 무결성을 유지하기 위해 게스트 커널에는 메모리 페이지의 실행 비트를 수정할 수 있는 권한이 없다.실행 비트의 수정 또는 실행 비트가 포함된 게스트 페이지 테이블의 스위칭은 이 경우 더 높은 권한이 있는 엔티티(이 경우 호스트 하이퍼바이저)에 위임된다.MBE가 없으면 서명되지 않은 사용자 모드 실행에서 서명된 커널 모드 실행으로 이어지는 각 입구에는 커널 모드 페이지 테이블로의 전환을 수행하기 위한 VM 종료가 수반되어야 한다.역방향 작업에서 서명된 커널 모드에서 서명되지 않은 사용자 모드로의 종료에는 다른 페이지 테이블 스위치를 수행하기 위한 VM 종료가 수반되어야 한다.VM에서 코드 실행 성능에 상당한 영향을 미치는 [11][12]종료MBE를 사용하면 동일한 페이지 테이블을 서명되지 않은 사용자 모드 코드와 서명된 커널 모드 코드 간에 공유할 수 있으며, 실행 컨텍스트에 따라 두 세트의 실행 권한 세트가 있다.실행 컨텍스트가 서명되지 않은 사용자 모드와 서명된 커널 모드 간에 전환되면 VM 종료가 더 이상 필요하지 않다.
소프트웨어 지원
SLAT를 지원하는 하이퍼바이저는 다음과 같다.
- 윈도우즈 서버 2008 R2, 윈도우즈 8 이상용 Hyper-V.[13]Windows 8(이상 Microsoft Windows)하이퍼-V는 실제로 SLAT를 필요로 한다.[14][15]
- 기본 MacOS 하이퍼바이저인 Hypervisor.framework, macOS 10.10[16] 이후 사용 가능
- KVM, Linux 커널 메인라인[17][18] 버전 2.6.26 이후
- 버전 5 이후[19] Mac용 Parallels Desktop
- VirtualBox 버전 2.0.0 이후[20]
- 버전 3.5 이후[4] VMware ESX
- VMware Workstation.VMware Workstation 14(이후 VMware Workstation)에는 실제로 SLAT가 필요하다.[21]
- Xen, 버전 3.2.0 이후[22]
- Qubes OS — SLAT 필수[23] 사항
- 바이브[24][25] — SLAT는 의무 사항이며 의무 사항으로 유지될 예정임
- vmm, OpenB의 네이티브 하이퍼바이저SD — SLAT 필수[26][27] 사항
- 오픈 소스 경량 하이퍼바이저인 ACRN은 IoT 및 Edge 사용에 최적화된 실시간 및 안전 중요도를 염두에 두고 구축되었다.[28]
위의 하이퍼바이저 중 일부는 소프트웨어 섀도 페이지 테이블을 구현하지 않기 때문에 실제로 SLAT를 작동해야 한다(빠를 뿐만 아니라).목록을 완전히 업데이트하지 않고 이를 반영한다.
참고 항목
참조
- ^ "Rapid Virtualization Indexing with Windows Server 2008 R2 Hyper-V The Virtualization Blog". Blogs.amd.com. 2009-03-23. Retrieved 2010-05-16.
- ^ "AMD-V Nested Paging" (PDF). July 2008. Archived from the original (PDF) on 2012-09-05. Retrieved 2013-12-11.
- ^ "VMware engineer praises AMD's Nested Page Tables". Searchservervirtualization.techtarget.com. 2008-07-21. Retrieved 2010-05-16.
- ^ a b "Performance Evaluation of AMD RVI Hardware Assist" (PDF). Retrieved 2010-05-16.
- ^ "Red Hat Magazine Red Hat Enterprise Linux 5.1 utilizes nested paging on AMD Barcelona Processor to improve performance of virtualized guests". Magazine.redhat.com. 2007-11-20. Retrieved 2010-05-16.
- ^ "Intel Virtualization Technology List". Ark.intel.com. Retrieved 2014-02-17.
- ^ "인텔은 Westmere 마이크로 아키텍처와 이후 Intel CPU에 제한되지 않은 게스트 모드를 추가했으며, 게스트 물리적 주소 액세스를 호스트 물리적 주소로 변환하기 위해 EPT를 사용한다.이 모드에서는 페이징을 사용하지 않는 VMEnter가 허용된다."
- ^ "Intel 64 and IA-32 Architectures Developer's Manual, Vol. 3C" (PDF). Intel. Retrieved 13 December 2015.
If the 'unrestricted guest' VM-execution control is 1, the 'enable EPT' VM-execution control must also be 1.
- ^ Intel EPT 하드웨어 지원의 성능 평가
- ^ Mulnix, David L. "Intel Xeon Processor Scalable Family Technical Overview". intel. Retrieved 3 September 2021.
- ^ 윈도우즈 10 가상화 기반 보안의 공격 지표 분석
- ^ Arkley, Brent. "The potential performance Impact of Device Guard (HVCI)". Borec's Legacy meets Modern Device Management Blog. Retrieved 3 September 2021.
- ^ "AMD-V Rapid Virtualization Indexing and Windows Server 2008 R2 Hyper-V Second Level Address Translation". Doing IT Virtual. Retrieved 2010-05-16.
- ^ Bott, Ed (2011-12-08). "Does your PC have what it takes to run Windows 8's Hyper-V?". ZDNet. Retrieved 2014-02-17.
- ^ "Support & Drivers". Retrieved 13 December 2015.
- ^ "Hypervisor Apple Developer Documentation".
- ^ "Kernel Newbies: Linux 2 6 26".
- ^ Sheng Yang (2008-06-12). "Extending KVM with new Intel Virtualization technology" (PDF). linux-kvm.org. KVM Forum. Archived from the original (PDF) on 2014-03-27. Retrieved 2013-03-17.
- ^ Inc, Parallels. "KB Parallels: What's new in Parallels Desktop 5 for Mac". kb.parallels.com. Retrieved 2016-04-12.
- ^ "Changelog for VirtualBox 2.0". Archived from the original on 2014-10-22.
- ^ liz. "VMware Workstation 14 Pro Release Notes". docs.vmware.com. Retrieved 2020-11-19.
- ^ "Benchmarks: Xen 3.2.0 on AMD Quad-Core Opteron with RVI". 2008-06-15. Retrieved 2011-05-13.
- ^ "Hardware Compatibility List (HCL)". Qubes OS. Retrieved 2020-01-06.
- ^ BHyVe: BSD 하이퍼바이저에 대한 BIOS 에뮬레이션 지원 구현
- ^ "21.7. FreeBSD as a Host with bhyve". Retrieved 13 December 2015.
- ^ OpenBSD/amd64 출시 예정: 네이티브 하이퍼바이저
- ^ vmm(4) - 가상 시스템 모니터
- ^ ACRN 메모리 관리 고급 설계