第9章 控制单元的功能
一、微操作命令的分析
(一)取指周期
取指令的过程可归纳为以下几个操作:
1.现行指令地址送至存储器地址寄存器,记作PC→MAR;
2.向主存发送读命令,启动主存作读操作,记作1→R;
3.将MAR(通过地址总线)所指的主存单元中的内容(指令)经数据总线读至MDR内,记作M(MAR)→MDR;
4.将MDR的内容送至IR,记作MDR→IR;
5.指令的操作码送至CU译码,记作OP(PC)→CU;
6.形成下一条指令的地址,记作(PC)+1→PC。
(二)间址周期
间址周期完成取操作数有效地址的任务,具体操作如下:
1.将指令的地址码部分(形式地址)送至存储器地址寄存器,记作Ad(IR)→MAR;
2.向主存发送读命令,启动主存作读操作,记作1→R;
3.将MAR(通过地址总线)所指的主存单元中的内容(有效地址)经数据总线读至MDR内,记作M(MAR)→MDR;
4.将有效地址送至指令寄存器的地址字段,记作MDR→Ad(IR)。此操作在有些机器中可省略。
(三)执行周期
不同指令执行周期的微操作是不同的,下面分别讨论非访存指令、访存指令和转移类指令的微操作:
1.非访存指令
这类指令在执行周期不访问存储器。
(1)清除累加器指令CLA
该指令在执行阶段只完成清除累加器操作,记作0→ACC。
(2)累加器取反指令COM
该指令在执行阶段只完成累加器内容取反,结果送累加器的操作,记作
(3)算术右移一位指令SHR
该指令在执行阶段只完成累加器内容算术右移一位的操作,记作L(ACC)→R(ACC), ACC0→ACC0(ACC的符号位不变)。
(4)循环左移一位指令CSL
该指令在执行阶段只完成累加器内容循环左移一位的操作,记作R(ACC)→L(ACC), ACC0→ACC0(或P-1(ACC))。
(5)停机指令STP
计算机中有一个运行标志触发器G。当G=1时,表示机器运行;当G=0时,表示停机。STP指令在执行阶段只需将运行标志触发器置“0”,记作0→G。
2.访存指令
这类指令在执行阶段都需要访问存储器。为简单起见,这里只考虑直接寻址的情况,不考虑其他寻址方式。
(1)加法指令ADD X
该指令在执行阶段需要完成累加器内容与对应于主存X地址单元的内容相加,结果送累加器的操作,具体如下:
② 将指令的地址码部分送至存储器地址寄存器,记作Ad(IR)→MAR;
②向主存发读命令,启动主存作读操作,记作l→R;
③将MAR(通过地址总线)所指的主存单元中的内容(操作数)经数据总线读至MDR内,记作M(MAR)→MDR;
④给ALU发送加命令,将ACC的内容和MDR的内容相加,结果存于ACC,记作(ACC)+(MDR)→ACC;
当然,也有的加法指令指定两个寄存器的内容相加,如“ADD AX,BX”,该指令在执行阶段无须访存,只需完成(AX)+(BX)→AX的操作。
(2)存数指令STA X
该指令在执行阶段需将累加器ACC的内容存于主存的X地址单元中,具体操作如下:
①将指令的地址码部分送至存储器地址寄存器,记作Ad(IR)→MAR;
②向主存发写命令,启动主存作写操作,记作l→W;
③将累加器内容送至MDR,记作ACC→MDR;
④将MDR的内容(通过数据总线)写入到MAR(通过地址总线)所指的主存单元元中,记作MDR→M(MAR)。
(3)取数指令LDA X
该指令在执行阶段需将主存X地址单元的内容取至累加器ACC中,具体操作如下:
①将指令的地址码部分送至存储器地址寄存器,记作Ad(IR)→MAR;
②向主存发读命令,启动主存作读操作,记作l→R;
③将MAR(通过地址总线)所指的主存单元中的内容(操作数)经数据总线读至MDR内,记作M(MAR)→MDR;
④将MDR的内容送至ACC,记作MDR→ACC。
3.转移类指令
这类指令在执行阶段也不访问存储器。
(1)无条件转移指令JMP X
该指令在执行阶段完成将指令的地址码部分X送至PC的操作,记作Ad(IR)→PC。
(2)条件转移(负则转)指令BAN X该指令根据上一条指令运行的结果决定下一条指令的地址,若结果为负(累加器最高位为1,即A0=1),则指令的地址码送至PC,否则程序按原顺序执行。由于在取指阶段已完成了(PC)+1→PC,所以当累加器结果不为负(即A0=0)时,就按取指阶段形成的PC执行,记作。由此可见,不同指令在执行阶段所完成的操作是不同的。如果将访存指令分为直接访存和间接访存两种,则上述三类指令的指令周期如图9-1所示。
图9-1 三类指令的指令周期
(四)中断周期
中断周期需完成如下操作:
1.将特定地址“0”送至存储器地址寄存器,记作0→MAR。
2.向主存发写命令,启动存储器作写操作,记作1→W。
3.将PC的内容(程序断点)送至MDR,记作PC→MDR。
4.将MDR的内容(程序断点)通过数据总线写入到MAR(通过地址总线)所指示的主存单元(0地址单元)中,记作MDR→M(MAR)。
5.将向量地址形成部件的输出送至PC,记作向量地址→PC,为下一条指令的取指周期作准备。
6.关中断,将允许中断触发器清零,记作0→EINT。
如果程序断点存入堆栈,而且进栈操作是先修改栈指针,后存入数据,只需将上述①改为(SP)-1→SP,且SP→MAR。
上述所有操作都是在控制单元发出的控制信号(即微操作命令)控制下完成的。
二、控制单元的功能
(一)控制单元的外特性
图9-2是反映控制单元外特性的框图。
图9-2 控制单元外特性
1.输入信号
(1)上述各种操作有以下两点应特别注意:
①完成每个操作都需占用一定的时间;
②各个操作是有先后顺序的。
(2)指令寄存器
现行指令的操作码决定了不同指令在执行周期所需完成的不同操作,故指令的操作码字段是控制单元的输入信号,它与时钟配合可产生不同的控制信号。
(3)标志
控制单元有时需依赖CPU当前所处的状态(如ALU操作的结果)产生控制信号,如BAN指令,控制单元要根据上条指令的结果是否为负而产生不同的控制信号。因此“标志”也是控制单元的输入信号。
(4)来自系统总线(控制总线)的控制信号
2.输出信号
(1)CPU内的控制信号
主要用于CPU内的寄存器之间的传送和控制ALU实现不同的操作。
(2)送至系统总线(控制总线)的信号
命令主存或I/O进行读/写、中断响应等。
(二)控制信号举例
控制单元的主要功能就是能发出各种不同的控制信号。
1.不采用CPU内部总线的方式
图9-3示意了未采用CPU内部总线方式的数据通路和控制信号的关系。
图9-3 未采用CPU内部总线方式的数据通路和控制信号
(1)取指周期
①控制信号C0有效,打开PC送往MAR的控制门;
②控制信号C1有效,打开MAR送往地址总线的输出门;
③通过控制总线向主存发读命令;
④C2有效,打开数据总线送至MDR的输入门;
⑤C3有效,打开MDR和IR之间的控制门,至此指令送至IR;
⑥C4有效,打开指令操作码送至CU的输出门。CU在操作码和时钟的控制下,可产生各种控制信号;
⑦使PC内容加1(图中未标出)。
(2)间址周期
①C5有效,打开MDR和MAR之间的控制门,将指令的形式地址送至MAR;
②C1有效,打开MAR送往地址总线的输出门;
③通过控制总线向主存发读命令;
④C2有效,打开数据总线送至MDR的输入门,至此,有效地址存入MDR;
⑤C3有效,打开MDR和IR之间的控制门,将有效地址送至IR的地址码字段。
(3)执行周期
①C5有效,打开MDR和MAR之间的控制门,将有效地址送至MAR;
②C1有效,打开MAR送往地址总线的输出门;
③通过控制总线向主存发读命令;
④C,有效,打开数据总线送至MDR的输入门,至此,操作数存入MDR;
⑤C6、C7同时有效,打开AC和MDR通往ALU的控制门;
⑥通过CPU内部控制总线对ALU发“ADD”加控制信号,完成AC的内容和MDR的内容相加;
⑦C8有效,打开ALU通往AC的控制门,至此将求和结果存入AC。
图中C9和C10。分别是控制Pc的输出和输入的控制信号,C11和C12分别是控制AC的输出和输入的控制信号。
2.采用CPU内部总线的方式
图9-4示意了采用CPU内部总线方式的数据通路和控制信号的关系。
图9-4 采用CPU内部总线方式的数据通路和控制信号
(1)取指周期
①PC0和MARi有效,完成PC经内部总线送至MAR的操作,即PC→MAR;
②通过控制总线(图中未画出)向主存发读命令,即1→R;
③存储器通过数据总线将MAR所指单元的内容(指令)送至MDR;
④MDR0和IRi有效,将MDR的内容送至IR,即MDR→IR,至此,指令送至IR,其操作码字段开始控制CU;
⑤使PC内容加1(图中未标出)。
(2)间址周期
①MDRo和MAR。有效,将指令的形式地址经内部总线送至MAR,即MDR→MAR;
②通过控制总线向主存发读命令,即l→R;
③存储器通过数据总线将MAR所指单元的内容(有效地址)送至MDR;
④MDRo和IRi有效,将MDR中的有效地址送至IR的地址码字段,即MDR→Ad(IR)。
(3)执行周期
①MDRo和MARi有效,将有效地址经内部总线送至MAR,即MDR→MAR;
②通过控制总线向主存发读命令,即l→R;
③存储器通过数据总线将MAR所指单元的内容(操作数)送至MDR;
④MDRo和Yi有效,将操作数送至Y,即MDR→Y;
⑤ACo和ALUi有效,同时CU向ALU发“ADD”加控制信号,使AC的内容和Y的内容相加(Y的内容送至ALU不必通过总线),结果送寄存器Z,即(AC)+(Y)→Z;
⑥Zo和ACi有效,将运算结果存人AC,即2→AC。
现代计算机的CPU都集成在一个硅片内,在芯片内采用内部总线的方式可大大节省芯片内部寄存器之间的连线,使芯片内各部件布局更合理。
(三)多级时序系统
1.机器周期
机器周期可看做是所有指令执行过程中的一个基准时间,机器周期取决于指令的功能及器件的速度。
2.时钟周期(节拍、状态)
在一个机器周期里可完成若干个微操作,每个微操作都需要一定的时间,可用时钟信号来控制产生每一个微操作命令。
3.多级时序系统
机器周期、节拍(状态)组成了多级时序系统。
(四)控制方式
1.同步控制方式
同步控制方式是指,任何一条指令或指令中任何一个微操作的执行都是事先确定的,并且都是受统一基准时标的时序信号所控制的方式。
(1)采用定长的机器周期
这种方案的特点是:不论指令所对应的微操作序列有多长,也不管微操作的简繁,一律以最长的微操作序列和最繁的微操作作为标准,采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行各种不同的指令。这种方案对于微操作序列较短的指令来说,会造成时间上的浪费。
(2)采用不定长的机器周期
采用这种方案时,每个机器周期内的节拍数可以不等。这种控制方式可解决微操作执行时间不统一的问题。通常把大多数微操作安排在一个较短的机器周期内完成,而对某些复杂的微操作,采用延长机器周期或增加节拍的办法来解决,如图9-5所示。
图9-5 延长机器周期示意图
(3)采用中央控制和局部控制相结合的方法
这种方案将机器的大部分指令安排在统一的、较短的机器周期内完成,称为中央控制,而将少数操作复杂的指令中的某些操作(如乘除法和浮点运算等)采用局部控制方式来完成,图9-6所示为中央控制和局部控制的时序关系。
图9-6 中央控制和局部控制的时序关系
2.异步控制方式
异步控制方式不存在基准时标信号,没有固定的周期节拍和严格的时钟同步,执行每条指令和每个操作需要多少时间就占用多少时间。
3.联合控制方式
同步控制和异步控制相结合就是联合控制方式。
4.人工控制方式
(1)Reset(复位)键
按下Reset键,使计算机处于初始状态。
(2)连续或单条执行转换开关
由于调机的需要,有时需要观察执行完一条指令后的机器状态,有时又需要观察连续运行程序后的结果,设置连续或单条执行转换开关,能为用户提供这两种选择。
(3)符合停机开关
有些计算机还配有符合停机开关,这组开关指示存储器的位置,当程序运行到与开关指示的地址相符时,机器便停止运行,称为符合停机。