网络工程师 (3)指令系统基础

一、寻址方式

(一)指令寻址

顺序寻址:通过程序计数器(PC)加1,自动形成下一条指令的地址。这是计算机中最基本、最常用的寻址方式。

跳跃寻址:通过转移类指令直接或间接给出下一条指令的地址。跳跃寻址的转移地址形成方式有直接(绝对)、相对和间接寻址三种,用于实现程序的分支和循环。

(二)数据寻址

隐含寻址:操作数地址不明显的给出,隐藏在指令中。这种寻址方式简化了指令的格式,但降低了指令的灵活性。

立即寻址:指令中直接给出操作数的值,而不是操作数的地址。这种寻址方式获取操作数最快,因为不需要访问内存。例如,MOV AX,#40H,这条指令将立即数40H传送给通用寄存器AX。

直接寻址:指令中直接给出操作数的地址。例如,MOV A,40H,这条指令将内部RAM中40H地址的内容传送给累加器A。直接寻址方式简单明了,但寻址范围受限。

间接寻址:指令中给出的地址不是操作数的地址,而是存放操作数地址的内存单元的地址。间接寻址方式可以扩大寻址范围,但增加了访问内存的次数,降低了指令的执行速度。间接寻址有一级寻址和多级间接寻址之分,多级间接寻址需要多次访问内存才能得到操作数。

寄存器寻址:指令中直接给出操作数所在的寄存器的编号。寄存器寻址方式访问速度快,因为寄存器通常位于CPU内部,但寄存器数量有限,寻址范围受限。

寄存器间接寻址:指令中的地址码给出某一通用寄存器的编号,该寄存器中存放的是操作数的有效地址。例如,MOV A,@Ri(i=0或1),这条指令先寻址Ri寄存器,得到其中内容为操作数的地址,再访问该地址得到操作数。寄存器间接寻址方式结合了寄存器寻址和间接寻址的优点,既提高了访问速度,又扩大了寻址范围。

相对寻址:将程序计数器(PC)的内容加上指令格式中的形式地址,形成操作数的有效地址。相对寻址方式使得操作数的地址随着指令地址的变化而变化,但两者之间总是相差一个固定值,这对于实现程序的分支和循环非常有用。

基址寻址:将基址寄存器的内容加上指令格式中的位移量,形成操作数的有效地址。基址寻址方式通常用于将用户的逻辑地址转换为主存的物理地址,解决程序在主存中的定位问题。

变址寻址:将变址寄存器的内容与指令中给出的形式地址相加,形成操作数的有效地址。变址寻址方式最典型的用法是将指令中的形式地址作为基准地址,而变址寄存器的内容作为修改量,用于访问字符串、向量和数组等成批数据。

堆栈寻址:从规定的堆栈中取出操作数。堆栈是一种特殊的数据结构,遵循后进先出的原则,堆栈寻址方式通常用于实现子程序的调用和返回。

二、指令系统类型 

(一)按指令集长度分类

  1. 复杂指令系统(CISC)

    • 特点:指令长度可变,包含大量复杂的指令,指令格式和寻址方式多样化。
    • 优点:功能丰富,能够直接执行高级语言的某些操作,减少编译器的复杂性。
    • 缺点:指令复杂度高,执行时间长,功耗大,且大量复杂指令在实际中很少被使用,造成硬件资源的浪费。
    • 代表:x86指令集。
  2. 精简指令系统(RISC)

    • 特点:指令长度固定,指令格式简单,采用流水线技术,指令数量较少但每条指令的功能相对简单。
    • 优点:指令执行速度快,功耗低,易于实现高速缓存和流水线技术,适合用于高性能计算机和嵌入式系统。
    • 缺点:需要更多的指令来完成相同的任务,编译器和汇编语言的设计相对复杂。
    • 代表:MIPS、ARM、LoongArch等。
  3. 超长指令系统(VLIW)

    • 特点:本质是多条同时执行指令的组合,每条指令可以包含多个操作,指令长度非常长。
    • 优点:能够充分利用处理器的并行处理能力,提高指令的执行效率。
    • 缺点:编译器的设计非常复杂,需要精确地预测哪些指令可以并行执行,且对处理器的硬件设计有较高要求。
    • 应用:主要在一些高性能计算领域和特定应用中使用。

