1/206▲Computerarchitecture第3章流水线技术包仲贤兰州理工大学计算机与通信学院bao_zhongxian@163.com2/206▲Computerarchitecture3.1重叠执行和先行控制3.2流水线的基本概念3.3流水线的性能指标3.4流水线的相关与冲突3.5流水线的实现3.6向量处理机3/206▲Computerarchitecture1.将一条指令的执行过程分为三个阶段3.1重叠执行和先行控制3.1.1重叠执行取指令分析执行时间t一条指令的执行过程4/206▲Computerarchitecture3.1重叠执行和先行控制取指令按照指令计数器PC的内容访问主存,取出一条指令送到指令寄存器。指令分析对指令的操作码进行译码,按照给定的寻址方式和地址字段形成操作数的地址,并用这个地址读取操作数。指令执行按照操作码的要求,完成指令规定的功能。在指令的执行过程中还要更新PC值,为读取下一条指令做好准备。5/206▲Computerarchitecture3.1重叠执行和先行控制2.三种执行方式顺序执行方式一次重叠执行方式二次重叠执行方式6/206▲Computerarchitecture3.1重叠执行和先行控制执行n条指令所花的时间取指令k分析k执行k取指令k+1分析k+1执行k+13.顺序执行方式指令的执行过程niiiitttT1)(执行分析取指令7/206▲Computerarchitecture3.1重叠执行和先行控制如果取指令、指令分析和指令执行的时间相等,都是t,则T=3nt优点控制简单,节省设备。主要缺点处理机执行指令的速度慢功能部件的利用率很低8/206▲Computerarchitecture3.1重叠执行和先行控制取指令k分析k执行k取指令k+1分析k+1执行k+1取指令k+2分析k+2执行k+24.一次重叠执行方式指令的执行过程执行第k条指令与取第k+l条指令同时进行。(一种最简单的重叠方式)9/206▲Computerarchitecture3.1重叠执行和先行控制如果执行一条指令的3个阶段的时间相等,都是t,则执行n条指令所花的时间为T=(1+2n)t优点程序的执行时间减少了近1/3。功能部件的利用率明显提高。缺点需要增加一些硬件,控制过程变复杂了。10/206▲Computerarchitecture3.1重叠执行和先行控制取指令k分析k执行k取指令k+1分析k+1执行k+1取指令k+2分析k+2执行k+25.二次重叠执行方式指令的执行过程取第k+l条指令提前到与分析第k条指令同时进行,分析第k+l条指令与执行第k条指令同时进行。11/206▲Computerarchitecture3.1重叠执行和先行控制如果执行一条指令的3个阶段的时间相等,都是t,则执行n条指令所花的时间为T=(2+n)t优点与顺序执行方式相比,执行时间缩短了近2/3。部件的利用率有了进一步的提高。缺点需要增加更多的硬件。需要设置独立的取指令部件、指令分析部件和指令执行部件。12/206▲Computerarchitecture3.1重叠执行和先行控制访问主存的冲突问题4种解决方法设置两个独立编址的存储器:指令存储器(存放指令)、数据存储器(存放数据)指令和数据仍然混合存放在同一个主存中,但设置两个Cache:指令Cache、数据Cache程序空间和数据空间相互独立的系统结构被称为哈佛结构。指令和数据仍然混合存放在同一个主存中,但主存采用多体交叉结构。(有一定的局限性)13/206▲Computerarchitecture3.1重叠执行和先行控制在主存和指令分析部件之间增设指令缓冲站(又被称为先行指令缓冲站)主存不是满负荷工作的,插空从主存中预先把后面将要执行的指令取出来,存放到指令缓冲站中。在“取指令”阶段从指令缓冲站读取指令(如果指令缓冲站不为空),而不用去访问主存。14/206▲Computerarchitecture3.1重叠执行和先行控制6.先行指令缓冲站先行指令缓冲站的组成先行程序计数器PC1现行程序计数器PC指令分析部件指令寄存器IR控制逻辑主存控制器指令缓冲存储区15/206▲Computerarchitecture3.1重叠执行和先行控制指令缓冲存储区和相应的控制逻辑按队列方式工作。只要指令缓冲站不满,它就自动地向主存控制器发取指令请求,不断地预取指令。指令分析部件每分析完一条指令,就自动向指令缓冲站发出取下一条指令的请求。指令取出之后就把指令缓冲站中的该指令作废。指令缓冲站中存放的指令的条数是动态变化的。两个程序计数器16/206▲Computerarchitecture3.1重叠执行和先行控制先行程序计数器PC1:用于从主存预取指令;现行程序计数器PC:用来记录指令分析部件当前正在分析的指令的地址。7.先行控制方式中的一次重叠执行若取指令阶段的时间很短,可以把这个操作合并到分析指令中。上述的二次重叠就演变成了一次重叠把一条指令的执行过程分为分析和执行两个阶段;让前一条指令的执行与后一条指令的分析重叠进行。17/206▲Computerarchitecture3.1重叠执行和先行控制分析k执行k分析k+1执行k+1分析k+2执行k+2如果指令分析和指令执行所需要的时间都是t,则采用这种方式连续执行n条指令所需要的时间为:T=(1+n)t控制方式比较简单,得到了广泛应用。18/206▲Computerarchitecture3.1重叠执行和先行控制分析k执行k分析k+1执行k+1分析k+2执行k+2执行k+3分析k+3当指令分析和指令执行所需要的时间不相等时,其执行过程为:指令分析部件和指令执行部件存在相互等待的时候,会出现部件空闲的情况。19/206▲Computerarchitecture3.1重叠执行和先行控制1.先行控制技术:缓冲技术和预处理技术的结合缓冲技术:在工作速度不固定的两个功能部件之间设置缓冲器,用以平滑它们的工作。预处理技术:预取指令、对指令进行加工以及预取操作数等。2.采用先行控制方式的处理机结构3.1.2先行控制20/206▲Computerarchitecture3.1重叠执行和先行控制主存储器存储控制器先行指令缓冲站先行读数站后行写数站指令分析部件先行操作站运算控制器运算器通用寄存器21/206▲Computerarchitecture3.1重叠执行和先行控制设置了4个缓冲站(平滑主存、指令分析部件、运算器三者之间的工作)先行指令缓冲站(前面已讲述)先行操作站先行读数站后行写数站共同特点:按先进先出的方式工作,而且都是由一组若干个能快速访问的存储单元和相关的控制逻辑组成。22/206▲Computerarchitecture3.1重叠执行和先行控制先行操作站在指令分析部件和运算器之间提供缓冲先行:因为其中的指令对于运算器正在执行的指令来说是后续的,但却被先行取出并预处理。指令分析部件从先行指令缓冲站取指令,并进行预处理,加工成统一格式的RR型操作命令,然后送入先行操作站。对于不同指令做不同的处理。23/206▲Computerarchitecture3.1重叠执行和先行控制寄存器-寄存器型(RR型)指令:可以不作任何处理,直接送入。操作数来自主存的运算指令:计算出操作数的有效地址,并将该地址送入先行读数站的某个存储单元(设其地址为i),同时用i替换原来指令中的操作数地址码字段。向主存“写数”的指令:把形成的有效地址送入后行写数站的某个存储单元(设其地址为j),同时用j替换原来指令中的目标地址码字段。立即数型指令:把指令中的立即数送入读数站(设为第l个存储单元),同样也用l替换原来指令中的立即数字段。24/206▲Computerarchitecture3.1重叠执行和先行控制运算器从先行操作站取出RR型操作命令并执行。每执行完一条,将运算结果写入通用寄存器组或者后行写数站。继续执行先行操作站中的后续命令。先行读数站作用:接收指令分析部件送来的访问主存的有效地址,按顺序依次从主存读取操作数,提供给运算器使用。先行:因为对于正在执行的指令来说,先行读数站中的操作数是先行取出的。25/206▲Computerarchitecture3.1重叠执行和先行控制每个存储单元由3部分组成:先行地址字段、先行操作数字段、标志字段每当从指令分析部件接收有效地址时,将之放入先行地址字段,并将地址有效标志置位。等到该单元成为队列的第一项时,先行读数站会用该地址向主存发出读请求,把取来的操作数放入该单元的先行操作数字段,同时将数据有效标志置位。当以后运算器需要该操作数时,就可以直接从先行读数站取得,而不必去访问主存。26/206▲Computerarchitecture3.1重叠执行和先行控制后行写数站作用:接收从运算器送来的结果数据,并负责将之写入主存。后行:因为站在运算器的角度来看,结果数据不是在相应的指令运算完后立即写入主存,而是由后行写数站滞后写入的。每一个存储单元由3部分组成:后行地址字段、后行数据字段、标志字段每当从运算器接收数据时,将之放入后行数据字段,并把相应的数据有效标志置位。后行写数站的控制逻辑自动向主存发出写数请求。当写数据操作完成后,也要置位有关标志。27/206▲Computerarchitecture3.1重叠执行和先行控制3.采用先行控制后的一次重叠执行分析k执行k分析k+1执行k+1分析k+2执行k+2执行k+3分析k+3指令分析部件在不间断地分析指令,而指令执行部件则在不间断地执行指令,它们都始终处于忙碌状态。28/206▲Computerarchitecture3.1重叠执行和先行控制理想情况下,指令执行部件应该是一直忙碌的。处理机连续执行n条指令所需要的时间为niiniitttT111执行执行分析先行29/206▲Computerarchitecture1.工业生产流水线下面通过一个例子来说明流水线的好处:两种方案两种方案的工作过程对比流水线生产过程的抽象描述这种流水工作方式的主要特点3.2流水线的基本概念3.2.1什么是流水线30/206▲Computerarchitecture3.2流水线的基本概念2.流水线技术把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现。把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他的子过程并行进行。3.流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。流水线的段数称为流水线的深度。31/206▲Computerarchitecture3.2流水线的基本概念4.指令流水线把指令的解释过程分解为分析和执行两个子过程,并让这两个子过程分别用独立的分析部件和执行部件来实现。理想情况:速度提高一倍4段指令流水线取指令译码执行存结果入出32/206▲Computerarchitecture3.2流水线的基本概念5.浮点加法流水线把流水线技术应用于运算的执行过程,就形成了运算操作流水线,也称为部件级流水线。把浮点加法的全过程分解为求阶差、对阶、尾数相加、规格化4个子过程。理想情况:速度提高3倍求阶差对阶尾数相加规格化△t△t△t△t入出6.时空图时空图从时间和空间两个方面描述了流水线的工作过程。时空图中,横坐标代表时间,纵坐标代表流水线的各个段。4段指令流水线的时空图取指令译码执行存结果空间时间1111222233334444555566566(单位:△t)012345678934/206▲Computerarchitecture3.2流水线的基本概念7.流水技术的特点流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流