如何确定课程的 CPE?例如,我有一个循环的汇编代码:
# inner4: data_t = float
# udata in %rbx, vdata in %rax, limit in %rcx,
# i in %rdx, sum in %xmm1
1 .L87: # loop:
2 movss (%rbx,%rdx,4), %xmm0 # Get udata[i]
3 mulss (%rax,%rdx,4), %xmm0 # Multiply by vdata[i]
4 addss %xmm0, %xmm1 # Add to sum
5 addq $1, %rdx # Increment i
6 cmpq %rcx, %rdx # Compare i:limit
7 jl .L87 # If <, goto loop
我必须使用数据类型浮点数找到由关键路径确定的 CPE 的下限。我相信关键路径是指可能的最慢路径,因此是程序必须执行 mulss 指令的路径,因为它占用了最长的时钟周期数。
但是,似乎没有任何明确的方法来确定 CPE。如果一条指令需要两个时钟周期,而另一条需要一个时钟周期,那么后者可以在前者的第一个时钟周期之后开始吗?任何帮助,将不胜感激。谢谢