3.3 CPU的工作原理
计算机中90%以上的数据信息处理是由CPU来完成的,它的工作速度直接影响到整部计算机的运行速度。CPU可以说是计算机里最重要的部件,它的性能直接决定了计算机的性能。
3.3.1 CPU的基本构成
以前CPU主要由运算器和控制器两大部分组成,随着集成电路的发展,目前CPU芯片集成了一些逻辑功能部件来扩充CPU的功能,如浮点运算器、Cache和MMX等。CPU内部结构如图3-4所示。下面我们重点介绍控制器和运算器。
图3-4 CPU内部结构图
1. 控制器的组成和功能
控制器由指令寄存器、程序计数器、地址寄存器、指令译码器、时序产生器和操作控制器组成。它是计算机的指挥系统,完成计算机的指挥工作。尽管不同计算机的控制器在结构上有很大的区别,但就其基本功能而言,都具有以下功能。
(1)取指令。从内存中取出当前指令,并生成下一条指令在内存中的地址。
(2)分析指令。指令取出后,控制器还必须具有两种分析的功能。一是对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作。例如一次内存读/写操作、一个算术逻辑运算操作,或一个输入/输出操作。二是分析参与这次操作的各操作数所在的地址,即操作数的有效地址。
(3)执行指令。控制器还必须具备执行指令的功能,指挥并控制CPU、内存和输入/输出设备之间数据流动的方向,完成指令的各种功能。
(4)发出各种微操作命令。在指令执行过程中,要求控制器按照操作性质要求,发出各种相应的微操作命令,使相应的部件完成各种功能。
(5)改变指令的执行顺序。在编程过程中,分支结构、循环结构等非顺序结构的引用可以大大提高编程的工作效率。控制器的这种功能可以根据指令执行后的结果,确定下一步是继续按原程序的顺序执行,还是改变原来的执行顺序去执行其他的指令。
(6)控制程序和数据的输入与结果输出。这实际也是一个人机对话的设计,通过编写程序,在适当的时候输入数据和输出程序的结果。
(7)对异常情况和某些请求的处理。当计算机正在执行程序的过程中发生了一些异常的情况,例如除法出错、溢出中断、键盘中断等,应能够对此进行处理。
下面详细介绍控制器各组成部件的功能与结构。
(1)指令寄存器(IR)。当CPU执行一条指令时,先把它从内部存储器取到缓冲寄存器中,然后再送到指令寄存器,接着送到指令译码器,产生各种微操作指令,控制其他组成部件工作,完成所需的功能。
(2)程序计数器(PC)。为了保证程序能够周而复始、有条不紊地执行下去,CPU必须具有某些功能以保证在执行完当前指令时能知道下一条指令的地址。而程序计数器(PC)正是起到这种作用,所以通常又称为指令计数器。程序计数器的工作分两种情况:一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址送入PC,这在程序加载到内存时已确定,因此PC的内容即是内存的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令是按顺序来执行的,所以修改的过程通常只是简单地对PC加1。当遇到转移指令如JMP指令时,后继指令的地址(即PC的内容)不能像通常一样按顺序来取得,而是根据当前指令的地址加上一个向前或向后转移的位移量的和得到,或者根据转移指令给出的直接转移的地址得到。因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。
(3)地址寄存器(AR)。地址寄存器用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。地址线和数据线大多数是分时复用的,也需要地址存储器来暂时保存有关的地址数据。可以明显地看到,当CPU和内存进行信息交换,即CPU向内存存/取数据时,或者CPU从内存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,如果把外围设备的设备地址作为内存的地址单元来看待,那么,当CPU和外围设备交换信息时,同样要使用地址寄存器和数据缓冲寄存器。地址寄存器的结构和数据缓冲寄存器、指令寄存器一样,通常使用单纯的寄存器结构。信息的存入一般采用电位-脉冲方式,即电位输入端对应数据信息位,脉冲输入端对应控制信号,在控制信号的作用下,瞬时地将信息打入寄存器。
(4)指令译码器(ID)。指令分为操作码和地址码两部分,为了能执行任何给定的指令,必须对操作码进行分析,以便识别所完成的操作。指令译码器的功能就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,从而完成所需的功能。
2. 运算器的组成和功能
运算器由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,它是数据加工处理部件,完成计算机的各种算术和逻辑运算。相对于控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。运算器有以下两个主要功能。
(1)执行所有的算术运算,如加、减、乘、除等基本运算及附加运算。
(2)执行所有的逻辑运算,并进行逻辑测试,如与、或、非、零值测试或两个值的比较等。
下面详细介绍运算器各组成部件的组成和功能。
(1)算术逻辑单元(ALU)。算术逻辑单元是运算器的重要组成部件,负责处理数据,实现对数据的算术运算和逻辑运算。
(2)累加寄存器(AC)。累加寄存器通常简称为累加器,它是一个通用寄存器。其功能是:当运算器的算术逻辑单元执行算术或逻辑运算时,为其提供一个工作区。例如,在执行一个减法运算前,先将被减数暂取出放在AC中,再从内存中取出减数,然后同AC的内容相减,所得的结果送回AC中。运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器。目前CPU中的累加寄存器多达16个或32个,甚至更多。当使用多个累加器时,就变成通用寄存器堆结构,其中任何一个既可存放源操作数,也可存放结果操作数。在这种情况下,需要在指令格式中对寄存器号加以编址。
(3)数据缓冲寄存器(DR)。在CPU中引脚大多是复用的,在不同的时间内具有不同的功能。在对内存进行读写操作时,数据缓冲寄存器用来暂时存放由内存读写的一条指令或一个数据字,将在不同的时间段内读写的数据隔离开来。数据缓冲寄存器的作用有以下几个:作为CPU和内存、外部设备之间数据传送的中转站;补偿CPU和内存、外围设备之间在操作速度上的差别;在单累加器结构的运算器中,数据缓冲寄存器还可兼作操作数寄存器。
(4)状态条件寄存器(PSW)。状态条件寄存器保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,大体包括两种:一是状态标志,如运算结果进位标志(C)、运算结果溢出标志(V)、运算结果为零标志(Z)、运算结果为负标志(N);二是控制标志,如中断标志(I)、方向标志(D)、单步标志等。这些标志位通常分别由1位触发器保存,它保存了当前指令执行完成之后的状态。通常,一个算术操作产生一个运算结果,而一个逻辑操作则产生一个判决。
3.3.2 CPU的工作过程
CPU的工作原理其实很简单,它的内部元件主要包括控制单元、逻辑单元、存储单元三大部分。指令由控制单元分配到逻辑单元,经过加工处理后,再送到存储单元里等待应用程序的使用。CPU的工作原理就像一个工厂对产品的加工过程:进入工厂的原料(指令),经过物资分配部门(控制单元)的调度分配,被送往生产线(逻辑单元),生产出成品(处理后的数据)后,再存储到仓库(存储单元)中,最后等着拿到市场上去卖(交由应用程序使用)。图3-5所示为CPU的工作原理。
图3-5 CPU的工作原理