第二章 数据表示与指令系统
§ 1 数据表示
一, 数据表示的确定
1,何谓数据表示
由硬件直接识别和处理 ( 引用 ) 的数据类型,
2,数据表示的主要类型
1) 常用数据表示,定点数, 字符串, 浮点数等 。
2) 高级数据表示,自定义, 向量, 堆栈数据表示
3,数据表示与系统结构的关系
1)数据表示是硬件设计基础
2)数据表示是指令加工的对象
4,数据表示确定
在进行软件和硬件的功能分配时, 计算机系统结构设
计应考虑在机器中设置哪些数据表示, 使之能对应用中用
到的数据结构有高的 实现效率 。 在定点, 浮点, 字符串,
逻辑, 十进制等基本数据表示的基础之上, 根据应用的需
要, 考虑在机器中引入哪些高级的数据表示, 以便能为数
据的实现提供更好的支持 ( 通用性 和 利用率 是否较高 ) 。
1) 一般计算机要选用常用的数据表示;
2) 对较高级的数据表示要有针对选取 。
① 当处理的数据类型较多时, 可选自定义的数据 。
② 当对向量数据处理较多时, 可选向量数据表示 。
③ 当逆波兰表达式处理较多时, 可选堆栈数据表示 。
二, 自定义数据表示
自定义数据表示是为缩短高级语言和机器语言的语义差距引出
来的 。 它又有标志符数据表示和数据描述符两类 。
1,标志符
1) 格式
① 类型标志
② 数据值
类型标志 数据值
2) 标志位位数选取
① 简单的用三位标志符区分 8种 ( 23) 类型
② 根据需要选取更多位
类型标志 数据值
B CD 码
无符号数
0 11 0 1 00 0
0 11 0 1 00 0 1 04 十进制
6 8( 两位)
如:
特征位 块属性块首址块长度
数据块
格式:
3) 使用标志位的优缺点
可简化指令系统与编译程序, 便于不同数据类型的自
动校验与转换 。
缺点:一个标志位只能对一个数据进行描述, 其描述
效率不高 。
2,描述符
① 特征位,用来区分描述符还是非描述符 。
当为描述符时, 才有后面的三个字段, 如某机采用 101表
示描述符的特征位 。
1101 数据000
② 块长度:描述数据块的个数 。
③ 块首址:第一个数据单元的地址 。
④ 块属性:描述数据的特征 。
2) 使用描述符的好处
① 描述相同类型的数据时, 描述效率高;
② 利用块属性也有利于对信息的保护;
③ 可当作直接寻址及间接寻址使用 。
直接寻址:根据描述符给出数据块的首址, 直接寻址 。
存储器一次间接 存储器两次间接:
描述符给出的仍是数据描述符
④ 可描述阵列数据:描述一个阵列可用一级, 二级描述符
描述 。
a00 … a03
A= ┇
a30 … a33
1101
1101
数据000
数据000
1101
1101
1101
一级描述符(要求数据连续存放)
16101
0 0 0 a 0 0
0 0 0 a 0 1
:
a 3 3
:
.
4101
4101
4101
4101
4101
a12
a 1 3
a10
a 1 1
a22
a 2 3
a20
a 2 1
a32
a 3 3
a30
a 3 1
a02
a 0 3
a00
a 0 1
二级描述符
2101
16101
16101
a 0 0
a 0 1
:
a 3 3
:
.
b 0 0
b 0 1
:
b 3 3
:
.
第一级
第二级
分别利用两级描述符和三级描述符描述下列阵列数据。
a00 a01 a02 a03 b00 b01 b02 b03
a10 a11 a12 a13 b10 b11 b12 b13
A= a20 a21 a22 a23 B= b20 b21 b22 b23
a30 a31 a32 a33 b30 b31 b32 b33
三, 向量数据表示
1,含义,有序排列的数据元素称为向量 ( 向量数据 )
2,向量数据的三要素,
1) 基地址,存放第一个向量数据的地址;
2) 向量长度,向量数据个数;
3) 位移量,与基地址的距离 。
3,根据三要素可推出参数
1) 起始地址 = 基地址 + 位移量, 实际参与本次操作的
第一个数据 ( 元素 ) 的地址;
2) 有效向量长度 = 向量长度 -位移量, 实际参与本次
操作的向量数据个数 。
4,向量运算指令
STAR—100机共有 16个向量寄存器,
每个寄存器用四位二进制数表示 。
1) 格式:
F G X A Y B Z C
a3
a2
a1
a0
a9
.,,
有 效
长 度
为 7
位 移
量 为
3
基地址
起始地址
长
度
为
10
2) 说明:
F,主操作码字段, 表示向量指令操作性质 。
G,辅操作码字段 ( 根据结果, 进行转移等 )
X,存放源向量 A长度及基址的寄存器号 。
Y,存放源向量 B长度及基址的寄存器号 。
A,源向量 A位移量所在寄存器号 。
B,源向量 B位移量所在寄存器号 。
Z,控制向量长度 ( 在 G有效时 ) 。
C,存放结果向量 C长度及基地址的寄存器号 。
F G X A Y B Z C
3) 例子:
完成以下向量运算 。 A,
B向量分布如右图示 。
c0=a3+b1
c1=a4+b2
┇
c7=a10+b8
a3
a2
a1
a0
a 1 0
.,,
A 向量
1 0 0 0 H
b3
b2
b1
b0
b8
.,,
B 向量
2 0 0 0 H
c3
c2
c1
c0
c7
.,,
C 向量
3 0 0 0 H
解:
① 向量寄存器分配 (无 G)
X=1000B 11 1000H 8#
A=1001B
Y=1010B
B=1011B
C=1100B
3 9#
10#
11#
12#
9 2000H
1
8 3000H
②向量指令格式填写
F G X A Y B Z C
向量加 1000 1001 1010 1011 1100
执行上述向量指令时, 可先后从存储器取出 8对向量数据,
求和并将 8个结果存入 3000H开始的存储单元中 。
5,稀疏向量的压缩
1) 稀疏向量含义:具有多个 0元素的向量 。
2) 压缩办法:利用有序, 位向量, 来指明稀疏向量中各
元素的状况及所在位置 。
① 位向量的位数与向量长度相等 。
② 某元素为 0时, 对应位向量的位为 0。
某元素为非 0时, 对应位向量的位为 1。
如,稀疏向量
a0 0 0 a3 0 a5 a6 0
有序位向量
占用 5个单元
压缩向量节省 3个单元
1 0 0 1 0 1 1 0
56
-112
78
34a0= 56
a3= -112
a5= 78
a6= 34
目的,*可节省存储空间;
*实际长度减少可加快运算速度 。
四, 堆栈数据表示
1,含义:凡是按先进后出方式工作的特殊 ( 存储 ) 区
域称为堆栈 。
2,堆栈组成方式:
1) 寄存器堆栈, 全由寄存器构成, 速度快, 扩充栈容
成本高 。
2) 寄存器与存贮器结合堆栈 。
① 寄存器速度快作栈顶 ( 需数个栈顶寄存器 ) 。
② 存贮器价格低扩充栈容易 。
3,堆栈的生长方式
通常采用向下生长方式:压入数据后, 堆栈指针 SP向
地址减少方向变化 。
4,堆栈的主要作用
1) 保护信息, 保存现场;
2) 支持子程序嵌套与中断嵌套以及递归调用的正确进
入与返回;
3) 十分有利于完成对逆波兰表达式的运算 。
5,逆波兰表达式及其运算
1) 三种表达式
① 数学表达式,A+B
② 波兰表达式,+AB
③ 逆波兰表达式,AB+
*
+
/
-
+ C
B
D
E F
A
2) 数学表达式的树结构
① 把运算符做结点 。
② 把运算元素做叶子 。
③ 把 最 后 一 个 运 算 符 作 根 节 点 ( 二叉树 )
例,( A+B) *C-D/( E+F)
3) 逆波兰表达式的生成
利用后序遍历树, 生成逆波兰表达式要点:
先左, 后右, 先枝叶, 后结点, 依次收集运算元
素与运算符, 直到最后一个运算符 ( 根结点 ) 为止 。
AB+C*DEF+/-
4) 在堆栈机上完成逆波兰表达式运算
要点,见运算元素压入堆栈 。
见运算符就将次栈顶元素与栈顶元素进行相应运算,
结果留在栈顶,直到最后一个运算符。
6,利 用 堆 栈 机 指 令 对 逆 波 兰 表 达 式 编 程
( HP3000堆栈机指令 )
A
Λ
(A + B )* C
Λ
C
A + B
Λ
D
M
Λ
A + B
Λ
B
A
Λ
1 65432 D*C
+
B
A
顶
次顶
顶
E
D
M
7
E
F
E
8 F
E + F
D
M
9
D / (E + F )
M
Λ
10 /
(A + B )* C - D / (E + F )
Λ
11 -
Λ
+
D
M
Λ
Λ
1) 零地址堆栈指令
ADD; 次栈顶元素与栈顶元素求和, 和在栈顶 。
SUB; 次栈顶元素与栈顶元素求差, 差和在栈顶 。
MUL; 次栈顶元素与栈顶元素求积, 积在栈顶 。
DIV; 次栈顶元素与栈顶元素求商, 商在栈顶 。
2) 一地址堆栈指令
LOAD X; 将 X单元数据压入栈顶 ( 类似 PUSH)
STOR X; 将栈顶数据弹出到 X单元 ( POP)
ADDM X; 栈顶数与 X单元数求和, 和在栈顶
SUBM X; 栈顶数与 X单元数求差, 差在栈顶
MULM X; 栈顶数与 X单元数求积, 积在栈顶
DIVM X; 栈顶数与 X单元数求商, 商在栈顶
3) 编程
B FEA C D
E
M
D
( A + B ) * C = M
A + B
A
D
M
E + F
D
M
M
D / ( E + F )
( A + B ) * C - D / ( E + F )
a b c d e f
① L O A D a ;
② A D D M b ;
③ M U L M c ;
④ L O A D d ;
⑤ L O A D e ;
⑥ A D D M f ;
⑦ D I V ;
⑧ S U B ;
顶
顶
顶
顶
次顶
顶
次顶
顶
次顶
顶
设数据放在小写字母单元中,如下图
§ 2 计算机系统的发展途径
一、从提高 CPU的利用率出发
二、从单机向多机发展
§ 3 影响计算机系统结构发展的因素
一、程序的可移植性的影响
二、应用对系统结构的影响
三、器件发展的影响
第二章 数据表示与指令系统
§ 1 数据表示
一、数据表示的确定
二、自定义数据表示
三、向量数据表示
四、堆栈数据表示
五, 浮点数尾数的基值 ( rm) 选择和下溢处理
1,rm选择
1) 浮点数的一般格式
....,,,,,.........
数
符
阶
符
r -1m r
-2
m
r -m'
m
.
阶码部分
(P + 1 位)
尾数
(m 个机器位)
2) rm影响的因素
① 数的表示范围
上图中 阶码的位数 P的大小主要影响浮点数的可表示
范围的大小 。
尾数的位数 m主要影响浮点数的可表示精度 。
当 P一定时, 尾数采用什么进制可影响数的表
示范围, 精度及数在数轴上分布的离散程度 。
P在所有的机器种都时采用二进制 。
rm=2时, m位
非 0最小正尾数 2-m,00…01
最大正尾数 1-2-m,11…11
p位
最大正阶 2^p–1 011… 1
p位
最大负阶 -2^p 100… 0
最小正浮点数 2-m*2-2^P (rm-m’*rm-2^P)
最大的正浮点数 (1-2-m ) *22^P-1 (1-rm-m’)*rm2^P-1
正数轴上表示范围 rm-m’*rm-2^P ~(1- rm-m’)*rm2^P-1
② 规格化浮点数个数
尾数最高数值位为非 0的浮点数称为规格化浮点数 。
设,P=2, m=4 正尾数, 规格化, 非负阶时
rm=2时, 共有 32个规格化浮点数
1000 8/16 8/8 8/4 8/2
1001 9/16 9/8 9/4 9/2
┇ ┇ ┇ ┇ ┇
1111 15/16 15/8 15/4 15/2
m p 00 01 10 11
rm=16时, 共有 60个规格化浮点数
0001 1/16 1 16 256
0010 2/16 2 32 512
┇ ┇ ┇ ┇ ┇
1111 15/16 15 240 3840
m p 00 01 10 11
rm=4时
m 00 01 10 11
0100 4/16 4/4 4 16
0101 5/16 5/4 5 20
0110 6/16 6/4 6 24
0111 7/16 7/4 7 28
1000 8/16 8/4 8 32
1001 9/16 9/4 9 36
┇ ┇ ┇ ┇ ┇
1111 15/16 15/4 15 60
p
③ 规格化浮点数的稀密度 e
rm=16时 e=15/32=0.47
rm =4时 e=24/32=0.75
结论, rm越大, 规格化浮点数分布越稀疏 。
④ 精度,( 从 e可以看出 )
rm大, 精度低 。
rm大, 移位次数少, 因而移位损失较小 。
3) rm的选择原则
①应视数的表示范围决定。
②随着位数范围越来越大,rm有向下取的趋势。
个数时,非负规格化浮点数
点数地个数相同数轴以内规格化浮时,与
2r
2rre
m
mm
?
????
2 下溢的处理
两种溢出,<上溢 > 运算结果超出允许范围。
<下溢 > 是指尾数右移过程中丢掉的移
出位,它影响精度。
1)截断法
①含义:对尾数移出位简单截取的一种处理方法。
②特点,Ⅰ )无下移处理线路,实现容易。
Ⅱ )平均误差为负且较大,无法调节,
只适用于对精度无要求之处。
2) 恒置 1法
① 含义:不管移出位如何, 均将尾数末位置 1的一种下
溢处理方法 。
② 取值表
右移后
尾数
移出位
2-1 2-2 取值 误差 综合 ∑
0
0 0
1
1
1
+3/4
1 0 +1/2
1 1 +1/4
1
0 0
1
0
0 1 -1/4
1 0 -1/2
1 1 -3/4
0 1
① 特点,Ⅰ ) 有了简单的下溢处理线路 ;
Ⅱ ) 综合误差有所下降 ( 比截断法 ) 。
3) 舍入法
① 含义:根据移出最高位进行舍取时的一种下溢处理法 。
Ⅰ ) 当移出的最高位 =0时, 按截断法 。
Ⅱ ) 当移出的最高位 =1时, 将尾数的末位加 1。
②取值表
右移后 移出位2-1 2-2 取值 误差 综合 ∑
X
0 0 X 0
+1/20 1 -1/4
1 0 X+1 +1/2
1 1 +1/4
③ 特点,
Ⅰ ) 需移出最高位判别线路及尾数加 1线路, 比较复杂 。
Ⅱ ) 综合误差较小, 用于对精度要求较高处, 较常用 。
4) 查表舍入法 (ROM查表法 )
① 基本思想,从 n位尾数中切取 K位尾数, 并同移出位一
起送 ROM中去查表, 并从表中送出 K位尾数, 使其综合
误差趋于 0。
n-k位 移出位k位
n 位尾数
n-k位 k位
R O M 表
查表
送出k 位
② ROM表的安排原则
Ⅰ ) 当 K位尾数为非全 1时, 按舍入法取值 。
Ⅱ ) 当 K位尾数为全 1时, 按截断法取值 。
③ 取值表, 设 K=2,两个移出位
右移后尾数 移出位2-1 2-2 取值 误差 综合误差 ∑
0 0
0 0 00 0
0
0 1 -1/4
1 0 01 +1/2
1 1 +1/4
0 1
0 0 01 0
0 1 -1/4
1 0 10 +1/2
1 1 +1/4
④ 特点,Ⅰ ) 具有最复杂的下溢线路 ( 除舍入
法线路外, 还要有 ROM表 ) ;
Ⅱ ) 综合误差最小;
Ⅲ ) 用在精度高的地方 。
1 0
0 0 10 0
0 1 -1/4
1 0 11 +1/2
1 1 +1/4
1 1
0 0
11
0
0 1 -1/4
1 0 -1/2
1 1 -3/4
0
右移后
尾数
移出位
2-1 2-2 取值 误差
综合误差
∑
五, 浮点数尾数的基值 ( rm) 选择和下溢处理
1,rm选择
浮点数的一般格式
rm对数的表示个数, 范围, 精度, 稀密度 e的影响
规格化浮点数的概念
稀密度 e的概念
2.下溢处理
下溢处理的方法, 综合误差的大小
溢出位也称附加位
§ 2 地址表示与寻址方式
一, 地址表示
1 地址表示类型
1) 按所用不同进制数
① 用二进制地址
② 用八进制地址
③ 用十六进制地址
④ 用十进制地址
2) 按所指不同空间表示
① 存贮单元地址 。
② I/O端口地址 。
③ 寄存器地址
3) 按存贮管理不同
① 页地址
② 段地址
③ 段页地址
4) 按访问空间数据长度不同
① 字节地址 ( 8位 )
② 半字地址 ( 16位 )
③ 单字地址 ( 32位 )
④双字地址( 64位)
5)按编程角度
① 逻辑地址 ——程序员编程使用
②物理地址 ——访存必需
6)存储保护来分
①基地址:某用户存储单元的首地址
②界地址:存储保护中的界限保护
2 物理地址空间的信息分布
1)条件:在一个具有双字存储器中,可存放多种长度数
据(字节、半字、字、双字)
2)紧凑存放:尽量利用存储空间,将各种不同长度的数
据紧凑存放,但可能出现以下信息分布。
双字、字、半字都可能出现跨主存字边界存放,因
此访存时间将增加。
如:依次存放单字( 4字节)、双字、半字( 2字
节)、字节、半字、单字、单字
3)按整数边界存放:
浪费了一定的空间,但保证了访问时间。
单字 双字 1
双字 2 半字 字节 半字 1
半字 2 单字 单字 1
单字 2
单字 浪费( 4字节)
双字
半字 字节 浪费 半字 浪费 (2字节 )
单字 单字
二, 寻址 方式 简介
1,三种面向的寻址方式
机器指令可以访问寄存器, 堆栈或主存中的数,
因此相应地就有面向寄存器, 面向堆栈和面向主存的
不同寻址方式 。
2,寻址方式选择原则
1) 尽快获得操作数 ( 速度 )
2) 寻址字段位数少 ( 省空间 )
3) 能访问尽可能大的存储空间
4) 有利于循环程序设计
5) 有灵活多变寻址来达到同一目的访问 ( 编程灵活 )
3,程序在主存中的定位技术
1) 静态再定位
目程序装入主存时, 通过调用系统配备的装
入程序, 把目程序的逻辑地址用软的方法逐一修
改成物理地址 。
静态再定位不利于多道程序的运行环境 。
2) 动态再定位
动态再定位的一种方法是设置基址寄存器和
地址加法器硬件,在程序装入主存时,只将装入
主存的起始地址存入该道程序的基址寄存器中即
可,指令的地址字段不作修改。程序在执行过程
中,才形成物理地址访存。
基址寻址 的方法主要是支持程序的动态再定位 。
变址寻址 则主要是为实现程序的循环, 支持向量,
数组数据的寻址使用的 。
动态再定位技术的进一步发展是采用映象表来进
行地址的映象和变换,它可以使每个用户在机器
上运行比实际主存容量大得多的程序。
§ 3 指令系统
能由计算机硬件直接识别的指令为机器指令,所有
机器指令的集合为指令系统,不同的机器类型具有不同
的指令系统。
一、指令主要类型
类 型 任 务 表 现 形 式
运动类指令 实现数据的传递复制 传递, 交换, 压入, 弹出
算术类指令 实现各种算术运算 加, 减, 乘, 除, 比较等
逻辑运算指令 实现各种逻辑运算 逻辑加, 逻辑乘, 异或, 同或, 取反等
移位指令 实现各种移动运算 左移, 右移, 循环左移, 循环右移等
转移指令 实现程序分支转移 条件转移, 无条件转移, 转子, 返回等
入出指令 实现信息交换 输入, 输出
二, 指令格式的优化
1,对操作码编码方法
1) 等长编码
① 每条指令的编码位数相等
② 编码位数 L的确定与指令条数 N相关 。
L =?log2N? 例,N=7 L=3
③ 特点:
Ⅰ )编码规整, 使控制器译码机构简单 。
Ⅱ )当指令使用频度不同时, 不利于等效平均编码长度
的减少, 从而不利于信息的传递效率 。
等长法用于 RISC(精简指令系统计算机)中
2) Huff man压缩编码法
① 基本思想
Ⅰ )频度高的指令用短码表示 。
Ⅱ )频度低的指令用较长码表示 。
② Huff man-A方案编码树的绘制 要点,
*将指令按频度从高到低顺序排列;
*在指令线之外找个根结点,并将它与两端指令连接起
来形成 Δ;
*其余指令分别作与频度高的那条边的多条平行线, 即
形成编码树 。
每条指令的使用频度之和为 1,即
?
?
?
N
1i
1Pi
I 1 I 2 I 3 I 4 I 5 I 6 I 7
0
0
0
0
0
0
1
1
1
1
1
1
根结点
分结点
③ 编码形成
编码树上, 结点与结点之间, 结点与指令之间规
则地加 0,1。
每条指令均从根结点出发, 沿最短路径指向指令,
依次收集途中数码, 即形成编码 。
④ 特点
Ⅰ )在指令的使用频度不相同时, 有利于降低信息等
效平均编码长度及信息的传送效率 。
Ⅱ )不同位数编码类型太多, 使控制器的译码复杂 。
⑤信息等效平均码长 L的计算
?
?
?
N
1i
liPiL *
3) 扩展编码法
① 基本思想:即要考虑频度不同时, 用不等长
编码, 又要考虑减少不同位数编码类型, 使译码
机构不要太复杂, 采用多余一位进行扩展 。
② 两位扩展
Ⅰ ) 3/3/3方案
0 0 1 1 0 0 1 1 1 1 0 0
0 1 3 1 1 0 1 3 1 1 1 1 0 1 3
1 0 1 1 1 0 1 1 1 1 1 0
Ⅱ ) 2/4/8方案
0 0 2 1 0 0 0 1 0 1 0 0 0
0 1 1 0 0 1 4 1 0 1 0 0 1
1 1 0 0 1 0 1 1 0 0
1 1 0 1 1 0 1 1 0 1 8
1 1 1 0 0 0
1 1 1 0 0 1
1 1 1 1 0 0
1 1 1 1 0 1
③ 三位扩展
Ⅰ ) 7/7/7方案
0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0
┇ 7 ┇ 7 ┇ 7
1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0
┇ 4 1 0 0 ┇ 1 0 0 ┇
0 1 1 0 1 1 0 1 1
┇ ┇ 16 1 0 0 ┇ ┇
0 00 0 0 0
1 1 1 ┇ 1 1 1 ┇
0 1 1 0 1 1
┇ ┇ ┇ 64
0 0 0
Ⅱ ) 4/16/64方案 1 0 0 ┇
0 1 1
1 1 1 ┇ ┇
0 0 0
1 1 1 ┇
0 1 1
例:某机 7条指令使用频度分别为 0.45,0.3,0.15,
0.05,0.03,0.01,0.01,画 Huffman- A方案的
树结构,分别用等长法,H-A方案,扩展法进行
编码,并分别计算各种方案编码的平均码长。
( 0.45+0.3+0.15+0.05+0.03+0.01+0.01= 1 )
?
?
?
N
1i
liPiL *
Ii Pi
等长法 H-A 扩展法
OP li OP li OP li
I1
I2
I3
I4
I5
I6
I7
0.450.30
0.150.05
0.030.01
0.01
000
001
010
011
100
101
110
3
0
10
110
1110
11110
111110
111111
1
2
3
4
5
6
6
00
01
10 2
1100
1101
1110
1111
4
信息等效平均
码长 L 3 1.97 2.2
解:
?
?
????????
N
1i
1, 9 76*0, 0 25*0, 0 34*0, 0 53*0, 1 52*0, 31*0, 4 5li*PiL
2 关于信息源熵简介
1) 含义:指信息源中包含的平均信息量 。
(理论上可以达到的最短平均码长)
信息源熵 H的计算:
?
?
??
N
1i
2 PiPiH lo g*
3,多地址指令设计
某机指令字长 16位, 每个地址字段为 4位, 要求编写 11
条三地址指令, 70条两地址指令, 140条单地址指令,
其余还能扩展多少条零地址指令, 并写出各类指令编码
示意图 。
4 4 4 4
OP A1 A2 A3
1) 各类指令编码格式
① 三地址指令
0 0 0 0
┇ 11条
1 0 1 0
② 两地址指令
0 0 0 0
1 0 1 1 ┇ 16
1 1 1 1
0 0 0 0
1 1 0 0 ┇ 16
1 1 1 1
┇ ┇ 70条
0 0 0 0
1 1 1 0 ┇ 16
1 1 1 1
0 0 0 0
1 1 1 1 ┇ 6
0 1 0 1
③ 单地址指令
0 0 0 0
1 1 1 1 0 1 1 0 ┇ 16
1 1 1 1
┇ ┇ 140条
0 0 0 0
1 1 1 1 1 1 1 0 ┇ 12
1 0 1 1
① 零地址
1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0
┇ 320条
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2) 可扩展零地址指令条数计算
① 共可编写多少条三地址,24=16
② 剩余三地址共可扩展多少条两地址,( 24-11)
*24 =5*16=80
③ 剩余二地址共可扩展多少条单地址:
〔( 24-11) *24-70〕 *24=( 80-70) *16 =160
④ 剩余单地址共可扩展多少条零地址:
﹛ 〔( 24-11) *24-70〕 *24-140﹜ *24
=( 160-140) *16=320
§ 2 地址表示与寻址方式
物理地址空间的信息分布
三种面向的寻址方式
寻址方式选择原则
程序在主存中的定位技术
§ 3 指令系统
对操作码编码方法,
多地址指令设计
三, 指令系统的改进途径
1,按 CISC( 复杂指令系统计算机 ) 方向发展与改进指
令系统
1) CISC的改进思路
按 CISC方向发展改进指令系统的出发点是, 如何进一
步增强原有指令的功能以及设置更为复杂的新指令来取代
原先由软件子程序完成的功能, 实现软件功能的硬化 。 它
可以从面向机器语言目标程序的优化实现, 面向高级语言
的优化实现和面向操作系统的优化实现三个方面来改进 。
2) 面向目标程序的优化实现
目标是提高包括系统软件和应用软件在内的各种
机器语言目标程序的实现效率, 即缩短目标程序的长度,
加快目标程序的执行速度, 并使实现起来方便可行 。
a,对使用频度高的指令加速完成, 可提高指令的吞吐量 。
b,对经常出现的程序段, 可用一条指令代替 。
3) 面向高级语言的优化实现
目标是缩短高级语言和机器语言的语义差距,这样
可以缩短编译程序的长度和节省编译所需的时间。
a,对使用频度高的语句, 通过增设复合指令来减少辅助
操作时间 。
b,在编译中优化代码生成 。
c,改进指令系统使之与各种高级语言的语义差距都有共
同的减少 。
d,提供多种指令系统, 多种系统结构以适应不同的高级
语言 。
e,发展高级语言计算机 。
4) 面向 OS( 操作系统 ) 的优化实现
目标是缩短 OS与计算机系统结构之间的语义差,减少
OS的时间开销和空间开销。
a,操作系统的常用指令进行分析改进。
b,增设专用于 OS的新指令 。
c,对 OS中由软件子程序实现的某些功能进行硬化或固化 。
d,设置专门的处理机来运行 OS,发展功能分布处理系统 。
2,按 RISC方向发展与改进指令系统
1) CISC结构的问题
指令系统日趋庞大和复杂, 使机器的设计周期延
长, 成本升高, 错误增多, 可靠性降低;指令的操作繁
杂, 使执行速度降低;高级语言源程序的优化编译困难,
编译的时空开销增大;指令系统中, 约有 80% 的指令使
用频度很低, 利用率低, 因而系统的性能价格比低 。
2) RISC机器主要特点
a,精简指令的条数, 使用频度很高的部分指令;
b,让指令字等长, 所有指令都在一个机器周期执行完;
c,寻址方式简单, 充分利用寄存器寻址;
d,CPU内增加通用寄存器的数目;
e,采用重迭寄存器, 窗口技术, 有利于子程序调用时
的参数传递
f,访存指令只有 Load/Store两种, 其它的指令一律只能
对寄存器进行操作 。
3) 设计 RISC机器的基本技术
按设计 RISC机器的一般原则来精选和优化设计指
令系统;在 CPU内设置大量的寄存器, 并采用重叠寄存
器组的窗口;指令采用重叠和流水的方式解释, 并采用
延迟转移;优化设计高质量的编译程序 。
4) RISC的优点
简化了指令系统的设计, 适合于用 VLSI来实现;
提高了机器的运行速度和效率;降低了设计成本, 提高
了系统的可靠性;可以直接高效地支持高级语言的实现,
简化了编译程序 。
5) RISC的问题及发展趋势
RISC的问题和不足是:
加重了汇编语言程序设计的负担;
目标程序所占的存贮空间量可能加大;
对浮点运算和虚拟存贮器等的支持还不够强;
对编译程序的设计质量要求较高, 难度较大 。
今后计算机发展改进的总趋势是让 RISC和 CISC两
者互相结合,取长补短。
本章计算绘图类题如下:
1,利用描述符描述阵列数据
2,已知数学表达式,画出树结构;写出逆波兰表达式
3,已知 p,m的位数,画出规格化浮点数表( rm=2,4,8,16);
计算浮点数的表示范围;数的个数和表示比 e。
4,已知指令和使用频度能用等长法,H-A方案,扩展法
进行编码,并指出所选方案的理由;计算等效码长,
确定一种优选编码方案。
5,多地址指令设计:已知指令字长和每个地址字段位数
及 X条三地址,Y条两地址,Z条单地址指令,还可扩
展多少条零地址指令;写出各类指令编码方案。
§ 1 数据表示
一, 数据表示的确定
1,何谓数据表示
由硬件直接识别和处理 ( 引用 ) 的数据类型,
2,数据表示的主要类型
1) 常用数据表示,定点数, 字符串, 浮点数等 。
2) 高级数据表示,自定义, 向量, 堆栈数据表示
3,数据表示与系统结构的关系
1)数据表示是硬件设计基础
2)数据表示是指令加工的对象
4,数据表示确定
在进行软件和硬件的功能分配时, 计算机系统结构设
计应考虑在机器中设置哪些数据表示, 使之能对应用中用
到的数据结构有高的 实现效率 。 在定点, 浮点, 字符串,
逻辑, 十进制等基本数据表示的基础之上, 根据应用的需
要, 考虑在机器中引入哪些高级的数据表示, 以便能为数
据的实现提供更好的支持 ( 通用性 和 利用率 是否较高 ) 。
1) 一般计算机要选用常用的数据表示;
2) 对较高级的数据表示要有针对选取 。
① 当处理的数据类型较多时, 可选自定义的数据 。
② 当对向量数据处理较多时, 可选向量数据表示 。
③ 当逆波兰表达式处理较多时, 可选堆栈数据表示 。
二, 自定义数据表示
自定义数据表示是为缩短高级语言和机器语言的语义差距引出
来的 。 它又有标志符数据表示和数据描述符两类 。
1,标志符
1) 格式
① 类型标志
② 数据值
类型标志 数据值
2) 标志位位数选取
① 简单的用三位标志符区分 8种 ( 23) 类型
② 根据需要选取更多位
类型标志 数据值
B CD 码
无符号数
0 11 0 1 00 0
0 11 0 1 00 0 1 04 十进制
6 8( 两位)
如:
特征位 块属性块首址块长度
数据块
格式:
3) 使用标志位的优缺点
可简化指令系统与编译程序, 便于不同数据类型的自
动校验与转换 。
缺点:一个标志位只能对一个数据进行描述, 其描述
效率不高 。
2,描述符
① 特征位,用来区分描述符还是非描述符 。
当为描述符时, 才有后面的三个字段, 如某机采用 101表
示描述符的特征位 。
1101 数据000
② 块长度:描述数据块的个数 。
③ 块首址:第一个数据单元的地址 。
④ 块属性:描述数据的特征 。
2) 使用描述符的好处
① 描述相同类型的数据时, 描述效率高;
② 利用块属性也有利于对信息的保护;
③ 可当作直接寻址及间接寻址使用 。
直接寻址:根据描述符给出数据块的首址, 直接寻址 。
存储器一次间接 存储器两次间接:
描述符给出的仍是数据描述符
④ 可描述阵列数据:描述一个阵列可用一级, 二级描述符
描述 。
a00 … a03
A= ┇
a30 … a33
1101
1101
数据000
数据000
1101
1101
1101
一级描述符(要求数据连续存放)
16101
0 0 0 a 0 0
0 0 0 a 0 1
:
a 3 3
:
.
4101
4101
4101
4101
4101
a12
a 1 3
a10
a 1 1
a22
a 2 3
a20
a 2 1
a32
a 3 3
a30
a 3 1
a02
a 0 3
a00
a 0 1
二级描述符
2101
16101
16101
a 0 0
a 0 1
:
a 3 3
:
.
b 0 0
b 0 1
:
b 3 3
:
.
第一级
第二级
分别利用两级描述符和三级描述符描述下列阵列数据。
a00 a01 a02 a03 b00 b01 b02 b03
a10 a11 a12 a13 b10 b11 b12 b13
A= a20 a21 a22 a23 B= b20 b21 b22 b23
a30 a31 a32 a33 b30 b31 b32 b33
三, 向量数据表示
1,含义,有序排列的数据元素称为向量 ( 向量数据 )
2,向量数据的三要素,
1) 基地址,存放第一个向量数据的地址;
2) 向量长度,向量数据个数;
3) 位移量,与基地址的距离 。
3,根据三要素可推出参数
1) 起始地址 = 基地址 + 位移量, 实际参与本次操作的
第一个数据 ( 元素 ) 的地址;
2) 有效向量长度 = 向量长度 -位移量, 实际参与本次
操作的向量数据个数 。
4,向量运算指令
STAR—100机共有 16个向量寄存器,
每个寄存器用四位二进制数表示 。
1) 格式:
F G X A Y B Z C
a3
a2
a1
a0
a9
.,,
有 效
长 度
为 7
位 移
量 为
3
基地址
起始地址
长
度
为
10
2) 说明:
F,主操作码字段, 表示向量指令操作性质 。
G,辅操作码字段 ( 根据结果, 进行转移等 )
X,存放源向量 A长度及基址的寄存器号 。
Y,存放源向量 B长度及基址的寄存器号 。
A,源向量 A位移量所在寄存器号 。
B,源向量 B位移量所在寄存器号 。
Z,控制向量长度 ( 在 G有效时 ) 。
C,存放结果向量 C长度及基地址的寄存器号 。
F G X A Y B Z C
3) 例子:
完成以下向量运算 。 A,
B向量分布如右图示 。
c0=a3+b1
c1=a4+b2
┇
c7=a10+b8
a3
a2
a1
a0
a 1 0
.,,
A 向量
1 0 0 0 H
b3
b2
b1
b0
b8
.,,
B 向量
2 0 0 0 H
c3
c2
c1
c0
c7
.,,
C 向量
3 0 0 0 H
解:
① 向量寄存器分配 (无 G)
X=1000B 11 1000H 8#
A=1001B
Y=1010B
B=1011B
C=1100B
3 9#
10#
11#
12#
9 2000H
1
8 3000H
②向量指令格式填写
F G X A Y B Z C
向量加 1000 1001 1010 1011 1100
执行上述向量指令时, 可先后从存储器取出 8对向量数据,
求和并将 8个结果存入 3000H开始的存储单元中 。
5,稀疏向量的压缩
1) 稀疏向量含义:具有多个 0元素的向量 。
2) 压缩办法:利用有序, 位向量, 来指明稀疏向量中各
元素的状况及所在位置 。
① 位向量的位数与向量长度相等 。
② 某元素为 0时, 对应位向量的位为 0。
某元素为非 0时, 对应位向量的位为 1。
如,稀疏向量
a0 0 0 a3 0 a5 a6 0
有序位向量
占用 5个单元
压缩向量节省 3个单元
1 0 0 1 0 1 1 0
56
-112
78
34a0= 56
a3= -112
a5= 78
a6= 34
目的,*可节省存储空间;
*实际长度减少可加快运算速度 。
四, 堆栈数据表示
1,含义:凡是按先进后出方式工作的特殊 ( 存储 ) 区
域称为堆栈 。
2,堆栈组成方式:
1) 寄存器堆栈, 全由寄存器构成, 速度快, 扩充栈容
成本高 。
2) 寄存器与存贮器结合堆栈 。
① 寄存器速度快作栈顶 ( 需数个栈顶寄存器 ) 。
② 存贮器价格低扩充栈容易 。
3,堆栈的生长方式
通常采用向下生长方式:压入数据后, 堆栈指针 SP向
地址减少方向变化 。
4,堆栈的主要作用
1) 保护信息, 保存现场;
2) 支持子程序嵌套与中断嵌套以及递归调用的正确进
入与返回;
3) 十分有利于完成对逆波兰表达式的运算 。
5,逆波兰表达式及其运算
1) 三种表达式
① 数学表达式,A+B
② 波兰表达式,+AB
③ 逆波兰表达式,AB+
*
+
/
-
+ C
B
D
E F
A
2) 数学表达式的树结构
① 把运算符做结点 。
② 把运算元素做叶子 。
③ 把 最 后 一 个 运 算 符 作 根 节 点 ( 二叉树 )
例,( A+B) *C-D/( E+F)
3) 逆波兰表达式的生成
利用后序遍历树, 生成逆波兰表达式要点:
先左, 后右, 先枝叶, 后结点, 依次收集运算元
素与运算符, 直到最后一个运算符 ( 根结点 ) 为止 。
AB+C*DEF+/-
4) 在堆栈机上完成逆波兰表达式运算
要点,见运算元素压入堆栈 。
见运算符就将次栈顶元素与栈顶元素进行相应运算,
结果留在栈顶,直到最后一个运算符。
6,利 用 堆 栈 机 指 令 对 逆 波 兰 表 达 式 编 程
( HP3000堆栈机指令 )
A
Λ
(A + B )* C
Λ
C
A + B
Λ
D
M
Λ
A + B
Λ
B
A
Λ
1 65432 D*C
+
B
A
顶
次顶
顶
E
D
M
7
E
F
E
8 F
E + F
D
M
9
D / (E + F )
M
Λ
10 /
(A + B )* C - D / (E + F )
Λ
11 -
Λ
+
D
M
Λ
Λ
1) 零地址堆栈指令
ADD; 次栈顶元素与栈顶元素求和, 和在栈顶 。
SUB; 次栈顶元素与栈顶元素求差, 差和在栈顶 。
MUL; 次栈顶元素与栈顶元素求积, 积在栈顶 。
DIV; 次栈顶元素与栈顶元素求商, 商在栈顶 。
2) 一地址堆栈指令
LOAD X; 将 X单元数据压入栈顶 ( 类似 PUSH)
STOR X; 将栈顶数据弹出到 X单元 ( POP)
ADDM X; 栈顶数与 X单元数求和, 和在栈顶
SUBM X; 栈顶数与 X单元数求差, 差在栈顶
MULM X; 栈顶数与 X单元数求积, 积在栈顶
DIVM X; 栈顶数与 X单元数求商, 商在栈顶
3) 编程
B FEA C D
E
M
D
( A + B ) * C = M
A + B
A
D
M
E + F
D
M
M
D / ( E + F )
( A + B ) * C - D / ( E + F )
a b c d e f
① L O A D a ;
② A D D M b ;
③ M U L M c ;
④ L O A D d ;
⑤ L O A D e ;
⑥ A D D M f ;
⑦ D I V ;
⑧ S U B ;
顶
顶
顶
顶
次顶
顶
次顶
顶
次顶
顶
设数据放在小写字母单元中,如下图
§ 2 计算机系统的发展途径
一、从提高 CPU的利用率出发
二、从单机向多机发展
§ 3 影响计算机系统结构发展的因素
一、程序的可移植性的影响
二、应用对系统结构的影响
三、器件发展的影响
第二章 数据表示与指令系统
§ 1 数据表示
一、数据表示的确定
二、自定义数据表示
三、向量数据表示
四、堆栈数据表示
五, 浮点数尾数的基值 ( rm) 选择和下溢处理
1,rm选择
1) 浮点数的一般格式
....,,,,,.........
数
符
阶
符
r -1m r
-2
m
r -m'
m
.
阶码部分
(P + 1 位)
尾数
(m 个机器位)
2) rm影响的因素
① 数的表示范围
上图中 阶码的位数 P的大小主要影响浮点数的可表示
范围的大小 。
尾数的位数 m主要影响浮点数的可表示精度 。
当 P一定时, 尾数采用什么进制可影响数的表
示范围, 精度及数在数轴上分布的离散程度 。
P在所有的机器种都时采用二进制 。
rm=2时, m位
非 0最小正尾数 2-m,00…01
最大正尾数 1-2-m,11…11
p位
最大正阶 2^p–1 011… 1
p位
最大负阶 -2^p 100… 0
最小正浮点数 2-m*2-2^P (rm-m’*rm-2^P)
最大的正浮点数 (1-2-m ) *22^P-1 (1-rm-m’)*rm2^P-1
正数轴上表示范围 rm-m’*rm-2^P ~(1- rm-m’)*rm2^P-1
② 规格化浮点数个数
尾数最高数值位为非 0的浮点数称为规格化浮点数 。
设,P=2, m=4 正尾数, 规格化, 非负阶时
rm=2时, 共有 32个规格化浮点数
1000 8/16 8/8 8/4 8/2
1001 9/16 9/8 9/4 9/2
┇ ┇ ┇ ┇ ┇
1111 15/16 15/8 15/4 15/2
m p 00 01 10 11
rm=16时, 共有 60个规格化浮点数
0001 1/16 1 16 256
0010 2/16 2 32 512
┇ ┇ ┇ ┇ ┇
1111 15/16 15 240 3840
m p 00 01 10 11
rm=4时
m 00 01 10 11
0100 4/16 4/4 4 16
0101 5/16 5/4 5 20
0110 6/16 6/4 6 24
0111 7/16 7/4 7 28
1000 8/16 8/4 8 32
1001 9/16 9/4 9 36
┇ ┇ ┇ ┇ ┇
1111 15/16 15/4 15 60
p
③ 规格化浮点数的稀密度 e
rm=16时 e=15/32=0.47
rm =4时 e=24/32=0.75
结论, rm越大, 规格化浮点数分布越稀疏 。
④ 精度,( 从 e可以看出 )
rm大, 精度低 。
rm大, 移位次数少, 因而移位损失较小 。
3) rm的选择原则
①应视数的表示范围决定。
②随着位数范围越来越大,rm有向下取的趋势。
个数时,非负规格化浮点数
点数地个数相同数轴以内规格化浮时,与
2r
2rre
m
mm
?
????
2 下溢的处理
两种溢出,<上溢 > 运算结果超出允许范围。
<下溢 > 是指尾数右移过程中丢掉的移
出位,它影响精度。
1)截断法
①含义:对尾数移出位简单截取的一种处理方法。
②特点,Ⅰ )无下移处理线路,实现容易。
Ⅱ )平均误差为负且较大,无法调节,
只适用于对精度无要求之处。
2) 恒置 1法
① 含义:不管移出位如何, 均将尾数末位置 1的一种下
溢处理方法 。
② 取值表
右移后
尾数
移出位
2-1 2-2 取值 误差 综合 ∑
0
0 0
1
1
1
+3/4
1 0 +1/2
1 1 +1/4
1
0 0
1
0
0 1 -1/4
1 0 -1/2
1 1 -3/4
0 1
① 特点,Ⅰ ) 有了简单的下溢处理线路 ;
Ⅱ ) 综合误差有所下降 ( 比截断法 ) 。
3) 舍入法
① 含义:根据移出最高位进行舍取时的一种下溢处理法 。
Ⅰ ) 当移出的最高位 =0时, 按截断法 。
Ⅱ ) 当移出的最高位 =1时, 将尾数的末位加 1。
②取值表
右移后 移出位2-1 2-2 取值 误差 综合 ∑
X
0 0 X 0
+1/20 1 -1/4
1 0 X+1 +1/2
1 1 +1/4
③ 特点,
Ⅰ ) 需移出最高位判别线路及尾数加 1线路, 比较复杂 。
Ⅱ ) 综合误差较小, 用于对精度要求较高处, 较常用 。
4) 查表舍入法 (ROM查表法 )
① 基本思想,从 n位尾数中切取 K位尾数, 并同移出位一
起送 ROM中去查表, 并从表中送出 K位尾数, 使其综合
误差趋于 0。
n-k位 移出位k位
n 位尾数
n-k位 k位
R O M 表
查表
送出k 位
② ROM表的安排原则
Ⅰ ) 当 K位尾数为非全 1时, 按舍入法取值 。
Ⅱ ) 当 K位尾数为全 1时, 按截断法取值 。
③ 取值表, 设 K=2,两个移出位
右移后尾数 移出位2-1 2-2 取值 误差 综合误差 ∑
0 0
0 0 00 0
0
0 1 -1/4
1 0 01 +1/2
1 1 +1/4
0 1
0 0 01 0
0 1 -1/4
1 0 10 +1/2
1 1 +1/4
④ 特点,Ⅰ ) 具有最复杂的下溢线路 ( 除舍入
法线路外, 还要有 ROM表 ) ;
Ⅱ ) 综合误差最小;
Ⅲ ) 用在精度高的地方 。
1 0
0 0 10 0
0 1 -1/4
1 0 11 +1/2
1 1 +1/4
1 1
0 0
11
0
0 1 -1/4
1 0 -1/2
1 1 -3/4
0
右移后
尾数
移出位
2-1 2-2 取值 误差
综合误差
∑
五, 浮点数尾数的基值 ( rm) 选择和下溢处理
1,rm选择
浮点数的一般格式
rm对数的表示个数, 范围, 精度, 稀密度 e的影响
规格化浮点数的概念
稀密度 e的概念
2.下溢处理
下溢处理的方法, 综合误差的大小
溢出位也称附加位
§ 2 地址表示与寻址方式
一, 地址表示
1 地址表示类型
1) 按所用不同进制数
① 用二进制地址
② 用八进制地址
③ 用十六进制地址
④ 用十进制地址
2) 按所指不同空间表示
① 存贮单元地址 。
② I/O端口地址 。
③ 寄存器地址
3) 按存贮管理不同
① 页地址
② 段地址
③ 段页地址
4) 按访问空间数据长度不同
① 字节地址 ( 8位 )
② 半字地址 ( 16位 )
③ 单字地址 ( 32位 )
④双字地址( 64位)
5)按编程角度
① 逻辑地址 ——程序员编程使用
②物理地址 ——访存必需
6)存储保护来分
①基地址:某用户存储单元的首地址
②界地址:存储保护中的界限保护
2 物理地址空间的信息分布
1)条件:在一个具有双字存储器中,可存放多种长度数
据(字节、半字、字、双字)
2)紧凑存放:尽量利用存储空间,将各种不同长度的数
据紧凑存放,但可能出现以下信息分布。
双字、字、半字都可能出现跨主存字边界存放,因
此访存时间将增加。
如:依次存放单字( 4字节)、双字、半字( 2字
节)、字节、半字、单字、单字
3)按整数边界存放:
浪费了一定的空间,但保证了访问时间。
单字 双字 1
双字 2 半字 字节 半字 1
半字 2 单字 单字 1
单字 2
单字 浪费( 4字节)
双字
半字 字节 浪费 半字 浪费 (2字节 )
单字 单字
二, 寻址 方式 简介
1,三种面向的寻址方式
机器指令可以访问寄存器, 堆栈或主存中的数,
因此相应地就有面向寄存器, 面向堆栈和面向主存的
不同寻址方式 。
2,寻址方式选择原则
1) 尽快获得操作数 ( 速度 )
2) 寻址字段位数少 ( 省空间 )
3) 能访问尽可能大的存储空间
4) 有利于循环程序设计
5) 有灵活多变寻址来达到同一目的访问 ( 编程灵活 )
3,程序在主存中的定位技术
1) 静态再定位
目程序装入主存时, 通过调用系统配备的装
入程序, 把目程序的逻辑地址用软的方法逐一修
改成物理地址 。
静态再定位不利于多道程序的运行环境 。
2) 动态再定位
动态再定位的一种方法是设置基址寄存器和
地址加法器硬件,在程序装入主存时,只将装入
主存的起始地址存入该道程序的基址寄存器中即
可,指令的地址字段不作修改。程序在执行过程
中,才形成物理地址访存。
基址寻址 的方法主要是支持程序的动态再定位 。
变址寻址 则主要是为实现程序的循环, 支持向量,
数组数据的寻址使用的 。
动态再定位技术的进一步发展是采用映象表来进
行地址的映象和变换,它可以使每个用户在机器
上运行比实际主存容量大得多的程序。
§ 3 指令系统
能由计算机硬件直接识别的指令为机器指令,所有
机器指令的集合为指令系统,不同的机器类型具有不同
的指令系统。
一、指令主要类型
类 型 任 务 表 现 形 式
运动类指令 实现数据的传递复制 传递, 交换, 压入, 弹出
算术类指令 实现各种算术运算 加, 减, 乘, 除, 比较等
逻辑运算指令 实现各种逻辑运算 逻辑加, 逻辑乘, 异或, 同或, 取反等
移位指令 实现各种移动运算 左移, 右移, 循环左移, 循环右移等
转移指令 实现程序分支转移 条件转移, 无条件转移, 转子, 返回等
入出指令 实现信息交换 输入, 输出
二, 指令格式的优化
1,对操作码编码方法
1) 等长编码
① 每条指令的编码位数相等
② 编码位数 L的确定与指令条数 N相关 。
L =?log2N? 例,N=7 L=3
③ 特点:
Ⅰ )编码规整, 使控制器译码机构简单 。
Ⅱ )当指令使用频度不同时, 不利于等效平均编码长度
的减少, 从而不利于信息的传递效率 。
等长法用于 RISC(精简指令系统计算机)中
2) Huff man压缩编码法
① 基本思想
Ⅰ )频度高的指令用短码表示 。
Ⅱ )频度低的指令用较长码表示 。
② Huff man-A方案编码树的绘制 要点,
*将指令按频度从高到低顺序排列;
*在指令线之外找个根结点,并将它与两端指令连接起
来形成 Δ;
*其余指令分别作与频度高的那条边的多条平行线, 即
形成编码树 。
每条指令的使用频度之和为 1,即
?
?
?
N
1i
1Pi
I 1 I 2 I 3 I 4 I 5 I 6 I 7
0
0
0
0
0
0
1
1
1
1
1
1
根结点
分结点
③ 编码形成
编码树上, 结点与结点之间, 结点与指令之间规
则地加 0,1。
每条指令均从根结点出发, 沿最短路径指向指令,
依次收集途中数码, 即形成编码 。
④ 特点
Ⅰ )在指令的使用频度不相同时, 有利于降低信息等
效平均编码长度及信息的传送效率 。
Ⅱ )不同位数编码类型太多, 使控制器的译码复杂 。
⑤信息等效平均码长 L的计算
?
?
?
N
1i
liPiL *
3) 扩展编码法
① 基本思想:即要考虑频度不同时, 用不等长
编码, 又要考虑减少不同位数编码类型, 使译码
机构不要太复杂, 采用多余一位进行扩展 。
② 两位扩展
Ⅰ ) 3/3/3方案
0 0 1 1 0 0 1 1 1 1 0 0
0 1 3 1 1 0 1 3 1 1 1 1 0 1 3
1 0 1 1 1 0 1 1 1 1 1 0
Ⅱ ) 2/4/8方案
0 0 2 1 0 0 0 1 0 1 0 0 0
0 1 1 0 0 1 4 1 0 1 0 0 1
1 1 0 0 1 0 1 1 0 0
1 1 0 1 1 0 1 1 0 1 8
1 1 1 0 0 0
1 1 1 0 0 1
1 1 1 1 0 0
1 1 1 1 0 1
③ 三位扩展
Ⅰ ) 7/7/7方案
0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0
┇ 7 ┇ 7 ┇ 7
1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0
┇ 4 1 0 0 ┇ 1 0 0 ┇
0 1 1 0 1 1 0 1 1
┇ ┇ 16 1 0 0 ┇ ┇
0 00 0 0 0
1 1 1 ┇ 1 1 1 ┇
0 1 1 0 1 1
┇ ┇ ┇ 64
0 0 0
Ⅱ ) 4/16/64方案 1 0 0 ┇
0 1 1
1 1 1 ┇ ┇
0 0 0
1 1 1 ┇
0 1 1
例:某机 7条指令使用频度分别为 0.45,0.3,0.15,
0.05,0.03,0.01,0.01,画 Huffman- A方案的
树结构,分别用等长法,H-A方案,扩展法进行
编码,并分别计算各种方案编码的平均码长。
( 0.45+0.3+0.15+0.05+0.03+0.01+0.01= 1 )
?
?
?
N
1i
liPiL *
Ii Pi
等长法 H-A 扩展法
OP li OP li OP li
I1
I2
I3
I4
I5
I6
I7
0.450.30
0.150.05
0.030.01
0.01
000
001
010
011
100
101
110
3
0
10
110
1110
11110
111110
111111
1
2
3
4
5
6
6
00
01
10 2
1100
1101
1110
1111
4
信息等效平均
码长 L 3 1.97 2.2
解:
?
?
????????
N
1i
1, 9 76*0, 0 25*0, 0 34*0, 0 53*0, 1 52*0, 31*0, 4 5li*PiL
2 关于信息源熵简介
1) 含义:指信息源中包含的平均信息量 。
(理论上可以达到的最短平均码长)
信息源熵 H的计算:
?
?
??
N
1i
2 PiPiH lo g*
3,多地址指令设计
某机指令字长 16位, 每个地址字段为 4位, 要求编写 11
条三地址指令, 70条两地址指令, 140条单地址指令,
其余还能扩展多少条零地址指令, 并写出各类指令编码
示意图 。
4 4 4 4
OP A1 A2 A3
1) 各类指令编码格式
① 三地址指令
0 0 0 0
┇ 11条
1 0 1 0
② 两地址指令
0 0 0 0
1 0 1 1 ┇ 16
1 1 1 1
0 0 0 0
1 1 0 0 ┇ 16
1 1 1 1
┇ ┇ 70条
0 0 0 0
1 1 1 0 ┇ 16
1 1 1 1
0 0 0 0
1 1 1 1 ┇ 6
0 1 0 1
③ 单地址指令
0 0 0 0
1 1 1 1 0 1 1 0 ┇ 16
1 1 1 1
┇ ┇ 140条
0 0 0 0
1 1 1 1 1 1 1 0 ┇ 12
1 0 1 1
① 零地址
1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0
┇ 320条
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2) 可扩展零地址指令条数计算
① 共可编写多少条三地址,24=16
② 剩余三地址共可扩展多少条两地址,( 24-11)
*24 =5*16=80
③ 剩余二地址共可扩展多少条单地址:
〔( 24-11) *24-70〕 *24=( 80-70) *16 =160
④ 剩余单地址共可扩展多少条零地址:
﹛ 〔( 24-11) *24-70〕 *24-140﹜ *24
=( 160-140) *16=320
§ 2 地址表示与寻址方式
物理地址空间的信息分布
三种面向的寻址方式
寻址方式选择原则
程序在主存中的定位技术
§ 3 指令系统
对操作码编码方法,
多地址指令设计
三, 指令系统的改进途径
1,按 CISC( 复杂指令系统计算机 ) 方向发展与改进指
令系统
1) CISC的改进思路
按 CISC方向发展改进指令系统的出发点是, 如何进一
步增强原有指令的功能以及设置更为复杂的新指令来取代
原先由软件子程序完成的功能, 实现软件功能的硬化 。 它
可以从面向机器语言目标程序的优化实现, 面向高级语言
的优化实现和面向操作系统的优化实现三个方面来改进 。
2) 面向目标程序的优化实现
目标是提高包括系统软件和应用软件在内的各种
机器语言目标程序的实现效率, 即缩短目标程序的长度,
加快目标程序的执行速度, 并使实现起来方便可行 。
a,对使用频度高的指令加速完成, 可提高指令的吞吐量 。
b,对经常出现的程序段, 可用一条指令代替 。
3) 面向高级语言的优化实现
目标是缩短高级语言和机器语言的语义差距,这样
可以缩短编译程序的长度和节省编译所需的时间。
a,对使用频度高的语句, 通过增设复合指令来减少辅助
操作时间 。
b,在编译中优化代码生成 。
c,改进指令系统使之与各种高级语言的语义差距都有共
同的减少 。
d,提供多种指令系统, 多种系统结构以适应不同的高级
语言 。
e,发展高级语言计算机 。
4) 面向 OS( 操作系统 ) 的优化实现
目标是缩短 OS与计算机系统结构之间的语义差,减少
OS的时间开销和空间开销。
a,操作系统的常用指令进行分析改进。
b,增设专用于 OS的新指令 。
c,对 OS中由软件子程序实现的某些功能进行硬化或固化 。
d,设置专门的处理机来运行 OS,发展功能分布处理系统 。
2,按 RISC方向发展与改进指令系统
1) CISC结构的问题
指令系统日趋庞大和复杂, 使机器的设计周期延
长, 成本升高, 错误增多, 可靠性降低;指令的操作繁
杂, 使执行速度降低;高级语言源程序的优化编译困难,
编译的时空开销增大;指令系统中, 约有 80% 的指令使
用频度很低, 利用率低, 因而系统的性能价格比低 。
2) RISC机器主要特点
a,精简指令的条数, 使用频度很高的部分指令;
b,让指令字等长, 所有指令都在一个机器周期执行完;
c,寻址方式简单, 充分利用寄存器寻址;
d,CPU内增加通用寄存器的数目;
e,采用重迭寄存器, 窗口技术, 有利于子程序调用时
的参数传递
f,访存指令只有 Load/Store两种, 其它的指令一律只能
对寄存器进行操作 。
3) 设计 RISC机器的基本技术
按设计 RISC机器的一般原则来精选和优化设计指
令系统;在 CPU内设置大量的寄存器, 并采用重叠寄存
器组的窗口;指令采用重叠和流水的方式解释, 并采用
延迟转移;优化设计高质量的编译程序 。
4) RISC的优点
简化了指令系统的设计, 适合于用 VLSI来实现;
提高了机器的运行速度和效率;降低了设计成本, 提高
了系统的可靠性;可以直接高效地支持高级语言的实现,
简化了编译程序 。
5) RISC的问题及发展趋势
RISC的问题和不足是:
加重了汇编语言程序设计的负担;
目标程序所占的存贮空间量可能加大;
对浮点运算和虚拟存贮器等的支持还不够强;
对编译程序的设计质量要求较高, 难度较大 。
今后计算机发展改进的总趋势是让 RISC和 CISC两
者互相结合,取长补短。
本章计算绘图类题如下:
1,利用描述符描述阵列数据
2,已知数学表达式,画出树结构;写出逆波兰表达式
3,已知 p,m的位数,画出规格化浮点数表( rm=2,4,8,16);
计算浮点数的表示范围;数的个数和表示比 e。
4,已知指令和使用频度能用等长法,H-A方案,扩展法
进行编码,并指出所选方案的理由;计算等效码长,
确定一种优选编码方案。
5,多地址指令设计:已知指令字长和每个地址字段位数
及 X条三地址,Y条两地址,Z条单地址指令,还可扩
展多少条零地址指令;写出各类指令编码方案。