【学习笔记】计算机组成原理(七)
指令系统

文章目录
- 指令系统
- 7.1 机器指令
- 7.1.1 指令的一般格式
- 7.1.2 指令字长
- 7.2 操作数类型和操作类型
- 7.2.1 操作数类型
- 7.2.2 数据在存储器中的存放方式
- 7.2.3 操作类型
- 7.3 寻址方式
- 7.3.1 指令寻址
- 7.3.1.1 顺序寻址
- 7.3.1.2 跳跃寻址
- 7.3.2 数据寻址
- 7.3.2.1 立即寻址
- 7.3.2.2 直接寻址
- 7.3.2.3 隐含寻址
- 7.3.2.4 间接寻址
- 7.3.2.5 寄存器寻址
- 7.3.2.6 寄存器(间接)寻址
- 7.3.2.7 基址寻址
- 7.3.2.8 变址寻址
- 7.3.2.9 相对寻址
- 7.3.2.10 堆栈寻址
- 7.4 指令格式举例
- 7.4.1 设计指令时应考虑的各种因素
- 7.4.2 举例
- 7.5 RISC技术
- 7.5.1 RISC的产生和发展
- 7.5.2 RISC的主要特征
- 7.5.3 CISC的主要特征
- 7.5.4 RISC与CISC的比较
7.1 机器指令
计算机就是连续执行每一条机器语句而实现全自动工作的。
把每一条机器语言的语句称为机器指令;
又将全部机器指令的集合称为机器的指令系统 / 指令集。
指令集就是计算机系统软件和硬件的交界面,软件通过指令系统告诉计算机的硬件做什么操作,计算机的硬件通过指令系统把运算结果和硬件的状态返回给软件。
7.1.1 指令的一般格式
指令是由操作码和地址码两部分组成的

-
操作码
操作码用来指明该指令所要完成的操作。通常,其位数反映了机器的操作种类, 也即机器允许的指令条数,如操作码占7位,则该机器最多包含27=128 条指令
实际上操作码的作用远远不止反映机器做什么操作,很多机器的指令集当中,操作码还要指出对什么样的数据进行操作,例如IBM360的指令系统当中,同样是加法操作,因为参与加法操作的数据的类型不一样,表示的基值不一样,一个加法指令实际上是八条指令,分别对应了对定点数加法、浮点数加法、在浮点数加法中尾数的基值是二进制还是十六进制等等。
另外在有些机器的指令集当中,操作码还指出了操作数的寻址方式。-
固定长
- 将操作码集中放在指令字的一个字段内。这种格式便于硬件设计,指令译码时间短,广泛用于字长较长的、大中型计算机和超级小型计算机以及RISC(Reduced Instruction Set Computer)中。
-
可变长
-
操作码长度不固定会增加指令译码和分析的难度,使控制器的设计复杂。通常采用扩展操作码技术,使操作码的长度随地址数的减少而增加,不同地址数的指令可以具有不同长度的操作
码,从而在满足需要的前提下,有效地缩短指令字长。
-
-
-
地址码

7.1.2 指令字长

7.2 操作数类型和操作类型
7.2.1 操作数类型
机器中常见的操作数类型有地址、数字、字符、逻辑数据等。
(1)地址
地址实际上也可看做是一种数据,在许多情况下要计算操作数的地址。地址可被认为是一个无符号的整数。
(2)数字
计算机中常见的数字有定点数、浮点数和十进制数
(3)字符
普遍采用 ASCI 码,还有其他一些字符编码 - 扩展BCD交换码等。
(4)逻辑数据
作逻辑运算,此时n个0和1的组合不是被看做算术数字,而是被看做逻辑数。
7.2.2 数据在存储器中的存放方式

字节编址

