计算机组成原理19——控制单元的功能和实现1

news2024/11/16 4:31:23

本系列文章是学习了网课《哈尔滨工业大学–计算机组成原理》之后,用以梳理思路而整理的听课笔记及相关思维拓展。本文涉及到的观点均为个人观点,如有不同意见,欢迎在评论区讨论。

目录

  • 四种周期下的微操作命令
    • 取指周期
    • 间址周期
    • 执行周期
      • 非访存指令
      • 访存指令
      • 转移类指令
    • 中断周期

四种周期下的微操作命令

程序在输入至计算机之后,解析成各种指令,这些指令还不能直接被计算机执行,需要输入至控制单元。控制单元将进一步分析这些指令,将其转化为可以操作计算机的微指令序列,从而控制计算机执行程序。

下面以指令周期中的四个阶段进一步分析其对应的微操作指令。

取指周期

假设CPU内有四个寄存器:
MAR与地址总线相连,存放欲访问的存储单元地址;
MDR与数据总线相连,存放欲写入存储器的信息或最近从存储器读出的信息;
PC存放现行指令的地址,有计数功能;
IR存放现行指令。

取指令的操作可以归纳为以下几个操作:
1、PC ->MAR,现行指令地址送到存储器地址寄存器;
2、向主存发送读命令,启动主存做读操作,记作1->R;
3、将MAR所指的主存单元中的内容经数据总线读至MDR内,记作M(MAR)->MDR;
4、将MDR的内容送至IR,记作MDR->IR;
5、指令的操作码送至CU译码,记作OP(IR)->CU;
6、形成下一条指令的地址,记作(PC)+1->PC。

在这里插入图片描述

间址周期

具体操作如下:
1、将指令的地址码(形式码)部分送至存储器地址寄存器,记作Ad(IR)->MAR;
2、向主存发送读命令,启动主存做读操作,记作1->R;
3、将MAR所指的主存单元中的内容经数据总线读至MDR内,记作M(MAR)->MDR;
4、将有效地址送至指令寄存器的地址字段,记作MDR->Ad(IR)。

执行周期

不同的指令执行周期不同,下面分别讨论非访存指令、访存指令和转移类指令的微操作。、

非访存指令

这类指令在执行周期内不访问内存。

1、清除累加器指令CLA,清除累加器,0->ACC
2、累加器取反指令COM,累加器取反, A C C ‾ − > A C C \overline{ACC} -> ACC ACC>ACC
3、算术右移一位指令SHR,累加器算术右移一位,L(ACC)->R(ACC)
4、循环左移一位指令CSL,累加器循环左移一位,R(ACC)->L(ACC)
5、停机指令STP,计算机中有运行标志触发器G。当G=1时,表示机器运行;当G=0时,表示机器停机。STP指令将G置为0。

访存指令

这类指令在执行阶段都需要访问存储器。

1、加法指令ADD X,需要完成累加器内容与对应于主存X地址单元的内容相加,送至累加器。
①将指令的地址码送至存储器地址寄存器,Ad(IR)-> MAR
②向主存发送读命令,启动主存做读操作,记作1 -> R
③将MAR所指的主存单元中的内容经数据总线读至MDR中,记作M(MAR)-> MDR
④给ALU发送加命令,将ACC的内容和MDR的内容相加,结果存于ACC,记作(ACC)+ (MDR)-> ACC

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

转移类指令

这类指令在执行阶段不访问存储器。

1、无条件转移指令JMP X
将指令的地址码部分送至PC,记作Ad(IR) -> PC

2、条件转移指令BAN X
该指令根据上一条指令运行的结果决定下一条指令的地址。若结果为负,则指令的地址码送至PC;若指令不为负,则源程序按照顺序执行。

在这里插入图片描述

中断周期

