从功能上看,一般CPU的内部结构可分为:控制单元、逻辑运算单元、存储单元(包括内部总线和缓冲器)。
控制单元:主要负责完成数据处理过程的调配工作。控制单元是整个CPU的指挥控制中心,由指令寄存器IR(InstrucTIon Register)、指令译码器ID(InstrucTIon Decoder)和操作控制器OC(OperaTIon Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。
运算单元:主要是完成执行各个指令完成程序得到最终的结果,是运算器的核心。可以执行算术运算(包括加减乘除等基本运算及附加运算)和逻辑运算(包括移位、逻辑测试或值得比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。
存储单元:主要负责存储原始数据和运算的最终结果。存储单元包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据或者已经处理过的数据。CPU访问寄存器所用的时间比访问内存的时间短。使用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。
CPU工作原理
2、CPU的工作过程我们假设一下,把CPU当做一个造车工厂。然后CPU核心,我可以把他当做一个车间来看。
运算器的功能是算术运算和逻辑运算,相当于工厂里的工人。这些工人的职责就是加工材料、组装车辆等等。
控制器主要的作用就是协调各部件、调度资源、管理资源等。这就跟车间的主任一样,负责协调各部门,调度资源。
随着产品的卖出,产量急剧提升。工厂发现一个车间(核心)效率不够,只能增加一个车间(核心)来提高工厂效率。也就是我们平常听到的CPU核心数,什么双核、四核、八核等等。
渐渐地,随着加工原材料的增多,搬运原材料的工人不够,距离又远,导致工作效率变低,于是工厂决定在车间旁边新增一个暂时存放原材料的空间。这就相当于CPU里的存储单元。这样就不用每次跑那么远的地方,人也不用每次跑。提高了整体工作效率。
随着车间数量的增加。有些车间出货量比较高,有些因为资源调度不好,导致生产低下。这就产生了调度问题。
接着,由于越来越多的车间开工,用电量提升、机器不停地运转、导致热度提升,整个工厂变得异常闷热。工人们开始效率低下。工厂发现了这些问题之后,开始对工厂进行改造。加个散热的窗口。工厂还重新招聘吃饭少(功耗低)、干活多的人(那是机器人)。当然这在现实这有点不太可能。人毕竟是人,不是机器。
CPU的大体过程就是:执行存储的指令序列,即程序。程序执行的过程实际就是不断地取出指令、分析指令、执行指令的过程。
a.取指令阶段
取指令(Instruction Fetch,IF)阶段就是将一条指令从主存中取到寄存器的过程。
程序计算器PC中的数值,就是指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增。
b.指令译码阶段
取出指令后,计算机立即进入指令译码阶段。
在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别区分不同的指令类别以及各种获取操作数的操作的方法。
c.执行指令阶段
取出指令和指令译码之后,就开始执行指令阶段,此阶段的任务是完成指令所规定的各种操作,具体实现指令的功能。为此,CPU的不同部分被连接起来,以执行所需的操作。
d.访问存取数阶段
根据指令需要,有可能要访问主存,读取操作数,这样就进入了访存取数的阶段。
此阶段的任务是:根据指令地址码,得到操作数在主存中的地址,并从主存中读取该操作数用于运算。
e. 结果写回阶段
作为最后一个阶段,结果写回(Write Back,WB)阶段把执行指令阶段的运行结果数据“写回”到某种存储形式。
结果数据经常被写到CPU的内部寄存器中,以便被后续的指令快速地存取;
在有些情况下,结果数据也可被写入相对较慢、但较廉价且容量较大的主存。许多指令还会改变程序状态字寄存器中标志位的状态,这些标志位标识着不同的操作结果,可被用来影响程序的动作。
在指令执行完毕、结果数据写回之后,若无意外事件(如结果溢出等)发生,计算机就接着从程序计数器PC中取得下一条指令地址,开始新一轮的循环,下一个指令周期将顺序取出下一条指令。