首页 > 其他分享 >lec13-指令系统

lec13-指令系统

时间:2024-12-24 20:28:37浏览次数:6  
标签:操作数 指令系统 lec13 操作码 地址 指令 寄存器 寻址

lec13-指令系统

1. overview

2. 指令表示

2.1. 指令的要素

  • 操作码:指定将要完成的操作(opcode)
  • 源操作数引用:操作可能涉及一个或者多个源操作数,这是操作的输入
  • 结果操作数引用
  • 下一条指令引用:告诉处理器下一个指令要去哪里取出

2.2. 指令表示

指令格式:二进制串划分成几个字段,包括操作码,操作数;

  • 大多数的指令集使用了不止一种指令格式
    这带来一个问题:是否存在两种解读方式?
    • 解决方法:避免二义性,使得只有一种有意义的解读

2.3. 操作码

  • 不同的计算机上的操作码的数目变动比较大
  • 所有计算机上都会存在相同的常用操作类型
    • 数据传送(load, store…)
    • 算术运算(add, sub…)
    • 逻辑运算(and, or…)
    • 转换( ? )
    • 输入/输出(in, out)
    • 系统控制(ecall, ebreak…)
    • 控制转移(jal, branch…)
2.3.1. 数据传送

下面是数据传送指令应该包含的信息(或者说不同的数据传送指令之间的不同点)

  • 指明源操作数和目标操作数的位置
  • 指明将要传送的数据长度
  • 指明每个操作数的寻址方式
2.3.2. 算术运算
  • 一条算术运算的执行会涉及到数据传送操作:需要准备输入,并传送输出
    • 可以说,计算得到的结果只有存放到一个地方才是有意义的
2.3.3. 逻辑运算
  • 位操作(and, or, not, x-or… )
  • 移位和旋转(shift, rotate…)
  • compare, set…
2.3.4. 输入/输出
  • 各种输入/输出方法仅有少数输入/输出指令实现,具体操作由参数、代码或者命令字指定
