计算机组成原理——第五章中央处理器(中)
辞别再无相见月,终是一人度春秋
文章目录
- 前言
- 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…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...