网络工程师 (3)指令系统基础
一、寻址方式
(一)指令寻址
顺序寻址:通过程序计数器(PC)加1,自动形成下一条指令的地址。这是计算机中最基本、最常用的寻址方式。
跳跃寻址:通过转移类指令直接或间接给出下一条指令的地址。跳跃寻址的转移地址形成方式有直接(绝对)、相对和间接寻址三种,用于实现程序的分支和循环。
(二)数据寻址
隐含寻址:操作数地址不明显的给出,隐藏在指令中。这种寻址方式简化了指令的格式,但降低了指令的灵活性。
立即寻址:指令中直接给出操作数的值,而不是操作数的地址。这种寻址方式获取操作数最快,因为不需要访问内存。例如,
MOV AX,#40H,这条指令将立即数40H传送给通用寄存器AX。直接寻址:指令中直接给出操作数的地址。例如,
MOV A,40H,这条指令将内部RAM中40H地址的内容传送给累加器A。直接寻址方式简单明了,但寻址范围受限。间接寻址:指令中给出的地址不是操作数的地址,而是存放操作数地址的内存单元的地址。间接寻址方式可以扩大寻址范围,但增加了访问内存的次数,降低了指令的执行速度。间接寻址有一级寻址和多级间接寻址之分,多级间接寻址需要多次访问内存才能得到操作数。
寄存器寻址:指令中直接给出操作数所在的寄存器的编号。寄存器寻址方式访问速度快,因为寄存器通常位于CPU内部,但寄存器数量有限,寻址范围受限。
寄存器间接寻址:指令中的地址码给出某一通用寄存器的编号,该寄存器中存放的是操作数的有效地址。例如,
MOV A,@Ri(i=0或1),这条指令先寻址Ri寄存器,得到其中内容为操作数的地址,再访问该地址得到操作数。寄存器间接寻址方式结合了寄存器寻址和间接寻址的优点,既提高了访问速度,又扩大了寻址范围。相对寻址:将程序计数器(PC)的内容加上指令格式中的形式地址,形成操作数的有效地址。相对寻址方式使得操作数的地址随着指令地址的变化而变化,但两者之间总是相差一个固定值,这对于实现程序的分支和循环非常有用。
基址寻址:将基址寄存器的内容加上指令格式中的位移量,形成操作数的有效地址。基址寻址方式通常用于将用户的逻辑地址转换为主存的物理地址,解决程序在主存中的定位问题。
变址寻址:将变址寄存器的内容与指令中给出的形式地址相加,形成操作数的有效地址。变址寻址方式最典型的用法是将指令中的形式地址作为基准地址,而变址寄存器的内容作为修改量,用于访问字符串、向量和数组等成批数据。
堆栈寻址:从规定的堆栈中取出操作数。堆栈是一种特殊的数据结构,遵循后进先出的原则,堆栈寻址方式通常用于实现子程序的调用和返回。
二、指令系统类型
(一)按指令集长度分类
复杂指令系统(CISC)
- 特点:指令长度可变,包含大量复杂的指令,指令格式和寻址方式多样化。
- 优点:功能丰富,能够直接执行高级语言的某些操作,减少编译器的复杂性。
- 缺点:指令复杂度高,执行时间长,功耗大,且大量复杂指令在实际中很少被使用,造成硬件资源的浪费。
- 代表:x86指令集。
精简指令系统(RISC)
- 特点:指令长度固定,指令格式简单,采用流水线技术,指令数量较少但每条指令的功能相对简单。
- 优点:指令执行速度快,功耗低,易于实现高速缓存和流水线技术,适合用于高性能计算机和嵌入式系统。
- 缺点:需要更多的指令来完成相同的任务,编译器和汇编语言的设计相对复杂。
- 代表:MIPS、ARM、LoongArch等。
超长指令系统(VLIW)
- 特点:本质是多条同时执行指令的组合,每条指令可以包含多个操作,指令长度非常长。
- 优点:能够充分利用处理器的并行处理能力,提高指令的执行效率。
- 缺点:编译器的设计非常复杂,需要精确地预测哪些指令可以并行执行,且对处理器的硬件设计有较高要求。
- 应用:主要在一些高性能计算领域和特定应用中使用。
(二)按指令操作的数据类型分类
堆栈型指令
- 特点:操作数都在栈顶,通过压栈和出栈操作进行数据的存取和运算。
- 优点:指令格式简单,易于实现,适合用于解释性语言和某些嵌入式系统。
- 缺点:运算速度相对较慢,因为需要频繁地进行栈操作。
累加器型指令
- 特点:一个隐含操作数是累加器,另一个操作数在指令中指定,结果写回到累加器中。
- 优点:简化了指令格式,减少了内存访问次数。
- 缺点:累加器的使用限制了指令的并行性,且不适用于所有类型的运算。
寄存器型指令
- 特点:操作数都来自寄存器,结果也存于寄存器中。寄存器型指令包括寄存器-存储器型和寄存器-寄存器型两种。
- 优点:访问速度快,因为寄存器通常位于CPU内部,且能够充分利用处理器的并行处理能力。
- 缺点:寄存器数量有限,寻址范围受限,需要编译器进行复杂的寄存器分配和优化。
(三)按指令的功能分类
数据传送类指令
功能:实现数据在不同存储单元之间的传送,包括主存单元之间、主存和寄存器之间、寄存器和寄存器之间的数据传送。算术/逻辑运算类指令
功能:完成定点/浮点数的四则运算、求补等运算,以及逻辑运算、移位操作等。程序控制类指令
功能:改变程序的执行顺序,包括条件转移、无条件转移、循环控制等。输入输出类指令
功能:实现外设和主机之间、外围设备之间的信息交换。其他指令
功能:包括字符串处理指令、特权指令、程序状态字寄存器置位复位指令、测试指令、暂停指令等。这些指令用于实现特定的功能或满足特定的需求。

