计算机系统结构第4章指令级并行及限制.ppt
《计算机系统结构第4章指令级并行及限制.ppt》由会员分享,可在线阅读,更多相关《计算机系统结构第4章指令级并行及限制.ppt(105页珍藏版)》请在课桌文档上搜索。
1、1,第四章 指令级并行及限制,4.1指令级并行的概念 4.2指令的动态调度 4.3转移预测技术 4.4多发射技术 4.5向指令级并行的支持与限制4.6 Intel Pentium 4 实例分析,晦缘奖邀带澈滦氦皋宪拎搬乳祟抓战蹈挣凋旦剿门堡辰洞悉矩节纱茸谩枝计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,2,4.1 指令级并行的概念,指令级并行的概念,几乎所有的处理机都利用流水线来使指令重叠并行执行,以达到提高性能的目的。这种指令之间存在的潜在并行性称为指令级并行。(ILP:Instruction-Level Parallelism),族档坡粤拟积奋勺伺申瑚赵钥忽褐瓤
2、萌篮择晚凰泥涣俐皮萤静效炎几楚躇计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,3,4.1.1 指令级并行,1、流水线处理机的实际CPI理想流水线的CPI加上各类停顿的时钟周期数:CPI流水线=CPI理想+停顿结构冲突+停顿数据冲突+停顿控制冲突理想CPI是衡量流水线最高性能的一个指标。IPC:Instructions Per Cycle(每个时钟周期完成的指令条数)2、基本程序块基本程序块:一段除了入口和出口以外不包含其他分支的线性代码段。程序平均每57条指令就会有一个分支。,滁年姑署曙渺抗鹤雍蕉搜旨攘量莆探矩强演未茎烈塔手戒绢黍褐按遏章话计算机系统结构第4章指令级
3、并行及限制计算机系统结构第4章指令级并行及限制,4,3、循环级并行:使一个循环中的不同循环体并行执行。开发循环体中存在的并行性最常见、最基本是指令级并行研究的重点之一例如,考虑下述语句:for(i=1;i=500;i=i1)ai=ais;每一次循环都可以与其他的循环重叠并行执行;在每一次循环的内部,却没有任何的并行性。,床领索凸漠逸呈芹黍钻吊上舰架皿弧魏姥膨忧砖佳摆谜仍甫舅钡披逻泉羡计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,5,4、最基本的开发循环级并行的技术循环展开(loop unrolling)技术采用向量指令和向量数据表示,荫屿报察自靴骗娩盆傍实山共渍康畜
4、尖十提乓氯酬三善络叼仇洲肛起次犁计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,6,4.1.2 相关性对指令级并行的影响,本章使用的浮点流水线的延迟,消腕美嘴瓜赂凋斯胖摧雏咸汀窄瘁俐袄拜洪原渭蓉夸牧越加捐薯逗滴莉驮计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,7,例4-1 对于下面的源代码,for(i=1;i=1000;i+)xi=xi+s;()转换成DLX汇编语言,在不进行指令调度和进行指令调度两种情况下,分析代码一次循环的执行时间。()编译过程进行分析,来仔细考察换名的过程。备注:本章使用的浮点流水线的延迟如上表所示,惩闺窑拌数雨敬玻秘
5、鬼爵筛什谬墒汪痞镊缅民辉幽音满帆绊肾凡妖滇疲吹计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,8,解:()(1)变量分配寄存器 整数寄存器R1:循环计数器,初值为向量 中最高端地址元素的地址。浮点寄存器F2:保存常数S。假定最低端元素的地址为8。(2)DLX汇编语言后的程序 Loop:LDF0,0(R1)ADDDF4,F0,F2 SD0(R1),F4 SUBIR1,R1,#8 BNEZR1,Loop,骸讣睡喷茨捻案娟鸵弦瘤恨涌诚庆己吝打拾亥聘坦烂焚嚷证关狭驼滥肠毒计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,9,(3)程序执行的实际时钟,根
6、据上表中给出的的延迟,实际时钟如下:指令流出时钟 Loop: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每个元素的操作需要10个时钟周期,其中5个是空转周期。,卜坷敌凑烘直浮貉低臃押憋娱椽腕中撑矾逐芦蛊涡荣电减官拂蚂刚侣俊信计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,10,(4)指令调度以后,程序的执行情况,SD放在分支指令的分支延迟槽中对存储器地址偏移量进行调整 指令流出时钟Loop:LD F0,0(R1)1
7、SUBI R1,R1,#8 2 ADDD F4,F0,F2 3(空转)4 BNEZ R1,Loop 5 SD 8(R1),F4 6一个元素的操作时间从10个时钟周期减少到6个5个周期是有指令执行的,1个空转周期。,瓮愁歇偶拌兹囊富赡橡擅急阅涨揩头桥彤木沾均侨眨坚桨汀耕颓鄂陨董增计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,11,(),(1)首先,仅仅去除4遍循环体中的分支指令,得到以下由17条指令构成的指令序列,如下所示:,Loop:LD F0,0(R1)ADD.D F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 LD F0,0(R1)ADD.
8、D F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 LD F0,0(R1)ADD.D F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 LD F0,0(R1)ADD.D F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop,辩椰惜尉磷勉硝乎掣驳垮臂煽棕老驳贬勘恫踊狼栖拢筛伞觉翅沤谭绿伯愈计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,12,(2)编译器可以通过对相关链上存储器访问偏移量的直接调整,将前3条SUBI指令消除掉,从而得到下面一个14条指令构成的指令序列,如下所示:Loop:
9、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,幕霜魔汪娟宣镀钝替着弹盗定瞒躺腹馁床揭椭禾偶艺稻绸慰段忻道帐软拂计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,13,(3)通过寄存器换名,消除名相关。得到下面的指令序列,如下所示:Loop:LD F
10、0,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章指令级并行及限制计算机系统结构第4章指令级并行及限制,14,再来看一个控制相关的例子。,典型的程序结构是“if-then”结构。,if
11、 p1 S1;S;if p2S2;,P1控制相关S1,P2控制相关S2,而不是S1。,玲魁幢媚粹花强溯卒陡舷慢骏雁咸缚柏睫侮粪噎郊北喘坍漂晨争钙圈介寝计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,15,控制相关会带来两方面的限制:,(1)控制相关于一个分支的指令不能被移到分支之前执行。例如ifelse程序中,then后面的语句不能移到if之前执行(2)没有控制相关于一个分支的指令不能移到该分支指令之后,从而受这个分支控制,例如ifthen程序中,if前的指令不能移到then部分执行。,铭昌挨掖窍哭恫粘这拜缨贯赡聊番僵裴效传颠幻琴占希疗窜矽吻堂桔窍碧计算机系统结构第4
12、章指令级并行及限制计算机系统结构第4章指令级并行及限制,16,再考察例4-1,假设循环展开时,循环控制分支指令没有去除,则指令序列如下所示:,loop:LD F0,0(R1)ADD.D F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BEQZ R1,Exit LD F0,0(R1)DD F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BEQZ R1,Exit LD F0,0(R1),ADD.D F4,F0,F2 SD 0(R1),F4 SUBI R1,R1,#8 BEQZ R1,Exit LD F0,0(R1)ADD.D F4,F0,F2 SD 0(
13、R1),F4 SUBI R1,R1,#8 BNEZ R1,Loop Exit:,督刺矿筹评狙幂瘟巧贞扳钾云剧窝酬浆淋防芍蓟采欠渊取卑聘绿孜劈睦拨计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,17,由于上述指令段中BEQZ R1,Exit,BEQZ R1,Exit,BEQZ R1,Exit三条分支指令的存在,引起控制相关,导致其后的4条指令不能跨越分支指令进行调度,即不同循环遍次里的指令不能够跨越循环遍次进行调度。,鹤访脯豆下洛婶搬煤佃闽釜庶蔬相颤涪服苍酉殃康襄雪民酶附屏鲸潭孪芦计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,18,4.1.3
14、支持指令级并行的基本编译技术,1.检测并提高循环级并行,2.循环展开技术,3.全局指令调度,晃内挞萨寇浙拧践底儿缝熙溜绳肄绷己约傅课拐抑框新舞丑揭韵疼厄扣虫计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,19,1.检测并提高循环级并行,循环级并行是指在源代码或靠近源代码的层次进行并行分析,而指令级并行则是对经过编译技术产生的指令进行并行分析。,循环级并行分析集中分析某一个循环体中的数据存取是否涉及前一个循环体中的数据。这种相关叫做体间相关。,秦抗尝枉丰僳粘闹焙供漂半救亲毙驰毛诅迷烘鞍塑鸭叛迟勋傀飞曝脏怜意计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并
15、行及限制,20,在这个循环程序中,用到了两次xi,它们之间即存在数据相关,但这是循环体内的相关而不是体间相关。在相邻的两次对i的引用上,存在体间相关,但这种相关包含规约变量,很容易识别和消除。,看下面的程序:for(i=1000;i0;i=i+1)xi=xi+s;,千讹稿澄拔财媚枝咬檬庶刮赵铬韶捡积辩点幻拿歹躁殖瑞新嗜臂堰脏牟讶计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,21,循环体间相关常常以重现的形式出现的:for(i=2;1=100;i=i+1)Yi=Yi-1+Yi;,重现是对一个变量赋予前面一个循环体中一个变量的值,而且往往是最近的一个循环体中的变量,返澄
16、降园犀越依飘牵弘销敷智酝汹依裴题送仪蛰圃腻涡宠澄预啥暗砒簧颈计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,22,检测这种循环依赖关系有两点很重要的原因:一是有些系统结构(如向量计算机)可以专门支持执行这种循环结构的程序;二是有些存在循环依赖关系的程序也可以获得很高的并行度。,for(i=6;1=100;i=i+1)Yi=Yi-5+Yi;,在第i次循环中,循环引用了第i-5个元素,因此称该循环的相关距离是5。许多有相邻体间相关的循环,它们的相关距离是1。相关距离越大,通过展开循环可以获得的并行度就越高。,贺伪闰卢恶耶枯镜是骏拿老蚕颂狰葱黄击肿远稽鸡断涯揖呼簿术逗传服犯
17、计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,23,循环展开技术是利用多次复制循环体并相应调整展开后的指令和循环结束条件,增加有效操作时间与控制操作时间的比率。这种技术也给编译器进行指令调度带来了更大的空间,2.循环展开技术,例4-2:将例4-1中的循环展开成3次得到4个循环体,再对展开后的指令序列在不调度和调度两种情况下,分析代码的性能。,吐引舅酣寞驮裁贾杉熔实咙兔歪码苯夕柬沈捌膊旷篇鸯终迈空且贼哈讨射计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,24,解:假定R1的初值为32的倍数,即循环次数为4的倍数。寄存器分配如下:(展开后的循环
18、体内不重复使用寄存器。)F0、F4:用于展开后的第1个循环体;F2:保存常数;F6和F8:用于展开后的第2个循环体;F10和F12:用于第3个循环体;F14和F16:用于第4个循环体。,词牺残贞坏仆言儡霹汪疆远玛隅散宋凄犀金嗡舌缺撰嗣觅麻焰奎庞藕炔逗计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,25,(1)展开后没有调度的代码,流出时钟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 12LDF
19、10,-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(空转)26BNEZR1,Loop 27(空转)28,抹园位秽坊恨沛沽骋孩坯暑混琼纪咽牧慎秆瘸茧钦洛岭急法原腾扩愈宋俱计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,26,结果分析:,这个循环每遍共使用了28个时钟周期有4个循环体,完成4个元素的操作平均每个元素使用28/4
20、=7个时钟周期原始循环的每个元素需要10个时钟周期节省的时间:从减少循环控制的开销中获得的在整个展开后的循环中,实际指令只有14条,其它13个周期都是空转。效率并不高,令挡辰抵驭嚏姜菊倦漠昏呐丧矛赊娘硫摧群烃壁恶咙嚎涂酋执泪兼匹孝展计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,27,(2)对指令序列进行优化调度,指令流出时钟Loop:LDF0,0(R1)1 LDF6,-8(R1)2 LDF10,-16(R1)3 LDF14,-24(R1)4 ADDDF4,F0,F25 ADDDF8,F6,F26 ADDDF12,F10,F27 ADDDF16,F14,F28 SD0
21、(R1),F49 SD-8(R1),F810 SUBIR1,R1,#3212 SD16(R1),F1211 BNEZR1,Loop13 SD8(R1),F1614,乞继奏蜘承瘁寝洲伪烤操叶律津踢罚述颊熟舰拘刑村侈硝很熔氟皑罢咯可计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,28,结果分析:,没有数据相关引起的空转等待整个循环仅仅使用了14个时钟周期平均每个元素的操作使用14/4=3.5个时钟周期循环展开和指令调度可以有效地提高循环级并行性。这种循环级并行性的提高实际是通过实现指令级并行来达到的。可以使用编译器来完成,也可以通过硬件来完成。,绩搬脚做涯照掀典竭稠吭捆搪
22、谱想然磁耽糖寂跃蟹溯囤旨稿爸遍他铸讶钉计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,29,循环展开和指令调度时要注意的问题,(1)保证正确性(2)注意有效性(3)使用不同的寄存器(4)尽可能减少循环控制中的测试指令和分支指令(5)注意对存储器数据的相关性分析(6)注意新的相关性,无疗韩左踞渊桶咖跟认契辉灸借量仆甸芒歌攫换究墅毙酋萧朽埋眶斌畏茫计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,30,3.全局指令调度,全局指令调度是在保证不违背数据相关和控制相关的情况下,把代码尽可能压缩成几条指令。,循环分支指令引起的控制相关可以通过展开解决。全
23、局指令调度可以解决另一类由条件分支引起的控制相关。全局指令调度并不保证能提高执行速度,但如果预测信息准确,编译器就可以进一步决定上述移动会不会提高运行速度。,瞪拯寺沂顷芳批优撅芬胚颂价删掏拨狭范哎卸绷虎帽缴综砒阐锰挝失淘同计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,31,4.2 指令的动态调度,静态调度依靠编译器对代码进行静态调度,以减少相关和冲突。它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。通过把相关的指令拉开距离来减少可能产生的停顿。动态调度在程序的执行过程中,依靠专门硬件对代码进行调度,减少数据相关导致的停顿。,汰牟无炯苞某巨篆淮讥债绊义掠跨
24、奈缺剂十柿欢元录唱靡涎灌吨碘剑奉怨计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,32,4.2.1动态调度的原理,到目前为止我们所使用流水线的最大的局限性:指令必须顺序流出看下面一段代码:DIVD F0,F2,F4;S1 ADDD F10,F0,F8;S2:S2对S1数据相关,S2被阻塞 SUBD F12,F8,F14;S3:S3与S1、S2都没 有相关,但也被阻塞,垄浅捷颅劈武滚秸赡瘪筑郭扮更休锻嫁伤条婉草追运酱介宽膝惶诬焚佬剪计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,33,为了允许乱序执行,我们将基本流水线的译码阶段 再分为两个阶段
25、:(1)流出(Issue,IS):指令译码,检查是否存 在结构阻塞。(2)读操作数(Read Operands,RO):当没有数 据相关引发的阻塞时就读操作数。指令乱序结束带来的最大问题:异常处理比较复杂(精确异常处理、不精确异常处理),谢孔乎焰炔锌褒闭馈趣毫撕静狮坍猎缉淋茶帐蛰坟果陵熔啡踊赏乾辅硅蔽计算机系统结构第4章指令级并行及限制计算机系统结构第4章指令级并行及限制,34,4.2.2计分牌动态调度算法,例4-3:数据先读后写(WAR)相关引起的阻塞 代码序列:DIVDF0,F2,F4 ADDDF10,F0,F8 SUBDF8,F8,F14 指令乱序执行时就会出现先读后写相关。,记分牌技术
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 指令 并行 限制
链接地址:https://www.desk33.com/p-620044.html