问题描述
1.指令控制。完成取指令、分析指令和执行指令的操作,即程序顺序控制
2.操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
3.时间控制。对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
4.数据加工。对数据进行算术和逻辑运算。
5.中断处理。对计算机运行过程中出现的异常情况和特殊请求进行处理。
1.算术逻辑单元:主要功能是进行算术/逻辑运算。
2.通用寄存器组:如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
如果直接用导线连接,相当于多个寄存器同时并且一直向ALU传输数据
解决方法 1.使用多路选择器根据控制信号选择一路输出
例如:进行加法指令ADD,两个操作数分别存在R0和R1,控制器左边控制型号00,右边控制信号01
解决方法 2.使用三态门可以控制每一路是否输出
CPU内部单总线方式:将所有寄存器的输入端和输出端都连接到一条公共的通路上。
1.算术逻辑单元(Arithmetic Logic):主要功能是进行算术/逻辑运算。
2.通用寄存器组(General-Purpose Registers):如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
3.暂存寄存器(Temporary register):用于暂存从主存读来的数据,这个数据不能存放在通用寄存器中,否则会破坏其原有内容。
4.累加寄存器(accumulator register):它是一个通用寄存器,用于暂时存放ALU运算的结果信息,用于实现加法运算。
5.程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志(OP)、符号标志(SF)、零标志(ZF)、进位标志(CF)等。PSW中的这些位参与并决定微操作的形成。
6.移位器:对运算结果进行移位运算。
7.计数器:控制乘除运算的操作步数。
指令周期:CPU从主存中每取出并执行一条指令所需的全部时间。
指令周期常常用若干机器周期来表示,机器周期又叫CPU周期。
一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)。
每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。
1.当前指令地址送至存储器地址寄存器,记做:(PC)→MAR
2.CU发出控制信号,经控制总线传到主存,这里是读信号,记做:1→R
3.将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR)→MDR
4.将MDR中的内容(此时是指令)送入IR,记做:(MDR)→IR
5.CU发出控制信号,形成下一条指令地址,记做:(PC)+1→PC
1.将指令的地址码送入MAR,记做:Ad(IR)→ MAR或Ad(MDR)→MAR
2.CU发出控制信号,启动主存做读操作,记做:1→R
3.将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR)→MDR
4.将有效地址送至指令的地址码字段,记做:(MDR)→Ad(IR)
中断:暂停当前任务去完成其他任务。为了能够恢复当前任务,需要保存断点一般使用堆栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。
1.CU控制将SP减1,修改后的地址送入MAR记做:(SP)-1→SP,(SP)→MAR本质上是将断点存入某个存储单元,假设其地址为a,故可记做:a→MAR
2.CU发出控制信号,启动主存做写操作,记做:1→W
3.将断点(PC内容)送入MDR,记做:(PC)→MDR
4.CU控制将中断服务程序的入口地址(由向量地址形成部件产生)送入PC,记做:向量地址→PC
方案1.单指令周期对所有指令都选用相同的执行时间来完成。指令之间串行执行;指令周期取决于执行时间最长的指令的执行时间。对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。
方案2.多指令周期对不同类型的指令选用不同的执行步骤来完成。指令之间串行执行;可选用不同个数的时钟周期来完成不同指令的执行过程。需要更复杂的硬件设计。
方案3.流水线方案在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。
内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线;
系统总线是指同一台计算机系统的各部件,如CPU、内存、通道和各类I/0接口间互相连接的总线。
1.寄存器之间的数据传送
比如把PC内容送至MAR,实现传送操作的流程及控制信号为:
(PC)→Bus PCout有效,PC内容送总线
Bus→MAR MARin有效,总线内容送MAR
比如CPU从主存读取指令,实现传送操作的流程及控制信号为:
(PC)→Bus→MAR PCout和MARin有效,现行指令地址→MAR
1→R CU发读命令(通过控制总线发出)
MEM(MAR)→MDR MDRin有效
MDR→Bus→IR MDRout和IRin有效
**3.执行算术或逻辑运算 **
比如一条加法指令,微次操作序列及控制信号为:
Ad(IR)→Bus→MAR MDRout和MARin有效
1→R CU发读命令
MEM(MAR)→数据线→MDR MDRin有效
MDRout和Yin有效,操作数→Y MDR→Bus→Y
(ACC)+(Y)→Z ACCout和ALUin有效,CU向ALU发送加命令
Z→ACC Zout和ACCin有效,结果→ACC
设有如图所示的单总线结构,分析指令ADD(R0),R1的指令流程和控制信号。
(R0)是一个间址周期
1.分析指令功能和指令周期功能:((R0))+(R1)→(R0)取指周期、间址周期、执行周期
取指周期:
时序 | 微操作 | 有效控制信号 |
---|---|---|
1 | (PC)→MAR | PCout,MARin |
2 | M(MAR)→MDR | MARout,MDRinE,MemR |
3 | OP(MDR)→IR | MDRout,IRin |
4 | 指令译码器 | |
5 | (PC)+1→ P |
间址周期:
时序 | 微操作 | 有效控制信号 |
---|---|---|
1 | (R0)→MAR | R0out,MARin |
2 | M(MAR)→MDR | MARout,MDRinE,MemR |
3 | (MDR)→Y | MDRout,Yin |
执行周期:
时序 | 微操作 | 有效控制信号 |
---|---|---|
1 | (Y)+(R1) | R1out,ALUin,CU向ALU发送控制信号 |
2 | (Z)→MDR | Zout,MDRin |
3 | (MDR)→M(MAR) | MDRoutE,MARout,MemW |
取指周期:
(PC)→MAR C0
(MAR)→主存 C1
1→R CU给主存发送取指指令
M(MAR)→MDR C2
(MDR)→IR C3
(PC)+1→PC
OP(IP)→CU C4
读取到了ADD,另一个数字已经读到了AC
AD(IR)→MAR C5
MAR→主存
M(MAR)→MDR C2
(MDR)→ALU C7
(AC)→ALU C6
(2)
(3)
假设数据地址已经放入MAR
(4)(5)(6)
所有指令的取指周期、T0节拍下一定要完成(PC)->MAR.则可知C1=FE T0
设计步骤:
1.分析每个阶段的微操作序列(取值、间址、执行、中断四个阶段)(确定哪些指令在什么阶段、在什么条件下会使用到的微操作)
2.选择CPU的控制方式(采用定机器周期还是不定长机器周期?每个机器周期安排几个节拍?)
3.安排微操作时序
4.电路设计(如何用3个节拍完成整个机器周期内的所有微操作?)
原则一微操作的先后顺序不得随意更改
原则二被控对象不同的微操作尽量安排在一个节拍内完成
原则三占用时间较短的微操作尽量安排在一个节拍内完成并允许有先后顺序
程序:由指令序列组成
微程序:由微指令序列组成,每一种指令对应一个微程序
指令是对程序执行步骤的描述
微指令是对指令执行步骤的描述
微命令与微操作一一对应
微指令中可能包含多个微命令
控制存储器(CM):用于存放每条指令的微程序,从地址P到K存储微指令序列
微指令地址寄存器(CMAR):别名:μPC:用于存放每条微指令的地址
地址译码器:将地址码转化为存储单元的控制信号
微指令数据寄存器(CMDR):别名:μIR:用于存放从CM中读取的微指令
一条微指令能定义多个可并行的微命令。
优点:微程序短,执行速度快
缺点:微指令长,编写微程序较麻烦
微指令的编码方式又称为微指令的控制方式,它是指如何对微指令的控制字段进行编码,以形成控制信号。编码的目标是在保证速度的情况下,尽量缩短微指令字长。
(1)直接编码(直接控制)方式
在微指令的操作控制字段中,每一位代表一个微操作命令
某位为“1”表示该控制信号有效
(2)字段直接编码方式
将微指令的控制字段分成若干“段”,每段经译码后发出控制信号
微命令字段分段的原则:
①互斥性微命令分在同一段内,相容性微命令分在不同段内。
②每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。
③一般每个小段还要留出一个状态表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作。
某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有33个微命令,构成5个互斥类,分别包含7、3、12、5和6个微命令,则操作控制字段至少有多少位?
第1个互斥类有7个微命令,要留出1个状态表示不操作,所以需要表示8种不同的状态,故需要3个二进制位。
以此类推,后面4个互斥类各需要表示4、13、6、7种不同的状态,分别对应2、4、3、3个二进制位。
3+2+4+3+3=15位
(3)字段间接编码方式
字段间接编码方式一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,故称为字段间接编码,又称隐式编码。
一条微指令只能定义一个微命令,由微操作码字段规定具体功能
优点:微指令短简单,规整便于编写微程序;
缺点:工作效率低。微程序长,执行速度慢,
2.写出对应机器指令的微操作命令及节拍安排
(1)写出每个周期所需要的微操作(参照硬布线)
(2)补充微程序控制器特有的微操作:
a.取指周期:
Ad(CMDR)→ CMAR
OP(IR)→微地址形成部件→CMAR
b.执行周期:Ad(CMDR)→CMAR
3.确定微指令格式
根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。根据CM中存储的微指令总数,确定微指令的顺序控制字段的位数。最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长。
4.编写微指令码点
取指:根据PC内容访问主存储器,取出一条指令送到IR中。
分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。
执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。
设取指、分析、执行3个阶段的时间都相等,用t表示,按以下几种执行方式分析n条指令的执行时间:
传统冯·诺依曼机采用顺序执行方式,又称串行执行方式。
优点:控制简单,硬件代价小。
缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低。
优点:程序的执行时间缩短了1/3各功能部件的利用率明显提高。
缺点:需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂了。
与顺序执行方式相比,指令的执行时间缩短近2/3。这是一种理想的指令执行方式,在正常情况下,处理机中同时有3条指令在执行。