向量A和B各有6个元素,计算向量点积 。 (1)若在顺序方式下,一次“加”需4,一次“乘”需3,求执行完A•B所需的时间; (2)在如题29图所示的静态双功能流水线上计算A•B,其中,l→2→3→5为加法流水线,1→4→5为乘法流水线,输出可直接返回输入,延迟时间和功能切换的时间忽略不计。设计合理的算法,使完成A•B的时间最少。画出流水时空图,并标出全部算完的时间。
(1)计算向量点积,需要做6次乘法,再把六个成绩累加起来,做5次加法。因此,按顺序方式完成,需要的时间为6*3 + 5*4 = 38(2)因为是静态流水线,功能切换需要花时间,因此切换次数越少越好。故而先做乘法,再做加法效果较好,做累加时,尽量避免数据相关,这样后面的指令不必等待前面的结果。算法如下:(1) a1b1 = a1 * b1(2) a2b2 = a2 * b2(3) a3b3 = a3 * b3(4) a4b4 = a4 * b4(5) a5b5 = a5 * b5(6) a6b6 = a6 * b6(7) tmp1 = a1b1 + a2b2(8) tmp2 = a3b3 + a4b4(9) tmp3 = a5b5 + a6b6(10) tmp4 = tmp1 + tmp2(11) sum = tmp3 + tmp4