(二)按指令操作的数据类型分类

  1. 堆栈型指令

    • 特点:操作数都在栈顶,通过压栈和出栈操作进行数据的存取和运算。
    • 优点:指令格式简单,易于实现,适合用于解释性语言和某些嵌入式系统。
    • 缺点:运算速度相对较慢,因为需要频繁地进行栈操作。
  2. 累加器型指令

    • 特点:一个隐含操作数是累加器,另一个操作数在指令中指定,结果写回到累加器中。
    • 优点:简化了指令格式,减少了内存访问次数。
    • 缺点:累加器的使用限制了指令的并行性,且不适用于所有类型的运算。
  3. 寄存器型指令

    • 特点:操作数都来自寄存器,结果也存于寄存器中。寄存器型指令包括寄存器-存储器型和寄存器-寄存器型两种。
    • 优点:访问速度快,因为寄存器通常位于CPU内部,且能够充分利用处理器的并行处理能力。
    • 缺点:寄存器数量有限,寻址范围受限,需要编译器进行复杂的寄存器分配和优化。

(三)按指令的功能分类

  1. 数据传送类指令

    功能:实现数据在不同存储单元之间的传送,包括主存单元之间、主存和寄存器之间、寄存器和寄存器之间的数据传送。
  2. 算术/逻辑运算类指令

    功能:完成定点/浮点数的四则运算、求补等运算,以及逻辑运算、移位操作等。
  3. 程序控制类指令

    功能:改变程序的执行顺序,包括条件转移、无条件转移、循环控制等。
  4. 输入输出类指令

    功能:实现外设和主机之间、外围设备之间的信息交换。
  5. 其他指令

    功能:包括字符串处理指令、特权指令、程序状态字寄存器置位复位指令、测试指令、暂停指令等。这些指令用于实现特定的功能或满足特定的需求。

三、Flynn分类

(一)基本概念

指令流:指计算机在执行程序时,指令序列的流动。

数据流:指计算机在执行指令时,所需数据的流动。

(二)四种基本架构类型

  1. 单指令流单数据流(SISD, Single Instruction Single Data Stream)

    • 特点:传统的顺序处理计算机,其指令部件一次仅对一条指令进行译码,并仅对一个操作部件分配数据。
    • 示例:早期的个人计算机,如386、486等,以及某些单片机系统。
    • 应用:适用于简单的顺序执行任务,如基本的算术和逻辑运算。
  2. 单指令流多数据流(SIMD, Single Instruction Multiple Data Stream)

    • 特点:包含多个重复的运算处理单元,但仅存在唯一的指令部件。指令部件从存储器中取出指令,译码后发往所有运算处理单元,各运算处理单元按照同一指令流的要求处理各自不同的数据。
    • 优点:能够高效处理大量相同类型的数据,实现空间上的并行性。
    • 示例:图形处理器(GPU)、Intel的MMX或SSE指令集、AMD的3D Now!指令集。
    • 应用:适用于多媒体处理、图像处理、科学计算等领域。
  3. 多指令流单数据流(MISD, Multiple Instruction Stream Single Data Stream)

    • 特点:多个指令流处理单个数据流。然而,这种架构在实际应用中很少见,因为它并不高效。理论上,每个指令流可能对数据流执行不同的操作,但在实践中,很难找到一个实际的应用场景,其中这种处理方式会比单指令流或多指令流多数据流更有优势。
    • 现状:主要作为理论模型存在,没有投入到实际应用之中。
  4. 多指令流多数据流(MIMD, Multiple Instruction Stream Multiple Data Stream)

    • 特点:实现作业、任务、指令、数据各个级别全面并行执行的计算机系统。拥有多个处理机,每个处理机具有独立的程序,每个程序为相应的处理器生成一个指令流,并处理各自不同的数据。
    • 优点:能够充分利用处理器的并行处理能力,提高系统的整体性能。
    • 示例:高性能服务器、超级计算机、分布式计算机系统。
    • 应用:适用于大规模数据处理、高性能计算、云计算等领域。

(三)意义与应用

       Flynn分类法不仅有助于理解不同计算机架构的并行性特点和处理方式,还为计算机系统的设计和优化提供了指导。例如,在开发高性能计算机或嵌入式系统时,可以根据具体的应用需求选择合适的架构类型。同时,Flynn分类法也为计算机体系结构的研究和发展提供了重要的理论基础。

四、流水线技术

(一)基本原理

       流水线技术的基本原理是将一个重复的过程分解为若干个子过程,这些子过程在时间上重叠进行,前一个子过程为下一个子过程创造执行条件。在计算机系统中,流水线技术被用来优化指令的执行过程,将一条复杂的指令分解为多个简单的子任务,并由不同的功能部件并行处理,从而提高整体执行效率。

