循环展开及指令调度Word格式文档下载.docx

上传人:b****1 文档编号:5272847 上传时间:2023-05-04 格式:DOCX 页数:14 大小:393.75KB
下载 相关 举报
循环展开及指令调度Word格式文档下载.docx_第1页
第1页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第2页
第2页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第3页
第3页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第4页
第4页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第5页
第5页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第6页
第6页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第7页
第7页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第8页
第8页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第9页
第9页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第10页
第10页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第11页
第11页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第12页
第12页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第13页
第13页 / 共14页
循环展开及指令调度Word格式文档下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

循环展开及指令调度Word格式文档下载.docx

《循环展开及指令调度Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《循环展开及指令调度Word格式文档下载.docx(14页珍藏版)》请在冰点文库上搜索。

循环展开及指令调度Word格式文档下载.docx

记录执行过程中各种相关发生的次数以及程序执行的总时钟周期数;

(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 

总时钟周期是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模板 > 商务科技

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

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