计算机系统结构设计_第1页
计算机系统结构设计_第2页
计算机系统结构设计_第3页
计算机系统结构设计_第4页
计算机系统结构设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机系统结构课程设计 学 部 学科门类 专 业 班 级 学 号 姓 名 2010年 6月20日目 录第1章 引言1第2章 WinDLX指令集22.1 WinDLX指令集简介22.2 WinDLX指令集结构33章 WinDLX模拟器73.1 WinDLX模拟器的安装73.2 WinDLX模拟器的配置73.3 WinDLX运行及模拟结果分析7第4章 基于WinDLX模拟器的流水线模拟与分析144.1 控制相关144.2 数据相关174.3 指令调度20总结25参考文献26第1章 引言介绍指令集结构发展概述IBM资深专家年在介绍IBM 360系统时首先提出计算机系统结构的概念:计算机系统结构是程序

2、员所看到的计算机的属性,即概念性结构与功能特性。而指令集结构就是其中一个重要的属性,包括寻址规则、寄存器定义和指令系统等,它是CPU的外在表现形式,是计算机系统结构设计中的核心问题,是软硬件功能分配最主要的界面,是计算机系统结构设计者、系统软件设计者和系统硬件设计者所共同关注的问题。计算机系统结构研究得最多的是指令集结构。在ENIAC时代,基于累加器的指令集结构是在硬件资源十分有限的条件下必然的选择。1964年的IBM 360首次提出“有相同系统结构的计算机系列应该能够运行相同软件”的思想,是第一个基于寄存器的指令集结构。20世纪70年代初,DEC的VAX系列进入市场,VAX的设计目标是简化高

3、级语言的编译,其指令集结构是CISC的典范。20世纪80年代初,计算机系统结构开始从为语言提供高级硬件支持的方向转移出来,为了提高CPU执行指令的速度,RISC应运而生。Intel公司的80x86系列是在CISC/RISC的激烈竞争中坚持下来的唯一CISC。一方面保持二进制兼容性在商业上极具重要性,另一方面,微电子技术的迅速发展使得Intel可以在外部支持80x86指令集,而在内部使用RISC指令集。1995年左右,设计师开始使用高性能通用处理器和科学应用处理器的技术来设计DSP新的指令集结构,使其有更高的并行度,更快的时钟频率,更简单的类RISC指令集。20世纪90年代中有越来越多的设计人员

4、转向了SOC(system-on-chip),虽然这种芯片不是处理器,但处理器在很大程序上决定了芯片的性能。第2章 WinDLX指令集2.1 WinDLX指令集简介在DLX中,浮点指令的操作数来源于浮点寄存器,同时该浮点指令还指明了相应的操作是单精度浮点操作还是双精度浮点操作。  DLX的浮点操作有:加、减、乘、除。后缀D代表双精度浮点操作,而后缀F代表单精度浮点操作(如:ADDD、ADDF、SUBD、SUBF、MULTD、MULTF、DIVD、DIVF)。值得提出的是,DLX的浮点比较操作设置浮点状态寄存器中的位,如果比较结果为真,则将该位设置为1;如果比较结果为假,则将

5、该位设置为0。浮点分支指令BFPT和BFTF则测试该寄存器的值来决定分支是否成功。    另外,操作MOVF将一个单精度浮点寄存器的内容拷贝至另一个单精度浮点寄存器; MOVD则将一个双精度浮点寄存器的内容拷贝至另一双精度寄存器;MOVFP2I和MOVI2FP操作则是在一个浮点寄存器和通用寄存器之间移动数据,如果要将一个双精度浮点数移入两个通用寄存器则需要两条指令,另外DLX还提供了在32位浮点寄存器中进行整数乘除操作的指令。   对于测试统计结果中使用频率大于1的指令,以直方图的形式分别表示在 图2-1

6、 和 图2-2 中。    图2-1 指令使用频率的整型平均    图2-2 指令使用频率的符点平均2.2 WinDLX指令集结构 WinDLX的寄存器DLX有32个32位通用寄存器(GPR),名称为R0,R1,R2,R31。另外还有一组浮点寄存器(FPR),它们既可以用作32个32位单精度浮点寄存器,也可以奇偶配对来存储双精度浮点数,即F0和F1构成一个64位双精度浮点数寄存器,F2和F3构成一个64位双精度浮点数寄存器,以此类推。这些64位浮点数寄存器被命名为F0,F2,F28,F