三、Flynn分类
(一)基本概念
指令流:指计算机在执行程序时,指令序列的流动。
数据流:指计算机在执行指令时,所需数据的流动。
(二)四种基本架构类型
单指令流单数据流(SISD, Single Instruction Single Data Stream)
- 特点:传统的顺序处理计算机,其指令部件一次仅对一条指令进行译码,并仅对一个操作部件分配数据。
- 示例:早期的个人计算机,如386、486等,以及某些单片机系统。
- 应用:适用于简单的顺序执行任务,如基本的算术和逻辑运算。
单指令流多数据流(SIMD, Single Instruction Multiple Data Stream)
- 特点:包含多个重复的运算处理单元,但仅存在唯一的指令部件。指令部件从存储器中取出指令,译码后发往所有运算处理单元,各运算处理单元按照同一指令流的要求处理各自不同的数据。
- 优点:能够高效处理大量相同类型的数据,实现空间上的并行性。
- 示例:图形处理器(GPU)、Intel的MMX或SSE指令集、AMD的3D Now!指令集。
- 应用:适用于多媒体处理、图像处理、科学计算等领域。
多指令流单数据流(MISD, Multiple Instruction Stream Single Data Stream)
- 特点:多个指令流处理单个数据流。然而,这种架构在实际应用中很少见,因为它并不高效。理论上,每个指令流可能对数据流执行不同的操作,但在实践中,很难找到一个实际的应用场景,其中这种处理方式会比单指令流或多指令流多数据流更有优势。
- 现状:主要作为理论模型存在,没有投入到实际应用之中。
多指令流多数据流(MIMD, Multiple Instruction Stream Multiple Data Stream)
- 特点:实现作业、任务、指令、数据各个级别全面并行执行的计算机系统。拥有多个处理机,每个处理机具有独立的程序,每个程序为相应的处理器生成一个指令流,并处理各自不同的数据。
- 优点:能够充分利用处理器的并行处理能力,提高系统的整体性能。
- 示例:高性能服务器、超级计算机、分布式计算机系统。
- 应用:适用于大规模数据处理、高性能计算、云计算等领域。
(三)意义与应用
Flynn分类法不仅有助于理解不同计算机架构的并行性特点和处理方式,还为计算机系统的设计和优化提供了指导。例如,在开发高性能计算机或嵌入式系统时,可以根据具体的应用需求选择合适的架构类型。同时,Flynn分类法也为计算机体系结构的研究和发展提供了重要的理论基础。
四、流水线技术
(一)基本原理
流水线技术的基本原理是将一个重复的过程分解为若干个子过程,这些子过程在时间上重叠进行,前一个子过程为下一个子过程创造执行条件。在计算机系统中,流水线技术被用来优化指令的执行过程,将一条复杂的指令分解为多个简单的子任务,并由不同的功能部件并行处理,从而提高整体执行效率。
(二)分类
按处理级别分类:
- 部件级流水线:在处理较为复杂的运算时采用。
- 指令级流水线:将一条指令的执行过程分为多个阶段,如取指令、译码、执行、写回结果等。
- 处理器间级流水线:每个处理器完成其专门的任务。
按功能分类:
- 单功能流水线:只完成一种功能,如乘法或浮点运算等,多用于数字信号处理器(DSP)。
- 多功能流水线:在不同情况下可完成不同功能。
按连接方式分类:
- 静态流水线:同一时间内,多功能结构只能按一种功能的连接方式工作。
- 动态流水线:同一时间内,可以有多种功能的连接方式同时工作。
按处理对象分类:
- 标量流水线:处理一般数据。
- 向量流水线:处理矢量数据。
按流水线形状分类:
- 线性流水线:指各功能模块顺序串行连接,无反馈回路。
- 非线性流水线:带有反馈回路的流水线。
(三)关键步骤与实现方式
以经典的奔腾处理器为例,其整数流水线通常分为四级:指令预取、译码、执行和写回结果。每一级都对应一个专门的功能部件,负责完成相应的子任务。当第一条指令在执行某一阶段时,第二条指令可以同时进入流水线的下一个阶段,以此类推,实现了指令的并行处理。
流水线技术主要通过硬件电路来实现。在CPU中,通过设计多个并行工作的功能部件和相应的控制逻辑,来支持指令的并行处理。此外,软件层面的优化也是实现流水线技术的重要手段。编译器可以通过重新组织代码、优化指令序列等方式,来减少指令间的依赖关系,提高流水线的效率。
(四)性能指标
- 吞吐率:指的是计算机中的流水线在特定的时间内可以处理的任务或输出数据的结果的数量。流水线的吞吐率可以进一步分为最大吞吐率和实际吞吐率,它们主要和流水段的处理时间、缓存寄存器的延迟时间有关。
- 效率:表示流水线的设备利用率。在时空图上,流水线的效率定义为有效时间与总时间之比。
- 加速比:用S表示,若一个任务在单功能部件上顺序执行需n个时间单位,在m段流水线上执行需(m+n-1)个时间单位,则流水线对该任务的加速比为S=n/(m+n-1)。
(五)优势与挑战
- 提高执行速度:通过并行处理多条指令的不同阶段,流水线技术显著提高了计算机的执行速度。
- 资源利用率高:各个功能部件在同一时间内可以处理不同的指令子任务,从而提高了硬件资源的利用率。
- 简化设计复杂度:将复杂的指令分解为简单的子任务,有助于简化计算机体系结构的设计和实现。
然而,流水线技术也面临着一些挑战,如资源冲突、数据冒险等问题。为了解决这些问题,设计者们采取了多种措施,如增加缓存、优化指令调度等,以确保流水线的顺畅运行。
(六)应用与影响
流水线技术在现代计算机系统中得到了广泛应用,从个人电脑到大型服务器,从嵌入式系统到云计算平台,都可以看到流水线技术的身影。它显著提高了CPU的运算速度,使得计算机能够更快地处理数据。此外,流水线技术还促进了计算机硬件和软件的发展,为计算机性能的不断提升提供了有力支持。
结语
人生路上步步未知
正是这些铸就精彩
!!!

