计算机组成原理与系统结构——微程序控制
笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。
基本概念
微指令
将控制单元实现为基本逻辑单元之间的互连并非易事,且设计相对呆板,难以灵活地改变,因此实现微程序控制单元是一种替代方法。实际上,它是一种编程语言,称为微程序语言,每一行描述一组同时发生的微操作,称为微指令。指令序列称为固件,即介于硬件与软件间的微程序,用固件设计比用硬件设计更容易,但代码开发工作更困难。
使用微程序实现一个控制单元具有以下步骤:
1)对于每个微操作,控制单元所做的是生成一组控制信号
2)对于任何微操作,从控制单元发出的每条控制线要么是打开要么是关闭,用二进制表示
3)每个微操作都有一个控制字,其中的每一位都代表一条控制线
微指令具有以下类型:
垂直微指令——每条微指令指定要执行的单个或少数多个微操作
水平微指令——每条微指令指定要并行执行的许多不同的微操作
在控制存储器中安排微指令具有以下步骤:
1)每个例程中的微指令要按顺序执行
2)每个例程都以一个分支或跳转指令结束,以指示下一步要去哪里
3)存在一个特殊执行周期例程,以表示接下来要执行的取决于当前操作码的机器指令例程
微程序控制单元
控制存储器包含描述控制单元行为的程序,因此只需要执行这个程序就可以实现控制单元。下图显示了控制单元的关键要素:
1)控制存储器——存储微指令集
2)控制地址寄存器——包含下一条要读取的微指令的地址
3)控制缓冲寄存器——接收一条从控制存储器中读出的微指令
4)排序逻辑单元——加载控制地址寄存器并发出读命令
细化的功能单元具有以下功能(在同一时钟脉冲周期中发生):
1)为了执行一条指令,排序逻辑单元向控制存储器发出READ命令
2)控制地址寄存器指定地址中的字被读进控制缓冲寄存器
3)控制缓冲寄存器的内容生成控制信号以及排序逻辑单元的下一个地址信息
4)排序逻辑单元根据来自控制缓冲寄存器的下一个地址信息,结合ALU标志,把新的地址加载到控制地址寄存器,具体方法将从以下三个决定中选择:
A)获取下一条指令——控制地址寄存器加1
B)跳转到基于跳转微指令的新例程——控制缓冲寄存器的地址字段加载到控制地址寄存器
C)跳转到机器指令例程——根据IR中的操作码加载控制地址寄存器
微程序的目前应用包括以下几类:
1)实现计算机——实现计算机的基本功能
2)仿真——在一台机器上使用微程序来执行最初为另一台机器编写的程序
3)操作系统支持——实现基元
4)实现专用设备——实现专用设备的专用功能
5)高级语言支持——固件中实现的功能和数据类型
6)微校验——监控、检测、隔离、修复系统错误
7)用户定制——一些机器提供可写入存储和易于使用的微指令集,允许用户编写微程序
优缺点
微程序的主要优点是简化控制单元的设计,成本更低也不易出错。硬连线控制单元必然包含复杂逻辑,以通过指令周期的多个微操作进行排序;另一方面,微程序控制单元的译码器和排序逻辑单元也是非常简单的逻辑组件。微程序的主要缺点是它的速度比硬连线单元慢。
由于易于实现,微程序在纯CISC架构中仍是实现控制单元的主要技术。RISC架构的处理器指令格式更简单,它通常使用硬连线控制单元。
微指令排序
微指令控制单元要实现如下两个基本任务:
1)微指令排序——从控制存储器获取下一条微指令
2)微指令执行——生成执行微指令所需的控制信号
设计控制单元时,两个任务必须一起考虑,因为它们都会影响微指令格式和控制单元时序。
设计注意事项
微指令排序技术涉及微指令大小和地址生成时间两个问题。第一个问题,最小化控制存储器会降低组件的成本;第二个问题,需要尽可能执行微指令。
执行微程序时,下一条要执行的微指令的地址有以下几种类别:
1)由指令寄存器决定——在获取指令后,一个周期一次
2)下一个顺序地址——在大多数设计中很常见
3)分支——分为条件分支和无条件分支,通常每3-4条微指令中有一条分支
微指令执行
微指令周期是微程序处理器的基本事件。每个周期由取指(由微指令地址生成决定)和执行(产生控制信号)两个部分组成。其中一些信号控制点位于处理器内部,其余则连接到外部控制总线或其他接口。常见的微指令分类法包括垂直/水平、压缩/非压缩、硬微/软微编程、直接/间接编码。
相关文章:

计算机组成原理与系统结构——微程序控制
笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。 基本概念 微指令 将控制单元实现为基本逻辑单元之间的互连并非易事,且设计相对呆板,难以灵活地改变,因此实现微程序控制…...

【Swift】集合类型 - 数组、集合、字典
文章目录 集合的可变性数组数组类型简写语法创建空数组使用默认值创建数组通过合并两个数组创建一个新数组使用数组字面量创建数组访问和修改数组 Swift 提供了三种主要的 集合类型,分别是数组、集合和字典,用于存储值集合。数组是有序的值集合。集合是无…...

3D 视觉定位技术:汽车零部件制造的智能变革引擎
在汽车零部件制造领域,传统工艺正面临着前所未有的挑战。市场对于零部件精度与生产效率近乎苛刻的要求,促使企业寻求突破之道。而 3D 视觉定位技术,为汽车零部件制造开启了精准定位与智能化生产的新纪元。 3D 视觉定位系统的核心技术原理 3…...

