计算机体系结构:彻底弄懂流水线性能分析

本文介绍了一种计算流水线吞吐率、加速比和效率的方法,包括确定最优计算顺序、绘制时空图以及根据时空图计算各项指标的具体步骤。通过多个实例进行讲解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目简单概要

该类问题通常给出流水线的流水段的个数,以及各个流水段的时间(拍数),之后给出一个算术表达式,要求根据该算术表达式作出时空图,并求解流水线的吞吐率、加速比和效率。

通用步骤总结

①首先判断最优的求解顺序。题目中所给的算术表达式一般可以有多种求解顺序,比如最简单的X=A+B+C+D,就可以分成两种顺序进行求解:

第一种:先求A+B的结果,再求C+D的结果,最后将两个结果相加得到最终结果;
第二种:先求A+B的结果,然后将该结果与C相加,再将得到的结果与D相加。

这两种方式虽然都是执行了三次加法,但是第一种方法却更优。为什么呢?在此做一个定性分析:第二种方法在求解A+B的结果和C相加的时候,D只能等待运算完成以后才能参与加法,这个过程无疑会多消耗时间;而第一种方法,所有操作数可以认为全程都处于参与计算的状态,因此会更加节约时间。

一般来说,判断最优求解顺序的准则是:能够同时进行(并行)的工作越多越好!

②根据选定的求解顺序作出时空图。作时空图首先需要画出坐标轴和上面的刻度,流水线中一共有几个流水段那纵轴上就要有几个刻度。横轴上的刻度可以先只标注一部分,因为在作图时不知道横轴最远的刻度需要标注在哪。具体作图时按照逻辑顺序,一列一列地画出时空图中的方格

③根据时空图求解吞吐率、加速比和效率。作出时空图后可以方便地求解出吞吐率、加速比和效率。

吞吐率=任务个数/流水线执行完这些任务的总用时

任务个数其实就是执行的运算个数。比如A+B+C,里面就需要执行两次加法运算,因此任务个数就是2。执行完这些任务的总用时可以直接通过时空图中横轴最后一个端点对应的时间确定。

加速比=串行执行所有任务的总用时/流水线执行完这些任务的总用时

串行执行所有任务的总用时直接把每个任务的执行时间加在一起就行。

效率=时空图中的方格数/(流水线的总段数×流水线执行完所有任务的总拍数)

例题一

有一四段线性流水线,每功能段延时时间分别是△t1=△t3=△t4=△t, △t2=3△t。现在这个流水线上分别执行4个任务和40个任务。求实际吞吐率、效率和加速比。

解:以4个任务为例,首先作出该流水线的时空图如下所示:

在这里插入图片描述
首先计算实际吞吐率。考虑实际吞吐率的定义,即一定时间所完成的任务数与所消耗的时间的比值。对于第一种情况四个任务,消耗的时间可以通过时空图判断出来为15△t,因此实际吞吐率为4/15△t。
接下来计算效率。效率即时空图中的蓝色方格的面积之和与其所在的坐标图长方形区域的面积之比。因此可以得出,效率E=24/(4×15)=40%。
最后计算加速比。根据加速比的定义,加速比的大小即为使用流水线前和使用流水线后处理四个任务的时间比值。使用流水线之前,需要4*6=24拍,同时可以根据时空图得出使用流水线后只需要15拍即可完成四个任务,因此加速比=24/15=1.6。

当任务数较多,比如此时的四十个时,使用时空图就不那么方便了,因此需要借助于相关的公式。
同样首先计算吞吐率。处理四十个任务所需要的拍数=6△t+(40-1)*3△t=123△t,因此实际吞吐率=40/123△t。
可以利用如下公式计算完成指定个数任务所需的拍数:

时钟周期数=(任务数-1)×输出端相邻两个输出的间隔周期+单独执行一个任务所需的周期数

接下来计算效率:E=(6×40)/(123×4)×100%=20/41≈48.8%。
最后计算加速比:Sp=(6×40)/123≈1.95

可以看出,随着任务数的增多,加速比越来越接近最大加速比6/3=2。

例题二

以浮点加法运算为例(四段)各段时间相等,求:Z=A+B+C+D+E+F+G+H的TP、E、Sp。
由于任务量不是特别多,因此考虑先作出时空图如下所示
在这里插入图片描述
执行运算的流程如下图所示。之所以采用这种方式进行计算,是因为这样计算的时间消耗小于各个项逐一相加的方法。
在这里插入图片描述

首先计算实际吞吐率:完成的总任务数即加法的次数,为7次,总时间为15△t,因此实际吞吐率=7/15△t。
接下来计算效率:E=(7×4)/(15×4)=7/15。
最后计算加速比:SP=(4△t×7)/15=28/15≈1.87

例题三

在这里插入图片描述
判断最优的求解顺序。本题中的计算是将四组数字相加后再进行累乘,那么可行的计算顺序有两种:第一种是先将四组数据逐一相加后,最后再进行逐一相乘;第二种是每相加一组数据,就把这组数据的和与另一组数据的和相乘。
怎么判断哪一种方案更好呢?一个基本的原则是能够同时执行的部分(也就是并行的部分)越多越好
因此此处可以判断第一种方法更好,因为第二种方法再进行前面几组数据的运算时,排在后面的数据只能先等着,因此执行时间必然会更长。
按照判断出的最优求解顺序作出时空图。作时空图的方法是按照时间顺序,一次画时空图中的一列,直到完成整个运算过程。本题中的时空图如下所示:
在这里插入图片描述

计算吞吐率、加速比和效率。可以根据时空图直接计算得出,具体解析略,步骤如下:
在这里插入图片描述

例题四

在这里插入图片描述

时空图为

在这里插入图片描述

吞吐率、加速比和效率计算

在这里插入图片描述

如果本篇文章有看不懂的地方,请和我私信联系,谢谢!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值