fbba21eb

Основы планирования загрузки конвейера и разворачивание циклов



Основы планирования загрузки конвейера и разворачивание циклов

Для поддержания максимальной загрузки конвейера должен использоваться параллелизм уровня команд, основанный на выявлении последовательностей несвязанных команд, которые могут выполняться в конвейере с совмещением. Чтобы избежать приостановки конвейера зависимая команда должна быть отделена от исходной команды на расстояние в тактах, равное задержке конвейера для этой исходной команды. Способность компилятора выполнять подобное планирование зависит как от степени параллелизма уровня команд, доступного в программе, так и от задержки функциональных устройств в конвейере. В рамках этой главы мы будем предполагать задержки, показанные на Рисунок 6.2, если только явно не установлены другие задержки. Мы предполагаем, что условные переходы имеют задержку в один такт, так что команда следующая за командой перехода не может быть определена в течение одного такта после команды условного перехода. Мы предполагаем, что функциональные устройства полностью конвейеризованы или дублированы (столько раз, какова глубина конвейера), так что операция любого типа может выдаваться для выполнения в каждом такте и структурные конфликты отсутствуют.



Команда, вырабатывающая результат Команда, использующая
результат
Задержка в тактах
Операция АЛУ с ПТ Другая операция АЛУ с ПТ 3
Операция АЛУ с ПТ Запись двойного слова 2
Загрузка двойного слова Другая операция АЛУ с ПТ 1
Загрузка двойного слова Запись двойного слова 0



Содержание раздела