Pre-process GPU virtual address spaces (MSDN翻译)

Pre-process GPU virtual address spaces

每一个进程都关联了两个GPU VA空间,一个应用程序GPU VA空间和一个特权GPU VA空间。

Application GPU virtual address space 应用程序GPUVA空间

应用程序GPUVA空间,也就是CB(Command Buffer)所执行的地址空间。CB由UMD创建。这个地址空间被UMD通过VMM提供的服务来进行管理。在Allocation能够GPU引擎用虚拟模式访问操作之前,UMD必须指定一段GPU VA给这个Allocation。对于常规的Allocation,可以通过调用VMM暴露出来的MapGpuVirtualAddress 服务来完成。MapGpuVirtualAddress 允许UMD可以选择将Allocation映射到指定一段地址,也可以选择让VMM自行选择一段可用的GPUVA来映射Allocation。通常驱动应该让VMM自行挑选一段可用的GPU VA,但是在一些场景下驱动可能需要进行更多的控制。在LDA(Linked display adapter)配置下,MapGpuVIrtualAddress能够被用来指定是否要将这个地址映射到当前的GPU的allocation实例,还是其他的GPU的Allocation实例。

MapGpuVirtualAddress会将发送给VMM的请求排队,在请求该处理完之后立即返回给UMD。这个请求被排队在存在于设备分页队列(device paging queue)中,UMD必须保证这个队列和返回的设备分页Fence值(device paging fence value)同步(PS:应该指队列中的每一个请求会对应一个返回的Fence值,这样在异步处理返回的时候顺序不会混乱)。FreeGpuVirtualAddress 方法能够被用来解除一个Allocation的映射并回收对应的GPUVA。当一个Allocation被销毁(destroyed)时,所有有关该Allocation的VA都将被自动释放(free),所以这种情况下UMD不需要显示的去解除一个被销毁Allocation的映射。VMM提供给UMD两个Tile指定资源的服务。ReserveGpuVirtualAddress 方法允许UMD位一个tile资源保留地址空间,UpdateGpuVirtualAddress方法允许UMD来将tile资源区域映射或解映射到指定的tile池页面(tile pool page)。ReserveGpuVIrtualAddress执行依赖设备分页队列(against the device paging queue PS:上下文理解为依靠),同时UpdateGpuVirtualAddress执行在特殊的Companion Context中,并且运行在进程的特权地址空间中。

Process privileged virtual address space 进程特权虚拟地址空间

进程使用tile资源之前,需要通过ReserveGpuVirtualAddress得到与tile资源对应的二级虚拟地址空间。这个地址空间被用来随着渲染过程一起同步更新这个进程的页表。后面将在 Tile resources章节详细说这部分地址空间。

Virtual address space on linked display adapters 在LDA中的虚拟地址空间

当物理显卡被连接到LDA链上时,每个进程依然之存在着一个GPUVA空间(不包含分页进程)。但是在每款物理显卡中的虚拟地址空间是被映射到各自显卡拥有的一套页表。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值