7.2.3 操作类型
-
数据传送
- - - - - 源 寄存器 寄存器 存储器 存储器 目的 寄存器 存储器 寄存器 存储器 例如 MOVE STORE LOAD MOVE MOVE MOVE PUSH POP 置“1”,清“0”
-
算术逻辑操作
加、减、乘、除、增1、减1、求补、浮点运算、十进制运算、与、或、非、异或、位操作、位测试、位清除、位求反
如 8086ADD SUB MUL DIV INC DEC CMP NEG
AAA AAS AAM AAD
AND OR NOT XOR TEST -
移位
移位可分为算术移位、逻辑移位和循环移位(带进位和不带进位)三种。
算术移位和逻辑移位分别可实现对有符号数和无符号数乘以2n(左移)或整除以2n(右移)的运算,并且移位操作所需时间远比乘除操作执行时间短,因此,移位操作经常被用来代替简单的乘法和除法运算。
-
转移
(1)无条件转移
无条件转移不受任何条件约束,可直接把程序转移到下一条需执行指令的地址。
例如“JMP X"其功能是将指令地址无条件转至X
(2)条件转移

(3)调用与返回

(4)陷阱(Trap)与陷阱指令

-
输入输出
并不是每一种指令集都有输入输出指令,如果I/O端口的编址空间被作为内存编址空间的一部分,那么这个指令集就不需要输入输出指令,直接用访问内存的指令就可以对外部设备进行输入输出,如果外部设备有自己的独立地址空间单独编址,就需要单独的输入输出指令对外设进行访问。

-
其他
其他包括 等待指令、停机指令、空操作指令、开中断指令、关中断指令、条件码指令 等。
为了适应计算机的信息管理、数据处理及办公自动化等领域的应用,有的计算机还设有 非数值处理指令 。如字符串传送、字符串比较、字符串查询及字符串转换等。
在多用户、多任务的计算机系统中,还设有 特权指令 ,这类指令只能用于操作系统或其他系统软件,用户是不能使用的。
在有些大型或巨型机中,还设有 向量指令 ,可对整个向量或矩阵进行求和、求积运算。
在多处理器系统中还配有专门的 多处理机指令 。
7.3 寻址方式
确定本条指令的操作数地址
下一条要执行指令的指令地址
7.3.1 指令寻址
7.3.1.1 顺序寻址
取完一条指令后,顺序的取下一条指令。
内存单元的编址单位是字节,每一条指令的长度是32位(四个字节),顺序存储每次加的值就是4,
如果指令的长度是64位,则PC+8。
如果指令是可变长度的话,这个1会更加复杂。
7.3.1.2 跳跃寻址
由转移指令给出下一条指令地址

7.3.2 数据寻址

7.3.2.1 立即寻址

7.3.2.2 直接寻址

7.3.2.3 隐含寻址

7.3.2.4 间接寻址

7.3.2.5 寄存器寻址

7.3.2.6 寄存器(间接)寻址

7.3.2.7 基址寻址
基址寄存器可采用隐式的和显式的两种。
所谓隐式,是在计算机内专门设有一个基址寄存器BR,使用时用户不必明显指出该基址寄存器,只需由指令的寻址特征位反映出基址寻址即可。
显式是在一组通用寄存器里,由用户明确指出哪个寄存器用做基址寄存器,存放基地址。
- 采用专用寄存器作为基址寄存器,有效地址是基址寄存器中的内容加上形式地址(形式地址实际上就是一个偏移量)。

- 采用通用寄存器作基址寄存器

7.3.2.8 变址寻址


7.3.2.9 相对寻址


7.3.2.10 堆栈寻址
在计算机的硬件实现的栈是高地址向低地址方向,即栈顶是低地址,栈底是高地址。

7.4 指令格式举例
7.4.1 设计指令时应考虑的各种因素
指令系统的 兼容性
其他因素
操作类型 包括指令个数及操作的难易程度
数据类型 确定哪些数据类型可参与操作
指令格式 指令字长是否固定操作码位数,是否采用扩展操作码技术地址码位数,地址个数,寻址方式类型
寻址方式 指令寻址、操作数寻址
寄存器个数 寄存器的多少直接影响指令的执行时间
7.4.2 举例
-
PDP - 8

-
PDP - 11

-
IBM 360

-
Intel8086

