指令执行缓慢
嵌入在咖啡机和微波炉中的简单的微处理器被设计为执行指令的速度与从内存中获取指令
一样快。桌面级微处理器则有额外的资源并发地处理指令,因此它们执行指令的速度可以
比从主内存获取指令快很多倍,多数时候都需要高速缓存去“喂饱”它们的执行单元。对
优化而言,这意味着内存访问决定了计算开销。
如果没有其他东西“妨碍”,现代桌面级处理器可以以惊人的速率执行指令。它们每几百
皮秒(1 皮秒是 10-12 秒,一段非常非常短的时间)就可以完成一次指令处理。但这并不意
味着每条指令只需要皮秒数量级的时间即可执行完毕。处理器中包含一条指令“流水线”,
它支持并发执行指令。指令在流水线中被解码、获取参数、执行计算,最后保存处理结
果。处理器的性能越强大,这条流水线就越复杂。它会将指令分解为若干阶段,这样就可
以并发地处理更多的指令。
如果指令 B 需要指令 A 的计算结果,那么在计算出指令 A 的处理结果前是无法执行指令 B
的计算的。这会导致在指令执行过程中发生流水线停滞(pipeline stall)——一个短暂的暂
停,因为两条指令无法完全同时执行。如果指令 A 需要从内存中获取值,然后进行运算得
到线程 B 所需的值,那么流水线停滞时间会特别长。流水线停滞会拖累高性能微处理器,
让它变得与烤面包机中的处理器的速度一样慢。
一样快。桌面级微处理器则有额外的资源并发地处理指令,因此它们执行指令的速度可以
比从主内存获取指令快很多倍,多数时候都需要高速缓存去“喂饱”它们的执行单元。对
优化而言,这意味着内存访问决定了计算开销。
如果没有其他东西“妨碍”,现代桌面级处理器可以以惊人的速率执行指令。它们每几百
皮秒(1 皮秒是 10-12 秒,一段非常非常短的时间)就可以完成一次指令处理。但这并不意
味着每条指令只需要皮秒数量级的时间即可执行完毕。处理器中包含一条指令“流水线”,
它支持并发执行指令。指令在流水线中被解码、获取参数、执行计算,最后保存处理结
果。处理器的性能越强大,这条流水线就越复杂。它会将指令分解为若干阶段,这样就可
以并发地处理更多的指令。
如果指令 B 需要指令 A 的计算结果,那么在计算出指令 A 的处理结果前是无法执行指令 B
的计算的。这会导致在指令执行过程中发生流水线停滞(pipeline stall)——一个短暂的暂
停,因为两条指令无法完全同时执行。如果指令 A 需要从内存中获取值,然后进行运算得
到线程 B 所需的值,那么流水线停滞时间会特别长。流水线停滞会拖累高性能微处理器,
让它变得与烤面包机中的处理器的速度一样慢。