例6.5假设一台向量处理机中功能部件的启动开销为:取数和存数部件为12个时钟周期、乘法部件为7个时钟周期、加法部件为6个时钟周期。请计算出例6.4中每个编队的开始时间、获得第一个结果元素的时间和获得最后一个结果元素的时间。
解:如果向量长度为n,则每个编队的开始时间、获得第一个结果元素和最后一个结果元素时间如表6.4所示。
表6.4 编队1~4的开始时间、第一个结果和最后一个结果时间
编队
|
开始时间
|
第一个结果时间
|
最后一个结果时间
|
1.LV
|
0
|
12
|
11+N
|
2.MULTSV LV
|
12+n
|
12+n+12
|
24+2n
|
3.ADDV
|
25+2n
|
25+2n+6
|
31+3n
|
4.SV
|
32+3n
|
32+3n+12
|
42+4n
|
如果向量长度n为64,则得到一个结果元素的平均时间为:4+(42/64)=4.65个时钟周期。
*如果考虑向量长度大于向量寄存器长度时,则需要分段开采。分段开采的开销由执行标量代码的开销和每个编队的向量启动开销组成。所以向量长度为n的一组向量操作的整个执行时间为:
其中MVL是向量寄存器的长度。、和的值与编译系统和处理器有关。寄存器分配和指令的调度既会影响编队的组合也会影响每个编队的启动开销。
为了简单起见,我们把看作是一个常数,Cray
1机器的约等于15。