ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:393.04KB ,
资源ID:2817593      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2817593.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(循环展开及指令调度.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

循环展开及指令调度.docx

1、循环展开及指令调度实验项目名称循环展开及指令调度实验目的及要求1. 加深对循环级并行性、指令调度技术、循环展开技术以及寄存器换名技术的理解;2. 熟悉用指令调度技术来解决流水线中的数据相关的方法;3. 了解循环展开、指令调度等技术对CPU性能的改进。实验内容1用指令调度技术解决流水线中的结构相关与数据相关(1) 用MIPS汇编语言编写代码文件*.s,程序中应包括数据相关与结构相关(假设:加法乘法除法部件各有2个,延迟时间都是3个时钟周期)(2) 通过Configuration菜单中的 “Floating point stages” 选项,把加法乘法除法部件的个数设置为2个,把延迟都设置为3个时

2、钟周期;(3) 用winMIPS64运行程序。记录程序执行过程中各种相关发生的次数、发生相关的指令组合,以及程序执行的总时钟周期数;(4) 采用指令调度技术对程序进行指令调度,消除相关;(5) 用winMIPS64运行调度后的程序,观察程序在流水线中的执行情况,记录程序执行的总时钟周期数;(6) 根据记录结果,比较调度前和调度后的性能。论述指令调度对于提高CPU性能的意义。2. 用循环展开、寄存器换名以及指令调度提高性能(1) 用MIPS汇编语言编写代码文件*.s,程序中包含一个循环次数为4的整数倍的简单循环;(2) 用winMIPS64运行该程序。记录执行过程中各种相关发生的次数以及程序执行

3、的总时钟周期数;(3) 将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。然后对新的循环体进行寄存器换名和指令调度;(4) 用winMIPS64运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;(5) 根据记录结果,比较循环展开、指令调度前后的性能。实验步骤1用指令调度技术解决流水线中的结构相关与数据相关1)代码:divff2,f5,f6divff1,f2,f6divff3,f1,f5divff0,f4,f7addff14,f0,f6addff15,f5,f7multff20,f4,f6multff21,f5,f72)设置运算部件个数以及

4、运算时钟周期数 图1 图2. Pipeline图以下为出现的数据相关 图3先写后读相关 图4由于只有两个除法部件,所以出现了功能部件的冲突。总的执行周期是38指令调度后代码:将无关指令放在一起执行,相关指令分开尽量避免数据相关divff2,f5,f6multff20,f4,f6multff21,f5,f7divff1,f2,f6addff15,f5,f7divff3,f1,f5divff0,f4,f7addff14,f0,f6图5.Pipeline图图6.Statistics图总执行时钟周期为35个。(6)指令调度后,数据相关减少了,总时钟周期数减少了,效能提高了。调度前的时钟周期数为38,调

5、度后的时钟周期数减少为35,加速比=38/35=1.082. 用循环展开、寄存器换名以及指令调度提高性能带循环指令代码:求四个1相加的和,结果存在r2中 .text .global main main: addi r1,r0,#4 addi r2,r0,#0Loop: sgt r3,r1,r0 bnez r3,Sub1 trap 0 Sub1: addi r2,r2,#1 subi r1,r1,#1 j Loop 结果:总时钟周期是42个,5 raw stalls,循环了4次,结果r2 =4 图7循环展开: 代码: .text .global main main: addi r1,r0,#4

6、addi r2,r0,#0 addi r2,r2,#1 subi r1,r1,#1 addi r2,r2,#1 subi r1,r1,#1 addi r2,r2,#1 subi r1,r1,#1 addi r2,r2,#1 subir1,r1,#1 trap0结果:总时钟周期是15个,0rawstalls,执行了4次,结果r2=4 图8原因的对比:是因为LOOP指令执行完后会有一个nop指令的延迟。 图9多Cache一致性:实验目的1、加深对多CACHE一致性的理解。2、进一步掌握解决多CACHE一致性的目录协议和监听协议的基本思想。3、掌握在各种情况下,目录协议和监听协议是如何工作的。给出进

7、行操作的类 型以及CACHE块状态的变化情况模拟器使用方法简介(目录式) 该模拟器模拟4个CPU(A、B、C、D)访存的工作过程。每个CPU中都有一个Cache,该Cache包含有4个块,其块地址为0-3。分布式存储器中有32个块,其块地址为0-31。每个块状态用色块表示,其中灰色为“无效”状态,淡青色为“共享”状态,橘红色为“独占”。主存中块的状态由其右边的目录项的颜色来表示,未缓冲状态由黄色来表示,其他两种状态同Cache块。 对于每一个CPU都可以指定所要进行的访问是读还是写(从列表中选),并在输入框中输入所要访问的主存块号,然后用鼠标单击在其右边的标有“”的按钮,模拟器就将开始演示该访

