处理pipline中的数据依赖性

时间:2017-04-14 06:16:13

标签: optimization pipelining y86

mov $10, %eax
add $2, %eax
mov $4, %ebx
mov $5, %ecx
add $1, %ebx
add $1, %ecx
add %ecx, %eax
add %ebx, %eax

如果你有上面的程序集,一般的5阶段管道看起来如下所示,但由于存在数据依赖性,第一条指令不会将结果存储到第5阶段,因此第二条指令可以& #39;开始取结果。您如何通过插入NOP指令等待周期结束?

Instruction Cycle 1  2  3   4   5   6   7
mov $10, %eax     IF ID EX  MEM WB      
add $2, %eax         IF ID  EX  MEM WB  
mov $4, %ebx            IF  ID  EX  MEM WB

编辑不确定这是否正确,但这是我提出的:

                1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20
mov $10, %eax   F   D   E   M   W
NOP                 F   D   E   M   W
NOP                     F   D   E   M   W
NOP                         F   D   E   M   W
add $2, %eax                    F   D   E   M   W
mov $4, %ebx                        F   D   E   M   W
mov $5, %ecx                            F   D   E   M   W
NOP                                         F   D   E   M   W
NOP                                             F   D   E   M   W
add $1, %ebx                                        F   D   E   M   W
add $1, %ecx                                            F   D   E   M   W
NOP                                                         F   D   E   M   W
NOP                                                             F   D   E   M   W
NOP                                                                 F   D   E   M   W
add %ecx, %eax                                                          F   D   E   M   W
add %ebx, %eax                                                              F   D   E   M   W

0 个答案:

没有答案