맨위로가기

SLAT

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

SLAT(Second Level Address Translation)는 프로세서의 메모리 관리 장치(MMU)를 위한 하드웨어 지원 가상화 기술이다. AMD는 RVI(Rapid Virtualization Indexing)를, 인텔은 EPT(Extended Page Tables)를 SLAT 기술로 도입했다. ARM 프로세서는 2단계 페이지 테이블을 지원한다. SLAT는 하이퍼바이저의 성능을 향상시키며, MBE(Mode Based Execution Control)와 같은 확장 기술을 통해 보안을 강화한다. 여러 하이퍼바이저에서 SLAT를 지원하며, 일부 하이퍼바이저는 SLAT가 필수적이다.

더 읽어볼만한 페이지

  • 인텔 x86 마이크로프로세서 - 인텔 80386
    인텔 80386은 1985년 출시된 x86 아키텍처의 32비트 마이크로프로세서로, 온칩 메모리 관리 장치, 3단계 파이프라인, 세 가지 동작 모드를 제공하며, 개인용 컴퓨터와 임베디드 시스템에 널리 사용되었지만 현재는 생산 및 지원이 중단되었고, 32비트 명령어 집합은 현대 x86 아키텍처의 기반이 되었다.
  • 인텔 x86 마이크로프로세서 - 인텔 4004
    인텔 4004는 1971년 인텔에서 출시된 세계 최초의 상용 마이크로프로세서 중 하나이며, 4비트 아키텍처를 기반으로 계산기 라인에 탑재하기 위해 개발되었고, 컴퓨터 소형화와 개인용 컴퓨터 시대에 기여했다.
SLAT

2. 역사

인텔 80286 프로세서를 통해 x86 아키텍처에 보호 모드가 도입되면서 물리 메모리와 가상 메모리 개념이 주요 아키텍처에 등장했다. 프로세스가 가상 주소를 사용하고 명령어가 메모리 접근을 요청하면, 프로세서는 페이지 테이블 또는 주소 변환 버퍼를 사용하여 가상 주소를 물리 주소로 변환한다.

가상 머신을 실행할 때는 게스트 운영체제의 물리 메모리 역할을 하는 호스트 시스템의 가상 메모리가 할당된다. 이로 인해 주소 변환 과정이 게스트 운영체제 내부(소프트웨어로 구현된 게스트 페이지 테이블 사용)와 호스트 시스템 내부(호스트 페이지 테이블 사용)에서 각각 일어나 총 두 번의 변환이 필요하게 된다. 이는 메모리 접근 비용을 증가시키는 요인이 되었다.

이 변환 과정을 효율화하기 위해 초기에는 소프트웨어 기반의 섀도우 페이지 테이블(Shadow Page Table)이 구현되었다. 섀도우 페이지 테이블은 게스트 가상 메모리 주소를 호스트 물리 메모리 주소로 직접 변환한다. 각 VM은 별도의 섀도우 페이지 테이블을 가지며, 하이퍼바이저가 이를 관리한다. 그러나 게스트 운영체제가 페이지 테이블을 업데이트할 때마다 하이퍼바이저가 개입하여 섀도우 페이지 테이블의 할당과 변경을 관리해야 하므로 여전히 높은 비용이 발생했다.

이러한 변환 과정을 더욱 효율적으로 만들기 위해 프로세서 제조사들은 하드웨어 가속 기술인 SLAT(Second Level Address Translation)를 구현했다. SLAT는 게스트-물리 주소를 호스트-가상 주소로 취급함으로써, 기존 페이지 테이블(현재 게스트 페이지 테이블) 탐색에 사용되는 하드웨어를 약간 확장하여 호스트 페이지 테이블까지 탐색할 수 있도록 한다. 다단계 페이지 테이블을 사용하면 호스트 페이지 테이블을 개념적으로 게스트 페이지 테이블 내부에 중첩된 것으로 볼 수 있다. 하드웨어 페이지 테이블 워커는 이 추가적인 변환 계층을 페이지 테이블에 단계(level)를 추가하는 것과 거의 유사하게 처리할 수 있다.

