计算机组成原理 第八章(控制单元的功能)—第一节(微操作命令的分析)

本文围绕《计算机组成原理》展开,详细解释了微程序控制、指令与微指令的关系,以及取指、间址、执行和中断周期中的关键操作,通过实例展示了CPU如何执行不同类型的指令,包括非访存和访存指令、转移指令以及中断处理过程。
摘要由CSDN通过智能技术生成

 写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)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:

        该指令在执行阶段只完成清除累加器操作,记作0\rightarrow ACC

(2)累加器取反指令COM:

        该指令在执行阶段只完成累加器内容取反,结果送累加器的操作,记作\overline{ACC}\rightarrow ACC

(3)算术右移一位指令SHR:

        该指令在执行阶段只完成累加器内容算术右移一位的操作,记作L(ACC)\rightarrow R(ACC)ACC_{0}\rightarrow ACC_{0}(ACC的符号位不变)。

(4)循环左移一位指令CSL:

        该指令在执行阶段只完成累加器内容循环左移一位的操作,记作R(ACC)\rightarrow L(ACC)ACC_{0}\rightarrow ACC_{n}(或\rho ^{-1}(ACC))。

(5)停机指令STP:

        计算机中有一个运行标志触发器G,当G=1时表示机器运行,当G=0时表示停机。STP指令在执行阶段只需将运行标志触发器置“0”,记作0\rightarrow G

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,即A_{0}=1),则指令的地址码送至PC,否则程序按原顺序执行。由于在取指阶段已完成了(PC)+1→PC,所以当累加器结果不为负(即A=0)时,就按取指阶段形成的PC执行,记作A_{0}\cdot Ad(IR)+\overline{A_{0}}\cdot PC\rightarrow 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。

 六、几类指令的指令周期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值