1.减少晶体管切换时间
晶体管组成了逻辑门、ALU和其他组件,早期计算机提速的方式是减少晶体管的切换时间,例如硬件层面设计除法,而不是循环相减做除法运算。计算机的发展一直围绕着复杂度 V.S. 速度的平衡,例如特定的电路处理、图形操作、解码压缩视频等。
随着 CPU 处理速度的增加,RAM 寻址存取数据的速度成为瓶颈,因此 CPU 会有多级缓存,例如 L1、L2、L3,甚至 L4。 一个时钟周期就可以提供数据,CPU 不用空等时钟周期。
高速缓存就存在缓存命中 cache hit 和缓存未命中 cache miss 的问题,同时可能存在高速缓存和 RAM 不一致的问题。缓存里每块空间都有一个特殊标记,叫做脏位 dirty bit,清理缓存前检查脏位,如果是脏的,就把缓存里的数据写回 RAM 再将数据写回 RAM。
2.指令流水线
Instrunction pipelining,指令流水线,将 FETCH, DECODE, EXECUTE 并行起来,因为三个部分使用不同的组件完成,互不干扰。
这种加速方式带来的第一个问题是指令之间的依赖关系,第二个问题是条件跳转会改变程序的执行流。高级 CPU 会猜测可能执行的指令,将其放进流水线来解决改变程序执行流的问题,这种技术被称为 分支预测。另一些 CPU 会使用 超标量 技术,将多个指令放进流水线,利用其他控制资源。\
高级 CPU 还会在一个芯片里集成多个处理单元,称为 多核。看似都是独立的处理单元,但因为可以共享一些资源,例如 L1 缓存,所以可以提高效率,称为合作运算。
在处理更复杂的任务时,出现了超级计算机 supercomputer,它们可以使用多个 CPU 处理单元,称为 并行计算。\