41指令级并行的概念课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《41指令级并行的概念课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 41 指令 并行 概念 课件
- 资源描述:
-
1、4.1指令级并行的概念当指令之间不存在相关时,它们在流水线中是可以当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行的。这种指令序列中存在的潜在重叠起来并行执行的。这种指令序列中存在的潜在并行性称为并行性称为指令级并行指令级并行。(Instruction-Level Parallelism,简记为ILP)本章研究:本章研究:如何通过各种可能的技术,获得更多的如何通过各种可能的技术,获得更多的指令级并行性。指令级并行性。(硬件技术和软件技术)(硬件技术和软件技术)必须要硬件技术和软件技术互相配合,才能够最大必须要硬件技术和软件技术互相配合,才能够最大限度地挖掘出程序中存在的指令级并行。
2、限度地挖掘出程序中存在的指令级并行。第四章 指令级并行1.1.流水线处理器的实际流水线处理器的实际CPICPICPICPI流水线流水线 =CPI=CPI理想理想 +各类停顿周期数的总和各类停顿周期数的总和 流水线的理想流水线的理想CPICPI是流水线的最大流量。是流水线的最大流量。各类停顿包括:各类停顿包括:结构相关停顿:是由于两条指令使用同一结构相关停顿:是由于两条指令使用同一个功能部件而导致的停顿。个功能部件而导致的停顿。控制相关停顿:是由于指令流的改变(如控制相关停顿:是由于指令流的改变(如分支指令)而导致的停顿。分支指令)而导致的停顿。RAWRAW、WARWAR和和WAWWAW停顿:由
3、数据相关造成的。停顿:由数据相关造成的。减少其中的任何一种停顿,都可以有效地减少减少其中的任何一种停顿,都可以有效地减少CPICPI,从而提高流水线的性能。,从而提高流水线的性能。4.1 指令级并行的概念2.2.本章要研究的技术以及它们所克服的停顿本章要研究的技术以及它们所克服的停顿技术技术主要克服的停顿主要克服的停顿章节章节基本流水线调度基本流水线调度数据先写后读相关停顿数据先写后读相关停顿4.1循环展开循环展开控制相关停顿控制相关停顿4.1寄存器换名寄存器换名数据写后写相关和先读后写数据写后写相关和先读后写相关停顿相关停顿4.1指令动态调度(记分牌和指令动态调度(记分牌和Tomasulo算
4、法)算法)各种数据相关停顿各种数据相关停顿4.2动态分支预测动态分支预测控制相关停顿控制相关停顿4.3前瞻(前瞻(Speculation)所有数据所有数据/控制相关停顿控制相关停顿4.3多指令流出(超标量和超多指令流出(超标量和超长指令字)长指令字)提高理想提高理想CPI4.44.1 指令级并行的概念3.3.几个概念几个概念基本程序块基本程序块一段除了入口和出口以外不包含其它分支的线一段除了入口和出口以外不包含其它分支的线性代码段。性代码段。程序平均每程序平均每6 67 7条指令就会有一个分支。条指令就会有一个分支。循环体中指令之间的并行性称为循环体中指令之间的并行性称为循环级并行性循环级并行
5、性。开发循环体中存在的并行性。开发循环体中存在的并行性。最常见、最基本最常见、最基本是指令级并行研究的重点之一。是指令级并行研究的重点之一。4.1 指令级并行的概念最基本的开发循环级并行的技术最基本的开发循环级并行的技术指令调度指令调度(schedulingscheduling)技术技术循环展开循环展开(loop unrollingloop unrolling)技术技术换名换名(renamingrenaming)技术技术4.1 指令级并行的概念4.1.1 循环展开调度的基本方法1.1.指令调度指令调度 通过改变指令在程序中的位置,将相关指通过改变指令在程序中的位置,将相关指令之间的距离加大到不
6、小于指令执行延迟,将令之间的距离加大到不小于指令执行延迟,将相关指令转化为无关指令。相关指令转化为无关指令。指令调度是循环展开的技术基础。指令调度是循环展开的技术基础。2.2.编译器在完成这种指令调度时,受限于以下两编译器在完成这种指令调度时,受限于以下两 个特性:个特性:程序固有的指令级并行性程序固有的指令级并行性 流水线功能部件的执行延迟流水线功能部件的执行延迟4.1 指令级并行的概念3.3.本章使用的浮点流水线的延迟本章使用的浮点流水线的延迟产生结果指令使用结果指令延迟时钟周期数浮点计算另外的浮点计算3浮点计算浮点数据存操作(SD)2浮点数据取操作(LD)浮点计算1浮点数据取操作(LD)
7、浮点数据存操作(SD)04.1 指令级并行的概念例例4.14.1 对于下面的源代码,转换成对于下面的源代码,转换成DLXDLX汇编语言,汇编语言,在在不进行指令调度不进行指令调度和和进行指令调度进行指令调度两种情况下,两种情况下,分析代码一次循环的执行时间。分析代码一次循环的执行时间。for(i=1;i=1000;i+)for(i=1;i=1000;i+)xi=xi+s;xi=xi+s;4.1 指令级并行的概念解:解:(1)(1)变量分配寄存器变量分配寄存器 整数寄存器整数寄存器R1R1:循环计数器,初值为向量:循环计数器,初值为向量 中最高端地址元素的地址。中最高端地址元素的地址。浮点寄存器
8、浮点寄存器F2F2:保存常数:保存常数S S。假定最低端元素的地址为假定最低端元素的地址为8 8。(2)(2)DLXDLX汇编语言后的程序汇编语言后的程序 Loop:Loop:LDLDF0,0(R1)F0,0(R1)ADDD ADDDF4,F0,F2F4,F0,F2 SD SD0(R1),F40(R1),F4 SUBI SUBIR1,R1,#8R1,R1,#8 BNEZ BNEZR1,LoopR1,Loop4.1 指令级并行的概念(3)(3)程序执行的实际时钟程序执行的实际时钟根据根据表表4-24-2中给出的的延迟,实际时钟如下:中给出的的延迟,实际时钟如下:指令流出时钟指令流出时钟 Loop
9、:LD F0,0(R1)1 (空转)2 ADDD F4,F0,F2 3 (空转)4 (空转)5 SD 0(R1),F4 6 SUBI R1,R1,#8 7 (空转)8 BNEZ R1,Loop 9 (空转)10每个元素的操作需要每个元素的操作需要1010个时钟周期,其中个时钟周期,其中5 5个个是空转周期。是空转周期。4.1 指令级并行的概念(4)(4)指令调度以后,程序的执行情况指令调度以后,程序的执行情况SDSD放在分支指令的分支延迟槽中放在分支指令的分支延迟槽中对存储器地址偏移量进行调整对存储器地址偏移量进行调整 指令流出时钟指令流出时钟Loop:LD F0,0(R1)1 SUBI R1
10、,R1,#8 2 ADDD F4,F0,F2 3 (空转)4 BNEZ R1,Loop 5 SD 8(R1),F4 6一个元素的操作时间从一个元素的操作时间从1010个时钟周期减少到个时钟周期减少到6 6个个5 5个周期是有指令执行的,个周期是有指令执行的,1 1个空转周期。个空转周期。4.1 指令级并行的概念(5)(5)例子中的问题及解决方案例子中的问题及解决方案只有只有LDLD、ADDDADDD和和SDSD这这3 3条指令是有效操作条指令是有效操作.占用占用3 3个时钟周期个时钟周期而而SUBISUBI、空转空转和和BENZBENZ这这3 3个时钟周期都是附加个时钟周期都是附加的循环控制开
11、销。的循环控制开销。循环展开技术循环展开技术多次复制循环体并相应调整展开后的指令和多次复制循环体并相应调整展开后的指令和循环结束条件,增加有效操作时间与控制操循环结束条件,增加有效操作时间与控制操作时间的比率。作时间的比率。也给编译器进行指令调度带来了更大的空间。也给编译器进行指令调度带来了更大的空间。4.1 指令级并行的概念例例4.2 4.2 体现循环展开技术的特点体现循环展开技术的特点 将将例例4.14.1中的循环展开成中的循环展开成3 3次次得到得到4 4个个循循环体,再对展开后的指令序列在不调度和环体,再对展开后的指令序列在不调度和调度两种情况下,分析代码的性能。调度两种情况下,分析代
12、码的性能。假定假定R1R1的初值为的初值为3232的倍数,即循环的倍数,即循环次数为次数为4 4的倍数。的倍数。4.1 指令级并行的概念解:解:补偿代码问题补偿代码问题寄存器分配寄存器分配展开后的循环体内不重复使用寄存器。展开后的循环体内不重复使用寄存器。F0F0、F4F4:用于展开后的第:用于展开后的第1 1个循环体个循环体F2F2:保存常数:保存常数F6F6和和F8F8:用于展开后的第用于展开后的第2 2个循环体个循环体F10F10和和F12F12:用于第用于第3 3个循环体个循环体F14F14和和F16F16:用于第用于第4 4个循环体个循环体4.1 指令级并行的概念(1)(1)展开后没
13、有调度的代码展开后没有调度的代码流出时钟流出时钟Loop:LDF0,0(R1)1(空转)2ADDDF4,F0,F2 3(空转)4(空转)5SD0(R1),F4 6LDF6,-8(R1)7(空转)8ADDDF8,F6,F2 9(空转)10(空转)11SD-8(R1),F8 12LDF10,-16(R1)13(空转)14流出时钟流出时钟ADDDF12,F10,F2 15(空转)16(空转)17SD-16(R1),F12 18LDF14,-24(R1)19(空转)20ADDDF16,F14,F2 21(空转)22(空转)23SD-24(R1),F16 24SUBIR1,R1,#32 25(空转)26
展开阅读全文