(二)分类

  1. 按处理级别分类

    • 部件级流水线:在处理较为复杂的运算时采用。
    • 指令级流水线:将一条指令的执行过程分为多个阶段,如取指令、译码、执行、写回结果等。
    • 处理器间级流水线:每个处理器完成其专门的任务。
  2. 按功能分类

    • 单功能流水线:只完成一种功能,如乘法或浮点运算等,多用于数字信号处理器(DSP)。
    • 多功能流水线:在不同情况下可完成不同功能。
  3. 按连接方式分类

    • 静态流水线:同一时间内,多功能结构只能按一种功能的连接方式工作。
    • 动态流水线:同一时间内,可以有多种功能的连接方式同时工作。
  4. 按处理对象分类

    • 标量流水线:处理一般数据。
    • 向量流水线:处理矢量数据。
  5. 按流水线形状分类

    • 线性流水线:指各功能模块顺序串行连接,无反馈回路。
    • 非线性流水线:带有反馈回路的流水线。

(三)关键步骤与实现方式

       以经典的奔腾处理器为例,其整数流水线通常分为四级:指令预取、译码、执行和写回结果。每一级都对应一个专门的功能部件,负责完成相应的子任务。当第一条指令在执行某一阶段时,第二条指令可以同时进入流水线的下一个阶段,以此类推,实现了指令的并行处理。

       流水线技术主要通过硬件电路来实现。在CPU中,通过设计多个并行工作的功能部件和相应的控制逻辑,来支持指令的并行处理。此外,软件层面的优化也是实现流水线技术的重要手段。编译器可以通过重新组织代码、优化指令序列等方式,来减少指令间的依赖关系,提高流水线的效率。

(四)性能指标

  1. 吞吐率:指的是计算机中的流水线在特定的时间内可以处理的任务或输出数据的结果的数量。流水线的吞吐率可以进一步分为最大吞吐率和实际吞吐率,它们主要和流水段的处理时间、缓存寄存器的延迟时间有关。
  2. 效率:表示流水线的设备利用率。在时空图上,流水线的效率定义为有效时间与总时间之比。
  3. 加速比:用S表示,若一个任务在单功能部件上顺序执行需n个时间单位,在m段流水线上执行需(m+n-1)个时间单位,则流水线对该任务的加速比为S=n/(m+n-1)。

(五)优势与挑战

  1. 提高执行速度:通过并行处理多条指令的不同阶段,流水线技术显著提高了计算机的执行速度。
  2. 资源利用率高:各个功能部件在同一时间内可以处理不同的指令子任务,从而提高了硬件资源的利用率。
  3. 简化设计复杂度:将复杂的指令分解为简单的子任务,有助于简化计算机体系结构的设计和实现。

       然而,流水线技术也面临着一些挑战,如资源冲突、数据冒险等问题。为了解决这些问题,设计者们采取了多种措施,如增加缓存、优化指令调度等,以确保流水线的顺畅运行。

(六)应用与影响

       流水线技术在现代计算机系统中得到了广泛应用,从个人电脑到大型服务器,从嵌入式系统到云计算平台,都可以看到流水线技术的身影。它显著提高了CPU的运算速度,使得计算机能够更快地处理数据。此外,流水线技术还促进了计算机硬件和软件的发展,为计算机性能的不断提升提供了有力支持。

 结语  

人生路上步步未知

正是这些铸就精彩

!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/960658.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Games104——高级动画技术:动画树、IK和表情动画

这里写目录标题 动画混合数学混合:线性插值混合空间Blend Space1D Blend Space2D Blend SpaceSkeleton Masked Blending骨骼遮罩混合Addictive Blending 动画状态机Animation State Machine(ASM)动画状态机定义节点:分为clip和ble…

【Rust自学】15.6. RefCell与内部可变性:“摆脱”安全性限制

题外话,这篇文章一共4050字,是截止到目前为止最长的文章,如果你能坚持读完并理解,那真的很强! 喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以…

lightweight-charts-python 包 更新 lightweight-charts.js 的方法

lightweight-charts-python 是 lightweight-charts.js 的 python 包装,非常好用 lightweight-charts 更新比较频繁,导致 lightweight-charts-python 内置的 lightweight-charts 经常不是最新的。 新的 lightweight-charts 通常可以获得性能改进和bug修复…

2025多目标优化创新路径汇总

多目标优化是当下非常热门且有前景的方向!作为AI领域的核心技术之一,其专注于解决多个相互冲突的目标的协同优化问题,核心理念是寻找一组“不完美但均衡”的“帕累托最优解”。在实际中,几乎处处都有它的身影。 但随着需求场景的…

Python从0到100(八十五):神经网络-使用迁移学习完成猫狗分类

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…

第4章 神经网络【1】——损失函数

4.1.从数据中学习 实际的神经网络中,参数的数量成千上万,因此,需要由数据自动决定权重参数的值。 4.1.1.数据驱动 数据是机器学习的核心。 我们的目标是要提取出特征量,特征量指的是从输入数据/图像中提取出的本质的数 …

