• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Магистратура 2024/2025

Машинно-зависимые оптимизации в компиляторах

Статус: Курс по выбору (Системное программирование)
Направление: 09.04.04. Программная инженерия
Когда читается: 2-й курс, 1 модуль
Формат изучения: без онлайн-курса
Охват аудитории: для всех кампусов НИУ ВШЭ
Преподаватели: Кулагин Иван Иванович
Прогр. обучения: Системное программирование
Язык: русский
Кредиты: 3

Программа дисциплины

Аннотация

Машинно-зависимые оптимизации при трансляции опираются на использование особенностей архитектуры и системы команд базовой машины. В ходе курса подробно рассматриваются машинно-зависимые алгоритмы оптимизации компилятора, а также примеры их работы. К ним относятся генерация кода, распределитель регистров, планирование инструкций, программная конвейеризация циклов и другие оптимизации компилятора. Алгоритмы, обсуждаемые в курсе, используются в современных промышленных компиляторах, таких как Clang/LLVM и GCC.
Цель освоения дисциплины

Цель освоения дисциплины

  • Понимание принципов работы оптимизирующего компилятора, выполнения машинно-зависимых оптимизаций и генерации кода под современные процессорные архитектуры с учетом их особенностей
Планируемые результаты обучения

Планируемые результаты обучения

  • 1. Освоение новых методов в области оптимизирующей компиляции и интерпретации программ
  • 2. Полученные знания будут также полезны для анализа производительности и оптимизации для заданных процессорных архитектур приложений (в т.ч. написанных на языках высокого уровня) за счет лучшего понимания особенностей оптимизирующих преобразований, выполняемых внутри компилятора.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение и обзор RISC-архитектуры
  • Выбор команд
  • Распределение и назначение регистров
  • Планирование кода
  • Программная конвейеризация
  • Динамическая компиляция
Элементы контроля

Элементы контроля

  • неблокирующий КР_1
  • неблокирующий КР_2
  • неблокирующий Экз
Промежуточная аттестация

Промежуточная аттестация

  • 2024/2025 1st module
    Final = 0.8*Экзамен + 0.2*5*Max(2, КР_1 + КР_2) * каждая из оценок за КР_1 и КР_2 – числа в интервале [0; 2]
Список литературы

Список литературы

Рекомендуемая основная литература

  • Cooper, K., & Torczon, L. (2012). Engineering a Compiler. San Francisco: Elsevier Ltd. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=354941
  • Shankar, P., & Srikant, Y. N. (2008). The Compiler Design Handbook : Optimizations and Machine Code Generation, Second Edition (Vol. 2nd ed). Boca Raton: CRC Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=209423

Рекомендуемая дополнительная литература

  • Keith Cooper, & Linda Torczon. (2004). Engineering a Compiler. Morgan Kaufmann.

Авторы

  • Самоненко Илья Юрьевич
  • Буцкая Евгения Александровна
  • Лебедев Сергей Аркадьевич
  • Петренко Александр Константинович