8、问的工作过程。 图10 模拟器简介(监听协议) 该模拟器模拟4个CPU(A、B、C、D)访存的工作过程。每个CPU中都有一个Cache,该Cache包含有4个块,其块地址为0-3。集中共享存储器中有32个块,其块地址为0-31。每个块状态用色块表示,其中灰色为“无效”状态,淡青色为“共享”状态,橘红色为“独占”。 对于每一个CPU都可以指定所要进行的访问是读还是写(从列表中选),并在输入框中输入所要访问的主存块号,然后用鼠标单击在其右边的标有“”的按钮,模拟器就将开始演示该访问的工作过程。 图11实验步骤(目录协议)对于以下访问序列,写出目录协议所进行的操作。所进行的访问目录协议所进行的操作C

9、PU A读第6块1读;2.不命中;3本地:向宿主结点发读不命中(A,6)消息;4.宿主:把数据块送给本地结点;5.共享集合为:ACPU B读第6块1 读;2.不命中;3. 本地:向宿主结点发读不命中(B,6)消息;4宿主:把数据块发送给本地结点;5.共享集合为:A+BCPU D读第6块1读;2.不命中;3. 本地:向宿主结点发读不命中(D,6)消息;4宿主:把数据块发送给本地结点;5.共享集合为:A,B+DCPU B写第6块1写;2.命中;3. 本地:向宿主结点发写命中(,6)消息,宿主:向远程结点A发作废(6)消息,宿主:向远程结点D发作废(6)消息; 4.共享集合为: BCPU C读第6块

10、1读;2.不命中;3. 本地:向宿主结点发读不命中(C,6)消息;4宿主:给远程结点发取数据块(6)的消息;5.远程:把数据块送给宿主结点;6.宿主:把数据块送给本地结点;7.共享集合为:B+CCPU D写第20块1写;2.不命中;3. 本地:向宿主结点发写不命中(D,20)消息;4宿主:把数据块发送给本地结点; 5.共享集合为: DCPU A写第20块1写;2.不命中;3. 本地:向宿主结点发写不命中(A,20)消息;4宿主:给远程结点发送取并作废(20)消息;5.远程:把数据块送给宿主结点把Cache中的该块作废;6.宿主:把数据块送给本地结点;7.共享集合为:ACPU D写第6块1写;2

11、.不命中;3. 本地:向宿主结点发写不命中(D,6)消息;4.宿主:向远程结点发作废(6)消息;5.宿主:向远程结点发作废(6)消息;6.宿主:把数据块送给本地结点;7.共享集合为:DCPU A读第12块1写;2.不命中;3.本地:向被替换块的宿主结点发写回并修改共享集(A,20)消息;4.本地:向宿主结点发写不命中(A,20)消息;5.宿主:把数据块送给本地结点;6.共享集合为:A实验步骤(监听协议)对于以下访问序列,写出监听协议所进行的操作。所进行的访问是否发生替换是否发生写回监听协议所进行的操作CPU A读第5块否否读;不命中;读不命中;数据送回CPU B读第5块否否读;不命中;读不命中

12、;数据送回CPU C读第5块否否读;不命中;读不命中;数据送回CPU B写第5块否发生写,命中;作废A,C中的数据5,CPU D读第5块发生否读;不命中;读不命中;写回;数据送回CPU B写第21块发生发生写;不命中;写不命中;用数据21替换原来的数据5CPU A写第23块否发生写;不命中;写不命中;写回;数据送回CPU C写第23块发生发生写;不命中;写不命中;替换;写回;数据送回CPU B读第29块否否读;不命中;读不命中;数据送回CPU B写第5块替换发生写;不命中;写不命中;替换;写回;数据送回实验环境windows实验结果与分析a)指令调度技术可以明显的优化指令执行的效率,通过指令调度使得功能部件被尽可能的充分使用,从而进一步加强指令执行的效率;b)循环在执行时会出现不同循环次数的执行过程中出现相关,导致数量增加,通过寄存器换名等方法,使得这种相关性数量下降。教师评语注:可根据实际情况加页

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2