7、30。这样,DLX就提供了32个32位单精度浮点数寄存器或16个64位双精度浮点数寄存器。R0的值永远是零。有这样一个特点,就可以利用这个寄存器由简单指令集来合成一组有用的操作。另外,还有一些特殊用途的寄存器,这些寄存器可以和通用寄存器交换数据,在GPR和FPR之间还可以用一些专门的指令来传送数据。 WinDLX的数据表示DLX能处理的数据类型有8位字节,16位半字、32位整数字以及32位单精度浮点数和64位双精度浮点数。DLX的操作主要面向32位整数以及32位或64位浮点数。字节或半字在被调入32位寄存器时,用零或者符号位填充32位寄存器的高位剩余部分,一旦被调入寄存器,它们将按照32位整数

8、的方式进行计算。 WinDLX的寻址方式DLX有五种寻址方式:寄存器寻址方式;立即数寻址方式;位移寻址方式;寄存器间接寻址方式;直接寻址方式。内存是用32位地址的高位字节先传格式的字节寻址的。支持上面提到的所有数据类型,与GPR有关的内存存取可以是一个字节、一个半字或一个字。FPR可以加载或存储单精度字或双精度字,所有内存访问必须是对准的。 WinDLX指令格式DLX采用定长操作码的指令字格式。指令字长度32位(单字长指令),其中操作码占6位。具体指令格式如图2.3所示。I型指令 65516操作码源寄存器目的寄存器立即数R型指令 6 555 11 操作码源寄存器1源寄存器2目的寄存器 功能码J

9、型指令 626操作码 与PC相加的偏移量图2-3 DLX指令格式I型指令格式主要用来对各种类型数的存取操作指令编码,含义为:从内存单元取数至目的寄存器;或把源寄存器中值存在内存单元中;或把立即数送到目的寄存器中。I型指令格式还用来为分支指令编码,包括条件分支指令,寄存器跳转指令,和寄存器跳转并连接指令。R型指令格式主要用来为各种算数/逻辑运算指令编码,含义为:源寄存器1和源寄存器2进行功能码指定的操作,并把结果存入目的寄存器中。R型指令还为读写特殊寄存器指令和寄存器之间的传送指令编码。J型指令格式主要用来为跳转并连接指令和陷阱与异常返回指令编码。 WinDLX指令集DLX指令大致可以分为4大类

10、:加载/存储、ALU操作、分支与跳转和浮点数操作。在DLX中,浮点指令的操作数来源于浮点寄存器,同时该浮点指令还指明了相应的操作是单精度浮点操作还是双精度浮点操作。    DLX的浮点操作有:加、减、乘、除。后缀D代表双精度浮点操作,而后缀F代表单精度浮点操作(如:ADDD、ADDF、SUBD、SUBF、MULTD、MULTF、DIVD、DIVF)。值得提出的是,DLX的浮点比较操作设置浮点状态寄存器中的位,如果比较结果为真,则将该位设置为1;如果比较结果为假,则将该位设置为0。浮点分支指令BFPT和BFTF则测试该寄存器的值来决定分支是否成功。另外,操

11、作MOVF将一个单精度浮点寄存器的内容拷贝至另一个单精度浮点寄存器; MOVD则将一个双精度浮点寄存器的内容拷贝至另一双精度寄存器;MOVFP2I和MOVI2FP操作则是在一个浮点寄存器和通用寄存器之间移动数据,如果要将一个双精度浮点数移入两个通用寄存器则需要两条指令,另外DLX还提供了在32位浮点寄存器中进行整数乘除操作的指令。所有的ALU指令都是寄存器-寄存器指令,包括简单的算术和逻辑操作:加、减、与、或、异或和移位,所有这些指令都支持立即数寻址方式,它带有一个16位的符号扩展立即数。控制由一组跳转指令和一组分支指令来处理。4种跳转指令由指定目的地址的两种方式和是否进行链接来区分