深度学习|表示学习|卷积神经网络|详细推导每一层的维度变化|14

如是我闻: 一个经典的卷积神经网络(CNN)架构,呈现的是输入图像通过多个卷积层、池化层以及全连接层,最终输出分类结果的过程。整个过程的核心是理解输入特征图的尺寸如何在每一层发生变化,我们可以通过卷积…

java基础——专题一 《面向对象之前需要掌握的知识》

目录 Δ前言 一、拾枝杂谈 1.Java是什么? 2.计组前瞻: 3.JDK,JRE,JVM? 二、环境搭建 1.JDK安装和配置: 1.1 人话 1.2 JDK的配置 1.3 如何切换JDK的版本? 2.DOS的简单使用: 2.1 介…

强化学习数学原理(三)——值迭代

一、值迭代过程 上面是贝尔曼最优公式,之前我们说过,f(v)v,贝尔曼公式是满足contraction mapping theorem的,能够求解除它最优的策略和最优的state value,我们需要通过一个最优v*,这个v*来计算状态pi*&…

2025蓝桥杯JAVA编程题练习Day1

1.刑侦科推理试题 题目描述 有以下10道单选题,编程求这10道题的答案。 这道题的答案是: A. A B. B C. C D. D 第5题的答案是: A. C B. D C. A D. B 以下选项中哪一题的答案与其他三项不同: A. 第3题 B. 第6题 C. 第2题 D.…

内存泄漏的通用排查方法

本文聊一聊如何系统性地分析查找内存泄漏的具体方法,但不会具体到哪种语言和具体业务代码逻辑中,而是会从 Linux 系统上通用的一些分析方法来入手。这样,不论你使用什么开发语言,不论你在开发什么,它总能给你提供一些帮…

定时器按键tim_key模版

低优先级放在高优先级内势必是程序卡死 把高优先级放到低优先级内,会使程序卡死 可修改 Debuger调试方法 Pwm rcc #include "my_main.h" uint8_t led_sta0x10; char text[30]; void LED_Disp(uint8_t dsLED) {HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPI…

MacOS 如何解决无法打开 ‘xxx’,因为 Apple 无法检查其是否包含恶意软件

背景 在安装软件时,遇到“无法打开 ‘xxx’,因为 Apple 无法检查其是否包含恶意软件” 的提示,许多用户可能会感到困惑,不知道该如何处理。遇到这个问题时,按以下步骤操作即可解决。 首先,这个警告提示的出…

数据结构与算法学习笔记----求组合数

数据结构与算法学习笔记----求组合数 author: 明月清了个风 first publish time: 2025.1.27 ps⭐️一组求组合数的模版题,因为数据范围的不同要用不同的方法进行求解,涉及了很多之前的东西快速幂,逆元,质数,高精度等…

柔性数组与c/c++程序中内存区域的划分

1.柔性数组 1.1柔性数组的定义 柔性数组是指在结构体中定义的,其大小在编译时未确定,而在运行时动态分配的数组。这种数组允许结构体的大小根据需要动态变化。语法如下: struct D {int a;int arry1[0]; };struct F {int a;int arry2[]; };…

Vivado生成X1或X4位宽mcs文件并固化到flash

1.生成mcs文件 01.在vivado里的菜单栏选择"tools"工具栏 02.在"tools"里选择"生成内存配置文件" 03.配置参数 按照FPGA板上的flash型号进行选型,相关配置步骤可参考下图。 注意:Flash数据传输位宽如果需要选择X4位宽&am…

云原生:构建现代化应用的基石

一、什么是云原生? 云原生是一种构建和运行应用程序的方法,旨在充分利用云计算的分布式系统优势,例如弹性伸缩、微服务架构、容器化技术等。云原生应用程序从设计之初就考虑到了云环境的特点,能够更好地适应云平台的动态变化&…

力扣动态规划-12【算法学习day.106】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…

day7手机拍照装备

对焦对不上:1、光太暗;2、离太近;3、颜色太单一没有区分点 滤镜可以后期P 渐变灰滤镜:均衡色彩,暗的地方亮一些,亮的地方暗一些 中灰滤镜:减少光差 手机支架:最基本70cm即可 手…

解锁微服务:五大进阶业务场景深度剖析

目录 医疗行业:智能诊疗的加速引擎 电商领域:数据依赖的破局之道 金融行业:运维可观测性的提升之路 物流行业:智慧物流的创新架构 综合业务:服务依赖的优化策略 医疗行业:智能诊疗的加速引擎 在医疗行业迈…