计算机体系结构:第3章 流水线技术

上传人:桔**** 文档编号:568847617 上传时间:2024-07-27 格式:PPT 页数:209 大小:1.82MB
返回 下载 相关 举报
计算机体系结构:第3章 流水线技术_第1页
第1页 / 共209页
计算机体系结构:第3章 流水线技术_第2页
第2页 / 共209页
计算机体系结构:第3章 流水线技术_第3页
第3页 / 共209页
计算机体系结构:第3章 流水线技术_第4页
第4页 / 共209页
计算机体系结构:第3章 流水线技术_第5页
第5页 / 共209页
点击查看更多>>
资源描述

《计算机体系结构:第3章 流水线技术》由会员分享,可在线阅读,更多相关《计算机体系结构:第3章 流水线技术(209页珍藏版)》请在金锄头文库上搜索。

1、1 1/206/2063.1重叠执行和先行控制3.2流水线的基本概念3.3流水线的性能指标3.4流水线的相关与冲突 3.5流水线的实现3.6向量处理机第3章 流水线技术2 2/206/2061.将一条指令的执行过程分为三个阶段3.1 重叠执行和先行控制3.1.1 重叠执行一条指令的执行过程一条指令的执行过程 3 3/206/2063.1 重叠执行和先行控制取指令q按照指令计数器按照指令计数器PCPC的内容访问主存,取出一条指令的内容访问主存,取出一条指令 送到指令寄存器。送到指令寄存器。指令分析q对指令的操作码进行译码,按照给定的寻址方式和对指令的操作码进行译码,按照给定的寻址方式和 地址字段

2、形成操作数的地址,并用这个地址读取操地址字段形成操作数的地址,并用这个地址读取操 作数。作数。指令执行q按照操作码的要求,完成指令规定的功能。按照操作码的要求,完成指令规定的功能。 在指令的执行过程中还要更新PC值,为读取下一 条指令做好准备。 4 4/206/2063.1 重叠执行和先行控制2.三种执行方式顺序执行方式一次重叠执行方式二次重叠执行方式 5 5/206/2063.1 重叠执行和先行控制执行n条指令所花的时间 1.顺序执行方式指令的执行过程6 6/206/2063.1 重叠执行和先行控制如果取指令、指令分析和指令执行的时间相等, 都是t,则 T=3nt 优点q控制简单,节省设备。

3、控制简单,节省设备。主要缺点q 处理机执行指令的速度慢处理机执行指令的速度慢q 功能部件的利用率很低功能部件的利用率很低7 7/206/2063.1 重叠执行和先行控制1.一次重叠执行方式 指令的执行过程执行第k条指令与取第k+l条指令同时进行。(一种最简单的重叠方式)(一种最简单的重叠方式) 8 8/206/2063.1 重叠执行和先行控制如果执行一条指令的3个阶段的时间相等,都是 t,则执行n条指令所花的时间为 T=(1+2n)t 优点q程序的执行时间减少了近程序的执行时间减少了近1/31/3。q功能部件的利用率明显提高。功能部件的利用率明显提高。缺点q需要增加一些硬件,控制过程变复杂了。

4、需要增加一些硬件,控制过程变复杂了。9 9/206/2063.1 重叠执行和先行控制1.二次重叠执行方式 指令的执行过程 取第k+l条指令提前到与分析第k条指令同时进行,分析第k+l条指令与执行第k条指令同时进行。 1010/206/2063.1 重叠执行和先行控制如果执行一条指令的3个阶段的时间相等,都是 t,则执行n条指令所花的时间为 T= (2+n)t 优点q与顺序执行方式相比,执行时间缩短了近与顺序执行方式相比,执行时间缩短了近2/32/3。q部件的利用率有了进一步的提高。部件的利用率有了进一步的提高。缺点q需要增加更多的硬件。需要增加更多的硬件。q需要设置独立的取指令部件、指令分析部

5、件和指令执需要设置独立的取指令部件、指令分析部件和指令执行部件。行部件。1111/206/2063.1 重叠执行和先行控制访问主存的冲突问题 4种解决方法q设置两个独立编址的存储器:设置两个独立编址的存储器: 指令存储器指令存储器(存放指令)、(存放指令)、数据存储器数据存储器(存放数据)(存放数据)q指令和数据仍然混合存放在同一个主存中,但设置指令和数据仍然混合存放在同一个主存中,但设置 两个两个CacheCache: 指令指令CacheCache、数据数据CacheCache 程序空间和数据空间相互独立的系统结构被称为程序空间和数据空间相互独立的系统结构被称为哈佛哈佛结构结构。 q 指令和

