为什么RAM(任何类型)的访问时间减少得这么慢?


22

文章显示,DDR4 SDRAM拥有约8倍的带宽DDR1 SDRAM。但是从设置列地址到数据可用的时间仅减少了10%(13.5ns)。快速搜索显示最快的异步访问时间。SRAM(18岁)为7ns。为什么SDRAM访问时间减少得这么慢?原因是经济的,技术的还是根本的?


1
另一个可能的原因是它根本没有必要吗?
Sebastiaan van den Broek

例如,较低的访问时间对于使存储器中的数据搜索更快变得必要。
阿尔谢尼

我意识到,额外的速度总是很好,但是从软件开发人员的角度来看,也许与所有其他IO和体系结构(包括可以在不同数据中心上运行的微服务)相比,RAM速度并不是瓶颈不再。有时“足够好”是好的,或者至少不保证额外的研发能够加速它。我也考虑将其作为您问题中的一个潜在原因。
Sebastiaan van den Broek

1
根据Wikipedia的说法,DDR3-2200的First Word延迟为6.36 ns,这就是信号在FR4上3ft处传播需要多长时间,我想说我们非常接近物理极限
Mark Omo

Answers:


33

这是因为增加DRAM的带宽比减少延迟更容易,更便宜。为了从打开的ram行中获取数据,需要大量的工作。

列地址需要解码,多路复用器需要驱动选择要访问的线,并且数据需要跨芯片移动到输出缓冲器。这会花费一些时间,特别是考虑到SDRAM芯片是根据高内存密度和高逻辑速度量身定制的工艺制造的。为了增加带宽,例如通过使用DDR(1、2、3或4),可以扩展或逻辑化大多数逻辑,并可以与上一代产品相同的速度运行。唯一需要更快的是DDR引脚的I / O驱动程序。

相反,要减少等待时间,则需要加快整个操作的过程,这要困难得多。最有可能的是,需要使用类似于高速CPU的过程来制造内存的一部分,从而大大增加成本(高速过程更加昂贵,而且每个芯片都需要经历两个不同的过程)。

如果将CPU缓存与RAM和硬盘/ SSD进行比较,则存储空间大与存储速度快之间存在反比关系。L1 $的速度非常快,但只能容纳32到256kB的数据。之所以这么快是因为它很小:

  • 它可以使用它非常靠近CPU放置,这意味着数据必须经过更短的距离才能到达它
  • 可以将其上的电线做得更短,这又意味着数据在其上传输所需的时间更少
  • 它不会占用太多的面积或晶体管,因此以速度优化的过程进行制造并每位存储使用大量功率并不昂贵

随着层次结构的上移,每个存储选项的容量都会增加,但存储区域的面积也会越来越大,并且距离使用它的设备越来越远,这意味着设备必须变慢。


21
好答案。我只想强调物理距离因素:最远的RAM棒大约为10厘米,光速为信号速度的1/3至1/2,再加上一些额外的长度来布线和匹配PCB轨道,您可以轻松达到2ns往返时间。如果约15%的延误是由坚不可摧的通用速度限制引起的...我认为您的表现很好。
mbrig

1
L1也是唯一组织的,直接位于使用它的内核中,并使用SRAM。
森林

@forest而且还有一个非常严格的大小限制-使其过大,并且无法保持如此之快。
a安

