맨위로가기

IOMMU

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

IOMMU는 I/O 메모리 관리 장치로, 시스템의 보안과 성능을 향상시키는 기술이다. 주요 기능으로는 큰 버퍼 관리, 주소 공간 확장, 메모리 보호 강화, 인터럽트 재매핑 등이 있으며, 특히 가상화 환경에서 게스트 OS의 메모리 접근을 제어하여 보안을 강화하고 I/O 지연을 줄이는 데 기여한다. AMD-Vi, VT-d, SMMU 등 다양한 기술 사양과 구현 사례가 존재하며, 한국에서는 가상화 환경, GPU 가상화 등에서 잠재력이 크다. IOMMU 기술 발전을 위해서는 하드웨어 지원 확대, 소프트웨어 개발, 연구 개발 투자, 전문 인력 양성이 필요하다.

더 읽어볼만한 페이지

  • 기억 장치 - EPROM
    EPROM은 자외선을 사용하여 내용을 지울 수 있는 읽기 전용 메모리이며, MOSFET의 부유 게이트를 사용하여 데이터를 저장하고, 펌웨어 업데이트가 용이하여 소량 생산에 사용되었으나 EEPROM과 플래시 메모리에 의해 대체되었다.
  • 기억 장치 - 정적 램
    정적 램(SRAM)은 전원이 공급되는 동안 데이터를 저장하며, 갱신 회로가 필요 없고 빠른 접근 속도를 가지는 휘발성 메모리 유형이다.
IOMMU
IOMMU
유형하드웨어 구성 요소
기능입출력 장치에서 직접 메모리 접근(DMA)를 메모리로 리매핑
장치 격리
보안
시스템 신뢰성 향상
다른 이름입력/출력 메모리 관리 장치
주변 장치 메모리 관리 장치 (PMMU)
용도가상화
보안
신뢰성

2. 역사적 배경

IOMMU 기술은 여러 기업에서 개발되었다. 어드밴스드 마이크로 디바이시스하이퍼트랜스포트 아키텍처에서의 IOMMU 기술 사양을 발표했다.[22] 인텔은 IOMMU 사양을 VT-d (Virtualization Technology for Directed I/O)로 발표했다.[23] 썬 마이크로시스템즈의 IOMMU는 Solaris Developer Connection의 DVMA(Device Virtual Memory Access)로 발표되었다.[24] IBM의 IOMMU는 TCE(Translation Control Entry)라는 이름의 문서가 있다.[25] PCI-SIG에서는 관련되는 부분을 I/O 가상화 (IOV)[26]와 Address Translation Services (ATS)라고 부르고 있다.

2. 1. 주요 기업의 IOMMU 기술 개발

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

3. 주요 기능 및 특징

IOMMU는 CPU가 장치와 DMA이 아닌 포트 맵 I/O로 통신하는 경우에는 사용되지 않는다.[20]

IOMMU 사용 시 단점은 다음과 같다.


  • IOMMU에 의한 변환과 관리로 성능 저하가 나타난다.
  • I/O용 페이지 테이블을 작성해야 하므로 물리 메모리가 소비된다. 멀티프로세서 환경에서 프로세서 간 I/O용 페이지 테이블을 공유할 수 있다면, 이 문제는 다소 완화된다.

3. 1. 메모리 보호

IOMMU가 물리 주소를 직접 사용하는 경우와 비교했을 때 다음과 같은 이점이 있다.

  • 큰 버퍼를 확보할 때 물리적으로 연속적일 것을 보장할 필요가 없다. IOMMU가 연속적인 가상 주소와 분할된 물리 주소의 매핑을 수행한다.
  • 주 기억 메모리 전체를 지정할 수 있을 정도의 주소 폭을 가지지 않는 주변 기기(버스)의 경우, IOMMU를 사용하면 메모리 상 어디에 버퍼가 있든 접근할 수 있게 된다. 이로 인해 주변 기기가 접근할 수 있는 범위에 있는 버퍼와 실제 버퍼 사이에서 메모리 복사를 할 필요가 없어진다.
  • 예를 들어, 최근 x86 계열 프로세서는 PAE 기능을 통해 4GiB 이상의 메모리 공간을 처리할 수 있다. 그러나 32비트 PCI 장치는 4GiB를 넘는 주소에 있는 메모리에 단순하게 접근할 수 없다. IOMMU가 없는 경우, OS는 더블 버퍼링(Windows 용어) 또는 바운스 버퍼(Linux 용어)라고 불리는 시간이 걸리는 처리를 필요로 한다.
  • 메모리 보호 기능에 의해, 명시적으로 접근 권한이 없으면 장치에서 메모리에 접근할 수 없다. 이로 인해 장치의 오동작이나 악의적인 장치로부터 메모리를 보호한다. IOMMU의 설정은 CPU에서 동작하는 OS가 수행하므로, 장치 측에서 설정할 수 없다.
  • 가상화에서는 게스트 OS가 IOMMU를 직접 제어해서는 안 된다.
  • 아키텍처에 따라서는, IOMMU가 인터럽트의 재매핑도 수행한다.