SLAT와 다단계 페이지 테이블을 사용하면, 게스트-물리 주소의 크기가 게스트-가상 주소와 같고 동일한 크기의 페이지가 사용될 때, 변환을 찾기 위해 탐색해야 하는 단계 수가 두 배로 증가할 수 있다. 이는 호스트 및 게스트 페이지 테이블의 중간 단계에서 값을 캐싱하는 것의 중요성을 높인다. 또한 호스트 페이지 테이블에서 큰 페이지(예: x86-64에서 2 MB 페이지)를 사용하여 단계 수를 줄이는 것도 도움이 된다. 메모리는 일반적으로 가상 머신에 굵은 입도(coarse-grained)로 할당되므로, 게스트-물리 변환에 큰 페이지를 사용하는 것은 조회 깊이와 호스트 페이지 테이블에 필요한 메모리를 줄이는 효과적인 최적화 방법이다.

2. 1. AMD의 RVI (Rapid Virtualization Indexing)

빠른 가상화 인덱싱(Rapid Virtualization Indexing, RVI)은 개발 과정에서 중첩 페이지 테이블(Nested Page Tables, NPT)로도 알려졌으며, AMD의 프로세서 메모리 관리 유닛(MMU)을 위한 2세대 하드웨어 지원 가상화 기술이다.[1][2] RVI는 옵테론 프로세서의 3세대 제품군인 코드명 바르셀로나에서 처음 도입되었다.[3]

RVI는 기존의 소프트웨어 방식(섀도 페이지 테이블) 구현과 비교하여 상당한 성능 향상을 보여준다. VMware의 연구에 따르면 RVI는 최대 42%의 성능 향상을 제공하며,[4] Red Hat에서 실시한 OLTP 벤치마크 테스트에서는 성능이 두 배로 향상되는 결과를 보였다.[5]

2. 2. 인텔의 EPT (Extended Page Tables)

확장 페이지 테이블(EPT)은 x86 가상화를 위한 인텔의 2세대 메모리 관리 장치(MMU) 가상화 기술이다. EPT는 네할렘 마이크로아키텍처 기반의 코어 i3, 코어 i5, 코어 i7, 코어 i9 CPU를 비롯한 인텔 CPU에서 지원된다.[6] 일부 최신 VIA CPU에서도 찾아볼 수 있다. EPT는 인텔이 "무제한 게스트(unrestricted guest)"라고 부르는 기능, 즉 실 모드에서 논리 프로세서를 직접 실행하는 데 필요하며, 이 기능은 웨스트미어 마이크로아키텍처에서 도입되었다.[7][8]

VMware의 평가 보고서에 따르면, EPT는 MMU(메모리 관리 장치)를 많이 사용하는 작업에서 상당한 성능 향상을 제공한다. 일반적인 벤치마크에서는 최대 48%, 특정 마이크로 벤치마크에서는 최대 600%까지 성능이 향상될 수 있다. 그러나 일부 예외적인 상황에서는 하드웨어 지원(EPT)을 사용하는 것이 소프트웨어적인 방식보다 오히려 느리게 작동할 수도 있다.[9]

2. 3. ARM의 Stage-2 page-tables

2단계 페이지 테이블 지원은 예외 레벨 2(EL2)를 구현하는 ARM 프로세서에 존재한다.

3. 작동 원리

가상화 환경에서 가상 머신(VM)은 게스트 운영체제가 사용하는 물리 메모리처럼 보이는 호스트 시스템의 가상 메모리 영역을 할당받는다. 게스트 운영체제 내에서 프로세스가 메모리에 접근할 때, 먼저 게스트 가상 주소를 게스트 물리 주소로 변환하고, 이어서 이 게스트 물리 주소를 호스트 물리 주소로 다시 변환해야 한다. 이러한 이중 주소 변환 과정은 메모리 접근 시간을 늘리는 비효율을 초래한다.

