I/O 가상화 및 DMA
직접 메모리 접근(DMA)은 장치가 프로세서의 개입 없이 메모리와 데이터를 주고받을 수 있도록 하며, I/O 가상화는 이를 확장하여 가상 머신 간에 물리적 장치를 안전하게 공유할 수 있도록 합니다. 이 둘은 효율적인 현대 시스템과 클라우드 시스템의 핵심입니다.
Definition
직접 메모리 접근(DMA)은 장치가 프로세서가 각 데이터를 복사할 필요 없이 주 메모리로 또는 주 메모리에서 직접 데이터를 전송하는 메커니즘이며, I/O 가상화는 여러 가상 머신 간에 물리적 I/O 장치를 안전하고 효율적으로 제공하고 공유하는 기술 집합입니다.
Scope
이 주제는 직접 메모리 접근(DMA)과 I/O 가상화를 다룹니다. DMA 컨트롤러가 대량의 데이터를 이동시키고 완료를 알리는 방법, 장치 전송을 위한 주소 변환 및 보호에서 IOMMU의 역할, 그리고 장치 에뮬레이션, 반가상화, 하드웨어 지원 패스스루와 같은 가상 머신 간 장치 공유 기술을 포함합니다. 효율적이고 안전한 장치 데이터 이동을 다루며, 기본적인 장치 제어 및 인터럽트(I/O 아키텍처 및 버스)와 저장 매체(보조 저장 장치)는 제외합니다.
Core questions
- DMA는 프로세서를 점유하지 않고 대량 데이터를 어떻게 전송합니까?
- IOMMU는 장치 전송을 위한 주소 변환 및 보호를 어떻게 제공합니까?
- 물리적 장치는 가상 머신 간에 어떻게 안전하게 공유됩니까?
- 장치 에뮬레이션, 반가상화 및 패스스루 간의 장단점은 무엇입니까?
Key concepts
- 직접 메모리 접근(DMA)
- DMA 컨트롤러 및 디스크립터
- 완료 인터럽트
- IOMMU 및 장치 주소 변환
- 장치 에뮬레이션
- 반가상화 I/O
- 장치 패스스루 및 SR-IOV
- 격리 및 보호
Key theories
- 직접 메모리 접근
- DMA 컨트롤러는 장치와 메모리 간에 데이터 블록을 자율적으로 전송하며, 완료 시에만 프로세서에 인터럽트를 발생시킵니다. 이는 I/O와 계산을 중첩시키고 고처리량 데이터 이동에 필수적입니다.
Mechanisms
DMA 전송을 위해 프로세서는 컨트롤러에 소스, 대상 및 길이를 프로그래밍한 다음, 장치가 데이터를 이동시키고 완료 인터럽트를 발생시키는 동안 다른 작업을 계속합니다. IOMMU는 장치가 사용하는 주소를 변환하고 접근을 제한하여 보호 기능을 제공하며 안전한 패스스루를 가능하게 합니다. 가상 머신은 에뮬레이트된 장치, 반가상화 드라이버 또는 직접 하드웨어 패스스루(하나의 장치가 여러 가상 기능을 제공하도록 하는 단일 루트 I/O 가상화 포함)를 통해 장치에 접근합니다.
Clinical relevance
DMA는 효율적인 I/O의 기본이며, 대량 전송 시 저장 장치 및 네트워크 장치와의 데이터 전송에서 프로세서의 부담을 덜어줍니다. I/O 가상화는 많은 가상 머신이 물리적 하드웨어를 공유하는 클라우드 컴퓨팅 및 데이터 센터에 필수적입니다. IOMMU는 공유 및 직접 장치 할당을 안전하고 빠르게 만드는 격리 기능을 제공합니다.
History
직접 메모리 접근은 프로세서로부터 데이터 이동 부담을 덜기 위해 초기 컴퓨터부터 사용되었습니다. 2000년대에 가상화가 서버 및 클라우드 컴퓨팅의 핵심이 되면서, IOMMU 및 단일 루트 I/O 가상화와 같은 하드웨어 지원이 추가되어 장치 공유 및 직접 할당을 효율적이고 안전하게 만들었습니다.
Debates
- 패스스루 성능 대 유연성
- 직접 장치 패스스루는 가상 머신에 거의 네이티브에 가까운 I/O 성능을 제공하지만, 마이그레이션 및 과다 할당에 대한 유연성을 감소시킵니다. 반면 에뮬레이트되거나 반가상화된 I/O는 더 유연하지만 느립니다. 시스템 설계자는 워크로드에 따라 이들 간의 균형을 맞춥니다.
Key figures
- John L. Hennessy
- David A. Patterson
- Abraham Silberschatz
Related topics
Seminal works
- hennessy2019
- silberschatz2018
Frequently asked questions
- IOMMU는 무엇을 합니까?
- IOMMU는 DMA 중에 장치가 사용하는 주소를 물리적 메모리 주소로 변환하고, 장치가 접근할 수 있는 메모리 영역을 제한합니다. 이는 보호 및 격리 기능을 제공하여 장치나 드라이버가 임의의 메모리를 손상시키는 것을 방지하며, 가상 머신에 장치를 안전하게 직접 할당할 수 있도록 합니다.
- DMA가 성능에 중요한 이유는 무엇입니까?
- DMA가 없으면 프로세서는 장치로 또는 장치에서 모든 단어를 복사해야 하므로, 사이클을 소모하고 느린 전송에서 지연이 발생합니다. DMA는 대량 데이터 이동을 전용 컨트롤러에 오프로드하여 프로세서가 다른 유용한 작업을 수행하고 단일 완료 인터럽트만 처리하도록 합니다.