Files
Kirill 3a96c27c48 Arch: new
Все теоритические билеты по Архитектуре ЭВМ в основном были написаны,
кроме: 8.4; 13.4; 14.4; 15.4. Задачи будут позже.
2025-01-14 19:40:01 +03:00

2.4 KiB
Raw Blame History

Статическая оптимизация с разворачиванием циклов. Требования к разворачиванию циклов.

Стандартный способ увеличения ILP состоит в использовании параллелизма между итерациями цикла, т.е параллелизма уровня цикла (Loop Level Parallelism, LLP) Достигается путем разворачивания цикла, либо статически компилятором, либо динамически аппаратурой, чтобы увеличить размер имеющегося базового блока; Больший размер базового блока позволяет удалить больше тактов простоя, тк больше инструкций могут переупорядочиваться.

  • Статическая оптимизация с разворачиванием цикла.

Реализуется компилятором, но приводит к изменению кода на языке высокого уровня. Пример: был цикл от 1 до 100 с шагом 1. Теперь делаем цикл от 1 до 100 с шагом 4 и на каждой итерации выполняем последовательно 4 тела цикла. Увеличивается размер базового блока, что позволяет удалить больше тактов простоя, тк инструкции могут переупорядочиваться.

  • Разворачивание циклов.

Больший размер базового блока - больше инструкций для перепланирования. Исполняется меньше инструкций переходов и инструкций для поддержки циклов. Разворачивание циклов еще эффективнее при реализации векторных команд. Необходимые требования для разворачивания цикла:

  • Независимость итераций цикла.
  • Большое количество регистров для предотвращения конфликтов по именам регистров (WAR, WAW).