IOMMU는 CPU가 장치와 (DMA가 아닌) 포트 맵 I/O로 통신하는 경우에는 사용되지 않는다.

4. 장점

IOMMU는 직접 메모리 접근(DMA)을 사용하는 장치가 시스템 메모리에 접근하는 방식을 관리하여 다양한 이점을 제공한다. 주요 장점은 다음과 같다.


  • 연속적인 메모리 할당: IOMMU는 물리적으로 연속되지 않은 메모리 영역을 연속적인 가상 주소로 매핑하여, 장치가 큰 버퍼를 쉽게 사용할 수 있도록 한다.
  • 주소 공간 확장: PAE 기능을 통해 4GiB 이상의 메모리 공간을 처리하는 x86 프로세서 환경에서, 32비트 PCI 장치와 같이 주소 공간이 제한된 장치도 IOMMU를 통해 전체 메모리 주소 공간에 접근할 수 있다.
  • 메모리 보호 강화: IOMMU는 장치가 허가 없이 메모리에 접근하는 것을 방지하여 시스템 보안을 강화한다. (DMA 공격 방지, 하드웨어 인터럽트 재매핑 등)


이러한 장점들은 연속적인 메모리 할당, 주소 공간 확장, 메모리 보호 강화 등의 하위 섹션에서 더 자세히 설명된다.

4. 1. 연속적인 메모리 할당

IOMMU를 사용하면 다음과 같은 장점이 있다.

  • 큰 버퍼를 확보할 때 물리적으로 연속적일 필요가 없다. IOMMU가 연속적인 가상 주소와 분할된 물리 주소의 매핑을 수행한다.
  • 주 기억 메모리 전체를 지정할 수 있을 정도의 주소 폭을 가지지 않는 주변 기기(버스)의 경우, IOMMU를 사용하면 메모리 상 어디에 버퍼가 있든 액세스할 수 있게 된다. 이로 인해 주변 기기가 액세스할 수 있는 범위에 있는 버퍼와 실제 버퍼 사이에서 메모리 복사를 할 필요가 없어진다.
  • 예를 들어, 최근 x86 계열 프로세서는 PAE 기능을 통해 4GiB 이상의 메모리 공간을 처리할 수 있다. 그러나 32비트 PCI 장치는 4GiB를 넘는 주소에 있는 메모리에 단순하게 액세스할 수 없다. IOMMU가 없는 경우, OS는 더블 버퍼링(윈도)이나 바운스 버퍼(리눅스)라고 불리는 시간이 걸리는 처리를 해야 한다.

4. 2. 주소 공간 확장


  • IOMMU는 큰 버퍼를 확보할 때 물리적으로 연속적일 필요가 없도록 해준다. IOMMU가 연속적인 가상 주소와 분할된 물리 주소의 매핑을 수행하기 때문이다.
  • 주 기억 메모리 전체를 지정할 수 있을 정도의 주소 폭을 가지지 않는 주변 기기(버스)의 경우에도, IOMMU를 사용하면 메모리 상 어디에 버퍼가 있든 액세스할 수 있다. இதனால் 주변 기기가 액세스할 수 있는 범위에 있는 버퍼와 실제 버퍼 사이에서 메모리 복사를 할 필요가 없어진다.
  • 예를 들어, 최근 x86 계열 프로세서는 PAE 기능을 통해 4GiB 이상의 메모리 공간을 처리할 수 있다. 그러나 32비트 PCI 장치는 4GiB를 넘는 주소에 있는 메모리에 접근할 수 없다. IOMMU가 없는 경우, OS는 더블 버퍼링(윈도우) 또는 바운스 버퍼(리눅스)라고 불리는 시간이 걸리는 처리를 해야 한다.

4. 3. 메모리 보호 강화

