复习总目录
第 5 章 流水和指令级高度并行的超级机
1. 重叠
历史考题:2015.04
题目描述:根据重叠方式,计算执行指令所需时间。
课后习题 5-1
假设指令的解释分取指、分析和执行 3 步,每步的时间相应为
t
t
t取指、
t
t
t分析、
t
t
t执行
(1)分别计算下列几种情况下,执行完 100 条指令所需时间的一般关系式:
① 顺序方式;
② 仅 “执行k” 与 “取指k+1” 重叠;
③ 仅 “执行k”、“分析k+1” 与 “取指k+2” 重叠;
(2)分别在 t t t取指 = t =t =t分析 = 2 =2 =2、 t t t执行 = 1 =1 =1 和 t t t取指 = = = t t t执行 = 5 =5 =5、 t t t分析 = 2 =2 =2 两种情况下,计算出上述各结果。
解:
(1)一般关系式
① 顺序执行
100
×
(
100\times (
100×(
t
t
t取指
+
+
+
t
t
t分析
+
+
+
t
t
t执行
)
)
)
顺序执行顾名思义按顺序处理完一个处理下一个
② 仅 “执行k” 与 “取指k+1” 重叠;
也就是上一个的执行和下一个取指可以同时进行,画一下图便于计算
取指k | 分析k | 执行k | ||||
取指k+1 | 分析k+1 | 执行k+1 | ||||
取指k+2 | 分析k+2 | 执行k+2 |
t
t
t取指
+
100
×
t
+100\times t
+100×t分析
+
99
×
m
a
x
{
+99\times \mathrm{max}\{
+99×max{
t
t
t取指
,
,
,
t
t
t执行
}
+
\}+
}+
t
t
t执行
第一个取指就是取指时间,后面 99 个取指会和之前的执行重叠取最大值,最后一个的执行就是执行时间,分析没有重叠就是 100 个分析时间。
③ 仅 “执行k”、“分析k+1” 与 “取指k+2” 重叠;
取指k | 分析k | 执行k | ||
取指k+1 | 分析k+1 | 执行k+1 | ||
取指k+2 | 分析k+2 | 执行k+2 |
t t t取指 + m a x { t +\mathrm{max}\{t +max{t分析 , , , t t t取指 } + 98 × m a x { t \}+98\times\mathrm{max}\{t }+98×max{t取指 , , , t t t分析 , , , t t t执行 } + m a x { t \}+\mathrm{max}\{t }+max{t执行 , , , t t t分析 } + t \}+t }+t执行
(2)有了公式代进去算就行了
t
t
t取指
=
t
=t
=t分析
=
2
=2
=2、
t
t
t执行
=
1
=1
=1
①
100
×
(
2
+
2
+
1
)
=
500
100 \times (2+2+1)=500
100×(2+2+1)=500
②
2
+
100
×
2
+
99
×
2
+
1
=
401
2+100 \times 2+99 \times 2 + 1=401
2+100×2+99×2+1=401
③
2
+
2
+
98
×
2
+
2
+
1
=
203
2+2+98 \times 2+2+1=203
2+2+98×2+2+1=203
t
t
t取指
=
=
=
t
t
t执行
=
5
=5
=5、
t
t
t分析
=
2
=2
=2
①
100
×
(
5
+
5
+
2
)
=
1200
100 \times (5+5+2)=1200
100×(5+5+2)=1200
②
5
+
100
×
2
+
99
×
5
+
5
=
705
5+100 \times 2+99 \times 5 + 5=705
5+100×2+99×5+5=705
③
5
+
5
+
98
×
5
+
5
+
5
=
510
5+5+98 \times 5+5+5=510
5+5+98×5+5+5=510
2. 流水线
历史考题:2021.10、2021.04、2020.04、2017.04
题目描述:画 时空图,计算流水线 效率 和 吞吐率,瓶颈消除 方法。
课后习题 5-3 时空图
有一个浮点乘流水线如图(a)所示,其乘积可直接返回输入端或暂存于相应缓冲寄存器中,画出实现 A × B × C × D \mathrm{A\times B\times C\times D} A×B×C×D 的时 — 空图以及输入端的变化,并求出流水线的吞吐率和效率;当流水线改为图(b)所示的形式实现同一计算时,求该流水线的效率及吞吐率。
解:
(a)吞吐率
T
p
=
3
13
Δ
t
T_p=\frac{3}{13\Delta t}
Tp=13Δt3,效率
η
=
3
×
5
3
×
13
=
5
13
\eta=\frac{3\times5}{3\times 13}=\frac{5}{13}
η=3×133×5=135
解释:
题目中给出的浮点乘流水线代表了要完成一次乘法,需要经过 3 个步骤,这三个步骤需要按顺序分别在不同的部件上执行,如图中红色标记的 AB。
实现
A
×
B
×
C
×
D
\mathrm{A\times B\times C\times D}
A×B×C×D,可以让
A
×
B
\mathrm{A\times B}
A×B 与
C
×
D
\mathrm{C\times D}
C×D 并行,最后将两项相乘。
画图的时候建议在分析完式子的并行性和处理步骤后,先画一个计算步骤,如图中三个标红的 AB,可以发现第二个步骤尾乘需要的时间最长,就在后面直接画下个并行的运算的第二个 步骤,即 CD 的尾乘,然后再添上 CD 剩余的步骤。
吞吐率
=
=
= 流水线输出的个数
/
/
/ 消耗时间
效率
=
=
= 图像中方块的面积
/
(
/(
/(消耗时间
×
\times
× 部件个数
)
)
)
(b)吞吐率 T p = 3 11 Δ t T_p=\frac{3}{11\Delta t} Tp=11Δt3,效率 η = 3 × 5 5 × 11 = 3 11 \eta=\frac{3\times5}{5\times 11}=\frac{3}{11} η=5×113×5=113
(b)图代表有三个部件可以并行处理尾乘
课后习题 5-5 瓶颈消除方法
为提高流水线效率可采用哪两种主要途径来克服速度瓶颈?现有 3 段流水线,各段经过时间依次为
Δ
t
\Delta t
Δt、
3
Δ
t
3\Delta t
3Δt、
Δ
t
\Delta t
Δt。
(1)分别计算在连续输入 3 条指令时和 30 条指令时的吞吐率和效率。
(2)按两种途径之一进行改进,画出流水线结构示意图,同时计算连续输入 3 条指令和 30 条指令时的吞吐率和效率。
(3)通过对 (1)、(2) 两小题的计算比较可得出什么结论?
解:
(1)此题中的 3 条和 30 条指令都是可以并行的,类似 5-3 中 AB 和 CD 的并行。
答案中按照公式计算: n n n 为指令条数, m m m 为流水线段数, Δ t i \Delta t_i Δti 为每一段对应的时间, Δ t j = 3 Δ t \Delta t_j=3\Delta t Δtj=3Δt
T p = n ∑ i = 1 m Δ t i + ( n − 1 ) Δ t j T_p=\frac{n}{\sum\limits^m_{i=1}\Delta t_i+(n-1)\Delta t_j} Tp=i=1∑mΔti+(n−1)Δtjn η = n ∑ i = 1 m Δ t i m [ ∑ i = 1 m Δ t i + ( n − 1 ) Δ t j ] \eta=\frac{n\sum\limits^m_{i=1}\Delta t_i}{m\left[\sum\limits^m_{i=1}\Delta t_i+(n-1)\Delta t_j\right]} η=m[i=1∑mΔti+(n−1)Δtj]ni=1∑mΔti
当 n = 3 n=3 n=3 时, T p = 3 ( ( 1 + 3 + 1 ) + 2 ∗ 3 ) Δ t = 3 11 Δ t T_p=\frac{3}{((1+3+1)+2*3)\Delta t}=\frac{3}{11\Delta t} Tp=((1+3+1)+2∗3)Δt3=11Δt3, η = 3 ∗ 5 3 ∗ 11 = 5 11 \eta=\frac{3*5}{3*11}=\frac{5}{11} η=3∗113∗5=115
当 n = 30 n=30 n=30 时, T p = 30 ( ( 1 + 3 + 1 ) + 29 ∗ 3 ) Δ t = 15 46 Δ t T_p=\frac{30}{((1+3+1)+29*3)\Delta t}=\frac{15}{46\Delta t} Tp=((1+3+1)+29∗3)Δt30=46Δt15, η = 30 ∗ 5 3 ∗ 92 = 25 46 \eta=\frac{30*5}{3*92}=\frac{25}{46} η=3∗9230∗5=4625
公式记忆:这里的指令全是并行的,按照 5-3 中的画图技巧,把最长的时间 Δ t j \Delta t_j Δtj 衔接在一起,可以发现所需要的时间就是 n × Δ t j n\times \Delta t_j n×Δtj 再加上一次其他时间的和,相当于把公式中求和部分里面的 Δ t j \Delta t_j Δtj 和后面一项合并。忘了公式就画一画时空图,计算时间的方式和重叠的题是一样的。
(2)观察时空图就可以发现瓶颈在于时间较长的段,解决瓶颈有两种方式:
a)瓶颈子过程再细分:把第二段再分为 3 段,每段
Δ
t
\Delta t
Δt 且各自有部件来处理,这样就能让每个步骤紧凑了。
b)瓶颈子过程并联:添加几个部件实现并行处理第二段,这样每条指令就不需要等上一条指令处理完把部件空出来再处理了。
流水线结构如下:
两种方法的吞吐率和效率是一样的:
当 n = 3 n=3 n=3 时, T p = 3 ∑ i = 1 5 Δ t i + ( 3 − 1 ) Δ t i = 3 7 Δ t T_{p}=\frac{3}{\sum\limits_{i=1}^{5} \Delta t_{i}+(3-1) \Delta t_{i}}=\frac{3}{7 \Delta t} Tp=i=1∑5Δti+(3−1)Δti3=7Δt3, η = 3 ⋅ ∑ i = 1 5 Δ t i 5 × 7 Δ t = 3 7 \eta=\frac{3 \cdot \sum\limits_{i=1}^{5} \Delta t_{i}}{5 \times 7 \Delta t}=\frac{3}{7} η=5×7Δt3⋅i=1∑5Δti=73
当 n = 30 n=30 n=30 时, T p = 30 ∑ i = 1 5 Δ t i + ( 30 − 1 ) Δ t i = 15 17 Δ t T_{p}=\frac{30}{\sum\limits_{i=1}^{5} \Delta t_{i}+(30-1) \Delta t_{i}}=\frac{15}{17 \Delta t} Tp=i=1∑5Δti+(30−1)Δti30=17Δt15, η = 30 ⋅ ∑ i = 1 5 Δ t i 5 × 34 Δ t = 15 17 \eta=\frac{30 \cdot \sum\limits_{i=1}^{5} \Delta t_{i}}{5 \times 34 \Delta t}=\frac{15}{17} η=5×34Δt30⋅i=1∑5Δti=1715
(3)通过对不同的指令条数比较可以看出,指令越多流水线的实际吞吐率和效率才会提高。通过对前两问的结果比较,可以发现两种消除瓶颈的途径都是在指令越多的时候实际吞吐率和效率才会显著提高,如果指令太少虽然可以提高实际吞吐率,但效率反而会降低(因为虽然时间降低了,但是段数也增加了)。
3. 流水预约表
历史考题:2020.10、2019.04、2018.04、2016.10
题目描述:根据流水预约表,求延迟禁止表、冲突向量、状态转移图、平均延迟、吞吐率、调度方案。
课后习题 5-11
在一个 5 段流水线处理机上需经 9 拍才能完成一个任务,其预约表如下表所示。分别写出延迟禁止表 F F F、冲突向量 C C C;画出流水线状态转移图;求出最小平均延迟及流水线的最大吞吐率及其调度方案。按此流水调度方案输入 6 个任务,求实际吞吐率。
t 0 t_0 t0 | t 1 t_1 t1 | t 2 t_2 t2 | t 3 t_3 t3 | t 4 t_4 t4 | t 5 t_5 t5 | t 6 t_6 t6 | t 7 t_7 t7 | t 8 t_8 t8 | |
---|---|---|---|---|---|---|---|---|---|
S 1 S_1 S1 | √ \surd √ | √ \surd √ | |||||||
S 2 S_2 S2 | √ \surd √ | √ \surd √ | |||||||
S 3 S_3 S3 | √ \surd √ | √ \surd √ | √ \surd √ | ||||||
S 4 S_4 S4 | √ \surd √ | √ \surd √ | |||||||
S 5 S_5 S5 | √ \surd √ | √ \surd √ |
解:
(1)延迟禁止表:
F
=
{
1
,
3
,
4
,
8
}
F=\{1,3,4,8\}
F={1,3,4,8},冲突向量:
C
=
(
10001101
)
C=(10001101)
C=(10001101)
解释:
延迟禁止表是预约表中每一行打钩地方的时间相减,然后去重排序:
S
1
:
8
−
0
=
8
S_1:8-0=8
S1:8−0=8
S
2
:
2
−
1
=
1
S_2:2-1=1
S2:2−1=1
S
3
:
7
−
6
=
1
,
7
−
3
=
4
,
6
−
3
=
3
S_3:7-6=1,\ 7-3=4,\ 6-3=3
S3:7−6=1, 7−3=4, 6−3=3
S
4
:
4
−
3
=
1
S_4:4-3=1
S4:4−3=1
S
5
:
6
−
5
=
1
S_5:6-5=1
S5:6−5=1
冲突向量是延迟禁止表中的位置 1,其余位置 0;位数从 1 开始,从右往左数。
记忆方法:延迟禁止表的计算方法依靠打钩的地方相减,这边得到的差值可能是
1
∼
8
1\sim 8
1∼8,因此冲突向量一共是 8 位,而且位数是从 1 开始数。一定要记住对应位是 1,其余是 0,别搞反了。
(2)流水线状态转移图
说明:
1)初始进来是冲突向量 10001101;
2)从右向左,冲突向量的第 2 位是 0,将冲突向量右移 2 位得到 00100011;
3)将这个新的向量和冲突向量做按位或,
10001101
&
00100011
=
10101111
10001101\ \&\ 00100011=10101111
10001101 & 00100011=10101111;
4)得到了一个新的向量,就写在下面连上箭头,标注右移位数 2;
5)冲突向量中一共有 4 位是 0,分别按照上述流程计算:5、7 得到自己本身,6 得到新的向量 1000111;
6)新的向量中也有 0,也要按位右移并和冲突向量做按位或,注意 是和原始的冲突向量而不是和新的向量自己。以左下角的 10101111 为例,右移 5 位,
10001101
&
00000101
=
10001101
10001101\ \&\ 00000101=10001101
10001101 & 00000101=10001101,连到冲突向量标记 5。
(3)周期性调度方案
调度方案 | 平均延迟 / 拍 |
---|---|
(2,5) | 3.5 |
(2,7) | 4.5 |
(5) | 5 |
(6,5) | 5.5 |
(6) | 6 |
(6,7) | 6.5 |
(7) | 7 |
状态转移图中以初始冲突向量为起点,按照箭头形成一个循环回到起点就是一个调度方案,平均延迟
=
=
= 方案中箭头的数值和
/
/
/ 箭头个数。
最小平均延迟:3.5 拍,最大吞吐率:
T
p
m
a
x
=
1
/
3.5
(
任
务
/
拍
)
T_{p\mathrm{max}}=1/3.5(任务/拍)
Tpmax=1/3.5(任务/拍)
(4)按(2,5)调度方案输入 6 个任务的时空图如下,实际吞吐率:
T
p
=
6
/
25
(
任
务
/
拍
)
T_p=6/25(任务/拍)
Tp=6/25(任务/拍)
完成一项任务的和题目给出的预约表相对应,任务的输入间隔和调度方案对应;因此不画时空图也可以确定任务所花的时间 2 + 5 + 2 + 5 + 2 + 9 = 25 2+5+2+5+2+9=25 2+5+2+5+2+9=25。
4. CRAY-1 向量流水处理
历史考题:2019.04、2015.10
题目描述:串行、并行、链接工作拍数。
课后习题 5-12
求向量
D
=
A
×
(
B
+
C
)
D=A\times(B+C)
D=A×(B+C),各向量元素个数均为
N
N
N,参照 CRAY - 1 方式分解为 3 条向量指令:
①
V
3
←
\mathrm{V_3}\gets
V3← 存储器 { 访存取
A
A
A 送入
V
3
\mathrm{V_3}
V3 寄存器组}
②
V
2
←
V
0
+
V
1
{
B
+
C
→
K
}
\mathrm{V_2\gets V_0+V_1}\ \{B+C\to K\}
V2←V0+V1 {B+C→K}
③
V
4
←
V
2
×
V
3
{
K
×
A
→
D
}
\mathrm{V_4\gets V_2\times V_3}\ \{K\times A\to D\}
V4←V2×V3 {K×A→D}
当采用下列 3 种方式工作时,各需多少拍才能得到全部结果?
(1)①、②和③串行执行;
(2)①和②并行执行后,再执行③;
(3)采用链接技术。
解:
(1)①②③ 串行:
(
1
+
6
+
1
+
N
−
1
)
+
(
1
+
6
+
1
+
N
−
1
)
+
(
1
+
7
+
1
+
N
−
1
)
=
7
+
N
+
7
+
N
+
8
+
N
=
22
+
3
N
(
拍
)
(1+6+1+N-1)+(1+6+1+N-1)+(1+7+1+N-1)=7+N+7+N+8+N=22+3N(拍)
(1+6+1+N−1)+(1+6+1+N−1)+(1+7+1+N−1)=7+N+7+N+8+N=22+3N(拍)
(2)①② 并行与 ③ 串行:
{
1
+
6
+
1
+
N
−
1
1
+
6
+
1
+
N
−
1
}
+
1
+
7
+
1
+
N
−
1
=
15
+
2
N
(
拍
)
\left\{\begin{array}{l} 1+6+1+N-1 \\ 1+6+1+N-1 \end{array}\right\}+1+7+1+N-1=15+2 N(拍)
{1+6+1+N−11+6+1+N−1}+1+7+1+N−1=15+2N(拍)
(3)①② 并行与 ③ 链接:
{
1
+
6
+
1
1
+
6
+
1
}
+
1
+
7
+
1
+
N
−
1
=
16
+
N
(
拍
)
\left\{\begin{array}{l} 1+6+1 \\ 1+6+1 \end{array}\right\}+1+7+1+N-1=16+N(拍)
{1+6+11+6+1}+1+7+1+N−1=16+N(拍)
计算方法:
下图为 P181 向量运算
D
=
A
×
(
B
+
C
)
D=A\times(B+C)
D=A×(B+C) 的链接过程图,做题需要记一下 CRAY - 1 各种操作的时间:整数加 3 拍、逻辑运算 2 拍、移位 4 拍、浮点加 6 拍、浮点乘 7 拍、浮点迭代求倒数 14 拍、访存 6 拍、存取数据 1 拍。
先按照本题 ①②③ 说明 3 个计算步骤的基础时间:
① 对应图中红色标注,一次计算需要取数据、访存、存数据 3 个步骤,共
1
+
6
+
1
1+6+1
1+6+1 拍;
② 对应图中蓝色标注,一次计算需要取数据、浮点加、存数据 3 个步骤,共
1
+
6
+
1
1+6+1
1+6+1 拍,这里 1 2 并行;
③ 对应图中紫色标注,一次计算需要取数据、浮点乘、存数据 3 个步骤,共
1
+
7
+
1
1+7+1
1+7+1 拍,这里 1 2 并行;
解释答案中的
N
−
1
N-1
N−1:
上面的拍数是计算的一次运算需要的时间,也就是对向量中一个元素的运算,向量中有
N
N
N 个元素,就需要额外
N
−
1
N-1
N−1 拍。这里个人理解是内部的计算是不存在流水线瓶颈的,可以高度并行,想象一下没有瓶颈的时空图,当得到第一个输出后,只需要增加一个
Δ
t
\Delta t
Δt 就能得到第二个输出。
(1)串行:对整个向量 ① 操作结束再进行 ②,因此每个步骤都要加上
N
−
1
N-1
N−1。
(2)①② 并行容易理解。
(3)链接
相关概念:
CRAY-1 的向量流水:向量寄存器组
V
i
V_i
Vi 在同一时钟周期内可接收一个结果分量并为下次操作再提供一个源分量。不出现
V
i
V_i
Vi 冲突(两条指令同时用到一个
V
i
V_i
Vi)和功能部件冲突(两条指令用了同一种运算),就能并行工作。
CRAY-1 的向量处理的特点是不出现功能部件使用冲突和源向量寄存器使用冲突,通过链接机构可使有数据相关的向量指令仍能大部分时间并行执行。以此题为例,①② 没有任何冲突可以并行,本来 ③ 和 ①② 有
V
i
V_i
Vi 冲突,但是把 ①② 的结果分量直接链接进 ③ 用的功能部件,③ 就能和 ①② 在大部分时间内并行。
链接条件(理解条件见习题 5-13):
(1)中间不能有时间差,前一个的输出立马就作为下一个的输入;
(2)没有功能部件使用冲突,也就是前后指令的运算操作不能相同。
个人理解:
把链接看作把 2 条流水线合并为 1 条,看作原本是要把整个向量的 ①② 步骤算完再算 ③,但是链接以后每个元素算完 ①② 可以直接算 ③,这样就实现了并行,节省了一个
N
−
1
N-1
N−1 的时间。
课后习题 5-13
设向量长度均为 64,在 CRAY - 1 机上所用浮点功能部件的执行时间分别为:相加 6 拍,相乘 7 拍,求倒数近似值 14 拍;从存储器读数 6 拍,打入寄存器及启动功能部件各 1 拍。问下列各指令组内的哪些指令可以链接?哪些指令不可链接?不能链接的原因是什么?分别计算出各指令组全部完成所需的拍数。
(1)
V
0
←
\mathrm{V_0}\gets
V0← 存储器
V
1
←
V
2
+
V
3
\mathrm{V_1\gets V_2+V_3}
V1←V2+V3
V
4
←
V
5
×
V
6
\mathrm{V_4\gets V_5\times V_6}
V4←V5×V6
(2)
V
2
←
V
0
×
V
1
\mathrm{V_2\gets V_0\times V_1}
V2←V0×V1
V
3
←
\mathrm{V_3}\gets
V3← 存储器
V
4
←
V
0
+
V
3
\mathrm{V_4\gets V_0+V_3}
V4←V0+V3
(3)
V
0
←
\mathrm{V_0}\gets
V0← 存储器
V
2
←
V
0
×
V
1
\mathrm{V_2\gets V_0\times V_1}
V2←V0×V1
V
3
←
V
2
+
V
0
\mathrm{V_3\gets V_2+V_0}
V3←V2+V0
V
5
←
V
3
+
V
4
\mathrm{V_5\gets V_3+V_4}
V5←V3+V4
(4)
V
0
←
\mathrm{V_0}\gets
V0← 存储器
V
1
←
1
/
V
0
\mathrm{V_1\gets 1/V_0}
V1←1/V0
V
3
←
V
1
×
V
2
\mathrm{V_3\gets V_1\times V_2}
V3←V1×V2
V
5
←
V
3
+
V
4
\mathrm{V_5\gets V_3+V_4}
V5←V3+V4
解:
(1)
V
0
←
\mathrm{V_0}\gets
V0← 存储器
V
1
←
V
2
+
V
3
\mathrm{V_1\gets V_2+V_3}
V1←V2+V3
V
4
←
V
5
×
V
6
\mathrm{V_4\gets V_5\times V_6}
V4←V5×V6
没有冲突,3 条指令可以并行
{
1
+
6
+
1
1
+
6
+
1
1
+
7
+
1
}
+
N
−
1
=
9
+
63
=
72
(
拍
)
\left\{\begin{array}{l} 1+6+1 \\ 1+6+1 \\ 1+7+1 \end{array}\right\}+N-1=9+63=72(拍)
⎩⎨⎧1+6+11+6+11+7+1⎭⎬⎫+N−1=9+63=72(拍)
(2)
V
2
←
V
0
×
V
1
\mathrm{V_2\gets V_0\times V_1}
V2←V0×V1
V
3
←
\mathrm{V_3}\gets
V3← 存储器
V
4
←
V
0
+
V
3
\mathrm{V_4\gets V_0+V_3}
V4←V0+V3
①②没有冲突并行,③有冲突但可以链接
{
1
+
7
+
1
1
+
6
+
1
}
+
1
+
6
+
1
+
N
−
1
=
9
+
8
+
63
=
80
(
拍
)
\left\{\begin{array}{l} 1+7+1 \\ 1+6+1 \end{array}\right\}+1+6+1+N-1=9+8+63=80(拍)
{1+7+11+6+1}+1+6+1+N−1=9+8+63=80(拍)
(3)
V
0
←
\mathrm{V_0}\gets
V0← 存储器
V
2
←
V
0
×
V
1
\mathrm{V_2\gets V_0\times V_1}
V2←V0×V1
V
3
←
V
2
+
V
0
\mathrm{V_3\gets V_2+V_0}
V3←V2+V0
V
5
←
V
3
+
V
4
\mathrm{V_5\gets V_3+V_4}
V5←V3+V4
①②可以链接,③因为要等②算完,①的输出时间就过了(存在时间差),所以没法链接只能串行;④和③的运算都是加法只能串行(功能部件使用冲突)。
1
+
6
+
1
+
1
+
7
+
1
+
N
−
1
+
(
1
+
6
+
1
+
N
−
1
)
∗
2
=
222
(
拍
)
1+6+1+1+7+1+N-1+(1+6+1+N-1)*2=222(拍)
1+6+1+1+7+1+N−1+(1+6+1+N−1)∗2=222(拍)
(4)
V
0
←
\mathrm{V_0}\gets
V0← 存储器
V
1
←
1
/
V
0
\mathrm{V_1\gets 1/V_0}
V1←1/V0
V
3
←
V
1
×
V
2
\mathrm{V_3\gets V_1\times V_2}
V3←V1×V2
V
5
←
V
3
+
V
4
\mathrm{V_5\gets V_3+V_4}
V5←V3+V4
①②③④都链接
1
+
6
+
1
+
1
+
14
+
1
+
1
+
7
+
1
+
1
+
6
+
1
+
N
−
1
=
104
(
拍
)
1+6+1+1+14+1+1+7+1+1+6+1+N-1=104(拍)
1+6+1+1+14+1+1+7+1+1+6+1+N−1=104(拍)