입출력메모리관리유닛
Input–output memory management unit![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/MMU_and_IOMMU.svg/282px-MMU_and_IOMMU.svg.png)
입출력 메모리 관리 유닛(, IOMMU)은 컴퓨팅에서 직접 메모리 접근이 가능한(DMA 지원) I/O 버스를 메인 메모리에 연결하는 메모리 관리 유닛(MMU)입니다. CPU에서 볼 수 있는 가상 주소를 물리적 주소로 변환하는 기존 MMU와 마찬가지로 IOMMU는 장치에서 볼 수 있는 가상 주소(이 컨텍스트에서 장치 주소 또는 메모리 매핑된 I/O 주소라고도 함)를 물리적 주소로 매핑합니다. 일부 장치는 결함이 있거나 악의적인 장치로부터 메모리 보호를 제공하기도 합니다.
IOMMU의 예로는 AGP 및 PCI Express 그래픽 카드가 Intel Architecture 및 AMD 컴퓨터에서 사용하는 GART(Graphics Address remapping Table)가 있습니다.
x86 아키텍처에서는 CPU와 PCH(Platform Controller Hub) 사이에 노스브리지와 사우스브리지의 기능을 분할하기 전에는 CPU가 아닌 칩셋이 I/O 가상화를 수행했습니다.[1][2]
이점
메모리(DMA)의 직접적인 물리적 주소 지정과 비교하여 IOMMU를 갖는 것의 장점은 다음과[citation needed] 같습니다.
- IOMMU는 연속적인 가상 주소를 분할된 기본 물리 주소에 매핑하므로 물리 메모리에서 연속적인 메모리 영역을 할당할 필요가 없습니다. 따라서 때때로 벡터 I/O(산란 수집 목록)의 사용을 피할 수 있습니다.
- 전체 물리적 메모리를 처리할 만큼 충분히 긴 메모리 주소를 지원하지 않는 장치도 IOMMU를 통해 전체 메모리를 처리할 수 있으며, 주변 장치의 주소 지정 가능한 메모리 공간으로 버퍼를 복사하는 것과 관련된 오버헤드를 피할 수 있습니다.
- 메모리는 DMA 공격을 시도하는 악성 장치 및 잘못된 메모리 전송을 시도하는 결함이 있는 장치로부터 보호됩니다. 장치는 메모리에 대해 명시적으로 할당(맵)되지 않은 메모리를 읽거나 쓸 수 없기 때문입니다. 메모리 보호는 CPU에서 실행되는 OS(그림 참조)가 MMU와 IOMMU를 모두 독점적으로 제어한다는 사실에 근거합니다. 장치는 물리적으로 구성된 메모리 관리 테이블을 우회하거나 손상시킬 수 없습니다.
- 가상화에서 게스트 운영 체제는 가상화를 위해 특별히 제작되지 않은 하드웨어를 사용할 수 있습니다. 그래픽 카드와 같은 고성능 하드웨어는 DMA를 사용하여 메모리에 직접 액세스합니다. 가상 환경에서는 모든 메모리 주소가 가상 시스템 소프트웨어에 의해 다시 매핑되므로 DMA 장치가 실패합니다. IOMMU는 이 재매핑을 처리하여 게스트 운영 체제에서 네이티브 디바이스 드라이버를 사용할 수 있습니다.
- IOMMU는 또한 표준 메모리 주소 재매핑과 유사한 방식으로 하드웨어 인터럽트 재매핑을 수행합니다.
- 주변 메모리 페이징은 IOMMU에 의해 지원될 수 있습니다. PCI-SIG PCIe 주소 변환 서비스(ATS) PRI(Page Request Interface) 확장을 사용하는 주변 장치는 메모리 관리자 서비스의 필요성을 감지하고 신호를 보낼 수 있습니다.
포트 I/O가 메모리 주소 공간과 구별되는 주소 공간인 시스템 아키텍처의 경우 CPU가 I/O 포트를 통해 디바이스와 통신할 때 IOMMU가 사용되지 않습니다. 포트 I/O와 메모리가 적절한 주소 공간에 매핑된 시스템 아키텍처에서 IOMMU는 포트 I/O 액세스를 변환할 수 있습니다.
단점들
메모리의 직접적인 물리적 주소 지정과 비교하여 IOMMU를 가지는 단점은 다음과 같습니다.[4]
- 번역 및 관리 오버헤드로 인한 성능 저하(예: 페이지 테이블 이동).
- 추가된 I/O 페이지(번역) 테이블에 대한 물리적 메모리 사용량입니다. 이는 테이블을 프로세서와 공유할 수 있는 경우 완화될 수 있습니다.
- 페이지 테이블 크기를 줄이려면 많은 IOMMU의 세분성이 메모리 페이징(흔히 4096바이트)과 같으므로 DMA 공격에 대한 보호가 필요한 각 작은 버퍼를 페이지 정렬하고 장치에 표시하기 전에 0으로 설정해야 합니다. OS 메모리 할당 복잡성으로 인해 장치 드라이버가 민감한 데이터 구조에 바운스 버퍼를 사용해야 하므로 전체 성능이 저하됩니다.
가상화
운영 체제가 가상 시스템 내부에서 실행 중인 경우(예: Xen 및 KVM과 같이 반가상화를 사용하는 시스템 포함) 일반적으로 가상 시스템이 액세스하는 메모리의 호스트-물리적 주소를 알지 못합니다. 이로 인해 게스트 OS가 게스트 물리 주소를 사용하여 DMA(Direct Memory Access)를 수행하도록 하드웨어에 지시하려고 하면 메모리가 손상될 가능성이 높기 때문에 컴퓨터 하드웨어에 직접 액세스하기가 어렵습니다. 하드웨어가 지정된 가상 시스템의 게스트 물리적 주소와 호스트 물리적 주소 간의 매핑에 대해 알지 못하기 때문입니다. 하이퍼바이저나 호스트 OS가 I/O 작업에 개입하여 번역을 적용하면 손상을 피할 수 있습니다. 그러나 이 방법은 I/O 작업에 지연을 초래합니다.
IOMMU는 게스트 물리적 주소를 호스트 물리적 주소에 매핑하는 데 사용되는 동일한(또는 호환되는) 변환 테이블에 따라 하드웨어에서 액세스하는 주소를 다시 매핑하여 이 문제를 해결합니다.[5]
공개사양
- AMD는 AMD-Vi라고 불리는 IOMMU 기술에 대한 사양을 발표했습니다.[6][7]
- IBM 제공 확장 제어 프로그램 지원: 가상 스토리지 확장(ECPS):43xx 라인의 VSE) 모드[8]; 채널 프로그램은 가상 주소를 사용했습니다.
- 인텔은 IOMMU 기술에 대한 사양을 Directed I/O, 약칭 VT-d용 가상화 기술(Virtualization Technology for Directed I/O)로 발표했습니다.[9]
- Sun IOMMU에 대한 정보는 Solaris Developer Connection의 DVMA(Device Virtual Memory Access) 섹션에 게시되었습니다.[10]
- IBM Translation Control Entry(TCE)는 IBM eServer pSeries 690의 논리적 파티션 보안이라는 문서에 설명되어 있습니다.[11]
- PCI-SIG는 SR-IOV(Single Root I/O Virtualization) 및 ATS(Address Translation Services)라는 용어로 관련 작업을 수행합니다. 이들은 이전에는 별개의 사양으로 취급되었으나, PCI Express 5.0을 기점으로 PCI Express Base 사양으로 이동되었습니다.[12]
- ARM은 가상화 아키텍처를 보완하기 위해 IOMMU 버전을 SMU([13]System Memory Management Unit)로 정의합니다.[14]
참고 항목
참고문헌
- ^ "Intel platform hardware support for I/O virtualization". intel.com. 2006-08-10. Archived from the original on 2007-01-20. Retrieved 2014-06-07.
- ^ "Desktop Boards: Compatibility with Intel Virtualization Technology (Intel VT)". intel.com. 2014-02-14. Retrieved 2014-06-07.
- ^ "Physical Address Extension — PAE Memory and Windows". Microsoft Windows Hardware Development Central. 2005. Retrieved 2008-04-07.
- ^ Muli Ben-Yehuda; Jimi Xenidis; Michal Ostrowski (2007-06-27). "Price of Safety: Evaluating IOMMU Performance" (PDF). Proceedings of the Linux Symposium 2007. Ottawa, Ontario, Canada: IBM Research. Retrieved 2013-02-28.
- ^ "Xen FAQ: In DomU, how can I use 3D graphics". Archived from the original on 2008-10-02. Retrieved 2006-12-12.
- ^ "AMD I/O Virtualization Technology (IOMMU) Specification Revision 2.0" (PDF). amd.com. 2011-03-24. Retrieved 2014-01-11.
- ^ "AMD I/O Virtualization Technology (IOMMU) Specification" (PDF). amd.com. Retrieved 2020-07-09.
- ^ IBM 4300 Processors Principles of Operation for ECPS:VSE Mode (PDF) (First ed.). IBM. January 1979. SA22-7070-0. Archived from the original (PDF) on 2012-03-14. Retrieved 2021-06-30.
- ^ "Intel Virtualization Technology for Directed I/O (VT-d) Architecture Specification" (PDF). Retrieved 2020-07-09.
- ^ "DVMA Resources and IOMMU Translations". Retrieved 2007-04-30.
- ^ "Logical Partition Security in the IBM eServer pSeries 690". Retrieved 2007-04-30.
- ^ "PCI Express Base Specification". Retrieved 2023-01-18.
- ^ "ARM SMMU". Retrieved 2013-05-13.
- ^ "ARM Virtualization Extensions". Archived from the original on 2013-05-03. Retrieved 2013-05-13.
외부 링크
- Bottomley, James (2004-05-01). "Using DMA". Linux Journal. Specialized System Consultants (121). Archived from the original on 2006-07-15. Retrieved 2006-08-09.
- DMA 및 IOMMU API 마스터, Embedded Linux Conference 2014, San Jose, Laurent Pinchart