GpuMmu 模型
在 GpuMmu 模型中,圖形處理單位 (GPU) 有自己的記憶體管理單位 (MMU) ,可將個別進程 GPU 虛擬地址轉譯為實體位址。
每個進程都有使用不同分頁表的個別CPU和 GPU 虛擬位址空間。 視訊記憶體管理員會管理所有進程的 GPU 虛擬位址空間,並負責配置、成長、更新、確保落地和釋放分頁表。 GPU MMU 所使用的頁面數據表硬體格式對視訊記憶體管理員是未知的,而且會透過設備驅動器介面 (DDI) 抽象化。 抽象概念支援多層層級轉譯,包括固定大小的頁面數據表和可重設大小的根頁面表。
雖然視訊記憶體管理員負責管理 GPU 虛擬位址空間及其基礎分頁表,但視訊記憶體管理員不會自動將 GPU 虛擬位址指派給配置。 此責任落在使用者模式驅動程式上。
視訊記憶體管理員會將兩組服務提供給使用者模式驅動程式。 首先,使用者模式驅動程式可以透過現有的 配置 回呼來配置視訊記憶體,並透過現有的 解除分配 回呼釋放該記憶體。 就像今天一樣,這會將使用者模式驅動程式傳回視訊記憶體管理員配置的句柄,該配置可由 GPU 引擎操作。 這類配置只代表配置的實體部分,而且可由引擎實際操作,透過配置清單參考來參考。
針對在虛擬模式中執行的引擎,GPU 虛擬位址必須先明確指派給配置,才能以虛擬方式存取。 為此,視訊記憶體管理員會提供使用者模式驅動程式服務來保留或釋放 GPU 虛擬位址,並將特定配置範圍對應至進程的 GPU 虛擬地址空間。 這些服務非常有彈性,可讓使用者模式驅動程式更精細地控制進程 GPU 虛擬位址空間。 使用者模式驅動程式可能會決定將非常特定的 GPU 虛擬位址指派給配置,或讓視訊記憶體管理員自動挑選可用的位址,可能指定一些最小和最大 GPU 虛擬位址限制。 單一配置可能會有多個與其相關聯的 GPU 虛擬位址對應,且服務會提供給使用者模式驅動程式,以實作 磚資源合約。
同樣地,在連結的顯示配接器組態中,使用者模式驅動程式可能會明確地將 GPU 虛擬位址對應至特定的配置實例,並針對每個對應選擇對應,不論對應應該是自我或特定對等 GPU。 在此模型中,指派給配置的CPU和 GPU 虛擬位址是獨立的。 使用者模式驅動程式可能會決定在位址空間中保持相同,或讓它們保持獨立。
GPU 虛擬位址會透過 DDI 介面,以固定的 4KB 頁面數據粒度以邏輯方式管理。 GPU 虛擬位址可能會參考配置,這些配置位於記憶體區段或系統記憶體中。 系統記憶體是在 4KB 實體粒度管理,而記憶體區段是在驅動程式選擇的 4KB 或 64KB 進行管理。 所有視訊記憶體管理員配置都會對齊,並調整為驅動程式所選頁面大小的倍數。
存取無效範圍的 GPU 虛擬位址會導致存取違規和終止造成存取錯誤的內容和/或裝置。 為了從這類錯誤復原,視訊記憶體管理員會起始引擎重設,這會在失敗時升級為適配卡寬逾時偵測復原 (TDR) 。
GpuMmu 模型如下所示: