
计算机系统结构 (第7讲) 主讲人:郑纬民教授 清华大学计算机系
计算机系统结构 (第7讲) 主讲人: 郑纬民 教授 清华大学计算机系

第二章指令系统 2.1数据表示 2.2寻址技术 2.3指令格式的优化设计 2.4指令系统的功能设计 2.5RISC指令系统
第二章 指令系统 2.1 数据表示 2.2 寻址技术 2.3 指令格式的优化设计 2.4 指令系统的功能设计 2.5 RISC指令系统

2.3指令格式的优化设计 主要目标: 节省程序的存储空间 指令格式尽量规整,便于译码 研究内容: 操作码的优化表示;地址码的优化表示 2.3.1指令的组成 2.3.2操作码的优化设计 2.3.3地址码的优化设计 2.3.4指令格式设计举例
2.3 指令格式的优化设计 主要目标: 节省程序的存储空间 指令格式尽量规整,便于译码 研究内容: 操作码的优化表示;地址码的优化表示 2.3.1 指令的组成 2.3.2 操作码的优化设计 2.3.3 地址码的优化设计 2.3.4 指令格式设计举例

2.31指令的组成 一般的指令主要由两部分组成:操作码和地 址码 操作码主要包括两部分内容: 操作种类:加、减、乘、除、数据传送、 移位、转移、输入输出 操作数描述: 数据的类型:定点数、浮点数、复数、 字符、字符串、逻辑数、向量 进位制:2进制、10进制、16进制 数据字长:字、半字、双字、字节
2.3.1 指令的组成 一般的指令主要由两部分组成:操作码和地 址码 操作码主要包括两部分内容: 操作种类:加、减、乘、除、数据传送、 移位、转移、输入输出 操作数描述: 数据的类型:定点数、浮点数、复数、 字符、字符串、逻辑数、向量 进位制:2进制、10进制、16进制 数据字长:字、半字、双字、字节

地址码通常包括三部分内容: 地址: 直接地址、间接地址、立即数、 寄存器编号、变址寄存器编号 地址的附加信息: 偏移量、块长度、跳距 寻址方式: 直接寻址、间接寻址、立即数寻址、 变址寻址、相对寻址、寄存器寻址
地址码通常包括三部分内容: 地址: 直接地址、间接地址、立即数、 寄存器编号、变址寄存器编号 地址的附加信息: 偏移量、块长度、跳距 寻址方式: 直接寻址、间接寻址、立即数寻址、 变址寻址、相对寻址、寄存器寻址

2.3.2操作码的优化表示 操作码的三种编码方法: 固定长度,Huffiman编码、扩展编码 改进操作码编码方式能够节省程序存储空间, 例如:Burroughs公司的B-1700机 7 整个操作系统所用 改进的 指令的澡作总位数昏芬比 8位定长编码 301,248 0 4-6-10扩展编码 184,966 39% uffman2编码 172,346 43%
2.3.2 操作码的优化表示 操作码的三种编码方法: 固定长度,Huffman编码、扩展编码 改进操作码编码方式能够节省程序存储空间, 例如:Burroughs公司的B-1700机 操作码 编码方式 整个操作系统所用 指令的操作码总位数 改进的 百分比 8位定长编码 4-6-10扩展编码 Huffman编码 301,248 184,966 172,346 0 39% 43%

2、Huffman编码法 1992年由Huffiman首先提出 操作码的最短平均长度可通过下式计算: n H=-∑pmog, 其中:P表示第种操作码在程序中出现 的概率 固定长操作码相对于 Huffiman操作码的 p1·log2P i=l 信息冗余量为: l0g2 n
2、Huffman编码法 1992年由Huffman首先提出 操作码的最短平均长度可通过下式计算: 其中:Pi表示第i种操作码在程序中出现 的概率 固定长操作码相对于 Huffman操作码的 信息冗余量为: i n i H pi p = = − 1 2 log n p p R n i i i 2 1 2 log log 1 = − = −

例2.6:假设一台模型计算机共有7种不同的操 作码,如果采用固定长操作码需要3位。已 知各种操作码在程序中出现的概率如下表, 计算采用Huffman编码法的操作码平均长度, 并计算固定长操作码和Iuffiman操作码的信 息冗余量。 指令 2 概率0.450.300.150.050.030.010.01 利用Iuffman树进行操作码编码的方法,又 称为最小概率合并法
例2.6:假设一台模型计算机共有7种不同的操 作码,如果采用固定长操作码需要3位。已 知各种操作码在程序中出现的概率如下表, 计算采用Huffman编码法的操作码平均长度, 并计算固定长操作码和Huffman操作码的信 息冗余量。 利用Huffman树进行操作码编码的方法,又 称为最小概率合并法。 指令 I1 概率 0.45 I2 0.30 I3 0.15 I4 0.05 I5 0.03 I6 0.01 I7 0.01

1把所有指令按照操作码在程序中出现的概率, 自左向右从排列好。 2.选取两个概率最小的结点合并成一个概率值 是二者之和的新结点,并把这个新结点与其 它还没有合并的结点一起形成新结点集合。 3.在新结点集合中选取两个概率最小的结点进 行合并,如此继续进行下去,直至全部结点 合并完毕。 4.最后得到的根结点的概率值为1。 5.每个结点都有两个分支,分别用一位代码 “0”和“1”表示
1.把所有指令按照操作码在程序中出现的概率, 自左向右从排列好。 2. 选取两个概率最小的结点合并成一个概率值 是二者之和的新结点,并把这个新结点与其 它还没有合并的结点一起形成新结点集合。 3. 在新结点集合中选取两个概率最小的结点进 行合并,如此继续进行下去,直至全部结点 合并完毕。 4. 最后得到的根结点的概率值为1。 5. 每个结点都有两个分支,分别用一位代码 “0” 和“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(位) 采用最优luffiman编码法,操作码的最短平均 长度 =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(位)
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(位)