【笔记】指令系统(二)

2024-03-11 20:40
文章标签 笔记 指令系统

本文主要是介绍【笔记】指令系统(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 三、寻址方式
    • 1.指令寻址
    • 2.数据寻址
      • 立即寻址
      • 直接寻址
      • 隐含寻址
      • 间接寻址
      • 寄存器寻址
      • 寄存器间接寻址
      • 基址寻址
      • 变址寻址
      • 相对寻址
      • 堆栈寻址
  • 四、RISC技术
    • 1.RISC的主要特征
    • 2.RICS II 指令系统举例
    • 3.RICS指令系统的扩充
    • 4.RISC和CISC的比较

三、寻址方式

  寻址方式分为指令寻址数据寻址两大类。

1.指令寻址

  指令寻址分为顺序寻址跳跃寻址两种。
  顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址;跳跃寻址则通过转移类指令实现。

2.数据寻址

  指令的地址码字段通常都不代表操作数的真实地址,把它称为形式地址,记作A。操作数的真实地址称为有效地址,记作EA,它是由寻址方式形式地址共同来确定的。

这里写图片描述

立即寻址

  立即寻址的特点是操作数本身设在指令字内,即形式地址A不是操作数的地址,而是操作数本身,又称为立即数。数据是采用补码形式存放的。

这里写图片描述

  优点在于只要取出指令,便可立即获得操作数,这种指令在执行阶段不必再访问存储器。A的位数限制了这类指令所能表述的立即数的范围。

直接寻址

  直接寻址的特点是指令字中的形式地址A就是操作数的真实地址EA,即EA=A

这里写图片描述

  它的优点是寻找操作数比较简单,也不需要专门计算操作数的地址,在指令执行阶段对主存只访问一次。缺点在于A的位数限制了操作数的寻址范围,而且必须修改A的值,才能修改操作数的地址。

隐含寻址

  隐含寻址是指指令字中不明显地给出操作数的地址,其操作数的地址隐含在操作码或某个寄存器中

这里写图片描述

  由于隐含寻址在指令字中少了一个地址,因此这种寻址方式的指令有利于缩短指令字长。

间接寻址

  倘若指令字中的形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储单元地址,也就是有效地址是由形式地址间接提供的,即为间接寻址,即EA=(A)

这里写图片描述

  当多次间接寻址时,可用存储字的首位来标志间接寻址是否结束。当存储字首位是“1”时,表明还需继续访存寻址;当存储字首位为“0”时,标明该存储字即为EA。
  优点:这种寻址方式与直接寻址相比,扩大了操作数的寻址范围,因为A的位数通常小于指令字长,而存储字长可与指令字长相等。另外它便于编制程序。只要在调用前先将返回地址存入子程序最末条指令的形式地址A的存储单元内,便可准确返回到原程序断点。
  缺点:指令的执行阶段需要访存两次(一次间接寻址)或多次(多次间接寻址),致使指令执行时间延长。

寄存器寻址

  在寄存器寻址的指令字中,地址码字段直接指出了寄存器编号,其操作数在由 R i R_i Ri所指的寄存器内,即 E A = R i EA=R_i EA=Ri

这里写图片描述

  由于操作数不在主存中,故寄存器寻址在指令执行阶段无须访存,减少了执行时间。由于地址字段只需指明寄存器编号(计算机中寄存器数有限),故指令字较短,节省了存储空间。

寄存器间接寻址

   R i R_i Ri中的内容不是操作数,而是操作数所在主存单元的地址号,即有效地址 E A = ( R i ) EA=(R_i) EA=(Ri)

这里写图片描述

  与寄存器寻址相比,指令的执行阶段还需访问主存。因有效地址不是存放在存储单元中,故称其为寄存器间接寻址,它比间接寻址少访存一次。

基址寻址

  基址寻址需设有基址寄存器BR,其操作数的有效地址EA等于指令字中的形式地址与基址寄存器中的内容(称为基地址)相加,即 E A = A + ( B R ) EA=A+(BR) EA=A+(BR)

这里写图片描述

  基址寄存器可采用隐式的和显示的两种。所谓隐式,是在计算机内专门设有一个基址寄存器BR,使用时用户不必明显指出该基址寄存器,只需由指令的寻址特征位反映出基址寻址即可。显式在一组通用寄存器里,由用户名明确指出哪个寄存器用作基址寄存器,存放基地址。

  基址寻址可以扩大操作数的寻址范围,因基址寄存器的位数可以大于形式地址A的位数。当主存容量较大时,若采用直接寻址,因受A的位数限制,无法对主存所有单元进行访问,但采用基址寻址便可实现对主存空间的更大范围寻访。
  用户可不必考虑自己的程序存于主存的哪一空间区域,完全可由操作系统或管理程序根据主存的使用状况,赋予基址寄存器内一个初始值(即基地址),便可将用户程序的逻辑地址转化为主存的物理地址(实际地址),把用户程序安置于主存的某一空间区域。

变址寻址

  其有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即 E A = A + ( I X ) EA=A+(IX) EA=A+(IX)
  只要变址寄存器位数足够,也可扩大操作数的寻址范围。

这里写图片描述

  基址寻址主要用于为程序或数据分配存储空间,故基址寄存器的内容通常由操作系统或管理程序确定,在程序的执行过程中其值是不可变的,而指令字中的A是可变的。在变址寻址中,变址寄存器的内容是由用户设定的,在程序执行过程中其值可变,而指令字中的A是不可变的。变址寻址主要用于处理数据问题,在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器的IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。

  有的机器的变址寻址具有自动变址的功能,即每存取一个数据,根据数据长度(即所占字节数),变址寄存器能自动增量或减量,以便形成下一个数据的地址。
  变址寻址还可以与其他寻址方式结合使用。变址寻址可与基址寻址合用,此时有效地址EA等于指令字中的形式地址A和变址寄存器的内容(IX)及基址寄存器BR中的内容(BR)相加之和,即 E A = A + ( I X ) + ( B R ) EA=A+(IX)+(BR) EA=A+(IX)+(BR)。变址寄存器还可与间接寻址合用,形成先变址后间址或先间址再变址等寻址方式。

相对寻址

  相对寻址的有效地址是将程序计数器PC的内容与指令字中的形式地址A相加而成,即 E A = ( P C ) + A EA=(PC)+A EA=(PC)+A

这里写图片描述

  相对寻址常被用于转移类指令,转移后的目标地址与当前指令有一段距离,称为相对位移量,它由指令字的形式地址A给出,故A又称位移量。位移量A可正可负,通常用补码表示。
  相对寻址的最大特点是转移地址不固定,它可随PC指的变化而变,因此无论程序在主存的哪段区域,都可正确运行,对于编写浮动程序特别有利。
  相对寻址也可与间接寻址配合使用。

堆栈寻址

  堆栈寻址要求计算机中设有堆栈。堆栈既可用寄存器组(称为硬堆栈)来实现,也可利用主存的一部分空间作堆栈(称为软堆栈)。堆栈的运行方式为先进后出或先进先出两种,先进后出型堆栈的操作数只能从一个口进行读或写。堆栈寻址也可视为一种隐含寻址,其操作数的地址总被隐含在SP中。堆栈寻址就其本质也可视为寄存器间接寻址,因SP可视为寄存器,它存放着操作数的有效地址。

四、RISC技术

  RISC即精简指令系统计算机,与其对应的是CISC,即复杂指令系统计算机。

1.RISC的主要特征

  RISC技术是用20%的简单指令的组合来实现不常用的80%的那些指令功能。在提高性能方面,RISC技术采取的最有效的方法就是减少指令的执行周期数。
  计算机执行程序所需的时间P可用下式表述: P = I × C × T P=I\times C\times T P=I×C×T其中,I是高级语言程序编译后在机器上运行年的机器指令数;C为执行每条机器指令所需的平均机器周期,T是每个机器周期的执行时间。
  RISC的性能优于CISC 2~5倍。

  RISC的主要特点:

  1. 选取使用频度较高的一些简单指令乙级一些很有用但又不复杂的指令,让复杂指令的功能由频度高的简单指令的组合来实现。
  2. 指令长度固定,指令格式种类少,寻址方式种类少。
  3. 只有取数/存数(LOAD/STORE)指令访问存储器,其余指令的操作都寄存器内完成。
  4. CPU中有多个通用寄存器。
  5. 采用流水线爱你技术,大部分指令在一个时钟周期内完成。采用超标量和超流水线技术,可使每条指令的平均执行时间小于一个时钟周期。
  6. 控制器采用组合逻辑控制,不用微程序控制。
  7. 采用优化的编译程序。

  CISC的指令系统复杂庞大,各种指令使用频度相差很大;指令字长不固定,指令格式多,寻址方式多;可以访存的指令不受限制;CPU中设有专用寄存器;绝大多数指令需要多个时钟周期方可执行完毕;采用微程序控制器;难以用优化编译生成高效的目标代码。

2.RICS II 指令系统举例

(1)指令种类
  RICS II共有39条指令,分为以下4类。

寄存器-寄存器操作:移位、逻辑、算术运算等12条指令。
取/存数指令:取存字节、半字、字等16条。
控制转移指令:条件转移、调用/返回等6条。
其他:存取程序状态字PSW和程序计数器等5条。

(2)指令格式
  RICS机的指令格式比较简单,寻址方式也比较少,如RICS II的指令格式有两种:短立即数格式长立即数格式。指令字长固定为32位,指令字中每个字段都有固定位置。

(3)寻址方式
  RICS II指令系统有两种访存方式。一种是变址寻址,另一种是相对寻址,还可以组合方式产生其他寻址方式。若令变址寄存器内容为0,则成为直接寻址方式;若令位移量为0,则称为寄存器间接寻址方式

3.RICS指令系统的扩充

  因用途不同还可扩充一些指令。

  • 浮点指令
  • 特权指令
  • 读后置数指令
  • 一些简单的专用指令

4.RISC和CISC的比较

  与CISC机相比,RISC机的主要优点可归纳如下:

  1. 充分利用VLSI芯片的面积
  2. 提高计算机的运算速度
  3. 便于设计,可降低成本,提高可靠性
  4. 有效支持高级语言程序

这篇关于【笔记】指令系统(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799018

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus