2010-04-21 27 views
2

在文章"Teach Yourself Programming in Ten Years"彼得·诺维格(研究总监,谷歌)上给出了典型的1GHz PC上的各种操作如下近似时机早在2001年:进行各种操作近似定时的“典型的台式PC”安诺2010

  • 执行单个指令= 1纳秒=(1/1,000,000,000)秒
  • 从L1高速缓冲存储器= 2纳秒取字
  • 从主存储器= 10纳秒取字
  • 从连续的磁盘位置= 200取一个字nanosec
  • 获取来自新盘的位置(寻求)= 8000000纳秒= 8毫秒

字将在相应的时序是什么你一个典型的PC桌面安诺2010定义是什么?

+0

“定义标准”? :-) – 2010-04-21 20:39:02

+0

我们现在是9年后,这意味着,根据摩尔定律,晶体管数量是5到6倍。所以至少在CPU和主内存的速度方面,速度提高了32倍或64倍。除非我出错了。磁盘性能与时间大致成线性关系,因此可能不会太快。 – Joey 2010-04-21 20:44:23

回答

4

缓存和主内存变得更快。磁盘具有更高的顺序带宽。 SSD的寻找时间要低得多。

虽然原始列表非常糟糕,但他将延迟度量(如查找时间)与1 /吞吐量混合在一起(如果您认为可以往返磁盘控制器,即使数据已处于在200ns内不需要磁头移动)。

没有任何延迟真的发生了变化。单指令和L1等待时间实际上比他给出的数字更长,但是您可以获得并行工作的多个指令(流水线)以及从缓存中获取的多个指令,其价格为1。同样,对于磁盘传输,您可以连续获得连续的块,但发出请求后的等待时间没有太大改变,除非您已转移到SSD。

但是,CPU架构已经发生了很大的变化,尽管如此,试图将任何一个数字放在一个数字上都是一种损失。不同的指令需要非常不同的执行时间,并且数据依赖性控制着您看到的吞吐量。缓存行为主要由多核CPU之间的共享成本决定。等等。

3

我试图从这些定时中获得的主要原因是它们之间的比例差异:内存比直接在CPU上执行代码要慢一个数量级,而且磁盘比这个速度慢几个数量级。

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