6、数据仍然混合存放在同一个主存中,但主存采用指令和数据仍然混合存放在同一个主存中,但主存采用 多体交叉结构。多体交叉结构。 (有一定的局限性)(有一定的局限性)1212/206/2063.1 重叠执行和先行控制q在主存和指令分析部件之间增设在主存和指令分析部件之间增设指令缓冲站指令缓冲站 (又被称为(又被称为先行指令缓冲站先行指令缓冲站 )n主存不是满负荷工作的,插空从主存中预先把后面将主存不是满负荷工作的,插空从主存中预先把后面将要执行的指令取出来,存放到指令缓冲站中。要执行的指令取出来,存放到指令缓冲站中。n在在“取指令取指令”阶段从指令缓冲站读取指令(如果指令阶段从指令缓冲站读取指令(如果

7、指令缓冲站不为空),而不用去访问主存。缓冲站不为空),而不用去访问主存。 1313/206/2063.1 重叠执行和先行控制1.先行指令缓冲站先行指令缓冲站的组成1414/206/2063.1 重叠执行和先行控制指令缓冲存储区和相应的控制逻辑q按队列方式工作。按队列方式工作。q只要指令缓冲站不满,它就自动地向主存控制器发只要指令缓冲站不满,它就自动地向主存控制器发 取指令请求,不断地预取指令。取指令请求,不断地预取指令。指令分析部件q每分析完一条指令,就自动向指令缓冲站发出取下每分析完一条指令,就自动向指令缓冲站发出取下 一条指令的请求。指令取出之后就把指令缓冲站中一条指令的请求。指令取出之后

8、就把指令缓冲站中 的该指令作废。的该指令作废。q指令缓冲站中存放的指令的条数是动态变化的。指令缓冲站中存放的指令的条数是动态变化的。两个程序计数器1515/206/2063.1 重叠执行和先行控制q先行程序计数器先行程序计数器PC1PC1:用于从主存预取指令;用于从主存预取指令;q现行程序计数器现行程序计数器PCPC:用来记录指令分析部件当前正在用来记录指令分析部件当前正在 分析的指令的地址。分析的指令的地址。1.先行控制方式中的一次重叠执行 若取指令阶段的时间很短,可以把这个操作合并 到分析指令中。上述的二次重叠就演变成了一次重叠q把一条指令的执行过程分为把一条指令的执行过程分为分析分析和和

9、执行执行两个阶段;两个阶段;q让前一条指令的让前一条指令的执行执行与后一条指令的与后一条指令的分析分析重叠进行。重叠进行。 1616/206/2063.1 重叠执行和先行控制如果指令分析和指令执行所需要的时间都是t,则采用这种方式连续执行n条指令所需要的时间为: T= (1+n)t控制方式比较简单,得到了广泛应用。1717/206/2063.1 重叠执行和先行控制当指令分析和指令执行所需要的时间不相等时, 其执行过程为: 指令分析部件和指令执行部件存在相互等待的时候,会出指令分析部件和指令执行部件存在相互等待的时候,会出现部件空闲的情况。现部件空闲的情况。1818/206/2063.1 重叠执

10、行和先行控制1.先行控制技术:缓冲技术和预处理技术的结合缓冲技术:在工作速度不固定的两个功能部件之间设置缓冲器,用以平滑它们的工作。预处理技术:预取指令、对指令进行加工以及预取操作数等。2.采用先行控制方式的处理机结构 3.1.2 先行控制1919/206/2063.1 重叠执行和先行控制2020/206/2063.1 重叠执行和先行控制设置了4个缓冲站(平滑主存、指令分析部件、运算器三者之间的工作)(平滑主存、指令分析部件、运算器三者之间的工作)q先行指令缓冲站(前面已讲述)先行指令缓冲站(前面已讲述)q先行操作站先行操作站q先行读数站先行读数站q后行写数站后行写数站 共同特点:共同特点:按

11、先进先出的方式工作,而且都是由一组若按先进先出的方式工作,而且都是由一组若 干个能快速访问的存储单元和相关的控制逻干个能快速访问的存储单元和相关的控制逻 辑组成。辑组成。2121/206/2063.1 重叠执行和先行控制先行操作站q在指令分析部件和运算器之间提供缓冲在指令分析部件和运算器之间提供缓冲q 先行:先行:因为其中的指令对于运算器正在执行的因为其中的指令对于运算器正在执行的 指令来说是后续的,但却被指令来说是后续的,但却被先行先行取出并预处理。取出并预处理。指令分析部件 q从先行指令缓冲站取指令,并进行预处理,加工成从先行指令缓冲站取指令,并进行预处理,加工成 统一格式的统一格式的RR

12、RR型操作命令型操作命令,然后送入先行操作站。,然后送入先行操作站。 q对于不同指令做不同的处理。对于不同指令做不同的处理。2222/206/2063.1 重叠执行和先行控制q寄存器寄存器- -寄存器型(寄存器型(RRRR型)指令:型)指令:可以不作任何处理,直可以不作任何处理,直 接送入。接送入。q操作数来自主存的运算指令:操作数来自主存的运算指令:计算出操作数的有效地计算出操作数的有效地 址,并将该地址送入先行读数站的某个存储单元(设其址,并将该地址送入先行读数站的某个存储单元(设其地址为地址为i i),),同时用同时用i i替换原来指令中的操作数地址码字段。替换原来指令中的操作数地址码字

13、段。q向主存向主存“写数写数”的指令:的指令:把形成的有效地址送入后行写把形成的有效地址送入后行写 数站的某个存储单元(设其地址为数站的某个存储单元(设其地址为j j),),同时用同时用j j替换原替换原来指令中的目标地址码字段。来指令中的目标地址码字段。q立即数型指令:立即数型指令:把指令中的立即数送入读数站(设为第把指令中的立即数送入读数站(设为第l l 个存储单元),同样也用个存储单元),同样也用l l替换原来指令中的立即数字替换原来指令中的立即数字 段。段。2323/206/2063.1 重叠执行和先行控制运算器q从先行操作站取出从先行操作站取出RRRR型型操作命令并执行。操作命令并执

14、行。q每执行完一条,将运算结果写入通用寄存器组或者每执行完一条,将运算结果写入通用寄存器组或者 后行写数站。后行写数站。q继续执行先行操作站中的后续命令。继续执行先行操作站中的后续命令。 先行读数站q作用:作用:接收指令分析部件送来的访问主存的有效地接收指令分析部件送来的访问主存的有效地 址,按顺序依次从主存读取操作数,提供给运算器址,按顺序依次从主存读取操作数,提供给运算器 使用。使用。q先行:先行:因为对于正在执行的指令来说,先行读数站因为对于正在执行的指令来说,先行读数站 中的操作数是中的操作数是先行先行取出的。取出的。2424/206/2063.1 重叠执行和先行控制q每个存储单元由每

15、个存储单元由3 3部分部分组成:组成: 先行地址字段、先行操作数字段、标志字段先行地址字段、先行操作数字段、标志字段n每当从指令分析部件接收有效地址时,将之放每当从指令分析部件接收有效地址时,将之放入先行地址字段,并将地址有效标志置位。入先行地址字段,并将地址有效标志置位。n等到该单元成为队列的第一项时,先行读数站等到该单元成为队列的第一项时,先行读数站会用该地址向主存发出读请求,把取来的操作数会用该地址向主存发出读请求,把取来的操作数放入该单元的先行操作数字段,同时将数据有效标放入该单元的先行操作数字段,同时将数据有效标志置位。志置位。n当以后运算器需要该操作数时,就可以直接从当以后运算器需

16、要该操作数时,就可以直接从先行读数站取得,而不必去访问主存。先行读数站取得,而不必去访问主存。2525/206/2063.1 重叠执行和先行控制后行写数站q作用:作用:接收从运算器送来的结果数据,并负责将之接收从运算器送来的结果数据,并负责将之 写入主存。写入主存。q后行:后行:因为站在运算器的角度来看,结果数据不是在因为站在运算器的角度来看,结果数据不是在相应的指令运算完后立即写入主存,而是由后行写数相应的指令运算完后立即写入主存,而是由后行写数站站滞后滞后写入的。写入的。q每一个存储单元由每一个存储单元由3 3部分部分组成:组成: 后行地址字段、后行数据字段、标志字段后行地址字段、后行数据

17、字段、标志字段 每当从运算器接收数据时,将之放入后行数据字每当从运算器接收数据时,将之放入后行数据字段,并把相应的数据有效标志置位。后行写数站的控段,并把相应的数据有效标志置位。后行写数站的控制逻辑自动向主存发出写数请求。当写数据操作完成制逻辑自动向主存发出写数请求。当写数据操作完成后,也要置位有关标志。后,也要置位有关标志。2626/206/2063.1 重叠执行和先行控制1.采用先行控制后的一次重叠执行 指令分析部件在不间断地分析指令,而指令执行部件则在指令分析部件在不间断地分析指令,而指令执行部件则在不间断地执行指令,它们都始终处于忙碌状态。不间断地执行指令,它们都始终处于忙碌状态。27

18、27/206/2063.1 重叠执行和先行控制理想情况下,指令执行部件应该是一直忙碌的。处理机连续执行n条指令所需要的时间为2828/206/206采用先行控制方式时一个程序的执行情况:采用先行控制方式时一个程序的执行情况:2929/206/2061.工业生产流水线生产过程分为多道工序,每道工序专人负责每隔一定的时间出一件产品特点q每件产品的生产时间并没有缩短每件产品的生产时间并没有缩短q但由于产品生产在时间上错开,重叠进行,达到总生但由于产品生产在时间上错开,重叠进行,达到总生产速度(吞吐率)的提高产速度(吞吐率)的提高3.2 流水线的基本概念3.2.1 什么是流水线3030/206/206

19、3.2 流水线的基本概念2.流水线技术把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他的子过程并行进行。3.流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度。3131/206/2063.2 流水线的基本概念1.指令流水线把指令的解释过程分解为分析和执行两个子过程,并让这两个子过程分别用独立的分析部件和执行部件来实现。理想情况:速度提高一倍4段指令流水线 3232/206/2063.2 流水线的基本概念1.浮点加法流水线把流水线技术应用于运算的

20、执行过程,就形成了 运算操作流水线,也称为部件级流水线。把浮点加法的全过程分解为求阶差、对阶、尾数 相加、规格化4个子过程。 理想情况:速度提高3倍1.时空图时空图从时间和空间两个方面描述了流水线的工作过程。时空图中,横坐标代表时间,纵坐标代表流水线的各个段。 4段指令流水线的时空图3434/206/2063.2 流水线的基本概念7.流水技术的特点流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。 时间长的段将成为时间长的段将成为流水线的瓶颈。流水线的瓶颈。3535/206/2063.2 流水线的基本

21、概念流水线每一个功能部件的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。q作用:作用:在相邻的两段之间传送数据,以保证提供后在相邻的两段之间传送数据,以保证提供后 面要用到的数据,并把各段的处理工作相互隔离。面要用到的数据,并把各段的处理工作相互隔离。流水技术适合于大量重复的过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。 流水线需要有通过时间和排空时间。q通过时间:通过时间:第一个任务从进入流水线到流出结果第一个任务从进入流水线到流出结果 所需的时间。所需的时间。q排空时间:排空时间:最后一个任务从进入流水线到流出结最后一个任务从进入流水线到流出结 果所需的时间。果所需的时

22、间。3636/206/2063.2 流水线的基本概念 从不同的角度和观点,把流水线分成多种不同的种类。1.单功能流水线与多功能流水线 (按照流水线所完成的功能来分类)(按照流水线所完成的功能来分类)单功能流水线:只能完成一种固定功能的流水线。多功能流水线:流水线的各段可以进行不同的 连接,以实现不同的功能。例:例: ASCASC的多功能流水线的多功能流水线3.2.2 流水线的分类3838/206/2063.2 流水线的基本概念2.静态流水线与动态流水线(按照同一时间内各段之间的连接方式对多功能流水线做(按照同一时间内各段之间的连接方式对多功能流水线做进一步的分类)进一步的分类)静态流水线:在同

23、一时间内,多功能流水线中的 各段只能按同一种功能的连接方式工作。q对于静态流水线来说,只有当输入的是一串相同的对于静态流水线来说,只有当输入的是一串相同的 运算任务时,流水的效率才能得到充分的发挥。运算任务时,流水的效率才能得到充分的发挥。例如:例如:ASCASC的的8 8段流水线段流水线3939/206/2064040/206/2063.2 流水线的基本概念动态流水线:在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。q优点:优点:灵活灵活 能够提高流水线各段的使用率,从而提高处理速度。能够提高流水线各段的使用率,从而提高处理速度。q缺点:缺点:控制复杂。控制复杂。

24、4242/206/2063.2 流水线的基本概念3.部件级、处理机级及处理机间流水线(按照流水的级别来进行分类)(按照流水的级别来进行分类)部件级流水线(运算操作流水线):把处理机的算术逻辑运算部件分段,使得各种类型的运算操作能够按流水方式进行。处理机级流水线(指令流水线):把指令的解释执行过程按照流水方式处理。把一条指令的执行过程分解为若干个子过程,每个子过程在独立的功能部件中执行。 例如:前面的例如:前面的4 4段段指令流水线指令流水线4343/206/2063.2 流水线的基本概念处理机间流水线(宏流水线):它是由两个或者 两个以上的处理机串行连接起来,对同一数据流 进行处理,每个处理机

25、完成整个任务中的一部 分。 动画解析4444/206/2063.2 流水线的基本概念1.线性流水线与非线性流水线(按照流水线中是否有反馈回路来进行分类)(按照流水线中是否有反馈回路来进行分类)线性流水线:流水线的各段串行连接,没有反馈回路。数据通过流水线中的各段时,每一个段最多只流过一次。非线性流水线:流水线中除了有串行的连接外,还有反馈回路。S1S2S3S4输入输出线性流水线能够用流水线连接图唯一表示线性流水线能够用流水线连接图唯一表示对于非线形流水线非线形流水线,连接图连接图不能唯一表示工作流程,因此,引入流水线预约表预约表4545/206/2063.2 流水线的基本概念4646/206/

26、206非线性流水线必须用流水线连接图和流水线预约表共同表示非线性流水线必须用流水线连接图和流水线预约表共同表示4747/206/206 一张预约表可能与多个流水线连接图相对应一张预约表可能与多个流水线连接图相对应4848/206/206 一个流水线连接图与多张预约表对应一个流水线连接图与多张预约表对应4949/206/2063.2 流水线的基本概念1.顺序流水线与乱序流水线(根据任务流入和流出的顺序是否相同来进行分类(根据任务流入和流出的顺序是否相同来进行分类)顺序流水线:流水线输出端任务流出的顺序与输 入端任务流入的顺序完全相同。每一个任务在流 水线的各段中是一个跟着一个顺序流动的。乱序流水

27、线:流水线输出端任务流出的顺序与输 入端任务流入的顺序可以不同,允许后进入流水 线的任务先完成(从输出端流出)。 也称为无序流水线、错序流水线、异步流水线也称为无序流水线、错序流水线、异步流水线非线性流水线的调度问题 确定什么时候向流水线引进新的任务,才能使该任务不会与先前进入流水线的任务发生冲突争用流水段。争用流水段。5050/206/2063.2 流水线的基本概念6.标量处理机与向量流水处理机 把指令执行部件中采用了流水线的处理机称为流 水线处理机。q标量处理机:标量处理机:处理机不具有向量数据表示和向量处理机不具有向量数据表示和向量 指令,仅对标量数据进行流水处理。q向量流水处理机:向量

28、流水处理机:具有向量数据表示和向量指令具有向量数据表示和向量指令 的处理机。 向量数据表示和流水技术的结合。向量数据表示和流水技术的结合。5151/206/206 吞吐率:在单位时间内流水线所完成的任务数量或输 出结果的数量。3.3 流水线的性能指标3.3.1 吞吐率n:任务数Tk:处理完成n个任务所用的时间5252/206/2063.3 流水线的性能指标1.各段时间均相等的流水线各段时间均相等的流水线时空图5353/206/2063.3 流水线的性能指标k段线性流水线完成n个连续任务所需要的总时间为Tkkt(n-1)t(kn-1)t 流水线的实际吞吐率最大吞吐率5454/206/2063.3

29、 流水线的性能指标最大吞吐率与实际吞吐率的关系 q流水线的实际吞吐率小于最大吞吐率,它除了与每流水线的实际吞吐率小于最大吞吐率,它除了与每个段的时间有关外,还与流水线的段数个段的时间有关外,还与流水线的段数k k以及输入到以及输入到流水线中的任务数流水线中的任务数n n等有关。等有关。q只有当只有当n nk k时,才有时,才有TPTPTPTPmaxmax。 5555/206/2063.3 流水线的性能指标2.各段时间不完全相等的流水线 各段时间不等的流水线及其时空图q一条一条4 4段段的流水线的流水线qS1S1,S3S3,S4S4各段的时间:各段的时间:t tqS2S2的时间:的时间:33t

30、t (瓶颈段)瓶颈段)流水线中这种时间最长的段称为流水线的瓶颈段。 5656/206/2063.3 流水线的性能指标5757/206/2063.3 流水线的性能指标各段时间不等的流水线的实际吞吐率:( t ti i为第为第i i段的时间,共有段的时间,共有k k个段个段 )流水线的最大吞吐率为5858/206/2063.3 流水线的性能指标例如:一条4段的流水线中,S1,S2,S4各段的时间都是t,唯有S3的时间是3t。 最大吞吐率为5959/206/2063.3 流水线的性能指标1.解决流水线瓶颈问题的常用方法细分瓶颈段 例如:例如:对前面的对前面的4 4段段流水线流水线把瓶颈段把瓶颈段S

31、S3 3细分为细分为3 3个子流水线段:个子流水线段:S S3a3a,S S3b3b,S S3c3c改进后的流水线的吞吐率改进后的流水线的吞吐率 :6060/206/2063.3 流水线的性能指标重复设置瓶颈段缺点:缺点:控制逻辑比较复杂,所需的硬件增加了。控制逻辑比较复杂,所需的硬件增加了。例如:例如:对前面的对前面的4 4段流水线段流水线 重复设置瓶颈段重复设置瓶颈段S S3 3:S S3a3a,S S3b3b,S S3c3c6161/206/2063.3 流水线的性能指标重复设置瓶颈段后的时空图重复设置瓶颈段后的时空图6262/206/2063.3 流水线的性能指标加速比:完成同样一批任

32、务,不使用流水线所用的时间 与使用流水线所用的时间之比。假设:不使用流水线(即顺序执行)所用的间假设:不使用流水线(即顺序执行)所用的间为为T Ts s,使用流水线后所用的时间为使用流水线后所用的时间为T Tk k,则该流水则该流水线的加速比为线的加速比为3.3.2 加速比6363/206/2063.3 流水线的性能指标1.流水线各段时间相等(都是t)一条k段流水线完成n个连续任务 所需要的时间为所需要的时间为 Tk = (kn-1)t顺序执行n个任务 所需要的时间:所需要的时间: Ts= nkt流水线的实际加速比为6464/206/2063.3 流水线的性能指标最大加速比当当n nk k时,

33、时,S S k k思考:思考:流水线的段数愈多愈好?流水线的段数愈多愈好? 6565/206/2063.3 流水线的性能指标1.流水线的各段时间不完全相等时一条k段流水线完成n个连续任务的实际加速比为6666/206/2063.3 流水线的性能指标效率:流水线中的设备实际使用时间与整个运行时间 的比值,即流水线设备的利用率。由于流水线有通过时间和排空时间,所以在连续完成由于流水线有通过时间和排空时间,所以在连续完成n n个个任务的时间内,各段并不是满负荷地工作。任务的时间内,各段并不是满负荷地工作。1.各段时间相等各段的效率ei相同3.3.3 效率6767/206/2063.3 流水线的性能指

34、标整条流水线的效率为 可以写成 最高效率为 当当n nk k时,时,E E11。 6868/206/2063.3 流水线的性能指标当流水线各段时间相等时,流水线的效率与吞吐率 成正比。 E=TPt 1.流水线的效率是流水线的实际加速比S与它的最大加速 比k的比值。 当当E E=1=1时,时,S S= =k k,实际加速比达到最大。实际加速比达到最大。6969/206/2063.3 流水线的性能指标1.从时空图上看,效率就是n个任务占用的时空面积和 k个段总的时空面积之比。当各段时间不相等时7070/206/2063.3 流水线的性能指标例例3.13.1 设在下图所示的设在下图所示的静态流水线静

35、态流水线上计算:上计算: 流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中,流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中,试计算其吞吐率、加速比和效率。试计算其吞吐率、加速比和效率。3.3.4 流水线的性能分析举例( (每段的时间都为每段的时间都为t t) )7171/206/2063.3 流水线的性能指标解解:(1 1)选择适合于流水线工作的算法选择适合于流水线工作的算法q先计算先计算A A1 1+ +B B1 1、A A2 2+ +B B2 2、A A3 3+ +B B3 3和和A A4 4+ +B B4 4;q再计算再计算( (A A1 1+ +B B1 1) )(

36、(A A2 2+ +B B2 2) )和和( (A A3 3+ +B B3 3) )( (A A4 4+ +B B4 4) );q然后求总的乘积结果。然后求总的乘积结果。(2 2)画出时空图)画出时空图 3.3 流水线的性能指标7373/206/2063.3 流水线的性能指标p在在1818个个t t时间中,给出了时间中,给出了7 7个个结果。吞吐率为:结果。吞吐率为: p 不用流水线,由于一次求和需不用流水线,由于一次求和需66t t,一次求积需一次求积需44t t, 则产生上述则产生上述7 7个结果共需个结果共需(4 46+36+34 4)t t = 36 = 36t t 加速比为加速比为(

37、3 3)计算性能)计算性能7474/206/2063.3 流水线的性能指标p 流水线的效率流水线的效率 可以看出,在求解此问题时,该流水线的效率不高。 为什么?7575/206/2063.3 流水线的性能指标主要原因q多功能流水线在做某一种运算时,总有一些段是空多功能流水线在做某一种运算时,总有一些段是空闲的。闲的。q静态流水线在进行功能切换时,要等前一种运算全静态流水线在进行功能切换时,要等前一种运算全部流出流水线后才能进行后面的运算。部流出流水线后才能进行后面的运算。q运算之间存在关联,后面有些运算要用到前面运算运算之间存在关联,后面有些运算要用到前面运算的结果。的结果。q流水线的工作过程

