计算机组成原理——第五章中央处理器(中)
辞别再无相见月,终是一人度春秋
文章目录
- 前言
- 5.4.1 硬布线控制器的设计
- 5.4.2 微程序控制器的基本原理
- 5.4.3 微指令的设计
- 5.4.4 微程序控制单元的设计
前言
本文主要写的是控制器的设计,控制器的设计分为硬部件控制器(就是用纯硬件的方式来实现的一种控制器)和微程序控制器(本质上是硬件和软件的一种结合),每一个指令可以分为取指周期(FE=1) 间指周期(IND=1) 执行周期(EX=1) 中断周期(INT=1),之前说过通过四个触发器来确定当前处于那个周期,一个机器周期内需要若干个微操作序列来完成这个机器周期内需要完成的事情,一个机器周期是由若干个时钟周期,每一个时钟周期(节拍),我们的控制单元CU发出一个微命令,可完成相对应的微操作,微操作更多的是完成我们细分的工作,而微命令则是完成这个功能需要的控制信号,所以也就意味着完成一个微操作就需要一个与之对应的微命令,而且我们知道对于任何一个指令来说,取指周期,间指周期,中断周期所进行的微操作都是一样的,只有执行周期内有所不同,但是只要我们能知道指令的操作码,能够判断指令的具体类型,通过触发器可以确定处于那个周期,再通过节拍信号T0,T1 来确定目前需要进行什么样的微命令

5.4.1 硬布线控制器的设计
节拍信号是通过一个节拍发生器来发出的

硬布线控制器的设计步骤

安排微操作时序的原则
原则一:微操作的前后顺序不能随意修改,这里的前后关系指的是前后依赖关系,
原则二:操作对象不同的微操作,尽量安排在一个节拍内完成;因为对元器件的使用不同,所以每一个微操作使用的时间都是一个节拍
原则三:占用时间短的微操作,尽量安排在一个节拍内完成,并允许有前后顺序
但是这里(3)的后面不能再存放(4)是因为(3)需要访问内存所需要的时间较长 所以必须要给他分配一个节拍

组合逻辑设计
这里的i表示状态条件,在I上一个杠则表示I取反,下图也就表示当I这个条件满足的时候,我们将1放入IND(表示是否处于间址周期的触发器)这个触发器中,这就表示接下来要进入间接寻址的阶段,若是没有间接寻址的这个特征位,就将1放入EX这个触发器,也就直接进行执行阶段,上面的字母表示要进行的指令,下面的1 表示此指令可能需要的微命令,需用则用1

间址周期
这里同样需要注意这个IND上面一个杠的这个状态条件,当我们进行间接寻址,我们可能进行多级间接寻址,只有当这个标志信息为0的时候才已经完成了最后一级的间接寻址,这个时候才可以进入执行周期,若是为1,则下一个机器周期继续进行间接寻址

微操作信号综合
也就是确定一个微操作命令在取值周期,间址周期,以及执行周期中那些是需要此微操作命令信号,并用这些来写出微操作命令的逻辑表达式,表达式中+是或,*是且

本节总结

5.4.2 微程序控制器的基本原理
微操作序列之于指令相当于指令之于程序,用指令处理的这种思想来处理这些微操作序列一个微指令中可能包含多个微命令,一种机器指令会对应一个微程序,一个微程序又会有多个微指令序列来构成,在一个微程序中可能有多种微指令,每一个微指令需要有一个操作控制的字段,用若干个bit来表示当前这个指令的微操作是那几个,并且需要一个顺序控制的字段,用来指明下一条微指令的地址,这些微指令序列也是存放于一个控制器中一个特殊的存储器中的,所以是有一个地址的

