循环展开及指令调度Word文档格式.docx
- 文档编号:18569872
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:14
- 大小:393.13KB
循环展开及指令调度Word文档格式.docx
《循环展开及指令调度Word文档格式.docx》由会员分享,可在线阅读,更多相关《循环展开及指令调度Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;
(3)将循环展开3次,将4个循环体组成的代码代替原来的循环体,并对程序做相应的修改。
然后对新的循环体进行寄存器换名和指令调度;
(4)用winMIPS64运行修改后的程序,记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;
(5)根据记录结果,比较循环展开、指令调度前后的性能。
实验步骤
1)
代
码:
divf
f2,f5,f6
f1,f2,f6
f3,f1,f5
f0,f4,f7
addf
f14,f0,f6
f15,f5,f7
multf
f20,f4,f6
f21,f5,f7
2)设置运算部件个数以及运算时钟周期数
图1
图2.Pipeline图
以下为出现的数据相关
图3
先写后读相关
图4
由于只有两个除法部件,所以出现了功能部件的冲突。
总的执行周期是38指令调度后代码:
将无关指令放在一起执行,相关指令分开尽量避免数据相关
f2,f5,f6
f21,f5,f7
f1,f2,f6
f3,f1,f5
f0,f4,f7
f14,f0,f6
图5.Pipeline图
图6.Statistics图
总执行时钟周期为35个。
(6)指令调度后,数据相关减少了,总时钟周期数减少了,效能提高了。
调度前的时钟周期数为38,调度后的时钟周期数减少为35,加速比
=
38/35=
1.08
带循环指令
代码:
求四个1相加的和,结果存在r2中
.text
.globalmain
main:
addir1,r0,#4
addir2,r0,#0
Loop:
sgtr3,r1,r0
bnezr3,Sub1
trap0Sub1:
addir2,r2,#1
subir1,r1,#1
jLoop
结果:
总时钟周期是42个,5rawstalls,循环了4次,结果
r2=4
图7
循环展开:
addir1,r0,#4
addir2,r0,#0
addir2,r2,#1
subir1,r1,#1
subi
r1,r1,#1
trap
0
总时钟周期是15个,0
raw
stalls,执行了4次,结果r2
4
图8
原因的对比:
是因为LOOP指令执行完后会有一个nop指令的延迟。
图9
多Cache一致性:
实验目的
1、加深对多CACHE一致性的理解。
2、进一步掌握解决多CACHE一致性的目录协议和监听协议的基本思想。
3、掌握在各种情况下,目录协议和监听协议是如何工作的。
给出进行操作的类
型以及CACHE块状态的变化情况
模拟器使用方法简介(目录式)
该模拟器模拟4个CPU(A、B、C、D)访存的工作过程。
每个CPU中都有一个Cache,该Cache包含有4个块,其块地址为0-3。
分布式存储器中有32个块,其块地址为0-31。
每个块状态用色块表示,其中灰色为“无效”状态,淡青色为“共享”状态,橘红色为“独占”。
主存中块的状态由其右边的目录项的颜色来表示,未缓冲状态由黄色来表示,其他两种状态同Cache块。
对于每一个CPU都可以指定所要进行的访问是读还是写(从列表中选),并在输入框中输入所要访问的主存块号,然后用鼠标单击在其右边的标有“↓”的按钮,模拟器就将开始演示该访问的工作过程。
图10
模拟器简介(监听协议)
集中共享存储器中有32个块,其块地址为0-31。
图11
实验步骤(目录协议)
对于以下访问序列,写出目录协议所进行的操作。
所进行的访问
目录协议所进行的操作
CPUA读第6块
1.读;
2.不命中;
3本地:
向宿主结点发读不命中(A,6)消息;
4.宿主:
把数据块送给本地结点;
5.共享集合为:
{A}
CPUB读第6块
1.读;
2.不命中;
3.本地:
向宿主结点发读不命中(B,6)消息;
4.宿主:
把数据块发送给本地结点;
{A}+{B}
CPUD读第6块
1.读;
向宿主结点发读不命中(D,6)消息;
{A,B}+{D}
CPUB写第6块
1.写;
2.命中;
向宿主结点发写命中(
,6)消息,宿主:
向远程结点A发作废(6)消息,宿主:
向远程结点D发作废(6)消息;
4.共享集合为:
{B}
CPUC读第6块
1读;
向宿主结点发读不命中(C,6)消息;
给远程结点发取数据块(6)的消息;
5.远程:
把数据块送给宿主结点;
6.宿主:
7.共享集合为:
{B}+{C}
CPUD写第20块
向宿主结点发写不命中(D,20)消息;
5.共享集合为:
{D}
CPUA写第20块
向宿主结点发写不命中(A,20)消息;
给远程结点发送取并作废(20)消息;
把数据块送给宿主结点把Cache中的该块作废;
CPUD写第6块
向宿主结点发写不命中(D,6)消息;
向远程结点发作废(6)消息;
5.宿主:
{D}
CPUA读第12块
3.本地:
向被替换块的宿主结点发写回并修改共享集(A,20)消息;
4.本地:
向宿主结点发写不命中(A,20)消息;
6.共享集合为:
实验步骤(监听协议)
对于以下访问序列,写出监听协议所进行的操作。
是否发生替换
是否发生写回
监听协议所进行的操作
CPUA读第5块
否
读;
不命中;
读不命中;
数据送回
CPUB读第5块
CPUC读第5块
CPUB写第5块
发生
写,命中;
作废A,C中的数据5,
CPUD读第5块
写回;
CPUB写第21块
写;
写不命中;
用数据21替换原来的数据5
CPUA写第23块
CPUC写第23块
替换;
CPUB读第29块
替换
实验环境
windows
实验结果与
分析
a)指令调度技术可以明显的优化指令执行的效率,通过指令调度使得功能部件被尽可能的充分使用,从而进一步加强指令执行的效率;
b)
循环在执行时会出现不同循环次数的执行过程中出现相关,导致数量增加,通过寄存器换名等方法,使得这种相关性数量下降。
教师评语
注:
可根据实际情况加页
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 展开 指令 调度