38、有建立与排空部分。流水线的工作过程有建立与排空部分。 7676/206/2063.3 流水线的性能指标例例3.2 3.2 有一条有一条动态多功能流水线动态多功能流水线由由5 5段组成,加法用段组成,加法用1 1、3 3、4 4、5 5段,段,乘法用乘法用1 1、2 2、5 5段,第段,第2 2段的时间为段的时间为22t t,其余各段时间均为其余各段时间均为t t,而且流水线的输出可以直接返回输入端或暂存于相应的流水寄而且流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中。若在该流水线上计算存器中。若在该流水线上计算: : 试计算其吞吐率、加速比和效率。试计算其吞吐率、加速比和效率。777

39、7/206/2063.3 流水线的性能指标解解: : (1) (1) 选择适合于流水线工作的算法选择适合于流水线工作的算法p应先计算应先计算A A1 1B B1 1、A A2 2B B2 2、A A3 3B B3 3和和A A4 4B B4 4;p再计算再计算( (A A1 1B B1)1)( (A A2 2B B2)2) ( (A A3 3B B3)3)( (A A4 4B B4)4);p然后求总的累加结果。然后求总的累加结果。(2) (2) 画出时空图画出时空图(3) (3) 计算性能计算性能7878/206/2063.3 流水线的性能指标7979/206/2063.3 流水线的性能指标

40、下面我们再看以下例子:下面我们再看以下例子: 例例 在在静态流水线静态流水线上计算上计算: : 求:吞吐率,加速比,效率。求:吞吐率,加速比,效率。解:解: (1) (1) 确定适合于流水处理的确定适合于流水处理的计算过程计算过程 (2) (2) 画时空图画时空图 (3) (3) 性能计算性能计算 吞吐率吞吐率 TPTP7 7(19(19t t) ) 加速比加速比 S S(28(28t t) )(19(19t t) )1.471.47 效率效率 E E(4(44 43 34)4)(5(519)19)0.2950.2958080/206/2063.3 流水线的性能指标1.瓶颈问题理想情况下,流水

41、线在工作时,其中的任务是同步地每一个时钟周期往前流动一段。当流水线各段不均匀时,机器的时钟周期取决于瓶颈段的延迟时间。在设计流水线时,要尽可能使各段时间相等。2.流水线的额外开销流水寄存器延迟时钟偏移开销3.3.5 流水线设计中的若干问题8181/206/2063.3 流水线的性能指标流水寄存器需要建立时间和传输延迟q建立时间:建立时间:在触发写操作的时钟信号到达之前,寄在触发写操作的时钟信号到达之前,寄 存器输入必须保持稳定的时间。存器输入必须保持稳定的时间。q传输延迟:传输延迟:时钟信号到达后到寄存器输出可用的时时钟信号到达后到寄存器输出可用的时 间。间。时钟偏移开销q流水线中,时钟到达各

42、流水寄存器的最大差值时间。流水线中,时钟到达各流水寄存器的最大差值时间。(时钟到达各流水寄存器的时间不是完全相同)(时钟到达各流水寄存器的时间不是完全相同)8282/206/2063.3 流水线的性能指标几个问题q流水线并不能减少(而且一般是增加)单条指令的流水线并不能减少(而且一般是增加)单条指令的执行时间,但却能提高吞吐率。执行时间,但却能提高吞吐率。q增加流水线的深度(段数)可以提高流水线的性能。增加流水线的深度(段数)可以提高流水线的性能。q流水线的深度受限于流水线的额外开销。流水线的深度受限于流水线的额外开销。q当时钟周期小到与额外开销相同时,流水已没意义。当时钟周期小到与额外开销相

43、同时,流水已没意义。因为这时在每一个时钟周期中已没有时间来做有用因为这时在每一个时钟周期中已没有时间来做有用的工作。的工作。3.冲突问题 流水线设计中要解决的重要问题之一。 资源冲突指令相关8383/206/206介绍一个经典的5段RISC流水线 首先讨论在非流水情况下是如何实现的1.一条指令的执行过程分为以下5个周期:取指令周期(IF)qIR IR MemPCMemPC 。qPCPC值加值加4 4。(假设每条指令占。(假设每条指令占4 4个字节)个字节) 3.4 流水线的相关与冲突3.4.1 一个经典的5段流水线8484/206/2063.4 流水线的相关与冲突指令译码/读寄存器周期(ID)

44、q译码。译码。q用用IRIR中的寄存器编号去访问通用寄存器组,读出所需中的寄存器编号去访问通用寄存器组,读出所需的操作数。的操作数。执行/有效地址计算周期(EX) 不同指令所进行的操作不同:q存储器访问指令:存储器访问指令:ALUALU把所指定的寄存器的内容与偏把所指定的寄存器的内容与偏 移量相加,形成用于访存的有效地址。移量相加,形成用于访存的有效地址。q寄存器寄存器寄存器寄存器ALUALU指令:指令:ALUALU按照操作码指定的操按照操作码指定的操 作对从通用寄存器组中读取的数据进行运算。作对从通用寄存器组中读取的数据进行运算。8585/206/2063.4 流水线的相关与冲突q寄存器立即

45、数寄存器立即数ALUALU指令:指令:ALUALU按照操作码指定的操按照操作码指定的操 作对从通用寄存器组中读取的第一操作数和立即数作对从通用寄存器组中读取的第一操作数和立即数 进行运算。进行运算。q分支指令:分支指令:ALUALU把偏移量与把偏移量与PCPC值相加,形成转移目标值相加,形成转移目标 的地址。同时,对在前一个周期读出的操作数进行的地址。同时,对在前一个周期读出的操作数进行 判断,确定分支是否成功。判断,确定分支是否成功。存储器访问分支完成周期(MEM) 该周期处理的指令只有load、store和分支指令。 其他类型的指令在此周期不做任何操作。8686/206/2063.4 流水

46、线的相关与冲突qloadload和和storestore指令指令loadload指令:指令:用上一个周期计算出的有效地址从存储器中用上一个周期计算出的有效地址从存储器中 读出相应的数据。读出相应的数据。storestore指令:指令:把指定的数据写入这个有效地址所指出的存把指定的数据写入这个有效地址所指出的存 储器单元。储器单元。q分支指令分支指令 分支分支“成功成功”,就把转移目标地址送入,就把转移目标地址送入PCPC。 分支指令执行完成。分支指令执行完成。8787/206/2063.4 流水线的相关与冲突写回周期(WB) ALU运算指令和load指令在这个周期把结果数据写入通用寄存器组。

47、ALUALU运算指令:运算指令:结果数据来自结果数据来自ALUALU。 loadload指令:指令:结果数据来自存储器系统。结果数据来自存储器系统。 在这个实现方案中:p分支指令需要分支指令需要4 4个时钟个时钟周期(如果把分支指令的执行周期(如果把分支指令的执行 提前到提前到IDID周期,则只需要周期,则只需要2 2个个周期)。周期)。pstorestore指令需要指令需要4 4个个周期。周期。p其他指令需要其他指令需要5 5个个周期才能完成。周期才能完成。2.将上述实现方案修改为流水线实现一个经典的5段流水线 q每一个周期作为一个流水段。每一个周期作为一个流水段。q在各段之间加上锁存器(流

48、水寄存器)。在各段之间加上锁存器(流水寄存器)。 8989/206/2063.4 流水线的相关与冲突5段流水线的两种描述方式q第一种描述第一种描述(类似于时空图)(类似于时空图)第二种描述(按时间错开的数据通路序列)9191/206/206 1.采用流水线方式实现时,应解决以下几个问题:要保证不会在同一时钟周期要求同一个功能段做 两件不同的工作。例如,不能要求例如,不能要求ALUALU同时做有效地址计算和算术运算。同时做有效地址计算和算术运算。避免IF段的访存(取指令)与MEM段的访存(读/写数据)发生冲突。q可以采用分离的指令存储器和数据存储器;可以采用分离的指令存储器和数据存储器;q一般采

49、用分离的指令一般采用分离的指令CacheCache和数据和数据CacheCache。ID段和WB段都要访问同一寄存器文件。 IDID段:读段:读WBWB段:写段:写3.4 流水线的相关与冲突9292/206/2063.4 流水线的相关与冲突如何解决对同一寄存器的访问冲突?如何解决对同一寄存器的访问冲突? 把写操作安排在时钟周期的前半拍完成,把读操作把写操作安排在时钟周期的前半拍完成,把读操作安排在后半拍完成。安排在后半拍完成。考虑PC的问题q流水线为了能够每个时钟周期启动一条新的指令,流水线为了能够每个时钟周期启动一条新的指令,就必须在每个时钟周期进行就必须在每个时钟周期进行PCPC值的加值的

50、加4 4操作,并保留操作,并保留新的新的PCPC值。这种操作值。这种操作必须在必须在IFIF段完成,段完成,以便为取下以便为取下一条指令做好准备。一条指令做好准备。 (需设置一个专门的加法器)(需设置一个专门的加法器)q但分支指令也可能改变但分支指令也可能改变P PC C的值,而且是在的值,而且是在MEMMEM段段进行,进行,这会导致冲突。这会导致冲突。请考虑一下,如何处理分支指令?请考虑一下,如何处理分支指令?9393/206/2063.4 流水线的相关与冲突相关:两条指令之间存在某种依赖关系。 如果两条指令相关,则它们就有可能不能在流水线中重如果两条指令相关,则它们就有可能不能在流水线中重

51、叠执行或者只能部分重叠执行。叠执行或者只能部分重叠执行。相关有3种类型q数据相关(也称真数据相关)数据相关(也称真数据相关)q名相关名相关q控制相关控制相关3.4.2 相关与流水线冲突3.4.2.1 相关9494/206/2063.4 流水线的相关与冲突1.数据相关 对于两条指令i(在前,下同)和j(在后,下同),如果满足下述条件之一,则称指令j与指令i数据相关。 q指令指令j j使用指令使用指令i i产生的结果;产生的结果;q指令指令j j与指令与指令k k数据相关,而指令数据相关,而指令k k又与指令又与指令i i数据相关。数据相关。数据相关具有传递性。 数据相关反映了数据的流动关系,即如

52、何从其产生者流动到其消费者。 9595/206/2063.4 流水线的相关与冲突 例如:例如:下面这一段代码存在数据相关。下面这一段代码存在数据相关。LoopLoop: L.D L.D F0F0,0 0(R1R1)/ F0/ F0为数组元素为数组元素 ADD.D ADD.D F4F4,F0F0,F2F2/ / 加上加上F2F2中的值中的值 S.D S.D F4F4,0 0(R1R1)/ / 保存结果保存结果 DADDIU DADDIU R1R1,R1R1,8 8/ / 数组指针递减数组指针递减8 8个字节个字节 BNE BNE R1R1,R2R2,LoopLoop/ / 如果如果R1R2R1R

53、2,则分支则分支 9696/206/2063.4 流水线的相关与冲突当数据的流动是经过寄存器时,相关的检测比较 直观和容易。当数据的流动是经过存储器时,检测比较复杂。q相同形式的地址其有效地址未必相同。相同形式的地址其有效地址未必相同。q形式不同的地址其有效地址却可能相同。形式不同的地址其有效地址却可能相同。1.名相关名:指令所访问的寄存器或存储器单元的名称。如果两条指令使用相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关。9797/206/2063.4 流水线的相关与冲突指令j与指令i之间的名相关有两种:q反相关:反相关:如果指令如果指令j j写的名与指令写的名与指令i i读的

54、名相同,则读的名相同,则 称指令称指令i i和和j j发生了反相关。发生了反相关。 指令指令j j写的名指令写的名指令i i读的名读的名q输出相关:输出相关:如果指令如果指令j j和指令和指令i i写相同的名,则称指写相同的名,则称指 令令i i和和j j发生了输出相关。发生了输出相关。 指令指令j j写的名指令写的名指令i i写的名写的名9898/206/2063.4 流水线的相关与冲突名相关的两条指令之间并没有数据的传送。如果一条指令中的名改变了,并不影响另外一条指令的执行。换名技术q换名技术:换名技术:通过改变指令中操作数的名来消除名相关。通过改变指令中操作数的名来消除名相关。q对于寄存