12、。有两种跳转指令把26位带符号的位移量加到PC中来确定目的地址;另外两种跳转指令通过指定包含目的地址的寄存器来确定目的地址。有两种跳转:简单跳转,跳转并链接(用于过程调用),后者把返回地址下一个顺序指令的地址放入寄存器R31。主要指令如下所示:表2-1 DLX的加载和存储指令指令举例指令名称 含义LW R1,30(R2)加载字RegsR132 Mem30+RegsR2 LW R1,1000(R0)加载字RegsR132 Mem1000+0 LB R1,40(R3)加载字节RegsR132(Mem40+RegsR30)# Mem40+RegsR3LBU R1,40(R3)加载无符号字节RegsR

13、132 0# Mem40+RegsR3 LH R1,40(R3)加载半字RegsR132(Mem40+RegsR30)# Mem40+RegsR3#Mem41+RegsR3 LF F0,50(R3)加载浮点数RegsF032 Mem50+RegsR3LD F0,50(R2)加载双精度浮点数RegsF0#RegsF164 Mem50+RegsR2SW R3,500(R4)存储字Mem500+RegsR432 RegsR3 SF F0,40(R3)存储浮点数Mem40+RegsR332 RegsF0 SD F0,40(R3)存储双精度浮点数Mem40+RegsR332 RegsF0 Mem44+R

14、egsR332 RegsF1 SH R3,502(R2)存储半字Mem502+RegsR216 RegsR3163SB R2,41(R3)存储字节Mem41+RegsR38 RegsR22431表2-2 DLX中算术/逻辑运算指令,带立即数或不带立即数指令举例指令名称含义ADD R1,R2,R3加RegsR1 RegsR2+RegsR3 ADDI R1,R2,#3加立即数RegsR1 RegsR2+3 LHI R1,#42加载立即数到高半字RegsR1 42 # 0 16SLLI R1,R2,#5逻辑左移立即数RegsR1 RegsR2<<5(R2内容左移5位) SLT R1,R2

15、,R3置小于if (RegsR2< RegsR3) RegsR1 1 else RegsR10表2-3 典型的DLX控制流指令指令举例指令名称含义J name跳转PC name (PC4)225)name(PC4)225) JAL name跳转并链接RegsR31 PC4; PC name (PC4)225)name(PC4)225)JALR R2寄存器跳转并链接RegsR31 PC4; PC RegsR2 JR R3寄存器跳转PC RegsR3BEQZ R4,name等于0时分支if (RegsR40) PC name(PC4)215)name(PC4)215)BNEZ R4,name

16、不等于0时分支if (RegsR4 !0) PC name(PC4)215)name(PC4)215)3章 WinDLX模拟器3.1 WinDLX模拟器的安装WinDLX是一个基于Windows的模拟器, 能够演示DLX流水线如何工作。WinDLX 包含windlx.exe和windlx.hlp文件。同时,还需要一些扩展名为.s的汇编代码文件。安装非常简单,我们在上提供WinDLX压缩包(224K),要将其解压到一个指定的目录,然后执行里面的windlx.exe即可。做实验时直接双击桌面上的WinDLX图标就可进入Windlx模拟器。3.2 WinDLX模拟器的配置WinDLX可以在多种配置下

17、工作。你可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。点击Configuration / Floating Point Stages(点击Configuration打开菜单,然后点击Floating Point Stages菜单项),选择如下标准配置: 表3-1 DLX流水线结构设置UnitCountDelayAddition Units:12Multiplication Units:15Division Units:119可以通过点击相应区域来改变设置。然后,点击OK返回主窗口。点击 Configuration/Memory Size ,可以设置模拟处理器的存储器大小。

18、应设置为0x8000,然后,点击OK返回主窗口。在Configuration 菜单中的其他三个配置也可以设置,它们是:Symbolic addresses,Absolute Cycle Count和Enable Forwarding。 点击相应菜单项后,在它的旁边将显示一个小钩。3.3 WinDLX运行及模拟结果分析1.启动和配置WinDLX:图3-1 WinDLX主窗口为了初始化模拟器, 点击File 菜单中的 Reset all 菜单项,弹出一个“ResetDLX”对话框。然后点击窗口中的“确认”按钮即可。2.运行程序以运行求阶乘程序fact.s为例, 选择File / Load Code

19、 or Data,按如下步骤操作,可将fact.s和input.s这两个程序装入主存:将fact.s和input.s拷贝到WinDLX目录, 点击fact.s 点击select按钮 点击input.s 点击select按钮 点击load按钮点击主窗口中的 Execution开始运行。也可以采用单步执行的方法,选择主窗口下的Execute/Single Cycle,或者直接按F7键也行。3.结果分析在主窗口的下面,可以看见六个子窗口的图标,它们分别为“Register”,“Code”,“Pipeline”,“Clock Cycle Diagram”,“Statistics” 和“Breakpoi

