한국   대만   중국   일본 
IOMMU - 위키百科, 우리 모두의 百科事典 本文으로 移動

IOMMU

위키百科, 우리 모두의 百科事典.

入出力 메모리 管理 裝置( IOMMU ) 과 메모리 管理 裝置 ( MMU )

IOMMU (Input/Output Memory Management Unit, 入出力 메모리 管理 裝置, IOMMU )는 DMA 可能한 入出力 버스 主記憶裝置 를 連結하는 메모리 管理 裝置 (MMU)이다. MMU가 CPU 에 보이는 假想 住所 物理 住所 로 變換하듯이, IOMMU는 周邊機器에서 보이는 假想 住所(裝置 住所 또는 入出力 住所라고 부름)을 物理 住所로 變換한다. 周邊機器의 吳動作에서 메모리를 지키기 爲해 메모리 保護 機能도 提供한다.

實際 例示와 呼稱 [ 編輯 ]

IOMMU의 例로, AGP PCI 익스프레스 의 그래픽 카드에서 使用되고 있는 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가 이어져 있게끔 假想 住所와 나뉜 物理 住所의 매핑을 實行한다.
  • 주기억 메모리 全體에 指定할 수 있을 만큼의 住所 幅을 가지지 않는 周邊機器(버스)일 때에는 IOMMU를 使用하면 메모리 위에 어디든 버퍼가 있어도 액세스가 可能하게 된다. 이것에 依해 周邊機器가 액세스 可能한 範圍에 있는 버퍼와 實際 버퍼 間에 메모리 複寫를 할 必要가 없어진다.
    • 例를 들면 最新 x86系列 프로세서는 PAE 機能에 依해 4GB 以上의 메모리 空間을 管理한다. 하지만 32비트의 PCI 裝置는 4GB를 넘는 住所에 있는 메모리에는 單純히 액세스할 수 없다. IOMMU가 없을 때에 運營 體制 는 더블 버퍼링(윈도)이나 바운스 버퍼(리눅스)로 불리는 時間이 걸리는 處理를 必要로 한다.
  • 메모리 保護 機能에 依해 明示的으로 액세스 權限이 없다면 裝置에서 메모리에 액세스할 수 없다. 이것에 依해 裝置의 吳動作이나 惡性 裝置로부터 메모리를 保護한다. IOMMU의 設定은 CPU 上에서 動作하는 OS가 實行하기에 裝置에서 設定할 수는 없다.
    • 가상화 에서는 게스트 OS가 IOMMU를 直接 制御하게 해서는 안 된다.
    • 아키텍처에 따라 IOMMU가 인터럽트 의 再賣핑을 實行한다.

IOMMU는 CPU가 裝置와 (DMA가 아닌) 보드 맵 入出力 으로 通信할 때에는 使用되지 않는다.

缺點 [ 編輯 ]

IOMMU를 使用할 때에 缺點으로써 다음의 事項이 指摘되고 있다. [6]

  • IOMMU에 依한 變換과 管理에 依해 性能 低下가 나타난다.
  • I/O用의 페이지 테이블 을 作成할 必要가 있기에 物理 메모리가 그만큼 消費된다 멀티 프로세서 機器에서 프로세서 間의 I/O用 페이지 테이블을 共有 可能할 때에 問題는 조금 緩和된다.

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日에 確認함 .  

參考 文獻 [ 編輯 ]

  • Bottomley, James (2004年 5月 1日). “Using DMA” . 《Linux Journal》 (Specialized Systems Consultants). 2006年 7月 15日에 原本 文書 에서 保存된 文書 . 2006年 8月 9日에 確認함 .