55、器操作数进行换名称为对于寄存器操作数进行换名称为寄存器换名。寄存器换名。既可以用编译器静态实现,也可以用硬件动态完成。既可以用编译器静态实现,也可以用硬件动态完成。9999/206/2063.4 流水线的相关与冲突例如:例如:考虑下述代码:考虑下述代码: DIV.DDIV.DF2F2,F6F6,F4F4 ADD.D ADD.DF6F6,F0F0,F12F12 SUB.D SUB.DF8F8,F6F6,F14F14 DIV.DDIV.D和和ADD.DADD.D存在反相关。存在反相关。 进行寄存器换名(进行寄存器换名(F6F6换成换成S S)后,变成:后,变成: DIV.DDIV.DF2F2,F6

56、F6,F4F4 ADD.D ADD.DS S,F0F0,F12F12 SUB.D SUB.DF8F8,S S,F14 F14 100100/206/2063.4 流水线的相关与冲突1.控制相关 控制相关是指由分支指令引起的相关。q为了保证程序应有的执行顺序,必须严格按控制相为了保证程序应有的执行顺序,必须严格按控制相 关确定的顺序执行。关确定的顺序执行。典型的程序结构是“if-then”结构。请看一个示例:if p1 if p1 S1 S1; ;S S;if p2 if p2 S2 S2; ;101101/206/2063.4 流水线的相关与冲突控制相关带来了以下两个限制:q与一条分支指令控制

57、相关的指令不能被移与一条分支指令控制相关的指令不能被移到该分支之前,否则这些指令就不受该分到该分支之前,否则这些指令就不受该分支控制了。支控制了。 对于上述的例子,对于上述的例子,thenthen 部分中的指令部分中的指令不能移到不能移到ifif语句之前。语句之前。 q如果一条指令与某分支指令不存在控制相如果一条指令与某分支指令不存在控制相关,就不能把该指令移到该分支之后。关,就不能把该指令移到该分支之后。 对于上述的例子,不能把对于上述的例子,不能把S S移到移到ifif语句语句的的thenthen部分中。部分中。if p1 if p1 S1 S1; ;S S;if p2 if p2 S2

58、S2; ;102102/206/2063.4 流水线的相关与冲突 流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。 流水线冲突有3种类型:q结构冲突:结构冲突:因硬件资源满足不了指令重叠执行的要因硬件资源满足不了指令重叠执行的要 求而发生的冲突。求而发生的冲突。q数据冲突:数据冲突:当指令在流水线中重叠执行时,因需要当指令在流水线中重叠执行时,因需要 用到前面指令的执行结果而发生的冲突。用到前面指令的执行结果而发生的冲突。q控制冲突:控制冲突:流水线遇到分支指令和其他会改变流水线遇到分支指令和其他会改变PCPC值值 的指令所引起的冲突。的指

59、令所引起的冲突。3.4.2.2 流水线冲突103103/206/2063.4 流水线的相关与冲突带来的几个问题:导致错误的执行结果。流水线可能会出现停顿,从而降低流水线的效率 和实际的加速比。约定:当一条指令被暂停时,在该暂停指令之后流出的所有指令都要被暂停,而在该暂停指令之前流出的指令则继续进行(否则就永远无法消除冲突)。104104/206/2063.4 流水线的相关与冲突1.结构冲突在流水线处理机中,为了能够使各种组合的指令 都能顺利地重叠执行,需要对功能部件进行流水 或重复设置资源。如果某种指令组合因为资源冲突而不能正常执 行,则称该处理机有结构冲突。常见的导致结构相关的原因:q功能部

60、件不是完全流水功能部件不是完全流水q资源份数不够资源份数不够105105/206/2063.4 流水线的相关与冲突结构冲突举例:访存冲突 有些流水线处理机只有一个存储器,将数据和指令放在一起,访存指令会导致访存冲突。q解决办法解决办法:插入暂停周期插入暂停周期 (“流水线气泡流水线气泡”或或“气泡气泡”) 引入暂停后的时空图引入暂停后的时空图q解决方法解决方法: 设置相互独立的指令存储器和数据存储器设置相互独立的指令存储器和数据存储器 或设置相互独立的指令或设置相互独立的指令CacheCache和数据和数据CacheCache。106106/206/2063.4 流水线的相关与冲突由于访问同一

61、个存储器而引起的结构冲突由于访问同一个存储器而引起的结构冲突 107107/206/2063.4 流水线的相关与冲突为消除结构冲突而插入的流水线气泡为消除结构冲突而插入的流水线气泡 108108/206/2063.4 流水线的相关与冲突引入暂停后的时空图引入暂停后的时空图指令编号指令编号 时钟周期时钟周期 1 12 23 34 45 56 67 78 89 91010指令指令i i IF IF ID ID EX EX MEM MEM WB WB 指令指令i+1 i+1 IF IF ID ID EX EX MEM MEM WB WB 指令指令i+2 i+2 IF IF ID ID EX EX M

62、EM MEM WB WB WB WB 指令指令i+3 i+3 stallstall IFIFID ID EX EX MEM MEM WB WB 指令指令i+4 i+4 IFIFID ID EX EX MEM MEM WB WB 指令指令i+5 i+5 IFIFIDIDEX EX MEM MEM 109109/206/2063.4 流水线的相关与冲突有时流水线设计者允许结构冲突的存在主要原因:主要原因:减少硬件成本减少硬件成本q如果把流水线中的所有功能单元完全流水化,或者如果把流水线中的所有功能单元完全流水化,或者 重复设置足够份数,那么所花费的成本将相当高。重复设置足够份数,那么所花费的成本将

63、相当高。110110/206/2063.4 流水线的相关与冲突 DADD DADD R1R1,R2R2,R3R3 DSUB R4 DSUB R4,R1R1,R5R5 XOR R6 XOR R6,R1R1,R7R7 AND R8 AND R8,R1R1,R9R9 OR R10 OR R10,R1R1,R11R112、数据冲突 当相关的指令靠得足够近时,它们在流水线中的重叠执行或者重新排序会改变指令读/写操作数的顺序,使之不同于它们非流水实现时的顺序,则发生了数据冲突。111111/206/2063.4 流水线的相关与冲突流水线的数据冲突举例流水线的数据冲突举例 112112/206/2063.4

64、 流水线的相关与冲突根据指令读访问和写访问的顺序,可以将数据冲突分为3种类型。 考虑考虑两条指令两条指令i i和和j j ,且,且i i在在j j之前进入流水线,可能发生之前进入流水线,可能发生的数据冲突有:的数据冲突有:q写后读冲突(写后读冲突(RAWRAW) 在在 i i 写入之前,写入之前,j j 先去读。先去读。j j 读出的内容是错误的。读出的内容是错误的。这是最常见的一种数据冲突,它对应于真数据相关。这是最常见的一种数据冲突,它对应于真数据相关。 113113/206/2063.4 流水线的相关与冲突q写后写冲突(写后写冲突(WAWWAW) 在在 i i 写入之前,写入之前,j j

65、 先写。先写。 最后写入的结果是最后写入的结果是 i i 的。错误!的。错误!这种冲突对应于输出相关。这种冲突对应于输出相关。 写后写冲突仅发生在这样的流水线中:n流水线中不只一个段可以进行写操作。流水线中不只一个段可以进行写操作。n当先前某条指令停顿时,允许其后续指令继续前进。当先前某条指令停顿时,允许其后续指令继续前进。前面介绍的5段流水线不会发生写后写冲突。(只在WB段写寄存器) 114114/206/2063.4 流水线的相关与冲突q读后写冲突(读后写冲突(WARWAR) 在在 i i 读之前,读之前,j j 先写。先写。 i i 读出的内容是错误的!读出的内容是错误的!由反相关引起。

66、由反相关引起。 这种冲突仅发生在这样的情况下:n有些指令的写结果操作提前了,而且有些指令有些指令的写结果操作提前了,而且有些指令 的读操作滞后了。的读操作滞后了。n指令被重新排序了。指令被重新排序了。 读后写冲突在前述5段流水线中不会发生。(读操作(在(读操作(在IDID段)在写结果操作(在段)在写结果操作(在WBWB段)之前)段)之前)115115/206/206在乱序流动方式中,可能发生三种数据相关在乱序流动方式中,可能发生三种数据相关 写写相关写写相关 k: LOAD F1, A ;F1(A) 写读相关写读相关 k+1:FADD F2, F1 ;F2(F2)+(F1) k+2:FMUL

67、F1, F3 ;F1(F1)(F3) k+3:STORE F1, B ;B(F1)读写相关读写相关116116/206/2063.4 流水线的相关与冲突通过定向技术减少数据冲突引起的停顿 (定向技术也称为(定向技术也称为旁路技术旁路技术或短路)或短路)q关键思想:关键思想:在某条指令产生计算结果之前,其他指在某条指令产生计算结果之前,其他指 令并不真正立即需要该计算结果,如果能够将该计令并不真正立即需要该计算结果,如果能够将该计 算结果从其产生的地方直接送到其他指令需要它的算结果从其产生的地方直接送到其他指令需要它的 地方,那么就可以避免停顿。地方,那么就可以避免停顿。q采用定向技术消除上例中

68、的相关采用定向技术消除上例中的相关 工作过程演示工作过程演示117117/206/2063.4 流水线的相关与冲突采用定向技术后的流水线数据通路采用定向技术后的流水线数据通路 118118/206/2063.4 流水线的相关与冲突q当定向硬件检测到前面某条指令的结果寄存器就是当前当定向硬件检测到前面某条指令的结果寄存器就是当前指令的源寄存器时,控制逻辑会将前面那条指令的结果指令的源寄存器时,控制逻辑会将前面那条指令的结果直接从其产生的地方定向到当前指令所需的位置。直接从其产生的地方定向到当前指令所需的位置。q结果数据不仅可以从某一功能部件的输出定向到其自身结果数据不仅可以从某一功能部件的输出定

69、向到其自身的输入,而且还可以定向到其他功能部件的输入。的输入,而且还可以定向到其他功能部件的输入。 举例举例: DSUB DSUB R1R1,R2R2,R3R3LD LD R5R5,0 0(R1R1)SD SD R5R5,1212(R1R1)119119/206/2063.4 流水线的相关与冲突更多的定向路径更多的定向路径 时间(时钟周期) 1 2 3 4 5 6 IM Reg ALU DM Reg IM Reg ALU DM Reg IM Reg ALU DM IM Reg ALU LD R1,0(R2) DADD R4,R1,R5 AND R6,R1,R7 XOR R8,R1,R9 120

70、120/206/2063.4 流水线的相关与冲突需要停顿的数据冲突 q并不是所有的数据冲突都可以用定向技术来解决。并不是所有的数据冲突都可以用定向技术来解决。 LD LD R1R1,0 0(R2R2)DADD R4DADD R4,R1R1,R5R5AND R6AND R6,R1R1,R7R7XOR R8XOR R8,R1R1,R9R9121121/206/2063.4 流水线的相关与冲突无法将无法将LDLD指令的结果定向到指令的结果定向到DADDDADD指令指令 122122/206/2063.4 流水线的相关与冲突流水线互锁机制插入气泡后的执行过程流水线互锁机制插入气泡后的执行过程 q 增加

71、增加流水线互锁硬件流水线互锁硬件,插入,插入“暂停暂停”。 作用:作用:检测发现数据冲突,并使检测发现数据冲突,并使流水线停顿流水线停顿,直至冲突消失。,直至冲突消失。123123/206/2063.4 流水线的相关与冲突LD R1LD R1,0 0(R2R2) IF IF ID ID EX EX MEM MEM WB WB DADD R4DADD R4,R1R1,R5 R5 IF IF ID ID EX EX MEM MEM WB WB AND R6AND R6,R1R1,R7 R7 IF IF ID ID EX EX MEM MEM WB WB XOR R8XOR R8,R1R1,R9 R

72、9 IF IF ID ID EX EX MEM MEM WB WB LD R1LD R1,0 0(R2R2) IF IF ID ID EX EX MEM MEM WB WB DADD R4DADD R4,R1R1,R5 R5 IF IF ID ID stall stall EX EX MEM MEM WB WB AND R6AND R6,R1R1,R7 R7 IF IF stall stall ID ID EX EX MEM MEM WB WB XOR R8XOR R8,R1R1,R9 R9 stall stall IF IF ID ID EX EX MEM MEM 插入停顿前后的流水线时空图

73、插入停顿前后的流水线时空图 124124/206/2063.4 流水线的相关与冲突LD LD RbRb,B B IF IF ID ID EX EX MEM MEM WB WB LD LD RcRc,C C IF IF ID ID EX EX EX EX MEM MEM WB WB WB WB DADD RaDADD Ra,RbRb,RcRc IF IF ID ID stallstall EX EX MEM MEM WB WB SD Ra SD Ra ,A A IF IF stallstall ID ID EX EX MEM MEM WB WB 依靠编译器解决数据冲突 让编译器重新组织指令顺序来

74、消除冲突,这种技术称为让编译器重新组织指令顺序来消除冲突,这种技术称为指令调度指令调度或或流水线调度。流水线调度。p例如:例如:采用典型的代码生成方法,采用典型的代码生成方法, 表达式表达式A AB BC C的代码会导致暂停的代码会导致暂停调度前的代码调度前的代码 调度后的代码调度后的代码 LD LD RbRb,B BLD LD RcRc,C CDADD RaDADD Ra,RbRb,RcRc SD RaSD Ra,A ALD ReLD Re,E ELD LD RfRf,F FDSUB RdDSUB Rd,ReRe,RfRfSD RdSD Rd,D D LD LD RbRb,B BLD LD

75、RcRc,C CLD ReLD Re,E E DADD RaDADD Ra,RbRb,RcRcLD LD RfRf,F FSD RaSD Ra,A A DSUB RdDSUB Rd,ReRe,RfRfSD RdSD Rd,D D p举例:举例:请为下列表达式生成没有暂停的指令序列请为下列表达式生成没有暂停的指令序列: : ABC ; DEF ;假设载入延迟为假设载入延迟为1 1个个时钟周期。时钟周期。126126/206/2063.4 流水线的相关与冲突1.控制冲突 执行分支指令的结果有两种q分支成功:分支成功:PCPC值改变为分支转移的目标地址。值改变为分支转移的目标地址。 在条件判定和转移

76、地址计算都完成后,才改变在条件判定和转移地址计算都完成后,才改变PCPC值。值。q不成功或者失败:不成功或者失败:PCPC的值保持正常递增,的值保持正常递增, 指向顺序的下一条指令。指向顺序的下一条指令。处理分支指令最简单的方法:“冻结冻结”或者或者“排空排空”流水线流水线 。 优点:优点:简单。简单。p前述前述5 5段流水线中,改变段流水线中,改变PCPC值是在值是在MEMMEM段进行的。段进行的。 给流水线带来了给流水线带来了3 3个时钟周期的延迟个时钟周期的延迟。分支指令分支指令 IF IF ID ID EX EX MEM MEM WB WB 分支目标指令分支目标指令 IFIF stal

77、lstall stallstall IF IF ID ID EX EX MEM MEM WB WB 分支目标指令分支目标指令+1 +1 IF IF ID ID EX EX MEM MEM WB WB 分支目标指令分支目标指令+2 +2 IF IF ID ID EX EX MEM MEM 分支目标指令分支目标指令+3 +3 IF IF ID ID EX EX 分支指令分支指令 IF IF ID ID EX EX MEM MEM WB WB 分支后继指令分支后继指令 IF IF stallstall stallstall IF IF ID ID EX EX MEM MEM WB WB 分支后继指令

78、分支后继指令+1+1 IF IF ID ID EX EX MEM MEM WB WB 分支后继指令分支后继指令+2 +2 IF IF ID ID EX EX MEM MEM 分支后继指令分支后继指令+3 +3 IF IF ID ID EX EX 简单处理分支指令:分支成功的情况简单处理分支指令:分支成功的情况 简单处理分支指令:分支失败的情况简单处理分支指令:分支失败的情况 128128/206/2063.4 流水线的相关与冲突把由分支指令引起的延迟称为分支延迟。分支指令在目标代码中出现的频度q每每3 34 4条指令就有一条是分支指令。条指令就有一条是分支指令。 假设:假设:分支指令出现的频度

79、是分支指令出现的频度是3030, 流水线理想流水线理想 CPICPI1 1, 那么:那么:流水线的实际流水线的实际 CPI CPI 1.91.9。可采取两种措施来减少分支延迟。q在流水线中尽早判断出分支转移是否成功;在流水线中尽早判断出分支转移是否成功;q尽早计算出分支目标地址。尽早计算出分支目标地址。129129/206/2063.4 流水线的相关与冲突下面的讨论中,我们假设: 这两步工作被提前到ID段完成,即分支指令是在ID段的末尾执行完成,所带来的分支延迟为一个时钟周期。 130130/206/2063.4 流水线的相关与冲突3种通过软件(编译器)来减少分支延迟的方法 共同点:n对分支的

80、处理方法在程序的执行过程中始终是对分支的处理方法在程序的执行过程中始终是 不变的,是静态的。不变的,是静态的。n要么总是预测分支成功,要么总是预测分支失败。要么总是预测分支成功,要么总是预测分支失败。q预测分支失败预测分支失败 n允许分支指令后的指令继续在流水线中流动,就允许分支指令后的指令继续在流水线中流动,就 好象什么都没发生似的。好象什么都没发生似的。n若确定分支失败,将分支指令看作是一条普通指若确定分支失败,将分支指令看作是一条普通指 令,流水线正常流动。令,流水线正常流动。131131/206/2063.4 流水线的相关与冲突n若确定分支成功,流水线就把在分支指令之后若确定分支成功,

81、流水线就把在分支指令之后 取出的所有指令转化为空操作,并按分支目地取出的所有指令转化为空操作,并按分支目地 重新取指令执行。重新取指令执行。要保证:要保证:分支结果出来之前不会改变处理机的状态,以分支结果出来之前不会改变处理机的状态,以 便一旦猜错时,处理机能够回退到原先的状态。便一旦猜错时,处理机能够回退到原先的状态。流水线的处理过程流水线的处理过程133133/206/2063.4 流水线的相关与冲突q预测分支成功预测分支成功 假设分支转移成功,并从分支目标地址处取指令执行。假设分支转移成功,并从分支目标地址处取指令执行。起作用的前题:起作用的前题:先知道分支目标地址,后知道分支是否先知道

82、分支目标地址,后知道分支是否 成功。成功。前述前述5 5段流水线中,这种方法没有任何好处。段流水线中,这种方法没有任何好处。q延迟分支延迟分支主要思想:主要思想: 从逻辑上从逻辑上“延长延长”分支指令的执行时间。把延迟分分支指令的执行时间。把延迟分支支看成是由原来的分支指令和若干个延迟槽构成,不管分看成是由原来的分支指令和若干个延迟槽构成,不管分支是否成功,都要按顺序执行延迟槽中的指令。支是否成功,都要按顺序执行延迟槽中的指令。延迟分支以及指令的执行顺序延迟分支以及指令的执行顺序具有一个分支延迟槽的流水线的执行过程具有一个分支延迟槽的流水线的执行过程分分支支失失败败 分支指令分支指令i i I

83、F IF ID ID EX EX MEM MEM WBWB延迟槽指令延迟槽指令 i+1i+1 IF IF ID ID EX EX MEM MEM WBWB指令指令 i+2 i+2 IF IF ID ID EX EX MEM MEM WBWB指令指令 i+3 i+3 IF IF ID ID EX EX MEMMEMWBWB指令指令 i+4 i+4 IF IF ID ID EX EX MEMMEMWBWB分支延迟槽中的指令分支延迟槽中的指令“掩盖掩盖”了流水线原来必须插入的暂停周期。了流水线原来必须插入的暂停周期。分分支支成成功功 分支指令分支指令i i IF IF ID ID EX EX MEM

84、MEMWBWB 延迟槽指令延迟槽指令 i+1i+1 IF IF ID ID EX EX MEMMEMWBWB分支目标指令分支目标指令j j IF IF ID ID EX EX MEMMEMWBWB分支目标指令分支目标指令j+1 j+1 IF IF ID ID EX EX MEMMEMWBWB分支目标指令分支目标指令j+2j+2IF IF ID ID EX EX MEMMEMWBWB135135/206/2063.4 流水线的相关与冲突 分支延迟指令的调度任务:任务:在延迟槽中放入有用的指令。在延迟槽中放入有用的指令。由编译器完成。能否带来好处取决于编译器能否把有用由编译器完成。能否带来好处取决

85、于编译器能否把有用的指令调度到延迟槽中。的指令调度到延迟槽中。三种调度方法:三种调度方法: n从前调度从前调度n从目标处调度从目标处调度n从失败处调度从失败处调度调度前和调度后的代码137137/206/2063.4 流水线的相关与冲突三种方法的要求及效果调 度 策 略对调度的要求什么情况下起作用从从 前前 调调 度度从目标处调度从目标处调度从失败处调度从失败处调度必须保证在分支失败时执行被调度必须保证在分支失败时执行被调度的指令不会导致错误。有可能需要的指令不会导致错误。有可能需要复制指令复制指令被调度的指令必须与分支无关被调度的指令必须与分支无关必须保证在分支成功时执行被调度必须保证在分支

86、成功时执行被调度的指令不会导致错误的指令不会导致错误任何情况任何情况 分支成功时分支成功时( (但由于复制指令,有但由于复制指令,有可能会增大程序空间可能会增大程序空间) )分支失败时分支失败时138138/206/2063.4 流水线的相关与冲突分支延迟受到两个方面的限制:q可以被放入延迟槽中的指令要满足一定的条件。可以被放入延迟槽中的指令要满足一定的条件。q编译器预测分支转移方向的能力。编译器预测分支转移方向的能力。进一步改进:分支取消机制(取消分支) 当分支的实际执行方向和事先所预测的一样时,当分支的实际执行方向和事先所预测的一样时,执行分支延迟槽中的指令,否则就将分支延迟槽中的执行分支

87、延迟槽中的指令,否则就将分支延迟槽中的指令转化成一个空操作。指令转化成一个空操作。“预测预测成功取消成功取消”分支的执行过程分支的执行过程分分支支失失败败 分支指令分支指令i i IF IF ID ID EX EX MEM MEM WBWB延迟槽指令延迟槽指令 i+1i+1 IF IF ID ID EX EX MEM MEM WBWB指令指令 i+2 i+2 IF IF ID ID EX EX MEM MEM WBWB指令指令 i+3 i+3 IF IF ID ID EX EX MEMMEMWBWB指令指令 i+4 i+4 IF IF ID ID EX EX MEMMEMWBWB分分支支成成功

88、功 分支指令分支指令i i IF IF ID ID EX EX MEMMEMWBWB 延迟槽指令延迟槽指令 i+1i+1 IF IF idleidle idle idle idle idle idleidle分支目标指令分支目标指令j j IF IF ID ID EX EX MEMMEMWBWB分支目标指令分支目标指令j+1 j+1 IF IF ID ID EX EX MEMMEMWBWB分支目标指令分支目标指令j+2j+2IF IF ID ID EX EX MEMMEMWBWB预测分支成功的情况下,分支取消机制的执行情况预测分支成功的情况下,分支取消机制的执行情况 140140/206/20

89、61.实现MIPS指令子集的一种简单数据通路。该数据通路的操作分成5个时钟周期q取指令取指令q指令译码指令译码/读寄存器读寄存器q执行执行/有效地址计算有效地址计算q存储器访问存储器访问/分支完成分支完成q写回写回 只讨论整数指令的实现(包括:(包括:loadload和和storestore,等于等于0 0转转移,整数移,整数ALUALU指令等。)指令等。) 3.5 流水线的实现3.5.1 MIPS的一种简单实现142142/206/2063.5 流水线的实现2.一条MIPS指令最多需要以下5个时钟周期:取指令周期(IF) 操作pIRIRMemPCMemPC pNPCNPCPC+4PC+4指令

90、译码/读寄存器周期(ID) 操作qA A RegsrsRegsrsqB B RegsrtRegsrtqImm Imm (IRIR1616)1616#IRIR16.3116.31) 指令的译码操作和读寄存器操作是并行进行的。指令的译码操作和读寄存器操作是并行进行的。 原因:在原因:在MIPSMIPS指令格式中,操作码字段以及指令格式中,操作码字段以及rsrs、rtrt 字段都是在固定的位置。字段都是在固定的位置。 这种技术称为这种技术称为固定字段译码固定字段译码技术技术。 143143/206/2063.5 流水线的实现执行/有效地址计算周期(EX) 不同指令所进行的操作不同:q存储器访问指令存

91、储器访问指令 操作操作 ALUoALUoA A + + ImmImmq寄存器寄存器寄存器寄存器ALUALU指令指令 操作操作 ALUoALUoA A funcfunc B Bq寄存器立即值寄存器立即值ALUALU指令指令 操作操作 ALUoALUoA A op op ImmImmq分支指令分支指令 操作操作 ALUoALUoNPCNPC+ +(ImmImm22);); condcond(A =A = = 0= 0)144144/206/2063.5 流水线的实现 将有效地址计算周期和执行周期合并为一个时将有效地址计算周期和执行周期合并为一个时钟周期,这是因为钟周期,这是因为MIPSMIPS指令

92、集采用指令集采用loadloadstorestore结结构,没有任何指令需要同时进行数据有效地址的计构,没有任何指令需要同时进行数据有效地址的计算、转移目标地址的计算和对数据进行运算。算、转移目标地址的计算和对数据进行运算。存储器访问/分支完成周期(MEM)q所有指令都要在该周期对所有指令都要在该周期对PCPC进行更新。进行更新。 除了分支指令,其他指令都是做除了分支指令,其他指令都是做PCPCNPCNPCq在该周期内处理的在该周期内处理的MIPSMIPS指令仅仅有指令仅仅有loadload、storestore和分和分支支三种指令。三种指令。145145/206/2063.5 流水线的实现q

93、存储器访问指令存储器访问指令 操作操作 LMD LMDMemALUo MemALUo 或者或者 MemALUoMemALUoB Bq分支指令分支指令 操作操作 if if (condcond) PC PC ALUoALUo else PC else PCNPCNPC写回周期(WB)不同的指令在写回周期完成的工作也不一样。不同的指令在写回周期完成的工作也不一样。q寄存器寄存器寄存器寄存器ALUALU指令指令 操作操作 RegsrdRegsrd ALUoALUoq寄存器立即数寄存器立即数ALUALU指令指令 操作操作 RegsrtRegsrt ALUoALUoqloadload指令指令 操作操作

94、RegsrtRegsrt LMD LMD146146/206/2063.5 流水线的实现3.不采用单周期实现方案的主要原因对于大多数CPU来说,单周期实现效率很低,因为不同的指令所需完成的操作差别相当大,因而所需要的时钟周期时间也大不一样。单周期实现时,需要重复设置某些功能部件,而在多周期实现方案中,这些部件是可以共享的。147147/206/2063.5 流水线的实现每一个时钟周期完成的工作看作是流水线的一段,每个时钟周期启动一条新的指令。1.流水实现的数据通路设置了流水寄存器q段与段之间设置流水寄存器段与段之间设置流水寄存器q流水寄存器的命名流水寄存器的命名 用其相邻的两个段的名称拼合而成

95、。用其相邻的两个段的名称拼合而成。 例如:例如:IDID段段与与EXEX段段之间的流水寄存器用之间的流水寄存器用ID/EXID/EX表示表示q每个流水寄存器是由若干个寄存器构成的每个流水寄存器是由若干个寄存器构成的 3.5.2 基本的MIPS流水线148148/206/2063.5 流水线的实现流水实现的数据通路流水实现的数据通路149149/206/2063.5 流水线的实现q寄存器的命名形式为:寄存器的命名形式为:x.yx.yq所包含的字段的命名形式为:所包含的字段的命名形式为:x.ysx.ys 其中:其中:x x:流水寄存器名称流水寄存器名称 y y:具体寄存器名称具体寄存器名称 s s

96、:字段名称字段名称 例如:例如: ID/EX.IRID/EX.IR:流水寄存器流水寄存器ID/EXID/EX中的子寄存器中的子寄存器IRIR ID/ ID/EX.IRopEX.IRop :该寄存器该寄存器的的opop字段(即操作码字段)字段(即操作码字段)q流水寄存器的作用流水寄存器的作用n将各段的工作隔开,使得它们不会互相干扰。将各段的工作隔开,使得它们不会互相干扰。n保存相应段的处理结果。保存相应段的处理结果。150150/206/2063.5 流水线的实现例如:例如:EX/EX/MEM.ALUoMEM.ALUo:保存保存EXEX段段ALUALU的运算结果的运算结果MEM/WB.LMDME

97、M/WB.LMD:保存保存MEMMEM段从数据存储器读出的数据段从数据存储器读出的数据n向后传递后面将要用到的数据或者控制信息向后传递后面将要用到的数据或者控制信息 所有有用的数据和控制信息每个时钟周期所有有用的数据和控制信息每个时钟周期 会随着指令在流水线中的流动往后流动一段。会随着指令在流水线中的流动往后流动一段。 增加了向后传递IR和从MEM/WB.IR回送到通用寄存 器组的连接。 将对PC的修改移到了IF段,以便PC能及时地加 4,为取下一条指令做好准备。 151151/206/2063.5 流水线的实现1.每一个流水段进行的操作qIRrsIRrs IRIR6.106.10qIRrtI

98、RrtIRIR11.1511.15qIRrdIRrdIRIR16.2016.20 流水段流水段流水线的每个流水段的操作所有指令类型所有指令类型ALU ALU 指令指令load/store load/store 指令指令分支指令分支指令IFIFIDIDEXEXIF/ID.IR IF/ID.IR MemPCMemPC IF/ID.NPC, PC IF/ID.NPC, PC (ifif( EX/MEM.IRop = branch EX/MEM.IRop = branch )& & EX/EX/MEM.condMEM.cond)EX/EX/MEM.ALUoMEM.ALUo else PC+4 else

99、 PC+4);); ID/EX.A ID/EX.A RegsIF/ID.IRrsRegsIF/ID.IRrs;ID/EX.B ID/EX.B RegsIF/ID.IRrtRegsIF/ID.IRrt;ID/EX.NPC IF/ID.NPCID/EX.NPC IF/ID.NPC;ID/EX.IR IF/ID.IRID/EX.IR IF/ID.IR;ID/ID/EX.ImmEX.Imm (IF/ID.IRIF/ID.IR1616) )1616#IF/ID.IR#IF/ID.IR16.3116.31; EX/MEM.IR ID/EX.IREX/MEM.IR ID/EX.IR;EX/MEM.ALUo

