Введение
2. Обзор методов оптимизации кода для процессоров с поддержкой параллелизма на уровне команд 9
2.1. ILP-платформы 10
2.2. Критерии оптимизации кода 16
2.3. Круг проблем, связанных с оптимизацией кода для ILP- процессоров 17
2.4. Области планирования 20
2.5. Усиление параллелизма в пределах областей планирования .26
2.5.1. Преобразования циклов 27
2.5.2. Встраивание функций 30
2.5.3. Снятие зависимостей по данным 30
2.5.4. Соотношение программного и аппаратного параллелизма.36
2.6. Планирование команд 37
2.6.1. Алгоритмы планирования 37
2.6.2. Координация планирования и распределения регистров 41
2.6.3. Глобальное планирование 43
2.6.4. Аппаратная поддержка глобального планирования 45
2.6.5. Метод доминантного параллелизма при планировании в древовидных областях 50
2.6.6. Планирование по прогнозу значений данных 51
2.7. Особенности генерации кода для ЦПОС 53
2.8. О роли языковых расширений 57
2.9. Сводка методов оптимизации для процессоров с поддержкой параллелизма на уровне команд 58
3. Компилятор с оптимизирующим постпроцессором - детальное описание 59
3.1. Характеристика процессора 1В577 60
3.2. Общие сведения о компиляторе для 1В577 61
3.3. Роль базового компилятора 63
3.4. Постпроцессирование 66
3.4.1. Примеры оптимизаций, выполняемых постпроцессором... 67
3.4.2. Основные понятия 69
3.4.3. Последовательность обработки входного ассемблерного файла 70
3.4.4. Аппаратная совместимость 71
3.4.5. Модель линейного участка и постановка задачи планирования 72
3.4.6. Алгоритм планирования 82
3.4.7. Учет аппаратных задержек 90
3.4.8. Сокращение перебора 92
3.4.9. Подбор вариантов команд 107
3.4.10. Модификация команд 108
3.5. Настройка постпроцессора на архитектуру 1В577 109
3.5.1. Регистры 110
3.5.2. Классы регистров 112
3.5.3. Соглашения о связях 115
3.5.4. Ресурсы 116
3.5.5. Свойства команд 120
3.5.6. Варианты 128
3.5.7. Псевдокоманды (модификаторы) 129
3.5.8. Динамические ресурсы 131
3.5.9. Реализация аппаратных ограничений при помощи псевдорегистров 134
4. Оценки эффективности 135
4.1. Сравнение с другими методами планирования 135
4.1.1. Списочное планирование 135
4.1.2. Методы планирования на основе ЦЛП 139
4.1.3. Метод планирования с использованием дизъюнктивных графов 140
4.2. Измерение эффективности кода для процессора 1В577 140
4.2.1. Цели и методика измерений 140
4.2.2. Результаты измерений 142
4.2.3. Конвейеризация и развертка циклов 143
4.2.4. Замена адресации со смещением на адресацию с постинкрементацией адресного регистра 146
4.2.5. Перестановки обращений к памяти 148
4.2.6. Оценка эффективности оптимизаций 151
4.2.7. Распределение регистров 152
5. Заключение 155
6. Литература 157


