입출력 메모리 관리 장치(IOMMU) 과 메모리 관리 장치 (MMU)

IOMMU (Input/Output Memory Management Unit, 입출력 메모리 관리 장치, IOMMU)는 DMA 가능한 입출력 버스주기억장치를 연결하는 메모리 관리 장치(MMU)이다. MMU가 CPU에 보이는 가상 주소물리 주소로 변환하듯이, IOMMU는 주변기기에서 보이는 가상 주소(장치 주소 또는 입출력 주소라고 부름)을 물리 주소로 변환한다. 주변기기의 오동작에서 메모리를 지키기 위해 메모리 보호 기능도 제공한다.

실제 예시와 호칭

IOMMU의 예로, AGPPCI 익스프레스의 그래픽 카드에서 사용되고 있는 GART(Graphics Address Remapping Table)가 있다.

AMD하이퍼트랜스포트 아키텍처에서의 IOMMU 기술의 방법을 공표하고 있다.[1] 인텔은 IOMMU의 방법을 VT-d (Virtualization Technology for Directed I/O)로 공표하고 있다.[2] 썬 마이크로 시스템즈의 IOMMU는 Solaris Developer Connection의 DVMA(Device Virtual Memory Access)로 공표하고 있다.[3] IBM의 IOMMU는 TCE(Translation Control Entry)라는 이름의 문서가 있다.[4] PCI-SIG 에서는 관련되는 부분을 I/O 가상화 (IOV)[5]와 Address Translation Services (ATS) 라고 부르고 있다.

x86의 IOMMU에 대해서는 x86 가상화도 참고할 것.

이점

물리 주소를 직접 사용할 때와 비교한 IOMMU의 이점은 아래와 같다.

IOMMU는 CPU가 장치와 (DMA가 아닌) 보드 맵 입출력으로 통신할 때에는 사용되지 않는다.

결점

IOMMU를 사용할 때에 결점으로써 다음의 사항이 지적되고 있다.[6]

IOMMU 와 가상화의 관계

운영 체제가 Xen 등의 가상화 소프트웨어 상에 동작하는 경우 각 운영 체제는 액세스하고 있는 물리 주소를 모른다. 그렇기에 주변기기에 DMA를 지시하도록 하여도 직접적으로 물리 주소를 지정하는 것은 불가능하다. 실제로는 가상 머신이 입출력 조작에 대하여 변환을 하고 있어 입출력 조작지연이 발생하는 원인이 되고 있다.

IOMMU는 게스트 OS와 주변기기의 액세스하는 주소의 매핑을 하기에, 이것을 해결할 수 있다.[7]

같이 보기

각주

  1. “AMD I/O Virtualization Technology (IOMMU) Specification Revision 1.0” (PDF) (영어). 2006년 2월 1일에 확인함. 
  2. “Mainstreaming Server Virtualization: The Intel Approach” (PDF) (영어). 2006년 3월 1일에 확인함. 
  3. “DVMA Resources and IOMMU Translations” (영어). 2007년 4월 30일에 확인함. 
  4. “Logical Partition Security in the IBM eServer pSeries 690” (영어). 2007년 4월 30일에 확인함. 
  5. “I/O Virtualization specifications” (영어). 2007년 5월 1일에 확인함. 
  6. Muli Ben-Yehuda, Jimi Xenidis, Michal Ostrowski (2007년 6월 27일). 《Price of Safety: Evaluating IOMMU Performance》 (PDF). Ottawa, Ontario, Canada: IBM Research. 2007년 9월 27일에 원본 문서 (PDF)에서 보존된 문서. 2007년 7월 2일에 확인함. 
  7. “Xen FAQ: In DomU, how can I use 3D graphics” (영어). 2008년 10월 2일에 원본 문서에서 보존된 문서. 2006년 12월 12일에 확인함. 

참고 문헌