IOMMU

IOMMU

IOMMU:input/output memory management unit。

Device的IOMMU類似於CPU的MMU。

基本介紹

  • 中文名:IOMMU
  • 外文名:input/output memory management unit
  • 類似於:CPU的MMU
  • 原因:一個是對老設備的支持,
簡介,配置要求,

簡介

對IOMMU的支持主要有兩個原因,一個是對老設備的支持,另外一個是對scatter/gather的支持。

配置要求

要在64位系統上支持32位設備,比如說網卡,如果沒有IOMMU,就需要在物理記憶體底端,也就是32位設備能夠訪問到的地方設定一個叫做"bounce buffers"的東西,如果設備要訪問高端記憶體,作業系統就要在高端記憶體和"bounce buffers"之間做一個拷貝。帶來的性能影響顯而易見。如果有了IOMMU,這個問題就迎刃而解了。在設備驅動做DMA綁定的時候,系統返回給驅動的不再是物理地址,而是核心空間的某個地址(有的書上叫做匯流排地址),傳輸的時候,這個核心空間地址會經由IOMMU單元,IOMMU將這個地址轉換為物理地址。
scatter/gather並不會帶來性能上的好處,但是會簡化設備驅動程式。例如網卡驅動在傳送包的時候,DMA綁定後,系統可能會返回給設備驅動多個不連續的物理地址,Solaris叫做cookie。這樣的話,每一個cookie都需要占用一個傳送描述符。如果系統支持IOMMU的話,系統只會返回給設備驅動一個cookie。當然了有專家提醒,因為這個原因,如果設備驅動是在沒有IOMMU的情況下開發的,在支持IOMMU的系統上是沒有問題的。但反之不然。
IOMMU除了上述功能外還加入了對虛擬化的支持。簡單來說有兩個功能,一個DMA Remapping, 另外一個是Interrupt Remapping。
IOMMU在源於SUN公司的SPARC平台,現在Intel平台及AMD平台也支持這一技術。

相關詞條

熱門詞條

聯絡我們