ch7_1指令系统

ch7_1指令系统_第1张图片

计算机硬件与软件之间的接口, 指令系统。

ch7_1指令系统_第2张图片

1.机器指令

1.1 指令的格式

指令的格式是什么?
操作码,地址码,寻址方式;

在这里插入图片描述

  • 指令的字长,可以分为固定字长,可变字长;

  • 操作码的长度可以是固定的,也可以是变化的。

操作码 反映机器做什么操作
长度固定:
用于指令字长较长的情况 , RISC
如 IBM 370 操作码 8 位
长度可变:
操作码分散在指令字的不同字段中

1.2 扩展操作码

扩展操作码是
一种指令优化技术,即让操作码的长度随地址数的减少而增加,不同地址数的指令可以具有不同的操作码长度;

ch7_1指令系统_第3张图片

  • 三地址指令操作码, 每减少一种最多可多构成 2 4 2^4 24种二地址指令

  • 二地址指令操作码,每减少一种最多可多构成 2 4 2^4 24 种一地址指令

1.3 地址码

地址码用来指出该指令的原操作数的地址(一个或两个)、结果的地址以及下一条指令的地址。

如果地址字段均指示主存的地址,则完成一条四地址指令,共需访问4次存储器(取指令一次,取两个操作数两次,存放结果一次)

  • 四地址
    ch7_1指令系统_第4张图片

  • 三地址
    ch7_1指令系统_第5张图片

(A1) OP (A2) A3 : 若 PC 代替 A4

  • 二地址
    ch7_1指令系统_第6张图片

