计算机组成原理复习总结(四)指令系统

第四章 指令系统

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

指令系统基本概念

  • 指令:就是要计算机执行某种操作的命令。从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令之分。
    • 微指令是微程序级的命令,它属于硬件;
    • 宏指令:由若干条机器指令组成的软件指令,它属于软件;
    • 机器指令:介于微指令与宏指令之间,通常简称为指令
  • 每一条指令可完成一个独立的算术运算或逻辑运算操作。本章所讨论的指令,是机器指令。
  • 一台计算机中所有机器指令的集合,称为这台计算机的指令系统
    • 指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围

4.1.1 指令系统的发展

发展情况
  • 50年代,指令系统只有定点加减、逻辑运算、数据传送、转移等十几至几十条指令

  • 60年代后期,增加了乘除、浮点、十进制、字符串处理等指令,指令数目多达一二百条,寻址方式也趋多样化,开始出现系列计算机

  • 70年代末期,大多数计算机的指令系统多达几百条,称这些计算机为复杂指令系统计算机(CISC,Complex Instruction Set Computer)。

    • 但是如此庞大的指令系统不但使计算机的研制周期变长,难以保证正确性,不易调试维护,而且由于采用了大量使用频率很低的复杂指令而造成硬件资源浪费,产生指令集所谓20:80规律
    • 最常使用的简单指令仅占指令总数的20%,但在程序中出现的频率却占80%。
  • 于是人们又提出了便于VLSI技术实现的精简指令系统计算机(RISC,Reduded Instruction Set Computer)

4.1.2 对指令系统性能的要求

  • 完备性:完备性是指用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现。 完备性要求指令系统丰富、功能齐全、使用方便。一台计算机中最基本、必不可少的指令是不多的。许多指令可用最基本的指令编程来实现。
  • 有效性:有效性是指利用该指令系统所编写的程序能够高效率地运行。 高效率主要表现在程序占据存储空间小、执行速度快。
  • 规整性:规整性包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。
    • 对称性:在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式;
    • 匀齐性:一种操作性质的指令可以支持各种数据类型,如算术运算指令可支持字节、字、双字整数的运算,十进制数运算和单、双精度浮点数运算等;
    • 指令格式和数据格式的一致性:指令长度和数据长度有一定的关系,以方便处理和存取。例如指令长度和数据长度通常是字节长度的整数倍。
  • 兼容性:系列机各机种之间具有相同的基本结构和共同的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用。 但由于不同机种推出的时间不同,在结构和性能上有差异,做到所有软件都完全兼容是不可能的,只能做到**“向上兼容”**,即低档机上运行的软件可以在高档机上运行

4.2 指令格式

  • 指令格式:指令字用二进制代码表示的结构形式
  • 指令能反映以下信息:
    • 做什么操作
    • 如果需要操作数,从哪里取
    • 结果送哪里、下一条指令从哪里取
  • 指令格式包括两个方面:
操作码字段OP地址码字段A
表明指令的操作特性与功能指定参与操作的操作数的地址

4.2.1 操作码

  • 设计计算机时,对指令系统的每一条指令都要规定一个操作码。
  • 指令的操作码OP表示该指令应进行什么性质的操作,如进行加法、减法、乘法、除法、取数、存数等等。不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令。·例如,操作码001可规定为加法操作;操作码010可规定为减法操作
  • 组成操作码字段的位数一般取决于计算机指令系统的规模。较大的指令系统就需要更多的位数来表示每条特定的指令。例如,一个指令系统有32条指令,则需要5位操作码。一般来说,一个包含n位的操作码最多能表示2n条指令

4.2.2 地址码(重点)

  • 根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令
零地址指令
操作码OP

功能:不需要操作数的指令,如 “停机”、“空操作”、“清除”等控制类指令。

一地址指令
操作码OP操作数A1

功能描述: OP (A1) →A1
(AC) OP (A1) →AC
隐含约定操作数在累加器AC中

二地址指令
操作码OP操作数A1操作数A2

A1: 源/目的操作数地址
A2: 目的/源操作数地址
功能描述:
(A1) OP (A2)→A1
(A1) OP (A2)→A2

二地址指令根据操作数的物理位置分为

  • SS 存储器-存储器类型
  • RS 寄存器-存储器类型
  • RR 寄存器-寄存器类型
三地址指令
操作码A1A2A3

A1: 被操作数地址,也称源操作数地址
A2: 操作数地址,也称目的操作数地址
A3: 存放操作结果的地址
功能描述:(A1) OP (A2)→A3

4.2.3 指令字长度 (重点)

概念
  • 指令字长度:一个指令字包含二进制代码的位数)
  • 机器字长:计算机能直接处理的二进制数据的位数。
  • 单字长指令:指令字长度等于机器字长度的指令。
  • 半字长指令:指令字长度等于半个机器字长度的指令。
  • 双字长指令:指令字长度等于两个机器字长度的指令。
多字长指令的优缺点
  • 优点:提供足够的地址位来解决访问内存任何单元的寻址问题 ;
  • 缺点:必须两次或多次访问内存以取出一整条指令,降低了CPU的运算速度,又占用了更多的存储空间。
  • 指令系统中指令采用等长指令的优点:各种指令字长度是相等的,指令字结构简单,且指令字长度是不变的 ;
  • 采用非等长指令的的优点:各种指令字长度随指令功能而异,结构灵活,能充分利用指令长度,但指令的控制较复杂
  • 题目一般默认机器字长为16位,如下题
    在这里插入图片描述

4.3 操作数类型

4.3.1 一般的数据类型

  • 地址数据:地址实际上也是一种形式的数据。
  • 数值数据:计算机中普遍使用的三种类型的数值数据。
    • 定点整数或定点小数、浮点数、压缩十进制数
  • 字符数据:文本数据或字符串,目前广泛使用ASCII码。
  • 逻辑数据:一个单元中有若干二进制bit项组成,每个bit的值可以是1或0。当数据以这种方式看待时,称为逻辑性数据。

4.4 指令和数据的寻址方式 (重点!)

  • 在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式和堆栈存取方式。几乎所有的计算机,在内存中都采用地址指定方式
  • 寻址方式:形成操作数或指令地址的方式
    • 指令寻址方式:用于形成指令在内存中的地址
    • 数据寻址方式:用于形成操作数在内存中的地址

4.4.1 指令寻址方式

  • 顺序寻址方式
  • 跳跃方式
    在这里插入图片描述

4.4.2操作数寻址方式

根据指令中给出的地址码字段寻找真实操作数的方式,即形成操作数的有效地址的方法,称为操作数的寻址方式。 例如,一种单地址指令的结构如下:

操作码OP变址X   间址I形式地址A
寻址方式特征位偏移量

寻址过程就是把操作数的形式地址,变换为操作数的有效地址的过程。
在这里插入图片描述

1、隐含寻址
  • 特点:在指令中不明显地给出操作数地地址,而是隐含着操作数的地址
  • 单地址的指令格式,在指令地址字段中,没有指明第二操作数的地址,而是规定累加器AC作为第二操作数地址,AC就是一个隐含地址
2、立即寻址
  • 特点:立即寻址是一种特殊的寻址方式,指令的地址字段指出的不是操作数地址,而是操作数本身
  • 数据就包含在指令中,只要取出指令,就取出了可以立即使用的操作数,因此,这样的操作数被称为立即数。
  • 指令中包含的操作数立即可用,节省了访问内存的时间
  • 指令格式:操作码OP 操作数A
  • 例: 指令 mov ax, 100
3、直接寻址
  • 特点:指令中地址码字段给出的地址A就是操作数的有效地址EA(Effective Address),又称为直接地址,即EA=A。在这里插入图片描述
4、间接寻址
  • 特点:指令地址字段中的形式地址A不是操作数的真正地址,而是操作数地址的指示器,即:A的内容才是操作数的有效地址操作数的有效地址:EA=(A)【就套娃呗(】
    在这里插入图片描述
5、寄存器寻址
  • 特点:操作数不在内存中,而是放在通用寄存器中
  • 指令中给出的操作数地址不是内存的地址单元编号,而是通用寄存器的编号,指令的操作数存放在相应的寄存器中,即EA=Ri在这里插入图片描述

优点

  • 由于寄存器在CPU的内部,指令在执行时从寄存器中取操作数比访问主存要快得多
  • 由于寄存器的数量较少,因此寄存器编号所占位数也较少,从而可以有效减少指令的地址码字段的长度
6、寄存器间接寻址
  • 特点:指令中的寄存器内容不是操作数,而是操作数的地址,真正的操作数在内存中。即将操作数放在主存储器中,而操作数的地址放在某一通用寄存器中,然后在指令的地址码部分给出该通用寄存器的编号,这时有EA=(Ri)【套娃再套娃呗(】
    在这里插入图片描述

  • 优点:这种寻址方式的指令较短,并且在取指后只需一次访存便可得到操作数,因此指令执行速度较前述的间接寻址方式要快,也是目前在计算机中使用较为广泛的一种寻址方式。

7、偏移寻址
  • 直接寻址和寄存器间接寻址方式的结合
  • 有效地址:EA=A+( R ),A是形式地址
    • 要求指令中有两个地址字段,至少其中一个是显示的。
    • 形式地址A直接被使用
  • 常用的三种偏移寻址是:
    • 相对寻址、基址寻址、变址寻址
  • 相对寻址:由程序计数器PC提供基准地址,而指令的地址码部分给出相对的位移量D,两者相加后作为操作数的有效地址,即:EA=(PC)+D。程序计数器的内容就是当前指令的地址。在这里插入图片描述
  • 基址寻址:基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。在这里插入图片描述
  • 变址寻址:变址寻址就是将指令的地址码部分给出的基准地址A与CPU内某特定的变址寄存器Rx中的内容相加,以形成操作数的有效地址在这里插入图片描述
8、段寻址方式
  • 微型机中采用了段寻址方式,其实质还是基址寻址
  • 将1MB主存储器空间按照最大长度64KB划分成若干段,在寻址一个具体的内存单元时,由一个基地址寄存器(段寄存器)再加上指令中提供的16位偏移量来形成实际的20位物理地址
    在这里插入图片描述
9、堆栈寻址堆栈
  • 能存取数据的暂时存储单元
  • 两种形式寄存器堆栈和存储器堆栈
  • 存储原则:先进后出
  • 数据的存取都通过栈顶,需要一个隐式或显式的堆栈指示器(栈顶指针)
  • 堆栈指令:PUSH、POP

[例4] 一种二地址RS型指令的结构如下:
6位   4位         1位  2位   16位
OP   通用寄存器     I   X   偏移量D
 其中I为间接寻址标志位,X为寻址模式字段,D为偏移量字段。通过I,X,D的组合,可构成如下寻址方式:
在这里插入图片描述
请写出6种寻址方式的名称。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余cos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值