[IOMMU]面向芯片/SoC驗證工程的IOMMU全景速覽

面向芯片/SoC驗證工程的IOMMU全景速覽

       摘要:面向芯片/SoC 驗證工程的 IOMMU 全景速覽:包含基礎概念、主流架構要點(ARM SMMU、Intel VT?d、RISC?V IOMMU),Linux 軟件棧關系,SoC 上的驗證方法(功能、錯誤、性能、系統化流程和覆蓋),以及一個可用的“通用 IOMMU C 參考模型”(便于接入 UVM/系統級仿真做對比/記分)。

一、IOMMU 是什么,解決什么問題

  • 作用

    • DMA 虛實地址轉換:把設備發出的 IOVA(IO 虛擬地址)轉換為物理地址(PA)或中間物理地址(IPA),并施加權限檢查(R/W/X)與內存屬性。
    • 隔離與安全:把設備劃入不同隔離域(domain),防御惡意/越界 DMA。
    • 虛擬化:兩階段翻譯(Stage?1/Stage?2),支撐來賓 OS(S1)和宿主/管理程序(S2)共管地址空間。
    • SVA(Shared Virtual Addressing):設備和進程共享同一虛擬地址空間,通常通過 PASID 識別進程上下文。
    • 端到端地址服務:配合 PCIe ATS/PRI/PASID,降低 IOTLB 缺失開銷,支持按進程頁請求。
    • 中斷重映射:將設備發出的 MSI/MSI?X 重定向到平臺中斷控制器,施加隔離。
  • 關鍵術語

    • IOVA/GVA/IPA/PA:設備看到的虛擬地址/進程虛擬地址/中間物理/最終物理地址。
    • RID/BDF、Stream ID/SSID、PASID:識別設備或其子流(substream/進程)的標識。
    • Domain/Context:一組設備共享的地址空間與權限配置。
    • IOTLB/ATC:IOMMU 側 TLB/設備側地址轉換緩存(PCIe ATS)。
    • ATS/PRI:Address Translation Service / Page Request Interface(設備在缺頁時向主機申請映射)。
    • TLBI/Sync:IOMMU TLB 失效與屏障,同步頁表更新的可見性。

二、主流架構速記

  • ARM SMMU

    • v2:以 Stream ID 映射到 Context Bank;支持 S1/S2;典型 AXI 接口。
    • v3:面向 PCIe 原生生態,Stream Table Entry(STE)→ Context Descriptor Table(CD);支持 PASID/SSID、ATS/PRI、命令隊列(CMDQ)、事件隊列(EVTQ)、PRI 隊列(PRIQ)與 MSI doorbell;TLB 失效與 CMD_SYNC 時序保證。
    • 頁表格式與權限模型近似 ARMv8 VMSA;葉子/塊映射(4K/2M/1G)。
  • Intel VT?d(DMA Remapping)

    • Root/Context/PASID 表層次,支持 Scalable Mode、Device?TLB、Posted Interrupts、基于隊列的失效指令與事件上報。
    • 可與 PCIe ATS/PRI 協同,隔離粒度到函數級(RID)或 PASID。
  • RISC?V IOMMU(1.0 規范背景)

    • 與 Sv39/Sv48 協作的兩階段翻譯;PASID/SVA;設備頁請求與錯誤上報機制;屬性/權限對齊 RISC?V MMU 語義。

三、Linux 軟件棧與調試要點

  • iommu 子系統:iommu?api、iommu?groups、domains、attach/detach。
  • 驅動:arm_smmu/arm_smmu_v3、intel?iommu、riscv?iommu。
  • VFIO/virtio?iommu、DMA?API(dma_map_*)、SVA(綁定 PASID 到 mm)。
  • 調試:dmesg 的 IOMMU faults、debugfs/sysfs(如 arm_smmu_v3 下的 cmdq/evtq 統計)、perf/ftrace 采樣缺頁/失效路徑。

四、SoC 上驗證 IOMMU 的方法

4.1 環境搭建(建議)

  • 事務源
    • PCIe 設備 BFMs/Agent(含 ATS/PRI/PASID 能力,或 AXI 主設備代理)。
    • 多主并發:不同 RID/StreamID/SSID/PASID。
  • 內存/頁表
    • 可編程 DRAM 模型,暴露頁表區域;提供“OS 代理”驅動頁表更新、IOMMU 命令隊列寫入和 TLBI。
  • 監測與對比
    • 總線監測:AXI/PCIe Monitor 獲取 IOVA 事務與 IOMMU 翻譯后的 PA 事務。
    • 參考模型:C Model 做期望翻譯;Scoreboard 比對,記錄屬性/權限/錯誤一致性。
    • 隊列/中斷監測:CMDQ/EVTQ/PRIQ 的內存寫入與 doorbell MSI;中斷控制器接收情況。

