本文主要是介绍计算机组成原理 第八章(控制单元的功能)—第一节(微操作命令的分析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写在前面:
- 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
-
视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili
一、微程序
1、控制单元发出微操作命令
控制单元具有发出各种微操作命令(即控制信号)序列的功能。
概括地说,计算机的功能就是执行程序,在执行程序的过程中,控制单元要发出各种微操作命令,而且不同的指令对应不同的命令。进一步分析发现,完成不同指令的过程中,有些操作是相同或相似的,如取指令、取操作数地址(当间接寻址时)以及进入中断周期由中断隐指令完成的一系列操作。
2、指令与程序、微指令与微程序
(1)程序由指令序列组成,微程序由微指令序列组成,每一种指令对应一个微程序。
(2)指令是对程序执行步骤的描述,微指令是对指令执行步骤的描述,换句话说,指令是对微指令功能的封装。
(3)微指令中可能包含多个微命令,微命令与微操作一一对应。
(4)同一个微操作可能在不同指令的不同阶段被使用。
(5)控制单元CU发出一个微命令,可完成这个微命令对应的微操作。
二、取指周期
假设CPU内有4个寄存器,如下图所示。MAR与地址总线相连,存放欲访问的存储单元地址;MDR与数据总线相连,存放欲写入存储器的信息或最近从存储器中读出的信息;PC存放现行指令的地址,有计数功能;R存放现行指令。
取指令的过程可归纳为以下几个操作:
①现行指令地址送至存储器地址寄存器,记作PC→MAR(→地址线)。
②向主存发送读命令,启动主存做读操作,记作1→R。
③将MAR(通过地址总线)所指的主存单元中的内容(指令)经数据总线读至MDR内,记作M(MAR)→MDR。
④将MDR的内容送至IR,记作MDR→IR。
⑤指令的操作码送至CU译码,记作OP(IR)→CU。
⑥形成下一条指令的地址,记作(PC)+1→PC。
三、间址周期
间址周期完成取操作数有效地址的任务,具体操作如下:
①将指令的地址码部分(形式地址)送至存储器地址寄存器,记作d(IR)→MAR。
②向主存发送读命令,启动主存做读操作,记作1→R。
③将MAR(通过地址总线)所指的主存单元中的内容(有效地址)经数据总线读至MDR内,记作M(MAR)→MDR。
④将有效地址送至指令寄存器的地址字段,记作MDR→Ad(IR)。此操作在有些机器中可省略。
四、执行周期
1、非访存指令执行周期的微操作
(1)清除累加器指令CLA:
该指令在执行阶段只完成清除累加器操作,记作。
(2)累加器取反指令COM:
该指令在执行阶段只完成累加器内容取反,结果送累加器的操作,记作。
(3)算术右移一位指令SHR:
该指令在执行阶段只完成累加器内容算术右移一位的操作,记作,
(ACC的符号位不变)。
(4)循环左移一位指令CSL:
该指令在执行阶段只完成累加器内容循环左移一位的操作,记作,
(或
)。
(5)停机指令STP:
计算机中有一个运行标志触发器G,当G=1时表示机器运行,当G=0时表示停机。STP指令在执行阶段只需将运行标志触发器置“0”,记作。
2、访存指令执行周期的微操作
(1)加法指令ADD X:
该指令在执行阶段需要完成累加器内容与对应于主存X地址单元的内容相加,结果送累加器的操作,具体如下:
①将指令的地址码部分送至存储器地址寄存器,记作Ad(IR)→MAR。
②向主存发读命令,启动主存做读操作,记作1→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。
②向主存发写命令,启动主存做写操作,记作1→W。
③将累加器内容送至 MDR,记作ACC→MDR。
④将MDR的内容(通过数据总线)写入MAR(通过地址总线)所指的主存单元中,记作MDR→M(MAR)。
(3)取数指令LDA X:
该指令在执行阶段需将主存X地址单元的内容取至累加器ACC中,具体操作如下:
①将指令的地址码部分送至存储器地址寄存器,记作Ad(IR)→MAR。
②向主存发读命令,启动主存作读操作,记作1→R。
③将MAR(通过地址总线)所指的主存单元中的内容(操作数)经数据总线读至MDR内,记作M(MAR)→MDR。
④将MDR的内容送至ACC,记作MDR→ACC。
3、转移类指令执行周期的微操作
(1)无条件转移指令JMP X:
该指令在执行阶段完成将指令的地址码部分X送至PC的操作,记作Ad(IR)→PC。
(2)条件转移(负则转)指令BAN X:
该指令根据上一条指令运行的结果决定下一条指令的地址,若结果为负(累加器最高位为1,即),则指令的地址码送至PC,否则程序按原顺序执行。由于在取指阶段已完成了(PC)+1→PC,所以当累加器结果不为负(即A=0)时,就按取指阶段形成的PC执行,记作
。
五、中断周期
在执行周期结束时刻,CPU要查询是否有请求中断的事件发生,如果有则进入中断周期。
在中断周期,由中断隐指令自动完成保护断点、寻找中断服务程序入口地址以及硬件关中断的操作。假设程序断点存至主存的0地址单元,且采用硬件向量法寻找入口地址,则在中断周期需完成如下操作:
①将特定地址“0”送至存储器地址寄存器,记作0→MAR。
②向主存发写命令,启动存储器作写操作,记作1→W。
③将PC的内容(程序断点)送至MDR,记作PC→MDR。
④将MDR的内容(程序断点)通过数据总线写入MAR(通过地址总线)所指示的主存单元(0地址单元)中,记作MDR→M(MAR)。
⑤将向量地址形成部件的输出送至PC,记作向量地址→PC,为下一条指令的取指周期做准备。
⑥关中断,将允许中断触发器清零,记作0→EINT(该操作可直接由硬件线路完成)。
如果程序断点存入堆栈,而且进栈操作是先修改栈指针,后存入数据,只需将上述的步骤①改为(SP)-1→SP,且SP→MAR。
六、几类指令的指令周期
这篇关于计算机组成原理 第八章(控制单元的功能)—第一节(微操作命令的分析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!