CPU内部由运算器和控制器组成,CPU五大功能:指令控制、操作控制(一条指令的功能通过若干操作信号的组合来实现,CPU管理并产生每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行操作)、时间控制(对各种操作加以时间上的控制。要为每条指令按时间顺序提供应有的控制信号)、数据加工和中断处理。
运算器:
包括ALU、暂存寄存器、累加寄存器ACC、通用寄存器组、标志寄存器、移位器和计数 器。暂存寄存器用来暂存从主存读来的数据(对程序员透明),
控制器:
' 包括PC、IR、指令译码器、MAR、MDR、时序系统和为操作信号发生器组成。
对于用户不可见的寄存器有:MAR、MDR、IR、暂存寄存器。
该节注意内容:课后题23题
相关概念:指令周期、机器周期。指令周期是CPU从主存中取出一条指令并执行的时间。一条机器周期又包含若干时钟周期。CPU常采用终端方式实现主机和I/O设备的信息交换,当CPU执行完一条指令结束前,都会检测有无中断请求,若有则进入中断周期。四个周期都有CPU访存操作。在取指周期访存是为了取指令,间址周期访存是为了得到有效地址EA,执行周期访存是为了获得操作数,中断周期访存是为了保存程序断点。
取指周期要进行的操作:将PC的值传入MAR中,MAR根据PC的值访问相应内存将数据放到MDR中,MDR将得到的指令放入IR中,最后CU发出控制信号使PC+1。
间址周期要进行的操作:将IR的地址码部分放入MAR中,MAR根据该值访存,数据被放在MDR中。
执行周期具体问题具体分析。
中断周期:栈顶指针SP-1,再将PC的内容写入栈中,再将中断服务程序入口地址写入到PC中转去执行中断服务程序。
1.单指令周期:每条指令中固定的时钟周期内完成,指令之间串行执行
2.多指令周期:不同类型的指令的执行过程选用不同个数的时钟周期来完成。但是指令之间依然串行。不再要求所有指令占用相同的执行时间。
3.流水线方案:指令之间可以并行执行。
为了硬件设计方便,指令字长一般为存储字长的整数倍。
控制器的主要功能有:1)从主存中取出一条指令,并指出下一条指令的所在位置。2)对指令进行译码和测试,产生相应的操作控制信号,以便启动规定的动作。3)指挥并控制CPU、主存、I/O设备之间的数据流动方向。
而控制器的设计可以分为两种:硬布线控制器和微程序控制器。
通过当前的时钟节拍输入、标志寄存器输入、译码电路的输入 和当前的机器周期输入来唯一确定应该发出的控制信号。当前的机器周期通过FE、IND、EX、INT四个触发器当前的值来确定。(还有可能接受来自系统总线的控制信号,如中断请求、DMA请求)
设计步骤:分析指令集所有指令所需要的微操作,比如每条指令的取值周期都包括了相同的微操作:
#1 PC——>MAR (PCout、MARin有效)
#2 M(MAR)——>MDR (MemR和MDRinE有效)
#3 PC+1——>PC
#4 MDR——>IR (MDRout、IRin有效)
#5 OP(IR)——>ID
对于所有指令,列出要进行的微操作,将这些微操作组合成一个个节拍,组合节拍时可以将相互并行执行且前后位置不冲突的两个微操作组成一个节拍,例如上面的取值周期中的#1可以作为一个节拍,#2和#3可以作为第二个节拍,#4和#5可以作为第三个节拍。但是也要注意一个节拍只能有一次访存操作的微操作,否则可能会导致这组微操作无法在节拍结束时完成,再分析每一个微操作会在哪些指令的哪些周期内被用到,写出该控制信号为1时的逻辑表达式。比如#2号微操作的控制信号(微命令)为1的表达式为:C=FE·T1+IND·T1(ADD+STA+LDA+JMP+BAN)+EX·T1·(ADD+LDA),如此便设计出了该控制信号的电路,再以此步骤将所有微操作的电路设计出来。
硬布线控制器应用于RISC CPU,具有执行速度快,指令扩充难度高的特点。
微程序控制器:
将指令的运行步骤分为一条条的微指令,以每条指令都对应一条微程序,执行一条指令也就是执行与该指令对应的微程序的思想设计控制器。将每条指令的微程序放到一个ROM存储器中,微程序控制器的基本结构如图所示:
工作流程为:首先自动将取值程序的入口地址送入CMAR,取指程序的每条微指令执行完之后根据自身的下地址来给出该周期要执行的下一条微指令的地址。当取指周期完成以后,由微地址形成部件根据OP Code给出执行周期的入口地址,由此再一条一条执行当前指令的执行周期的微程序微指令。CMAR在这里同时扮演了PC和MAR的功能,CMDR同时扮演了MDR和IR的功能。
对于取指周期和中断周期,所有的微程序共用同一个。但是每一个微程序对于自己而言都包括了取指周期和中断周期。对于有n种指令的指令系统,控制存储器中的微程序数至少是n+1 。
微指令的编码方式
每条微指令的控制信号根据微指令的,控制信号的产生与微指令的编码方式直接相关,由微指令的相应字段给出,如何对控制信号进行编码,有3种方式:
1)直接编码方式:微指令的相应字段即为控制信号,当前微操作需要激活哪些控制信号,设计时将微指令的对应字段设为1即可。这样做虽然直观,但是对于n个微命令,就得有n位的控制字段。位数取决于整个CPU需要多少个控制信号。会使控制存储器的容量变得很大。
2)字段直接编码方式:用n位2进制来区分2的n次方个不同的微操作,再经过译码器产生对应的控制信号,但是如果将n位全部用来区分不同的微命令,会导致某些原本可以并行的微命令无法被同时启动,因此可以将n位分成不同的段,每一段区分互斥的微操作,段间的微操作可以并行,每一个段还得留出一个状态表示本字段不发出任何命令。
相应例题:某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码方式,共有33个微命令,构成5个互斥类,分别包含7,3,12,5和6个微命令,则操作控制字段至少有多少位:
解:7+1=8 需要3位,3+1=4 需要2位,12+1=13,需要4位,5+1=6 需要3位,6+1=7 需要3位。共需要3+2+4+3+3=15位
3)字段间接编码方式
有多层译码器,某些微指令的字段不直接作为控制信号,而是与另一段的译码结果结合作为下一层译码器的输入信号,再经过一层译码得到最终的控制信号。
微指令的格式:
了解微指令如何发出控制信号(微命令)之后,则设计微指令的时候,往往还有以下的格式:(微指令的格式与编码方式有关)
1)水平型微指令:如果把微指令分为操作控制字段和顺序控制字段,操作控制字段就可以唯一确定一个微操作。这样做便于并行,且微程序会相对短一些。
2)垂直型微指令:将微指令再细分为微操作吗,目的地址和源地址三部分。不能并行、效率低。
3)混合型微指令
比较:垂直型微指令不能并行,执行速度慢,但是每一条微指令的字长会相对短一些,但是微指令的条数会更多。
微指令的地址形成方式:
1)通过下地址字段给出(一般在执行同一机器周期的指令时),又称为断定方式。
2)通过OP Code形成,OP Code经微指令地址形成部件后形成。
3)增量计数器法:CMAR+1——> CMAR
4)由硬件直接产生微程序的入口地址。
5)通过各种标志决定微指令分支转移地址。