Обработка зависимости данных в трубопроводе

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, и, следовательно, вторая инструкция не может начать выборку Результаты. Как бы вы ожидали окончания цикла, вставив инструкции 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 ответов

Другие вопросы по тегам