控制单元是上帝:掌控一切;
运算单元只负责算术和逻辑运算,运算的指令由控制单元提供,数据由寄存器提供;
存储单元:一方面给运算单元提供输入输出,另一方面在控制单元的控制下和内存通信;
控制单元使用运算单元的计算结果进行自我调整;
工作流程猜测:
获取指令->指令译码- >指令执行->寄存器在控制器控制下从内存读取数据->运算单元使用寄存器内容进行计算->寄存器在控制器控制下向内存写数据;
注意:某些指令,控制单元会根据寄存器的状态进行自我调整,不使用运算单元(当然是运算单元运算的结果)。
控制单元:控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。
运算单元:是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。
我们将上图细化一下,可以得出CPU的工作原理概括如下:
1. 控制器的组成和功能: 控制器由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成。它是计算机指挥系统,完成计算机的指挥工作。尽管不同计算机的控制器结构上有很大的区别,当就其基本功能而言,具有如下功能:
- 取指令 从内存中取出当前指令,并生成下一条指令在内存中的地址。
- 分析指令 指令取出后,控制器还必须具有两种分析的功能。一是对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作。比如一次内存读/写操作,一个算术逻辑运算操作,或一个输入/输出操作。二是分析参与这次操作的各操作数所在的地址,即操作数的有效地址。
- 执行指令 控制器还必须具备执行指令的功能,指挥并控制CPU、内存和输入/输出设备之间数据流动的方向,完成指令的各种功能。
- 发出各种微操作命令 在指令执行过程中,要求控制器按照操作性质要求,发出各种相应的微操作命令,使相应的部件完成各种功能。
- 改变指令的执行顺序 在编程过程中,分支结构、循环结构等非顺序结构的引用可以大大提供编程的工作效率。控制器的这种功能可以根据指令执行后的结果,确定下一步是继续按原程序的顺序执行,还是改变原来的执行顺序,而转去执行其它的指令。
- 控制程序和数据的输入与结果输出 这实际也是一个人机对话的设计,通过编写程序,在适当的时候输入数据和输出程序的结果。
- 对异常情况和某些请求的处理 当计算机正在执行程序的过程中,发生了一些异常的情况,例如除法出错、溢出中断、键盘中断等。
2. 运算器的组成和功能: 运算器由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,它是数据加工处理部件,完成计算机的各种算术和逻辑运算。相对控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。运算器有两个主要功能:
- 执行所有的算术运算,如加、减、乘、除等基本运算及附加运算;
- 执行所有的逻辑运算,并进行逻辑测试,如与、或、非、零值测试或两个值的比较等。
②ADD 30指令
ADD 30指令是一条访问主存取数并执行加法的指令,其指令周期由3个CPU周期组成,其中取指令阶段需要1个CPU周期,执行指令阶段需要2个CPU周期。
图3-7 ADD 30指令周期
在第1个CPU周期,即取指令阶段,CPU从主存取出指令并译码,以确定执行何种操作;
执行指令阶段由2个CPU周期组成,其中在第2个CPU周期,CPU将指令的地址码(操作数地址)部分(30)送往地址寄存器,并完成地址译码,而在第3个CPU周期,CPU从主存取出操作数,并执行加法操作。
③STA 40指令
STA 40指令是一条访问主存的存数指令,其指令周期由3个CPU周期组成,其中取指令阶段需要1个CPU周期,执行指令阶段需要2个CPU周期。
图3-8 STA 40指令周期