基本介紹
- 中文名:輸入輸出記憶體管理單元
- 外文名:input–output memory management unit
簡介,優點,缺點,虛擬化,已公布規範,參見,
簡介
在計算機領域,輸入輸出記憶體管理單元(英語:input–output memory management unit,縮寫IOMMU)是一種記憶體管理單元(MMU),它將具有直接存儲器訪問能力(可以DMA)的I/O匯流排連線至主記憶體。如傳統的MMU(將CPU可見的虛擬地址轉換為物理地址)一樣,IOMMU將設備可見的虛擬地址(在此上下文中也稱設備地址或I/O地址)映射到物理地址。部分單元還提供記憶體保護功能,防止故障或惡意的設備。
IOMMU的一個例子是Intel架構和AMD計算機上使用的AGP和PCI Express顯示卡所使用的圖形地址映射表(GART)。
優點
與記憶體的直接物理定址相比,擁有IOMMU的優勢包括:
- 分配大容量記憶體區域可以不需連續的物理記憶體——IOMMU可將連續的虛擬地址映射到底層中分段的物理地址。因此,有時可以避免使用向量化I/O(分散-集中列表)。
- 不支持定址整個物理記憶體長度的設備仍可通過IOMMU訪問整個記憶體,避免了與外圍設備的可定址記憶體空間複製緩衝區有關的開銷。
記憶體得到保護,嘗試進行DMA攻擊的惡意設備或嘗試傳輸錯誤記憶體的故障設備無權讀寫非明確分配(映射)的記憶體。記憶體保護基於一項事實,CPU上運行的作業系統(見圖例)專門控制MMU和IOMMU。設備本身無法繞過或損壞已配置的記憶體管理表。
在某些架構中,IOMMU也執行硬體中斷重映射,工作方式類似標準記憶體地址重映射。
外設記憶體分頁可由IOMMU支持。使用PCI-SIG PCIe地址轉換服務(ATS)分頁請求接口(PRI)擴展的外設可以檢測和表示需要記憶體管理服務。
對於連線埠I/O的地址空間與記憶體的記憶體地址空間不同的系統架構,CPU與設備通過I/O連線埠通信時不使用。如果連線埠I/O與記憶體的地址空間被映射到一個合適的空間,則可以用IOMMU轉換I/O訪問。
缺點
與記憶體的直接物理定址相比,IOMMU的缺點包括:
- 性能因翻譯和管理開銷(例如頁表變動)有所下降。
- 增加的I/O標籤頁表(轉換表)消耗一些物理記憶體。如果該表可與處理器共享,則此問題可以緩解。
虛擬化
當作業系統在虛擬機內運行時(包括使用半虛擬化的系統,例如Xen),其通常不知道它要訪問的記憶體的主機物理地址。這使其難以直接訪問計算機硬體,因為如果客戶機系統嘗試用客戶機的物理地址進行直接存儲器訪問(DMA)來吩咐硬體,其可能損壞記憶體數據,因為硬體不知道給定虛擬機客戶機物理地址與主機物理地址之間的映射關係。而由管理程式或主機作業系統介入I/O操作來套用翻譯則可以避免損壞,但會增加此I/O操作的延遲。
IOMMU可以依靠將客戶機物理地址映射到主機物理地址的相同或兼容轉換表重映射硬體訪問地址,從而解決延遲問題。
已公布規範
- AMD已出版一份IOMMU技術規範。
- 有關太陽微系統(Sun)IOMMU的信息已在Solaris Developer Connection的設備虛擬記憶體訪問(DVMA)部分發布。
- IBMTranslation Control Entry(TCE) 在eServerpSeries690中標題為“邏輯分區安全”的文檔中進行了描述。
- PCI-SIG對I/O虛擬化(IOV)和地址轉換服務(ATS)有相關工作。
- ARM將其IOMMU版本定義為系統記憶體管理單元(SMMU),以補充其虛擬化架構。
參見
- 異構系統架構(HSA)
- IOMMU支持的硬體列表
- 存儲器映射輸入輸出
- 存儲器保護