Windows 圖形顯示驅動開發-IoMmu 模型

輸入輸出內存管理單元 (IOMMU) 是一個硬件組件,它將支持具有 DMA 功能的 I/O 總線連接到系統內存。 它將設備可見的虛擬地址映射到物理地址,使其在虛擬化中很有用。

在 WDDM 2.0 IoMmu 模型中,每個進程都有一個虛擬地址空間,即:

  • 在 CPU 和 GPU 之間共享。
  • 由 OS 內存管理器管理。

為了訪問內存,GPU 向兼容的 IOMMU 發送數據請求。 該請求包括一個共享虛擬地址和一個進程地址空間標識符?(PASID)。 IOMMU 使用共享頁表執行地址轉換。 下圖說明了此操作。

內核模式顯示驅動程序 (KMD) 通過設置DXGK_VIDMMCAPS::IoMmuSupported 上限來表示對 IoMmu 模型的支持。 設置此標志后,視頻內存管理器 (VidMm) 會自動將 GPU 與 IOMMU 一起使用的任何進程注冊,并獲取該進程地址空間的 PASID。 PASID 在創建設備期間傳遞給驅動程序。

VidMm 在顯示之前將主要分配映射到光圈段,確保顯示控制器具有對這些分配的物理訪問權限。

在 IoMmu 模型中,用戶模式顯示驅動程序 (UMD) 繼續使用 VidMm 的 Allocate 服務為 GPU 分配視頻內存。 此過程允許 UMD:

遵循駐留模型;
支持 DirectX 資源共享模型;
確保主圖面對內核可見,并在顯示之前映射到內存調整;

UMD 在用戶模式下完全管理第一級轉換(磁貼資源地址到共享 CPU/GPU 地址)。

基于 IOMMU 的 GPU 隔離

基于 IOMMU 的 GPU 隔離是一種通過管理 GPU 訪問系統內存的方式來增強系統安全性和穩定性的技術。 本文介紹了 WDDM 基于 IOMMU 的 GPU 隔離功能(適用于支持 IOMMU 的設備),以及開發人員如何在其圖形驅動程序中實現該功能。

此功能從 Windows 10 版本 1803 (WDDM 2.4) 開始提供。?

基于 IOMMU 的 GPU 隔離允許 Dxgkrnl 利用 IOMMU 硬件對從 GPU 訪問系統內存加以限制。 OS 可以提供邏輯地址,而不是物理地址。 這些邏輯地址可用于限制設備對系統內存的訪問,使其只能訪問允許訪問的內存。 它通過確保 IOMMU 將 PCIe 上的內存訪問轉換為有效和可訪問的物理頁面來實現這一目標。

如果設備訪問的邏輯地址無效,則設備就無法訪問物理內存。 這一限制可防止一系列允許攻擊者通過受損硬件設備訪問物理內存的漏洞。 如果缺少它,攻擊者就可以讀取設備運行所不需要的系統內存內容。

默認情況下,只有為 Microsoft Edge 啟用 Windows Defender 應用程序防護(即容器虛擬化)的電腦才會啟用此功能。

出于開發目的,實際的 IOMMU 重新映射功能是通過以下注冊表鍵值來啟用或禁用的:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
DWORD: IOMMUFlags0x01 Enabled* Enables creation of domain and interaction with HAL0x02 EnableMappings* Maps all physical memory to the domain* EnabledMappings is only valid if Enabled is also set. Otherwise no action is performed0x04 EnableAttach* Attaches the domain to the device(s)* EnableAttach is only valid if EnableMappings is also set. Otherwise no action is performed0x08 BypassDriverCap* Allows IOMMU functionality regardless of support in driver caps. If the driver does not indicate support for the IOMMU and this bit is not set, the enabled bits are ignored.0x10 AllowFailure* Ignore failures in IOMMU enablement and allow adapter creation to succeed anyway.* This value cannot override the behavior when created a secure VM, and only applies to forced IOMMU enablement at device startup time using this registry key.

如果啟用此功能,IOMMU 將在適配器啟動后立即啟用。 所有在此之前分配的驅動程序在啟用后都會被映射。

此外,如果將速度暫存密鑰 14688597 設置為已啟用,則會在創建安全虛擬機時激活 IOMMU。 目前,此暫存密鑰默認為已禁用,以便在沒有適當 IOMMU 支持的情況下允許自托管。

在啟用后,如果驅動程序不提供 IOMMU 支持,則啟動安全虛擬機會失敗。

目前還無法在 IOMMU 啟用后將其禁用。

IOMMU DMA 重新映射

