Freigeben über


GpuMmu-Modell

In diesem Artikel wird das GpuMmu-Modell beschrieben, das in Windows 10 (WDDM 2.0) eingeführt wurde.

Im GpuMmu-Modell verfügt die GPU über eine eigene Speicherverwaltungseinheit (Memory Management Unit, MMU), die virtuelle GPU-Adressen pro Prozess in physische Adressen übersetzt.

Jeder Prozess verfügt über separate virtuelle CPU- und GPU-Adressräume, die unterschiedliche Seitentabellen verwenden. Der Videospeicher-Manager (VidMm) verwaltet den virtuellen GPU-Adressraum aller Prozesse. VidMm ist auch für das Zuordnen, Erweitern, Aktualisieren, Gewährleisten des Vorhandenseins und Freigeben von Seitentabellen verantwortlich. Das Hardwareformat der vom GPU-MMU verwendeten Seitentabellen ist VidMm unbekannt und wird über Gerätetreiberschnittstellen (DDIs) abstrahiert. Die Abstraktion unterstützt eine Übersetzung auf mehreren Ebenen, einschließlich einer Tabellentabelle mit fester Größe und einer verkleinerbaren Stammseitentabelle.

Obwohl VidMm für die Verwaltung des virtuellen GPU-Adressraums und der zugrunde liegenden Seitentabellen verantwortlich ist, weist VidMm nicht automatisch virtuelle GPU-Adressen zu Zuordnungen zu. Diese Verantwortung fällt auf den Benutzermodustreiber (UMD).

VidMm bietet zwei Hauptdienste für die UMD an:

  • Speicherzuweisung und Speicherfreigabe. Die UMD kann Videospeicher über den vorhandenen Rückruf zuordnen und diesen Speicher über den vorhandenen Deallocate-Rückruf freigeben. Weisen Sie einen Handle einer VidMm-Zuordnung an die UMD zu. Ein GPU-Modul kann auf diesem Handle arbeiten. Eine solche Zuordnung bezieht sich speziell auf physischen Videospeicher, auf den ein GPU-Modul über eine Zuordnungsliste zugreifen und verarbeiten kann.

  • Verwaltung des virtuellen GPU-Adressraums. Für Engines, die im virtuellen Modus ausgeführt werden, muss eine virtuelle GPU-Adresse explizit einer Zuordnung zugewiesen werden, bevor auf sie virtuell zugegriffen werden kann. Zu diesem Zweck bietet VidMm die UMD-Dienste an, um virtuelle GPU-Adressen zu reservieren oder frei zu geben und bestimmte Zuordnungsbereiche in den virtuellen GPU-Adressraum eines Prozesses zuzuordnen. Diese Dienste sind flexibel und ermöglichen die UMD Feinkornkontrolle über einen virtuellen Adressraum von Prozess-GPU. Die UMD kann entweder eine bestimmte virtuelle GPU-Adresse einer Zuordnung zuweisen oder zulassen, dass VidMm automatisch eine verfügbare adresse auswählen kann, wobei möglicherweise einige Min- und max GPU-Einschränkungen für virtuelle Adressen angegeben werden. Eine einzelne Zuordnung kann mehrere virtuelle GPU-Adresszuordnungen zugeordnet haben, und Dienste werden der UMD zur Implementierung des Kachelressourcenvertrags bereitgestellt.

Ebenso kann die UMD in einer konfiguration des verknüpften Anzeigeadapters GPU-virtuelle Adressen explizit bestimmten Zuordnungsinstanzen zuordnen. Für jede Zuordnung kann UMD auswählen, ob die Zuordnung zu sich selbst oder zu einer bestimmten Peer-GPU erfolgen soll. In diesem Modell sind die virtuellen CPU- und GPU-Adressen, die einer Zuordnung zugeordnet sind, unabhängig. Eine UMD kann entscheiden, sie in beiden Adressräumen gleich zu halten oder unabhängig zu halten.

Virtuelle GPU-Adressen werden logisch bei einer festen Seiten-Größe von 4 KB über die DDI-Schnittstelle verwaltet. Virtuelle GPU-Adressen können auf Zuordnungen verweisen, die sich entweder in einem Speichersegment oder im Systemspeicher befinden. Der Systemspeicher wird mit 4 KB physischer Granularität verwaltet, während Speichersegmente entweder mit 4 KB oder 64 KB bei auswahl des Treibers verwaltet werden. Alle VidMm-Zuordnungen werden so ausgerichtet und bemessen, dass sie ein Vielfaches der vom Treiber festgelegten Seitengröße sind.

Der Zugriff auf einen ungültigen Bereich virtueller GPU-Adressen führt zu einer Zugriffsverletzung und zum Beenden des Kontexts und/oder Geräts, das den Zugriffsfehler verursacht hat. Um einen solchen Fehler wiederherzustellen, initiiert VidMm einen Engine-Reset, der bei Misserfolg zu einer adapterweiten Timeouterkennungswiederherstellung (Timeout Detection Recovery, TDR) heraufgestuft wird.

Das GpuMmu-Modell wird im folgenden Diagramm veranschaulicht:

Diagramm, das das GpuMmu-Modell mit seinen Komponenten und Interaktionen zeigt.