第3章 硬件极其行为

3.1 Overview

3.1.1 CPU流水线

在20世纪80年代,典型的微处理器完整处理一条指令要经过,获取指令,解码指令,最后执行指令,需要花费至少三个时钟周期完成一条指令。到二十世纪90年代时,通过引入深度流水线技术控制CPU内部的指令流,CPU可以同时执行多条指令。流水线技术可以极大的提升CPU性能。
为了获取CPU的高性能,流水线技术需要具有强大的控制流的预测能力。例如,矩阵和向量计算这种计算就可以用循环实现,CPU就可以正确的预测出每次迭代循环计算中所需要的带宽,这样就可以保证流水线和CPU能够无停顿的全速运行。
然而带宽预测并不是那么容易。例如,如果有多个循环结构,每个循环都随机执行较少的次数;在比如在面向对象编程中,一个基类对象可以引用不同的其他子类对象,这些子类对象实现不同的成员函数。在这些例子中,CPU很难或者基本不可能预测出下一步计算所需要的带宽。所以处理器要么拖延执行等待足够长的时间,要么进行推测执行。虽然对于可预测的控制流来说,推测执行非常有效,但是对于而非查找这种不可预测分支问题,推测执行经常无法正确工作。错误的推测执行托慢CPU执行速度,因为CPU必须丢弃下面分支所对应的推测执行的指令,这种现象叫做流水线冲刷。如果流水线冲刷经常发生,其将会影响CPU的执行效率。流水线冲刷并不是现代CPU唯一的危险障碍,下面介绍的内存引用也是一种危险障碍。

3.1.2 内存引用

3.1.3 原子操作

3.1.4 内存屏障

3.1.5 缓存丢失

3.1.6 IO操作

3.2 Overheads

3.3 Hardware Free Lunch?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值