【学习笔记】计算机组成原理(七)
指令系统
文章目录
- 指令系统
- 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…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...