Freigeben über


CPU-Host-Blende

Bei 32-Bit-Betriebssystemen mit diskreten Grafikeinheiten (GPUs), die keinen veränderbaren BAR unterstützen oder wenn das Ändern der Framepuffer-BAR fehlschlägt, bietet das Windows Display Driver Model (WDDM) v2 einen alternativen Mechanismus, durch den auf den diskreten GPU-VRAM effizient zugegriffen werden kann. Für GPUs, die einen programmierbaren BAR-Adressraum unterstützen, wird in WDDM v2 eine neue CPU Host Apertur-Funktionalität eingeführt, um diese Funktionalität zu abstrahieren.

Beim Freigeben einer CPU-Host-Blende füllt der Kernelmodustreiber eine neue DXGK_CPUHOSTAPERTURE Kapazitätsstruktur für jedes Segment aus, das eine CPU-Host-Blende unterstützt. Dadurch wird die Größe der CPU-Host-Apertur definiert, sodass der Treiber einige der BAR für interne Zwecke reservieren kann. Die Seitengröße entspricht den GPU-Seiten des Speichersegments.

Der Kernelmodustreiber macht dann zwei neue Gerätetreiberschnittstellen (DDIs) verfügbar, um den BAR-Adressraum zu verwalten, insbesondere DxgkDdiMapCpuHostAperture und DxgkDdiUnmapCpuHostAperture.

Der Speicher für die Seitentabelle hinter der CPU-Host-Öffnung wird vom Treiber verwaltet und früh während der Initialisierung des Treibers bereitgestellt. Sowohl DxgkDdiMapCpuHostAperture als auch DxgkDdiUnmapCpuHostAperture werden voraussichtlich unmittelbar nach der Segmentenumeration betriebsbereit sein und während der Initialisierung des Videospeicher-Managers verwendet, um die virtuelle CPU-Adresse dem Seitenverzeichnis und der Seitentabelle des System paging-Prozesses während der Adapterinitialisierung zuzuordnen.

Wenn der CPU-Zugriff auf ein Speichersegment erforderlich ist, reserviert der Videospeicher-Manager Seiten in der CPU-Host-Apertur und ordnet Speichersegmentseiten über sie zu. Dies ist unten dargestellt.

Diagramm, das die CPU-Host-Apertursegmentzuordnung in einem GPU-Speichersegment darstellt.

In der verknüpften Grafikkartenkonfiguration sieht es ähnlich aus, abgesehen von den folgenden Punkten.

  • Standard- oder LinkMirrored-Zuordnungen werden immer GPU0 zugeordnet.
  • Die LinkInstanced-Zuordnung verfügt über einen virtuellen Adressbereich von AllocationSize*NumberOfGPUInLink , der mit verschiedenen Teilen der Zuordnung verknüpft ist, die verschiedenen GPU zugeordnet wird.

Dies ist unten dargestellt: Diagramm, das die Zuordnung des CPU-Host-Aperturensegments für verbundene Display-Adapter-Konfigurationen zeigt.