Пример приведен в разделе 3.8 Использование ILP с использованием динамического планирования, множественных проблем и предположений книги Архитектура компьютера — количественный подход.
Учитывая динамическое планирование, процессор с двумя задачами и код сборки, указанный ниже (он по существу увеличивает каждый элемент массива)
Loop: LD F2,0(R1)
DADDIU R2,R2,#1
SD R2,0(R1)
DADDIU R1,R1,#8
BNE R2,R3,LOOP
затем книга показывает время выпуска, исполнения и результат записи на рисунке 3.19:
Мой вопрос: почему LD R2,0(R1)
итерации 2 выдается в четвертом цикле, а не в том же цикле с BNE
? Я могу понять, почему LD
следует выполнить позже, но я понятия не имею, почему выпуск также должен быть отложен.
Дополнительный вопрос: как это реализовано (обнаружить инструкцию BNE, а затем отложить следующую инструкцию), учитывая, что две инструкции могут выполняться в одном и том же цикле? Может быть, процессор находит входящую инструкцию BNE
в первом полупериоде, а затем решает не выдавать следующую инструкцию во втором полупериоде? Это только мое предположение. Никакой соответствующей информации я не нашел в книге.