2.3.5. 控制转移
    • 分支指令
    • 跳步指令(JMP?)
    • 过程调用指令
  • 实际上,分支/跳转指令,将要执行的下一条指令的地址作为它的操作数之一;

  • 跳步指令:包含一个隐含地址,这个隐含地址等于下一指令地址加上该指令长度之和

  • 过程调用指令:

    • 涉及到从目前的位置转移到某个过程的调用指令,以及由过程返回到调用发生位置的返回指令
    • 一些方法,当然为了满足递归调用等情景,最终是栈调用
      1. 使用寄存器
        在这里插入图片描述

      2. 存储在过程开始处
        在这里插入图片描述

      3. 使用栈来保存(现场
        在这里插入图片描述

2.4. 操作数

  • 常见类型:
    • 地址
    • 数值
    • 字符
    • 逻辑数据
2.4.1. 地址
  • 一个指令会需要若干个地址引用(可能是显式的,也可能是隐式的)
    • 一般是2个源操作数,1个目的操作数,下一指令地址
  • 指令中的地址数量指令条数之间:
    • 每条指令中的地址数量越少
      • 指令的长度越短,不需要复杂的CPU(因为可变部分变少,不需要复杂的硬件设计)
      • 程序的总的指令条数更多,执行时间更长
    • 一些运算,可以使用通用寄存器; 但是有些计算只使用特定的寄存器进行完成
  • ADD Y A B
    ADD Y B
    ADD B
    ADD 0
2.4.2. 数值
  • 计算集存储的数据是受限制的
  • k k k 位数长度的二进制编码,最多可以表示 2 k 2^k 2k不同的数字,这是一定的
2.4.3. 字符
  • IRA 国际参考字母表 / ASCII 美国信息交换标准码,每个字符被表示成唯一的7位二进制串
  • EBCDIC,扩展的二进制编码的十进制交换码:8位编码
  • 统一码(Unicode):16/32位
2.4.4. 逻辑数据
  • 1为 true, 0为 false
    在这里插入图片描述
2.4.5. 大端序 小端序

在这里插入图片描述

  • 人类的习惯来说,类似于大端序,按顺序读取数据的过程也是数据从小地址到大地址,也是数据组织的顺序

2.5. 操作数引用

  • 操作数的实际值
  • 操作数的地址,可能存放在
    • 寄存器
    • 主存/虚拟内存

有多种的寻址方式
在这里插入图片描述

2.5.1. 一些记号
  • A:指令中地址字段的内容
  • R:指向寄存器的指令地址字段内容
  • EA:被访问位置的实际(有效)地址
  • (X):存储器位置 X 或者 寄存器 X 的内容(类似与解引用的效果)
2.5.2. 立即寻址(可以记为立即数寻址)
  • 算法:操作数 = A
  • 优点:不要求额外的存储器访问
  • 缺点:数的大小收到地址字段的长度限制
2.5.3. 直接寻址
  • 算法:EA = A
  • 优点:只需要一次存储器访问
  • 缺点:有限的地址空间(因为地址收到A长度的限制)
2.5.4. 间接寻址
  • 算法:EA = (A)
  • 优点:扩大了地址空间
  • 缺点:取操作数需要2次的访问存储器
2.5.5. 寄存器寻址
  • 算法:EA = R, 也就是 操作数 = (R)
  • 优点:指令中只需要一个很小的地址字段,而且不需要存储器访问
  • 缺点:地址空间很有限
2.5.6. 寄存器间接寻址
  • 算法:EA = (R)
  • 优点:扩大了地址空间,比间接寻址少了1次存储器访问
  • 缺点:相对于寄存器寻址,多了一次存储器寻址
2.5.7. 偏移寻址
  • 包括了:
    相对寻址,基址寄存器寻址,变址

  • 整体算法:EA = (R) + A

  • 偏移寻址本身要求:指令有两个地址字段,至少其中一个是显式的

  1. 相对寻址
    • 隐含的寄存器是程序计数器(PC)
    • 算法:EA = (PC) + A
    • 优点:利用了程序局部性原理,节省指令中地址的位数
  2. 基址寄存器寻址
    • 方式:被引用的寄存器含有一个地址(也就是基址)
    • 算法:EA = (B) + A
    • 用法:虚拟内存空间中的程序重定位
  3. 变址寻址:
    • 方式:指令地址字段存下的是存储器地址,寄存器含有一个偏移量
    • 算法:EA = A + (R)
    • 用法:为完成重复操作,提供一种高效机制(循环操作等等
    • 在这里插入图片描述
2.5.8. 栈寻址
  • 方式:栈指针保存在寄存器中,对寄存器中栈位置的访问实际上也是一种寄存器间接寻址方式
2.5.9. 栈
  • 栈的操作:push, pop, 一元操作,二元操作
  • 栈的应用:后缀表达式,容易完成运算

3. 指令格式

3.1. 指令格式的设计原则

  • 指令尽量短
    • 减少程序占用空间
  • 有足够的操作码位数
    • 为了操作类型增加预留位数
  • 操作码的编码要有唯一的解释方法
  • 指令长度是字节的整数倍
    • 方便取指令等等
  • 合理选择地址字段的个数
    • 涉及到指令长度和规整性,是空间和时间开销权衡的结果
  • 指令尽量规整
    • 这样可以简化硬件的实现(布线可以简单化)
3.2.1. 指令长度
  • 权衡:发生在强有力的指令清单和节省空间之间进行
    • 编程人员希望:更多的操作码(多种操作),更多的操作数,更多的寻址方式,更大的地址范围
    • 指令长度变短:有利于节省存储空间,减少数据传送时间
  • 指令长度应该是等于存储器的传送长度(数据总线宽度),或者是整数倍
3.2.2. 位分配给字段
  • 对于给定的指令长度,在操作码数目和寻址能力之间存在着权衡考虑
  • 使用变长的操作码:
    • 有一个最小操作码长度,对于某些操作码就可以获得更多的位数(RISC v32中就有体现)
  • 使用寻址位的考虑因素:
3.3.3. 变长指令
  • 提供不同长度的各种指令格式
  • 优点
    • 可以提供大的操作码清单,操作码具有不同的长度
    • 寻址方式更加灵活*(?)*
  • 缺点:
    • 硬件非常复杂
3.3.4. 指令集设计
  • 指令集是软件和硬件的中间地带
    • 指令集定义了处理器应该实现的功能(对硬件影响大)
    • 指令集给出程序员操作处理器的方式(对软件的影响)
  • 设计的一些原则
    • 完整性
    • 兼容性
    • 均匀性
    • 可以扩展性
  • 设计的基本问题

标签:操作数,指令系统,lec13,操作码,地址,指令,寄存器,寻址
From: https://blog.csdn.net/lizz31/article/details/144568976

相关文章

  • 【计算机组成原理】汇总四、指令系统
    四、指令系统文章目录四、指令系统1.指令格式2.分类2.1根据地址码数目不同2.1.1零地址指令2.1.2一地址指令2.1.3二地址指令2.1.4三地址指令2.1.5四地址指令2.2根据指令长度2.3根据操作码的长度不同2.3.1==拓展操作码==2.4根据操作类型3.指令寻址3.1顺序寻址3.2跳跃寻......
  • 指令系统
    指令集体系结构ISA规定了指令获取操作数的方式,即寻址方式ISA规定了所有指令的集合,包括指令格式和操作类型ISA规定了程序可访问的寄存器个数、存储空间大小、编址方式和大端/小端方式我们可以认为,ISA规定了在这个指令集中,指令应该长什么样子,应该有什么样的硬件去支持这些指......
  • 计算机组成原理(唐硕飞)——指令系统
    7.1、机器指令指令的一般格式:操作码字段地址码字段操作码:用来指明该指令所要完成的操作,例如加法、减法等。地址码:地址码用来指出该指令的原操作数的地址、结果的地址以及下一条指令的地址。地址码分类1.四地址指令\(OP\)\(A_1\)\(A_2\)\(A_3\)\(A_4\)......
  • 计算机组成原理基础第4讲 指令系统
    计算机组成原理基础第4讲指令系统考点一:机器指令1.一般格式地址码考点二:指令设计指令字长操作数类型和操作种类3.操作类型数据传送算术逻辑操作移位操作转移输入输出考点三:寻址方式1.寻址方式概述2.数据寻址一.指令寻......
  • 计算机组成与体系结构-指令系统
    指令指令(又称机器指令):是指示计算机执行某种操作的命令,是计算机运行的最小功能单位由二进制表示,一条指令通常包括操作码字段和地址码字段两部分。操作码指出是什么操作,操作数直接指出操作数本身或者其对应地址。指令系统CISC(复杂指令系统):指令数量多,支持的寻址方式多,研制......
  • 计算机组成原理--第四章指令系统
    目前正在备考25考研,现将25计算机408学习整理的知识点进行汇总整理。一、指令系统1.1指令的定义指令就是计算机要执行某种操作的命令。一台计算机中所有机器指令的集合就是这台计算机的指令系统也称指令集。指令系统的引入是为了避免用户与二进制代码直接触。一般来说PC......
  • 计算机组成原理·指令系统
    指令系统指令系统是指令集体系结构ISA的核心ISA主要包括:指令格式数据类型及格式操作数的存放方式程序可访问的寄存器个数、位数和编号存储空间大小和编址方式寻址方式指令执行过程的控制方式等指令的基本格式一条指令包括操作码和地址码字段操作码地址码......
  • Vue入门到关门之指令系统
    一、引入在Vue.js中,指令(Directives)是一种特殊的标记,用于向Vue实例提供特殊的行为。指令以v-开头,例如v-if、v-for等。指令的本质就是语法糖,标志位。在编译阶段render函数里,会把指令编译成JavaScript代码。注意:指令都是放在标签上的二、指令1、文本指令(1)v-text......
  • 单片机寻址方式与指令系统
    通过前面的学习,我们已经了解了单片机内部的结构,并且也已经知道,要控制单片机,让它为我们干学,要用指令,我们已学了几条指令,但很零散,从现在开始,我们将要系统地学习8051单片机的指令部份。一、概述1、指令的格式  我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机......
  • 8051指令系统与系统编程(二)
    一、指令格式指令格式包含操作码和操作数;操作码: 指令执行什么操作操作数: 指令操作的对象二、指令中用到的符号R0:当前寄存器区的8个工作寄存器R0~R7Ri:当前寄存器区中作为间接寻址寄存器的2个寄存器R0、R1direct:直接地址,即8位内部数据存储器单元或特殊功能寄存器......