系统内存(RAM)如何映射以进行GPU访问?我很清楚虚拟内存是如何工作在CPU上的,但我不确定当GPU访问GPU映射系统内存(主机)时该如何工作。基本上与数据如何从系统内存复制到主机内存有关,反之亦然。你能否提供参考文章支持的解释?GPU - 系统内存映射
回答
我发现下面的slideset非常有用:聚变APUS 零拷贝 皮埃尔Boudier AMD 研究员的OpenGL/OpenCL的 格雷厄姆卖方 AMD 经理的OpenGL
的好处 http://developer.amd.com/afds/assets/presentations/1004_final.pdf存储器系统
AMD Fusion Developer Summit 2011年6月
但请注意,这是一个快速移动的REA。与(最终)将诸如虚拟内存这样的概念应用于GPU相比,并不是开发新概念。让我总结一下。
在过去,比如2010年之前,GPU通常是独立的PCI或PCI -presspress卡或主板。他们在GPU卡上安装了一些DRAM。这种机载DRAM速度非常快。他们也可以通过PCI上的DMA拷贝引擎访问CPU端的DRAM。 GPU像这样访问CPU内存通常很慢。
GPU内存未被分页。对于这个问题,GPU内存通常是未缓存的,除了GPU内的软件管理缓存之外,就像纹理缓存一样。 “软件管理”意味着这些缓存不是缓存一致的,必须手动刷新。
通常,只有一小部分CPU DRAM被GPU访问 - 一个光圈。通常,它被固定 - 不受分页。通常,甚至不受虚拟地址转换的影响 - 通常是虚拟地址=物理地址,也可能是一些偏移量。 (当然,CPU内存的其余部分是正确的虚拟内存,分页,翻译和缓存,只是GPU不能安全地访问它,因为GPU确实(没有)访问虚拟内存子系统和高速缓存一致性系统
现在,上述工作,但它是一个痛苦。在CPU内部的第一件事,然后在GPU内部运行缓慢。容易出错。并且很大的安全风险:用户提供的GPU代码经常可以访问(缓慢和不安全)所有CPU DRAM,因此可能被恶意软件使用
AMD已经宣布了一个更紧密集成GPU和CPU的目标,其中一个步骤是创建“融合”APU,包含CPU和GPU的芯片。 (英特尔已经完成了与Sandybridge的类似工作;我期望ARM也这样做)。
AMD也宣布他们打算让GPU使用虚拟内存子系统并使用缓存。 AMD IOMMU向使GPU使用虚拟内存的方向迈出了一步。英特尔有类似的。尽管IOMMU更多地面向虚拟机,而非虚拟机操作系统的虚拟内存。
CPU和GPU位于同一芯片内的系统通常使CPU和GPU访问相同的DRAM芯片。所以不再有“GPU上”和“GPU外”的DRAM。
但是,系统主板上的DRAM通常仍然存在拆分,分区到主要由CPU使用的内存以及主要由GPU使用的内存。即使内存可能存在于相同的DRAM芯片内部,通常很大一块是“图形”。在上面的文件中,由于历史原因,它被称为“本地”内存。 CPU和图形内存可能会有不同的调整 - 通常GPU内存的优先级较低,除了视频刷新,并具有较长的突发。
在本文中,我指的是,有不同的内部总线:洋葱为“系统”内存,“大蒜”为更快访问图形内存分区。大蒜内存通常是未缓存的。
我提到的论文讨论了CPU和GPU如何具有不同的页表。他们的副标题“零复制的好处”是指将CPU数据结构映射到GPU页面表中,这样就不需要复制它。
等等等等,
系统的这个区域正在迅速发展,所以2011年的文件已经过时差不多。但是你要注意趋势
(一)软件WANTS统一访问CPU和GPU内存 - 虚拟内存和缓存
但
(B),虽然硬件试图提供(一),特殊图形内存功能几乎总是可以制作专用的图形内存,即使只是相同DRAM的一个分区,显着更快或更省电。
差距可能在缩小,但是每当您认为它即将消失时,就可以播放另一个硬件技巧。
- 1. 文件系统 - 内存映射文件
- 2. 系统复位时的内存映射
- 3. 映射内存和GPU :: CudaMem使用
- 4. 传统IO vs内存映射
- 5. 文件系统 - 内存映射文件库
- 6. 由系统页面文件备份的内存映射文件
- 7. POSIX系统上的内存映射文件保持同步
- 8. Windows映射文件系统
- 9. 内存映射
- 10. 从操作系统内核访问GPU内存
- 11. 内存映射UIImage
- 12. WinXP中的文件和系统缓存行为的内存映射
- 13. GPU内存超额认购,统一
- 14. Wicket:资源URL映射(文件系统)
- 15. Linq-to-SQL传统关系映射
- 16. 概括映射多变量/层系统
- 17. 释放内存映射内存
- 18. 将内存映射到文件描述符(反向mmap)的系统调用?
- 19. Win32是否支持FAT文件系统上的内存映射文件(CreateFileMapping)?
- 20. 内存映射文件C++
- 21. 困惑了内存映射
- 22. I/O内存映射
- 23. 内存映射数据库
- 24. 内存映射文件.NET
- 25. ARM内存重新映射
- 26. Windows内存映射文件
- 27. 内存映射文件
- 28. RTOS的内存映射
- 29. 哪个postgres系统表存储会话授权的PID映射?
- 30. 写入内存映射文件比非内存映射文件慢