Support for 64KB pages(MSDN翻译)

Support for 64KB pages

为了支持64KB的页面,WDDM v2提供了两种类型的叶页表。一种支持4KB的页表项,另一种支持64KB的页表项。这两种页表的都覆盖了同样的虚拟地址范围,所以一个支持4KB页面的页表拥有的页表项数量是一个支持64KB页面的页表的16倍。

64KB页面页表的大小被定义在DXGK_GPUMMUCAPS::LeafPageTableSizeFor64KPagesInBytes中。

UpdatePageTable 操作有一个标志DXGK_UPDATEPAGETABLEFLAGS::Use64KBPages代表了这个页表的类型是被更新过的。

WDDM v2支持下面的两种操作模式:

  1. 一级页表的页表项可以指向4KB类型页表或64KB类型页表。
  2. 一级页表的页表项可以同时指向4KB类型页表和64KB页表。这是"dual PTE"模式。

XGK_GPUMMUCAPS::DualPteSupported能力表示了是否支持dual PTE 模式。VMM基于三点来选择页面的大小,资源的对齐方式,GPU内存段的属性,和GPU内存段的类型。一个资源是否被映射到64KB的页面中,取决于资源的对齐方式和大小是否是64的整数倍,以及资源resident所在的内存段是否支持64KB页面。

Single PTE mode

这种模式下一级页表的页表项可以指向4KB类型的页表,或者是64KB类型的页表。

DXGK_PTE::PageTablePageSize字段只应该在一级页表(之前叫页面目录)的页表项里被使用。这个字段告诉KMD页表对应的类型(是使用64KB或4KB)。

VMM在如下情况中位一段虚拟地址选择使用64KB类型的页表:

  • 只有64KB对齐的资源被映射到这段虚拟地址上
  • 所有所有Allocation映射范围的内存段支持64KB的页面

当虚拟地址范围被64KB页面映射时,而以上两个条件不满足的时候(例如, 一个allocation被提交到了系统内存段中),VMM就会将64KB类型页表切换成4KB类型页表。

当一个页表只有64KB页表项时,一个页表项需要指向一个4KB页面时(例如,一个Allocation被移到了系统内存中),这个页表就会被变成只使用4KB页表项的页表。

下面说明了这个转换过程:

1.进程的所有上下文都被挂起

2.已经存在的所有页表项都被更新为指向4KB的页面,驱动会收到 UpdatePageTable 的换页操作。

3.指向页表的一级页表项将被更新新的页面大小(PageTablePageSize = DXGK_PTE_PAGE_TABLE_PAGE_4KB).驱动将会收到 UpdatePageTable换页操作。

4.进程所有的上下文都会唤醒。

当一个页表只有4KB页表项而页表项的数量是0时,这个页表将被转换成64KB的页表。

下面说明了这个转换过程:

1.进程的所有上下文都被挂起

2.已经存在的页表项被更行位指向64KB的页面。驱动将收到 UpdatePageTable 换页操作。

3.指向页表的一级页表项会被更新更新的页面大小(PageTablePageSize = DXGK_PTE_PAGE_TABLE_PAGE_64KB)。驱动将会收到 UpdatePageTable换页操作。

4.进程所有的上下文都会唤醒。

为了避免平凡的切换页表的类型,驱动会将小的allocation打包(PS:这个打包的意思可能是放在一起)。

Dual PTE mode

在DualPTE模式的一级页表的页表项可能同时指向4KB页表和64KB页表。

在一级页表的页表项中指针都有一个Valid标志,但是0级页表中覆盖同样一段64KB页面地址范围的页表项不能同时被设置位Valid。

当被64KB的页表项覆盖的一个Allocation被放置在64KB页面大小的内存段中时,这个64KB的页表项会变为invalid,对应的4KB的也表项会变为Valid。

下图展示了存在被0级页表覆盖的同一段虚拟地址上的一个4KB的Allocation和一个64KB对齐的Allocation,并且这个内存段都支持64KB页面。

dual pte mode page tables

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值