4.2 典型功能用例與覆蓋點

  • 翻譯成功路徑
    • 頁尺寸:4K/2M/1G(或平臺支持的所有塊/頁);跨頁/跨塊連續與非連續;邊界對齊/非對齊突發。
    • 權限:R/W/X 組合;設備特權/非特權;不可緩存/可緩存、內存類型/可共享性傳播。
    • Stage?1/Stage?2 各自啟停與組合;直通/旁路模式。
  • 錯誤/異常
    • 不存在頁(PTE invalid)、權限拒絕、訪問超范圍、頁表對齊錯誤、頁表循環/保留位錯誤、長度超頁、設備未配置 Context。
    • PRI/ATS 路徑:ATC 命中/未命中;PRI 請求、完成;設備在 IOMMU PRIQ 背壓/溢出處理。
    • 事件/故障上報:隊列滿、隊列指針錯誤、doorbell 丟失、MSI 映射錯誤。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94906.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94906.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94906.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jenkins全鏈路教程——Jenkins用戶權限矩陣配置

在企業級CI/CD場景中,“權限混亂”往往比“構建失敗”更致命——測試員誤刪生產流水線、實習生修改關鍵插件配置、多團隊共用賬號導致責任無法追溯……這些問題,99%都能用權限矩陣徹底解決!今天,我們不僅會拆解權限矩陣的底層邏輯…

庫函數蜂鳴器的使用(STC8)

使用庫函數控制蜂鳴器(STC8) 在STC8系列單片機中,可以通過庫函數或直接操作寄存器來控制蜂鳴器。以下是基于STC8庫函數的常用方法: GPIO板蜂鳴器 #include "GPIO.h" #include "Delay.h"void GPIO_config()…

redis8.0.3部署于mac

macOS11因版本過低,安裝redis時,Homebrew和源碼編譯兩種方式都無法成功。將操作系統升級至macOS15再安裝。Redis(Remote Dictionary Server)是一個開源的內存數據庫,遵守 BSD 協議,它提供了一個高性能的鍵值…

【和春筍一起學C++】(三十三)名稱空間的其他特性