100、EX/MEM.ALUo ID/EX.A ID/EX.A funcfunc ID/EX.B ID/EX.B或或EX/MEM.ALUo EX/MEM.ALUo ID/EX.A ID/EX.A opop ID/EX.Imm ID/EX.Imm; EX/MEM.IR ID/EX.IREX/MEM.IR ID/EX.IR;EX/MEM.ALUo EX/MEM.ALUo ID/EX.A + ID/EX.Imm ID/EX.A + ID/EX.Imm;EX/MEM.BID/EX.BEX/MEM.BID/EX.B; EX/MEM.IR ID/EX.IREX/MEM.IR ID/EX.IR;EX/MEM.ALU

101、o EX/MEM.ALUo ID/EX.NPC + ID/EX.NPC + ID/EX.Imm ID/EX.Imm2 2;EX/MEM.cond EX/MEM.cond (ID/EX.A ID/EX.A =0 0);); 流水段流水段任何指令类型任何指令类型ALU ALU 指令指令load/store load/store 指令指令分支指令分支指令MEMMEMWBWBMEM/WB.IR EX/MEM.IRMEM/WB.IR EX/MEM.IR;MEM/WB.ALUo MEM/WB.ALUo EX/MEM.ALUo EX/MEM.ALUo; MEM/WB.IR EX/MEM.IRMEM/WB.I

