2010年“典型台式电脑”上的各种操作的近似时间

时间:2010-04-21 20:36:13

标签: memory assembly computer-science performance

"Teach Yourself Programming in Ten Years"文章中,Peter Norvig(Google研究总监)在2001年对典型的1GHz PC上的各种操作给出了以下大致时序:

  • 执行单指令= 1 nanosec =(1 / 1,000,000,000)sec
  • 从L1缓存中获取字= 2 nanosec
  • 从主存储器获取字= 10 nanosec
  • 从连续磁盘位置获取字= 200 nanosec
  • 从新磁盘位置获取字(搜索)= 8,000,000 nanosec = 8 millisec

您对典型PC桌面年度2010年定义的相应时间是什么?

2 个答案:

答案 0 :(得分:4)

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

原始列表非常糟糕,他将延迟度量(如搜索时间)与1 /吞吐量混合(如果您认为可以往返于磁盘控制器,即使数据已经在缓存中,您也会梦想并且在200ns内不需要头部运动。

没有任何延迟真的改变了。单指令和L1延迟实际上比他给出的数字长,但是您可以获得多个并行工作的指令(流水线操作)和从缓存中获取的几个单词的价格。类似地,对于磁盘传输,您将以更快的速度连续发送连续块,但发出请求后的等待时间没有太大变化,除非您已移至SSD。

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

答案 1 :(得分:4)

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

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