linux用戶態驅動--IOMMU(三)

在計算機領域,IOMMU(Input/Output Memory Management Unit)是一個內存管理單元(Memory Management Unit),它的作用是連接DMA-capable I/O總線(Direct Memory Access-capable I/O Bus)和主存(main memory)。傳統的內存管理單元會把CPU訪問的虛擬地址轉化成實際的物理地址。而IOMMU則是把設備(device)訪問的虛擬地址轉化成物理地址。爲了防止設備錯誤地訪問內存,有些IOMMU還提供了訪問內存保護機制。參考下圖:
在這裏插入圖片描述
IOMMU的一個重要用途是在虛擬化技術(virtualization):虛擬機上運行的操作系統(guest OS)通常不知道它所訪問的host-physical內存地址。如果要進行DMA操作,就有可能破壞內存,因爲實際的硬件(hardware)不知道guest-physical和host-physical內存地址之間的映射關係。IOMMU根據guest-physical和host-physical內存地址之間的轉換表(translation table),re-mapping硬件訪問的地址,就可以解決這個問題。

另外,在AMD的VIRTUALIZING IO THROUGH THE IO MEMORY MANAGEMENT UNIT (IOMMU)文檔中,也有一個更全面的總結圖:
在這裏插入圖片描述

原文鏈接:https://nanxiao.me/iommu-introduction/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章