20、nts”。为了显示每个窗口的特性和用法,采用单步执行的方法。以下是运行程序前各个子窗口的初始界面:图3-2 运行程序前各个子窗口的初始界面1图3-3 运行程序前各个子窗口的初始界面2(1)Pipeline子窗口以下是按了三次F7键后Pipeline子窗口界面:图3-4 Pipeline子窗口结合图3-3分析可知,DLX执行指令的流水线是一个5段流水线,包括取指段(IF)、译码段(ID)、执行段(EX)、访存段(MEM)和写回段(WB)。DLX流水线的执行段分为4个单元,它们分别是:intEX单元(整数操作),faddEX单元(浮点加减),fmulEX(浮点乘法),fdivEX(浮点除法)。运行

21、前各个流水段中均是一个叉,表示没有任务进入流水线。第一次按下F7键时,可以看到,第一条指令在流水线的IF段,其他流水段空闲。再按下 F7 键,可以看到,第一条指令进入到流水线的ID段,第二条指令进入流水线的IF段。第三次按下F7键,即图3-5,可以看到,第一条指令进入intEX段开始执行,第二条指令进入ID开始译码(也就是此时流水线还不知道第二条指令是什么),第三条指令开始取(由PC指出要取的指令在0x00000108处)。之后随着F7键的按下流水线作出相应的变化。(2)Code子窗口以下是按下三次F7键后Code子窗口界面:图3-5 Code子窗口结合图3-3分析可知,加载前,Code子窗口

22、中没有指令,而图3-6是两个程序(fact.s和input.s)加载到内存中并单步执行三次后的情况。第一行最右边显示的是程序fact.s的第一条指令(addi r1,r0,0x1000),可以看出,变量Prompt被代替以0x1000,这说明变量Prompt在程序被加载到内存中的实际地址就是0x1000,也即程序的数据区被加载到内存地址0x1000开始的地方,这里“0x”表示十六进制。每条指令均占4个字节。$TEXT表示代码段的开始,也就是main所指的地址,由于每条指令均占4个字节,因此后续指令的地址依次为main+0x4,main+0x8等等。按下F7键,这时窗口中带有地址“$TEXT ”

23、的第一条指令变成黄色,再按下 F7 键,可以看到,第一条指令的颜色变成橘黄色,第二条指令变成黄色,这些不同颜色指明指令当前处于流水线的哪一段。第三次按下F7键,即图3-6,表明第一条指令进入intEX段开始执行,第二条指令进入ID开始译码,第三条指令开始取。(3)Clock Cycle Diagram子窗口以下是按下三次F7键后Clock Cycle Diagram子窗口界面:图3-6 Clock Cycle Diagram子窗口窗口中显示DLX流水线的时空图,第一条指令addi r1,r0,0x1000已经进行了3个周期,当前处在流水线的intEX段,第二条指令jal InputUnsign

24、ed进行了2个周期,当前处在流水线的ID段,第三条指令movi2fp f10,r1进行了1个周期,当前处在流水线的IF段。(4)Breakpoint子窗口图3-7 Breakpoint子窗口通过此窗口,你可以选择指令运行到流水线的哪一阶段时,程序停止执行。断点窗口指明在地址main+0x14,在译码段,指令movi2fp f11,r2设置了断点。断点可设可不设,也可设多个。(5)Statistics子窗口图3-9 Statistics子窗口该窗口提供了各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、 Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比,如

25、3 Cycle(s) excuted。(6)Register子窗口图3-9 Register子窗口Register子窗口记录各个寄存器内容的变化,如PC寄存器,其初值为0x00000100,当前值变为0x00000144。3运行结果图3-10 运行输出结果图由该图可知,程序的运行结果为2.4329e+18,点OK即可关闭窗口。第4章 基于WinDLX模拟器的流水线模拟与分析4.1 控制相关 实验目的通过本实验,加深对控制相关的理解,了解控制相关对CPU性能的影响。 实验内容1. 用WinDLX模拟器运行程序structure_d.s 。2. 通过模拟,找出存在控制相关的指令以及导致控制相关的部