7.5 RISC技术
7.5.1 RISC的产生和发展
RISC (Reduced Instruction Set Computer ) 精简指令系统计算机
CISC(Complex Instruction Set Computer ) 复杂指令系统计算机
RISC技术 —— 80 - 20 规律
- 典型程序中80%的语句仅仅使用处理机中20%的指令
- 执行频度高的简单指令,因复杂指令的存在,执行速度无法提高
- 能否用20%的简单指令组合不常用的80%的指令功能
7.5.2 RISC的主要特征
- 选用使用频度较高的一些简单指令复杂指令的功能由简单指令来组合
- 指令 长度固定、指令格式种类少、寻址方式少
- 只有 LOAD /STORE 指令访存
- CPU 中有多个 通用寄存器
- 采用 流水技术 一个时钟周期内完成一条指令
- 采用 组合逻辑 实现控制器
7.5.3 CISC的主要特征
- 系统指令复杂庞大,各种指令使用频度相差大指令
- 长度不固定、指令格式种类多、寻址方式多
- 访存 指令 不受限制
- CPU 中设有 专用寄存器
- 大多数指令需要 多个时钟周期 执行完毕
- 采用 微程序 控制器
7.5.4 RISC与CISC的比较
- RISC更能 充分利用 VLSI 芯片的面积【VLSI芯片:超大规模集成电路(Very Large Scale Integration Circuit)】
- RISC 更能 提高计算机运算速度
- 指令数、指令格式、寻址方式少
- 通用 寄存器多,减少访存次数
- 采用 组合逻辑比微程序延迟小,缩短CPU周期
- 便于实现 指令流水
- RISC 便于设计,可 降低成本,提高 可靠性
- RISC 不易 实现 指令系统兼容
参考:
教材:计算机组成原理 (唐朔飞).pdf
视频:
https://www.bilibili.com/video/BV1t4411e7LH?p=107&vd_source=a89593e8d33b31a56b894ca9cad33d33
相关文章:
【学习笔记】计算机组成原理(七)
指令系统 文章目录 指令系统7.1 机器指令7.1.1 指令的一般格式7.1.2 指令字长 7.2 操作数类型和操作类型7.2.1 操作数类型7.2.2 数据在存储器中的存放方式7.2.3 操作类型 7.3 寻址方式7.3.1 指令寻址7.3.1.1 顺序寻址7.3.1.2 跳跃寻址 7.3.2 数据寻址7.3.2.1 立即寻址7.3.2.2 直…...
pillow学习4
ImageChops 模块 在 Pillow 库的内置模块 ImageChops 中包含了多个用于实现图片合成的函数。这些合成 功能是通过计算通道中像素值的方式来实现的。其主要用于制作特效、合成图片等操作。 常用的内置函数如下所示: (1)相加函数 add()…...
外企如何有效面对日益严格的跨境数据传输法律?
在当今这个数据驱动的时代,随着全球化步伐的加快,企业跨国界的数据交流已成为常态。但随之而来的,是各国政府对跨境数据传输日益严格的规定和监管,这让众多外资企业(简称“外企”)在享受全球市场红利的同时…...
运维开发.MySQL.范式与反范式化
运维开发 MySQL.三大范式 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/artic…...
HCIA-HarmonyOS Application Developer 课程大纲
一:鸿蒙 Mac 版、 Windows 版【编辑器】和【模拟器】 & 鸿蒙基础环境搭建 - ( 3 课时) - Mac arm 版开发环境搭建:Mac arm 版模拟器安装及配置;安装 DevEcoStudioPreview 版本; - Windows 版开发…...
如何用Java实现SpringCloud Alibaba Sentinel的熔断功能?
在Java中使用Spring Cloud Alibaba Sentinel实现熔断功能的步骤如下: 添加依赖 在项目的pom.xml文件中添加Spring Cloud Alibaba Sentinel的依赖: <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud…...
Day27
Day27 反射案例 案例一:万能数组扩容 注意:copyOf、toString public class Test01 {/*** 知识点:反射案例 之 万能数组扩容* * 注意:copyOf、toString*/public static void main(String[] args) {String[] ss {"aaa"…...
uni-app App端实现文字语音播报(Ba-TTS)
前言 最近在遇到消息提示语音播放出来,查了一圈文档发现并没有自带api 后面想起支付宝收钱播报,不受限与系统环境和版本环境(后面查阅他是音频实现的) 如果是由安卓端需要语音播放功能-直接使用Ba-TTs救急(需要付费2…...
在WHM中如何调整max_upload_size 参数大小
今日我们在搭建新网站时需要调整一下PHP参数max_upload_size 的大小,我们公司使用的Hostease的美国独立服务器产品默认5个IP地址,也购买了cPanel面板,因此联系Hostease的技术支持,寻求帮助了解到如何在WHM中调整PHP参数࿰…...
docker system prune命令详解
docker system prune 是 Docker 中的一个命令,用于清理 Docker 系统中的未使用资源,以帮助回收磁盘空间。这个命令执行一系列操作来删除不再需要的项目,具体包括: 删除所有已停止的容器。删除所有未被任何容器引用的网络…...
使用jdk自带jhat工具排查OOM问题
使用jdk自带jhat工具排查OOM问题 OOM java.lang.OutOfMemoryError: Java heap space排查步骤 编写一个测试类 public class TestJVM {Testpublic void test1() throws InstantiationException, IllegalAccessException {List<A> list new ArrayList<>();for (i…...
独孤思维:付费就是割韭菜,千万别上当
01 很多人觉得付费是坑,是割韭菜。 其实大多数情况,你所付费的,是购买了别人的经验。 让你能够少走很多弯路,让你能够节约大量时间和精力,购买别人的成功路径。 打一个粗俗的比方。 很多人都说,买的资料&am…...
【PB案例学习笔记】-12秒表实现
写在前面 这是PB案例学习笔记系列文章的第11篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…...
Linux驱动开发笔记(二) 基于字符设备驱动的GPIO操作
文章目录 前言一、设备驱动的作用与本质1. 驱动的作用2. 有无操作系统的区别 二、内存管理单元MMU三、相关函数1. ioremap( )2. iounmap( )3. class_create( )4. class_destroy( ) 四、GPIO的基本知识1. GPIO的寄存器进行读写操作流程2. 引脚复用2. 定义GPIO寄存器物理地址 五、…...
【ESP32之旅】ESP32 PlatformIO 固件单独烧录
背景 有时候使用PIO编写的代码需要发给客户去验证,相比较于发送源码直接发送bin文件,更加的安全而且高效。不用担心源码的泄漏,也不用帮客户配置PIO环境。 操作方法 1.编译 首先进行代码编译,如编译成功会在 .pio\build\airm2…...
视频监控业务平台LntonCVS运用国标协议对接视频汇聚管理综合平台应用方案
为了实现“以信息化推动应急管理能力现代化”的目标,应急管理部提出了加速现代信息技术与应急管理业务深度融合的计划。这一计划是国家加强和改进应急管理工作的关键举措,也是满足日益严峻的应急管理形势和人民群众不断增长的公共安全需求的紧迫需求。 为…...
【Linux 网络编程】协议的分层知识!
文章目录 1. 计算机网络背景2. 认识 "协议"3. 协议分层 1. 计算机网络背景 网络互联: 多台计算机连接在一起, 完成数据共享; 🍎局域网(LAN----Local Area Network): 计算机数量更多了, 通过交换机和路由器连接。 🍎 广…...
Firefox国际版
Firefox国际版官方网址: Download the Firefox Browser in English (US) and more than 90 other languagesEveryone deserves access to the internet — your language should never be a barrier. That’s why — with the help of dedicated volunteers around…...
封装和解构是 Python 中常用的技术
目录 前言 一、封装(Packing): 二、解构(Unpacking): 2.1 解构元组或列表: 2.2 解构字典: 2.3 使用*进行解构: 2.4 解构函数返回值 总结 前言 提示:这…...
理解OAuth:服务间的授权机制
理解OAuth:服务间的授权机制 好的,让我来教你一下关于这个奇怪的东西。 在不同的项目中,认证有很多不同的方式。但在我们深入探讨它的使用方式之前,让我们先来看看它最初的用途。 首先,我们可以从名称中得到一些线索。“auth”这个词与什么有关呢?问题是,这里的“aut…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
