本文共--字 阅读约--分钟 | 浏览: -- Last Updated: 2021-04-18
CPU (Central Processing Unit) 即中央处理器,计算机对信息进行处理(或计算)是通过程序的执行来实现的,CPU要控制整个程序的执行,它应具有以下基本功能:
除了以上4个基本功能外,CPU还必须能控制程序的输入和运算结果的输出,以及对总线管理,甚至能处理机器运行过程中出现的异常情况(如掉电)和特殊请求(如打印机请求打印一行字符),即应具有中断处理能力。
现代CPU主要由运算器、控制器和Cache三大部分组成。
运算器:是计算机的加工处理部件,是CPU的重要组成部分,运算器执行的全部操作都是由控制器发出的控制信号来指挥的,它是计算机的执行部件。
控制器:主要是程序计数器 (Program Counter, PC)、指令寄存器 (Instruction Register, IR)、指令译码器 (Instruction Decoder, ID)、微命令发生器 (Operate Controller, OC)和时序信号产生器组成,负责协调并控制计算机个功能部件执行程序的指令序列。基本功能是:
寄存器(Cache): 是用来暂时保存运算和控制过程中的中间结果、最终结果以及控制、状态等信息的。
程序计数器:为了保证程序能够连续执行下去,CPU必须具有某种手段来确定下一条指令的地址,而程序计算器正是起到这种作用的专用寄存器。在程序开始执行前,必须将程序的第一条指令所在的存储单元地址送入PC,当执行指令时,CPU将自动修改PC的内容,其内容总是保持将要提取的下一条指令地址。
指令寄存器IR:用于暂存从存储器取出的当前指令码,以保证在指令执行期间能够指令译码器ID提供稳定可靠的指令码,IR中操作码字段的输出就是指令译码器ID的输入,操作码一经译码后,即可向微命令发火说呢过器发出具体操作的特定控制信号。
状态字寄存器:用来存放程序状态字,程序状态字 (Program Status Word, PSW)用于记录现行程序的运行状态和机器的工作方式,是参与控制程序执行的重要依据之一,主要包含两部分内容,状态标志与控制标志。
存储器地址寄存器 (Memory Address Register, MAR)用来保存当前CPU所要访问的内存单元或I/O设备的地址。由于内存和CPU之间存在着操作速度上的差异,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。
存储器数据寄存器 (Memory Data Register, MDR)用来暂时存放CPU与存储器或I/O设备之间待传送的数据。作用是:
通常把各寄存器之间信息流动的通路,称为“数据通路”,对于信息从什么地方开始,中间经过哪些部件、最后传送到哪个寄存器都要加以控制,这些控制功能是由微命令发生器来完成的。微命令发生器的功能,就是根据指令操作码和时序信号产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。
因为计算机高速地进行工作,每一工作的时间都是极其严格的,不能出现丝毫差错,时序信号产生器的作用就是对各种操作实施时间上的控制。
计算机之所以能自动工作,是因为CPU能自动地从存储器里取出一条指令并执行这条指令;紧接着又取出一条指令,执行指令… 周而复始,构成一个封闭的循环,除非遇到停机指令才能停止执行。
CPU取出一条指令并分析指令、执行该指令,都要完成一系列的操作,完成这一系列操作所需要的时间称为一个指令周期,指令周期通常用若干个CPU周期来表示,每个CPU周期完成一项基本任务,如取指令、取操作数、寻址等等,由于指令的功能不同,所以包含的CPU周期有的多,有的少。
MOV 传送指令, MOV A, B
把B中的数据传给A,一般包含两个CPU周期,取指令和执行指令,其中取值周期CPU执行的动作如下:
MOV执行周期中,CPU执行的动作如下:
LAD 取数指令,LAD B, [30]
从内存30号单元中取数传给B。由三个CPU周期组成,第一个CPU周期为取值周期,执行周期由另外两个CPU周期组成。
取值周期与MOV指令一样,而LAD的执行周期为:
ADD 加法指令,ADD A, B
执行 A + B 结果赋给A,其指令周期由两个CPU周期完成,一个CPU周期为取指周期,一个CPU为执行周期。
取指周期与MOV指令一样,而ADD的执行周期为:
STA存数指令,STA I[31] A
,把 A 中的数据存入31号单元的内容为地址的内存单元中,即 [A] -> (31)
,其指令周期由四个CPU周期组成,其中一个CPU周期为取指周期,三个CPU周期为执行周期。
取指周期与MOV指令一样,而STA的执行周期为:
JMP无条件转移指令,JMP 22
下一条指令转移到22号单元去取,即 22 -> PC,其指令周期为一个取值周期和一个执行周期。
执行周期的CPU执行动作如下: