- 1、本文档共145页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章概述§1计算机系统和系统结构.ppt
第四章 流水线技术;4.1 指令级并行的概念 ;4.1.1 指令级并行;3、循环级并行:使一个循环中的不同循环体并行执行。
开发循环体中存在的并行性
最常见、最基本
是指令级并行研究的重点之一
例如,考虑下述语句:
for (i=1; i=500; i=i+1)
a[i]=a[i]+s;
每一次循环都可以与其他的循环重叠并行执行;
在每一次循环的内部,却没有任何的并行性。 ;4、最基本的开发循环级并行的技术
循环展开(loop unrolling)技术
采用向量指令和向量数据表示;4.1.2 相关性对指令级并行的影响;例4-1
对于下面的源代码,
for (i=1; i=1000; i++)
x[i] = x[i] + s;
(Ⅰ)转换成DLX汇编语言,在不进行指令调度和进行指令调度两种情况下,分析代码一次循环的执行时间。
(Ⅱ)编译过程进行分析,来仔细考察换名的过程。
备注:本章使用的浮点流水线的延迟如上表所示;解: (Ⅰ)
(1) 变量分配寄存器
整数寄存器R1:循环计数器,初值为向量
中最高端地址元素的地址。
浮点寄存器F2:保存常数S。
假定最低端元素的地址为8。
(2) DLX汇编语言后的程序
Loop: LD F0,0(R1)
ADDD F4,F0,F2
SD 0(R1),F4
SUBI R1,R1,#8
BNEZ R1,Loop ;(3) 程序执行的实际时钟;(4) 指令调度以后,程序的执行情况;(Ⅱ);(2) 编译器可以通过对相关链上存储器访问偏移量的直接调整,将前3条SUBI指令消除掉,从而得到下面一个14条指令构成的指令序列,如下所示:
Loop: LD F0 , 0(R1)
ADD.D F4 , F0 , F2
SD 0(R1) , F4
LD F0 , -8(R1)
ADD.D F4 , F0 , F2
SD -8(R1) , F4
LD F0 , -16(R1)
ADD.D F4 , F0 , F2
SD -16(R1) , F4
LD F0 , -24(R1)
ADD.D F4 , F0 , F2
SD -24(R1) , F4
SUBI R1 , R1 , #32
BNEZ R1 , Loop ;(3) 通过寄存器换名,消除名相关。得到下面的指令序列,如下所示:
Loop: LD F0 , 0(R1)
ADD.D F4 , F0 , F2
SD 0(R1) , F4
LD F6 , -8(R1)
ADD.D F8 , F6 , F2
SD -8(R1) , F8
LD F10 , -16(R1)
ADD.D F12 , F10 , F2
SD -16(R1) , F12
LD F14 , -24(R1)
ADD.D F16 , F14 , F2
SD -24(R1) , F16
SUBI R1 , R1 , #32
BNEZ R1 , Loop;再来看一个控制相关的例子。 ;控制相关会带来两方面的限制:;再考察例4-1,假设循环展开时,循环控制分支指令没有去除,则指令序列如下所示: ;由于上述指令段中BEQZ R1 , Exit,BEQZ R1 , Exit,BEQZ R1 , Exit三条分支指令的存在,引起控制相关,导致其后的4条指令不能跨越分支指令进行调度,即不同循环遍次里的指令不能够跨越循环遍次进行调度。 ;4.1.3支持指令级并行的基本编译技术;1.检测并提高循环级并行; 在这个循环程序中,用到了两次x[i],它们之间即存在数据相关,但这是循环体内的相关而不是体间相关。在相邻的两次对i的引用上,存在体间相关,但这种相关包含规约变量,很容易识别和消除。;循环体间相关常常以重现的形式出现的:
for (i=2;1
文档评论(0)