计算机组成原理-指令系统-笔记

第四章 指令系统

程序:用于解决实际问题的一系列指令;

指令:是计算机执行某种操作的命令

从层次结构来说,计算机指令可以分为如下3类:

  • 微指令:微程序的命令,它属于硬件;
  • 机器指令(指令):可完成一个独立的逻辑运算或算术运算;
  • 宏指令:由若干机器指令组成的软件指令,它属于软件

指令系统是指,一台计算机所有指令的集合。由计算机的硬件结构直接决定,影响机器的适用范围。

复杂指令系统计算机(CISC)、精简指令系统计算机(RISC)

基本指令系统和基本体系结构都相同的计算机称为一个系列计算机

CISC(complex instruction set computer)

  • 采用复杂的指令系统,来达到增强计算机功能、提高计算机速度的目的

特点:

  1. 指令系统庞大,指令条数多;
  2. 指令格式多,指令字长不固定,多种寻址方式;
  3. CPU内采用专用寄存器,指令访存不受限制;
  4. 各种指令执行时间相差很大;
  5. 大都采用微程序控制;

RISC(Reduced instruction set computer)

从简化指令系统和优化硬件设计的角度来提高系统的性能与速度

特点:

  1. 选取使用频率高的简单指令;
  2. 指令长度固定,指令格式少,寻址方式种类少;
  3. 采用流水线技术;
  4. 使用较多的通用寄存器,减少访存;
  5. 控制器以组合逻辑控制为主;
  6. 采用优化编译技术;

指令系统要具备:完备性、有效性、规整性、兼容性

完备性:指令齐全,编程方便

有效性:程序占用内存少,运行速度快

规整性:指令和数据使用规则统一,易学易记

  • 规整性又要满足以下性质:
    • 对称性:所有指令的操作数可以使用各种寻址方式;
    • 匀齐性:一种操作性质的指令可以支持各种数据类型;
    • 指令格式和数据长度的一致性

兼容性:同一系列的抵挡计算机能够在新的高档计算机上运行

指令格式

指令字(指令):表示一条指令的机器字

指令格式:指令字用二进制代码表示的结构形式,由操作码字段和地址码字段组成。操作码字段表征指令的操作特性与功能;地址码字段通常指参与操作的数据的地址。

指令字长一定是8的倍数

操作码

image-20220730092721541

固定长度操作码

特征:所有指令长度相同

优点:控制简单,速度快,适用于指令条数不多的场合

可变长度操作码

特征:利用操作码扩展技术,将操作码扩展到地址码字段,使各类指令的操作码长度不相同;

优点:充分利用硬件资源,适用于大规模的指令系统

操作码扩展技术:指有的指令地址码比较少,仅用了一部分地址码字段,可以将操作码占用未被使用的地址码字段,进而产生更多地址码字段个数少的指令

地址码

一条指令中有几个地址码字段就成为几地址指令;有零地址指令、一地址指令、二地址指令、三地址指令、多地址指令(如四地址指令)

多地址指令功能性较强,一般用于高档小型机或中大型机,用于实现成批数据的处理、字符串处理、向量或矩阵运算指令等。

两地址指令的分类

image-20220730093627839

根据A1,A2的存储位置不同进行分类;

  1. SS型指令,即A1,A2都在存储器中
  2. RS型指令,即A1在寄存器中,A2在存储器中
  3. RR型指令,即A1,A2都在寄存器中

指令长度

机器字长:运算器能一次处理的二进制数的位数。

指令字长:一个指令中包含的二进制代码的位数,由操作码字段、操作数长度和个数共同决定。

指令有半字长、单字长、双字长、多字长等不同长度类型;

指令系统可以分为等长指令字结构 和 变长指令字结构两种;

  • 等长指令字执行时,控制器易解析,但指令类型受限
  • 变长指令字执行时,控制器解析复杂,但指令类型灵活

指令助记符

使用3~4个英文字母来表示指令的操作码,在不同的计算机中,指令的助记符的规定是不一样的;指令助记符只是操作码字段表示的一种方式,机器内部保存的还是指令的二进制代码,作为机器指令。由汇编或编译程序将助记符翻译成机器代码。

机器指令通常对数据进行操作,数据通常分为以下四类:地址数据、数值数据、字符数据、逻辑数据