초기에는 이러한 비효율을 개선하기 위해 소프트웨어 기반의 섀도우 페이지 테이블 기법이 사용되었다. 섀도우 페이지 테이블은 게스트 가상 주소를 호스트 물리 주소로 직접 변환하는 매핑 정보를 담고 있다. 각 VM마다 별도의 섀도우 페이지 테이블이 존재하며, 하이퍼바이저가 이를 관리한다. 하지만 게스트 운영체제가 페이지 테이블을 변경할 때마다 하이퍼바이저가 개입하여 섀도우 페이지 테이블을 업데이트해야 하므로 상당한 관리 비용이 발생한다.

이러한 소프트웨어 방식의 한계를 극복하고 변환 효율을 높이기 위해 프로세서 제조사들은 하드웨어 기반의 주소 변환 지원 기술인 SLAT(Second Level Address Translation)를 도입했다. SLAT는 게스트-물리 주소를 호스트-가상 주소로 취급하고, 기존의 페이지 테이블 탐색 하드웨어(페이지 테이블 워커)를 약간 확장하여 호스트 페이지 테이블까지 탐색할 수 있도록 한다. 이를 통해 하드웨어가 게스트-물리 주소에서 호스트-물리 주소로의 변환 과정을 직접 처리하여 가속한다.

SLAT는 다단계 페이지 테이블 구조를 활용한다. 이 구조에서는 호스트 페이지 테이블이 개념적으로 게스트 페이지 테이블 내부에 중첩된 형태로 존재한다. 하드웨어 페이지 테이블 워커는 이 추가적인 변환 계층을 마치 페이지 테이블에 새로운 레벨이 추가된 것처럼 처리하여, 주소 변환 속도를 높인다.

SLAT를 사용하면, 특히 게스트-물리 주소와 게스트-가상 주소의 크기가 같고 동일한 크기의 페이지를 사용할 경우, 전체 주소 변환을 위해 탐색해야 하는 페이지 테이블 레벨 수가 증가할 수 있다. 이는 변환 과정 중간 단계의 페이지 테이블 항목을 주소 변환 버퍼 등에 캐싱하는 것의 중요성을 더욱 높인다. 또한, 호스트 페이지 테이블에서 큰 페이지(Large Page, Huge Page)를 사용하는 것이 중요한 최적화 기법으로 활용된다. 예를 들어, x86-64 아키텍처에서 2MiB 크기의 큰 페이지를 사용하면 페이지 테이블 탐색 레벨 하나를 줄일 수 있다. 가상 머신에는 일반적으로 메모리가 큰 단위(粗粒度, Coarse-grained)로 할당되므로, 게스트-물리 주소 변환에 큰 페이지를 사용하면 페이지 테이블 탐색 깊이와 호스트 페이지 테이블 유지에 필요한 메모리 양을 효과적으로 줄일 수 있다.

4. 확장 기술

(내용 없음 - 하위 섹션에서 상세 내용을 다루므로 중복 방지를 위해 본문 생략)

4. 1. MBE (Mode Based Execution Control)

MBE(Mode Based Execution Control, 모드 기반 실행 제어)는 인텔 카비레이크 및 AMD 젠+ CPU에서 처음으로 사용 가능한 x86 SLAT 구현의 확장 기능이다. AMD에서는 "Guest Mode Execute Trap" 또는 '''GMET'''라고 부르기도 한다.[10] 이 확장은 확장된 페이지 테이블(게스트 페이지 테이블)의 실행 비트를 사용자 실행과 관리자 실행, 이렇게 2비트로 확장한다.[11]

MBE는 커널 모드 코드 무결성을 강제하면서 게스트 사용자 모드에서 서명되지 않은 코드의 실행 속도를 높이기 위해 도입되었다. 이 구성을 사용하면, 서명되지 않은 코드 페이지는 사용자 모드에서는 실행 가능하게 표시하면서도, 커널 모드에서는 실행할 수 없도록 표시할 수 있다. 게스트 커널이 손상되더라도 모든 게스트 커널 모드 실행 코드가 서명되도록 보장하여 무결성을 유지하기 위해, 게스트 커널은 메모리 페이지의 실행 비트를 수정할 권한을 갖지 않는다. 실행 비트 수정이나 실행 비트가 포함된 게스트 페이지 테이블 전환은 더 높은 권한을 가진 존재, 즉 호스트 하이퍼바이저에게 위임된다.