102、R EX/MEM.IR;MEM/WB.LMD MEM/WB.LMD MemEX/MEM.ALUo MemEX/MEM.ALUo;或或MemEX/MEM.ALUo MemEX/MEM.ALUo EX/MEM.B EX/MEM.B; RegsMEM/WB.IRrd RegsMEM/WB.IRrd MEM/WB.ALUo MEM/WB.ALUo;或或RegsMEM/WB.IRrt RegsMEM/WB.IRrt MEM/ MEM/WB.ALUoWB.ALUo; RegsMEM/WB.IRrt RegsMEM/WB.IRrt MEM/WB.LMD MEM/WB.LMD; 流水线的每个流水段的操作154

103、154/206/2063.5 流水线的实现1.流水线的控制主要是如何控制4个多路选择器。qMUX2MUX2:若若ID/EX.IRID/EX.IR中的指令是分支指令,则选择中的指令是分支指令,则选择ID/EX.NPCID/EX.NPC,否则选否则选ID/EX.AID/EX.A。qMUX3MUX3:若若ID/EX.IRID/EX.IR中的指令是寄存器寄存器型中的指令是寄存器寄存器型ALUALU指令,则选指令,则选ID/EX.BID/EX.B,否则选否则选ID/ID/EX.ImmEX.Imm。qMUX1MUX1:若若EX/MEM.IREX/MEM.IR中的指令是分支指令,而且中的指令是分支指令,而且

104、EX/EX/MEM.condMEM.cond为真,则选为真,则选EX/EX/MEM.ALUoMEM.ALUo,即分支目标地即分支目标地址,否则选址,否则选PC+4PC+4。qMUX4MUX4:若若MEM/WB.IRMEM/WB.IR中的指令是中的指令是loadload指令,则选指令,则选MEM/WB.LMDMEM/WB.LMD,否则选否则选MEM/MEM/WB.ALUoWB.ALUo。 155155/206/2063.5 流水线的实现q第第5 5个多路器:个多路器:从从MEM/WBMEM/WB回传至通用寄存器组的写入回传至通用寄存器组的写入 地址应该是从地址应该是从MEM/WB.IRrdMEM

105、/WB.IRrd 和和MEM/MEM/WB.IRrtWB.IRrt 中选中选 一个。一个。n寄存器寄存器型寄存器寄存器型ALUALU指令:选择指令:选择MEM/WB.IRrdMEM/WB.IRrd ;n寄存器立即数型寄存器立即数型ALUALU指令和指令和loadload指令:选择指令:选择MEM/MEM/WB.IRrtWB.IRrt 。156156/206/2063.5 流水线的实现解决数据冲突的问题 q所有的数据冲突均可以在所有的数据冲突均可以在IDID段检测到。段检测到。 如果存在数据冲突,就在相应的指令流出如果存在数据冲突,就在相应的指令流出IDID段之前将之暂段之前将之暂停。停。 完成

106、该工作的硬件称为完成该工作的硬件称为流水线的互锁机制。流水线的互锁机制。 q在在IDID段段确定需要什么样的定向,并设置相应的控制。确定需要什么样的定向,并设置相应的控制。 降低流水线的硬件复杂度。不必挂起已经改变了机器状态降低流水线的硬件复杂度。不必挂起已经改变了机器状态的指令)的指令)q也可以在也可以在使用操作数的那个时钟周期使用操作数的那个时钟周期的开始检测冲突和确定的开始检测冲突和确定必需的定向。必需的定向。q检测冲突是通过比较寄存器地址是否相等来实现的。检测冲突是通过比较寄存器地址是否相等来实现的。举例:举例: loadload互锁互锁由于使用由于使用loadload的结果而引起的流

107、水线互锁称为的结果而引起的流水线互锁称为loadload互锁。互锁。 157157/206/2063.5 流水线的实现ID/EXID/EX中的操作码中的操作码 (ID/EX.IRopID/EX.IRop) IF/IDIF/ID中的操作码中的操作码 (IF/ID.IRopIF/ID.IRop) 比较的操作数字段比较的操作数字段 load load RR ALU RR ALU ID/ID/EX.IRrtEX.IRrt=IF/=IF/ID.IRrsID.IRrs load load RR ALU RR ALU ID/ID/EX.IRrtEX.IRrt=IF/=IF/ID.IRrtID.IRrt lo

108、ad load loadload、storestoreALUALU立即数或分支立即数或分支 ID/ID/EX.IRrtEX.IRrt=IF/=IF/ID.IRrsID.IRrs 在在IDID段检测是否存在段检测是否存在RAWRAW冲突冲突 (这时(这时loadload指令在指令在EXEX段)段) q若检测到若检测到RAWRAW冲突,流水线互锁机制必须在流水线中插入停冲突,流水线互锁机制必须在流水线中插入停顿,并使当前正处于顿,并使当前正处于IFIF段和段和IDID段的指令不再前进。段的指令不再前进。n将将ID/EX.IRID/EX.IR中的操作码改为全中的操作码改为全0 0(全(全0 0表示空

109、操作)表示空操作)nIF/IDIF/ID寄存器的内容回送到自己的入口寄存器的内容回送到自己的入口158158/206/2063.5 流水线的实现定向逻辑q要考虑的情况更多要考虑的情况更多 q通过比较流水寄存器中的寄存器地址来确定通过比较流水寄存器中的寄存器地址来确定例如: p若若 (ID/EX.IR.op=RR ALU)&(ID/EX.IR.op=RR ALU)&(EX/MEM.IR.op=RR EX/MEM.IR.op=RR ALUALU)& &(ID/ID/EX.IRrtEX.IRrt=EX/MEM.IRrd=EX/MEM.IRrd),), 则则 EX/EX/MEM.ALUoMEM.ALU

110、o定向到定向到ALUALU的下面一个输入。的下面一个输入。p若若(ID/EX.IRop=RR ALUID/EX.IRop=RR ALU)& &(MEM/WB.IRop=loadMEM/WB.IRop=load)& & (ID/ID/EX.IRrtEX.IRrt=MEM/=MEM/WB.IRrtWB.IRrt ),), 则则 把把MEM/WB.LMDMEM/WB.LMD定向到定向到ALUALU的下面一个输入。的下面一个输入。q流水线流水线增设的定向路径增设的定向路径 160160/206/2063.5 流水线的实现1.控制冲突分支指令的条件测试和分支目标地址计算在EX段完成,对PC的修改在MEM

111、段完成。它所带来的分支延迟是3个时钟周期。减少分支延迟:做如下改进 (把上述工作提前到(把上述工作提前到IDID段进行)段进行)q在在IDID段段增设一个加法器,用于增设一个加法器,用于计算分支目标地址。计算分支目标地址。q把条件测试把条件测试“=0=0?”的逻辑电路移到的逻辑电路移到IDID段。段。q这些结果直接回送到这些结果直接回送到IFIF段的段的MUX1MUX1。q改进后的流水线对分支指令的处理。改进后的流水线对分支指令的处理。161161/206/2063.5 流水线的实现162162/206/2063.5 流水线的实现流流 水水 段段分分 支支 指指 令令 操操 作作IFIFIDI

112、DEXEXIF/ID.IR IF/ID.IR MemPCMemPC ;IF/ID.NPC, PC IF/ID.NPC, PC (if( IF/ (if( IF/ID.IRopID.IRop= = =branch)&(RegsIF/ID.IRrsbranch)&(RegsIF/ID.IRrs = = 0) = = 0) IF/ID.NPC + (IF/ID.IR IF/ID.NPC + (IF/ID.IR1616) )1616 # # (IF/ID.IRIF/ID.IR16.3116.31 2 2) else PC+4) else PC+4); ID/EX.A ID/EX.A RegsIF/ID

113、.IRrsRegsIF/ID.IRrs; ID/EX.B ID/EX.B RegsIF/ID.IRrtRegsIF/ID.IRrt;ID/EX.IR IF/ID.IRID/EX.IR IF/ID.IR;ID/ID/EX.ImmEX.Imm ( IF/ID.IRIF/ID.IR1616 )16 16 # IF/ID. # IF/ID. IRIR16.3116.31; MEMMEMWBWB改进后流水线的分支操作改进后流水线的分支操作 163163/206/206在流水线处理机中,设置向量数据表示和相应的向量指令,称为向量处理机。不具有向量数据表示和相应的向量指令的流水线处理机,称为标量处理机。3.

114、6 向量处理机3.6.1 向量处理方式以计算表达式以计算表达式 D D= =A A(B BC C)为例为例 A A、B B、C C、D D 长度为长度为N N的向量的向量164164/206/2063.6 向量处理机1.横向(水平)处理方式向量计算是按行的方式从左到右横向地进行。q先计算:先计算: d d1 1a a1 1( (b b1 1c c1 1) )q再计算:再计算: d d2 2a a2 2( (b b2 2c c2 2) )q q最后计算:最后计算: d dN Na aN N( (b bN Nc cN N) )组成循环程序进行处理。 k ki ib bi ic ci i d di

115、ik ki ia ai iq数据相关:数据相关:N N次次 功能切换:功能切换:2 2N N次次不适合于向量处理机的并行处理。165165/206/2063.6 向量处理机1.纵向 (垂直)处理方式向量计算是按列的方式从上到下纵向地进行。 k1 1b b1 1c c1 1 d d1 1k k1 1a a1 1先计算先计算 再计算再计算 k kN Nb bN Nc cN N d dN Nk kN Na aN N表示成向量指令: K KB BC C D DK KA Aq两条向量指令之间:两条向量指令之间: 数据相关:数据相关:1 1次次 功能切换功能切换:1 1次次166166/206/2063.

116、6 向量处理机对处理机结构的要求:存储器存储器结构q向量指令的源向量和目的向量都存放在存储器向量指令的源向量和目的向量都存放在存储器 中,运算的中间结果需要送回存储器。中,运算的中间结果需要送回存储器。 q存储器存储器型操作的运算流水线存储器存储器型操作的运算流水线q例如:例如:STAR-100STAR-100、CYBER-205CYBER-205167167/206/2063.6 向量处理机1.纵横 (分组)处理方式又称为分组处理方式。把向量分成若干组,组内按纵向方式处理,依次处理各组。对于上述的例子,设: N N= =S Sn nr rq其中其中N N为向量长度,为向量长度,S S为组数,

117、为组数,n n为每组的长度,为每组的长度,r r为余为余数。数。q若余下的若余下的r r个数也作为一组处理,则共有个数也作为一组处理,则共有S S+1+1组。组。运算过程为:168168/206/2063.6 向量处理机q先算第先算第1 1组:组: k k1 1n nb b1 1n nc1 1n n d d1 1n nk k1 1n na a1 1n nq再算第再算第2 2组:组: k k( (n n+1)+1)2 2n nb b( (n n+1)+1)2 2n nc c( (n n+1)+1)2 2n n d d( (n n+1)+1)2 2n nk k( (n n+1)+1)2 2n na

118、 a( (n n+1)+1)2 2n nq依次进行下去,直到最后一组:第依次进行下去,直到最后一组:第S S+1+1组。组。q每组内各用两条向量指令。每组内各用两条向量指令。 数据相关:数据相关:1 1次次 功能切换:功能切换:2 2次次169169/206/2063.6 向量处理机对处理机结构的要求:寄存器寄存器结构q设置能快速访问的向量寄存器,用于存放源向量、设置能快速访问的向量寄存器,用于存放源向量、 目的向量及中间结果,让运算部件的输入、输出端目的向量及中间结果,让运算部件的输入、输出端 都与向量寄存器相联,构成寄存器寄存器型操作都与向量寄存器相联,构成寄存器寄存器型操作 的运算流水线

119、。的运算流水线。q典型的寄存器寄存器结构的向量处理机典型的寄存器寄存器结构的向量处理机 美国的美国的CRAY-1CRAY-1、我国的我国的YH-1YH-1巨型机巨型机170170/206/2063.6 向量处理机以CRAY-1机为例q美国美国CRAYCRAY公司公司 q19761976年年q每秒每秒1 1亿次浮点运算亿次浮点运算 q时钟周期:时钟周期:12.5 ns12.5 ns 1.CRAY-1的基本结构功能部件 共有共有1212条条可并行工作的可并行工作的单功能流水线单功能流水线,可分别流,可分别流水地进行地址、向量、标量的各种运算。水地进行地址、向量、标量的各种运算。3.6.2 向量处理

120、机的结构172172/206/2063.6 向量处理机q6 6个单功能流水部件:个单功能流水部件:进行向量运算进行向量运算 n整数加(整数加(3 3拍)拍)n逻辑运算(逻辑运算(2 2拍)拍)n移位(移位(4 4拍)拍)n浮点加(浮点加(6 6拍)拍)n浮点乘(浮点乘(7 7拍)拍)n浮点迭代求倒数(浮点迭代求倒数(1414拍)拍) 括号中的数字为其流水经过的时间,每拍为一个括号中的数字为其流水经过的时间,每拍为一个时钟周期,即时钟周期,即12.5 ns12.5 ns。173173/206/2063.6 向量处理机向量寄存组Vq由由512512个个6464位位的寄存器组成,分成的寄存器组成,分

121、成8 8块块。q编号:编号:V V0 0V V7 7q每一个块称为一个每一个块称为一个向量寄存器向量寄存器,可存放一个长度,可存放一个长度 (即元素个数)不超过(即元素个数)不超过6464的向量。的向量。q每个向量寄存器可以每拍向功能部件提供一个数据元每个向量寄存器可以每拍向功能部件提供一个数据元素,或者每拍接收一个从功能部件来的结果元素。素,或者每拍接收一个从功能部件来的结果元素。标量寄存器S和快速暂存器Tq标量寄存器有标量寄存器有8 8个个:S S0 0S S7 7 64 64位位q快速暂存器快速暂存器T T用于在标量寄存器和存储器之间提供缓用于在标量寄存器和存储器之间提供缓 冲。冲。 1

122、74174/206/2063.6 向量处理机向量屏蔽寄存器VMq6464位位,每一位对应于向量寄存器的一个单元。,每一位对应于向量寄存器的一个单元。q作用:作用:用于向量的归并、压缩、还原和测试操作、用于向量的归并、压缩、还原和测试操作、 对向量某些元素的单独运算等。对向量某些元素的单独运算等。2.CRAY-1向量处理的一个显著特点每个向量寄存器Vi都有连到6个向量功能部件的单独总线。每个向量功能部件也都有把运算结果送回向量寄存器组的总线。 175175/206/2063.6 向量处理机只要不出现Vi冲突和功能部件冲突,各Vi之间和各 功能部件之间都能并行工作,大大加快了向量指 令的处理。qV

123、 Vi i冲突:冲突:并行工作的各向量指令的源向量或结果向量并行工作的各向量指令的源向量或结果向量使用了相同的使用了相同的V Vi i。例如:例如:源向量相同源向量相同 V V3 3V V1 1V V2 2 V V5 5VV4 4V V1 1q功能部件冲突:功能部件冲突:并行工作的各向量指令要使用同一个并行工作的各向量指令要使用同一个功能部件。功能部件。例如:例如:都需使用乘法功能部件都需使用乘法功能部件 V V3 3VV1 1V V2 2 V V5 5VV4 4V V6 6176176/206/2063.6 向量处理机1.CRAY-1向量指令类型qV Vk k V Vi i op op V

124、Vj jqV Vk k S Si i op op V Vj jqV Vk k 主存主存q主存主存 V Vi i 177177/206/2063.6 向量处理机提高向量处理机性能的方法设置多个功能部件,使它们并行工作。采用链接技术,加快一串向量指令的执行。采用循环开采技术,加快循环的处理。采用多处理机系统,进一步提高性能。3.6.3 提高向量处理机性能的方法178178/206/2063.6 向量处理机1.设置多个功能部件设置多个独立的功能部件。这些部件能并行工作,并各自按流水方式工作,从而形成了多条并行工作的运算操作流水线。例如:例如:CRAY-1CRAY-1向量处理机有向量处理机有4 4组组

125、1212个个单功能流水部件:单功能流水部件:n向量部件:向量加,移位,逻辑运算向量部件:向量加,移位,逻辑运算n浮点部件:浮点加,浮点乘,浮点求倒数浮点部件:浮点加,浮点乘,浮点求倒数n标量部件:标量加,移位,逻辑运算,标量部件:标量加,移位,逻辑运算, 数数“1 1”/ /计数计数n地址运算部件:整数加,整数乘地址运算部件:整数加,整数乘179179/206/2063.6 向量处理机2.链接技术链接特征:具有先写后读相关的两条指令,在不出现功能部件冲突和源向量冲突的情况下,可以把功能部件链接起来进行流水处理,以达到加快执行的目的。链接特性的实质 把流水线把流水线定向定向的思想引入到向量执行过

126、程的结果的思想引入到向量执行过程的结果。180180/206/2063.6 向量处理机 例例3.33.3 在在CRAY-1CRAY-1上用链接技术进行向量运算上用链接技术进行向量运算 D D= =A A(B B+ +C C) 假设向量长度假设向量长度N N6464,向量元素为浮点数,且向量向量元素为浮点数,且向量B B、C C已存已存放在放在V V0 0和和V V1 1中。中。 画出链接示意图,并分析非链接执行和链接执行两种情况下画出链接示意图,并分析非链接执行和链接执行两种情况下的执行时间。的执行时间。 解解 用以下三条向量完成上述运算:用以下三条向量完成上述运算: V V3 3 存储器存储

127、器/ / 访存取向量访存取向量A A V V2 2 V V0 0 V V1 1 / / 向量向量B B和向量和向量C C进行浮点加进行浮点加 V V4 4 V V2 2 V V3 3/ / 浮点乘,结果存入浮点乘,结果存入V V4 4181181/206/2063.6 向量处理机假设:把向量数据元素送往向量功能部件以及把结果存入向量寄存器需要一拍时间,从存储器中把数据送入访存功能部件需要一拍时间。182182/206/2063.6 向量处理机3条指令全部用串行方法执行,则执行时间为: (1 16 61 1)N N11 (1 16 61 1)N N11 (1 17 71 1)N N1 = 3N

128、1 = 3N 22 22 (拍)(拍)前两条指令并行执行,然后再串行执行第3条指令,则执行时间为: (1 16 61 1)N N11 (1 17 71 1)N N1 1 = 2 = 2N N 15 15 (拍)拍)第1、2条向量指令并行执行,并与第3条指令链接执行。 183183/206/2063.6 向量处理机q从访存开始到把第一个结果元素存入从访存开始到把第一个结果元素存入V V4 4所需的拍数所需的拍数 (亦称为(亦称为链接流水线的建立时间链接流水线的建立时间)为:)为: (1 16 61 1)()(1 17 71 1) = 17 = 17 (拍)(拍)q3 3条指令的执行时间为:条指令

129、的执行时间为: (1 16 61 1)()(1 17 71 1) (N N1 1) = N= N16 16 (拍)拍)184184/206/2063.6 向量处理机进行向量链接的要求保证:保证:无向量寄存器使用冲突无向量寄存器使用冲突和和无功能部件使用冲突无功能部件使用冲突q只有在前一条指令的第一个结果元素送入结果向量只有在前一条指令的第一个结果元素送入结果向量寄存器的那一个时钟周期才可以进行链接。寄存器的那一个时钟周期才可以进行链接。q当一条向量指令的两个源操作数分别是两条先行指当一条向量指令的两个源操作数分别是两条先行指令的结果寄存器时,要求先行的两条指令产生运算结果令的结果寄存器时,要求

