00:24 早期是加快晶体管切换速度,来提升 CPU 速度
01:20 给 CPU 专门的除法电路 + 其他电路来做复杂操作,比如游戏,视频解码
02:28 给 CPU 加缓存,提高数据存取速度,更快喂给 CPU,用计算餐馆销售额举例
05:13 脏位 - Dirty bit
05:33 流水线设计,用 1 个洗衣机和 1 个干燥机举例
06:01 并行处理 - parallelize
07:33 乱序执行 - out-of-order execution
08:21 推测执行 - speculative execution
08:50 分支预测 - branch prediction
09:34 多个 ALU
09:54 多核 (Core)
10:11 多个独立 CPU
10:52 超级计算机,中国的"神威 太湖之光"
缓存:
CPU已经很强大,而RAM与CPU 的传输速度却没有提高,所以直接在CPU中内嵌一个RAM,叫做“缓存”
缓存命中/缓存未命中
脏位:dirty bit
当缓存中产生中间值(比如复杂运算时,会先算出一个值,先存起来后面会用到)时,缓存的数据与RAM中就不一致了(因为RAM中没有这个中间值)
这种不一致需要记录下来,之后要同步。因此缓存里每块空间有一个特殊标记,叫做“脏位”
异步与同步:
当“缓存”满了而CPU又需要缓存时,会检查“”脏位,如果是脏的会把数据先写回RAM,然后再清理缓存,加载新的内容
CPU并行:
CPU内的不同部分并行处理,使单个时钟周期可以处理一条指令
CPU并行带来的问题:
1.指令之间的依赖关系。
高端CPU会将有依赖关系的指令进行动态排序,叫做“乱序执行”
2.条件跳转
某些跳转指令会让CPU空等(要等跳转之后的结果再继续执行指令)而造成延迟。
高端CPU会“推测执行”。先进行推测,把指令排好,如果结果正确,则直接执行排好的指令;如果错误,就会清空排好的指令。
为了增加推测的正确性,CPU厂商用复杂的方法开发了“分支预测”
超标量处理器 —— 多核CPU
超级计算机