计算机系统结构循环级并行性,计算机系统结构第4章指令级并行与限制.ppt

计算机系统结构第4章指令级并行与限制

第四章 指令级并行及限制;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:LDF0,0(R1) ADDDF4,F0,F2 SD0(R1),F4 SUBIR1,R1,#8 BNEZR1,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 (

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值