地址数据:如各类指令中的存储单元的寻址方式

数值数据:如各类指令中的立即数寻址方式

字符数据:文本数据或字符数据

逻辑数据:如各类指令中的标志位判断部分

指令和数据的寻址方式

指令寻址方式

  1. 顺序寻址方式
    • 当程序执行的流向不发生变化时,指令的寻址方式;
    • 由程序计数器/指令指针寄存器记录要执行的指令的地址;一般一次取址之后,其值加本条指令所占的单元数。
  2. 跳跃寻址方式
    • 当程序的流向发生变化时,指令的寻址方式
    • 程序计数器的内容由本条指令给出,而不是顺序改变;
      • 直接寻址方式:指令中给出要转向的有效地址;
      • 相对寻址方式:指令中给出要转向的单元与当前单元的偏移量
      • 间接寻址方式:指令给出保存要转向地址的寄存器或存储单元

操作数寻址方式

给出一个单地址码指令的结构如下:

image-20220730111414748

给出一个操作数信息的字段,称为地址码字段;地址码字段包括寻址特征位和形式地址A,寻址特征位用于区分形式地址A所采用的寻址方式,A字段的长度决定了操作数或操作地址的位数;

常见的寻址方式有:

  1. 隐含寻址
  2. 立即寻址
  3. 寄存器寻址
  4. 寄存器间接寻址
  5. 直接寻址
  6. 间接寻址
  7. 偏移寻址
  8. 堆栈寻址

具体的指令系统中,寻址方式可以单独或混合使用

隐含寻址

操作数地址隐含在操作码中

image-20220730111739312
立即寻址
image-20220730111812125

形式地址A就是操作数

优点:指令执行阶段不需要访存,执行速度快

缺点:形式地址A字段的位数,限制了立即数的范围

直接寻址
image-20220730112038291

有效地址由形式地址A直接给出

特点:

  • 执行阶段访问一次存储器;
  • A的位数决定了该操作数的寻址范围;
  • 改变操作数麻烦(必须修改指令中A字段)
间接寻址
image-20220730112326045

有效地址由形式地址A指向的的空间存储的内容给出

特点:

  • 可扩大寻址范围;
    • A字段的长度受指令字长和指令格式的限制;
  • 指令执行速度慢,现在较少使用;
  • 可用寻址特征I字段区分直接寻址和间接寻址方式;
寄存器寻址
image-20220730112552901

形式地址A,记录寄存器的编号,寄存器中存储操作数

特点:

  • 不需要访存,只访问寄存器,执行速度快
  • 寄存器个数有限,占用指令位数较少,可有效缩短指令字长
寄存器间接寻址

形式地址A为寄存器编号,寄存器存储的是操作的数的有效地址

image-20220730112947948

特点:指令执行阶段需要访存,便于编制循环程序

基址寻址方式
image-20220730155338792

有效地址由基址寄存器和形式地址A共同形成:EA = (基址R)+ A,形式地址可正可负,基址寄存器可以是专用寄存器,也可以是通用寄存器;

  • 若使用通用寄存器作为基址寄存器,则需要在指令地址码字段显示指出该寄存器
变址寻址方式
image-20220730161108174

由变址寄存器和形式地址A形成操作数有效地址:EA = (变址R)+ A

形式地址A作为基准地址,变址寄存器作为可修改量,可自动增减量

变址寻址方式适用于数组、字符串等成批连续数据处理的指令;变址寄存器可以用通用寄存器充当,一般包含多个;

相对寻址方式
image-20220730162556719

是基址寻址的一种变通

程序计数器PC提供基址,形式地址A作为位移量D,可正可负;EA = PC + D

相对寻址方式常用于转移类指令

堆栈寻址方式

隐含寻址方式的一种变形,其隐含操作数在堆栈段中,由栈顶指针指定;

如8086CPU的入栈指令:PUSH SRC; ---> SP - 2 --> SP; SRC -->[SP];

出栈指令:POP DST; [SP] --> DST; SP + 2 --> SP;

操作码字段可以包含寻址特征,此包含意思是一个 OP 能体现其对应的寻址方式

posted @ 2022-07-30 17:20  伍六柒-  阅读(648)  评论(0编辑  收藏  举报