当前位置: 首页 > news >正文

Windows 图形显示驱动开发-WDDM 2.0 -GpuMmu 寻址方式

在 GpuMmu 模型中,GPU 有自己的内存管理单元 (MMU),用于将每进程 GPU 虚拟地址转换为物理地址。

每个进程都有单独的 CPU 和 GPU 虚拟地址空间,这些空间使用不同的页表。 视频内存管理器(VidMm)管理所有进程的 GPU 虚拟地址空间。 VidMm 还负责分配、扩展、更新、确保驻留和释放页表。 GPU MMU 使用的页表的硬件格式对于 VidMm 来说是未知的,并通过设备驱动程序接口 (DDI) 进行抽象封装。 抽象支持多级级别转换,包括固定大小的页表和可调整大小的根页表。

尽管 VidMm 负责管理 GPU 虚拟地址空间及其基础页表,但 VidMm 不会自动将 GPU 虚拟地址分配给分配。 这一责任落在用户模式驱动程序 (UMD) 身上。

VidMm 为 UMD 提供两个主要服务:

内存分配和解除分配。 UMD 可以通过现有 Allocate 回调分配视频内存,并通过现有 Deallocate 回调释放该内存。 Allocate 返回一个指向 VidMm 分配的句柄给 UMD。 GPU 引擎可以在此句柄上运行。 此类分配专门指物理视频内存,GPU 引擎可以通过分配列表访问和处理这些内存。

GPU 虚拟地址空间管理。 对于在虚拟模式下运行的引擎,必须先将 GPU 虚拟地址显式分配给内存分配,然后才能进行虚拟化访问。 为此,VidMm 提供 UMD 服务来保留或释放 GPU 虚拟地址,并将特定分配范围映射到进程的 GPU 虚拟地址空间。 这些服务很灵活,允许 UMD 精细控制进程 GPU 虚拟地址空间。 UMD 可以决定为某个分配指定特定的 GPU 虚拟地址,或者让 VidMm 自动选取可用地址,并可能指定一些最小和最大 GPU 虚拟地址的约束条件。 单项分配可以有多个与之关联的 GPU 虚拟地址映射,并且向 UMD 提供服务以实现图块资源协议。

同样,在链接的显示适配器配置中,UMD 可以将 GPU 虚拟地址显式映射到特定的分配实例。 对于每个映射,UMD 可以选择是映射到自身还是映射到特定的对等 GPU。 在此模型中,分配中分配的 CPU 和 GPU 虚拟地址是独立的。 UMD 可以决定在两个地址空间中保持它们相同,或使它们保持独立。

GPU 虚拟地址通过 DDI 接口以固定 4 KB 页面粒度进行逻辑化管理。 GPU 虚拟地址可以引用驻留在内存段或系统内存中的内存分配。 系统内存以 4 KB 物理粒度进行管理,而内存段在驱动程序选择时以 4 KB 或 64 KB 进行管理。 所有 VidMm 分配都对齐,并调整大小为驱动程序选择的页面大小的整数倍。

对无效范围的 GPU 虚拟地址的访问将导致访问冲突,并终止导致访问错误的上下文和/或设备。 为了从这种故障中恢复,VidMm 会启动引擎重置;如果不成功,则会升级为适配器范围的超时检测恢复 (TDR)。

下图演示了 GpuMmu 模型:

相关文章:

  • 蓝桥杯单片机组第十三届初赛试题-程序题(第2批)
  • 我用AI做数据分析之数据清洗
  • 【python】连接Jira获取token以及jira对象
  • C++-----------酒店客房管理系统
  • Maven下载安装IDEA使用MavenJava在pom.xml配置教程
  • Python--多线程
  • 探索ChatGPT背后的前端黑科技
  • 机器学习数学基础:26.随机变量分布详解
  • Python用PyMC3马尔可夫链蒙特卡罗MCMC对疾病症状数据贝叶斯推断
  • 一阶微分方程的解法与通解式全解析
  • gitlab无法登录问题
  • 周考考题(学习自用)
  • 【webview Android】视频获取首帧为封面
  • Niginx笔记
  • 本地部署DeepSeek(Mac版本,带图形化操作界面)
  • 广东茂名能源国际会议(IS-ESE 2025)
  • 备战蓝桥杯 Day1 回顾语言基础
  • 数字化转型的深度思考与最佳实践
  • Linux查找占用的端口,并杀死进程的简单方法
  • 智慧升级,赋能未来——开启安全高效与绿色低碳新篇章
  • 网站建设相关的网站/seo链接优化建议
  • 北京注册网站/市场推广
  • 外包客服平台/满足seo需求的网站
  • 河南手机网站建设公司/人工智能培训课程
  • 自己建设影视网站/除了91还有什么关键词
  • 北京的网站建设/elo机制