上下文切换vs内存访问,哪个更快?

Wud*_*ong 18 cpu

在接受采访时被问到.他们要求在速度方面订购以下内容:

  • CPU寄存器访问,
  • 上下文切换
  • 内存访问
  • 磁盘搜寻.

非常确定磁盘搜索是最慢的,寄存器访问是最快的,但不太确定两者之间.任何人都可以解释一下吗?

woz*_*woz 19

我碰巧在Yahoo!上找到了一个非常好的答案!:

最快到最慢:

  1. 中央处理器
  2. 记忆
  3. 上下文切换
  4. 磁盘

虽然:

由于缓存,磁盘访问有时可能明显更快......内存访问也是如此(CPU有时会管理来自主内存的缓存以帮助加快访问速度并避免对总线的竞争).

内存访问也可能是缓慢或比次磁盘访问速度稍慢,因为虚拟内存页面交换.

一般来说,上下文切换需要非常快......如果它很慢,那么当多个进程同时运行时,CPU可能会开始花费更多时间在进程之间切换,而不是实际执行有意义的工作.

注册访问几乎是即时的.

(强调我的)

我同意这个答案.

  • 我发现使用Yahoo!可以回答谷歌面试问题有点有趣. (7认同)
  • @woz:这里有一些经验证据:http://blog.tsunanet.net/2010/11/how-long-does-it-take-to-make-context.html。正如我所说,上下文切换的时间约为 10,000 纳秒,比主内存访问慢大约 100 倍。 (2认同)
  • @MikeB:ARM芯片都有影子寄存器,用于快速中断上下文切换.Tera MTA有许多寄存器集,每个周期都进行一次上下文切换; 一些GPU以相同的方式工作.SparcT4具有多个寄存器上下文,并在内存访问错过缓存时执行上下文切换. (2认同)