Arch: new
Все теоритические билеты по Архитектуре ЭВМ в основном были написаны, кроме: 8.4; 13.4; 14.4; 15.4. Задачи будут позже.
This commit is contained in:
20
2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/2.md
Normal file
20
2 курс/1 семестр/Архитектура ЭВМ/Лекции/10 билет/2.md
Normal file
@ -0,0 +1,20 @@
|
||||
#### Статическая оптимизация с разворачиванием циклов. Требования к разворачиванию циклов.
|
||||
|
||||
**Стандартный способ увеличения ILP** состоит в использовании параллелизма между итерациями цикла, т.е параллелизма уровня цикла (Loop Level Parallelism, LLP)
|
||||
Достигается путем разворачивания цикла, либо статически компилятором, либо динамически аппаратурой, чтобы увеличить размер имеющегося базового блока;
|
||||
Больший размер базового блока позволяет удалить больше тактов простоя, тк больше инструкций могут переупорядочиваться.
|
||||
|
||||
- **Статическая оптимизация с разворачиванием цикла.**
|
||||
|
||||
Реализуется компилятором, но приводит к изменению кода на языке высокого уровня.
|
||||
Пример: был цикл от 1 до 100 с шагом 1. Теперь делаем цикл от 1 до 100 с шагом 4 и на каждой итерации выполняем последовательно 4 тела цикла. Увеличивается размер базового блока, что позволяет удалить больше тактов простоя, тк инструкции могут переупорядочиваться.
|
||||
|
||||
- **Разворачивание циклов.**
|
||||
|
||||
Больший размер базового блока - больше инструкций для перепланирования.
|
||||
Исполняется меньше инструкций переходов и инструкций для поддержки циклов.
|
||||
Разворачивание циклов еще эффективнее при реализации векторных команд.
|
||||
**Необходимые требования для разворачивания цикла:**
|
||||
|
||||
- Независимость итераций цикла.
|
||||
- Большое количество регистров для предотвращения конфликтов по именам регистров (WAR, WAW).
|
Reference in New Issue
Block a user