phrase-20230109141609
例如 CPU 和 GPU 共享内存这样的场景下,CPU 和 GPU 都是有 MMU 的设备,那么可以使用虚拟地址。
- 做系统固件的工程师,会维护一张表划分物理地址空间。例如,将 PCIE 上的 VRAM 空间映射到的物理地址空间区域是 IOMEM 空间。
- 做内核驱动的工程师,驱动建立页表将物理地址空间映射为虚拟地址。例如,对于共享内存(CPU和GPU都能访问的地址空间),假设 CPU 和 GPU 用各自的页表,如果页表内容是 GPU 地址,那么这个页表是 GPU 的页表; 如果页表内容是 CPU 地址,那么这个页表是 CPU 的页表。
- 做设备固件的工程师,启动阶段初始化 MMU 使得 GPU 使用虚拟地址。例如 GPU 设备的固件,设置 MMU 对应 GPU域 的页表根地址寄存器,这样 GPU 就能通过页表访问 GPU域的地址空间了。