在执行周期结束时刻,CPU需要查询是否有请求中断的事件发生,如果有则进入中断周期。
假设程序断点存至主存的0地址单元,且采用硬件向量法寻找入口地址,则在中断周期需完成以下操作:

  ①将特定地址0送至存储器地址寄存器,记作0->MAR
  ②向主存发写命令,启动存储器作写操作,记作1->W
  ③将PC的内容送至MDR,记作PC->MDR
  ④将MDR的内容通过数据总线写入MAR所指的主存单元中,记作MDR->M(MAR)
  ⑤将向量地址形成部件的输出送至PC,记作向量地址->PC,为下一条指令的取指周期做准备
  ⑥关中断,将允许中断触发器清零,记作0->EINT。
  如果程序断点不存入内存,而是存入堆栈,只需将①改为(SP)-1 -> SP,且SP -> MAR。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

antv/x6_2.0学习使用(四、边)

一、添加边 节点和边都有共同的基类 Cell,除了从 Cell 继承属性外,还支持以下选项。 属性名类型默认值描述sourceTerminalData-源节点或起始点targetTerminalData-目标节点或目标点verticesPoint.PointLike[]-路径点routerRouterData-路由connectorCon…

智慧旅游景区解决方案:PPT全文49页,附下载

关键词:智慧景区建设,智慧旅游平台,智慧旅游运营检测系统项目,智慧文旅,智慧景区开发与管理,智慧景区建设核心,智慧景区开发与管理 一、智慧景区建设现状 1、基础设施建设:智慧景区…

离散数学2

复习一下,P->Q,只有真的原因推假的结果,才是错的(正常逻辑),其余情况都是对的(善意规定以及正常逻辑) 反P析取Q,可以这样理解,因为是析取,结果为T的可能性…

强化学习求解TSP:Qlearning求解旅行商问题(Traveling salesman problem, TSP)提供Python代码

一、Qlearning简介 Q-learning是一种强化学习算法,用于解决基于奖励的决策问题。它是一种无模型的学习方法,通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策,该函数表示在给定状态下采取某个动作所获…

Spark Core--加强

RDD的持久化 RDD缓存 当RDD被重复使用,或者计算该RDD比较容易出错,而且需要消耗比较多的资源和时间的时候,我们就可以将该RDD缓存起来。 主要作用: 提升Spark程序的计算效率 注意事项: RDD的缓存可以存储在内存或者是磁盘上,甚至…

为布偶猫精心挑选的三款主食冻干,K9、sc、希喂深度解析对比

喂养布偶猫的小技巧:如何满足其食肉天性同时呵护其肠胃?主食冻干是答案!它不仅符合猫咪天然的饮食结构,还采用新鲜生肉为原料。搭配其他营养元素,既美味又营养,还能增强抵抗力。我们将为您测评市场上热门的…

ubuntu 20.04下 Tesla P100加速卡使用

1.系统环境:系统ubuntu 20.04, python 3.8 2.查看cuDNN/CUDA与tensorflow的版本关系如下: Build from source | TensorFlow 从上图可以看出,python3.8 对应的tensorflow/cuDNN/CUDA版本。 3.安装tensorflow #pip3 install tensorflow 新版…

C++其他语法总结

