第三章 流水线技术 第3章流水线技术 3.1解释以下术语 流水线:将一个重复的时序过程,分解成为假设干个子过程,而每一个子过程都可有效地在其专用功能段上与其它子过程同时执行 单功能流水线:指流水线的各段之间的连接固定不变、只能完成一种固定功能的流水线 多功能流水线:指各段可以进行不同的连接,以实现不同的功能的流水线 静态流水线:指在同一时间内,多功能流水线中的各段只能按同一种功能的连接方式工作的流水线当流水线要切换到另一种功能时,必须等前面的任务都流出流水线之后,才干改变连接 动态流水线:指在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能的流水线它同意在某些段正在实现某种运算时,另一些段却在实现另一种运算 部件级流水线:把处理机中的部件进行分段,再把这些部件分段互相连接而成它使得运算操作能够按流水方式进行这种流水线也称为运算操作流水线 处理机级流水线:又称指令流水线它是把指令的执行过程按照流水方式进行处理,即把一条指令的执行过程分解为假设干个子过程,每个子过程在独立的功能部件中执行 处理机间流水线:又称为宏流水线它是把多个处理机串行连接起来,对同一数据流进行处理,每个处理机完成整个任务中的一部分。
前一个处理机的输出结果存入存储器中,作为后一个处理机的输入 线性流水线:指各段串行连接、没有反馈回路的流水线数据通过流水线中的各段时,每一个段最多只流过一次 非线性流水线:指各段除了有串行的连接外,还有反馈回路的流水线 顺序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同 乱序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,同意后进入流水线的任务先完成这种流水线又称为无序流水线、错序流水线、异步流水线 吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量 流水线的加速比:使用顺序处理方式处理一批任务所用的时间与按流水处理方式处理同一批任务所用的时间之比 流水线的效率:即流水线设备的利用率,它是指流水线中的设备实际使用时间与整个运行时间的比值 数据相关:合计两条指令i和j,i在j的前面,如果下述条件之一成立,则称指令j与指令i数据相关: 〔1〕指令j使用指令i产生的结果; 〔2〕指令j与指令k数据相关,而指令k又与指令i数据相关 名相关:如果两条指令使用了相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关。
控制相关:是指由分支指令引起的相关它必须要依据分支指令的执行结果来确定后面该执行哪个分支上的指令 反相关:合计两条指令i和j,i在j的前面,如果指令j所写的名与指令i所读的名相同,则称指令i和j发生了反相关 输出相关:合计两条指令i和j,i在j的前面,如果指令j和指令i所写的名相同,则称指令i和j发生了输出相关 换名技术:名相关的两条指令之间并没有数据的传送,只是使用了相同的名可以把其中一条指令所使用的名换成别的,以此来消除名相关 结构冲突:因硬件资源满足不了指令堆叠执行的要求而发生的冲突 数据冲突:当指令在流水线中堆叠执行时,因必须要用到前面指令的执行结果而发生的冲突 控制冲突:流水线碰到分支指令或其它会改变PC值的指令所引起的冲突 定向:用来解决写后读冲突的在发生写后读相关的状况下,在计算结果尚未出来之前,后面等待使用该结果的指令并不见得是马上就要用该结果如果能够将该计算结果从其产生的地方直接送到其它指令必须要它的地方,那么就可以避免停顿 写后读冲突:合计两条指令i和j,且i在j之前进入流水线,指令j用到指令i的计算结果,而且在i将结果写入寄存器之前就去读该寄存器,因而得到的是旧值。
读后写冲突:合计两条指令i和j,且i在j之前进入流水线,指令j的目的寄存器和指令i 的源操作数寄存器相同,而且j在i读取该寄存器之前就先对它进行了写操作,导致i读到的值是错误的 写后写冲突:合计两条指令i和j,且i在j之前进入流水线,,指令j和指令i的结果单元〔寄存器或存储器单元〕相同,而且j在i写入之前就先对该单元进行了写入操作,从而导致写入顺序错误这时在结果单元中留下的是i写入的值,而不是j写入的 链接技术:具有先写后读相关的两条指令,在不出现功能部件冲突和V i冲突的状况下,可以把功能部件链接起来进行流水处理,以达到加快执行的目的 分段开采:当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每一次循环只处理一个向量段 半性能向量长度:向量处理机的性能为其最大性能 R的一半时所必须的向量长度 向量长度临界值:向量流水方式的处理速度优于标量串行方式的处理速度时所必须的向量长度的最小值 3.2 指令的执行可采纳顺序执行、堆叠执行和流水线三种方式,它们的主要区别是什么?各有何优缺点 答:〔1〕指令的顺序执行是指指令与指令之间顺序串行。
即上一条指令全部执行完后,才干开始执行下一条指令 优点:控制简单,节省设备缺点:执行指令的速度慢,功能部件的利用率低 〔2〕指令的堆叠指令是在相邻的指令之间,让第k条指令与取第k+l条指令同时进行堆叠执行不能加快单条指令的执行速度,但在硬件增加不多的状况下,可以加快相邻两条指令以及整段程序的执行速度与顺序方式相比,功能部件的利用率提升了,控制变复杂了 〔3〕指令的流水执行是把一个指令的执行过程分解为假设干个子过程,每个子过程由专门的功能部件来实现把多个处理过程在时间上错开,依次通过各功能段,每个子过程与其它的子过程并行进行依靠提升吞吐率来提升系统性能流水线中各段的时间应尽可能相等 3.3 简述先行控制的基本思想 答:先行控制技术是把缓冲技术和预处理技术相结合缓冲技术是在工作速度不固定的两个功能部件之间设置缓冲器,用以平滑它们的工作预处理技术是指预取指令、对指令进行加工以及预取操作数等 采纳先行控制方式的处理机内部设置多个缓冲站,用于平滑主存、指令分析部件、运算器三者之间的工作这样不仅使它们都能独立地工作,充分忙碌而不用互相等待,而且使指令分析部件和运算器分别能快速地取得指令和操作数,大幅度地提升指令的执行速度和部件的效率。
这些缓冲站都按先进先出的方式工作,而且都是由一组假设干个能快速访问的存储单元和相关的控制逻辑组成 采纳先行控制技术可以实现多条指令的堆叠解释执行 3.4 设一条指令的执行过程分成取指令、分析指令和执行指令三个阶段,每个阶段所必须的时间分别为△t、△t和2△t 分别求出以下各种状况下,连续执行N条指令所必须的时间 〔1〕顺序执行方式; 〔2〕只有“取指令〞与“执行指令〞堆叠; 〔3〕“取指令〞、“分析指令〞与“执行指令〞堆叠 解:〔1〕每条指令的执行时间为:△t+△t+2△t=4△t 连续执行N条指令所必须的时间为:4N△t 〔2〕连续执行N条指令所必须的时间为:4△t+3〔N-1〕△t=〔3N+1〕△t 〔3〕连续执行N条指令所必须的时间为:4△t+2〔N-1〕△t=〔2N+2〕△t 3.5 简述流水线技术的特点 答:流水技术有以下特点: 〔1〕流水线把一个处理过程分解为假设干个子过程,每个子过程由一个专门的功能部件来实现因此,流水线实际上是把一个大的处理功能部件分解为多个独立的功能部件,并依靠它们的并行工作来提升吞吐率 〔2〕流水线中各段的时间应尽可能相等,否则将引起流水线堵塞和断流。
〔3〕流水线每一个功能部件的前面都要有一个缓冲寄存器,称为流水寄存器 〔4〕流水技术合适于大量重复的时序过程,只有在输入端不断地提供任务,才干充分发挥流水线的效率 〔5〕流水线必须要有通过时间和排空时间在这两个时间段中,流水线都不是满负荷工作 3.6 解决流水线瓶颈问题有哪两种常用方法? 答:细分瓶颈段与重复设置瓶颈段 3.7 减少流水线分支延迟的静态方法有哪些? 答:〔1〕猜测分支失败:沿失败的分支持续处理指令,就好象什么都没发生似的当确定分支是失败时,说明猜测正确,流水线正常流动;当确定分支是成功时,流水线就把在分支指令之后取出的指令转化为空操作,并按分支目标地址重新取指令执行 〔2〕猜测分支成功:当流水线ID段检测到分支指令后,一旦计算出了分支目标地址,就开始从该目标地址取指令执行 〔3〕延迟分支:主要思想是从逻辑上“延长〞分支指令的执行时间把延迟分支看成是由原来的分支指令和假设干个延迟槽构成不管分支是否成功,都要按顺序执行延迟槽中的指令 3种方法的共同特点:它们对分支的处理方法在程序的执行过程中始终是不变的它们要么总是猜测分支成功,要么总是猜测分支失败。
3.9罗列出下面循环中的所有相关,包括输出相关、反相关、真相关 for (i=2; i<100; i=i+1) a[i]=b[i]+a[i] ;/* s1 */ c[i+1]=a[i]+d[i] ; /* s2 */ a[i-1]=2*b[i] ; /* s3 */ b[i+1]=2*b[i] ;/* s4 */ 解:展开循环两次: a[i] = b[i] + a[i] ; /* s1 */ c[i+1] = a[i] + d[i] ; /* s2 */ a[i-1] = 2 * b[i] ; /* s3 */ b[i+1] = 2 * b[i] ; /* s4 */ a[i+1] = b[i+1] + a[i+1] ; /* s1’ */ c[i+2] = a[i+1] + d[i+1] ; /* s2 ‘*/ a[i] = 2 * b[i+1] ; /* s3 ‘*/ b[i+2] = 2 * b[i+1] ; /* s4 ‘*/ 输出相关:无 反相关:无 真相关:S1&S2 由于循环引入的相关:S4&S4’〔真相关〕、S1’&S4〔真相关〕、S3’&S4〔真相关〕、S1&S3’〔输出相关、反相关〕、S2&S3’〔反相关〕。
3.10 简述三种向量处理方式,它们对向量处理机的结构要求有何不同? 答 (1)横向处理方式:假设向量长度为N ,则水平处理方式相当于执行N 次循环假设使用流水线,在每次循环中可能出现数据相关和功能转换,不合适对向量进行流水处理 (2)纵向处理方式:将整个向量按相同的运算处理完毕之后,再去执行其他运算合适对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相联,构成M-M 型的运算流水线 (3)纵横处理方式:把长度为N 的向量分为假设干组,每组长度为n ,组内按纵向方式处理,依次处理各组,组数为「N/n 」,合适流水处理可设长度为n 的向量寄存器,使每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成R-R 型运算流水线 3.11 可采纳哪些方法来提升向量处理机的性能? 答:可采纳多种方法: 〔1〕 设置多个功能部件,使它们并行工作; 〔2〕 采纳链接技术,加快一串向量指令的执行; 〔3〕 采纳循环开采技术,加快循环的处理; 〔4〕 采纳多处理机系统,进一步提升性能 3.12 有一指令流水线如下所示 。