若结果存于 ACC 若ACC 代替 A1(或A2

  • 一地址
    ch7_1指令系统_第7张图片

  • 零地址, 无地址码

1.4 指令字长

指令字长取决于:

  • 操作码的长度、
  • 操作数地址的长度和
  • 操作数地址的个数

指令字长 固定
指令字长 = 存储字长

指令字长 可变
按字节的倍数变化

1.5 小结

当用一些硬件资源代替指令字中的地址码字段后:

• 可扩大指令的寻址范围
• 可缩短指令字长
• 可减少访存次数

当指令的地址字段为寄存器时:

三地址 OP R1, R2, R3
二地址 OP R1, R2
一地址 OP R1
• 指令执行阶段不访存
• 可缩短指令字长

2.  操作数类型与操作类型

一个字节通常8位长。
4 个字节代表一个字,这是计算机在执行指令时能够有效处理数据的单位。一些语言描述需要2个字节表示一个字符,这叫做双字节字符集。

2.1 操作数类型

地址, 无符号整数

数字, 定点树 , 浮点数, 十进制数
字符, ASCII
逻辑数: 逻辑运算

2.2 数据在存储器中的存放方式

大端与小端的存储方式.
由于不同的机器数据字长不同,每台机器处理的数据字长也不统一;
ch7_1指令系统_第8张图片
字节编址,数据在存储器中的存放方式(存储字长64
位,机器字长32位)

    1. 从任意位置开始存储,
      ch7_1指令系统_第9张图片

优点:不浪费存储资源
缺点:除了访问一个字节之外,访问其它任何类型的数据,
都可能花费两个存储周期的时间。读写控制比较复杂。

  • 2, 从一个存储字的起始位置开始访问

ch7_1指令系统_第10张图片
优点:无论访问何种类型的数据,在一个周期内
均可完成,读写控制简单。

缺点:浪费了宝贵的存储资源

-3. 边界对准方式——从地址的整数倍位置开始访问

ch7_1指令系统_第11张图片
数据存放的起始地址是数据长度(按照编址单位
进行计算)的整数倍.

本方案是前两个方案的折衷,在一个周期内
可以完成存储访问,空间浪费也不太严重。

为了便于硬件实现,通常要求多字节的数据在存储器的存放方式能满足“边界对准”的要求。

2.3 操作类型

  • 数据传送

ch7_1指令系统_第12张图片

压栈,将寄存器中的内容保存到内存单元中。

  • 算术逻辑操作
    加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算
    与、或、非、异或、位操作、位测试、位清除、位求反

如 8086
ADD SUB MUL DIV INC DEC CMP NEG
AAA AAS AAM AAD
AND OR NOT XOR TEST

  • 移位操作
    算术移位, 逻辑移位,

循环移位(带进位和不带进位)

2.4 转移指令

  • 无条件转移 JMP

  • 条件转移:
    结果为零转 (Z = 1) JZ
    结果溢出转 (O = 1) JO
    结果有进位转(C = 1) JC
    跳过一条指令 SKP;
    ch7_1指令系统_第13张图片

  • 调用和返回
    调用指令(CALL)一般与返回指令(RETURN)配合使用。
    ch7_1指令系统_第14张图片

  • 陷阱(Trap) 与陷阱指令

意外事故的中断:

一般不提供给用户直接使用
在出现事故时,由 CPU 自动产生并执行(隐指令)

设置供用户使用的陷阱指令
如 8086 INT TYPE 软中断
提供给用户使用的陷阱指令,完成系统调用

  • 输入输出

输入和输出,是相对cpu 中的寄存器而言的。
入: 端口中的内容 CPU 的寄存器, 比如 IN AL, n; IN AL, DX;

出: CPU 的寄存器 端口中的内容。
OUT n, AX OUT DX, AL;

3.  寻址方式

寻址方式,
确定 本条指令 的 操作数地址
下一条要执行 指令 的 指令地址

寻址方式,

  • 指令寻址,和
  • 数据寻址;

3.1  指令寻址

指令寻址中可分

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

ch7_1指令系统_第15张图片

顺序寻址,指令的地址保存在pc当中;

3.2 数据寻址

操作码 寻址特征 形式地址 A

形式地址: 指令字中的地址 
有效地址: 操作数的真实地址

以下各类数据寻址方式中,约定
指令字长 = 存储字长  = 机器字长

3.2.1 立即寻址

形式地址 A 就是操作数,

在这里插入图片描述

  • 指令执行阶段不访存
  • A 的位数限制了立即数的范围

3.2.1 直接寻址

EA = A  有效地址由形式地址直接给出
ch7_1指令系统_第16张图片

• 执行阶段访问一次存储器
• A 的位数决定了该指令操作数的寻址范围
• 操作数的地址不易修改(必须修改A)

3.2.2 隐含寻址

寻址方式,隐藏在操作码当中,
操作数地址,隐含在操作码中。
ch7_1指令系统_第17张图片

MUL 指令 :被乘数隐含在 AX(16位)或 AL(8位)中

MOVS 指令: 源操作数的地址隐含在 SI 中
目的操作数的地址隐含在 DI 中

  • 指令字中少了一个地址字段,可缩短指令字长.

3.2.3 间接寻址

EA =(A) 有效地址由形式地址间接提供.

操作数地址,保存在某一个内存单元当中。
即第一次,访问内存单元中,保存的是操作数地址,为什么要将操作数地址,存放在内存单元中的原因是,为了扩大地址的寻址范围。

ch7_1指令系统_第18张图片

  • 间接寻址执行指令阶段有2次访存,
  • 可以扩大寻址的范围,便于编制程序.
  • 多次访存
    ch7_1指令系统_第19张图片

3.2.4 寄存器直接寻址

EA = R, 有效地址即为寄存器编号.

ch7_1指令系统_第20张图片

• 执行阶段不访存,只访问寄存器,执行速度快.

• 寄存器个数有限,可缩短指令字长.

3.2.5 寄存器间接寻址

EA = ( Ri ), 有效地址在寄存器中.

ch7_1指令系统_第21张图片

• 有效地址在寄存器中, 操作数在存储器中,执行阶段访存.
• 便于编制循环程序

3.2.6 基址寻址

  1. 采用专用寄存器作基址寄存器:
    基址寻址EA=(BR)+ A, BR为基址寄存器(专用)

ch7_1指令系统_第22张图片

  • 可扩大寻址范围
    • 有利于多道程序
    • BR 内容由操作系统或管理程序确定
    • 在程序的执行过程中 BR 内容不变,形式地址 A 可变
  1. 通用寄存器作为基址寄存器。

ch7_1指令系统_第23张图片

  • 由用户指定哪个通用寄存器作为基址寄存器

• 基址寄存器的内容由操作系统确定
• 在程序的执行过程中 R0 内容不变,形式地址 A 可变

3.2.7 变址寻址

EA = (IX) + A

IX 为变址寄存器(专用),
通用寄存器也可以作为变址寄存器.

ch7_1指令系统_第24张图片

  • 可扩大寻址范围
    • 便于处理数组问题
    • IX 的内容由用户给定
    • 在程序的执行过程中 IX 内容可变,形式地址 A 不变

ch7_1指令系统_第25张图片

3.2.8 相对寻址

相对寻址EA = (PC)+ A,
A是相当于当前指令地址的位移量,可正可负,用补码表示。

ch7_1指令系统_第26张图片

  • A 的位数决定操作数的寻址范围
    • 程序浮动
    • 广泛用于转移指令

ch7_1指令系统_第27张图片

ch7_1指令系统_第28张图片

3.2.19 堆栈寻址

堆栈;

硬堆栈, 多个寄存器;
软堆栈, 指定的存储空间;

先进后出(一个入出口), 栈顶地址 由 SP 指出;

栈地址, 越往上越小,逐个减一,进栈后,地址上移。
进栈 (SP) – 1 SP, 出栈 (SP) + 1 SP

ch7_1指令系统_第29张图片

ch7_1指令系统_第30张图片

  • SP 的修改与主存编址方法有关

ch7_1指令系统_第31张图片

堆栈寻址方式中,设A为累加器,SP为堆栈指示器,

4. 指令格式举例

设计指令格式时考虑的因素包括

  • 指令系统的兼容性,

  • 操作类型: 包括指令个数及操作的难易程度

  • 数据类型: 确定哪些数据类型可参与操作

  • 指令格式:指令字长是否固定,
    地址码位数、地址个数、寻址方式类型.
    操作码位数、是否采用扩展操作码技术,

  • 寻址方式: 指令寻址、操作数寻址

  • 寄存器个数:寄存器的多少直接影响指令的执行时间
    4

4.1 IBM360

ch7_1指令系统_第32张图片

4.2 Intel 8086

ch7_1指令系统_第33张图片

B:基址寄存器。
D是偏移地址, X, 偏移地址寄存器。

5. RISC 技术

RISC(Reduced Instruction Set Computer)
CISC(Complex Instruction Set Computer)
—— RISC技术

5.1 RISC 的产生原因

80-20规律是指典型程序中80%的语句仅仅使用处理机中20%的指令。

 典型程序中 80% 的语句仅仅使
用处理机中 20% 的指令.

 执行频度高的简单指令,因复杂指令
的存在,执行速度无法提高.

能否用 20% 的简单指令组合不常用的 80% 的指令功能

5.2 RISC 的主要特征

  • 选用使用频度较高的一些 简单指令,
    复杂指令的功能由简单指令来组合.

 指令 长度固定、指令格式种类少、寻址方式少
 只有 LOAD / STORE 指令访存
 CPU 中设有 多个 通用 寄存器
 采用 流水技术 ,一个时钟周期 内完成一条指令
 采用 组合逻辑 实现控制器

5.3 CISC 的主要特征

  • 系统指令 复杂庞大,各种指令使用频度相差大
     指令 长度不固定、指令格式种类多、寻址方式多
     访存 指令 不受限制
     CPU 中设有 专用寄存器
     大多数指令需要 多个时钟周期 执行完毕
     采用 微程序 控制器

5.4 RISC和CISC 的比较

  1. RISC更能 充分利用 VLSI 芯片的面积
  2. RISC 更能 提高计算机运算速度
    指令数、指令格式、寻址方式少,
    通用 寄存器多,采用 组合逻辑 ,
    便于实现 指令流水
  3. RISC 便于设计,可 降低成本,提高 可靠性
  4. RISC 不易 实现 指令系统兼容

现代处理器中
–RISC
–CISC
–RISC与CISC相结合

你可能感兴趣的:(#,计算机组成原理,指令系统)