2.3.1 指令的组成
一般的指令主要由两部分组成:
操作码 通常包括两部分内容:
操作种类,加、减、乘、除、数据传送、移位、转移、输入输出操作码( OPC) 地址码( A)
2.3 指令格式的优化( P90)
主要目标,节省程序的存储空间,指令格式尽量规整
研究内容,操作码优化表示,地址码优化表示操作数描述
数据的类型:定点数、浮点数、复数、字符、字符串、逻辑数、向量
进位制,2进制,10进制,16进制
数据字长:字、半字、双字、字节
地址码 通常包括三部分内容:
地址,还包括间接地址、立即数、寄存器编号、变址寄存器
地址的附加信息,偏移量、块长度、跳距
寻址方式,直接寻址、间接寻址、立即数寻址、变址寻址、相对寻址,寄存器寻址
2.3.2 操作码优化目前常用编码方法有 3种,定长编码,Huffman编码,扩展编码 。
编码方法性能指标( P91-P93)
信息量,根据信息论的基本知识,在 n种可能发生的事件集合中,报告第 i种事件发生的消息中包含的信息量为
ia
i
ai PPI lo g)
1(lo g
其中 Pi是第 i种事件发生的先验概率,a是编码基值。信息量的单位是表示位数(最少所需位数)。
这个定义式表明事件的发生概率越低,关于它的消息中的信息量越大。
熵 ( entropy) ── 平均信息量,一个消息源对 n种事件发布的消息的信息量平均值,记为



n
i
iai
n
i
ii PPIPH
11
)(l o g)(
平均码长,各事件编码长度的数学期望。

n
i
ii lPL
1
)(
信息冗余量,它表明消息编码中,无用成分,所占的百分比。
%100 L HLR
从减少存储与传输量的角度看,编码方法的平均码长越短越好 。 但是平均码长不可能无限制缩短,它的下限就是熵 ( 即 R=0
时 ) 。 如果短于熵就一定会丢失有用信息 ( 即混淆不同指令 ),
这是不允许的 。
2.3.2.1 定长编码 就是所有指令使用相同代码位数,其最小码长等于
nL o glL i 2
式中 是平均码长,是第 i种指令的码长,n是指令总数。
例 2.2 已知 n = 15,求定长编码的最小平均码长。
解:
L
il
4152 L o gL
主要优点:规整,译码简单
主要缺点:浪费信息量(操作码的总长位数增加)
2.3.2.2 Huffman压缩编码( P91)
(1)Huffman压缩概念 ( 最佳编码定理 ),当用 n个长度不等的代码分别代表 n种发生概率不等的事件时,按照短代码给高概率事件,
长代码给低概率事件的原则分配,可使平均码长达到最低 。
(2)Huffman编码方法 (最小概率合并法 )
频度合并,将全部 n个事件 ( 在此即为 n条指令 ) 频度值排序,选取其中最小 2个频度合并,然后将剩下 n-1个频度再次排序,再合并最小 2个频度,如此重复,直至剩下 1个频度为止 。 记录所有合并关系,形成二叉树 ─Huffman树,所有原始频度值当树叶,最后剩下总频度 1为树根;
码元分配,从树根开始,对每个中间结点 2分支边各赋予一位代码
,0”和,1”。 读出从根结点到树叶路径上依次出现的代码位,其排列即为此事件 ( 即指令 ) 完整编码 。 由于频度高事件较晚被合并,其编码位数也就较少,符合 Huffman压缩原则 。
上面所说 频度值 就是各事件实际出现次数百分比,它是理论出现概率 近似值 。
指令序号 出现的概率
I1 0.45
I2 0.30
I3 0.15
I4 0.05
I5 0.03
I6 0.01
I7 0.01
0.01 0.01
0.02 0.03
0.05 0.05
0.10 0.15
0.25 0.30
0.55 0.45
1.00
1
0
0
0
0
0
0
1
1
1
1
1
模型机的操作码 Huffman编码法指令序号 出现的概率 Huffman编码法 操作码长度
I1 0.45 0 1位
I2 0.30 1 0 2位
I3 0.15 1 1 0 3位
I4 0.05 1 1 1 0 4位
I5 0.03 1 1 1 1 0 5位
I6 0.01 1 1 1 1 1 0 6位
I7 0.01 1 1 1 1 1 1 6位采用 Huffman编码法所得到的操作码的平均长度为:
= 0.45× 1+ 0.30× 2+ 0.15× 3+ 0.05× 4
+ 0.03× 5+ 0.01× 6+ 0.01× 6
= 1.97(位)
采用最优 Huffman编码法,操作码的平均长度为:
= 0.45× 1.152+ 0.30× 1.737+
0.15× 2.737+ 0.05× 4.322+ 0.03× 5.059+
0.01× 6.644+ 0.01× 6.644 = 1.95
H p li i
i

1
7
H p pi i
i

2
1
7
l o g
采用 3位固定长操作码的信息冗余量为:
Huffman编码法的信息冗余量仅为:
与采用 3位固定长操作码的信息冗余量 35%相比要小得多。
R
H1
7
1 1 973 35%
2l o g
.
R1 1 95
1 97
1 0%.
.
.
nn


i iaii ii
PP?IP
11
)(log)(
例 已知频度序列为 0.1,0.1,0.15,0.15,0.2,
0.3,求 Huffman编码的熵、平均码长以及信息冗余量。
解,熵 H=
= – 2× 0.1× log20.1+2× 0.15× log20.15+0.2× log20.2+0.3× log20.3)
≈2.47
要求信息冗余量,先求 Huffman编码的平均长度
0 1
0
0
0
0
1
1
1
1
I1 I2 I3 I4 I5 I6
0.1 0.1 0.15 0.15 0.2 0.3
Huffman 000 001 110 111 01 10
n?
i
ii lP
1
)(则平均码长 L =
= 3*0.1 + 3 *0.1 + 3 * 0.15 + 3*0.15 + 2 *0.2 +2*0.3
= 2.5
信息冗余量 %100 LHLR
= ( 2.5 – 2.47 )/2.5? 1.2%
Huffman操作码的主要缺点:
操作码长度很不规整,硬件译码困难与地址码共同组成固定长的指令比较困难
扩展编码法,由固定长操作码与 Huffman编码法相结合形成
2.3.2.3 扩展编码方法
7条指令的操作码扩展编码法指令序号 出现的概率 1-2-3-5扩展编码 2-4等长扩展编码
I1 0.45 0 0 0
I2 0.30 1 0 0 1
I3 0.15 1 1 0 1 0
I4 0.05 1 1 1 0 0 1 1 0 0
I5 0.03 1 1 1 0 1 1 1 0 1
I6 0.01 1 1 1 1 0 1 1 1 0
I7 0.01 1 1 1 1 1 1 1 1 1
平均长度 2.0 2.2
信息冗余量 2.5% 11.4%
例如,例 2.7改为 1-2-3-5扩展编码法,其操作码平均长度为:
H= 0.45× 1+ 0.30× 2+ 0.15× 3+ (0.05+ 0.03
+ 0.01+ 0.01)× 5
= 2.00
信息冗余量为:
例如,例 2.7改为 2-4等长扩展编码法,其操作码平均长度为:
H=( 0.45+ 0.30+ 0.15) × 2+( 0.05+ 0.03+
0.01+ 0.01) × 4
= 2.20
信息冗余量为:
R1 1 952 00 2 5%..,
R1 1 952 20 11 4%..,
2.3.2.3 扩展编码方法( 等长扩展法,P93)
用码长表示:例如 4-8-12法 。这并不能说明具体编码方法,例如下面两种编码方法都是 4-8-12法。
用码点数表示:例如 15/15/15法,8/64/512法
15/15/15法,每一种码长都有 4位可编码位(前头可以有相同的扩展标识前缀),可产生 16个码点(即编码组合),但是至多只能使用其中 15个来表示事件,留下 1个或多个码点组合作为更长代码的扩展标识前缀。已经用来表示事件的码点组合不能再作为其它更长代码的前导部分,否则接收者会混淆。
这就是“非前缀原则”。
8/64/512法,每一种码长按 4位分段,每一段中至少要留下 1
位或多位作为扩展标识。各段剩下的可编码位一起编码,所产生的码点用来对应被编码事件。每一段中的标识位指出后面还有没有后续段。
操作码 等长扩展编码法操作码编码 说 明 操作码编码 说 明
0000
0001
……
1110
4位长度的操作码共 15种
0000
0001
……
0111
4位长度的操作码共 8种
1111 0000
1111 0001
……
1111 1110
8位长度的操作码共 15种
1000 0000
1000 0001
……
1111 0111
8位长度的操作码共 64种
1111 1111 0000
1111 1111 0001
……
1111 1111 1110
12位长度的操作码共 15种
1000 1000 0000
1000 1000 0001
……
1111 1111 0111
12位长度的操作码共 512种等长 15/15/15…… 扩展法 等长 8/64/512…… 扩展法保留一个码点标志 保留一个标志位不等长操作码扩展编码法( 4-6-10扩展编码法)
编码方法 各种不同长度操作码的指令 指令种类
4位操作码 6位操作码 10位操作码
15/3/16 15 3 16 34
8/31/16 8 31 16 55
8/30/32 8 30 32 70
8/16/256 8 16 256 280
4/32/256 4 32 256 292
本章主要内容有 数据表示 和 操作码优化 两个部分。具体细节如下:
(1) 浮点数的 表数范围 (在数轴上的 4个端点),表数精度?、
表数效率?;
(2) Huffman编码方法;
(3) 等长扩展编码方法( 15/15/15法,8/64/512法 );
(4) 编码方法性能指标( 熵 H,平均码长 L,信息冗余量 R)。
习题,P124,题 3(忽略 P124倒 1行 ~ P125第 8行文字),题
13。
本章小结自学部分:
寻址技术
编址方式
寻址方式
定位方式
指令系统功能设计
CISC
RISC