L1d缓存也可以针对延迟进行大量优化,例如,以集合中的所有方式并行获取标签和数据。因此,当标签匹配时,只需将数据多路复用到输出,而不需要从SRAM中获取数据。如果索引位全部来自地址的页内偏移部分,则这也可能与在地址的高位上的TLB查找并行发生。(因此,这是大小上的一个硬性限制,例如@Luaan提到的:该VIPT的大小/关联性<=页面大小= PIPT速度破解工作。请参阅VIPT缓存:TLB和缓存之间的连接?
Peter Cordes

6

C_Elegans提供了答案的一部分- 很难减少内存周期的总体延迟。

答案的另一部分是,在现代分层内存系统(多级缓存)中,内存带宽对整体系统性能的影响比内存延迟要大得多,因此所有最新开发工作都集中在此。

在并行运行许多进程/线程的常规计算以及嵌入式系统中都是如此。例如,在我进行的高清视频工作中,我并不关心毫秒级的延迟,但是我确实需要数GB /秒的带宽。


绝对应该提到的是,与降低延迟的难度和成本相比,在大多数情况下,可以很轻松地为“高”延迟设计软件。在大多数情况下,CPU及其软件都非常擅长消除有效延迟。最后,除非您不了解内存体系结构和CPU缓存/预取等的工作原理,否则您不会像您想的那样经常达到延迟限制。对于大多数软件,特别是单线程软件来说,简单的方法通常效果很好。
a安

在现代Intel CPU上,内存延迟是单核带宽的限制因素:带宽不能超过max_concurrency / latency,并且单核一次传输的脱核请求的容量有限。尽管具有更多的DRAM控制器,但多核Xeon(由于环形总线上的更多跃点具有更高的非核时延)比四核台式机芯片的单核带宽更差为什么Skylake在单线程内存吞吐量方面比Broadwell-E好得多?。要使多核Xeon上的内存B / W饱和,还需要更多线程。
Peter Cordes

总的来说,您的主要观点是正确的:大多数访问都命中了高速缓存,以降低延迟,从而避免使无序的后端停顿。硬件预取通常仅需要带宽以跟上顺序访问的速度,并在核心需要之前将数据准备好在高速缓存中。DRAM延迟是数百个核心时钟周期,因此必须调整高效的软件以使用通过克服空间/时间局部性和硬件预取功能而不会缓存未命中的访问模式。尤其对于负载而言,因为存储缓冲区可以使存储延迟与其余无序后端分离。
Peter Cordes

对于磁盘I / O,如果我们没有预读预取以将其隐藏以进行顺序访问,那么毫秒级的延迟将很重要。但是等待时间越长,隐藏起来就越困难。(您的预取算法越需要,访问模式就越需要可预测。)并且,为了获得所需的带宽,需要不断传输更多的请求/数据字节。
Peter Cordes

2

我没有太多的见解,但我希望这是全部。

经济

对于大多数计算机/电话而言,速度绰绰有余。为了更快的数据存储,已经开发了SSD。人们可以(几乎)实时使用视频/音乐和其他速度密集型任务。因此,没有太多需要提高速度的了(除了天气预报等特定应用之外)。

另一个原因是要处理非常高的RAM速度,因此需要快速的CPU。而且这会消耗大量电能。由于将它们用于电池设备(如移动电话)的趋势会阻止使用非常快的RAM(和CPU),因此,使其在经济上也不实用。

技术

随着芯片/ IC尺寸的减小(现在为纳米级),速度有所提高,但幅度并不明显。它通常用于增加RAM的数量,这是更困难的需求(也是经济原因)。

基本的

举个例子(两者都是电路):提高速度(由SSD使用)的最简单方法就是将负载分散到多个组件上,这样“处理”速度也会加起来。使用8个USB记忆棒同时读取并合并结果进行比较,而不是相继从1个USB记忆棒读取数据(耗时8倍)。


1
SSD与SDRAM延迟到底有什么关系?
C_Elegans

@C_Elegans它们都是电路,对于这个“通用”问题,我认为没有太大区别。
Michel Keijzers

2
由于预充电周期,打开页面的时间并没有真正减少多少。今天所需的能源量与十年前相比没有显着差异。根据我的经验,这决定了访问时间。
彼得·史密斯

5
@MichelKeijzers虽然SSD和SDRAM都是电路,但它们的使用情况却截然不同,并且使用了不同的技术来存储数据。另外,说CPU并不需要真正的RAM并没有多大意义,大多数现代CPU具有3级缓存的全部原因是因为它们的内存不能足够快地服务于CPU。
C_Elegans

1
您说过,对于更大的存储,有SSD。你的意思是更快吗?在SSD中获得相同数量的存储要比HDD昂贵。SSD的主要卖点是速度,也许还有噪音和可靠性。对于容量,硬盘仍然更好
user198712
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.