系统结构の第三章.docx
- 文档编号:12630725
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:47
- 大小:49.05KB
系统结构の第三章.docx
《系统结构の第三章.docx》由会员分享,可在线阅读,更多相关《系统结构の第三章.docx(47页珍藏版)》请在冰豆网上搜索。
系统结构の第三章
♦工业生产流水线
下面通过一个例子来说明流水线的好处:
Ø两种方案
Ø两种方案的工作过程对比
Ø流水线生产过程的抽象描述
Ø这种流水工作方式的主要特点
3.1流水线的基本概念
♦流水线技术
Ø把一个重复的过程分解为若干个子过程,每个子过程由专门的功能部件来实现。
Ø把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其它的子过程并行进行。
♦流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。
流水线的段数称为流水线的深度。
3.1流水线的基本概念
♦指令流水线
Ø把指令的解释过程分解为分析和执行两个子过程,并让这两个子过程分别用独立的分析部件和执行部件来实现。
理想情况:
速度提高一倍
Ø4段指令流水线
3.1流水线的基本概念
♦浮点加法流水线
Ø把流水线技术应用于运算的执行过程,就形成了
运算操作流水线,也称为部件级流水线。
Ø把浮点加法的全过程分解为求阶差、对阶、尾数
相加、规格化四个子过程。
理想情况:
速度提高3倍
♦时空图
Ø时空图从时间和空间两个方面描述了流水线的工作过程。
时空图中,横坐标代表时间,纵坐标代表流水线的各个段。
Ø浮点加法流水线的时空图
3.1流水线的基本概念
♦流水技术的特点
Ø流水线把一个处理过程分解为若干个子过程(段),每个子过程由一个专门的功能部件来实现。
Ø流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。
时间最长的段将成为流水线的瓶颈。
Ø流水线每一个段的后面都要有一个缓冲寄存器(锁存器),称为流水寄存器。
❑作用:
在相邻的两段之间传送数据,以保证提供后
面要用到的信息,并把各段的处理工作相互隔离。
3.1流水线的基本概念
Ø流水技术适合于大量重复的时序过程,只有在输入端不断地提供任务,才能充分发挥流水线的效率。
Ø流水线需要有通过时间和排空时间。
❑通过时间:
第一个任务从进入流水线到流出结果
所需的时间。
❑排空时间:
最后一个任务从进入流水线到流出结
果所需的时间。
3.1流水线的基本概念
♦部件级、处理机级及处理机间流水线
(按照流水技术用于计算机系统的等级不同)
Ø部件级流水线(运算操作流水线):
把处理机中的部件分段,再把这些分段相互连接起来,使得各种类型的运算操作能够按流水方式进行。
Ø处理机级流水线(指令流水线):
把指令的执行过程按照流水方式处理。
把一条指令的执行过程
3.1流水线的基本概念
分解为若干个子过程,每个子过程在独立的功能部件中执行。
Ø系统级流水线(宏流水线):
把多台处理机串行连接起来,对同一数据流进行处理,每个处理机完成整个任务中的一部分。
3.1流水线的基本概念
♦单功能流水线与多功能流水线
(按照流水线所完成的功能来分类)
Ø单功能流水线:
只能完成一种固定功能的流水线。
Ø多功能流水线:
流水线的各段可以进行不同的
连接,以实现不同的功能。
例:
ASC的多功能流水线
3.1流水线的基本概念
♦静态流水线与动态流水线
(按照同一时间内各段之间的连接方式对多功能流水线作
进一步的分类)
Ø静态流水线:
在同一时间内,多功能流水线中的
各段只能按同一种功能的连接方式工作。
❑对于静态流水线来说,只有当输入的是一串相同的
运算任务时,流水的效率才能得到充分的发挥。
例如:
ASC的8段流水线
3.2流水线的基本概念
Ø动态流水线:
在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。
动画
❑优点
灵活,能够提高流水线各段的使用率,从而
提高处理速度。
❑缺点
控制复杂。
Ø静、动态流水线时空图的对比
3.1流水线的基本概念
♦线性流水线与非线性流水线
(按照流水线中是否有反馈回路来进行分类)
Ø线性流水线:
流水线的各段串行连接,没有反馈回路。
数据通过流水线中的各段时,每一个段最多只流过一次。
Ø非线性流水线:
流水线中除了有串行的连接外,还有反馈回路。
(举例)
Ø非线性流水线的调度问题
❑确定什么时候向流水线引进新的任务,才能使该任务不会与先前进入流水线的任务发生冲突——争用流水段。
3.1流水线的基本概念
3.1流水线的基本概念
♦顺序流水线与乱序流水线
(根据任务流入和流出的顺序是否相同来进行分类)
Ø顺序流水线:
流水线输出端任务流出的顺序与输
入端任务流入的顺序完全相同。
每一个任务在流
水线的各段中是一个跟着一个顺序流动的。
Ø乱序流水线:
流水线输出端任务流出的顺序与输
入端任务流入的顺序可以不同,允许后进入流水
线的任务先完成(从输出端流出)。
也称为无序流水线、错序流水线、异步流水线
3.1流水线的基本概念
♦标量处理机与向量流水处理机
Ø把指令执行部件中采用了流水线的处理机称为流
水线处理机。
Ø标量处理机:
处理机不具有向量数据表示和向量
指令,仅对标量数据进行流水处理。
Ø向量流水处理机:
具有向量数据表示和向量指令
的处理机。
向量数据表示和流水技术的结合。
吞吐率:
在单位时间内流水线所完成的任务数量或输
出结果的数量。
3.2流水线的性能指标
♦各段时间均相等的流水线
Ø各段时间均相等的流水线时空图
3.2流水线的性能指标
Ø流水线完成n个连续任务所需要的总时间为:
(假设一条k段线性流水线)
Tk=kΔt+(n-1)Δt=(k+n-1)Δt
Ø流水线的实际吞吐率
3.2流水线的性能指标
Ø最大吞吐率与实际吞吐率的关系
3.2流水线的性能指标
♦各段时间不完全相等的流水线
Ø各段时间不等的流水线及其时空图
举例1(时空图)
❑一条4段的流水线
❑S1,S3,S4各段的时间:
Δt
❑S2的时间:
3Δt(瓶颈段)
流水线中这种时间最长的段称为流水线的瓶颈段。
3.2流水线的性能指标
举例2:
一条5段的流水线
❑S1,S2,S3,S5各段的时间:
Δt
❑S4的时间:
3Δt(瓶颈段)
3.2流水线的性能指标
Ø各段时间不等的流水线的实际吞吐率为:
(Δti为第i段的时间,共有k个段)
3.2流水线的性能指标
3.2流水线的性能指标
♦解决流水线瓶颈问题的常用方法举例
Ø细分瓶颈段
例如:
对前面的5段流水线
把瓶颈段S4细分为3个子流水线段:
S4-1,S4-2,S4-3
3.2流水线的性能指标
Ø重复设置瓶颈段
❑举例:
时-空图
❑缺点:
控制逻辑比较复杂,所需的硬件增加了。
例如:
对前面的5段流水线
重复设置瓶颈段S4:
S4a,S4b,S4c
3.2流水线的性能指标
3.2流水线的性能指标
加速比:
完成同样一批任务,不使用流水线所用的时间
与使用流水线所用的时间之比。
假设:
不使用流水线(即顺序执行)所用的时间为Ts,使用流水线后所用的时间为Tk,则该流水线的加速比为:
3.2流水线的性能指标
♦流水线各段时间相等(都是△t)
Ø一条k段流水线完成n个连续任务
所需要的时间为:
Tk=(k+n-1)Δt
Ø顺序执行n个任务
所需要的时间:
Ts=nk△t(解释)
Ø流水线的实际加速比为:
3.2流水线的性能指标
Ø最大加速比
3.2流水线的性能指标
♦流水线的各段时间不完全相等时
Ø一条k段流水线完成n个连续任务的实际加速比为:
3.2流水线的性能指标
流水线的效率:
流水线中的设备实际使用时间与整个运行时间的比值,即流水线设备的利用率。
由于流水线有通过时间和排空时间,所以在连续
完成n个任务的时间内,各段并不是满负荷地工作。
♦各段时间相等
Ø各段的效率ei相同
(解释)
3.2流水线的性能指标
Ø整条流水线的效率为:
3.2流水线的性能指标
Ø当流水线各段时间相等时,流水线的效率与吞吐率
成正比。
E=TP·△t
♦流水线的效率是流水线的实际加速比S与它的最大加速
比k的比值。
3.2流水线的性能指标
♦从时空图上看,效率就是n个任务占用的时空面积和
k个段总的时空面积之比。
3.2流水线的性能指标
例3.1设在下图所示的静态流水线上计算:
流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中,试计算其吞吐率、加速比和效率。
3.2流水线的性能指标
解:
(1)选择适合于流水线工作的算法
❑先计算A1+B1、A2+B2、A3+B3和A4+B4;
❑再计算(A1+B1)×(A2+B2)和(A3+B3)×(A4+B4);
❑然后求总的乘积结果。
(2)画出时空图
3.2流水线的性能指标
☐在18个△t时间中,给出了7个结果。
吞吐率为:
3.2流水线的性能指标
3.2流水线的性能指标
Ø主要原因
❑多功能流水线在做某一种运算时,总有一些段是空闲的;
❑静态流水线在进行功能切换时,要等前一种运算全部流出流水线后才能进行后面的运算;
❑运算之间存在关联,后面有些运算要用到前面运算的结果;
❑流水线的工作过程有建立与排空部分。
3.2流水线的性能指标
例3.2有一条动态多功能流水线由5段组成,加法用1、3、4、5段,乘法用1、2、5段,第4段的时间为2△t,其余各段时间均为△t,而且流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中。
若在该流水线上计算:
试计算其吞吐率、加速比和效率。
3.2流水线的性能指标
解:
(1)选择适合于流水线工作的算法
☐应先计算A1×B1、A2×B2、A3×B3和A4×B4;
☐再计算(A1×B1)+(A2×B2)
(A3×B3)+(A4×B4);
☐然后求总的累加结果。
(2)画出时空图
(3)计算性能
3.2流水线的性能指标
3.2流水线的性能指标
下面我们再看一个例子:
例在静态流水线上计算:
求:
吞吐率,加速比,效率。
解:
(1)确定适合于流水处理的计算过程
(2)画时空图
(3)计算性能
吞吐率TP=7/(20△t)
加速比S=(34△t)/(20△t)=1.7
效率E=(4×4+3×6)/(8×20)=0.21
3.2流水线的性能指标
3.2流水线的性能指标
可以看出,在求解此问题时,该流水线的效率不高。
动态流水线的时-空图举例Ⅰ
举例Ⅱ:
这样行不行?
正确答案
3.2流水线的性能指标
♦瓶颈问题
Ø理想情况下,流水线在工作时,其中的任务是同步地每一个时钟周期往前流动一段。
Ø当流水线各段不均匀时,机器的时钟周期取决于瓶颈段的延迟时间。
Ø在设计流水线时,要尽可能使各段时间相等。
♦流水线的额外开销
☐流水寄存器延迟
☐时钟偏移开销
3.2流水线的性能指标
Ø流水寄存器需要建立时间和传输延迟
❑建立时间:
在触发写操作的时钟信号到达之前,寄
存器输入必须保持稳定的时间。
❑传输延迟:
时钟信号到达后到寄存器输出可用的时
间。
Ø时钟偏移开销
❑流水线中,时钟到达各流水寄存器的最大差值时间。
(时钟到达各流水寄存器的时间不是完全相同)
3.2流水线的性能指标
Ø几个问题
❑流水线并不能减少(而且一般是增加)单条指令的执行时间,但却能提高吞吐率。
❑增加流水线的深度(段数)可以提高流水线的性能。
❑流水线的深度受限于流水线的额外开销。
❑当时钟周期小到与额外开销相同时,流水已没意义。
因为这时在每一个时钟周期中已没有时间来做有用的工作。
♦冲突问题
流水线设计中要解决的重要问题之一。
Ø在非线性流水线中,存在反馈回路,当一个任务在流水线中流过时,可能要多次经过某些段。
Ø流水线调度要解决的问题:
应按什么样的时间间隔向流水线输入新任务,才能既不发生功能段使用冲突,又能使流水线有较高的吞吐率和效率?
3.3非线性流水线的调度
Ø向一条非线性流水线的输入端连续输入两个任务之间的时间间隔称为非线性流水线的启动距离。
Ø会引起非线性流水线功能段使用冲突的启动距离则称为禁用启动距离。
Ø启动距离和禁用启动距离一般都用时钟周期数来表示,是一个正整数。
Ø预约表
❑横向(向右):
时间(一般用时钟周期表示)
❑纵向(向下):
流水线的段
3.3非线性流水线的调度
♦根据预约表写出禁止表F
Ø禁止表F:
一个由禁用启动距离构成的集合。
Ø具体方法
对于预约表的每一行的任何一对√,用它们所在的列号相减(大的减小的),列出各种可能的差值,然后删除相同的,剩下的就是禁止表的元素。
Ø在上例中
❑第一行的差值只有一个:
8;
❑第二行的差值有3个:
1,5,6;
❑第3行只有一个√,没有差值;
❑第4和第5行的差值都只有一个:
1;
其禁止表是:
F={1,5,6,8}
3.3非线性流水线的调度
♦根据禁止表F写出初始冲突向量C0
(进行从一个集合到一个二进制位串的变换)
Ø冲突向量C:
一个N位的二进制位串。
Ø设C0=(cNcN-1…ci…c2c1),则:
❑ci=0:
允许间隔i个时钟周期后送入后续任务
❑ci=1:
不允许间隔i个时钟周期后送入后续任务
Ø对于上面的例子
F={1,5,6,8}
C0=(10110001)
3.3非线性流水线的调度
♦根据初始冲突向量C0画出状态转换图
Ø当第一个任务流入流水线后,初始冲突向量C0决定了下一个任务需间隔多少个时钟周期才可以流入。
Ø在第二个任务流入后,新的冲突向量是怎样的呢?
❑假设第二个任务是在与第一个任务间隔j个时钟周期流入,这时,由于第一个任务已经在流水线中前进了j个时钟周期,其相应的禁止表中各元素的值都应该减去j,并丢弃小于等于0的值。
❑对冲突向量来说,就是逻辑右移j位(左边补0)。
3.3非线性流水线的调度
❑在冲突向量上,就是对它们的冲突向量进行“或”运算。
SHR(j)(C0)∨C0
其中:
SHR(j)表示逻辑右移j位
Ø推广到更一般的情况
假设:
Ck:
当前的冲突向量
j:
允许的时间间隔
则新的冲突向量为:
SHR(j)(Ck)∨C0
Ø对于所有允许的时间间隔都按上述步骤求出其新的冲突向量,并且把新的冲突向量作为当前冲突向量,反复使用上述步骤,直到不再产生新的冲突向量为止。
3.3非线性流水线的调度
Ø从初始冲突向量C0出发,反复应用上述步骤,可以求得所有的冲突向量以及产生这些向量所对应的时间间隔。
由此可以画出用冲突向量表示的流水线状态转移图。
❑有向弧:
表示状态转移的方向
❑弧上的数字:
表示引入后续任务(从而产生新的冲突向量)所用的时间间隔(时钟周期数)
3.3非线性流水线的调度
对于上面的例子
(1)C0=(10110001)
引入后续任务可用的时间间隔为:
2、3、4、7个时钟周期
如果采用2,则新的冲突向量为:
(00101100)∨(10110001)=(10111101)
如果采用3,则新的冲突向量为:
(00010110)∨(10110001)=(10110111)
如果采用4,则新的冲突向量为:
(00001011)∨(10110001)=(10111011)
如果采用7,则新的冲突向量为:
(00000001)∨(10110001)=(10110001)
(2)对于新向量(10111101),其可用的时间间隔为2个和7个时钟
周期。
用类似上面的方法,可以求出其后续的冲突向量分别为
(10111101)和(10110001)。
(3)对于其他新向量,也照此处理。
(4)在此基础上,画出状态转移示意图。
3.3非线性流水线的调度
♦根据状态转换图写出最优调度方案
Ø根据流水线状态图,由初始状态出发,任何一个闭合回路即为一种调度方案。
Ø列出所有可能的调度方案,计算出每种方案的平均时间间隔,从中找出其最小者即为最优调度方案。
Ø上例中,各种调度方案及其平均间隔时间。
❑最佳方案:
(3,4)
平均间隔时间:
3.5个时钟周期(吞吐率最高)
❑方案(4,3)的平均间隔时间也是3.5,但它不是最佳方案,为什么?
3.3非线性流水线的调度
3.3非线性流水线的调度
Ø方案(3,4)是一种不等时间间隔的调度方案,与等间隔的调度方案相比,在控制上要复杂得多。
为了简化控制,也可以采用等间隔时间的调度方案,但吞吐率和效率往往会下降不少。
❑在上述例子中,等时间间隔的方案只有一个:
(7),其吞吐率下降了一半。
3.3非线性流水线的调度
以双功能(功能A和B)非线性流水线为例。
♦状态转移图中结点状态的表示
Ø由两个冲突向量构成的冲突矩阵,这两个冲突向量分别对应于下一个任务的功能是A类和B类的情况。
♦初始结点有两个,分别对应于第一个任务是A类和B类的情况。
Ø当第一个任务是A类时,冲突矩阵为M(0)A。
Ø当第一个任务是B类时,冲突矩阵为M(0)B。
3.3非线性流水线的调度
其中:
❑Cpq(p,q∈{A,B})表示的是:
在一个p类任务流入流水线后,对后续q类任务的冲突向量。
它们可以由预约表求得。
❑Cpq共有22=4个。
❑对于N功能流水线,这种冲突向量有N2个。
3.3非线性流水线的调度
♦由下式求得后续状态的冲突矩阵
SHR(i)(Mk)∨Mr(0)
其中:
❑Mk:
当前状态
❑r:
下一个流入任务的类型(A或B)
❑i:
当前状态允许的流入r型任务的时间间隔
❑SHR(i)(Mk):
把当前状态中的各冲突向量逻辑右移i位
例如:
SHR(3)(Mk)∨MA(0)表示的是:
把当前状态Mk中的各冲突向量逻辑右移3位,再与初始矩阵MA(0)进行“或”运算。
♦举例说明双功能非线性流水线的最优调度
3.3非线性流水线的调度
例3.3有一条3段双功能非线性流水线,实现的功能是A和B,其预约表分别如表1和表2所示。
各段的通过时间都是一个时钟周期。
请找出该流水线单独处理A类任务和单独处理B类任务以及混合处理两类任务的最优调度方案。
3.3非线性流水线的调度
解:
(1)把两个预约表重叠起来,得到如表3所示的预约表。
(2)由预约表求初始冲突向量和初始冲突矩阵
3.3非线性流水线的调度
❑CAA:
一个A类任务流入流水线后,对下一个A类任务进入流水线的时间间隔的限制。
根据预约表表1可知,禁用时间间隔是2和3,故禁止表为:
{2,3},所以CAA=(0110)。
❑CBB:
一个B类任务流入流水线后,对下一个B类任务进入流水线的时间间隔的限制。
根据预约表表2可知,禁用时间间隔是2和3,所以CBB=(0110)。
❑CAB:
一个A类任务流入流水线后,对下一个B类任务进入流水线的时间间隔的限制。
根据预约表表3可知:
⏹为了避免在S1发生冲突,禁用时间间隔是:
4-2=2
3.3非线性流水线的调度
⏹在S2,不会发生冲突,这是因为根据表3,A类任务先于B类任务通过S2,而现在的实际情况又是A类任务先于B类任务流入流水线;
⏹为了避免在S3发生冲突,禁用时间间隔是:
3-1=2,5-1=4,5-3=2
⏹综合起来,有:
CAB=(1010)
❑CBA表示一个B类任务流入流水线后,对下一个A类任务进入流水线的时间间隔的限制。
根据预约表表3可知:
⏹为了避免在S1发生冲突,禁用时间间隔有:
2-1=1,5-1=4,5-4=1
⏹为了避免在S2发生冲突,禁用时间间隔是:
4-2=2
3.3非线性流水线的调度
⏹在S3,不会发生冲突,这是因为根据表3,B类任务先于A类任务通过S3,或者同时通过S3(第3个时钟周期),而现在的实际情况又是B类任务先于A类任务流入流水线。
⏹综合起来,有:
CAB=(1011)
初始矩阵为:
3.3非线性流水线的调度
(3)由初始冲突矩阵画出状态图
如果第一个流入的任务是A类,初始状态就是MA(0);如果第一个流入的任务是B类,则初始状态是MB(0)。
求所有后续状态的冲突矩阵:
例如:
在流入一个A类任务后,从CAA=(0110)可知,可以隔一个或4个时钟周期再流入一个A类任务。
假设是前者,则把初始状态MA(0)中的各冲突向量同时右移一位(即进行SHR
(1)操作),再与MA(0)进行或运算,可以得到新的冲突矩阵。
根据该矩阵的第一个冲突向量(0111)可知,只有隔4个时钟周期流入一个A类任务,才能不发生冲突。
把冲突矩阵中的各冲突向量同时右移4位(即进行SHR(4)操作),再与MA(0)进行按位或运算,可以得到新的冲突矩阵。
3.3非线性流水线的调度
再如,在流入一个A类任务后,从CAB=(1010)可知,可以隔一个或3个时钟周期再流入一个B类任务。
假设是前者,则把初始状态MA(0)中的各冲突向量同时右移一位(即进行SHR
(1)操作),再与MB(0)进行或运算,可以得到新的冲突矩阵。
据此可知,允许的流入为:
或者是隔3个时钟周期流入一个A类任务,或者是隔4个时钟周期流入一个B类任务。
按类似与上述类似的方法,又可以得到新的冲突矩阵。
求出所有可能的状态后,就可以画出状态图。
弧线上的标记“r.i”表示:
隔i个时钟周期流入r类的任务。
3.3非线性流水线的调度
3.3非线性流水线的调度
(4)由状态图得出最优调度方案
从状态图可以找出各种情况下的最优调度方案:
◆只流入A类任务的最优调度方案是:
(A.1,A.4)
◆流入B类任务的最优调度方案是:
(B.1,B.4)
◆混合流入A、B两类任务的最优调度方案是:
(B.1,A.3,A.4)
Ø介绍一条经典的5段RISC流水线
Ø首先讨论在非流水情况下是如何实现的
♦一条指令的执行过程分为以下5个周期:
Ø取指令周期(IF)
❑以程序计数器PC中的内容作为地址,从存储器中取出指令并放入指令寄存器IR;
❑同时PC值加4(假设每条指令占4个字节),指向顺序的下一条指令。
3.4流水线的相关与冲突
Ø指令译码/读寄存器周期(ID)
对指令进行译码,并用IR中的寄存器地址去访问通用寄存器组,读出所需的操作数。
Ø执行/有效地址计算周期(EX)
不同指令所进行的操作不同:
❑load和store指令:
ALU把指令中所指定的寄存器的内容与偏移量相加,形成访存有效地址。
❑寄存器-寄存器ALU指令:
ALU按照操作码指定的操作对从通用寄存器组中读出的数据进行运算。
3.4流水线的相关与冲突
❑寄存器-立即数ALU指令:
ALU按照操作码指定的操作对从通用寄存器组中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 结构 第三