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

本文主要是介绍计算机组成原理 第八章(控制单元的功能)—第一节(微操作命令的分析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 写在前面:

  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。

 六、几类指令的指令周期

这篇关于计算机组成原理 第八章(控制单元的功能)—第一节(微操作命令的分析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828224

相关文章

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep