指令系统(chapter 2)

       指令(又称机器指令)是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该机的指令系统,也称指令集。指令系统是计算机系统结构的主要属性,位于硬件和软件的交界面上。

指令系统
2.1 数据表示及数据结构的比较
  1. 数据表示:数据表示是指计算机硬件能够直接识别,可以被指令系统直接调用的那些数据类型。
    如:定点、逻辑、浮点、十进制、字符、字符串、堆栈和向量
  2. 数据结构:由软件编程实现,不能被硬件直接识别,指令不能直接调用的数据类型。
    如:文件、图、表、树、阵列、队列、链表;

说明:数据表示速度快,成本高,不灵活;数据结构速度慢,成本高,灵活。最基本的、用得多的用硬件实现。

确定哪些数据类型用数据表示实现,是软件与硬件的取舍问题。

确定数据表示的原则:

  1. 缩短程序的运行时间

  2. 减少CPU与主存储器之间的通信量

  3. 这种数据表示的通用性和利用率

2.2 常用的编址单位

常用的编址单位:字编址、字节编址、位编址、块编址等。其中"Cache-主存"系统之间是按块编址,"Cache-CPU"系统之间是按字节、字编址。

2.3 零地址空间个数的选择
  • 三个零地址空间:通用寄存器、主存储器、输入输出设备独立编址
  • 两个零地址空间:主存储器与输入输出设备统一编址
  • 一个零地址空间:所有存储设备统一编址。最低端是通用寄存器,最高端是输入输出设备,中间为主存储器
  • 隐含编址方式,实际上没有零地址空间:堆栈、Cache等
2.4 间接寻址方式与变址寻址方式的比较
  • 目的相同:都是为了解决操作数地址的修改问题;都能做到不改变程序而修改操作数地址。
  • 不同
    • 间址寻址方式:间接地址在主存储器中,没有偏移量;变址寻址方式:基地址在变址寄存器中,带有偏移量
    • 实现的难易程度:间址寻址方式容易
    • 指令的执行速度:间址寻址方式慢
    • 对数组运算的支持:变址寻址方式比较好
2.5 定位方式(操作系统部分)

程序的主存物理地址在什么时间确定?采用什么方式来实现?

  • 直接定位方式:在程序装入主存储器之前,程序中的指令和数据的主存物理就已经确定了的称为直接定位方式。
  • 静态定位:在程序装入主存储器的过程中随即进行地址变换,确定指令和数据的主存物理地址的称为静态定位方式。
  • 动态定位:在程序执行过程中,当访问到相应的指令或数据时才进行地址变换,确定指令和数据的主存物理地址的称为动态定位方式。
2.6 指令格式优化的标准
  • 节省程序的存储空间;
  • 指令格式尽量规整,便于译码;
2.7 操作码编码的比较(设计题)

操作码的三种编码方法:

  1. 定长操作码
  2. Huffman编码
  3. 扩展操作码

改进操作码编码方式能够节省程序存储空间.

定长操作码:在指令字的最高位部分分配固定长度的若干位(定长)表示操作码。

  • 一般n为操作码字段的指令系统最大能够表示2^n条指令。
  • 优点:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利。
  • 缺点:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。

Huffman编码法
       思路:短编码表示程序中出现概率大的指令,长编码表示概率小的指令。
       实现方法:将所有指令的概率作为叶节点,选择最小概率的两个节点合并为一个,然后将合并的节点与剩余节点一起组成节点集,重复上述步骤,得一棵树。从根节点出发,每个节点有两个分支,可用一位二进制数表示,这样,概率大的指令,从根节点出发经过的路径短,编码短,反之,概率小指令对应的编码长。

  • 缺点:操作码长度很不规整,硬件译码困难;与地址码共同组成固定长的指令比较困难。

扩展操作码(不定长操作码):全部指令的操作码字段位数不固定,且分散地放在指令字的不同位置上。

  • 最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
  • 优点:在指令字长有限的前提下仍保持比较丰富的指令种类;
  • 缺点:增加了指令译码和分析的难度,使控制器的设计复杂化。

       例1:假设一台模型计算机共有7种不同的操作码,如果采用固定长操作码需要3位。已知各种操作码在程序中出现的概率如下表,计算采用Huffman编码法的操作码平均长度,并计算固定长操作码和Huffman操作码的信息冗余量。

指令序号I1I2I3I4I5I6I7
概率0.450.30.150.050.030.010.01

在这里插入图片描述

指令序号I1I2I3I4I5I6I7
编码010110111011110111110111111

在这里插入图片描述

       一台实验计算机的指令字长为16位,有双地址指令、单地址指令和零地址指令三类,并假设每个地址字段长度为6位。
(1)双地址指令有15条,单地址指令和零地址指令相等,三种指令各多少条,其操作码如何分配?
(2)如果三类指令的比例为1:9:9,三种指令各多少条,其操作码如何分配?

 (1)指令分配:(其中地址字段为6位)
    双地址指令:0000-1110  A1  A2     15条
    其中,高4位 1111 用于扩展编码
    单地址指令:1111  000000-111110   A    63条
    零地址指令:1111  111111 000000-111111    64条
    其中单地址指令与零地址指令相等,所以可以将全1的零地址指令去掉。
 (2)0000——1101  A1  A2
     1110000000——1111111101  A
     11111111110000000-1111111111111111
   三种指令分别为14条、126和128条。
2.8 常用的地址码个数

地址码个数通常有3个、2个、1个以及0个等四种情况

地址数目操作码长度程序存储量程序执行速度应用场合
三地址最大一般向量,矩阵运算为主
二地址一般很大很低一般不宜采用
一地址较长较大较快连续运算,硬件结构简单
零地址最长最小最低嵌套,递归,变量较多
二地址R型一般最小最快多累加器,数据传送较多
根据指令中操作数地址码的数目不同,可以将指令分成以下几种格式:
1. 零地址指令
   零地址: op
   只给出操作码OP,没有显式地址。这种指令由两种可能:
   1)不需要操作数的指令,比如空操作指令、停机指令、关中断指令等。
   2)零地址的运算类指令仅用在堆栈计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。

2. 一地址指令
   一地址: op A1
   这种指令也有两种常见的形态,要根据操作码的含义确定究竟是哪种。
   1)只有目的操作数的单操作数指令,按A1地址读取操作数,进行OP操作后,结果存回原地址。
   指令含义: OP(AI)+A2
   如操作码含义是加1、减1、求反、求补等。
   2)隐含约定目的地址的双操作数指令,按指令地址A可读取源操作数,指令可隐含约定另一个操作数由 ACC (累加器)提供,运算结果也将存放在ACC中。
   指令含义: (ACC)OP(A1) → ACC
   若指令字长为32位,操作码占8位,1个地址码字段占24位,则指令操作数的直接寻址范围为2^24 = 16M。

3. 二地址指令
   二地址:op A1 A2
	指令含义: (A)OP(A2) → A1
    对于常用的算术和逻辑运算指令,往往要求使用两个操作数,需分别给出目的操作数和源操作数的地址,其中目的操作数地址还用于保存本次的运算结果。
   若指令字长为32位,操作码占8位,两个地址码字段各占12位,则指令操作数的直接寻址范围为2^12= 4K。

4. 三地址指令
   三地址: OP A1 A2 A3(结果)
   指令含义: (A)OP(A2) → A3
	若指令字长为32位,操作码占8位,3个地址码字段各占8位,则指令操作数的直接寻址范围为2^8 = 256.若地址字段均为主存地址,则完成一条三地址需要4次访问存储器(取指令1次,取两个操作数2次,存放结果1次)

缩短地址码长度的方法

  • 目标:用一个短的地址码表示一个大的逻辑地址空间;
  • 用间址寻址方式缩短地址码长度: 在主存储器的低端开辟一个专门存放地址区域;
  • 用变址寻址方式缩短地址码长度:由于程序的局部性,变址寻址方式中的地址偏移量比较短;
  • 用寄存器间接寻址方式缩短地址码长度,很有效的方法。例如,16个间址寄存器,用4位地址码就能表示任意长的逻辑地址用来支持间接寻址的寄存器,可以借用通用寄存器。
2.9 指令格式的设计

       指令的长度:有固定长度和可变长度两种;操作码长度也有固定操作码和可变操作码两种。(注意扩展操作码技术)

       指令系统朝两个截然不同的方向发展:一是增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化,这类机器称为复杂指令系统计算机(CISC)。二是减少指令种类和简化指令功能,提高指令的执行速度,这类机器称为精简指令系统计算机(RISC).

2.10 CISC及其实现方法
  • 定义:增强指令功能,设置功能复杂的指令,把原来由软件实现的、常用的功能改用硬件的指令系统来实现。
  • 三种方法:
    • 目标程序的优化:对目标程序统计分析,对使用频率高的指令用硬件加快其执行,对频率高的指令串用一条指令实现。
    • 对高级语言和编译程序的优化:增强对高级语言和编译程序支持指令的功能。
    • 操作系统的优化
2.11 RISC及其特点
  • 单周期指令;是R型指令;采用硬布线逻辑实现;采用Load/Store结构;有利于编译程序代码优化。
    在这里插入图片描述
2.12 20%与80%规律及在系统结构中的应用

       CISC中,大约20%的指令占据了80%的处理机时间。各种指令的使用频率相差悬殊,大概只有20%的比较简单的指令被反复使用,约占整个程序的80%;而80%左右的指令则很少使用,约占整个程序的20%。

2.13 RISC的关键技术及其实现方法
  • 关键技术:
    • 延时转移技术:为了使指令流水线不断流,在转移指令之后插入一条不相关的有效的指令,而转移指令被延迟执行,这种技术称为延迟转移技术。
    • 指令取消技术:采用指令延时技术,经常找不到可以用来调整的指令,这时采用向后转移(循环程序)、向前转移(IF THEN )、隐含转移技术(用于特殊的IF…THEN…结构中,THEN部分只有一条指令)。
    • 重叠寄存器窗口技术:设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。在每个
      过程使用的几个窗口中有一个窗口是与前一个过程共用,还有个窗口是与下一个过程共用。
    • 指令流调整技术:通过变量重新命名消除数据相关,提高流水线效率。
    • 以硬件为主固件为辅:以硬联逻辑为主来实现指令系统对于复杂指令,也微程序技术实现。
  • 减少CPI是RISC思想的精华
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值