直到 WDDM 3.0,Dxgkrnl 僅支持通過 1:1 物理重新映射實現 IOMMU 隔離,這意味著 GPU 訪問的邏輯頁被轉換為相同的物理頁碼。 IOMMU DMA 重新映射允許 GPU 通過不再以 1:1 映射的邏輯地址訪問內存。 相反,Dxgkrnl 能夠提供邏輯上連續的地址范圍。

Dxgkrnl 對 GPU 施加限制:GPU 必須能夠訪問所有物理內存才能啟動設備。 如果 GPU 的最高可見地址不超過系統上安裝的最高物理地址,則 Dxgkrnl 將無法初始化適配器。 即將推出的服務器和高端工作站可以配置超過 1 TB 的內存,突破了許多 GPU 常見的 40 位地址空間限制。 DMA 重新映射用作允許 GPU 在此環境中工作的機制。

在啟動時,Dxgkrnl 通過將設備的最高可訪問物理地址與系統上安裝的內存進行比較來確定是否需要邏輯重新映射。 如有必要,DMA 重新映射用于將 GPU 可見邊界內的邏輯地址范圍映射到系統上的任何物理內存。 例如,如果 GPU 限制為 1 TB,則 Dxgkrnl 將從 [0, 1 TB) 分配邏輯地址,然后可以通過 IOMMU 映射到系統上的任何物理內存。

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

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

相關文章

軟件測評報告包括哪些內容?第三方軟件測評機構推薦

在當今信息技術飛速發展的時代,軟件的品質與性能直接影響到企業的運營效率和市場競爭力。為了確保軟件的可用性和可靠性,軟件測評成為一個不可或缺的環節,軟件測評報告也是對軟件產品進行全面評估后形成的一份文檔,旨在系統地紀錄…

深淺拷貝區別,怎么區別使用

