Программирование на JAVA

В качестве примера рассмотрим последовательность команд, приведенную на рис. 9.7, а. Предположим, что команды Compare и Branch = 0 выполняются так, как показано на рис. 9.4. Решение о переходе принимается не на шаге D2 а на шаге Е2, поскольку для него нужны результаты обработки команды Compare. Время, необходимое команде перехода, можно сократить, поменяв местами ко­манды Add и Compare (рис. 9.7, 6). В результате во время декодирования коман­ды Branch уже будут доступны результаты выполнения команды сравнения, что позволит сразу принять решение о переходе без предсказаний. Важный момент заключается в том, что команды сложения и сравнения можно поменять местами только в том случае, если команда сложения не воздействует на флаги условий.

Add                                R1,R2

Compare                         R3,R4

Branch = 0

a

Compare              R3,R4

Add                                R1,R2

Branch = 0

б

Рис. 9.7. Изменение порядка следования команд: фрагмент программы (а);

команды после переупорядочения (б)

Проанализировав пример, можно сделать два важных вывода относительно обработки флагов условий


<< назад вперед >>