130、先行的两条指令产生运算结果的时间必须相等,即要求有关功能部件的通过时间相的时间必须相等,即要求有关功能部件的通过时间相等。等。q要进行链接执行的向量指令的向量长度必须相等,要进行链接执行的向量指令的向量长度必须相等,否则无法进行链接。否则无法进行链接。185185/206/2063.6 向量处理机1.分段开采技术 如果向量的长度大于向量寄存器的长度,该如何处理呢? 当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每一次循环只处理一个向量段。这种技术称为分段开采技术。q由系统硬件和软件控制完成,对程序员是透明的。由系统硬件和软件控制完成,对程序员是透明的。 1

131、86186/206/2063.6 向量处理机例例3.43.4 设设A A和和B B是长度为是长度为N N 的向量,考虑在的向量,考虑在Cray-1Cray-1向量处理器上实现以向量处理器上实现以下的循环操作:下的循环操作: DO 10 I = 1DO 10 I = 1,N N 10 A 10 A(I I)= 5.0 * B= 5.0 * B(I I) + C+ C187187/206/2063.6 向量处理机S S1 1 5.0 5.0 ;将常数将常数5.05.0送入标量寄存器送入标量寄存器S S1 1S S2 2 C C ;将常数将常数C C送入标量寄存器送入标量寄存器S S2 2VL NV

132、L N ;在向量长度寄存器在向量长度寄存器VLVL中设置向量长度中设置向量长度N NV V0 0 B B ;从存储器中将向量从存储器中将向量B B读入向量寄存器读入向量寄存器V V0 0V V1 1 S S1 1 V V0 0 ;向量向量B B中的每个元素分别和常数中的每个元素分别和常数S S1 1相乘相乘V V2 2 S S2 2 + V+ V1 1 ;向量向量V V1 1中的每个元素分别和常数中的每个元素分别和常数S S2 2 相加相加A VA V2 2 ;将计算结果从向量寄存器将计算结果从向量寄存器V V2 2存入存储存入存储 器的向量器的向量A A 当当N N 64 64时,可以用以下

133、指令序列:时,可以用以下指令序列:188188/206/2063.6 向量处理机当N 64时,就需要进行分段开采。q循环次数循环次数K K :q余数余数L L: 189189/206/2063.6 向量处理机S S1 1 5.0 5.0 ;将常数将常数5.05.0送入标量寄存器送入标量寄存器S S1 1S S2 2 C C ;将常数;将常数C C送入标量寄存器送入标量寄存器S S2 2VL L VL L ;在向量长度寄存器在向量长度寄存器VLVL中设置向量长度中设置向量长度L LV V0 0 B B ;从存储器中将向量从存储器中将向量B0.L-1B0.L-1读入向量读入向量 ; 寄存器寄存器V

134、 V0 0V V1 1 S S1 1 * V* V0 0 ;向量向量B B中的每个元素分别和常数中的每个元素分别和常数S S1 1相乘相乘V V2 2 S S2 2 + V+ V1 1 ;向量向量V V1 1中的每个元素分别和常数中的每个元素分别和常数S S2 2相加相加A VA V2 2 ;将计算结果从向量寄存器将计算结果从向量寄存器V V2 2存入存储器存入存储器 ;的向量;的向量A0.L-1A0.L-1处理余处理余数部分数部分, ,计算计算L L个元素个元素 190190/206/2063.6 向量处理机For (I=0 to K-1) For (I=0 to K-1) V V0 0 B

135、 B ;从存储器中将向量从存储器中将向量BL+I*64.L+I*64+63BL+I*64.L+I*64+63 ;读入向量寄存器;读入向量寄存器V V0 0V V1 1 S S1 1 * V* V0 0 ;向量向量B B中的每个元素分别和常数中的每个元素分别和常数S S1 1 ;相乘;相乘;V V2 2 S S2 2 + V+ V1 1 ;向量向量V V1 1中的每个元素分别和常数中的每个元素分别和常数S S2 2 ;相加;相加A VA V2 2 ;将计算结果将计算结果V V2 2存入存储器的向量存入存储器的向量 ; AL+I*64AL+I*64 L+I*64+63 L+I*64+63 循环循环

136、K K次次, ,分段分段处理处理191191/206/2063.6 向量处理机4.采用多处理机系统 许多新型向量处理机系统采用了多处理机系统结构。例如:qCRAY-2CRAY-2n包含了包含了4 4个个向量处理机向量处理机n浮点运算速度最高可达浮点运算速度最高可达1800MFLOPS1800MFLOPSqCRAY Y-MPCRAY Y-MP、C90C90 最多可包含最多可包含1616个个向量处理机向量处理机 192192/206/2063.6 向量处理机衡量向量处理机性能的主要参数 :1.向量指令的处理时间 执行一条向量长度为n的向量指令所需的时间为qT Ts s :向量流水线的建立时间向量流

137、水线的建立时间qT Tvfvf :向量流水线的流过时间向量流水线的流过时间 它是从向量指令开始译码算起,到第一对向量元素它是从向量指令开始译码算起,到第一对向量元素 流过流水线直到产生第一个结果元素所需的时间。流过流水线直到产生第一个结果元素所需的时间。pTcTc :流水线流水线瓶颈瓶颈段的执行时间段的执行时间 3.6.4 向量处理机的性能评价193193/206/2063.6 向量处理机如果流水线不存在“瓶颈”,每段的执行时间等于一个时钟周期,则上式可以写为:qs s:向量流水线的建立时间所对应的时钟周期数向量流水线的建立时间所对应的时钟周期数qe e:向量流水线的流过时间所对应的时钟周期数

138、向量流水线的流过时间所对应的时钟周期数qT Tclkclk:时钟周期时间时钟周期时间 也可以将上式改写为:qT Tstartstart:向量功能部件启动所需的时钟周期数向量功能部件启动所需的时钟周期数 194194/206/2063.6 向量处理机对于一组向量指令而言,其执行时间主要取决于三个因素:q向量的长度向量的长度q向量操作之间是否链接向量操作之间是否链接q向量功能部件的冲突和数据的冲突性向量功能部件的冲突和数据的冲突性把几条能在同一个时钟周期内一起开始执行的向量指令集合称为一个编队。q可以看出,同一个编队中的向量指令之间一定不存在可以看出,同一个编队中的向量指令之间一定不存在流水向量功

139、能部件的冲突和数据的冲突。流水向量功能部件的冲突和数据的冲突。 195195/206/2063.6 向量处理机例例3.53.5 假设每种向量功能部件只有一个,那么下面的一组向量指令假设每种向量功能部件只有一个,那么下面的一组向量指令能分成几个编队?能分成几个编队?LV V1LV V1,Rx Rx MULTSV V2MULTSV V2,R0R0,V1 V1 LV V3LV V3,RyRyADDV V4ADDV V4,V2V2,V3 V3 SV SV RyRy,V4 V4 解:解:分为分为4 4个编队个编队p第一编队:第一编队:LVLVp第二编队:第二编队:MULTSVMULTSV; LVLVp第

140、三编队:第三编队:ADDVADDVp第四编队:第四编队:SVSV196196/206/2063.6 向量处理机一个编队内所有向量指令执行完毕所要的时间为: (假设第假设第i i个编队中所有向量指令处理的向量元素个数均为个编队中所有向量指令处理的向量元素个数均为n n)qT Tc ci i:第第i i个编队的执行时间个编队的执行时间qT Tstartstartijij :第第i i个编队中第个编队中第j j条指令所使用向量功能部件的启条指令所使用向量功能部件的启动时钟周期数动时钟周期数197197/206/2063.6 向量处理机编队后的向量指令序列总的执行时间为:qm m:向量指令序列编队的个

141、数向量指令序列编队的个数qT Tstartstart:向量指令序列编队总的启动时钟周期数向量指令序列编队总的启动时钟周期数198198/206/2063.6 向量处理机编队并采用分段开采技术后,向量指令序列执行所需的总的时钟周期数为:qT Tlooploop:分段开采所需的额外的时间开销分段开采所需的额外的时间开销qMVMVL L:向量处理机的向量寄存器长度向量处理机的向量寄存器长度 3.6 向量处理机例例3.63.6 在某向量处理机上执行在某向量处理机上执行DAXPYDAXPY的向量指令序列,也即计算双精的向量指令序列,也即计算双精度浮点向量表达式。度浮点向量表达式。 其中其中X X和和Y

142、Y是双精度浮点向量,最初保存在外部存储器中,是双精度浮点向量,最初保存在外部存储器中,是是一个双精度浮点常数,已存放在浮点寄存器一个双精度浮点常数,已存放在浮点寄存器F0F0中。计算该表达式中。计算该表达式的向量指令序列如下:的向量指令序列如下: LV V1LV V1,RxRxMULTFV V2MULTFV V2,F0F0,V1V1LV V3LV V3,RyRyADDV V4ADDV V4,V2V2,V3V3SV SV RyRy,V4V4200200/206/2063.6 向量处理机解:解:可以把上述可以把上述5条向量指令按如下方式进行编队:条向量指令按如下方式进行编队:q第一编队:第一编队:

143、LV V1LV V1,RxRx;q第二编队:第二编队:MULTFV V2MULTFV V2,F0F0,V1V1;LV V3LV V3,RyRy;q第三编队:第三编队:ADDV V4ADDV V4,V2V2,V3V3;q第四编队:第四编队:SV SV RyRy,V4V4。假设:假设:T Tlooploop1515向量存储部件的启动:向量存储部件的启动:1212个时钟周期个时钟周期向量乘法部件的启动:向量乘法部件的启动:7 7个时钟周期个时钟周期向量加法部件的启动:向量加法部件的启动:6 6个时钟周期个时钟周期向量寄存器长度:向量寄存器长度:MVLMVL 201201/206/2063.6 向量处

144、理机对n个向量元素进行计算所需的时钟周期数为采用向量链接技术,那么指令序列可以编队为q第一编队:第一编队:LV V1,RxLV V1,Rx;MULTFV V2,F0,V1MULTFV V2,F0,V1;q第二编队:第二编队:LV V3,RyLV V3,Ry;ADDV V4,V2,V3ADDV V4,V2,V3;q第三编队:第三编队:SV Ry,V4SV Ry,V4。202202/206/2063.6 向量处理机q第一编队启动需要第一编队启动需要12+7=1912+7=19个个时钟周期时钟周期q第二个编队启动需要第二个编队启动需要12+6=1812+6=18个个时钟周期时钟周期q第三个编队启动仍

145、然需要第三个编队启动仍然需要1212个个时钟周期时钟周期 对n个向量元素进行计算所需的时钟周期数为203203/206/2063.6 向量处理机2.向量处理机的峰值性能 RR 表示当向量长度为无穷大时,向量处理机的最高性能,也称为峰值性能。对于上述例题3.6向量指令序列中的操作而言,只有“MULTFV V2,F0,V1”和“ADDV V4,V2,V3”两条浮点操作向量指令。q假设该向量处理机的时钟频率为假设该向量处理机的时钟频率为200 MHz200 MHz,那么:那么: 204204/206/2063.6 向量处理机的时钟周期数的时钟周期数向量指令序列执行所需向量指令序列执行所需时钟频率时钟

146、频率算次数算次数向量指令序列中浮点运向量指令序列中浮点运 =nRlim 2 2 n n 200 200=nlimMFLOPSn n6464 6464 3 3 n nMFLOPS 2 2 n n 200 200=nlim4 4 n nMFLOPS= 100100MFLOPS205205/206/2063.6 向量处理机3.半性能向量长度n n1/21/2半性能向量长度n n1/21/2是指向量处理机的运行性能达到其峰值性能的一半时所必须满足的向量长度。对于上面的例子 由于该向量处理机的峰值性能由于该向量处理机的峰值性能R R100 MFLOPS100 MFLOPS,所以根据半性能向量长度的定义有

147、:所以根据半性能向量长度的定义有:206206/206/2063.6 向量处理机假设假设 6464,那么有:,那么有: n n1/21/2643n1/2 2n1/2 20050 8n1/2 5n1/2 64,n1/2 12.8n1/2 132n1/2 200643n1/2n1/264 50207207/206/2063.6 向量处理机4.向量长度临界值n nv v向量长度临界值n nv v:对于某一计算任务而言,向量方式的处理速度优于标量串行方式处理速度时所需的最小向量长度。对于上述DAXPY的例子p假设,在标量串行工作方式假设,在标量串行工作方式下实现下实现DAXPYDAXPY循环的开循环的

148、开销为销为1010个个时钟周期。那么在标量串行方式下,计算时钟周期。那么在标量串行方式下,计算DAXPYDAXPY循环所需要的时钟周期数为:循环所需要的时钟周期数为: T Ts s =( 10 =( 10121212127 76 612 )12 )n nv v = 59 = 59n nv v208208/206/2063.6 向量处理机q在向量方式下,计算在向量方式下,计算DAXPYDAXPY循环所需要的时钟周期数为:循环所需要的时钟周期数为: T Tv v = 64 = 643 3n nv v q根据向量长度临界值的定义,有:根据向量长度临界值的定义,有: T Tv v = = T Ts s 64643 3n nv v = 59 = 59n nv v=6456= 2nv209209/206/206本章作业3.12 3.14 3.15 3.17 3.19

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号