在 JavaScript 中,深拷貝(Deep Copy) 和 淺拷貝(Shallow Copy) 是兩種不同的對象復制方式,它們的區別主要體現在對嵌套對象的處理上。以下是它們的詳細對比及使用場景: 1. 淺拷貝(Sh…

tailscale + derp中繼 + 阿里云服務器 (無域名版)

使用tailscale默認的中轉節點延遲很高,因為服務器都在國外。 感謝大佬提供的方案:Tailscale 搭建derp中繼節點,不需要域名,不需要備案,不需要申請證書(最新) - yafeng - 博客園 基于這個方案&…

【異常錯誤】pycharm debug view變量的時候顯示不全,中間會以...顯示

異常問題: 這個是在新版的pycharm中出現的,出現的問題,點擊view后不全部顯示,而是以...折疊顯示 在setting中這么設置一下就好了: 解決辦法: https://youtrack.jetbrains.com/issue/PY-75568/Large-stri…

【DeepSeek系列】04 DeepSeek-R1:帶有冷啟動的強化學習

文章目錄 1、簡介2、主要改進點3、兩個重要觀點4、四階段后訓練詳細步驟4.1 冷啟動4.2 推理導向的強化學習4.3 拒絕采樣和有監督微調4.4 針對所有場景的強化學習 5、蒸餾與強化學習對比6、評估6.1 DeepSeek-R1 評估6.2 蒸餾模型評估 7、結論8、局限性與未來方向 1、簡介 DeepS…

車載音頻配置(二)

目錄 OEM 自定義的車載音頻上下文 動態音頻區配置 向前兼容性 Android 14 車載音頻配置 在 Android 14 中,AAOS 引入了 OEM 插件服務,使你可以更主動地管理由車載音頻服務監督的音頻行為。 隨著新的插件服務的引入,車載音頻配置文件中添加了以下更改: ? OEM 自定義的車…

禁止WPS強制打開PDF文件

原文網址:禁止WPS強制打開PDF文件_IT利刃出鞘的博客-CSDN博客 簡介 本文介紹如何避免WPS強制打開PDF文件。 方法 1.刪除注冊表里.pdf的WPS綁定 WinR,輸入:regedit,回車。找到:HKEY_CLASSES_ROOT\.pdf刪除KWPS.PDF…

深入解析NoSQL數據庫:從文檔存儲到圖數據庫的全場景實踐

title: 深入解析NoSQL數據庫:從文檔存儲到圖數據庫的全場景實踐 date: 2025/2/19 updated: 2025/2/19 author: cmdragon excerpt: 通過電商、社交網絡、物聯網等12個行業場景,結合MongoDB聚合管道、Redis Stream實時處理、Cassandra SSTable存儲引擎、Neo4j路徑遍歷算法等42…

用 Biome 替代 ESLint 和 Prettier

簡介 ESLint 和 Prettier ESLint:代碼質量檢查工具,確保代碼風格一致與無錯誤 Prettier:代碼格式化工具,自動美化代碼布局 所以:ESLint Prettier 能自動美化代碼、自動檢查代碼錯誤的工具 Biome Biome:…

6.3 DBMS的功能和特征

文章目錄 DBMS的6大功能DBMS的3個特征DBMS的分類 DBMS的6大功能 DBMS包含數據定義,數據庫操作(檢索、插入、修改、刪除),數據庫運行管理(保證多用戶環境下正常運行),數據組織、存儲、管理&…

力扣hot100——找到字符串中的所有字母異位詞

給定兩個字符串 s 和 p,找到 s 中所有 p 的 異位詞 的子串,返回這些子串的起始索引。不考慮答案輸出的順序。 解法思路: 1. // 判斷字符相等,其實就是給定一個定長的窗口去滑動查找子串,為了便于判斷將p 與窗口中的子…

前端插件使用xlsx-populate,花樣配置excel內容,根據坐添加標替換excel內容,修改顏色,合并單元格...。

需求要求:業務人員有個非常復雜得excel表格,各種表頭等,但是模板是固定得。當然也可以實現在excel上搞出各種表格,但是不如直接用已有模板替換其中要動態得內容方便,這里我們用到CSDN得 xlsx-populate 插件。 實列中我…

未來AI方向落地場景:小語言模型,super_private_agent

未來AI方向落地場景:小語言模型,super_private_agent 目錄 未來AI方向落地場景:小語言模型,super_private_agent小語言模型super - private - agent(注重隱私的智能代理)碳基生命和硅基生命交互界面面向agent的專用交互協議和數據接口從web平臺經濟到網絡平臺舉例說明社交…

Coze扣子新功能詳解

今晚(2025-01-24)扣子再次進行更新 主要更新內容: 搭建小程序和 H5 用戶界面時,支持使用音頻組件播放音頻內容 數據庫操作體驗提升 界面優化:對數據庫詳情界面進行了重新設計,并將工作流運行數據庫的測試數據位置從原工作流底…

匯能感知的光譜相機/模塊產品有哪些?

CM020A 分辨率:1600H1200V 光譜范圍:350~950nm 光譜分辨率:1nm 接口:USB2.0 幀率:16001200 (6幀) 輸出格式:Raw 8bit FOV:D73.5H58.8V44.1 相機尺寸:505055mm VM02S10 分辨率…

Ollama 本地GUI客戶端:為DeepSeek用戶量身定制的智能模型管理與交互工具

Ollama 本地GUI客戶端:為DeepSeek用戶量身定制的智能模型管理與交互工具 相關資源文件已經打包成EXE文件,可雙擊直接運行程序,且文章末尾已附上相關源碼,以供大家學習交流,博主主頁還有更多Python相關程序案例&#xf…

OpenMv識別色塊通過串口發給STM32

硬件連接 1、Openmv端 這里OpenMV端僅作為數據的發送端,所以只需要共地,以及OpenMV的TX(P4)與開發板的RX端連接即可。 2、STM32端 將開發板連接STM芯片RX端與轉串口TX端的跳帽取下,再將OpenMV的TX端(P4)與STM的RX連接。如果使用USB轉TTL則將TTL的RX端與STM的TX端連接…

以太網交換基礎(涵蓋二層轉發原理和MAC表的學習)

在當今的網絡世界中,以太網交換技術是局域網(LAN)的核心組成部分。無論是企業網絡、學校網絡還是家庭網絡,以太網交換機都扮演著至關重要的角色。本文將詳細介紹以太網交換的基礎知識,包括以太網協議、幀格式、MAC地址…

菜鳥之路Day15一一IO流(一)

菜鳥之路Day15一一IO流(一) 作者:blue 時間:2025.2.8 文章目錄 菜鳥之路Day15一一IO流(一)0.概述1.初識IO流1.1.什么是IO流?1.2.IO流的作用1.3.IO流的分類 2.IO流的體系結構3.字節輸出流的基本…

汽車零部件開發應該具備哪些編程思維?

目錄 1、功能安全思維 2、實時性與確定性思維 3、可靠性和冗余思維 4、硬件軟件協同思維 5、CAN總線通信思維 6、故障診斷和自診斷思維 7、功耗優化思維 8、軟件更新和版本管理思維 9、用戶體驗與安全性思維 汽車零部件開發中,嵌入式軟件在車輛系統中的作用…