目錄 嵌套式名稱空間 拓展——未命名的名稱空間 嵌套式名稱空間 示例代碼1: namespace electronicEquipment {namespace computer{double price 4999.0;string modelNumber;string name;}namespace ElectronicWatch{double price 99.0;string modelNumber;stri…

異步電動機負載運行特性全解析

異步電動機負載運行特性詳解 ——從空載到負載的完整分析一、為什么需要再談“負載運行” 在上一篇《感應電動機空載特性深度剖析》中,我們已經看到:空載時,若定子加額定電壓,轉子轉速 $n \approx n_s$(同步轉速&#…

使用 Ansys Discovery 進行動態設計和分析

Ansys Discovery 是一款多功能工具,為創建模型、探索仿真設計和分析解決方案提供了一個單一的交互式工作區。它允許用戶使用直接建模技術創建和修改幾何結構,定義仿真并與結果實時交互。Discovery 支持結構、流體流動、熱和電磁設計,提供直觀…

力扣熱題100-----118.楊輝三角

案例 給定一個非負整數 numRows,生成「楊輝三角」的前 numRows 行。 在「楊輝三角」中,每個數是它左上方和右上方的數的和。 示例 1: 輸入: numRows 5 輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 輸入: numRows 1 輸出: [[1]] 提示: 1 …

NTP /Chrony 網絡時間協議

一、NTP(network time protocol)網絡時間協議:實現時間同步,讓設備時間與國際標準時間保持一致設備日志、服務日志需要記錄時間分布式系統(分布式數據庫、分布式緩存、分布式儲存、消息隊列)時間戳&#xf…

VSCode 刷 LeetCode 算法題配置教程

LeetCode 在線刷題地址:https://leetcode-cn.com/ 一、安裝 Node.js 環境 LeetCode 插件依賴 node.js 運行環境,因此必須先安裝: 前往官網下載安裝:https://nodejs.cn/download/下載好的壓縮包解壓,可以看到當前文件…

非常簡單!從零學習如何免費制作一個lofi視頻

想必大家在網上會看到如下類似的音樂頻道,這類頻道都只是上傳簡單的Lo-Fi音樂帶著循環播放的背景就可以賺錢。 那么上面的效果如何實現的呢?今天做一個可以免費制作lo-Fi音樂的教程。 Lo-Fi音樂: Lo-Fi音樂是一種以低保真度和模擬音色為特點…

基于 RAUC 的 Jetson OTA 升級全攻略

📖 推薦閱讀:《Yocto項目實戰教程:高效定制嵌入式Linux系統》 🎥 更多學習視頻請關注 B 站:嵌入式Jerry 基于 RAUC 的 Jetson OTA 升級全攻略 0. 引子:常見問題 在 Jetson 平臺做 OTA 升級時,你可能會問&…

MySQL 主備(Master-Slave)復制 的搭建

一、主備架構簡介 Master(主庫):負責處理所有寫操作(INSERT/UPDATE/DELETE),并記錄二進制日志(binlog)。Slave(備庫):從主庫拉取 binlog&#xff…

【三個數絕對值排序】2022-10-10

緣由絕對值比較&#xff0c;總是跑不過怎么辦-編程語言-CSDN問答 template <class 形參> inline void 算交換(形參& a, 形參& b){ 形參 ab a - b; a - ab; b ab; } template <class 形參> void 三個升序(形參& a, 形參& b, 形參& c) {if (a…

【LoRA模型訓練】Stable Diffusion LoRA 模型秋葉訓練器詳細教程

一、工具簡介與安裝指南 1.1 秋葉 LoRA 訓練器概述 秋葉 LoRA 訓練器&#xff08;基于 Akegarasu/lora-scripts 項目&#xff09;是針對 Stable Diffusion 模型的輕量化微調工具&#xff0c;通過低秩適應&#xff08;LoRA&#xff09;技術實現高效參數微調。其核心優勢在于&a…

C++2024 年一級

1 單選題 (每題 2 分,共 30 分) 12 ? 題號 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 C C D B B D B C C C D C D B D 第 1 題 2024年10?8? &#xff0c;諾貝爾物理學獎“意外地”頒給了兩位計算機科學家約翰霍普菲爾德&#xff08;John J. Hopfield&#xff09;和杰 弗??…

react-window

下面&#xff0c;我們來系統的梳理關于 React 虛擬化列表&#xff1a;react-window 的基本知識點&#xff1a;一、虛擬化列表核心概念 1.1 什么是虛擬化列表&#xff1f; 虛擬化列表&#xff08;也稱為窗口化&#xff09;是一種只渲染當前可見區域列表項的技術&#xff0c;而不…

2025AI顛覆認知!解鎖智能新紀元

清晨的城市還裹著薄霧時&#xff0c;通勤族的手機已經自動規劃好最優路線——避開施工路段、實時更新交通狀況&#xff0c;連早餐店排隊人數都能精準預測。這不是科幻電影里的片段&#xff0c;而是2025年AI深度融入生活的尋常場景。當數字化與智能化浪潮席卷而來&#xff0c;我…

實用Shell高級視頻課程

實用Shell高級視頻課程 Shell三劍客sed我網盤給你分享了「實用Shell高級視頻課程」&#xff0c;點擊鏈接或復制整段內容&#xff0c;打開「APP」即可獲取。/bc3b37jg8i:/鏈接&#xff1a;http://t.cn/A6swtV7u提取碼&#xff1a;ePV4 ???

hive-日期拆分為多行

hive-日期拆分為多行 代碼 SELECT begin_date,date_add(begin_date, tmp.pos),end_date,d_days,tmp.pos,tmp.val FROM (SELECT begin_date,end_date,DATEDIFF(end_date, begin_date) AS d_daysFROM (SELECT 2025-08-01 AS begin_date,2025-08-10 AS end_date) a) b LA…

全志MPP學習(1)-全志MPP概念理清

文章目錄1、全志MPP1.1、MPP-Framework1.2、MPP-Middleware1.3、MPP-Framework和MPP-Middleware之間的關系2、總結1、全志MPP 全志MPP&#xff08;Media Process Platform&#xff09;媒體處理軟件平臺&#xff0c;分為 mpp-middleware 和 mpp-framework 兩部分。 mpp-middlew…