IOMMU를 사용하면 다음과 같은 이점 덕분에 메모리 보호가 강화된다.

  • 악의적/오작동 장치로부터 보호: 메모리 보호 기능을 통해, 명시적으로 접근 권한이 부여되지 않은 장치는 메모리에 접근할 수 없다. 이는 장치의 오동작이나 악의적인 장치로부터 메모리를 보호한다. IOMMU 설정은 CPU에서 동작하는 OS가 수행하며, 장치 자체에서는 설정할 수 없다.[3]
  • 인터럽트 재매핑: 일부 아키텍처에서 IOMMU는 하드웨어 인터럽트 재매핑을 수행하여 보안을 강화한다.
  • DMA 공격 방지: 장치가 명시적으로 할당(매핑)되지 않은 메모리를 읽거나 쓸 수 없기 때문에, DMA 공격을 시도하는 악의적인 장치와 잘못된 메모리 전송을 시도하는 결함 있는 장치로부터 메모리를 보호한다.
  • 가상화 지원 강화: 하드웨어 지원 가상화에서, 게스트 운영 체제가 가상화를 위해 특별히 제작되지 않은 하드웨어를 사용할 수 있다. IOMMU는 게스트 운영체제의 메모리 주소 재매핑을 처리하여 기본 장치 드라이버를 사용할 수 있도록 지원한다. 가상화 환경에서 게스트 OS는 IOMMU를 직접 제어할 수 없다.

5. 단점

IOMMU를 사용하면 몇 가지 단점이 있다.[27][4][20]


  • IOMMU에 의한 변환 및 관리로 인해 성능 저하가 나타날 수 있다.
  • I/O용 페이지 테이블을 만들어야 하기 때문에 물리 메모리가 소비된다. 멀티프로세서 환경에서는 프로세서 간 I/O용 페이지 테이블을 공유하여 문제를 완화할 수 있다.
  • 페이지 테이블 크기를 줄이기 위해 IOMMU 세분성은 보통 메모리 페이징과 같은 4096바이트이다. 이 때문에 DMA 공격을 막으려면 작은 버퍼들을 페이지 정렬하고 0으로 채워야 한다. 또한, OS 메모리 할당 복잡성으로 인해 장치 드라이버가 바운스 버퍼를 사용해야 해서 전체 성능이 저하된다.

5. 1. 성능 저하

IOMMU를 사용할 때의 단점은 다음과 같다.[27][4][20]

  • 변환 및 관리 오버헤드로 인한 성능 저하가 발생한다. 예를 들어 페이지 테이블 검색과 같은 과정이 필요하다.
  • I/O용 페이지 테이블을 추가로 작성해야 하므로 물리 메모리가 소모된다. 이 문제는 멀티프로세서 환경에서 프로세서 간에 I/O용 페이지 테이블을 공유할 수 있다면 어느 정도 완화될 수 있다.
  • 페이지 테이블 크기를 줄이기 위해 많은 IOMMU의 세분성은 메모리 페이징과 동일하며(대개 4096바이트), DMA 공격으로부터 보호해야 하는 각 작은 버퍼는 장치에 표시되기 전에 페이지 정렬되고 0으로 채워져야 한다. OS 메모리 할당 복잡성으로 인해 장치 드라이버는 민감한 데이터 구조에 대해 바운스 버퍼를 사용해야 하므로 전체 성능이 저하된다.

5. 2. 추가적인 메모리 소모

IOMMU를 사용할 때의 단점은 다음과 같다.[27][4][20]

  • 변환 및 관리 오버헤드로 인해 성능 저하가 발생한다. (예: 페이지 테이블 검색)
  • I/O용 페이지 테이블을 추가로 작성해야 하므로 물리 메모리가 소모된다. 이 문제는 멀티프로세서 환경에서 프로세서 간 테이블을 공유할 수 있으면 완화될 수 있다.
  • 페이지 테이블 크기를 줄이기 위해 많은 IOMMU의 세분성은 메모리 페이징과 동일하며(대개 4096바이트), DMA 공격으로부터 보호해야 하는 각 작은 버퍼는 장치에 표시되기 전에 페이지 정렬되고 0으로 채워져야 한다. OS 메모리 할당 복잡성으로 인해 장치 드라이버는 민감한 데이터 구조에 대해 바운스 버퍼를 사용해야 하므로 전체 성능이 저하된다.

6. IOMMU와 가상화

운영 체제가 Xen 등의 가상화 소프트웨어 상에서 동작하는 경우, 각 운영 체제는 자신이 접근하고 있는 물리 주소를 알지 못한다. 그렇기에 주변 장치에 DMA을 지시하더라도 직접적으로 물리 주소를 지정하는 것은 불가능하다. 실제로는 가상 머신이 입출력 조작에 대하여 변환을 하고 있어 입출력 조작 지연이 발생하는 원인이 되고 있다.

IOMMU는 게스트 OS와 주변 장치가 접근하는 주소를 매핑하여 이 문제를 해결한다.[28]

6. 1. 게스트 OS 메모리 관리

