《指令系统的设计和优化.pptx》由会员分享,可在线阅读,更多相关《指令系统的设计和优化.pptx(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、内容指令系统设计的基本原则指令操作码的优化指令字格式的优化 第1页/共48页指令设计的步骤根据应用,初拟出指令的分类和具体的指令;试编出用该指令系统设计的各种高级语言的编译程序;对各种算法白那些大量测试程序进行模拟测试,看指令系统的操作码和寻址方式效能是否都比较高;将程序中高频出现的指令串复合改成一条强攻能新指令,即改用硬件方式实现;而将频度很低的指令的操作改成基本的指令组成的指令串来完成,即用软件方式实现;第2页/共48页指令类型非特权型:主要供应应用程序员使用,也可供系统程序员使用,包括算术逻辑运算、数据传送、浮点运算、字符串、十进制运算、控制转移及系统控制等;特权型:系统程序员使用,用户
2、无权使用,有启动I/O(多用户环境下)、停机等待、存储管理保护、控制系统状态、诊断等;第3页/共48页指令系统的设计设计的原则:如何支持编译系统能高效、简易地将源程序翻译成目标代码。规整性对称性独立性和全能性正交性可组合性可扩充性第4页/共48页系统设计人员希望指令码密度适中高密度指令:强功能符合指令优点:减少程序长度、访存次数、Cache、虚存访问调度次数、程序运行时间;缺点:指令系统复杂,硬件实现困难;兼容性适应性第5页/共48页指令系统的设计包含的内容指令的格式指令的类型操作功能操作数的访问方式-寻址方式第6页/共48页指令的组成一般的指令主要由两部分组成:操作码和地址码操作码主要包括两
3、部分内容:操作种类:加、减、乘、除、数据传送、移位、转移、输入输出操作数描述数据的类型:定点数、浮点数、复数、字符、字符串、逻辑数、向量进位制:2进制、10进制、16进制数据字长:字、半字、双字、字节地址码通常包括三部分内容:地址:直接地址、间接地址、立即数、寄存器编号、变址寄存器编号地址的附加信息:偏移量、块长度、跳距寻址方式:直接寻址、间接寻址、立即数寻址、变址寻址、相对寻址、寄存器寻址第7页/共48页指令设计要考虑的问题操作数的存储形式存储器CPU内什么地方每条指令中显式说明的操作数个数操作数的位置操作类型操作数的类型和长短第8页/共48页指令的分类第9页/共48页指令格式的优化 指令=
4、操作码+地址码指令格式的优化:如何用最短的位数来表示 指令的操作信息和地址信息,使程序中指 令的平均字长最短。主要目标:节省程序的存储空间指令格式尽量规整,便于译码第10页/共48页操作码的优化表示 操作码的三种编码方法:固定长度:规整性好,解码简单,空间大。IBM公司的大中型机:最左边8位为操作码Intel公司的Intanium处理机:14位定长操作码许多RISC处理机采用定长操作码Huffman编码:空间小,规整性不好,解码复杂。扩展编码:折衷方案。固定长度4Huffman编码2.12扩展编码3.12信息源熵2.09第11页/共48页改进操作码编码方式能够节省程序存储空间例如:Burrou
5、ghs公司的B-1700机操作码编码方式整个操作系统所用指令的操作码总位数改进的百分比8位定长编码4-6-10扩展编码Huffman编码301,248184,966172,34603943第12页/共48页哈夫曼(Huffman)压缩当各种事件发生的概率不均等时,采用优化技术对发生概率最高的事件用最短的位数(时间)来表示(处理),而对出现概率较低的允许用较长的位数(时间)来表示(处理),以达到平均位数减少的目的。用于代码压缩、程序压缩、空间压缩和时间压缩 第13页/共48页操作码的优化表示 信息源熵:信息源包含的平均信息量。信息冗余量:第14页/共48页举例 七条指令,频度如下 I1 I2 I
6、3 I4 I5 I6 I70.4 0.3 0.15 0.05 0.04 0.03 0.03 信息源熵H=2.17 信息冗余量=0.28=28%第15页/共48页1.000.600.300.150.060.030.030.040.050.150.300.400.0911111100000(11111)(11110)(11101)(11100)(110)(10)(0)I7I6I1I2I3I4I50第16页/共48页扩展编码 Huffman操作码的主要缺点:操作码长度很不规整,硬件译码困难与地址码共同组成固定长的指令比较困难扩展编码法:由固定长操作码与Huffman编码法相结合形成减少平均长度方便译
7、码第17页/共48页上例:Huffman用四种长度 0,10,110,11100,11101,11110,11111 I1、I2、I3用两位:00、01、10 I4、I5、I6、I7用四位:1100、1101、1110、1111 平均码长=2.30 信息冗余量=0.0565=5.65%第18页/共48页HuffmanHuffman编码方法 写出每个事件出现频度找出两个时间出现频度最低的数字,相加形成新的频度重复(2),直到出现频度为1,建立Huffman树确定Huffman代码表 第19页/共48页说明 目的:平均码长减少。Huffma代码不唯一0,1对换合并次序 第20页/共48页 假设一台
8、模型计算机共有7种不同的操作码,如果采用固定长操作码需要3位。已知各种操作码在程序中出现的概率如下表,计算采用Huffman编码法的操作码平均长度,并计算固定长操作码和Huffman操作码的信息冗余量。利用Huffman树进行操作码编码的方法,又称为最小概率合并法。指令 I1概率 0.45I20.30I30.15I40.05I50.03I60.01I70.01举例1 1第21页/共48页把所有指令按照操作码在程序中出现的概率,自左向右从排列好。选取两个概率最小的结点合并成一个概率值是二者之和的新结点,并把这个新结点与其它还没有合并的结点一起形成新结点集合。在新结点集合中选取两个概率最小的结点进
9、行合并,如此继续进行下去,直至全部结点合并完毕。最后得到的根结点的概率值为1。每个结点都有两个分支,分别用一位代码“0”和“1”表示。第22页/共48页从根结点开始,沿尖头所指方向,到达属于该指令的概率结点,把沿线所经过的代码组合起来得到这条指令的操作码编码。解:采用Huffman编码法所得到的操作码的平均长度0.4510.3020.1530.0540.0350.0160.0161.97(位)熵H0.451.1520.301.7370.152.7370.054.3220.035.0590.016.6440.016.6441.95(位)第23页/共48页0.450.300.150.050.030
10、.010.011.000.550.250.100.050.02010101010101第24页/共48页指令序号概率Huffman编码法操作码长度I10.4501位I20.30102位I30.151103位I40.0511104位I50.03111105位I60.011111106位I70.0111111116位采用3位固定长操作码的信息冗余量为:第25页/共48页例如:把上例改为1-2-3-5扩展编码法,其操作码最短平均长度为:H=0.4510.3020.153(0.050.030.010.01)5=2.00信息冗余量为:又例如:把上例改为2-4等长扩展编码法,其操作码最短平均长度为:H=(
11、0.45+0.30+0.15)2+(0.05+0.03+0.01+0.01)4=2.20信息冗余量为:第26页/共48页序号概率1-2-3-5扩展编码I10.450I20.3010I30.15110I40.0511100I50.0311101I60.0111110I70.01111112-4等长扩展编码0001101100110111101111平均长度2.02.2信息冗余量2.5%11.4%7条指令的操作码扩展编码法第27页/共48页 举例2 2:二 十进制代码压缩 2位二十进制代码可表示099a b c d e f g h 0 0 0 00 0 0 00 0 0 10 0 0 10 0 1
12、 00 0 1 00 0 1 10 0 1 10 1 0 00 1 0 00 1 0 10 1 0 10 1 1 00 1 1 00 1 1 10 1 1 11 0 0 01 0 0 01 0 0 11 0 0 1第28页/共48页写出概率表第29页/共48页画出HuffmanHuffman代码树,写出代码表ae状态概率Huffman代码0 00.6401 00.161 10 10.161 0 01 10.041 0 1第30页/共48页写出压缩代码表ae=000 b c d f g hae=10 b=c=01 1 x d f g hae=01 f=g=01 0 0 d b c hae=11
13、b=c=f=g=0 1 0 1 d x x h第31页/共48页操作码等长扩展编码法 第32页/共48页第33页/共48页指令字格式的优化 为了不降低访存取指令的速度,按整数边界存储。操作数地址的位数从寻址范围看:越大越好 用各种方法,压缩操作码的位数通过采用多种不同的寻址方式、地址制、地址形式和地址码长度以及多种指令字长,将它们与可变长操作码的优化表示相结合,可构成冗余度尽可能少的指令字。第34页/共48页等长地址码发挥不出操作码优化表示的作用limax地址码地址码地址码空白浪费空白浪费liminli第35页/共48页在定长指令字内实现多种地址制地址码地址码地址码地址码地址码地址码操作码操作
14、码操作码第36页/共48页基础:初步设计的指令集。目标:减少指令长度,提高指令性能。优化原则:采用高概率优先思想,对高频率指令,缩短指令长度,提高效率,对低频率指令,主要满足功能要求;地址码长度富裕时,采用不同的寻址方式或不同的地址制,增加功能;地址码长度紧张时,采用特定的寻址方式或增加指令字长,满足功能。寻址方式中必须支持使用频率较高的寻址方式,相关参数必须满足90%以上的使用频率。第37页/共48页地址码的优化表示地址码个数的选择地址码个数通常有3个、2个、1个及个等4种情况评价指令中地址码个数应该取多少的标准主要有两个:程序存储容量,包括操作码和地址码程序执行速度,以程序执行过程中访问主
15、存的信息量代表第38页/共48页举例:计算一个典型的算术表达式 用三地址指令编写的程序如下MUL X,A,B;X(A)(B)ADD X,X,C;X(X)(C)SUB X,X,D;分子的计算结果在中ADD Y,E,F;计算分母,存入YDIV X,X,Y;最后结果在X单元中第39页/共48页用普通二地址指令编写的程序MOVE X,A;复制临时变量到X中MUL X,BADD X,CSUB X,D;X中存放分子运算结果MOVE Y,E;复制临时变量到Y中ADD Y,F;Y中存放分母运算结果DIV X,Y;最后结果在X单元中第40页/共48页用多寄存器结构的二地址指令编写程序MOVE R1,A;操作数a
16、取到寄存器R1中MUL R1,BADD R1,CSUB R1,D;R1中存放分子运算结果MOVE R2,EADD R2,F;R2中存放分母运算结果DIV R1,R2;最后结果在R1中MOVE X,R1;最后结果存入X中第41页/共48页用一地址指令编写的程序LOAD E;先计算分母,;取一个操作数到累加器中ADD F;分母运算结果在累加器中STORE X;保存分母运算结果到X中LOAD A;开始计算分子MUL BADD CSUB D;累加器中是分子运算结果DIV X;最后运算结果在累加器中STORE X;保存最后运算结果到X中第42页/共48页用0地址指令编写程序:ab*c+d-ef+/PUS
17、H A;操作数a压入堆栈PUSH B;操作数b压入堆栈MUL;栈顶两数相乘,结果压回堆顶PUSH CADDPUSH DSUB;栈顶是分子运算的结果PUSH EPUSH FADDDIV;栈顶是最后运算的结果POP X;保存最后运算结果第43页/共48页第44页/共48页第45页/共48页关于地址码个数结论对于一般商用处理机,采用多寄存器结构的二地址指令是最理想的。如果强调硬件结构简单,并且以连续运算(如求累加和等)为主,宜采用一地址结构。对于以向量、矩阵运算为主的处理机,最好采用三地址结构。RISC处理机采用三地址指令对于解决递归问题为主的处理机,宜采用零地址结构。编程容易、节省程序存储量。第46页/共48页缩短地址码长度的方法用一个短地址码表示一个大地址空间用间址寻址方式缩短地址码长度方法:在主存储器的低端开辟一个专门存放间接地址的区域用变址寻址方式缩短地址码长度变址寻址方式中的地址偏移量比较短,用寄存器间接寻址方式缩短地址码长度例如:16个间址寄存器,用4位地址码就能表示很长的逻辑地址空间。第47页/共48页感谢您的观看!第48页/共48页
限制150内