Sdílet prostřednictvím


GpuMmu model

Tento článek popisuje model GpuMmu, který byl zaveden ve Windows 10 (WDDM 2.0).

V modelu GpuMmu má GPU vlastní jednotku pro správu paměti (MMU), která překládá procesně specifické virtuální adresy GPU na fyzické adresy.

Každý proces má samostatné virtuální adresní prostory procesoru a GPU, které používají odlišné stránkovací tabulky. Správce paměti videa (VidMm) spravuje virtuální adresní prostor GPU všech procesů. VidMm také zodpovídá za přidělování, rozšiřování, aktualizaci, zajišťování rezidence a uvolnění stránkovacích tabulek. Formát hardwaru tabulek stránek používaných jednotkou správy paměti (MMU) GPU není znám VidMm a je abstrahován prostřednictvím rozhraní ovladačů zařízení (DDI). Abstrakce podporuje víceúrovňový překlad, včetně tabulky stránek s pevnou velikostí a tabulky kořenové stránky s možností změny velikosti.

I když VidMm zodpovídá za správu virtuálního adresního prostoru GPU a jeho podkladových stránkovacích tabulek, VidMm automaticky nepřiřazuje virtuální adresy GPU k přidělení. Tato odpovědnost spadá do ovladače uživatelského režimu (UMD).

VidMm nabízí službě UMD dvě hlavní služby:

  • Přidělení a uvolnění paměti. UMD může přidělit paměť videa prostřednictvím existujícího Allocate callbacku a uvolnit tuto paměť prostřednictvím existujícího Deallocate callbacku. Přidělení vrátí popisovač přidělení VidMm do umD. Na tomto popisovači může pracovat jednotka GPU. Toto přidělení se týká konkrétně fyzické paměti videa, ke které může modul GPU přistupovat a zpracovávat ho prostřednictvím seznamu přidělení.

  • Správa virtuálního adresního prostoru GPU Pro motory spuštěné ve virtuálním režimu musí být virtuální adresa GPU explicitně přiřazena k přidělení, aby k němu bylo možné získat přístup virtuálně. Pro tento účel VidMm nabízí služby UMD pro rezervaci nebo uvolnění virtuálních adres GPU a pro mapování konkrétních rozsahů přidělení do virtuálního adresního prostoru GPU procesu. Tyto služby jsou flexibilní a umožňují UMD precizní kontrolu nad virtuálním adresním prostorem procesorového GPU. UmD se může rozhodnout buď přiřadit konkrétní virtuální adresu GPU k přidělení, nebo nechat VidMm automaticky vybrat dostupnou adresu, případně určit určitá minimální a maximální omezení virtuální adresy GPU. K jednomu přidělení může být přidruženo více mapování virtuálních adres GPU a služby jsou poskytovány pro UMD k implementaci kontraktu prostředků dlaždice .

Podobně v konfiguraci propojeného adaptéru pro zobrazení může UMD explicitně mapovat virtuální adresy GPU na konkrétní instance přidělení. U každého mapování může UMD zvolit, zda má být mapování na sebe nebo na konkrétní partnerskou GPU. V tomto modelu jsou virtuální adresy procesoru a GPU přiřazené k přidělení nezávislé. UmD se může rozhodnout, že budou stejné v obou adresních prostorech, nebo je nechat nezávislé.

Virtuální adresy GPU se spravují logicky s pevnou členitostí stránky o 4 kB prostřednictvím rozhraní DDI. Virtuální adresy GPU můžou odkazovat na přidělení, která jsou rezidentní v segmentu paměti nebo systémové paměti. Systémová paměť se spravuje ve fyzické členitosti 4 kB, zatímco segmenty paměti se spravují v 4 kB nebo 64 kB podle výběru ovladače. Všechna přidělení VidMm jsou zarovnaná a jejich velikost je násobkem velikosti stránky určené ovladačem.

Přístup k neplatnému rozsahu virtuálních adres GPU způsobí narušení přístupu a ukončení kontextu nebo zařízení, které způsobily chybu přístupu. Pokud se chcete z takové chyby zotavit, VidMm zahájí resetování mechanismu, které v případě neúspěchu eskaluje na rozsáhlé obnovování detekce překročení časového limitu pro celý adaptér.

Model GpuMmu je znázorněn v následujícím diagramu:

diagram, který znázorňuje model GpuMmu s jeho komponentami a interakcemi.