微程序控制器的基本结构
这里的控制寄存器是用来存放微指令序列的,每一种机器指令对应一个微程序,而每一个微程序是由多种微指令序列组成,这些微指令序列在这个控制存储器中是顺序存放的,ROM的读取速度非常快,比RAM快,且ROM是一种非易失的芯片,断电之后存储的指令是不会丢失的,为了指明接下来的微指令存放的地址,我们也就需要一个CMAR
(在CU内部也就是MAR和PC的一个结合体),这里也同样需要一个地址译码器把CMAR中的地址转化为CM中对应的存储单元的控制信号,之前我们从主存中取到一个指令,我们会先将这个指令送到一个叫做MDR的寄存器,再送到IR指令寄存器,对于CU内部的微指令也是类似的,从CM中取出一个指令我们需要先将其送到CMDR中,微地址形成部件的作用根据机器指令的操作码来确定这个机器指令的一个首地址,顺序逻辑:用于控制微指令的执行顺序的,因为微指令序列并不是一条一条的顺序往下执行例如若是有中断发生 到底要发出上面信号是根据CMDR来确定的
LDA是将X load进入ACC,15后面填0是因为若是没有中断周期就应该进入下一个取指周期,是否进入中断周期又要根据中断信号来进行判断,这里的转取指周期是指中断周期结束之后会进入下一个取指周期,若是告诉你某指令系统中有n条机器指令,则他们所对应的执行周期的微程序段也就不同,因此我们就需要n个微程序来描述,另外我们需要一个公用的取指周期的微程序,所以CM 中微程序段的个数至少是n+1个,若是我们把一个微程序看成是由取值,间址,中断,执行来看的话,那么一条指令对应一个微程序的说法也就是对的

本节回顾

5.4.3 微指令的设计
微命令与微操作一一对应,一个微命令对应一根输出线,有的微命令可以并行执行,因此一条微指令可以包含多个微命令,

微指令的编码方式
也就是如何用若干的bit来表示一系列的控制信号
互斥的放于同一段中,这样就一定不会并行的发出两个互斥的微操作,相容的微命令分在不同的段内,也就有可能并行发出微操作

字段直接编码方式
优点:可以缩短微指令字长
缺点:要通过译码电路后在发出微命令,因此比直接编码慢

字段间接编码方式

指令的地址形成方式


知识回顾

5.4.4 微程序控制单元的设计
对于硬部件控制器和微程序控制器有区别的在于最后这一步
在硬部线控制器中我们是把指令的操作码部分送给了指令译码器id,指令译码器会发出与这根线相对应的选通信号
而对于微程序控制器来说我们把指令操作码送给微地址形成部件,由微地址形成部件来指明微程序的执行地址
我们执行完微指令a之后还需要穿插一个微操作,就是要把当前的微操作的下地址信息送到CMAR,这个微操作的执行也需要一个节拍,也就是我们每执行完一个微指令之后,都是需要一个节拍来寻找下一个的地址,取值周期的最后一个事情,我们还需要再加一个节拍,在这个节拍内,把微地址形成部件当前所指明的首地址放入CMAR中,这里发现如下图所示,硬布线控制器需要三个节拍,微程序控制器需要五个节拍

微程序设计分类