目录 《C基础语法总结》《C面向对象语法总结(一)》《C面向对象语法总结(二)》《C面向对象语法总结(三)》 一、运算符重载 运算符重载可以为运算符增加一些新的功能全局函数、成员函数都支持运算符重载常用的运算符重载示例 class Point {…

Python私有变量的定义与访问

class Student():def __init__(self, name, age):self.name nameself.age ageself.__score 0def marking(self, score):if score < 0:return 分数不能为0self.__score scoreprint(self.name 同学本次得分是: str(self.__score)) def __talk(self): # 私有的类可通过在…

qss设置某一个widget下的Checkbox的样式

#ObjectName 控件名称{属性&#xff1a;值&#xff1b;属性1&#xff1a;值1} 如下&#xff1a; 效果&#xff1a;

【大数据】分布式协调系统 Zookeeper

分布式协调系统 Zookeeper 1.Zookeeper 的特点2.Zookeeper 的数据结构3.Zookeeper 的应用场景3.1 统一命名服务3.2 统一配置管理3.3 统一集群管理3.4 服务器动态上下线3.5 软负载均衡 Zookeeper 是 Apache 开源的一个顶级项目&#xff0c;目的是为分布式应用提供协调服务&#…

910b上跑Chatglm3-6b进行流式输出【pytorch框架】

文章目录 准备阶段避坑阶段添加代码结果展示 准备阶段 配套软件包Ascend-cann-toolkit和Ascend-cann-nnae适配昇腾的Pytorch适配昇腾的Torchvision Adapter下载ChatGLM3代码下载chatglm3-6b模型&#xff0c;或在modelscope里下载 避坑阶段 每个人的服务器都不一样&#xff0…

01-连接池项目背景:C++的数据库操作

从0开始学习C与数据库的联动 1.原始方式-使用MySQL Connector/C 提供的API查询 1.1 数据库预操作 我的本地电脑上有mysql数据库&#xff0c;里面预先创建了一个database名叫chat&#xff0c;用户名root&#xff0c;密码password。 1.2 Visual Studio预操作 在Windows上使用…

分析一个项目(微信小程序篇)一

分析一个项目讲究的是如何进行对项目的解析分解&#xff0c;进一步了解项目的整体结构&#xff0c;熟悉项目的结构&#xff0c;能够知道每个组件所处在哪个位置&#xff0c;发挥什么作用。 本次所介绍的是微信小程序项目&#xff08;甑选商场&#xff09;&#xff1a; 其首页…

深度解析HubSpot数据分析:洞察未来商业趋势

在当今数字化的商业环境中&#xff0c;数据是推动决策和业务增长的关键。作为业内领先的CRM平台&#xff0c;HubSpot不仅为企业提供了高效的客户关系管理工具&#xff0c;同时也成为了数据分析的利器。 1. HubSpot数据分析的核心价值 1.1 洞察客户行为和趋势 HubSpot数据分析…

【SkyWant.[2304]】路由器操作系统,移动【Netkeeper】使用教程校园网

目录 步骤一&#xff1a;正确连接网线&#xff0c;插电开机正确连接网线&#xff1a; 认识系统灯&#xff1a; 插电开机&#xff1a; 步骤二&#xff1a;开机之后&#xff0c;系统的基本设置 1.进入设置界面&#xff1a; 2.设置辅助热点wifi&#xff1a; 3.设置日常…

domain adapation

假设测试资料和训练资料分布不一样&#xff0c; 训练为黑白数字&#xff0c;测试为彩色数字时&#xff0c;识别率很低 称之为 Domain shift Domain adaptation : 可以看做 transfer 的一种 输出分布也有可能不一样 target domain 有部分数据&#xff0c;但是无标签 分布也不…

css中的变量和辅助函数

变量 --name 两个破折号加变量名称&#xff08;可以在当前的选择器内定义&#xff09;var(--*) 命名规则 body {--深蓝: #369;background-color: var(--深蓝); } 变量值只能做用属性值&#xff0c;不能用做属性名。变量命名不能包含 $,[,^,(,% 等字符 普通字符局限在只要是数…

如何快速编写高效的测试用例? -5个建议让你的测试更准确、更全面

逛知乎的时候&#xff0c;经常看到无论是刚入职场的新人&#xff0c;还是工作了一段时间的老人&#xff0c;都会对编写测试用例感到困扰&#xff1f;例如&#xff1a; 固然&#xff0c;编写一份好的测试用例需要&#xff1a;充分的需求分析能力理论及经验加持。 但这并不意味着…

【每日论文阅读】Do Perceptually Aligned Gradients Imply Robustness?

近似人眼梯度 https://icml.cc/virtual/2023/oral/25482 对抗性鲁棒分类器具有非鲁棒模型所没有的特征——感知对齐梯度&#xff08;PAG&#xff09;。它们相对于输入的梯度与人类的感知非常一致。一些研究已将 PAG 确定为稳健训练的副产品&#xff0c;但没有一篇研究将其视为…