操作系统的基本认识
操作系统的感性认识 操作系统这个词可能或多或少听说过,比如windows, linux, macOS。这些其实都是工程师们经过实践后的具象化产物。而操作系统原理这六个字就是操作系统的抽象化,更准确的说,操作系统原理是很理论化的东西。举一个不是很恰当…...

使用pycharm连接远程服务器
使用pycharm连接远程服务器 1.在你的项目里配置 SSH ,放到服务器上去跑 主机为服务器的IP地址,输入用户名和密码 配置项目位置、选择编译器 2.设置本地更改代码保存后即上传到服务器 在本地使用 pycharm 调试代码,pycharm 上面的代码更改…...

【Linux SH脚本】LinuxCheck 应急检查信息脚本
LinuxCheck 1.下载地址 【Linux SH脚本】LinuxCheck 应急检查信息脚本 2.简介 LinuxCheck 是一个开源的自动化检查脚本,旨在快速检测 Linux 系统的安全配置和潜在问题。它支持多种发行版,能够扫描并生成详细的报告,涵盖用户管理、权限配置…...

apifox创建一个mock接口
1、新建接口 2、选择mock,开启云端mock; 3、新建期望; 4、编辑响应体; 5、快速请求,测试; (主要可能是网络问题,也可以自己python mock一个;apifox简单快速…...
设计一个基础JWT的多开发语言分布式电商系统
在设计一个分布式电商系统时,保证系统的可扩展性、性能以及跨语言的兼容性是至关重要的。随着微服务架构的流行,越来越多的电商系统需要在多个服务间共享信息,并且保证服务的安全性。在这样的场景下,JSON Web Token(JW…...
委托(Delegate)与事件(Event)-(上篇)
C#中的委托(Delegate)是一种类型安全的函数指针,它允许将方法作为参数传递给其他方法,并且可以用来实现回调机制。委托是C#中实现事件处理、异步编程以及面向对象设计模式的重要工具之一。在C#中,委托被定义为引用类型…...
Scala根据身份证前两位数判断地区
方法一 val id "339005200101010928"// 取出id前两位 val province id.substring(0, 2) /*//println(province)if (province "42") {println("湖北")}else if (province "11") {println("北京")}else if (province &qu…...
freeswitch(开启支持视频H264通话)
亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景介绍: 内部默认是不支持的,视频通话,需要开启模块使用方法: 第一步:进入vars.xml 下面找到global_codec_prefs和outbound_codec_pr…...
启发式搜索算法和优化算法的区别
启发式搜索算法和优化算法在计算机科学中都有广泛的应用,但它们之间存在一些明显的区别。 一、定义与核心思想 启发式搜索算法 定义:启发式搜索算法是一类基于经验和直觉的问题求解方法,通过观察问题的特点,并根据某种指…...

数据结构初阶---二叉树---堆
一、树 1.树的概念 树是一种非线性的数据结构,由n(n≥0)个有限结点组成的一个有层次关系的集合。形状类似一棵倒挂的树,根朝上,分支向下。 根结点没有前驱结点,可以有n(n≥0)个后继结点。 其余结点被分为M个互不相交的集合&am…...

微信小程序中 crypto-js 加解密全攻略
一、引言 在微信小程序开发中,数据的安全至关重要。加解密技术在保护用户数据和应用程序的安全性方面起着关键作用。小程序在与服务器进行数据交互时,面临着数据泄露、篡改等安全风险。为了确保用户信息的安全,选择合适的加解密算法变得尤为…...
单片机的软件开发环境
单片机(Microcontroller Unit, MCU)是一种将计算机系统中的中央处理器(CPU)、存储器(Memory)、输入输出接口(I/O)等集成在一块芯片上的微型计算机。单片机因其体积小、成本低、功能强…...

【echarts】数据过多时可以左右滑动查看(可鼠标可滚动条)
1. 鼠标左右拖动 在和 series 同级的地方配置 dataZoom: dataZoom: [{type: inside, // inside 鼠标左右拖图表,滚轮缩放; slider 使用滑动条start: 0, // 左边的滑块位置,表示从 0 开始显示end: 60, // 右边的滑块位置…...
Python 实现对人的行为预测
引言 随着人工智能技术的快速发展,行为预测在多个领域如智能安防、自动驾驶、个性化推荐系统等中扮演着越来越重要的角色。通过分析历史数据并结合先进的机器学习算法,我们可以预测个体或群体的行为模式,从而做出更加智能和高效的决策。本文…...

使用枚举实现单例模式,不会反序列化破坏攻击,不会被反射破坏攻击。(附带枚举单例的简单实现)
原因分析 1.反序列化方法 ① jdk8中的Enum源码中对反序列化方法进行重写,抛出异常。 java.lang.Enum#readObject方法截图如下 ②java.io.ObjectInputStream#readObject 方法中的 readEnum 方法处理了枚举类型的反序列化,从而确保了枚举的单例特性。 …...
scala隐式转换
概念: 在Scala编程语言中,隐式转换是一种强大的功能,它允许程序在需要时自动转换数据类型或增强对象功能。这种转换通常是通过定义一个标记为implicit的函数来实现的,这个函数能够将一种类型转换为另一种类型。隐式转换的使用可以…...
Spring Boot 应用 “Connection is closed” 及 MySQL 空闲超时断开连接解决方案
在使用 Spring Boot MySQL HikariCP 的组合时,可能会在生产或测试环境中遭遇类似如下异常信息: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT ...]; SQL state [nu…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...

算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...