相关文章:
计算机组成原理——第五章中央处理器(中)
辞别再无相见月,终是一人度春秋 文章目录 前言5.4.1 硬布线控制器的设计5.4.2 微程序控制器的基本原理5.4.3 微指令的设计5.4.4 微程序控制单元的设计 前言 本文主要写的是控制器的设计,控制器的设计分为硬部件控制器(就是用纯硬件的方式来实现的一种控…...
ImageJ 用户手册——第三部分(ImageJ扩展)
ImageJ 用户手册-第三部分 ImageJ扩展14. 宏指令(Macros)宏程序设计 15. 脚本( Scripts)JavaScript编程 16. 插件( Plugins)开发ImageJ插件 17. 用其他语言编写脚本Fiji脚本编辑器 18. 从命令行运行ImageJ …...
RK3399平台开发系列讲解(PCI/PCI-E)PCIE相关配置说明
🚀返回专栏总目录 文章目录 一、DTS 配置二、menuconfig 配置三、cmdline 配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍在使用 RK3399 平台 PCIE 时候的配置。 一、DTS 配置 ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; 此项是设置 PCIe…...
NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问
文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自内网穿透工具的文章:使用Nextcl…...
Revit问题:墙体被楼板剪切及材质库被锁定问题
一、Revit 墙体被楼板剪切怎么办? 建模的时候画的墙总是到楼板就停了,这是为什么?明明顶部约束到标高2了,这种情况如何解决? 首先来分析问题产生的原因是,我们在绘制楼板的时候选择了用楼板剪切重复部分的墙体。 解决…...
CPU信息查询与CPU测试方法总结
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请征得博主同意并附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/mainmaster/article/details/130267689 未经允许不能拷贝本文章内容发布到其他相关载体上。 CPU信息查询 我们知道在嵌入式系统…...
ChatGPT时代,我们可能站到了自然语言编程的大门口
ChatGPT大火,我现在有种感觉:我们可能站到了自然语言编程的门口,一脚下去,也许能把门踹开。 当然,也可能会踢到一块铁板。 回顾我们的编程之路,基本上就是一个编程门槛不断降低的历史。 最早的一批前辈们…...
深入理解AMQP协议
一.AMQP 是什么 AMQP(Advanced Message Queuing Protocol, 高级消息队列协议)是一个提供统一消息服务的 应用层标准高级 消息队列协议,是 应用层协议的一个 开放标准,为面向消息的中间件设计,是一个进程间传递 异步消息…...
大型体检管理系统源码:适用于大中型医院或独立体检中心
一套专业的体检管理系统源码,是医院、体检中心等单位开展体检业务的得力助手。它将以往人工操作的健康体检过程所得到信息转换成全信息化的电脑管理,使体检过程更为流畅、更有条理,更加便于管理,从而实现体检业务管理的自动化、信…...
ACM 1000 | 简单的a+b
文章目录 0x00 前言 0x01 题目描述 0x02 问题分析 0x03 代码设计 0x04 完整代码 0x05 运行效果 0x06 参考文献 0x07 总结 0x00 前言 C 语言网不仅提供 C 语言,还包括 C 、 java 、算法与数据结构等课程在内的各种入门教程、视频录像、编程经验、编译器教程及…...
系统分析师选择题笔记
目录 1、知识产权与标准化 1.1 保护范围与对象(★★★★) 1.2 保护期限(★) 1.3 知识产权人确定(★★★) 1.4 侵权判断(★★★) 1.5 标准的分类(★) 1.6 标准代号的识别(★) 2、系统配置与性能评价 2.1 系统性能概述 2.2 系统性能(性能指标)(★…...
MySQL隐式类型转换
当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。有些转换是隐式发生的。例如,MySQL会根据需要自动将字符串转换为数字,反之亦然。 转换规则 如果一个或两个参数都为NULL,则比较结果为NULL 。但是相等比较…...
IT知识百科:什么是SSID?
一、什么是SSID SSID(Service Set Identifier)是无线网络中的一个重要概念,它是一个用于标识无线局域网(WLAN)的名称。SSID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称。在无线…...
OpenAI-ChatGPT最新官方接口《从0到1生产最佳实例》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(十一)(附源码)
Production Best Practices 生产最佳实例 前言Introduction 导言Setting up your organization 设置您的组织Managing billing limits 管理计费限额API keys API密钥Staging accounts 演示账户 Building your prototype 构建您的原型Additional tips 其它技巧 Techniques for i…...
2023 IT市场权威榜单|美创数据库防火墙斩获“新一代信息技术创新产品”
4月20日,由赛迪顾问主办的“2023 IT市场权威榜单”评选结果正式发布,美创数据库防火墙斩获新一代信息技术创新产品! 美创数据库防火墙是一款抵御并消除由于应用程序业务逻辑漏洞或者缺陷所导致的数据库安全问题的专业级数据库安全产品&#x…...
30个超级有用的JavaScript单行代码
在这篇文章中,我列出了一个系列的 30 个 JavaScript 单行代码,它们在使用 vanilla js(≥ ES6)进行开发时非常有用。它们也是使用该语言在最新版本中为我们提供的所有功能来解决问题的优雅方式。 我将它们分为以下5大类࿱…...
【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透
前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对…...
诊断CAPL自动化(1)—— CANoe自带的诊断工程分析
🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe,博客目录大全,点击跳转👉 📘前言 🍅 学习CANoe,官方的实例工程就是最好的学习模板,对于初学者,…...
【dp】最长递增子序列
文章目录 方法一:动态规划方法二:贪心 二分查找构造最长递增子序列 方法一:动态规划 dp[i]:末尾元素为arr[i]的最长子序列的长度 从0遍历到i - 1,若遍历到的元素小于当前值arr[i],表示当前值arr[i]可以和…...
docker容器:Docker-Compose
目录 一、Docker-Compose 1、Docker-Compose使用场景 2、Docker-Compose简介 3、Docker-Compose安装部署 4、YML文件编写注意事项 5、Compose配置常用字段 6、 Docker Compose 常用命令 7、Docker Compose 文件结构 8、docker Compose撰写nginx 镜像 9、docker Compos…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
