CPU 主机孔径

对于 32 位 OS 离散图形处理单元(GPU),不支持调整大小的 BAR 或调整帧缓冲区栏大小失败时,Windows 显示驱动程序模型 (WDDM) v2 将提供一种替代机制,可通过该机制高效访问离散 GPU VRAM。 对于支持可编程 BAR 地址空间的 GPU,WDDM v2 中引入了一项新的 CPU 主机光圈功能,以抽象这一功能。

公开 CPU 主机光圈时,内核模式驱动程序会为支持 CPU 主机光圈的每个段填充新的 DXGK_CPUHOSTAPERTURE 上限结构。 这定义了 CPU 主机光圈的大小,这允许驱动程序保留某些 BAR 供内部使用。 页面大小与内存段的 GPU 页相同。

然后,内核模式驱动程序公开两个新的设备驱动程序接口(DDI)来管理 BAR 地址空间,特别是 DxgkDdiMapCpuHostApertureDxgkDdiUnmapCpuHostAperture

CPU 主机光圈后面的页表的内存由驱动程序管理,并在驱动程序初始化过程中提前设置。 DxgkDdiMapCpuHostApertureDxgkDdiUnmapCpuHostAperture 应在段枚举后立即运行,并在视频内存管理器初始化期间使用,以在适配器初始化期间将 CPU 虚拟地址映射到系统分页进程的页目录和页表。

当 CPU 需要访问内存段时,视频内存管理器会在 CPU 主机孔径中保留页面,并通过它映射内存段页面。 下面对此进行了说明。

显示 GPU 内存段中 CPU 主机光圈段映射的关系图。

在链接的显示适配器配置中,除以下情况外,内容类似。

  • 默认LinkMirrored 分配始终映射到 GPU0。
  • LinkInstanced 分配拥有一个虚拟地址范围,这个范围是 AllocationSize*NumberOfGPUInLink,其中分配的各个部分会被映射到不同的 GPU。

下面对此进行了说明:显示 链接显示适配器配置的 CPU 主机光圈段映射的关系图。