第5章中央处理器本章内容:CPU的组成和功能指令周期时序产生器和控制方式微程序控制器微程序设计技术硬布线控制器传统和现代CPU介绍5.1CPU的功能和组成CPU的功能程序是存放在内存储器中能够解决某个问题的一组指令序列,计算机中能够完成自动取出指令并执行指令的部件称为中央处理器,简称CPU。CPU有如下基本功能:-指令控制:保证机器按顺序执行程序-操作控制:把指令的各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。-时间控制:保证指令的各种操作信号按照严格的时序关系送往相应的部件,使计算机有条不紊的按序工作。-数据加工:数据加工就是对数据进行算术运算和逻辑运算处理,这是CPU的基本功能。CPU的基本组成-传统CPU基本组成:运算器、控制器。(在诺曼机的定义中)-现代CPU基本组成:运算器、控制器、浮点运算器和Cache。控制器的组成:程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器。控制器的主要功能:1)从内存中取出指令,并指出下一条指令在内存中的位置。2)对指令进行译码并产生相应的控制信号启动规定的动作。3)控制CPU与内存或CPU与输入/输出设备之间数据传递。运算器的组成:算术逻辑单元(ALU)、通用寄存器、数据缓冲寄存器和状态寄存器。运算器的主要功能:1)执行所有的算术运算。2)执行所有的逻辑运算。CPU内部的主要寄存器程序计数器PC用来确定下一条待执行的指令在指令存储器中的地址,顺序寻址PC+1-PC;跳跃寻址将指令中的地址码装入。数据缓冲寄存器用来暂存ALU的运算结果或者由内存读出或者向内存写入的数据或者指令状态寄存器用来保存上次算术或逻辑结果的某些特性,例如运算结果是否有进位、运算结果是否溢出等。指令译码器对指令的操作码进行测试,向操作控制器发送具体操作的信号。通用寄存器组,暂存参加运算的操作数或运算结果,为ALU提供工作区。目前的CPU中有16个、32个或者更多的累加寄存器构成通用寄存器组。控制器运算器数据地址寄存器用来保存CPU所访问的数据存储器单元的地址,在CPU读写数据存储器的期间驱动数据地址总线上的地址信息。Cache指令寄存器保存当前执行的指令,是指令译码器的输入。CPU取指时通过指令总线将指令送指令寄存器。操作控制器与时序产生器在CPU中有很多寄存器,信息从什么地方开始,中间经过哪个寄存器,最后传送到哪个寄存器,都要加以控制。在各寄存器之间建立数据通路的任务,这是由称为操作控制器的部件来完成的。操作控制器的功能:根据指令操作码和时序信号,产生各种操作控制号,以便正确地建立数据通路,从而完成取指令和执行根据设计方法不同,操作控制器可分为:1)采用时序逻辑技术实现的硬布线控制器2)采用存储逻辑实现的微程序控制器3)前两种方式的组合的控制器操作控制器对各部件产生的控制信号必须严格遵守时序关系,这是由时序产生器的部件完成的。时序产生器的功能:对各种操作实施时间上的限制。5.2指令周期CPU从内存取出一条指令并执行该指令;紧接着又是取指令,执行指令……,如此周而复始构成了一个封闭的循环。除非遇到停机指令,否则这个循环将一直继续下去,所以计算机能够自动的工作下去。开始取指令执行指令指令和数据都以二进制的形式存放在内存中,CPU能够准确的判断哪些是指令,哪些是数据并送往相应的寄存器并进行相应的操作,这是计算机自动工作的前提。本节讨论一些典型指令的工作周期,加深对CPU工作过程的理解。指令周期的概念-时钟周期:时钟周期是CPU的基本时间计量单位,它是CPU一切操作的计时标准和基本控制信号,它由计算机的主频决定。8086的主频为5MHZ,则一个时钟周期为200ns80486主频为100MHZ,则一个时钟周期为10ns-机器周期(CPU周期):CPU通过总线从内存读取一个机器字的时间称为一个CPU周期,一般需要4个时钟周期,分别称为T1、T2、T3、T4状态。机器周期T1T2T3T4CLK时钟周期CLK该机器周期读取的一个机器字可以是指令也可以是数据。如果是指令,该机器周期称取指周期-指令周期:执行一条指令需要经过读取指令,指令译码及指令执行的过程,把执行一条指令所需要的时间称为指令周期。不同指令的指令周期是不等长的,最短时间为两个机器周期,一个机器周期取指令,一个机器周期执行指令;有的复杂的指令需要更多机器周期。CLK机器周期机器周期机器周期(取指令)(取有效地址)(执行指令)指令周期T1T2T3T4T1T2T3T4T1T2T3T4非访存指令T1T2T3T4T1T2T3T4机器周期(取指令)指令周期机器周期(执行指令)访存指令下面给出6条指令组成的一个程序,通过每一条指令的取指阶段和执行阶段的分解动作,了解指令的指令周期和CPU执行程序的过程。内存地址助记符说明101MOVR0,R1传送指令:非访存指令102LADR1,6取数指令:访存指令103ADDR1,R2加法指令:非访存指令104STOR2,(R3)存数指令:访存指令105JMP101跳转指令:程序控制指令106ANDR1,R3与指令:非访存指令指令存储器数据存储器内存地址数据说明5***6100LAD指令的操作数7***8***……3040STO指令的操作数MOV指令的指令周期MOV是一条典型的RR指令,属于非访存指令,它需要两个机器周期,其中取指令阶段需要一个机器周期,执行指令阶段需要一个机器周期。第一个机器周期(取指令):-从指存取出指令-程序计数器PC加1-对操作码译码并测试第二个机器周期(执行指令):操作控制器按照指令的要求发出控制信号,完成指令要求的操作,在R0和R1之间传递数据。MOV指令取值周期102+100101012030MOVR0,R110040MOV指令执行周期10200102030MOVR0,R1101010040LAD指令的指令周期LAD是一条RS型访存指令,它需要三个机器周期,其中取指令阶段需要一个机器周期,过程与MOV指令完全相同,执行指令阶段需要两个机器周期。第一个机器周期(取指令):-从指存取出指令-程序计数器PC加1-对操作码译码并测试第二个机器周期(执行指令):将指令中的地址码6送数据地址寄存器驱动数存。第三个机器周期(执行指令):从数存6单元取数并送寄存器R1。LAD指令取值周期103+110101022030LADR1,610040LAD指令执行周期10310102030LADR1,6610040100100ADD指令的指令周期ADD是一条RR型非访存指令,它需要两个机器周期,其中取指令阶段需要一个机器周期,过程与MOV指令完全相同,执行指令阶段需要一个机器周期。第一个机器周期(取指令):-将PC寄存器中的103送指令地址总线,启动读命令-所选指存103单元的ADD指令经指令总线送入指令寄存器IR-程序计数器PC加1,变为104,为下一条指令做好准备-指令寄存器的操作码(OP)送指令译码器被译码测试第二个机器周期(执行指令):-选中R1和R2通用寄存器,R1为源寄存器,R2为目标寄存器-ALU做R1和R2的加法运算-ALU送结果120到数据总线-将数据总线的数据打入缓冲寄存器DR,运算结果特征位保存在状态寄存器PSW中-将缓冲寄存器DR中的数据打入R2,R2的内容变为120ADD指令执行周期1041002030ADDR1,R21201010040120STO指令的指令周期ST0是一条RS型访存指令,它需要三个机器周期,其中取指令阶段需要一个机器周期,整个过程与MOV指令完全相同,执行指令阶段需要两个机器周期。第一个机器周期(取指令):-从指存取出指令-程序计数器PC加1-对操作码译码并测试第二个机器周期(执行指令):将通用寄存器R3中的地址码30送数据地址寄存器驱动数存。第三个机器周期(执行指令):从寄存器R2中的数据120送数据总线写入数存30单元。STO指令执行周期10510030STOR2,(R3)101004030120120JMP指令的指令周期JMP是一条程序控制指令,需要两个机器周期,其中取指令阶段需要一个机器周期,执行指令阶段需要一个机器周期。第一个机器周期(取指令):-从指存取出指令-程序计数器PC加1-对操作码译码并测试第二个机器周期(执行指令):将JMP指令的地址码101送程序计数器PC。JMP指令执行周期10610030JMP10110100120120101用方框图语言表示指令周期-方框代表一个CPU周期,方框中的内容表示数据通路的操作或某种控制操作。-菱形表示某种判别或测试,不过时间上它依附于紧接它的前面一个方框的CPU周期,而不单独占用一个CPU周期。-~符号是公操作符号,表示一条指令已经执行完毕而转入公操作(CPU每执行完一条指令,都要测试外部设备有无中断请求,DMA控制器有无DMA请求,这些操作称为公操作)。如果没有公操作,CPU转入下一条指令的执行。-DBUS表示数据总线-IBUS表示指令总线-ABUS(D)表示数据地址总线-ABUS(I)表示指令地址总线-RD(I)表示读指存,RD(D)表示读数存,-WE(D)表示写数存取指周期MOVLADADDSTOJMPR1-ALUALU-DRDR-R0IR-PCIR-ARAR-ABUS(D)M-DRDR-R1RD(D)R1-ALUR2-ALUALU-DRDR-R2执行周期WE(D)R3-ARR2-MPC-ABUS(I)M-IBUS-IRPC+1-PC译码测试RD(I)例:某计算机有如下部件:ALU,主存M,数据寄存器DR,地址寄存器AR,程序计数器PC,指令寄存器IR,通用寄存器R0—R3,暂存器C和D。1)请将各逻辑部件组成一个计算机的数据通路,并标明数据流向。2)画出“ADDR1,(R2)”指令的指令周期流程图,指令功能是将R1中的数据和R2所指内存单元的数据相加结果送R1(假设该指令地址已在PC中)。移位器DCPCIRR3R2R1R0ARMDRALU+1移位器DCPCIRR3R2R1R0ARMDRALU+1ADDR1,[R2]指令的指令周期流程图如下所示,该指令功能是将R1中的数据和R2所指内存单元的数据相加结果送R1。M→DR→IR(R1)→C(R2)→ARM→DR→D(C)+(D)→R1译码(PC)→AR,(PC)+1送当前指令地址到AR,PC+1取当前指令到IR,指令译码取R1操作数→C暂存器R2中的内容是内存地址从内存取出数→D暂存器暂存器C和D中的数相加后送R1例:某32位CPU其内部结构如下图所示,其中一个累加寄存器AC,一个状态条件寄存器和其它四个寄存器,各部分之间的连线表示数据通路,箭头表示信息传送方向。标出A~D四个寄存器的名称。写出CPU从内存中读取指令的全过程。CPU主存储器MACACBDALU状态寄存器指令译码器+15.3时序产生器时序信号的理解CPU从内存取出的指令送指令寄存器,取出的数据送累计器AC或运算器ALU,但指令和数据都是以二进制形式存放在存储器中,CPU如何知道取得的是指令还是数据?CPU识别指令和数据的方法:从时间上来说,取指令事件发生在指令周期的第一个CPU周期中,即发生在“取指令”阶段,而取数据事件发生在指令周期的后面几个CPU周期中,即发生在“执行指令”阶段。不仅如此,CPU还将一个机器周期分为分为若干个更小的时间段(1个机器周期一般等于4个时钟周期),同时规定在1个时间段内CPU的动作。这种时间的约束对CPU来说是必要的而且非常严格,这种时间约束就是时序控制,是由时序产生器的时序信号来控制的。CLKT1T2T3T4时钟周期机器周期机器周期T1T2T3T4T1T2T3T4时序产生器如何生成规律的T1,T2,T3,T4信号和其他信号序列呢?时序产生器的构成时序信号产生器由:时钟源、环形脉冲发生器、节拍脉冲和读写时序译码逻辑、启停控制逻辑等部分组成。环形脉冲发生器时钟脉冲源节拍脉冲和读写时序译码逻辑RD’WE’启停控制逻辑RD0WE0T10T30T20T40启动停止RDWET1