我们测量出前置和函数psum1(图5-1)的CPE为9,00,在测试机器上,要执行的基本操作 ——浮点加法的延迟只是3个时钟周期。试着理解为什么我们的函数执行效果这么差。
下面是这个函数内循环的汇编代码:
Ioner Ioop of psum1
a in %rdi, i in %rax, cat in %rdx
.L5
vmovss -4(%rsi ,%rax,4), %xm0 vaddss (%rdi ,%rax,4), %xm0, %xmm0
vmovss %xmm0, (%rsi ,%rax,4)
addq $1,%rax
cmpq %rdx,%rax
jne .L5
参考对combine3(图5-14)和write_read(图5-36)的分析,画出这个循环生成的数据相关图,再画出计算进行时由此形成的关键路径。解释为什么CPE如此之高。