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

文章目录
- 指令系统
- 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…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