26、件。3由控制相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。4论述控制相关对CPU性能的影响,讨论解决控制相关的方法。 实验原理控制相关是指因为程序的执行方向可能被改变而引起的相关。可能改变程序执行方向的指令通常有无条件转移、一般条件转移、复合条件转移、子程序调用、中断等。1 无条件转移无条件转移指令一般能够在指令分析器中就执行完成,因此一般对指令执行部件的工作不会造成影响。2 条件转移条件转移指令有两种:一般条件转移指令和复合条件转移指令。对于一般条件转移指令,相关最严重的情况发生在条件码是上一条指令产生的。转移不成功对先行控制器的影响不大,而转移成功时,不仅指令执行过程

27、变成了完全串行,而且要作废已经取到先行指令缓冲栈中的大量指令,从而白白增加了处理机与主存之间的通信量。对于复合条件转移指令,如果转移不成功,则就像一条普通的运算型指令一样。如果转移成功,不仅要全部或部分作废先行指令缓冲栈中已经预取的指令,还可能要作废先行操作栈中的指令和先行读数栈中的操作数,作废当前在指令分析器中分析的指令。 控制相关下WinDLX配置1Statistics 窗口:将待运行程序装入主存后按F5使程序完成执行,出现消息"Trap #0 occurred" 表明最后一条指令 trap 0 已经执行, Trap指令中编号“0”没有定义,只是用来终止程序。双击图标S

28、tatistics。Statistics 窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、 Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比。2WinDLX可以在多种配置下工作。你可以改变流水线的控制和时间要求、存储器大小和其他几个控制模拟的参数。点击 Configuration / Floating Point Stages(点击Configuration打开菜单,然后点击Floating Point Stages菜单项),选择如下标准配置:表4-1 标准配置CountDelayAddition Units:12Multiplication

29、Units:15Division Units:119点击 Configuration / Memory Size ,可以设置模拟处理器的存储器大小。应设置为0x8000,然后,点击 OK 返回主窗口。在 Configuration 菜单中的其他三个配置也可以设置,它们是:Symbolic addresses, Absolute Cycle Count 和 Enable Forwarding。 点击相应菜单项后, 在它的旁边将显示一个小钩。 实验过程1启动WinDLX模拟器.装入测试程序之前,先初始化WinDLX. 。为了初始化模拟器, 点击File 菜单中的 Reset all 菜单项,弹出一

30、个“ResetDLX”对话框。然后点击窗口中的“确认”按钮即可。2选择File / Load Code or Data,按如下步骤操作,将structure_d.s程序装入主存:将structure_d.s拷贝到WinDLX目录, 点击structure_d.s 点击select按钮 点击load按钮3点击主窗口中的 Execution开始运行。4为了找出存在控制相关的指令对以及导致控制相关的部件。我们起初采用单步执行操作,此后按F5即可。 结果分析1运行控制相关指令前的时空图:图4-1 Clock Cycle Diagram子窗口Clock Cycle Diagram子窗口中左边最后一条指令

31、”bnez r5,loop”即控制相关指令,该指令含义为GPR为0或不为0跳转,相对于PC+4的16位位移。2运行结果图4-2 运行结束后Clock Cycle Diagram子窗口图4-3 运行结束后Statistics子窗口由图六可知,由控制相关引起的暂停时钟周期数为9,暂停时钟周期数占总执行周期数的百分比为30.22%。由以上分析可知,控制相关明显加大了暂停周期数,降低了CPU的运行速度,对CPU的性能有一定的负面影响。所以应尽量减少控制相关的发生次数。4.2 数据相关 实验目的通过本实验,加深对数据相关的理解,掌握如何使用定向技术来减少数据相关带来的暂停。 实验内容1在不采用定向技术的

32、情况下(通过Configuration菜单中的Enable Forwarding选项设置),用WinDLX模拟器运行程序data_d.s 。2记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。3采用定向技术的情况下,用WinDLX模拟器再次运行程序data_d.s。 实验原理1三种数据相关:“先读后写”、“先写后读”和“写-写”相关。2在流水线中建立专用数据路径来避免数据相关的基本原理是数据重定向。 数据相关下WinDLX配置1Statistics 窗口:Statistics 窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、

