CPU的设计与发展都在追求速度这个指标
速度的提高:
提高一个时钟周期的吞吐量
1 加缓存
CPU(中央处理器)与RAM的数据交换过程中,要找到地址,再取指令,这样会多了找地址这个时间,找地址后,数据是通过BUS总线来操作的,尽管电是以光的速度传播的,但CPU的速度越来越快,总线BUS这几厘米的延时也会造成速度下降,这时在CPU的内部有一个缓存,一次有RAM中的多条指令,这样CPU直接拿过来,就会提高速度,CPU不用空等
缓存中有一个缓存命中的概念,就是缓存中存着下一次执行的指令的概率
2 指令流水线
比如酒店洗衣服,洗衣机半个小时 烘干机半个小时,一批衣服需要一个小时
但是并行处理,烘干机工作的时候,洗衣机也工作,就会使得效率提高,(想法很简单)
CPU也可以这样设计 一个时钟要进行 取指令---解码---执行 然后不断重复这个过程
在这个过程中 可以这样 取指---解码---执行
取指---解码---执行
取指---解码---执行
这样有个问题
你执行的时候 取指在取你执行的这个单元中的内容 因此 要弄清楚数据的依赖关系,必要时停止流水线
对于跳转的程序,会改变程序的执行流,简单的流水线,JUMP执行后 稳定下来再执行流水线 高端CPU会有一些技巧来避免这个问题,将JUMP想成是岔路口,高端CPU会猜哪条路的可能性大一些,提前把指令放入流水线,这个叫推测执行 猜对了会执行,猜错了清空流水线
为了猜对 ,厂商做了分支预测,现代CPU的正确率可以超过90%
超标量计算机的出现:尽管流水线了,但某些时候,处理器的某些区域还可能是空闲的,比如执行取指令的时候ALU是空闲的,
所以一次性处理多条指令(取指令+解码)会更好,如果多条指令要ALU的不同部分,就多条同时执行,可以再进一步,加多个相同的电路执行出现频次很高的指令。
例如 CPU有四个 八个甚至更多完全相同的ALU,可以同时执行多个数学运算
同时运行多个指令流
用多核处理器,四核,八核,一个CPU芯片有多个独立处理单元,很像是有多个独立的CPU,缓存使得多核之间合作运算
多核不够的时候 可以多个CPU,高端计算机,比如大吞吐量的服务器,超级计算机等