计算机组成原理 学习总结4 指令系统

4.1 指令系统的发展和性能要求

4.1.1 指令系统的发展

程序——用于解决实际问题的一系列的指令;
指令——使计算机执行某种操作的命令;
从组成的层次结构来说,计算机的指令可分为如下3类:
微指令:微程序级的命令,它属于硬件;
机器指令(指令):可完成一个独立的算术或逻辑运算;
宏指令:由若干条机器指令组成的软件指令,它属于软件; 
指令系统:一台计算机中所有机器指令的集合。
由机器的硬件结构直接决定,影响机器的适用范围。

计算机指令系统的发展过程:
50年代
只有定点加减、逻辑运算、数据传送、转移等十几至几十条指令。
60年代后期
增加了乘除运算、浮点运算、十进制运算、字符串处理等指令,指令数目多达一二百条,寻址方式也趋多样化。
出现了系列计算机。
70年代末期
复杂指令系统计算机(CISC)、精简指令系统计算机(RISC)
早期的X86处理器(486之前)都是CISC指令系统;
奔腾系列CPU使用了RISC和CISC构架相结合的办法 ;

系列计算机:
基本指令系统、基本体系结构相同的一系列计算机;
但具体的器件、结构和性能都不会完全相同;
一般,新机种在各方面要优于旧机种。
一个系列往往有多种型号,各型号计算机的指令系统是向下兼容的。
新机种的指令系统包含旧机种的全部指令;
如Pentium系列PC机。

CISC

CISC(complex instruction set computer)
采用复杂的的指令系统,来达到增强计算机的功能、提高机器速度的目的。
特点:
指令系统复杂庞大,指令数目多;
指令格式多,指令字长不固定,多种寻址方式;
CPU内采用专用寄存器,指令访存不受限制;
各种指令的执行时间相差很大;
大都采用微程序控制器;

RISC

RISC(Reduced instruction set computer)
从简化指令系统和优化硬件设计的角度来提高系统的性能与速度。
RISC指令系统的主要特点:
选取使用频率高的简单指令;
指令长度固定,指令格式少,寻址方式种类少;
采用流水线技术;
使用较多的通用寄存器,减少访存;
控制器以组合逻辑控制为主;
采用优化编译技术;

4.1.2 指令系统性能的要求

完备性
常用指令齐全,编程方便;
有效性
程序占用内存少,运行速度快;
规整性
指令和数据的使用规则统一,易学易记;
规整性包括以下三方面的要求:
对称性:所有指令的操作数都可使用各种寻址方式;
匀齐性:一种操作性质的指令可以支持各种数据类型;
指令格式和数据长度的一致性:方便处理和存取;
兼容性
同一系列的低档计算机的程序能够在新的高档计算机上运行。

4.2 指令格式

指令的一般格式:
指令字(简称指令)
表示一条指令的机器字。
指令格式
指令字用二进制代码表示的结构形式,由操作码字段和地址码字段组成。

在这里插入图片描述
操作码字段:表征指令的操作特性与功能;
地址码字段:通常指定参与操作的操作数的地址。

4.2.1 操作码

操作码字段的位数取决于指令系统的规模;
操作码的类型:
固定长度的操作码
特征:所有指令长度均相同。
优点:控制简单,速度快,适用于指令条数不多的场合。
可变长度的操作码
特征:利用操作码扩展技术将操作码扩展到地址码字段,使各类指令的操作码长度不相同;
优点:充分利用软硬件资源,适用于大规模的指令系统。

4.2.2 地址码

一条指令格式中有几个地址码字段,就称为是几地址指令;
零地址指令 OP
无任何操作数运算,如NOP、HALT等指令。
单操作数运算:隐含一个操作数,如Acc
OP (Acc) ->Acc

一地址指令
单操作数运算: OP (A1) -> A1
双操作数运算:隐含一个操作数,如Acc
(Acc) OP (A1) ->Acc/A1

两地址指令
功能: (A1) OP (A2) -> A1
按操作数的寻址方式可分为RR型、RS型、SS型三种。
三地址指令
功能: (A1) OP (A2) -> A3
多地址指令(如四地址)
这类指令功能强,一般用高档小型机或中大型机,用于实现成批数据处理,字符串处理、向量或矩阵运算指令等。

两地址指令的分类(根据操作数的物理位置分)\

存储器-存储器(SS)型指令
A1、A2均为存储单元;
这类指令的执行需要多次访存。
寄存器-寄存器(RR)型指令
A1、A2均为寄存器(通用寄存器、专用寄存器);
这类指令的执行不需要访存。
寄存器-存储器(RS)型指令
A1、A2中一个为寄存器,一个为存储单元;
执行此类指令时,既要访问内存单元,又要访问寄存器。

操作码扩展

对于地址码较少的指令,把它们的操作码扩充到不用的地址码字段;
既充分利用指令字的各字段,又在不增加指令长度的情况下扩展操作码的长度。

设某指令长16位,包括4位基本操作码字段和3个4位地址码字段。
在这里插入图片描述
若全是三地址指令,则最多能有多少条指令?
操作码为4位的,则指令条数为24=16。
若三地址指令需15条 两地址指令需15条 单地址指令需15条 零地址指令需16条 应如何安排?
若采用固定操作码,则需要6位操作码编码;
若操作码编码仍采用4位,则可使用操作码扩展技术;

在这里插入图片描述
在这里插入图片描述

4.2.3 指令字长度

机器字长
运算器一次能处理的二进制数的位数。
指令字长
一个指令字中包含二进制代码的位数;
指令字长由操作码长度、操作数长度和个数共同决定。
指令有半字长、单字长、双字长、多字长等不同的长度类型;
指令系统可分为等长指令字结构、变长指令字结构两种;
等长指令字执行时,控制器容易解析,但指令类型受限;
变长指令字执行时,控制器解析复杂,但指令类型灵活;

4.2.4 指令助记符

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

4.2.5 指令格式举例

在这里插入图片描述
在这里插入图片描述

4.3 操作数类型

机器指令对数据进行操作,数据通常分为以下四类:
地址数据 如各类指令中的存储单元寻址方式
通过某种运算确定的操作数的有效地址;
数值数据 如各类指令中的立即数寻址方式
各种数制、各种编码数据;
压缩十进制数;
文本数据或字符数据;
逻辑数据 如各类指令中的标志位判断部分
由若干二进制位组成,每位的值可以是1或0。

4.4 指令和数据的寻址方式

4.4.1 指令的寻址方式

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

练习题

1、某计算机存储器按字编址(16位),读取这条指令后,PC的值自动加1,则说明该指令的长度是( B )个字节。
A.1 B.2 C.3 D.4
2、设某存储器按字编址,相对寻址的转移指令占两个字节,第一个字节是操作码,第二个字节是相对位移量(用补码表示)。每当CPU从存储器取出一个字节时,即自动完成PC+1PC。
(1)设当前PC的内容为2003H,要求转移到200AH,则该转移指令第二个字节的内容应为( A)。
A.05H B.06H C.07H
(2)若PC的内容为2008H,要求转移到2001H,则该转移指令第二个字节的内容应为( A)。
A.0F7H B.0F8H C.0F9H

4.3.2 操作数的寻址方式

一种单地址码指令的结构
在这里插入图片描述

地址码字段,包括寻址特征位和形式地址部分;
A字段长度决定了操作数或操作数地址的位数;
典型而常用的寻址方式有
隐含寻址、立即寻址、寄存器寻址、寄存器间接寻址、直接寻址、间接寻址、偏移寻址、堆栈寻址;
具体的指令系统中,寻址方式可以单独或组合使用;

1、隐含寻址

操作数地址隐含在操作码中;
如 8086的MUL 指令
被乘数隐含在 AX(16位)或 AL(8位)中;
指令字中少了一个地址字段,可缩短指令字长;
在这里插入图片描述

2、立即寻址

在这里插入图片描述
形式地址A就是操作数;

优点:
指令执行阶段不需要访存,速度快;
缺点:
形式地址A字段的位数限制了立即数的范围。

3、直接寻址

有效地址由形式地址字段A直接给出;
EA = A
在这里插入图片描述

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

4、间接寻址

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

在这里插入图片描述

特点
可扩大寻址范围;
A字段的长度受指令字长和指令格式的限制;
寻址时,可根据需要进行多次间址,但影响指令执行速度;
可用寻址特征I字段区分直接寻址和间接寻址方式;

5、寄存器寻址

形式地址字段A为寄存器编号;
OPR = (Ri)
特点
执行阶段不访存,只访问寄存器,执行速度快;
寄存器个数有限,占用的指令位较少,可有效地缩短指令字长;
在这里插入图片描述

6、寄存器间接寻址

形式地址字段A用于指出存放有效地址的寄存器编号;
EA = ( Ri )
特点:
指令执行阶段需要访存;
便于编制循环程序;在这里插入图片描述

7、基址寻址方式

由基址寄存器和形式地址A形成操作数有效地址;
EA=(基址R)+A
形式地址相当于位移量,可正可负;
基址寄存器可以是专用寄存器,或者使用通用寄存器;
若使用通用寄存器作为基址寄存器,则需在指令地址码字段中显式指出该寄存器;
基址寻址可以实现地址的重定位,扩大直接寻址空间;

8、变址寻址方式

由变址寄存器和形式地址A形成操作数有效地址;
EA=(变址R)+A
形式地址A作为基准地址;
变址寄存器作为可修改量,可自动增减量;
变址寻址适用于数组、字符串等成批连续数据处理指令;
变址寄存器可用通用寄存器充当,一般包含多个;

9、相对寻址方式

是基址寻址的一种变通;
程序计数器PC提供基准地址;
形式地址作为位移量D,可正可负;
EA=(PC)+D;

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

10、堆栈寻址方式

隐含寻址方式的一种变形;
其隐含的操作数在堆栈段中;
由栈顶指针指定;
8086堆栈指令举例
入栈指令PUSH SRC
SP-2->SP ;SRC->[SP]
出栈指令POP DST
[SP]->DST ;SP+2->SP

在这里插入图片描述

4.5 典型指令分类

  • List item

List item

  1. 数据传送指令
  2. 算术运算指令
  3. 逻辑运算指令
  4. 程序控制指令
  5. 输入输出指令
  6. 字符串处理指令
  7. 特权指令
  8. 其他指令
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值