相关文章:
网络工程师 (3)指令系统基础
一、寻址方式 (一)指令寻址 顺序寻址:通过程序计数器(PC)加1,自动形成下一条指令的地址。这是计算机中最基本、最常用的寻址方式。 跳跃寻址:通过转移类指令直接或间接给出下一条指令的地址。跳…...
vue3和vue2的区别有哪些差异点
Vue3 vs Vue2 主要差异对比指南 官网 1. 核心架构差异 1.1 响应式系统 Vue2:使用 Object.defineProperty 实现响应式 // Vue2 响应式实现 Object.defineProperty(obj, key, {get() {// 依赖收集return value},set(newValue) {// 触发更新value newValue} })Vue3…...
第一届“启航杯”网络安全挑战赛WP
misc PvzHE 去这个文件夹 有一张图片 QHCTF{300cef31-68d9-4b72-b49d-a7802da481a5} QHCTF For Year 2025 攻防世界有一样的 080714212829302316092230 对应Q 以此类推 QHCTF{FUN} 请找出拍摄地所在位置 柳城 顺丰 forensics win01 这个软件 云沙盒分析一下 md5 ad4…...
DeepSeek R1与OpenAI o1深度对比
文章目录 引言技术原理DeepSeek R1OpenAI o1 性能表现官方数据推理任务知识密集型任务通用能力 价格对比应用场景科研与技术开发自然语言处理(NLP)企业智能化升级教育与培训数据分析与智能决策 部署与集成DeepSeek R1OpenAI o1 伦理考量DeepSeek R1OpenA…...
图漾Halcon版本SDK使用教程【V1.1.0新版本】
1.下载并安装 Halcon 1.1 下载Halcon软件 在 Halcon 官网(https://www.mvtec.com/downloads) 下载 Halcon (Windows 版) 安装包,并根据官方文档安装 Halcon,下载HALCON24.11Progress-Steady。 1.2 安装Halcon 1.解压HALCON 24.11.1.0的安装包压缩文件…...
基于区块链的数字身份认证:安全与隐私的未来
友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…...
软件开发中的密码学(国密算法)
1.软件行业中的加解密 在软件行业中,加解密技术广泛应用于数据保护、通信安全、身份验证等多个领域。加密(Encryption)是将明文数据转换为密文的过程,而解密(Decryption)则是将密文恢复为明文的过程。以下…...
计算树的叶子节点,使用c语言实现
//树的数据结构 typedef struct node{ ElemType data; /*数据域*/ struct node *child, *brother; /*孩子与兄弟域 */ }Tree; //计算树的叶子节点的个数 int Leaves (Tree *root){/*计算以孩子-兄弟表示法存储的森林的叶子数*/ if(root) if(root-&…...
20.Word:小谢-病毒知识的科普文章❗【38】
目录 题目 NO1.2.3文档格式 NO4.5 NO6.7目录/图表目录/书目 NO8.9.10 NO11索引 NO12.13.14 每一步操作完,确定之后记得保存最后所有操作完记得再次删除空行 题目 NO1.2.3文档格式 样式的应用 选中应用段落段落→开始→选择→→检查→应用一个一个应用ctr…...
滑动窗口详解:解决无重复字符的最长子串问题
滑动窗口详解:解决无重复字符的最长子串问题 在算法面试中,“无重复字符的最长子串”问题是一个经典题目,不仅考察基础数据结构的运用,还能够反映你的逻辑思维能力。而在解决这个问题时,滑动窗口(Sliding …...
力扣-链表-19 删除链表倒数第N个节点
思路 链表题目中操作链表的需要找到要操作节点的上一个节点,所以cur是当前想要操作的节点上一个节点 代码 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummy_head new ListNode();dummy_head->next head;int s…...
算法题(49):反转链表II
审题: 需要我们对指定范围的链表进行反转,并返回反转后链表的头结点 思路: 方法一:vector法 我们先遍历一次链表,并把数据对应的存在数组中,然后利用数组的reverse方法进行反转数据,最后再遍历一…...
基于SpringBoot多数据源解决方案
最近在学习SpringBoot的时候,需要同时用两个不同的数据库连接服务,在网上学习了之后,下文以连接一个MySQL数据库和一个SqlServer数据库为例。 配置数据源连接信息 在配置文件中,配置对应的数据库连接信息,相比于单数…...
通过案例研究二项分布和泊松分布之间关系(2)
通过案例研究二项分布和泊松分布之间关系 2. 汽车出事故的概率p与保险公司盈利W之间的关系3.通过遗传算法多次迭代计算控制p为多少时公司盈利最大(1) 计算过程(2) 结果及分析(计算过程详见附录二程序) 4.改变思路求解固定p为0.01时,保险费用如何设置公司可获得最大利润(1)计算过…...
RISC-V读书笔记4
目录 乘法与除法 RV32F 和 RV32D:单精度和双精度浮点数 原子操作 压缩指令 向量 乘法与除法 RV32M属于扩展的指令,主要扩展的就是便捷的乘法和除法指令。 除法: 商 (被除数− 余数) 除数 被除数 除数 商 余数 余数 被除数− (商 …...
【Uniapp-Vue3】request各种不同类型的参数详解
一、参数携带 我们调用该接口的时候需要传入type参数。 第一种 路径名称?参数名1参数值1&参数名2参数值2 第二种 uni.request({ url:"请求路径", data:{ 参数名:参数值 } }) 二、请求方式 常用的有get,post和put 三种,默认是get请求。…...
大数据学习之SCALA分布式语言三
7.集合类 111.可变set一 112.可变set二 113.不可变MAP集合一 114.不可变MAP集合二 115.不可变MAP集合三 116.可变map一 package com . itbaizhan . chapter07 //TODO 2. 使用 mutable.Map 前导入如下包 import scala . collection . mutable // 可变 Map 集合 object Ma…...
深度解析:MyBatis-Plus实现分页查询的封装!
全文目录: 开篇语前言摘要概述什么是分页查询?为什么选择 MyBatis-Plus?本文目标 源码解析分页插件核心逻辑 使用案例分享1. 配置 MyBatis-Plus 分页插件2. 定义分页查询方法3. Controller 层调用 应用场景案例优缺点分析优点缺点 核心类方法…...
第05章 14 绘制人脸部的PolyData并使用小圆锥体来展现法线
在VTK中,绘制人脸部的PolyData并使用小圆锥体来展现法线是一个常见的任务。这个过程可以通过以下步骤实现: 读取人脸部的PolyData:可以使用VTK的读取模块读取一个包含人脸部的.vtk或.obj文件。计算法线:使用VTK的vtkPolyDataNorm…...
基于微信小程序的电子商城购物系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
2000-2020年各省第二产业增加值占GDP比重数据
2000-2020年各省第二产业增加值占GDP比重数据 1、时间:2000-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、第二产业增加值占GDP比重 4、范围:31省 5、指标解释:第二产业增加值占GDP比重…...
【Docker】Docker入门了解
文章目录 Docker 的核心概念Docker 常用命令示例:构建一个简单的 C 应用容器1. 创建 C 应用2. 创建 Dockerfile3. 构建镜像4. 运行容器 Docker 优势学习 Docker 的下一步 **一、Docker 是什么?****为什么 C 开发者需要 Docker?** **二、核心概…...
【C语言分支与循环结构详解】
目录 ---------------------------------------begin--------------------------------------- 一、分支结构 1. if语句 2. switch语句 二、循环结构 1. for循环 2. while循环 3. do-while循环 三、嵌套结构 结语 -----------------------------------------end----…...
java求职学习day18
常用的设计原则和设计模式 1 常用的设计原则(记住) 1.1 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级 1.2 常用的设计原则 (1)开闭原则(Open Close Principle…...
初阶2 类与对象
本章重点 上篇1.面向过程和面向对象初步认识2.类的引入---结构体3.类的定义3.1 语法3.2 组成3.3 定义类的两种方法: 4.类的访问限定符及封装4.1 访问限定符4.2封装---面向对象的三大特性之一 5.类的作用域6.类的实例化7.类对象模型7.1 如何计算类对象的大小 8.this指…...
蓝桥杯模拟算法:多项式输出
P1067 [NOIP2009 普及组] 多项式输出 - 洛谷 | 计算机科学教育新生态 这道题是一道模拟题,我们需要分情况讨论,我们需要做一下分类讨论 #include <iostream> #include <cstdlib> using namespace std;int main() {int n;cin >> n;for…...
Python的那些事第三篇:Python编程的“调味料”与“交流术”运算符与输入输出
运算符与输入输出:Python编程的“调味料”与“交流术” 在编程的世界里,Python不仅仅是一门语言,它更像是一位充满智慧的厨师,而运算符和输入输出则是它手中的“调味料”和“交流术”。没有这些工具,代码就会像没有加…...
如何利用AI工具来进行数据分析
利用AI工具进行数据分析可以显著提高效率和准确性,以下是详细步骤和方法: 1. 明确分析目标 在开始数据分析之前,首先需要明确分析的目标和问题。这包括确定需要解决的问题、期望的见解或结果,以及选择合适的AI工具和方法。 2. …...
深度剖析C++17中的std::optional:处理可能缺失值的利器
文章目录 一、基本概念与设计理念二、构建与初始化(一)默认构造(二)值初始化(三)使用std::make_optional(四)使用std::nullopt 三、访问值(一)value()&#x…...
MySQL用户授权、收回权限与查看权限
【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…...
