《DLX指令集结构》由会员分享,可在线阅读,更多相关《DLX指令集结构(29页珍藏版)》请在金锄头文库上搜索。
1、129 2.6 DLX指令集结构DLXDLX是一种多元未饱和型指令集结构。是一种多元未饱和型指令集结构。DLXDLX指令集结构的指令集结构的设计思想:设计思想:l 具有一个简单的具有一个简单的Load/StoreLoad/Store指令集;指令集;l 注重指令流水效率;注重指令流水效率;l 简化指令的译码;简化指令的译码;l 高效支持编译器。高效支持编译器。 第二章 计算机指令集结构设计2292.6.1 DLX指令集结构1. DLX中的寄存器 (1) 32(1) 32个通用寄存器个通用寄存器 命名:命名:R0R0、R1R1、R31R31 长度:长度:3232位位 寄存器寄存器R0R0的值总是为
2、的值总是为0 0。 (2) (2) 3232个浮点寄存器个浮点寄存器 命名:命名:F0F0、F1F1、F31F31 长度:长度:3232位位 ( (用来保存用来保存3232位的单精度浮点数位的单精度浮点数 )2.6 DLX指令集结构329 6464位双精度浮点数位双精度浮点数 相邻两个浮点寄存器奇偶对相邻两个浮点寄存器奇偶对F Fi iF Fi i+1+1 (i = 0,2,4,i = 0,2,4,30,30) 命名命名: : F0F0、F2F2、F28F28、F30F30 (3) (3) 一些特殊的寄存器一些特殊的寄存器 (比如用来保存浮点操作结果信息的浮点状态寄存器)(比如用来保存浮点操作
3、结果信息的浮点状态寄存器) 可以和通用寄存器相互进行数据传送。可以和通用寄存器相互进行数据传送。2.6 DLX指令集结构4292. DLX的数据类型 DLXDLX提供了多种长度的整型数据和浮点数据。提供了多种长度的整型数据和浮点数据。 (1) (1)整型数据整型数据 有有8 8位、位、1616位和位和3232位多种长度。位多种长度。 ( (当当8 8位和位和1616位整型数据载入到寄存器中时,位整型数据载入到寄存器中时, 用用0 0或数据的符号位来填充或数据的符号位来填充3232位通用寄存器位通用寄存器 中的剩余位。中的剩余位。) ) (2) (2)浮点数据浮点数据 有有3232位单精度浮点数
4、和位单精度浮点数和6464位双精度浮点数。位双精度浮点数。 浮点数据表示采用的是浮点数据表示采用的是IEEE 754IEEE 754标准。标准。2.6 DLX指令集结构5293 3. DLX的寻址方式和数据传送 (1)(1)寻址方式寻址方式l 寄存器寻址寄存器寻址l 立即值寻址立即值寻址l 偏移寻址偏移寻址l 寄存器间接寻址寄存器间接寻址 (2) (2) 寄存器寻址字段的大小为寄存器寻址字段的大小为5 5位位,用来表示,用来表示3232个个 通用寄存器或浮点寄存器。通用寄存器或浮点寄存器。 (3) (3) 存储器地址采用的是高端字节表示顺序,存存储器地址采用的是高端字节表示顺序,存 储器按字节
5、寻址,其地址宽度为储器按字节寻址,其地址宽度为3232位位。2.6 DLX指令集结构6294. DLX的指令格式 寻址方式编码在操作码中。寻址方式编码在操作码中。 指令的字长指令的字长3232位位,其中用,其中用6 6位位表示操作码。表示操作码。(4) (4) 通过寄存器(通用寄存器和浮点寄存器)和存通过寄存器(通用寄存器和浮点寄存器)和存 储器之间的数据传送操作完成对存储器的访问。储器之间的数据传送操作完成对存储器的访问。2.6 DLX指令集结构各种类型指令的格式8295.DLX中的操作 (1) (1) 四种类型的操作四种类型的操作l LoadLoad和和StoreStore操作操作l AL
6、UALU操作操作l 分支和跳转操作分支和跳转操作l 浮点操作浮点操作 (2) (2) 约定约定 (1) (1) 符号符号“”: : 数据传送操作数据传送操作 其后附带一个下标其后附带一个下标n n,也即也即“n n” 表示传表示传送送 一个一个n n位数据。位数据。 (2) (2) 符号符号“#”: : 两个域的串联操作两个域的串联操作2.6 DLX指令集结构929(3) (3) 域的下标:域的下标:表明从该域中选择某一位。表明从该域中选择某一位。l 域中位的标记是从最高位开始标记,并且域中位的标记是从最高位开始标记,并且 起始标记为起始标记为0 0。l 下标可以是一个单独的数字。下标可以是一
7、个单独的数字。l 如如 RegsRegsR4R40 0 : :选择寄存器选择寄存器R4R4中内容的符号位。中内容的符号位。l 下标也可以是一个范围。下标也可以是一个范围。l 如如 RegsRegsR3R324.3124.31 : :选择寄存器选择寄存器R3R3中内容中内容 的最低一个字节。的最低一个字节。(4) (4) 上标:上标:表示复制一个域。表示复制一个域。 如如 0 02424可以得到一个可以得到一个2424位全为位全为0 0的一个域。的一个域。2.6 DLX指令集结构1029(5) (5) 变量变量MemMem:表示存储器中的一个数组,表示存储器中的一个数组, 存储器按照字节寻址。存
8、储器按照字节寻址。举例举例R8R8和和R10R10:3232位寄存器位寄存器RegsRegsR10R1016.31 16.31 1616( (MemMem RegsRegsR8R80 0) )8 8 # Mem Mem RegsRegsR8R8的含义。的含义。3. DLX中的四种操作类型 (1) (1) LoadLoad和和StoreStore操作操作 2.6 DLX指令集结构指令实例指令名称含 义LW R1, 30 (R2)载入整型字RegsR1 32 Mem30+RegsR2LW R1, 1000 (R0)载入整型字RegsR1 32 Mem1000+0LB R1, 40 (R3)载入字节
9、RegsR1 32 (Mem40+RegsR30)24 # Mem40+RegsR3LBU R1, 40 (R3)载入无符号字节RegsR1 32 024 # Mem40+RegsR3LH R1, 40 (R3)载入整型半字RegsR1 32 (Mem40+RegsR30)16 # Mem40+RegsR3 # Mem41+RegsR3LF F0, 50 (R3)载入单精度浮点RegsF0 32 Mem50+RegsR3LD F0, 50 (R2)载入双精度浮点RegsF0 # RegsF1 64 Mem50+RegsR2SW 500 (R4), R3储存整型字Mem500+RegsR4 32
10、 RegsR3SF 40 (R3), F0储存单精度浮点Mem40+RegsR3 32 RegsF0SD 40 (R3), F0储存双精度浮点Mem40+RegsR3 32 RegsF0Mem44+RegsR3 32 RegsF1SH 502 (R2), R31储存整型半字Mem502+RegsR2 16 RegsR3116.31SB 41 (R3), R2储存整型字节Mem41+RegsR3 8 RegsR224.31DLX中Load和Store指令实例 1229(2) (2) ALUALU操作操作l 简单的算术和逻辑运算简单的算术和逻辑运算l 寄存器比较指令(寄存器比较指令( , , ,
11、, , )指令实例指令名称 含 义Add R1, R2, R3加RegsR1 RegsR2 + RegsR3ADDI R1, R2, #3和立即值相加RegsR1 RegsR2 + 3LHI R1, #42载入高位立即值RegsR1 42 # 016SLLI R1, R2, #5逻辑左移的立即值形式RegsR1 RegsR2 5SLT R1, R2, R3设置小于if (RegsR2 RegsR3) RegsR1 1 else RegsR1 0ALU指令实例 2.6 DLX指令集结构1329(3) (3) 分支和跳转操作分支和跳转操作 根据描述目标地址的方法和是否链接可以将根据描述目标地址的方
12、法和是否链接可以将 跳转操作指令分为四种类型。跳转操作指令分为四种类型。 其中:其中:l 两种类型的跳转指令用带符号位的两种类型的跳转指令用带符号位的2626位位 偏移量加上程序计数器的值来确定跳转偏移量加上程序计数器的值来确定跳转 的目标地址;的目标地址;l 另外两种类型的跳转指令则指定一个寄另外两种类型的跳转指令则指定一个寄 存器,由寄存器中的内容决定跳转的目存器,由寄存器中的内容决定跳转的目 标地址。标地址。2.6 DLX指令集结构1429 跳转有两种类型跳转有两种类型l 简单跳转简单跳转l 跳转并链接跳转并链接(用于过程调用)(用于过程调用) 返返回回一一个个地地址址,也也即即将将下下
13、一一条条顺顺序序指指令令 地址(返回地址)保存在寄存器地址(返回地址)保存在寄存器R31R31中。中。 所有分支指令均是条件分支指令。所有分支指令均是条件分支指令。 分分支支目目标标地地址址由由一一个个带带符符号号的的2626位位偏偏移移量量加加 上程序计数器的值来确定。上程序计数器的值来确定。2.6 DLX指令集结构1529指令实例指令名称含 义J name跳转PC name; (PC+4)-225) name (PC+4)+225)JAL name跳转并链接RegsR31 PC+4; PC name;(PC+4)-225) name (PC+4)+225)JALR R2寄存器型跳转并链接R
14、egsR31 PC+4; PC RegsR2;JR R3寄存器型跳转PC RegsR3;BEQZ R4 ,name“等于0”分支if (RegsR4=0) PC name;(PC+4)-215) name (PC+4)+215)BNEZ R4 , name“不等于0”分支if (RegsR4!=0) PC name;(PC+4)-215) name (PC+4)+215)典型的分支和跳转指令 2.6 DLX指令集结构1629(4) (4) 浮点操作浮点操作 浮点操作:浮点操作:加、减、乘、除。加、减、乘、除。 (后缀(后缀D D:双精度浮点操作双精度浮点操作 后缀后缀F F:单精度浮点操作)单
15、精度浮点操作) 下下表表列出了列出了DLXDLX所有指令及其含义。所有指令及其含义。 各种指令使用频率测试统计结果。各种指令使用频率测试统计结果。 (SPECint92SPECint92和和SPECfp92SPECfp92基准程序)基准程序)2.6 DLX指令集结构1729DLX中的所有指令及其含义指令类型操作码含 义数据传送LB,LBU,SB载入字节,载入无符号字节,储存字节LH,LHU,SH载入半字,载入无符号半字,储存半字LW,SW载入字,储存字LF,LD,SF,SD载入单精度浮点,载入双精度浮点,储存单精度浮点,储存双精度浮点MOVI2S,MOVS2I将通用寄存器中的内容移入特殊寄存器
16、,将特殊寄存器中的内容移入通用寄存器MOVF,MOVD将一个单精度/双精度浮点寄存器的内容拷贝到另一个单精度/双精度浮点寄存器MOVFP2I,MOVI2FP将32位浮点寄存器中的内容移入整型寄存器,将32位整型寄存器中的内容移入浮点寄存器2.6 DLX指令集结构1829指令类型操作码含 义算术/逻辑ADD,ADDI,ADDU,ADDUI带符号加,带符号立即值加,无符号加,无符号立即值加SUB,SUBI,SUBU,SUBUI带符号减,带符号立即值减,无符号减,无符号立即值减MULT,MULTU,DIV,DIVU带符号乘,无符号乘,带符号除,无符号除AND,ANDI与,和立即值与OR,ORI,XO
17、R,XORI或,和立即值或,异或,和立即值异或LHI载入高位立即值SLL,SRL,SRA,SLLI,SRLI,SRAI包含了立即值(S_I)和变量(S_)的移位操作,移位有:逻辑左移,逻辑右移和算术右移S_,S_I设置条件,“_”可以是LT,GT,LE,GE,EQ,NE2.6 DLX指令集结构1929指令类型操作码含 义控制BEQZ,BNEZ根据指定通用寄存器的内容等于/不等于0分支BFPT,BFPF测试浮点状态寄存器中的比较位为真/假进行分支J,JR跳转,基于寄存器的跳转JAL,JALR跳转并链接,基于寄存器的跳转并链接TRAP转换到操作系统RFE从异常恢复用户模式2.6 DLX指令集结构2
18、029指令类型操作码含 义浮点ADDD,ADDF双精度浮点加,单精度浮点加SUBD,SUBF双精度浮点减,单精度浮点减MULTD,MULTF双精度浮点乘,单精度浮点乘DIVD,DIVF双精度浮点除,单精度浮点除CVTF2D,CVTF2I,CVTD2F,CTD2I,CVTI2F,CVTI2D转换指令,CVTx2y表示从类型x转换到类型y,其中x和y可以是I(整型)、D(双精度浮点)、F(单精度浮点)_D,_F双精度浮点和单精度浮点比较,“_”可以是LT、GT、LE、GE、EQ、NE,根据比较结果设置浮点状态寄存器中的位2.6 DLX指令集结构2129基于SPECint92基准程序集的指令使用频率
19、测量统计结果指令compresseqntottEspressogcc(cc1)li整型平均载入19.8%30.6%20.9%22.8%31.3%26%存储5.6%0.6%5.1%14.3%16.7%9%加14.4%8.5%23.8%14.6%11.1%14%减1.8%0.3%0.5%0%乘0.1%0%除0%比较15.4%26.5%8.3%12.4%5.4%13%载入立即值8.1%1.5%1.3%6.8%2.4%3%2.6 DLX指令集结构2229指令compresseqntottEspressogcc(cc1)li整型平均条件分支17.4%24.0%15.0%11.5%14.6%16%无条件分
20、支1.5%0.9%0.5%1.3%1.8%1%调用0.1%0.5%0.4%1.1%3.1%1%返回,跳转0.1%0.5%0.5%1.5%3.5%1%移位6.5%0.3%7.0%6.2%0.7%4%与2.1%0.1%9.4%1.6%2.1%3%或6.0%5.5%4.8%4.2%6.2%5%其它(异或,非)1.0%2.0%0.5%0.1%1%2.6 DLX指令集结构2329指令compresseqntottEspressogcc(cc1)li整型平均载入浮点数0%储存浮点数0%浮点加0%浮点减0%浮点乘0%浮点除0%浮点比较0%浮点寄存器移动0%其它浮点操作0%2.6 DLX指令集结构基于SPEC
21、fp92基准程序集的指令使用频率测量统计结果指令doducearhydro2dmdljdp2su2cor整型平均载入1.4%0.2%0.1%1.1%3.6%1%储存1.3%0.1%0.1%1.3%1%加13.6%13.6%10.9%4.7%9.7%11%减0.3%0.2%0.7%0%乘0%除0%比较3.2%3.1%1.2%0.3%1.3%2%载入立即值2.2%0.2%2.2%0.9%1%2529指令doducearhydro2dmdljdp2su2cor整型平均条件分支8.0%10.1%11.7%9.3%2.6%8%无条件分支0.9%0.4%0.4%0.1%0%调用0.5%1.9%0.3%1%
22、返回,跳转0.6%1.9%0.3%1%移位2.0%0.2%2.4%1.3%2.3%2%与0.4%0.1%0.3%0%或0.2%0.1%0.1%0.1%0%其它(异或,非)0%2.6 DLX指令集结构2629指令doducearhydro2dmdljdp2su2cor整型平均载入浮点数23.3%19.8%24.1%25.9%21.6%23%储存浮点数5.7%11.4%9.9%10.0%9.8%9%浮点加8.8%7.3%3.6%8.5%12.4%8%浮点减3.8%3.2%7.9%10.4%5.9%6%浮点乘12.0%9.6%9.4%13.9%21.6%13%浮点除2.3%1.6%0.9%0.7%1%浮点比较4.2%6.4%10.4%9.3%0.8%6%浮点寄存器移动2.1%1.8%5.2%0.9%1.9%2%其它浮点操作2.4%8.4%0.2%0.2%1.2%2%2.6 DLX指令集结构2729动画演示动画演示2.6 DLX指令集结构2829动画演示动画演示2.6 DLX指令集结构29292.6.2 DLX指令集结构效能分析 DLXDLX指指令令集集结结构构的的指指令令格格式式、寻寻址址方方式式和和操操作作都非常简单。都非常简单。2.6 DLX指令集结构