计算机体系结构----指令流水线吞吐率、效率计算

每段时间相同

一条指令流水线被分为k段,每一段时间都为 Δ t \Delta t Δt,连续输入n条指令。

处理完n个任务所用的时间记作 T k T_k Tk
T k = k Δ t + ( n − 1 ) Δ t T_k=k\Delta t+(n-1)\Delta t Tk=kΔt+(n1)Δt
这个比较好理解,看时空图即可

在这里插入图片描述

吞吐率记作 T P TP TP
T P = n T k = n k Δ t + ( n − 1 ) Δ t TP= \frac{n}{T_k}=\frac{n}{k\Delta t+(n-1)\Delta t} TP=Tkn=kΔt+(n1)Δtn
n个任务,用n除以总时间,就是每个任务的平均处理时间,平均多久处理一个任务,就是吞吐率。

效率:流水线中的设备实际使用时间与整个运行时间的比值,即流水线设备的利用率。

一共分为k段,需要k个设备,那么每个设备的效率我们记作 e i e_i ei

一个设备,在整个过程中,每一条指令都要使用一次,所以使用了n次,加上每一次都是 Δ t \Delta t Δt,所以就是 n Δ t n\Delta t nΔt
e i = n Δ t T k = n Δ t k Δ t + ( n − 1 ) Δ t = n k + n − 1 e_i=\frac {n\Delta t}{T_k}=\frac{n\Delta t}{k\Delta t+(n-1)\Delta t}=\frac{n}{k+n-1} ei=TknΔt=kΔt+(n1)ΔtnΔt=k+n1n
(ps:注意,这个只符合,当一个设备每一条指令都会使用它的情况。飞此情况的,并不适用。其实还是从定义出发,效率就是所有设备的实际运行时间,与整个运行时间的比值,其实就是时空图里面被填满的格子,比上总的面积。)
那么整段流水线的效率呢,就是每一段的效率,加起来,求个平均值。

又因为这每一段的效率都一样,所以求均值和不求一样。故整段流水线的效率为:
E = e 1 + e 2 + . . . + e k k = k e 1 k = e 1 = n Δ t T k = n k + n − 1 E=\frac{e_1+e_2+...+e_k}{k}=\frac{ke_1}{k}=e_1=\frac {n\Delta t}{T_k}=\frac{n}{k+n-1} E=ke1+e2+...+ek=kke1=e1=TknΔt=k+n1n
这个结果其实还可以写作:
E = n Δ t T k = T P Δ t E=\frac {n\Delta t}{T_k}=TP\Delta t E=TknΔt=TPΔt

每段时间不同

一条指令流水线被分为k段,k段时间分别为 e 1 , e 2 , . . . , e k e_1,e_2,...,e_k e1,e2,...,ek,连续输入n条指令。

处理完n个任务所用的时间记作 T k T_k Tk
T k = ∑ i = 1 k Δ t i + ( n − 1 ) m a x ( Δ t 1 , Δ t 2 , . . . , Δ t k ) T_k=\sum_{i=1}^{k}\Delta t_i +(n-1)max(\Delta t_1,\Delta t_2,...,\Delta t_k) Tk=i=1kΔti+(n1)max(Δt1,Δt2,...,Δtk)
为什么是这样呢,看图。这个也好理解,直接看最长的那一段,从头到尾,最长的那一段一共执行了n次,那再观察时空图的末尾,最长的那一段过后,还执行了两小段,再观察时空图的开头,最长的那一段执行之前,还执行了一小段,这前后两部分,其实就是一个指令完整的执行流程,但不包括最长的那一段。所以啊,从n次执行中拿出来一个最长的,跟他们合在一起,就是一次完整的指令执行过程,所以最终的公式就是:一次完整的执行过程+(n-1)次最长的执行过程。

在这里插入图片描述

吞吐率 T P TP TP
T P = n ∑ i = 1 k Δ t i + ( n − 1 ) m a x ( Δ t 1 , Δ t 2 , . . . , Δ t k ) TP=\frac{n}{\sum_{i=1}^{k}\Delta t_i +(n-1)max(\Delta t_1,\Delta t_2,...,\Delta t_k)} TP=i=1kΔti+(n1)max(Δt1,Δt2,...,Δtk)n
效率:

先说一小段的效率 e i e_i ei
e i = n Δ t i T k = n Δ t i ∑ i = 1 k Δ t i + ( n − 1 ) m a x ( Δ t 1 , Δ t 2 , . . . , Δ t k ) e_i=\frac{n\Delta t_i}{T_k}=\frac{n\Delta t_i}{\sum_{i=1}^{k}\Delta t_i +(n-1)max(\Delta t_1,\Delta t_2,...,\Delta t_k)} ei=TknΔti=i=1kΔti+(n1)max(Δt1,Δt2,...,Δtk)nΔti
那总的效率E就是每一段的加起来,求均值

先看每一段加起来
e 1 + e 2 + . . . + e k = n Δ t 1 T k + n Δ t 2 T k + . . . = n ∑ i = 1 k Δ t i T k e_1+e_2+...+e_k=\frac{n\Delta t_1}{T_k}+\frac{n\Delta t_2}{T_k}+...=\frac{n\sum_{i=1}^{k}\Delta t_i}{T_k} e1+e2+...+ek=TknΔt1+TknΔt2+...=Tkni=1kΔti
再求均值,那就是除以k
E = n ∑ i = 1 k Δ t i k T k = n ∑ i = 1 k Δ t i k ∑ i = 1 k Δ t i + ( n − 1 ) m a x ( Δ t 1 , Δ t 2 , . . . , Δ t k ) E=\frac{n\sum_{i=1}^{k}\Delta t_i}{kT_k}=\frac{n\sum_{i=1}^{k}\Delta t_i}{k \sum_{i=1}^{k}\Delta t_i +(n-1)max(\Delta t_1,\Delta t_2,...,\Delta t_k)} E=kTkni=1kΔti=ki=1kΔti+(n1)max(Δt1,Δt2,...,Δtk)ni=1kΔti
这个结果,里面那一部分其实就是TP,所以,还可以写为
E = T P 1 k ∑ i = 1 k Δ t i E=TP\frac{1}{k} \sum_{i=1}^{k}\Delta t_i E=TPk1i=1kΔti
瓶颈问题

我们把流水线中这种时间最长的段称为流 水线的瓶颈段。如图, S 2 S_2 S2就是瓶颈段。

在这里插入图片描述

解决瓶颈段有两个方法:

  • 细分瓶颈段

  • 在这里插入图片描述

  • 重复设置瓶颈段

  • 在这里插入图片描述

重复设置瓶颈段后的时空图:
9条指令
在这里插入图片描述

重复设置瓶颈段的缺点是:控制逻辑比较复杂,所需的硬件增加了。

加速比

加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用
的时间之比。
使用流水线的时间是 T P TP TP
不用流水线的时间,就是每一条指令所需时间加起来。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1900_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值