33、 Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比。2Code窗口:双击图标Code,你将看到代表存储器内容的三栏信息,从左到右依次为:地址 (符号或数字)、命令的十六进制机器代码和汇编命令。点击主窗口中的 Execution开始模拟。在出现的下拉式菜单中,点击Single Cycle或按 F7键,模拟就向前执行一步。 实验过程1启动WinDLX模拟器.装入测试程序之前,先初始化WinDLX. 。为了初始化模拟器, 点击File 菜单中的 Reset all 菜单项,弹出一个“ResetDLX”对话框。然后点击窗口中的“确认”按钮即可。2选择File / Loa

34、d Code or Data,按如下步骤操作,将data_d.s程序装入主存:将data_d.s拷贝到WinDLX目录, 点击data_d.s 点击select按钮 点击load按钮3 程序data_d.s装入主存运行后按F5使程序完成执行,出现消息"Trap #0 occurred" 表明最后一条指令 trap 0 已经执行, 记录下Statistics 窗口中的各种统计数字:总的周期数和暂停数( RAW,Control,Trap,Total),然后关闭窗口。4点击 Configuration中的Enable Forwarding使定向无效(去掉小钩)运行程序到结束,再次

35、打开Statistics 窗口,记下新的统计数字。计算暂停时钟周期数占总执行周期数的百分比。5计算采用定向技术后性能提高的倍数。 结果分析图4-4 定向技术运行后Statistics 子窗口由上图可知,采用定向技术后,总周期数为128,RAW暂停数为30,Control暂停数为9,Trap暂停数为3,总暂停数为42。暂停时钟周期数占总执行周期数的比例为32.81%。图4-5 不定向技术运行后Statistics 子窗口采用不定向技术运行后,总周期数为202,RAW暂停数为104,Control暂停数为9,Trap暂停数为3,总暂停数为116。暂停时钟周期数占总执行周期数的比例为57.42%。由

36、以上运行结果分析可知,采用定向技术后,RAW引起的暂停数明显减少了,执行总周期数也大大降低,明显提高了设备的性能,性能提高的倍数为202/128=1.58。4.3 指令调度 实验目的通过本实验,加深对指令调度的理解,了解指令调度技术对CPU性能改进的好处。 实验内容1. 通过Configuration菜单中的“Floating point stages”选项,把除法单元数设置为3,把加法乘法除法的延迟设置为3个时钟周期。2. 用WinDLX模拟器运行调度前的程序sch-before.s 。记录程序执行过程中各相关发生的次数以及程序执行的总时钟周期数。3. 用WinDLX模拟器运行调度后的程序s

37、ch-after.s ,记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。4. 根据记录结果,比较调度前和调度后的性能。 实验原理在非线形流水线中,由于存在有反馈回路,当一个任务在流水线中流过时,在同一个功能段中可能要经过多次。因此不能每一个时钟周期向流水线输入一个新任务,否则会发生在同一个时刻有几个任务争用同一个功能段的情况。这种情况称为功能部件冲突,或流水线冲突。为了避免冲突,一般采用延迟输入新任务的方法。应该间隔多少时钟周期向流水线输入一个新任务就是非线性流水线的调度问题。非线性流水线调度就是找出一个最小的循环周期,按照这周期向流水线输入新任务,流水线的各个功能段都不会发生

38、冲突,而且流水线的吞吐率和效率最高。指令调度就是通过改变指令在程序中的位置,将相关指令之间的距离加大到不小于指令执行延迟的时钟数,就可以将相关指令转化为实际上无关指令。指令调度是循环展开的基础。 WinDLX配置点击 Configuration / Floating Point Stages(点击Configuration打开菜单,然后点击Floating Point Stages菜单项),选择如下标准配置:表4-2 标准配置1 CountDelayAddition Units:12Multiplication Units:15Division Units:119在本实验中,将标准配置更改为以

39、下配置:表4-3 标准配置1CountDelayAddition Units:13Multiplication Units:13Division Units:33 实验过程1通过Configuration菜单中的“Floating point stages”选项,把除法单元数设置为3,把加法乘法除法的延迟设置为3个时钟周期。2将程序sch-before.s装入主存后运行后,记录程序运行过程中各种相关发生的次数以及程序执行的总时钟周期数。3将程序sch-after.s装入主存后运行后,记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。4根据记录结果,比较调度前和调度后的性能。5论述指令调度对于提高CPU性能的意义。 结果分析观察以下的两个运行结果图以及将记录的各种数据相比较可知,调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论