title: 가상화 하드웨어
date: 2025-06-26
category: arch
tags: [virtualization, VT-x, AMD-V, EPT, NPT, hypervisor, SLAT]
가상화 하드웨어
개요
하드웨어 가상화(Hardware Virtualization)는 CPU와 메모리 관리 하드웨어에 직접적인 지원을 추가하여, 하나의 물리적 시스템에서 여러 개의 독립된 가상 시스템(VM)을 효율적으로 실행할 수 있게 하는 기술이다. x86 아키텍처의 경우 2005~2006년에 Intel VT-x와 AMD-V가 각각 도입되면서 소프트웨어 기반 가상화의 성능 병목을 해결하는 전환점이 되었다.
소프트웨어 기반 가상화에서는 바이너리 번역(Binary Translation)과 그림자 페이지 테이블(Shadow Page Table)과 같은 기법을 사용하여 특권 명령어를 에뮬레이션해야 했으나, 하드웨어 가상화는 이를 하드웨어 수준에서 네이티브하게 지원하여 상당한 성능 향상을 달성한다. 특히 SLAT(Second Level Address Translation)라 불리는 EPT/NPT 기술은 메모리 주소 변환 오버헤드를 대폭 줄여, 현대 클라우드 컴퓨팅과 컨테이너 기반 인프라의 기반이 되고 있다.
핵심 개념
보호 링(Protection Ring)
x86 아키텍처는 4단계의 보호 링을 제공하여 특권 수준을 구분한다:
| 링 | 수준 | 실행 환경 | 예시 |
|---|---|---|---|
| Ring 0 | 커널 모드 | 모든 하드웨어 접근 허용 | OS 커널, 하이퍼바이저 |
| Ring 1 | 드라이버 | 일부 I/O 접근 허용 | (일반적으로 미사용) |
| Ring 2 | 드라이버 | 일부 I/O 접근 허용 | (일반적으로 미사용) |
| Ring 3 | 사용자 모드 | 제한된 메모리/명령어 접근 | 응용 프로그램 |
가상화에서 하이퍼바이저(Hypervisor)는 Ring 0에서 실행되며, 게스트 OS는 더 높은 링(낮은 특권)으로 밀어내어(ring deprivileging) 특권 명령어 실행을 가로채도록 한다.
하이퍼바이저 분류
| 분류 | 특징 | 예시 |
|---|---|---|
| Type 1 ( Bare-metal ) | 하드웨어 위에 직접 실행 | VMware ESXi, Xen, Hyper-V |
| Type 2 ( Hosted ) | 호스트 OS 위에 실행 | VMware Workstation, VirtualBox, Parallels |
| Type 1.5 ( Hybrid ) | 커널 모듈로 실행 | KVM (Linux 커널 내장) |
특권 명령어 가상화 문제
x86 아키텍처의 가상화를 어렵게 만드는 세 가지 핵심 문제:
- 특권 명령어 처리: Ring 0에서 실행되는 일부 명령어가 Ring > 0에서 실행될 때 조용히 실패하거나 다르게 동작
- 메모리 관리: 게스트 OS가 MMU에 직접 접근하면 하이퍼바이저의 통제권 상실
- I/O 디바이스 에뮬레이션: 지원되지 않는 하드웨어를 소프트웨어로 시뮬레이션해야 함
비교/분석
소프트웨어 가상화 vs 하드웨어 가상화
| 항목 | 소프트웨어 가상화 | 하드웨어 가상화 |
|---|---|---|
| 특권 명령어 처리 | 바이너리 번역 | VMX non-root 모드 |
| 페이지 테이블 관리 | 그림자 페이지 테이블 | EPT / NPT (SLAT) |
| VM 진입/이탈 비용 | 높음 (번역 오버헤드) | 낮음 (VMCALL/VMEXIT) |
| 성능 오버헤드 | 10~30% | 2~10% |
| 메모리 할당 | 수동 관리 | 하드웨어 자동 변환 |
| 64비트 게스트 | 제한적 (인텔) | 완전 지원 |
Intel VT-x vs AMD-V 비교
| 항목 | Intel VT-x | AMD-V |
|---|---|---|
| 코드명 | Vanderpool | Pacifica |
| 첫 도입 | 2005년 11월 (Pentium 4) | 2006년 5월 (Athlon 64) |
| CPU 플래그 | vmx | svm |
| 페이지 테이블 가상화 | EPT (Extended Page Tables) | NPT (Nested Page Tables) / RVI |
| 인터럽트 가상화 | APICv | AVIC |
| I/O 가상화 | VT-d | AMD-Vi |
| 네트워크 가상화 | VT-c, SR-IOV | VMnet, SR-IOV |
| VMCS 관리 | VMCS + VMCS Shadowing | VMCB (Virtual Machine Control Block) |
EPT/NPT (SLAT) 성능 영향
| 워크로드 | 소프트웨어 가상화 대비 향상 |
|---|---|
| MMU 집약적 벤치마크 | 최대 48% 향상 (EPT) |
| MMU 집약적 마이크로벤치마크 | 최대 600% 향상 (EPT) |
| OLTP 벤치마크 | 약 2배 향상 (RVI) |
| 일반 워크로드 | 10~42% 향상 (RVI) |
동작 원리
VMX 모드 (Intel VT-x)
Intel VT-x는 두 가지 CPU 모드를 추가한다:
- VMX root mode: 하이퍼바이저가 실행되는 모드. 기존 Ring 0/3과 동일한 동작.
- VMX non-root mode: 게스트 OS가 실행되는 모드. Ring 0으로 인식하지만 실제로는 제한된 특권으로 동작.
VM entry/exit 과정:
- VM Entry:
VMLAUNCH또는VMRESUME명령어로 non-root 모드로 진입 - Guest 실행: 게스트 OS가 non-root 모드에서 실행됨
- VM Exit: 특권 명령어, 인터럽트, I/O 접근 등이 발생하면 root 모드로 복귀
- Exit 처리: 하이퍼바이저가 VM Exit 원인을 분석하고 처리
VMCS (Virtual Machine Control Structure)
VMCS는 각 VM에 하나씩 존재하는 메모리 내 데이터 구조로, VM entry/exit 시 CPU 상태를 저장하고 복원한다:
- Guest State Area: VM exit 시 저장되는 게스트 CPU 상태
- Host State Area: VM entry 시 복원되는 호스트 CPU 상태
- VM-Execution Control Fields: 어떤 이벤트에서 VM exit가 발생할지 제어
- VM-Exit Control Fields: VM exit 시 수행될 동작 제어
- VM-Entry Control Fields: VM entry 시 수행될 동작 제어
- VM-Exit Information Fields: VM exit 원인에 대한 상세 정보
VMCS Shadowing (Haswell~)은 중첩 가상화(Nested Virtualization) 시 VMCS를 하드웨어로 캐싱하여 이중 변환 오버헤드를 줄인다.
EPT/NPT (Second Level Address Translation)
SLAT는 두 단계의 주소 변환을 하드웨어로 처리한다:
변환 과정 (EPT/NPT 적용 시):
GVA → GPA → HPA
(Guest Virtual → Guest Physical → Host Physical)
- GVA (Guest Virtual Address): 게스트 OS가 관리하는 가상 주소
- GPA (Guest Physical Address): 게스트 OS가 인식하는 물리 주소 (실제로는 호스트 가상 주소)
- HPA (Host Physical Address): 실제 물리 메모리 주소
하드웨어 페이지 테이블 워커(Page Table Walker)가 게스트 페이지 테이블과 호스트 페이지 테이블을 순차적으로 탐색하여 최종 물리 주소를 변환한다. 다단계 페이지 테이블을 사용할 경우 변환 깊이가 2배로 증가하므로, 호스트 페이지 테이블에서 대형 페이지(Large Page, 2MB)를 사용하여 레벨 수를 줄이는 것이 중요하다.
AMD NPT (Nested Page Tables)
AMD의 NPT는 Intel EPT와 동일한 기능을 제공하며, 개발 단계에서 "Nested Page Tables"라 불리다가 상용화 시 "Rapid Virtualization Indexing(RVI)"으로 명명되었다. AMD Opteron Barcelona 세대(3세대)에서 처음 도입되었으며, VMware 테스트에서 소프트웨어 가상화 대비 최대 42% 성능 향상을 보여주었다.
인터럽트 가상화 (APICv / AVIC)
현대 프로세서는 인터럽트 처리도 하드웨어로 가상화한다:
| 기능 | Intel APICv | AMD AVIC |
|---|---|---|
| 인터럽트 가상화 | 가상 인터럽트 직접 전달 | 가상 인터럽트 직접 전달 |
| EOI 가상화 | 하드웨어 자동 EOI 처리 | 하드웨어 자동 EOI 처리 |
| IPI 가상화 | 가상 IPI 직접 전달 | 가상 IPI 직접 전달 |
| TPR 가상화 | 가상 TPR 읽기/쓰기 | 가상 TPR 읽기/쓰기 |
| VM Exit 감소 | 인터럽트 관련 VM Exit 대폭 감소 | 인터럽트 관련 VM Exit 대폭 감소 |
I/O 가상화 (VT-d / AMD-Vi)
IOMMU(I/O Memory Management Unit)를 통해 가상 머신이 물리 I/O 디바이스를 직접 사용할 수 있다:
- DMA 리매핑: 디바이스의 DMA 요청을 해당 VM의 물리 주소로 변환
- 인터럽트 리매핑: 하드웨어 인터럽트를 해당 VM의 가상 인터럽트로 라우팅
- PCI 패스스루: 디바이스를 VM에 직접 할당 (PCI Passthrough)
- SR-IOV: 하나의 물리 디바이스를 여러 가상 디바이스(VF)로 분할
장단점
장점
- 성능 향상: 특권 명령어와 메모리 변환을 하드웨어로 처리하여 소프트웨어 가상화 대비 10~60% 성능 향상
- 오버헤드 감소: VM entry/exit 비용이 대폭 줄어들어 컨텍스트 스위치 비용 최소화
- 메모리 효율: SLAT를 통해 페이지 테이블 관리 오버헤드 감소, 대형 페이지 활용 가능
- 보안 강화: 하드웨어 수준의 격리를 통해 VM 간 메모리 보호 강화
- I/O 성능: VT-d/AMD-Vi를 통한 디바이스 패스스루로 네이티브급 I/O 성능 달성
- 호환성: 기존 OS 수정 없이 그대로 실행 (Full Virtualization 지원)
단점
- 하드웨어 의존성: CPU/칩셋이 가상화 확장을 지원해야 함
- BIOS 설정 필요: BIOS/UEFI에서 VT-x/AMD-V 활성화 필요
- 보안 취약점: Spectre, Meltdown 같은 시드 채널 공격의 대상이 될 수 있음
- 리소스 오버헤드: 각 VM마다 VMCS/VMCB 메모리 할당 필요
- 중첩 가상화 비용: VMCS Shadowing이 없으면 중첩 가상화 시 이중 변환 오버헤드 발생
관련 기술
문서
참고 문헌
- Intel Corporation. "Intel® 64 and IA-32 Architectures Software Developer's Manual". Volume 3C: System Programming Guide.
- AMD. "AMD64 Architecture Programmer's Manual". Volume 2: System Programming.
- Adams, K. and Agesen, O. "A Comparison of Software and Hardware Techniques for x86 Virtualization". ASPLOS'06, 2006.
- Neiger, G. et al. "Intel Virtualization Technology: Hardware Support for Efficient Processor Virtualization". Intel Technology Journal, 2006.
- VMware. "Performance Evaluation of Intel EPT Hardware Assist". Technical Report.
- AMD. "AMD-V Nested Paging". White Paper, 2008.
- Barham, P. et al. "Xen and the Art of Virtualization". SOSP'03, 2003.
핵심 정리
- 하드웨어 가상화는 VT-x/AMD-V를 통해 특권 명령어 문제를 해결하고, EPT/NPT(SLAT)를 통해 메모리 주소 변환 오버헤드를 대폭 줄인다.
- VMX non-root 모드는 게스트 OS가 Ring 0으로 인식되면서도 실제로는 제한된 특권으로 동작하도록 하여, 기존 OS 수정 없이 가상 머신을 실행할 수 있게 한다.
- EPT/NPT는 2단계 주소 변환(GVA→GPA→HPA)을 하드웨어로 처리하며, MMU 집약적 워크로드에서 최대 48~600% 성능 향상을 제공한다.
- VT-d/AMD-Vi를 통한 I/O 가상화는 PCI 패스스루와 SR-IOV로 네이티브급 I/O 성능을 달성하며, APICv/AVIC는 인터럽트 처리 오버헤드를 줄인다.
- 현대 하이퍼바이저(KVM, Xen, Hyper-V 등)는 SLAT를 필수적으로 요구하며, VMCS Shadowing을 통해 중첩 가상화 성능을 최적화한다.