Годовой план лекций

Вводная часть

  • Лекция 1: Общее устройство компилятора. Фронт-энд (FE). Оптимизации (OPT). Генерация машинного кода (CG).
  • Лекция 2: Промежуточное представление (IR). Граф потока управления (CFG). Форма единственного присваивания (SSA). Граф определение-использование (DUG). Дерево циклов (Loop Tree).
  • Лекция 3: Недостатки промежуточного представления в компиляторе Phoenix. Реализация нового промежуточного представления, пригодного для генерации кода под широкое командное слово.
  • Лекция 4: Понижение промежуточного представления на примере трансляции Phx::IR->Icomp::IR.

Анализ потока управления:

  • Лекция 5: Различные типы нумерации графов (OWN,DFO,RPO). Быстрый доступ к узлу графа по номеру графа. Depth first search
  • Лекция 6: Маркировка узлов графа. Проблемы связанные с одновременной маркировкой узла несколькими маркерами.
  • Лекция 7: Алгоритмы на графе потока управления: пропагация битовых векторов, построение дерева доминаторов/пост-доминаторов (Dom/PostDom), DJ/RDJ графы
  • Лекция 8: Циклы и сильно связанные компоненты, сводимость циклов, цикловые оптимизации.

Анализ потока данных:

  • Лекция 9: Алгоритмы на графе потока данных: построение графа определение-использование (DUG), оптимизации потока данных.

Анализ зависимостей:

  • Лекция 10: Граф зависимостей (Dep Graph): алгоритм построения зависимостей, коррекция зависимостей, минимизация графа зависимостей.

Планирование:

  • Лекция 11: Методы статического планирования: по списку, трасса, суберблок и гиперблок, по дереву доминирования, с учетом задержек между линейными участками, техника просачивания, волновой фронт, конвейеризация циклов.
  • Лекция 12: Алгоритмы и стратегии набора гиперблоков.
  • Лекция 14: Спекулятивный режим: спекулятивность по упрвлению без построения компенсирующего кода, cпекулятивность по управлению и по данным с построение компенсирующего кода. Использование спекулятивного режима на этапе планирования.
  • Лекция 15: Некоторые аспекты глобального планирования: общее описание алгоритма глобального планирования, алгоритм построения зависимостей, перенос операций.

Распределение регистров:

  • Лекция 16: Распределение регистров: поиск сетей, построение графа несовместимости, раскраска графа несовместимости.
  • Лекция 17: Влияние широкой команды на распределение регистров. Граф разделения предикатов. Окончание времени жизни регистров и сетей. Порядок распределения регистров разных типов.

Машинная модель:

  • Лекция 18: Архитектуры с явно выраженной параллельностью. Архитектура IA64.
  • Лекция 19: Машинная модель.

Генерация кода:

  • Лекция 20: Генерация ассембленого кода и исполняемого файла.
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.