Memory a";“典型台式电脑”;安诺2010

Memory a";“典型台式电脑”;安诺2010,memory,assembly,computer-science,performance,Memory,Assembly,Computer Science,Performance,在文章中,Peter Norvig(谷歌研究总监)给出了2001年典型1GHz PC上各种操作的大致时间安排: 执行单个指令=1纳秒=(1/100000000)秒 从一级缓存中提取字=2纳秒 从主存取字=10纳秒 从连续磁盘位置提取字=200纳秒 从新磁盘位置提取字(寻道)=8000000纳秒=8毫秒 对于您定义的典型PC桌面anno 2010,相应的计时是什么?缓存和主内存的速度越来越快。磁盘具有更高的顺序带宽。SSD的寻道时间要短得多 虽然最初的列表非常糟糕,但他将延迟度量(如寻道时间)

在文章中,Peter Norvig(谷歌研究总监)给出了2001年典型1GHz PC上各种操作的大致时间安排:

  • 执行单个指令=1纳秒=(1/100000000)秒
  • 从一级缓存中提取字=2纳秒
  • 从主存取字=10纳秒
  • 从连续磁盘位置提取字=200纳秒
  • 从新磁盘位置提取字(寻道)=8000000纳秒=8毫秒

对于您定义的典型PC桌面anno 2010,相应的计时是什么?

缓存和主内存的速度越来越快。磁盘具有更高的顺序带宽。SSD的寻道时间要短得多

虽然最初的列表非常糟糕,但他将延迟度量(如寻道时间)与吞吐量的1/2混合在一起(如果您认为可以往返到磁盘控制器,即使数据已经在缓存中,并且不需要移动磁头,以200ns为单位,您也在做梦)

所有的延迟都没有真正改变。单指令和一级延迟实际上比他给出的数字要长,但是你可以得到多条指令并行工作(流水线),并且以一个字的价格从缓存中取出几个字。类似地,对于磁盘传输,您将以更快的速度连续交付连续块,但发出请求后的等待时间没有太大变化,除非您已移动到SSD


不过,CPU体系结构已经发生了很大的变化,试图在其中任何一个上加上一个数字都是一种损失。不同的指令需要非常不同的执行时间,数据依赖性控制您看到的吞吐量。缓存行为由多核CPU之间的共享成本决定。依此类推。

我试图从这些计时中获得的主要信息是它们之间的规模差异:内存比直接在CPU上执行代码慢一个数量级左右,而磁盘则慢几个数量级


许多开发人员仍然从CPU时间的角度考虑优化。但是,如果一次缓存未命中,您的CPU将至少闲置10个时钟周期,给定上述计时。硬页错误需要800万个时钟周期。这就是为什么优化内存使用(以减少页面错误)和优化数据布局(以减少缓存未命中)通常比任何只关注代码流的优化具有更高的回报。

我们现在是9年后的事了,这意味着,根据摩尔定律,晶体管数是5到6的两倍。因此,至少在CPU和主存储器的速度方面,thsi的速度提高了32倍或64倍。除非我有什么不对劲。磁盘性能大致随时间呈线性扩展,因此速度可能不会太快。