吞吐率

	吞吐率:单位时间内流水线所完成指令或输出结果的数量

时间单位换算:
1秒(s)=1000毫秒(ms)
=1000000微秒微秒(μs)
=1000000000纳秒(ns)

时钟周期与时钟频率: 时 钟 周 期 = 1 C P U 时 钟 频 率 ( 主 频 ) 时钟周期=\frac{1}{CPU时钟频率(主频)} =CPU()1

1.最大吞吐率

最大吞吐率:是指流水线在达到稳定状态后所得到的吞吐率。

CPU时钟周期为△t,最大吞吐率为Tpmax:

T p m a x = 1 △ t Tpmax=\frac{1}{△t} Tpmax=t1

2.实际吞吐率

实际吞吐率:指m段流水线完成n个任务所达到的吞吐率。

CPU时钟周期为△t,m阶指令流水线,连续处理n条指令的吞吐率为Tp:

T p = n ( m + ( n − 1 ) ) ∗ △ t Tp=\frac{n}{(m+(n-1))*△t} Tp=(m+(n1))tn
  1. 执行n条指令需要 m + ( n − 1 ) m+(n-1) m+(n1)个时钟周期
  2. 一个时钟周期是 △ t △t t
  3. 执行n条指令需要的时间是 ( m + ( n − 1 ) ) ∗ △ t (m+(n-1))*△t (m+(n1))t
  4. 得出实际吞吐率Tp为: n ( m + ( n − 1 ) ) ∗ △ t \frac{n}{(m+(n-1))*△t} (m+(n1))tn

例题:

某CPU的时钟周期100ns,采用4级指令流水线,每个流水段的执行需要1个时钟周期,假设CPU执行了100条指令,在其执行过程中,没有发生任何流水线阻塞,此时流水线的实际吞吐率为?

分析:

时钟周期 △ t △t t为100ns需要单位转换,换成秒(s),因为最后得出的结果是每秒,所以 △ t = 1 ∗ 1 0 − 7 s △t=1*10^{-7}s t=1107s

T p = n ( m + ( n − 1 ) ) ∗ △ t = 100 ( 4 + ( 100 − 1 ) ) ∗ ( 1 ∗ 1 0 − 7 ) = 1 103 ∗ 1 0 9 ≈ 0.97 ∗ 1 0 7 条 指 令 / 秒 Tp=\frac{n}{(m+(n-1))*△t}=\frac{100}{(4+(100-1))*(1*10^{-7})}=\frac{1}{103}*10^9≈0.97*10^7条指令/秒 Tp=(m+(n1))tn=(4+(1001))(1107)100=10311090.97107/
提示:

有的问题给的是CPU时钟频率是多少GHz(例:CPU主频为1.03GHz),
如果这样的话只需要根据文章开头给出的公式变换成时钟周期代入计算即可即可。

C P U 时 钟 频 率 ( 主 频 ) = 1 时 钟 周 期 CPU时钟频率(主频)=\frac{1}{时钟周期} CPU()=1

加速比

加速比:m段的流水线的速度与功能的非流水线的速度之比

设每个流水线的执行需要 △ t △t t
完成n条指令在m段流水线上共需 T T T
T = m ∗ △ t + ( n − 1 ) ∗ △ t T=m*△t+(n-1)*△t T=mt+(n1)t
完成n条指令在等效的非流水线上共需 T ′ T' T
T ′ = n ∗ m ∗ △ t T'=n*m*△t T=nmt
则加速比Sp:

S p = T T ′ = n ∗ m ∗ △ t m ∗ △ t + ( n − 1 ) ∗ △ t = n ∗ m m + n − 1 Sp=\frac{T}{T'}=\frac{n*m*△t}{m*△t+(n-1)*△t}=\frac{n*m}{m+n-1} Sp=TT=mt+(n1)tnmt=m+n1nm

效率

效率:流水线中各功能段的利用率
效 率 = 流 水 线 各 段 处 于 工 作 时 间 的 时 空 区 流 水 线 中 各 段 总 的 时 空 区 = n ∗ m ∗ △ t m ( m + n − 1 ) △ t 效率=\frac{流水线各段处于工作时间的时空区}{流水线中各段总的时空区}=\frac{n*m*△t}{m(m+n-1)△t} =线线=m(m+n1)tnmt
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