天天看點

SMMU-System Memory Management Unit

在計算機領域,輸入輸出記憶體管理單元(英語:input–output memory management unit,縮寫IOMMU)是一種記憶體管理單元(MMU),它将具有直接記憶體存取能力(可以DMA)的I/O總線連接配接至主記憶體。如傳統的MMU(将CPU可見的虛拟位址轉換為實體位址)一樣,IOMMU将裝置可見的虛拟位址(在此上下文中也稱裝置位址或I/O位址)映射到實體位址。部分單元還提供記憶體保護功能,防止故障或惡意的裝置。

ARM将其IOMMU版本定義為系統記憶體管理單元(SMMU),以補充其虛拟化架構。

IOMMU的一個例子是Intel架構和AMD計算機上使用的AGP和PCI Express顯示卡所使用的圖形位址映射表(GART)。

在x86架構将CPU與平台路徑控制器(PCH)的北橋和南橋拆分前,I/O虛拟化不是由CPU而是由晶片組執行。

SMMU-System Memory Management Unit

輸入輸出記憶體管理單元(IOMMU)與記憶體管理單元(MMU)的比較。

優點

與記憶體的直接實體尋址相比,擁有IOMMU的優勢包括:

  • 配置設定大容量記憶體區域可以不需連續的實體記憶體——IOMMU可将連續的虛拟位址映射到底層中分段的實體位址。是以,有時可以避免使用向量化I/O(分散-集中清單)::sg table。
  • 不支援尋址整個實體記憶體長度的裝置仍可通過IOMMU通路整個記憶體,避免了與外圍裝置的可尋址記憶體空間複制緩沖區有關的開銷。
    • 例如,x86計算機可以用x86處理器中的實體位址擴充(PAE)功能通路超過4GB的記憶體。但是,普通的32位PCI裝置根本無法通路4Gib範圍外的記憶體,并且是以它不能直接通路。如果沒有IOMMU,作業系統将不得不實作耗時的反彈緩沖區(也稱雙緩沖區。)
  • 記憶體得到保護,嘗試進行DMA攻擊的惡意裝置或嘗試傳輸錯誤記憶體的故障裝置無權讀寫非明确配置設定(映射)的記憶體。記憶體保護基于一項事實,CPU上運作的作業系統(見圖例)專門控制MMU和IOMMU。裝置本身無法繞過或損壞已配置的記憶體管理表。
    • 在虛拟化中,客戶機作業系統可以使用非專為虛拟化設計的硬體。諸如使用DMA直接通路記憶體的顯示卡等硬體會有更高性能。在虛拟環境中,所有記憶體位址都會被虛拟機軟體重映射,進而導緻DMA裝置遇到故障。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可以依靠将客戶機實體位址映射到主機實體位址的相同或相容轉換表重映射硬體通路位址,進而解決延遲問題。

======================================

https://zh.wikipedia.org/wiki/%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E5%8D%95%E5%85%83

系統記憶體管理單元(SMMU)負責記憶體管理的所有方面,包括緩存和記憶體虛拟化。 它為所有SoC元件提供了一個通用的記憶體視圖。 它強制實施記憶體保護和通路原理圖,同時擴充與主應用處理器提供的記憶體虛拟化服務相比對的記憶體虛拟化服務,以確定SoC的一緻安全性。 SMMU設計用于虛拟化系統,其中多個客戶作業系統由管理程式管理。

https://developer.arm.com/ip-products/system-ip/system-controllers/system-memory-management-unit

繼續閱讀