什么是CPU?
CPU作为电脑逻辑和运算的核心部分,负责处理电脑发送的指令,并将指令进行编排。
CPU的核心组成分为Control Unit 和 Arithmetic and logical unit (ALU)。
Control Unit
首先获取需要执行的指令,编排这些需要执行的指令,告诉CPU需要具体需要干嘛。
Register
(寄存器或暂存器)可以用来存储数据。
Memory
(RAM)是一种功能更加强大的存储部分,相对寄存器而言可以存储更多的数据,具有易失性,在断电的时候数据丢失。
CPU处理的指令有算数加减,逻辑与或,还有诸如move,input,output, goto, if, goto call之类的指令。
计算机所能执行的指令汇总叫做指令集
(instruction set)。
一个化简版的CPU结构大致长这样:
Clock cycle
时钟周期决定计算机的运行速度。
CPU clock cycle is measure in gHz(Gigahertz). 1gHz is equal to 10 ⁹ Hz(hertz). A hertz means a second. So 1Gigahertz means 10 ⁹ cycles per second.
时钟周期越小,计算机处理效率越高。
Clock cycle = 1/clock rate
CPU Time = number of clock cycle / clock rate
假设一系列指令要实现两数相加,具体的实现如下。
第一步,LOAD_A 8: 假设RAM中的指令是<1100 1000>前四位是操作码(op code)后面是所保存的数据。指令需要解码来载入A,即将指令后四位数据1000存入寄存器(register)。
第二步,LOAD_B 2:
和上述类似。
第三步,ADD B A:
控制单元(CU)告诉ALU将两数相加,并将最终结果存回到A
第四步,STORE_A 存储。
值得一提的是,CPU性能由程序执行时间决定。
Performance = 1/execution time
Relative performance = execution time 1/ execution time 2
假设一个程序要执行20ms,则CPU性能就是1/20 = 0.05ms
什么是单周期CPU,多周期CPU,流水线CPU?
单周期CPU一个时钟周期完成一条指令。时钟周期由需要执行时间最长的那个指令所决定。
多周期CPU是将一条指令的执行分成多个阶段执行分成多个阶段,每个阶段用一个周期完成。假设每执行一条指令要花n个时钟周期,则计算机CPI(Cycle Per Instruction)(每条指令的时钟周期数)为n。
举一个极端的例子,假设有三条指令,执行时间分别为3s 5s 7s
单周期CPU就会将每条指令的执行时间设置为7秒,三个周期执行完,共执行21秒。
多周期CPU执行大致相当于如果时钟周期为3s
当然这个例子非常极端,现代CPU的处理速度远远快于这个例子。CPU主频到了2.5Ghz上下,浮点运算加减大致3-5个周期,乘除需要10-20个周期,频率2.5Ghz,G是( 1 0 9 10^9 109),因此CPU每秒可以计算上亿次。况且CPU是使用流水线作业,能提高数倍,甚至数十倍。
至于流水线CPU就更有意思了。有点像统筹安排,或者工厂流水线那样。具体如图所示。
流水线不提高任何一次整理衣物的效率,而是将整个系统安排起来,在有需求和有空缺的时候进行作业,从而从整个系统的角度优化处理速度。