MBE가 없다면, 서명되지 않은 사용자 모드 실행에서 서명된 커널 모드 실행으로 전환할 때마다 커널 모드 페이지 테이블로 바꾸기 위해 하이퍼바이저로의 VM 종료(VM Exit)가 필요하다. 반대로 서명된 커널 모드에서 서명되지 않은 사용자 모드로 나올 때도 또 다른 페이지 테이블 전환을 위해 VM 종료가 발생한다. 이러한 VM 종료는 코드 실행 성능에 큰 부담을 준다.[12][13] MBE를 사용하면 동일한 페이지 테이블을 서명되지 않은 사용자 모드 코드와 서명된 커널 모드 코드 간에 공유할 수 있으며, 실행되는 환경에 따라 두 가지 실행 권한을 다르게 적용할 수 있다. 따라서 서명되지 않은 사용자 모드와 서명된 커널 모드 간에 실행 환경이 전환될 때 더 이상 VM 종료가 필요하지 않게 되어 성능이 향상된다.

5. 소프트웨어 지원

SLAT를 지원하는 하이퍼바이저는 다음과 같다.


  • Hyper-V - 윈도우 서버 2008 R2, 윈도우 8 이상.[14] 윈도우 8 및 이후 마이크로소프트 윈도우 버전의 Hyper-V는 SLAT가 필요하다.[15][16]
  • Hypervisor.framework - macOS의 네이티브 하이퍼바이저로, macOS 10.10부터 사용 가능하다.[17]
  • KVM - 리눅스 커널 메인라인 버전 2.6.26부터 지원한다.[18][19]
  • 패럴렐즈 데스크톱 for Mac - 버전 5부터 지원한다.[20]
  • VirtualBox - 버전 2.0.0부터 지원한다.[21]
  • VMware ESX - 버전 3.5부터 지원한다.[4]
  • VMware Workstation - 버전 14 및 이후 버전에서는 SLAT가 필요하다.[22]
  • Xen - 버전 3.2.0부터 지원한다.[23]
  • Qubes OS - SLAT가 필수적이다.[24]
  • bhyve[25][26] - SLAT가 필수적이며, 앞으로도 필수로 유지될 예정이다.
  • vmm - OpenBSD의 네이티브 하이퍼바이저로, SLAT가 필수적이다.[27][28]
  • [https://projectacrn.org ACRN] - 실시간 및 안전 중요성을 염두에 두고 개발된 오픈 소스 경량 하이퍼바이저로, IoT 및 엣지 컴퓨팅 환경에 최적화되어 있다.[29]
  • QEMU - 오픈 소스 임베디드 하이퍼바이저 및 칩셋 에뮬레이터이다.[30][31][32][33][34]


위에 언급된 하이퍼바이저 중 일부는 소프트웨어 섀도 페이지 테이블을 구현하지 않기 때문에, 성능 향상 목적이 아니라 작동을 위해 SLAT가 필수적이다.

참조

[1] 웹사이트 Rapid Virtualization Indexing with Windows Server 2008 R2 Hyper-V | The Virtualization Blog http://blogs.amd.com[...] Blogs.amd.com 2010-05-16
[2] 웹사이트 AMD-V Nested Paging http://developer.amd[...] 2013-12-11
[3] 웹사이트 VMware engineer praises AMD's Nested Page Tables http://searchserverv[...] Searchservervirtualization.techtarget.com 2010-05-16
[4] 웹사이트 Performance Evaluation of AMD RVI Hardware Assist http://www.vmware.co[...] 2010-05-16
[5] 웹사이트 Red Hat Magazine | Red Hat Enterprise Linux 5.1 utilizes nested paging on AMD Barcelona Processor to improve performance of virtualized guests http://magazine.redh[...] Magazine.redhat.com 2010-05-16
[6] 웹사이트 Intel Virtualization Technology List http://ark.intel.com[...] Ark.intel.com 2014-02-17
[7] 문서 Intel added unrestricted guest mode on Westmere micro-architecture and later Intel CPUs, it uses EPT to translate guest physical address access to host physical address. With this mode, VMEnter without enable paging is allowed. http://2013.asiabsdc[...]
[8] 웹사이트 Intel 64 and IA-32 Architectures Developer's Manual, Vol. 3C http://download.inte[...] 2015-12-13
[9] 문서 Performance Evaluation of Intel EPT Hardware Assist http://www.vmware.co[...]
[10] 웹사이트 Why Windows 11 has such strict hardware requirements, according to Microsoft https://arstechnica.[...] 2024-03-18
[11] 웹사이트 Intel Xeon Processor Scalable Family Technical Overview https://software.int[...] 2021-09-03
[12] 문서 Analysis of the Attack Surface of Windows 10 Virtualization-based Security https://www.blackhat[...]
[13] 웹사이트 The potential performance Impact of Device Guard (HVCI) http://borec.ch/the-[...] 2021-09-03
[14] 웹사이트 AMD-V Rapid Virtualization Indexing and Windows Server 2008 R2 Hyper-V Second Level Address Translation http://doingitvirtua[...] Doing IT Virtual 2010-05-16
[15] 웹사이트 Does your PC have what it takes to run Windows 8's Hyper-V? https://www.zdnet.co[...] ZDNet 2014-02-17
[16] 웹사이트 Support & Drivers http://support.amd.c[...] 2015-12-13
[17] 웹사이트 Hypervisor | Apple Developer Documentation https://developer.ap[...]
[18] 웹사이트 Kernel Newbies: Linux 2 6 26 http://kernelnewbies[...]
[19] 웹사이트 Extending KVM with new Intel Virtualization technology http://www.linux-kvm[...] KVM Forum 2013-03-17
[20] 웹사이트 KB Parallels: What's new in Parallels Desktop 5 for Mac http://kb.parallels.[...] 2016-04-12
[21] 웹사이트 Changelog for VirtualBox 2.0 http://www.virtualbo[...]
[22] 웹사이트 VMware Workstation 14 Pro Release Notes https://docs.vmware.[...] 2020-11-19
[23] 웹사이트 Benchmarks: Xen 3.2.0 on AMD Quad-Core Opteron with RVI http://virtualizatio[...] 2011-05-13
[24] 웹사이트 Hardware Compatibility List (HCL) https://www.qubes-os[...] 2020-01-06
[25] 문서 Implementation of a BIOS emulation support for BHyVe: A BSD Hypervisor http://2013.asiabsdc[...]
[26] 웹사이트 21.7. FreeBSD as a Host with bhyve https://www.freebsd.[...] 2015-12-13
[27] 문서 Coming Soon to OpenBSD/amd64: A Native Hypervisor http://undeadly.org/[...]
[28] 문서 vmm(4) — virtual machine monitor http://man.openbsd.o[...]
[29] 문서 ACRN Memory Management High-Level Design https://projectacrn.[...]
[30] 웹사이트 Features/VT-d - QEMU https://wiki.qemu.or[...] 2023-11-12
[31] 웹사이트 Hyper-V Enlightenments — QEMU documentation https://www.qemu.org[...] 2023-11-12
[32] 웹사이트 Add Intel VT-d nested translation [LWN.net] https://lwn.net/Arti[...] 2023-11-12
[33] 웹사이트 Intel Virtualisation: How VT-x, KVM and QEMU Work Together https://binarydebt.w[...] 2023-11-12
[34] 웹사이트 Features/KVMNestedVirtualizationTestsuite - QEMU https://wiki.qemu.or[...] 2023-11-12



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com