计算机组成原理——指令系统(六)
在时间的长河中,我们都是追梦人,脚下的每一步都在刻画未来的模样。无论世界如何变幻,心中的那团火焰都不应熄灭。它是你突破黑暗、迎接黎明的力量源泉。每一个不曾起舞的日子,都是对生命的辜负;每一次跌倒后的站起,都是向着天空最有力的宣言。不要让外界的声音掩盖了你内心的真实渴望,也不要因为一时的迷茫而放弃了前行的勇气。在这趟独一无二的人生旅途中,你的价值不由他人定义,而是由你自己通过不懈的努力和追求来铸就。即使路途遥远,困难重重,也要坚信自己拥有创造奇迹的能力。因为你生来就是高山而非溪流,欲于群峰之巅俯视平庸的沟壑。继续勇敢地向前吧,你的光芒终将穿透云层,照亮整个世界。
计算机组成原理资源网
https://www.wenjingketang.com/这里面有ppt课后习题及答案,需要的可以自行下载
目录
5.3 典型指令
5.3.1 指令的分类
5.3.2 计算机指令结构分类
1. 按指令集的复杂度分类
1.1 CISC(Complex Instruction Set Computer)
1.2 RISC(Reduced Instruction Set Computer)
2. 按指令的操作类型分类
2.1 数据传输指令
2.2 算术逻辑指令
2.3 控制流指令
2.4 系统控制指令
3. 按指令的寻址方式分类
4. 按指令长度分类
4.1 定长指令
4.2 变长指令
5. 按存储方式分类
5.1 栈式架构
5.2 寄存器架构
5.3 混合架构
6. 按并行处理能力分类
6.1 SIMD指令(单指令多数据)
6.2 向量指令
7. 其他特殊指令
总结
5.3 典型指令
5.3.1 指令的分类
在计算机组成原理中,指令集架构(Instruction Set Architecture, ISA)是计算机硬件和软件之间的接口。它定义了处理器能够执行的所有操作。指令的分类有助于我们理解不同类型指令的功能及其对系统性能的影响。以下是根据功能和作用对指令进行的一种常见分类方式:
-
数据传送指令:这类指令负责在寄存器与寄存器之间、寄存器与存储器之间传输数据。例如,
MOV
(移动)指令用于将数据从一个位置复制到另一个位置。 -
算术逻辑指令:包括所有基本的算术运算(如加法
ADD
、减法SUB
)和逻辑运算(如与AND
、或OR
、非NOT
)。这些指令对数据进行处理,以实现计算任务。 -
移位操作指令:用于对寄存器中的内容进行左移或右移操作,通常包含逻辑移位、算术移位等。它们对于执行某些类型的数值计算和位操作非常有用。
-
跳转指令:控制程序的执行流程,使得程序可以有条件或无条件地跳转到指定的指令地址继续执行。常见的有
JMP
(无条件跳转)、JE
/JZ
(等于时跳转)、JNE
/JNZ
(不等于时跳转)等。 -
函数调用指令:支持子程序或函数的调用和返回,允许程序执行过程中临时转移到另一个代码段执行,并能在完成后返回原位置。典型指令包括
CALL
(调用子程序)和RET
(从子程序返回)。 -
比较与测试指令:用于比较两个值或者测试某个值是否满足特定条件,为后续的条件跳转提供依据。比如
CMP
(比较)指令会比较两个操作数但不会保存结果,而是影响标志寄存器以便于后面的条件判断。 -
系统控制指令:涉及操作系统级别的操作,如中断请求、权限级别改变等。这些指令允许用户模式下的程序请求操作系统服务或改变执行环境的安全状态。
每种类型的指令都有其独特的作用,共同支持了现代计算机系统的复杂操作。理解这些指令类型有助于深入学习计算机体系结构以及编写高效的程序代码。
5.3.2 计算机指令结构分类
计算机指令结构是计算机体系结构的核心组成部分,它决定了硬件如何执行程序、处理数据以及优化性能。指令结构的设计直接影响计算机的功能、效率和兼容性。根据不同的分类标准,计算机指令结构可以分为以下几类:
1. 按指令集的复杂度分类
计算机指令集的复杂度是区分不同架构的重要标准,主要分为 CISC(复杂指令集计算机) 和 RISC(精简指令集计算机)。
1.1 CISC(Complex Instruction Set Computer)
特点:
-
指令数量多,功能复杂。
-
单条指令可完成多个操作(如内存访问、算术运算)。
-
支持多种寻址模式。
-
指令长度不固定(变长指令)。
典型应用:
x86架构(Intel/AMD处理器)。
优势与劣势:
优点 | 缺点 |
---|---|
代码密度高,程序体积小 | 硬件复杂度高,设计成本大 |
适合复杂任务(如内存操作) | 指令执行周期长,流水线效率低 |
编程灵活,编译器设计简单 | 功耗较高,难以优化 |
示例:
一条CISC指令可能直接完成 MOV [AX], [BX] + [CX] * 2
这样的内存操作。
1.2 RISC(Reduced Instruction Set Computer)
特点:
-
指令数量少,功能简单。
-
单条指令仅完成基本操作(如寄存器间的数据传输)。
-
固定指令长度(定长指令)。
-
采用流水线技术提升效率。
典型应用:
ARM架构(移动设备、嵌入式系统)、MIPS、RISC-V。
优势与劣势:
优点 | 缺点 |
---|---|
硬件设计简单,易于优化 | 代码密度低,程序体积大 |
指令执行周期短,流水线效率高 | 复杂任务需多条指令组合 |
低功耗,适合移动设备 | 编译器设计复杂度高 |
示例:
RISC指令需分解复杂操作为多步:
-
LOAD R1, [BX]
-
LOAD R2, [CX]
-
MUL R3, R2, #2
-
ADD R4, R1, R3
-
STORE [AX], R4
2. 按指令的操作类型分类
指令按功能可分为 数据传输类、算术逻辑类、控制流类 和 系统控制类。
2.1 数据传输指令
负责数据在寄存器、内存、I/O设备间的移动。
指令 | 功能 | 示例 |
---|---|---|
MOV | 寄存器/内存间数据传输 | MOV AX, BX |
LOAD | 从内存加载数据到寄存器 | LDR R0, [R1] |
STORE | 将寄存器数据存入内存 | STR R0, [R1] |
2.2 算术逻辑指令
执行算术运算(加减乘除)和逻辑运算(与或非)。
指令 | 功能 | 示例 |
---|---|---|
ADD | 加法 | ADD R1, R2, R3 (R1 = R2 + R3) |
SUB | 减法 | SUB R1, R2, #5 |
AND | 按位与 | AND R0, R1, R2 |
2.3 控制流指令
控制程序执行顺序(跳转、分支、函数调用)。
指令 | 功能 | 示例 |
---|---|---|
JMP | 无条件跳转 | JMP 0x1000 |
CALL | 函数调用 | CALL func |
RET | 函数返回 | RET |
2.4 系统控制指令
管理硬件资源(中断、特权模式切换)。
指令 | 功能 | 示例 |
---|---|---|
INT | 触发中断 | INT 0x80 |
HALT | 停止CPU | HLT |
3. 按指令的寻址方式分类
寻址方式决定了操作数的来源,常见的寻址方式包括:
寻址方式 | 描述 | 示例 |
---|---|---|
立即寻址 | 操作数直接包含在指令中 | ADD R1, R2, #5 |
寄存器寻址 | 操作数在寄存器中 | MOV AX, BX |
直接寻址 | 操作数为内存地址 | LOAD R0, [0x1000] |
间接寻址 | 寄存器中存储内存地址 | LOAD R0, [R1] |
基址变址寻址 | 基址寄存器 + 变址寄存器 | MOV AX, [BX+SI] |
相对寻址 | 基于程序计数器的偏移量 | JMP PC + 0x20 |
4. 按指令长度分类
指令长度影响代码密度和译码效率。
4.1 定长指令
-
所有指令长度相同(如32位)。
-
优势:译码简单,适合流水线设计(RISC架构)。
-
示例:ARM指令集(32位定长)。
4.2 变长指令
-
指令长度可变(1字节到多字节)。
-
优势:代码密度高(CISC架构)。
-
示例:x86指令集(指令长度1~15字节)。
5. 按存储方式分类
根据操作数的存储位置,可分为 栈式架构、寄存器架构 和 混合架构。
5.1 栈式架构
-
操作数存储在栈中。
-
示例:Java虚拟机(JVM)指令集。
-
特点:无需显式指定操作数,但访问速度较慢。
5.2 寄存器架构
-
操作数存储在寄存器中。
-
示例:ARM、x86。
-
特点:速度快,需显式管理寄存器。
5.3 混合架构
-
结合栈和寄存器的优势。
-
示例:现代JVM(如HotSpot)通过JIT编译器优化栈操作为寄存器操作。
6. 按并行处理能力分类
现代处理器通过并行指令提升性能。
6.1 SIMD指令(单指令多数据)
-
一条指令处理多个数据。
-
示例:Intel SSE/AVX指令集。
-
应用场景:图像处理、科学计算。
6.2 向量指令
-
专用硬件处理向量数据。
-
示例:GPU中的CUDA指令。
7. 其他特殊指令
-
特权指令:仅在操作系统内核模式下执行(如修改页表)。
-
原子指令:保证操作的原子性(如
CAS
用于多线程同步)。
总结
计算机指令结构的设计是硬件与软件协同优化的结果。通过分类分析,可以更好地理解不同架构的适用场景(如CISC适合通用计算,RISC适合嵌入式系统),并为编译器设计、性能调优提供理论支持。
相关文章:
计算机组成原理——指令系统(六)
在时间的长河中,我们都是追梦人,脚下的每一步都在刻画未来的模样。无论世界如何变幻,心中的那团火焰都不应熄灭。它是你突破黑暗、迎接黎明的力量源泉。每一个不曾起舞的日子,都是对生命的辜负;每一次跌倒后的站起&…...

