PCIe, DMA & IO Virtualization
고성능 주변 장치 간의 물리적 장벽을 허무는 PCIe 인터커넥트와, 가상화 환경에서도 하드웨어 자원에 직접 접근 가능케 하는 IOMMU 및 SR-IOV 기술을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts7 min read
1. Overview
PCIe, DMA 및 IO 가상화(PCIe, DMA & IO Virtualization, PIV)는 고속 하드웨어 장치(GPU, NVMe, 테나급 NIC 등)를 소프트웨어 환경, 특히 클라우드 가상화 환경에 '물리적으로 직접 꽂아주는' 최첨단 인터페이스 과학입니다.
전통적인 I/O는 운영체제를 거치며 많은 지연을 초래합니다. 학습자는 데이터가 지나가는 물리적 레인(Lane)의 확장성을 가진 **PCI Express (PCIe)**의 물리적 구조를 배웁니다. 또한, 가상 머신(VM)이 하드웨어에 직접 명령을 내릴 때 주소 경계를 보호하는 IOMMU와, 하나의 물리적 하드웨어를 수십 개의 가상 장치로 쪼개는 SR-IOV의 원리를 익힙니다. 이를 통해 '가상화'가 단순한 소프트웨어 흉내내기를 넘어, 하드웨어 수준에서 어떻게 '물리적 전용 통로'를 확보하는지 심층적으로 이해합니다.
2. Scope & Boundaries
In-Scope
- PCIe Architecture: 계층 구조(Transaction/Data Link/Physical), 레인(Lane) 결합 및 스위칭 물리
- DMA Protection (IOMMU): 가상 주소를 물리 주소로 사상(Mapping)하여 장치의 메모리 침범 방지
- SR-IOV Mechanics: Physical Function (PF) vs Virtual Function (VF)의 하드웨어 분할 물리
- Device Passthrough: 하이퍼바이저를 거치지 않는 'Direct Assignment' 물리 로직
Out-of-Scope
- 운영체제의 PCI/PCIe 디바이스 드라이버 소프트웨어 구현 상세
- 단순한 가상 머신 스케줄링 로직 (03. OS 영역으로 위임)
Boundaries
- PIV vs. Standard DMA: 일반 DMA가 'CPU 자원을 아끼는 것'에 집중한다면, PIV는 '가상화 격리 벽'을 뚫고 안전하게 하드웨어 성능을 전달하는 데 집중합니다.
3. Counterexample
- 단순히 "빠른 전선이다" 혹은 "가상 컴퓨터에서 그래픽카드를 쓴다"는 이해는 PIV 학습이 아닙니다. 왜 PCIe 장치가 메모리 읽기 요청을 보낼 때 IOMMU가 없으면 가상 머신의 주소가 실제 물리 램의 엉뚱한 곳을 오염시키게 되는지 수리적 사상(Mapping) 관점에서 입증할 수 있어야 하며, SR-IOV가 적용된 장치가 왜 하이퍼바이저의 소프트웨어 스위치 없이도 패킷을 특정 VM으로 '물리적 분기' 시킬 수 있는지 하드웨어 레지스터 윈도우 관점에서 설명해야 합니다.
4. Prerequisites
- Direct Memory Access (DMA) Mechanics (Basic): DMA의 기본 전송 원리 필수입니다. (02-05-02 DMA)
- Bus Communication Protocols (Recommended): 확장 버스 신호 및 규약 이해가 권장됩니다. (02-05-04 BCP)
5. Learning Map
- High-speed Lanes: PCIe의 직렬 차분 신호가 모여 거대한 대역폭을 형성하는 물리적 방식을 배웁니다.
- Address Translation Block: 장치가 보내는 '나쁜 주소'를 '착한 물리 주소'로 교정하는 IOMMU 장벽을 세웁니다.
- Hardware Fragmentation: 물리 칩 하나를 논리적으로 쪼개어 여러 VM에게 핀 번호를 나눠주는 SR-IOV 기술을 익힙니다.
- Performance Tunneling: 소프트웨어 간섭 없이 데이터가 장치에서 VM 메모리로 직접 순간 이동하는 기술을 완성합니다.
6. Learning Topics
Basic
Core: PCIe의 물리적 계층과 레인 (PCIe Foundations)
- Why to Learn: 하드웨어 가속기들이 한 클록에 기가바이트 단위의 데이터를 쏟아부을 수 있는 물리적 배경을 알기 위함입니다.
- What to Learn:
- 레인(Lane) 구성: 송/수신 차분 신호 쌍()의 물리적 결합
- 프로토콜 스택: Transaction layer(TLP)부터 Physical layer까지의 데이터 캡슐화
- Root Complex와 Endpoint: 트리 구조의 물리적 종단점 사상
- How to Learn:
- PCIe 3.0과 4.0의 레인당 대역폭 차이를 인코딩(128b/130b 등) 방식 변화와 함께 수리적 분석 실습
- 메인보드 슬롯 길이에 따라 사용 가능한 하드웨어 대역폭 한계 도출
- Implement: 데이터 크기가 주어졌을 때 필요한 최소 PCIe 레인 수와 전송 시간을 계산하는 성능 예측기
Recommended
Core: IOMMU와 DMA 주소 보호 (IOMMU Physics)
- Why to Learn: 장치가 내 메모리를 직접 만질 수 있게 허락하면서도, 남의 구역을 건드리지 못하게 하드웨어 수문장을 두기 위해서입니다.
- What to Learn:
- IOVA (I/O Virtual Address): 장치가 바라보는 가상의 주소 공간 물리
- Translation Lookaside Buffer (IOTLB): 장치용 주소 변환 캐시의 하드웨어 사상
- 격리 무결성: 잘못된 장치 접근 시 발생하는 하드웨어 폴트(Fault) 처리
- How to Learn:
- VM A와 VM B가 동일한 하드웨어를 쓸 때, IOMMU가 어떻게 메모리 페이지 테이블을 분리하여 '메모리 침범'을 물리적으로 차단하는지 작도 실습
- IOMMU 활성화 시 발생하는 전송 지연(Latency)의 물리적 비중 분석
- Implement: 장치의 요청 주소를 받아서 IOMMU 테이블에 따라 물리 주소로 치환하거나 거부하는 논리 필터
Practical
Core: SR-IOV와 하드웨어 분할 실행 (SR-IOV Mechanics)
- Why to Learn: 클라우드 서버에서 비싼 하드웨어(NIC, GPU) 하나를 낭비 없이 수십 명에게 나눠주기 위해서입니다.
- What to Learn:
- PF (Physical Function): 하드웨어 전체를 관리하는 마스터 레지스터 윈도우
- VF (Virtual Function): 최소한의 전송 기능만 담아 VM으로 넘겨주는 경량 하드웨어 복제본
- 하드웨어 큐(Queue) 할당: 각 VM에게 물리적으로 보장된 전용 채널 분배
- How to Learn:
- 네트워크 카드의 SR-IOV 기능을 켰을 때,
lspci명령어로 수십 개의 '가짜 장치'가 실제로 뜨는 하드웨어 현상 분석 실습 - VF 간의 데이터 이동이 메인 버스를 타지 않고 칩 내부에서 직접 일어나는 물리적 경로 확인
- 네트워크 카드의 SR-IOV 기능을 켰을 때,
- Implement: 사용 가능한 하드웨어 큐 리소스를 VM 수에 따라 물리적으로 배분하는 가상 자원 할당 로직
Advanced
Core: 디바이스 패스스루와 무손실 전송 (Zero-copy Pass-through)
- Why to Learn: 가상화의 오버헤드를 완전히 제거하고 리얼머신에 준하는 극한의 I/O 성능을 뽑아내기 위해서입니다.
- What to Learn:
- Passthrough: 하이퍼바이저가 하드웨어 제어권을 통째로 VM에 넘기는 물리적 위임
- Pinning: 메모리 주소를 고정하여 DMA가 가동 중에 페이지가 튀지 않게 하는 물리 보증
- Interrupt Re-mapping: 장치가 발생시킨 인터럽트를 특정 VM의 특정 가상 CPU로 물리적으로 배달하는 기술
- How to Learn:
- GPU Passthrough 환경에서 물리 인터럽트가 어떻게 가상 CPU 벡터로 배달되는지 하드웨어 게이트 시퀀스 분석 실습
- 소프트웨어 가상 인터페이스(VirtIO)와 하드웨어 패스스루의 클록 단위 성능 격차 측정
- Implement: 물리 인터럽트 번호를 가상 환경의 핸들러 주소로 실시간 사상해주는 하드웨어 게이트웨이 시뮬레이션
7. Terminology
8. References
Primary
- [P2] SWEBOK v4.0 - Computing Foundations / I/O and Interconnects — Structural standards.
- [P3] CyBOK v1.1 - Hardware Security / Peripheral and I/O Security — Virtualization & DMA isolation.
Secondary
- [PCI Express Technology] MindShare — The definitive PCIe reference.
- [VirtIO: Towards a De-Facto Standard For Virtual I/O] — Industry virtualization paper.
Industry
- [Intel: Intel Virtualization Technology for Directed I/O (VT-d)] — Official IOMMU spec.
- [AMD-Vi (IOMMU) Specification] — AMD's hardware implementation details.
9. Final Checklist
Primary
- 'PCIe 4.0 x16' 슬롯에서 낼 수 있는 이론적 최대 전송 속도를 레인당 물리 대역폭 기반으로 수리적으로 도출할 수 있는 가? (P2)
- 'IOMMU'가 꺼진 상태에서 장치의 '악의적인 DMA'가 어떻게 호스트 운영체제의 코드를 물리적으로 덮어쓸 수 있는지 위협 시나리오를 설명 가능한가? (P3)
Secondary
- 'SR-IOV' 환경에서 Virtual Function (VF) 상호 간의 데이터 기밀성이 하드웨어적으로 어떻게 보장되는지 물리적 격리 근거를 소통 가능한가?
- PCIe의 'Root Complex'가 왜 시스템 전체의 인터커넥트 허브 역할을 수행해야 하는지 물리학적 위상 구조 관점에서 증명할 수 있는 가?
Industry
- AI 학습 서버 구축 시, GPU 간의 직접 통신을 위해 PCIe 스위치나 NVLink가 왜 IOMMU 설정을 정교하게 요구하는지 보안/성능 관점에서 제안할 수 있는 가? (SFIA)
- 'Device Passthrough' 설정 후 특정 VM이 충돌했을 때, 해당 하드웨어 자원을 무력화(Reset)하여 호스트의 안전을 지키는 하드웨어 시퀀스를 기술할 수 있는 가?