운영 체제가 젠 등의 가상 머신 상에서 동작하는 경우, 각 운영 체제는 자신이 접근하고 있는 물리 주소를 알지 못한다. 그렇기 때문에 주변 장치에 DMA을 지시하더라도 직접적으로 물리 주소를 지정하는 것은 불가능하다. 실제로는 가상 머신이 입출력 조작에 대하여 변환을 하고 있어 입출력 조작 지연이 발생하는 원인이 되고 있다.

IOMMU는 게스트 OS와 주변 장치가 접근하는 주소를 매핑하여 이 문제를 해결한다.[28] 가상 머신 내에서 운영 체제가 실행될 때, 반가상화를 사용하는 젠 및 KVM과 같은 시스템을 포함하여, 일반적으로 해당 운영 체제가 접근하는 메모리의 호스트 물리 주소를 알지 못한다. 이는 컴퓨터 하드웨어에 대한 직접 접근을 어렵게 만든다. 게스트 운영 체제가 게스트 물리 주소를 사용하여 하드웨어에 DMA를 수행하도록 지시할 경우, 하드웨어가 주어진 가상 머신에 대한 게스트 물리 주소와 호스트 물리 주소 간의 매핑을 알지 못하므로 메모리가 손상될 수 있기 때문이다. 하이퍼바이저 또는 호스트 운영 체제가 I/O 작업에 개입하여 변환을 적용하면 이러한 손상을 방지할 수 있지만, 이 방식은 I/O 작업에 지연을 발생시킨다.

IOMMU는 하드웨어가 접근하는 주소를 게스트 물리 주소에서 호스트 물리 주소로 매핑하는 데 사용되는 동일한 (또는 호환 가능한) 변환 테이블에 따라 재매핑함으로써 이 문제를 해결한다.[5]

6. 2. I/O 지연 감소

가상 머신에서 운영 체제가 실행될 때, 반가상화를 사용하는 Xen 및 KVM과 같은 시스템을 포함하여, 일반적으로 해당 운영 체제가 접근하는 메모리의 호스트 물리 주소를 알지 못한다. 이는 컴퓨터 하드웨어에 대한 직접 접근을 제공하는 것을 어렵게 만든다. 게스트 운영 체제가 게스트 물리 주소를 사용하여 하드웨어에 직접 메모리 접근(DMA)을 수행하도록 지시하려 할 경우, 하드웨어가 주어진 가상 머신에 대한 게스트 물리 주소와 호스트 물리 주소 간의 매핑에 대해 알지 못하므로 메모리가 손상될 수 있기 때문이다. 하이퍼바이저 또는 호스트 운영 체제가 I/O 작업에 개입하여 변환을 적용하면 이러한 손상을 방지할 수 있으나, 이 방식은 I/O 작업에 지연을 발생시킨다.

IOMMU는 하드웨어가 접근하는 주소를 게스트 물리 주소를 호스트 물리 주소로 매핑하는 데 사용되는 동일한 (또는 호환 가능한) 변환 테이블에 따라 재매핑함으로써 이 문제를 해결한다.[5]

7. 기술 사양 및 구현 사례


  • IBM은 43xx 라인에서 Extended Control Program Support: Virtual Storage Extended (ECPS:VSE) 모드를 제공했으며, 채널 프로그램은 가상 주소를 사용했다.[8]
  • 의 IOMMU 정보는 Solaris Developer Connection의 Device Virtual Memory Access (DVMA) 섹션에 게시되었다.[10]
  • IBM의 Translation Control Entry (TCE)는 IBM eServer pSeries 690의 Logical Partition Security 문서에서 설명되었다.[11]
  • PCI-SIG는 Single Root I/O Virtualization (SR-IOV) 및 Address Translation Services (ATS)라는 용어 하에 관련 작업을 수행하며, 이는 이전에는 별도의 사양으로 다루어졌지만, PCI Express 5.0부터는 PCI Express Base Specification으로 이동되었다.[12]
  • ARM은 가상화 아키텍처를 보완하기 위해 IOMMU 버전을 System Memory Management Unit (SMMU)로 정의한다.[13][14]

7. 1. AMD-Vi

어드밴스드 마이크로 디바이시스하이퍼트랜스포트 아키텍처에서 IOMMU 기술 사양인 AMD-Vi를 발표했다.[6][7]

7. 2. VT-d

인텔은 IOMMU 기술에 대한 사양을 VT-d (Virtualization Technology for Directed I/O)로 발표했다.[23][9]

7. 3. 기타 기술

AGPPCI 익스프레스 그래픽 카드에 사용되는 GART(Graphics Address Remapping Table)가 IOMMU의 예시이다.[22]

