为什么传统 RAMDisk 比 GPU RAMDisk 更快?

为什么传统 RAMDisk 比 GPU RAMDisk 更快?

我试用了 GitHub 上 prsyahmi 的 GPURamDrive 软件,并使用我的 nVidia RTX 2060 的 GDDR6 RAM 创建了一个 5 GB RAM 驱动器。后来,我还使用 AMD 的 Radeon RamDisk 软件创建了一个 4 GB RAM 驱动器。使用 CrystalDiskMark6,我对两个 RAM 驱动器以及我的主要三星 850 EVO SSD 进行了基准测试。结果让我感到惊讶,GPU RamDisk 确实具有极快的连续读写速度,但三星 SSD 在其他测试中的表现实际上也比 GPU RamDisk 好很多。然后与使用系统 DDR4 内存的传统 RamDisk 相比,它完全胜过 GPU RamDisk。

GDDR6 甚至 GPU 中使用的旧 GDDR5 内存不是应该比 DDR4 RAM 快得多吗?而且比闪存也快得多吗?这是软件问题吗?还是 GDDR6 RAM 有什么问题导致它在用于 RAM 磁盘时本质上不如 DRAM?

基准测试的结果如下:

RTX 2060 GDDR6 内存盘:

RTX 2060

DDR4 内存盘:

DDR4

三星 850 EVO SSD:

固态硬盘

答案1

GDDR6 确实比 DDR4 更快,并且显卡上的内存布局确实导致比标准 DIMM 更高的内存带宽。

问题在于,CPU 和 GPU 之间有一个(相对)慢速的 PCIe 链路,然后才与 GPU 协商内存访问。CPU 内存直接连接到 CPU,而 GPU 内存用于高速访问 GPU。

我承认理论上x16 PCIe 的带宽链路的速度大约为 16GB/s,但这是理论带宽,并且 GPU 内存可能会映射到 PC 通用内存地址空间,但要真正写入它需要协商至少两条总线,其中一条总线已被拥有它的设备(GPU)使用。

GPU 正在使用该内存来绘制屏幕,​​尽管它可能不会使用大量带宽来绘制桌面,但这确实意味着 RAM 磁盘和板载控制器之间存在一定程度的争用。

然后还有相关的协议。PCIe 链路协议、要求 GPU 在内存中存储某些内容的协议/API、在此基础上向操作系统提供磁盘接口的协议/驱动程序(操作系统可能使用 CPU 内存来执行所有开销和计算,并使用 GPU 内存来存储实际数据)。

您也很可能正在将 GPU 内存盘读取到 CPU 内存缓冲区中。是的,数据会立即被丢弃,但它需要某处. 链条中的另一个环节。

还有一个问题是,你使用的特定驱动程序是通过编程接口并且每次您尝试读取或写入 RAM 磁盘中的内存地址时,CPU 都必须捕获该地址,将其传递给驱动程序,由驱动程序将其转换为 GPU 上的内存位置,然后将数据传输到 GPU 或从 GPU 传输数据。这必然会涉及基于 CPU 的“内存复制”,从读取位置开始并提供给驱动程序。此阶段的所有内容(除了最后的“放入/给我这部分数据”之外)都完全受 CPU 限制。实际的数据传输可能非常快,但这是另一项开销。

GPU 内存带宽应该完全超越了 CPU 内存带宽,但还有更多层可以访问该内存。在进行批量数据处理时效率最高内部而不是被第二个来源使用。

您并非“仅仅”将 GPU 用作 ramdisk。CPU 会大量参与管理每一步,并且您只是通过多层接口将 GPU 内存用作后备存储器。

确实来自https://github.com/prsyahmi/GpuRamDrive

使用 GPU RAM 的速度不如主机主内存快,但它仍然比普通的 HDD 更快。... 这仅仅是一个 PoC(概念验证),建议寻找此类解决方案的用户升级 RAM 或购买更快的存储空间。

相关内容