Python设计模式 - 原型模式
定义 原型模式是一种创建型设计模式,它可以通过复制现有对象来创建新对象,而不是直接实例化新的对象。 结构 抽象原型(Prototype):声明 clone() 方法,以便派生类实现克隆自身的能力。具体原型(…...

金和OA C6 DownLoadBgImage任意文件读取漏洞
金和OA C6 DownLoadBgImage任意文件读取漏洞 漏洞描述 金和C6数据库是一款针对企业信息化管理而设计的高级数据库管理系统,主要应用于企业资源规划(ERP)、客户关系管理(CRM)以及办公自动化(OA)…...

【stm32学习】STM32F103实操primary(FlyMCU)
github插入图片实在是太难用了,暂时懒得学就先用CSDN吧hh 一、在设备管理器下,找到单片机,并检查与FlyMCU-搜索端口 显示的是否一致 二、在搜索串口右面的栏里选中该Port,波特率选中115200 三、选择文件夹中的.hex文件࿰…...

如何将Excel的表格存为图片?
emmm,不知道题主具体的应用场景是什么,就分享几个我一般会用到的场景下奖excel表格保存为图片的技巧吧! 先来个总结: 方法 适用场景 画质 操作难度 截图(WinShiftS) 快速保存表格,方便粘贴…...

51单片机之使用Keil uVision5创建工程以及使用stc-isp进行程序烧录步骤
一、Keil uVision5创建工程步骤 1.点击项目,新建 2.新建目录 3.选择目标机器,直接搜索at89c52选择,然后点击OK 4.是否添加起吊文件,一般选择否 5.再新建的项目工程中添加文件 6.选择C文件 7.在C文件中右键,添加…...
AUTOSAR面试题集锦(1)
最基础概念 什么是AUTOSAR?AUTOSAR到底做了什么? AUTOSAR,即汽车开放系统架构,是一套专门用于汽车的开放性的框架和行业标准,旨在标准化汽车开发的流程。 AUTOSAR 通过标准化软件接口、交换格式和方法论等内容,主要实现以下几个目标: 1. 使软件和硬件彼此独立,让应…...

【Uniapp-Vue3】从uniCloud中获取数据
需要先获取数据库对象: let db uniCloud.database(); 获取数据库中数据的方法: db.collection("数据表名称").get(); 所以就可以得到下面的这个模板: let 函数名 async () > { let res await db.collection("数据表名称…...
AIOS: 一个大模型驱动的Multi-Agent操作系统设计与Code分析
AIOS: 一个大模型驱动的Multi-Agent操作系统设计与Code分析 随着人工智能技术的快速发展,传统操作系统逐渐暴露出难以适应AI时代多样化需求的局限性。特别是在支持多个智能体协同工作方面存在显著不足。为此,我们提出了一种名为AIOS(Artifici…...

Python----Python高级(网络编程:网络基础:发展历程,IP地址,MAC地址,域名,端口,子网掩码,网关,URL,DHCP,交换机)
一、网络 早期的计算机程序都是在本机上运行的,数据存储和处理都在同一台机器上完成。随着技术的发展,人 们开始有了让计算机之间相互通信的需求。例如安装在个人计算机上的计算器或记事本应用,其运行环 境仅限于个人计算机内部。这种设置虽然…...

收集的面试资料
转载自:NLP_基于酒店评论的情感分析-CSDN博客 机器学习的一般过程 如何介绍项目: 项目背景:项目输入,输出,后续应用点 项目数据:数据来源 数据处理方法:是否有脏数据,如何处理脏数据…...

pytest-xdist 进行多进程并发测试!
在软件开发过程中,测试是确保代码质量和可靠性的关键步骤。随着项目规模的扩大和复杂性的增加,测试用例的执行效率变得尤为重要。为了加速测试过程,特别是对于一些可以并行执行的测试用 例,pytest-xdist 提供了一种强大的工具&…...

LVGL4种输入设备详解(触摸、键盘、实体按键、编码器)
lvgl有触摸、键盘、实体按键、编码器四种输入设备 先来分析一下这四种输入设备有什么区别 (1)LV_INDEV_TYPE_POINTER 主要用于触摸屏 用到哪个输入设备保留哪个其他的也是,保留触摸屏输入的任务注册,其它几种种输入任务的注册&…...

全流程安装DeepSeek开源模型
目录 配置要求安装Ollama选择大模型安装大模型对话备注 配置要求 我的电脑配置为: CPU:i7 12代 GPU:3080 内存:32g 磁盘:1T以上配置运行情况: 运行ollama run deepseek-r1:7b模型无压力,CPU/…...
人工智能领域-CNN 卷积神经网络 性能调优
在自动驾驶领域,对卷积神经网络(CNN)进行性能调优至关重要,以下从数据处理、模型架构、训练过程、超参数调整和模型部署优化等多个方面为你详细介绍调优方法,并给出相应的代码示例。 1. 数据处理 数据增强࿱…...
人工智能A*算法与CNN结合- CNN 增加卷积层的数量,并对卷积核大小进行调整
以下是一个增强版的将 A* 算法与卷积神经网络(CNN)结合的代码实现,其中 CNN 增加了卷积层的数量,并对卷积核大小进行了调整。整体思路依然是先利用 A* 算法生成训练数据,再用这些数据训练 CNN 模型,最后使用…...
机器学习中常用的评价指标
一、分类任务常用指标 1. 准确率(Accuracy) 定义:正确预测样本数占总样本数的比例。优点:直观易懂,适用于类别平衡的数据。缺点:对类别不平衡数据敏感(如欺诈检测中99%的负样本)。…...

Windows安装cwgo,一直安装的是linux平台的
Windows安装cwgo,一直安装的是linux平台的 查看 go env ,发现 GOOSlinux 临时修改 GOOS ,set GOOSwindows ,再安装。 此时,安装的就是 windows 的可执行文件。安装之后再将 GOOS 修改回来即可。...

GitHub Pages + Jekyll 博客搭建指南(静态网站)
目录 🚀 静态网站及其生成工具指南🌍 什么是静态网站?📌 静态网站的优势⚖️ 静态网站 VS 动态网站 🚀 常见的静态网站生成器对比🛠️ 使用 GitHub Pages Jekyll 搭建个人博客📌 1. 创建 GitHu…...

21.[前端开发]Day21-HTML5新增内容-CSS函数-BFC-媒体查询
王者荣耀-网页缩小的问题处理 为什么会产生这个问题?怎么去解决 可以给body设置最小宽度 1 HTML5新增元素 HTML5语义化元素 HTML5其他新增元素 2 Video、Audio元素 HTML5新增元素 - video video支持的视频格式 video的兼容性写法 HTML5新增元素 - audio audio…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...