我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 指令级并行 >

41指令级并行的概念【特荐-PPT】

归档日期:06-28       文本归类:指令级并行      文章编辑:爱尚语录

  4.1指令级并行的概念 当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行的。这种指令序列中存在的潜在并行性称为当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行的。这种指令序列中存在的潜在并行性称为指令级并行。第四章 指令级并行1/31(Instruction-Level Parallelism,简记为ILP) 本章研究:如何通过各种可能的技术,获得更多的指令级并行性。如何通过各种可能的技术,获得更多的指令级并行性。(硬件技术和软件技术) 必须要硬件技术和软件技术互相配合,才能够最大限度地挖掘出程序中存在的指令级并行。必须要硬件技术和软件技术互相配...

  4.1指令级并行的概念 当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行的。这种指令序列中存在的潜在并行性称为当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行的。这种指令序列中存在的潜在并行性称为指令级并行。第四章 指令级并行1/31(Instruction-Level Parallelism,简记为ILP) 本章研究:如何通过各种可能的技术,获得更多的指令级并行性。如何通过各种可能的技术,获得更多的指令级并行性。(硬件技术和软件技术) 必须要硬件技术和软件技术互相配合,才能够最大限度地挖掘出程序中存在的指令级并行。必须要硬件技术和软件技术互相配合,才能够最大限度地挖掘出程序中存在的指令级并行。 1.流水线处理器的实际CPI CPI流水线 = CPI理想 + 各类停顿周期数的总和流水线的理想CPI是流水线的最大流量。各类停顿包括:是流水线的最大流量。各类停顿包括: 结构相关停顿:是由于两条指令使用同一4.1 指令级并行的概念2/31个功能部件而导致的停顿。 控制相关停顿:是由于指令流的改变(如分支指令)而导致的停顿。控制相关停顿:是由于指令流的改变(如分支指令)而导致的停顿。 RAW、WAR和WAW停顿:由数据相关造成的。 减少其中的任何一种停顿,都可以有效地减少CPI,从而提高流水线. 本章要研究的技术以及它们所克服的停顿技术主要克服的停顿章节基本流水线调度数据先写后读相关停顿技术主要克服的停顿章节基本流水线调度数据先写后读相关停顿4.1循环展开控制相关停顿循环展开控制相关停顿4.1寄存器换名数据写后写相关和先读后写寄存器换名数据写后写相关和先读后写相关停顿4.14.1 指令级并行的概念3/31相关停顿指令动态调度(记分牌和Tomasulo算法)各种数据相关停顿算法)各种数据相关停顿4.2动态分支预测控制相关停顿动态分支预测控制相关停顿4.3前瞻(Speculation)所有数据)所有数据/控制相关停顿4.3多指令流出(超标量和超长指令字)提高理想多指令流出(超标量和超长指令字)提高理想CPI4.4 3.几个概念 基本程序块 一段除了入口和出口以外不包含其它分支的线性代码段。一段除了入口和出口以外不包含其它分支的线性代码段。 程序平均每6~7条指令就会有一个分支。4.1 指令级并行的概念4/31 程序平均每6~7条指令就会有一个分支。 循环体中指令之间的并行性称为循环级并行性。 开发循环体中存在的并行性。最常见、最基本 是指令级并行研究的重点之一。  最基本的开发循环级并行的技术 指令调度(scheduling)技术 循环展开(loop unrolling)技术4.1 指令级并行的概念5/31循环展开(loop unrolling)技术 换名(renaming)技术 4.1.1 循环展开调度的基本方法1. 指令调度通过改变指令在程序中的位置,将相关指令之间的距离加大到不小于指令执行延迟,将通过改变指令在程序中的位置,将相关指令之间的距离加大到不小于指令执行延迟,将相关指令转化为无关指令。4.1 指令级并行的概念6/31相关指令转化为无关指令。指令调度是循环展开的技术基础。2. 编译器在完成这种指令调度时,受限于以下两个特性:2. 编译器在完成这种指令调度时,受限于以下两个特性: 程序固有的指令级并行性 流水线. 本章使用的浮点流水线的延迟产生结果指令使用结果指令延迟时钟周期数浮点计算另外的浮点计算34.1 指令级并行的概念7/31浮点计算浮点数据存操作(SD)2浮点数据取操作(LD)浮点计算1浮点数据取操作(LD)浮点数据存操作(SD)0 例4.1对于下面的源代码,转换成DLX汇编语言,在汇编语言,在不进行指令调度和进行指令调度两种情况下,分析代码一次循环的执行时间。4.1 指令级并行的概念8/31分析代码一次循环的执行时间。for (i=1; i=1000; i++)x[i] = x[i] + s;for (i=1; i=1000; i++)x[i] = x[i] + s; 解:(1) 变量分配寄存器整数寄存器变量分配寄存器整数寄存器R1:循环计数器,初值为向量中最高端地址元素的地址。浮点寄存器:循环计数器,初值为向量中最高端地址元素的地址。浮点寄存器F2:保存常数S。假定最低端元素的地址为。假定最低端元素的地址为8。4.1 指令级并行的概念9/31(2) DLX汇编语言后的程序Loop:LDF0,0(R1) ADDDF4,F0,F2SD0(R1),F4SUBIR1,R1,#8BNEZR1,LoopLoop:LDF0,0(R1) ADDDF4,F0,F2SD0(R1),F4SUBIR1,R1,#8BNEZR1,Loop (3) 程序执行的实际时钟 根据表4-2中给出的的延迟,实际时钟如下:指令流出时钟Loop: LDF0 , 0(R1)1(空转)2ADDD F4 , F0 , F23空转4.1 指令级并行的概念10/31(空转)4(空转)5SD0(R1) , F46SUBIR1 , R1 , #87(空转)8BNEZ R1 , Loop9(空转)10 每个元素的操作需要10个时钟周期,其中5个是空转周期。 (4) 指令调度以后,程序的执行情况 SD放在分支指令的分支延迟槽中 对存储器地址偏移量进行调整指令流出时钟Loop: LD F0 , 0(R1)1SUBI R1 , R1 , #824.1 指令级并行的概念11/31SUBI R1 , R1 , #82ADDD F4 , F0 , F23(空转)4BNEZ R1 , Loop5SD8(R1) , F46 一个元素的操作时间从10个时钟周期减少到6个5个周期是有指令执行的,1个空转周期。 (5) 例子中的问题及解决方案 只有LD、ADDD和SD这3条指令是有效操作. 占用3个时钟周期 而SUBI、空转和BENZ这3个时钟周期都是附加的循环控制开销。4.1 指令级并行的概念12/31的循环控制开销。 循环展开技术 多次复制循环体并相应调整展开后的指令和循环结束条件,增加有效操作时间与控制操作时间的比率。多次复制循环体并相应调整展开后的指令和循环结束条件,增加有效操作时间与控制操作时间的比率。 也给编译器进行指令调度带来了更大的空间。 例4.2 体现循环展开技术的特点将例4.1中的循环展开成3次得到4个循环体,再对展开后的指令序列在不调度和调度两种情况下,分析代码的性能。循环体,再对展开后的指令序列在不调度和调度两种情况下,分析代码的性能。4.1 指令级并行的概念13/31假定R1的初值为32的倍数,即循环次数为的倍数,即循环次数为4的倍数。 解: 补偿代码问题 寄存器分配展开后的循环体内不重复使用寄存器。寄存器分配展开后的循环体内不重复使用寄存器。F0、F4:用于展开后的第1个循环体4.1 指令级并行的概念14/31F2:保存常数F6和F8:用于展开后的第2个循环体F10和F12:用于第3个循环体F14和F16:用于第4个循环体 (1) 展开后没有调度的代码流出时钟Loop:LDF0,0(R1)1(空转)2ADDDF4,F0,F23(空转)4(空转)5流出时钟ADDDF12,F10,F215(空转)16 (空转)17SD-16(R1),F1218LDF14,-24(R1) 194.1 指令级并行的概念15/31SD0(R1),F46LDF6,-8(R1)7(空转)8ADDDF8,F6,F29(空转)10(空转)11SD-8(R1),F812LDF10,-16(R1) 13(空转)14(空转)20ADDDF16,F14,F221(空转)22(空转)23SD-24(R1),F16 24SUBIR1,R1,#3225(空转)26BNEZR1,Loop27(空转)28 结果分析: 这个循环每遍共使用了28个时钟周期 有4个循环体,完成4个元素的操作平均每个元素使用元素的操作平均每个元素使用28/4=7个时钟周期原始循环的每个元素需要10个时钟周期4.1 指令级并行的概念16/31 原始循环的每个元素需要10个时钟周期节省的时间:从减少循环控制的开销中获得的 在整个展开后的循环中,实际指令只有14条,其它条,其它13个周期都是空转。效率并不高 (2) 对指令序列进行优化调度指令流出时钟Loop:LDF0,0(R1)1LDF6,-8(R1)2LDF10,-16(R1)3LDF14,-24(R1)4ADDDF4,F0,F25ADDDF8 F6 F264.1 指令级并行的概念17/31ADDDF8,F6,F26ADDDF12,F10,F27ADDDF16,F14,F28SD0(R1),F49SD-8(R1),F810SUBIR1,R1,#3212SD16(R1),F1211BNEZR1,Loop13SD8(R1),F1614 结果分析: 没有数据相关引起的空转等待 整个循环仅仅使用了14个时钟周期 平均每个元素的操作使用14/4=3.5个时钟周期 循环展开和指令调度可以有效地提高循环级并4.1 指令级并行的概念18/31 循环展开和指令调度可以有效地提高循环级并行性。 这种循环级并行性的提高实际是通过实现指令级并行来达到的。这种循环级并行性的提高实际是通过实现指令级并行来达到的。可以使用编译器来完成,也可以通过硬件来完成。可以使用编译器来完成,也可以通过硬件来完成。 4. 循环展开和指令调度时要注意的问题(1) 保证正确性(2) 注意有效性(3) 使用不同的寄存器(4) 尽可能减少循环控制中的测试指令和分支指令(1) 保证正确性(2) 注意有效性(3) 使用不同的寄存器(4) 尽可能减少循环控制中的测试指令和分支指令4.1 指令级并行的概念19/31(5) 注意对存储器数据的相关性分析(6) 注意新的相关性(5) 注意对存储器数据的相关性分析(6) 注意新的相关性5. 实现循环展开的关键分析清楚代码中指令的相关性,然后通过指令调度来消除相关.分析清楚代码中指令的相关性,然后通过指令调度来消除相关. 4.1.2 相关性 开发指令级并行的关键 存在相关的两条指令,不能改变它们的顺序。 相关是否导致流水线组织与结构有关。 程序中的相关主要有以下三种 数据相关 名相关 控制相关 1. 数据相关(data dependence) 对于指令i和指令j,如果(1) ,如果(1) 指令j使用指令i产生的结果,或者(2) 产生的结果,或者(2) 指令j与指令k数据相关,指令k与指令i数据相4.1 指令级并行的概念21/31关,则指令j与指令i数据相关。数据相关具有传递性。 数据相关是两条指令之间存在一个先写后读相关链。 相关链贯穿整个程序,是程序的内在特征。 这种相关链是导致流水线停顿的原因之一。  指令的相关距离(distance)两条指令之间的指令条数。)两条指令之间的指令条数。 分析数据相关的主要工作:(1) 确定指令的相关性,找到所有可能产生停4.1 指令级并行的概念22/31(1) 确定指令的相关性,找到所有可能产生停顿的地方。(2) 确定必须严格遵守的数据的计算顺序。(3) 确定指令的最大相关距离,确定程序中可能的最大并行性。顿的地方。(2) 确定必须严格遵守的数据的计算顺序。(3) 确定指令的最大相关距离,确定程序中可能的最大并行性。 2. 名相关(name dependence) 指令使用的寄存器或存储器称为名。 如果两条指令使用相同的名,但是它们之间并没有数据流,则称之为名相关。4.1 指令级并行的概念23/31没有数据流,则称之为名相关。 指令j与指令i之间名相关有以下两种:(1) 之间名相关有以下两种:(1) 反相关(anti-dependence)(2) 输出相关(output dependence)  消除名相关 名相关的指令之间没有数据交换。 如果一条指令中的名改变了,并不影响另外一条指令的执行。如果一条指令中的名改变了,并不影响另外一条指令的执行。通过改变指令中操作数的名来消除名相关,这4.1 指令级并行的概念24/31 通过改变指令中操作数的名来消除名相关,这就是换名(renaming)技术。 对于寄存器操作数进行换名称为寄存器换名。(register renaming)可以用编译器静态完成或硬件动态完成。 例:我们对例4.2编译过程进行分析,来仔细考察换名的过程。编译过程进行分析,来仔细考察换名的过程。(1) 首先,仅仅去除4遍循环体中的分支指令,4.1 指令级并行的概念25/31得到以下由17条指令构成的指令序列: Loop: LD F0 , 0(R1)ADDD F4 , F0 , F2SD0(R1) , F4SUBI R1 , R1 , #8LDF0 , 0(R1)ADDDF4 , F0 , F2SD0(R1) , F4SUBIR1 , R1 , #84.1 指令级并行的概念26/31,,LDF0 , 0(R1)ADDD F4 , F0 , F2SD0(R1) , F4SUBI R1 , R1 , #8,,LDF0 , 0(R1)ADDDF4 , F0 , F2SD0(R1) , F4SUBIR1 , R1 , #8BNEZR1 , Loop (2) 编译器可以通过对相关链上存储器访问偏移量的直接调整,将前(2) 编译器可以通过对相关链上存储器访问偏移量的直接调整,将前3条SUBI指令消除掉,从而得到下面一个指令消除掉,从而得到下面一个14条指令构成的指令序列:4.1 指令级并行的概念27/31 Loop:LDF0 , 0(R1)ADDDF4 , F0 , F2SD0(R1) , F4LDF0 , -8(R1)ADDDF4 , F0 , F2SD-8(R1) , F4LDF016(R1)4.1 指令级并行的概念28/31LDF0 , -16(R1)ADDDF4 , F0 , F2SD-16(R1) , F4LDF0 , -24(R1)ADDDF4 , F0 , F2SD-24(R1) , F4SUBIR1 , R1 , #32BNEZR1 , Loop (3) 通过寄存器换 名 , 消 除名相关。得到右边的指令序列:(3) 通过寄存器换 名 , 消 除名相关。得到右边的指令序列:Loop:LDF0 , 0(R1)ADDD F4 , F0 , F2SD0(R1) , F4LDF6 , -8(R1)ADDD F8 , F6 , F2SD-8(R1) , F8LDF10 , -16(R1)4.1 指令级并行的概念29/31,()ADDD F12 , F10 , F2SD-16(R1) , F12LDF14 , -24(R1)ADDD F16 , F14 , F2SD-24(R1) , F16SUBIR1 , R1 , #32BNEZR1 , Loop换名操作需要较大的寄存器开销。 3.控制相关(control dependence) 控制相关是指由分支指令引起的相关。 典型的程序结构是“if-then”结构。 看下面一个示例:if p1{4.1 指令级并行的概念30/31p {S1;};S;if p2{S2;};  处理控制相关的两个原则:(1) 与控制相关的指令不能移到分支指令之前,即控制有关的指令不能调度到分支指令控制范围以外;:(1) 与控制相关的指令不能移到分支指令之前,即控制有关的指令不能调度到分支指令控制范围以外;4.1 指令级并行的概念31/31(2) 与控制无关的指令不能移到分支指令之后,即控制无关的指令不能调度到分支指令控制范围以内。(2) 与控制无关的指令不能移到分支指令之后,即控制无关的指令不能调度到分支指令控制范围以内。 再考察例4.2:假设循环展开时,循环控制分支指令没有去除,则指令序列如下::假设循环展开时,循环控制分支指令没有去除,则指令序列如下:4.1 指令级并行的概念32/31 Loop: LDF0 , 0(R1)ADDD F4 , F0 , F2SD0(R1) , F4SUBIR1 , R1 , #8BEQZ R1 , ExitLDF0 , 0(R1)ADDD F4 , F0 , F2SD0(R1) , F4SUBIR1 , R1 , #8BEQZ R1 , Exit4.1 指令级并行的概念33/31LDF0 , 0(R1)ADDD F4 , F0 , F2SD0(R1) , F4SUBIR1 , R1 , #8BEQZ R1 , ExitLDF0 , 0(R1)ADDD F4 , F0 , F2SD0(R1) , F4SUBIR1 , R1 , #8BNEZ R1 , LoopExit: 34/34 35/34

  2017年南开大学金融发展研究院832经济学基础(微、宏观)之宏观经济学考研冲刺密押题

  2017年西安交通大学金禾经济研究中心844中级宏观微观经济学之中级宏观经济学考研仿线年北京师范大学研究生院珠海分院868儿童心理与教育[专业硕士]之学前儿童发展心理学考研仿线年天津科技大学食品工程与生物技术学院801有机化学考研题库

  2017年上海理工大学管理学院431金融学综合[专业硕士]之货币金融学考研导师圈点必考题汇编

  2017年西安建筑科技大学艺术学院344风景园林基础[专业硕士]之中国古典园林史考研仿线新闻学与传播学理论之传播学教程考研题库

  2017年浙江传媒学院播音主持艺术学院334新闻与传播专业综合能力[专业硕士]考研导师圈点必考题汇编

本文链接:http://f-taiken.net/zhilingjibingxing/98.html