여러 기업들이 IOMMU 기술을 발표했다.

기업기술 명칭설명
AMDAMD-Vi하이퍼트랜스포트 아키텍처에서의 IOMMU 기술 사양[15]
인텔VT-dIOMMU 사양 (Virtualization Technology for Directed I/O)[16]
썬 마이크로시스템즈DVMA (Device Virtual Memory Access)Solaris Developer Connection에 관련 정보 게시[17]
IBMTCE (Translation Control Entry)eServer pSeries 690의 Logical Partition Security 문서에서 설명[11]
PCI-SIGI/O 가상화 (IOV)[19], Address Translation Services (ATS)관련 작업 수행. PCI Express 5.0부터는 PCI Express Base Specification으로 이동[12]
ARMSMMU (System Memory Management Unit)[13]가상화 아키텍처 보완[14]



x86 IOMMU에 대해서는 x86 가상화#칩셋도 참고할 수 있다.

참조

[1] 웹사이트 Intel platform hardware support for I/O virtualization http://www.intel.com[...] intel.com 2006-08-10
[2] 웹사이트 Desktop Boards: Compatibility with Intel Virtualization Technology (Intel VT) http://www.intel.com[...] intel.com 2014-02-14
[3] 웹사이트 Physical Address Extension — PAE Memory and Windows http://www.microsoft[...] Microsoft Windows Hardware Development Central 2008-04-07
[4] 간행물 Price of Safety: Evaluating IOMMU Performance https://www.kernel.o[...] IBM Research 2013-02-28
[5] 웹사이트 Xen FAQ: In DomU, how can I use 3D graphics http://wiki.xensourc[...] 2006-12-12
[6] 웹사이트 AMD I/O Virtualization Technology (IOMMU) Specification Revision 2.0 http://developer.amd[...] amd.com 2014-01-11
[7] 웹사이트 AMD I/O Virtualization Technology (IOMMU) Specification https://www.amd.com/[...] amd.com 2020-07-09
[8] manual IBM 4300 Processors Principles of Operation for ECPS:VSE Mode http://bitsavers.org[...] IBM 2021-06-30
[9] 웹사이트 Intel Virtualization Technology for Directed I/O (VT-d) Architecture Specification https://software.int[...] 2020-07-09
[10] 웹사이트 DVMA Resources and IOMMU Translations http://developers.su[...] 2007-04-30
[11] 웹사이트 Logical Partition Security in the IBM eServer pSeries 690 http://www-03.ibm.co[...] 2007-04-30
[12] 웹사이트 PCI Express Base Specification http://www.pcisig.co[...] 2023-01-18
[13] 웹사이트 ARM SMMU http://www.arm.com/p[...] 2013-05-13
[14] 웹사이트 ARM Virtualization Extensions http://www.arm.com/p[...] 2013-05-13
[15] 웹사이트 AMD I/O Virtualization Technology (IOMMU) Specification Revision 1.0 http://www.amd.com/u[...] 2006-02-01
[16] 웹사이트 Mainstreaming Server Virtualization: The Intel Approach http://www.intel.com[...] 2006-03-01
[17] 웹사이트 DVMA Resources and IOMMU Translations http://developers.su[...] 2007-04-30
[18] 웹사이트 Logical Partition Security in the IBM eServer pSeries 690 http://www-03.ibm.co[...] 2007-04-30
[19] 웹사이트 I/O Virtualization specifications http://www.pcisig.co[...] 2007-05-01
[20] 간행물 Price of Safety: Evaluating IOMMU Performance https://ols2006.108.[...] IBM Research 2007-07-02
[21] 웹사이트 Xen FAQ: In DomU, how can I use 3D graphics http://wiki.xensourc[...] 2006-12-12
[22] 웹인용 AMD I/O Virtualization Technology (IOMMU) Specification Revision 1.0 http://www.amd.com/u[...] 2006-02-01
[23] 웹인용 Mainstreaming Server Virtualization: The Intel Approach http://www.intel.com[...] 2006-03-01
[24] 웹인용 DVMA Resources and IOMMU Translations http://developers.su[...] 2007-04-30
[25] 웹인용 Logical Partition Security in the IBM eServer pSeries 690 http://www-03.ibm.co[...] 2007-04-30
[26] 웹인용 I/O Virtualization specifications http://www.pcisig.co[...] 2007-05-01
[27] 서적 Price of Safety: Evaluating IOMMU Performance https://ols2006.108.[...] IBM Research 2007-07-02
[28] 웹인용 Xen FAQ: In DomU, how can I use 3D graphics http://wiki.xensourc[...] 2006-12-12



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com