通过理论(并假设位时间、命令速率和循环时间都是规范的一部分,并且对于声称为 ddr4-xxx 的所有组件必须是真实的并且始终相同——如果他们不是),我们有:
类型 | 数据速率 | 位时间 | 指挥率 | 周期 | CAS延迟 | 第一个词(ns) | 第四个字(ns) | 第八个字(ns) |
---|---|---|---|---|---|---|---|---|
DDR4-3200 | 3200 公吨/秒 | .313 纳秒 | 1600兆赫 | .626 纳秒 | 21 | 13.15 | 14.09 | 15.34 |
DDR4-2666 | 2666 公吨/秒 | .375 纳秒 | 1333兆赫 | .750 纳秒 | 11 | 8.25 | 9.38 | 10.88 |
它表明 2666 CAS 11 几乎可以是原始 ns 时序的两倍。
这是真的?我是否遗漏了部分理论?有没有人观察到第一手资料或知道在真实世界应用程序中测量类似事物的可靠来源?
您正在以一种不相关的方式比较延迟和整体模块速度。
当然,初始请求的 ns 时间可能会更快,CAS 延迟更低,但如今内存通常以更大的块传输数据,这意味着相比之下,初始延迟命中可以忽略不计。
在 RAM中选择地址可能会更慢,但更快的 RAM 的频率越高意味着实际的数据传输发生得更快。
“第一个字 (ns)”时间可能慢 5ns,但粗略计算,较快的模块只需连续传输 80 位(使用位时间:5ns ÷ (0.375 - 0.313) = 80.64)就可以弥补对于最初的延迟。
来自维基百科 DDR4
因此,一个基本的传输单元可能远远超过 80 位,具有多个请求和高效使用。
延迟会减慢初始请求并影响内存地址选择速度,但在高速模块中实际批量传输要高得多。
模块的内部复杂性一直在增加,以实现更高的批量带宽和更快的信号传输,缺点是复杂性增加了延迟,但几乎总能得到补偿。
这样想:
您系统中的内存在读取时具有这种初始延迟。一旦您知道它总是要传输特定的块大小,并且无论地址线如何更改,基本上都会继续传输,然后您可以更改地址以设置您想要的下一组字节。
根据内存库或带有缓冲区的内部设置,您基本上可以为下一次传输进行设置,而延迟成本几乎为零。从理论上讲,这些数据可以随时使用。
您可以创建一个持续的“现在你正在这样做,接下来这个”的链,其中延迟大部分隐藏在上一次传输之后。更智能的电子设备可以在更高的频率和更高的延迟下实现更高的传输速率。
并非所有“较慢”的东西实际上都较慢。