Главная страница « Спецкурсы «

Спецкурс «Машинно-независимая оптимизация»

Лектор: доц., канд. физ.-мат. наук Гайсарян С. С.
Продолжительность: 32 часа (полугодовой)
Аудитория: студенты 3-го курса кафедр СП, АСВК и АЯ

Аннотация курса

Новости
Информация
Преподаватели и сотрудники
Студенты и аспиранты
Научно-исследовательский семинар
Спецсеминары
Просеминар
Проекты
Ссылки
Поиск

Курс опирается на спецкурс А. В. Чернова «Введение в оптимизацию программ», читаемый на пятом семестре, и на обязательный курс В. А. Серебрякова «Конструирование компиляторов», читаемый на шестом семестре.
При разработке компиляторов применяемые методы анализа программ и генерации промежуточного представления (анализ с помощью контекстно-независимых грамматик с учетом контекстных условий с помощью вычисления атрибутов) приводят к тому, что промежуточное представление программы содержит избыточные вычисления, а также мертвый и недостижимый код. Кроме того, в поток управления добавляются многочисленные «лишние» передачи управления (например, возврат из рекурсивной функции при рекурсии глубины состоит из n переходов вместо одного).
Машинно-независимые методы оптимизации позволяют существенно оптимизировать поток управления программы, а также исключить из нее все виды избыточных вычислений (общие подвыражения, инвариантные вычисления в цикле, частично-избыточные вычисления), большую часть мертвого и недостижимого кода. Выполнение перечисленных оптимизаций позволяет ускорить программу на один два порядка. Эвристические методы и алгоритмы выполнения перечисленных преобразований и составляют предмет курса.
Кроме того, в курсе изучаются методы повышения степени локальности данных, также позволяющие существенно ускорить программу, и методы распараллеливания циклов. Эти методы особенно важны для современных архитектур, интенсивно использующих кеш и имеющих несколько ядер.
После этого курса в седьмом семестре будет изучаться курс «Машинно-ориентированная оптимизация программ». Межпроцедурный анализ побочного эффекта будет изучаться в этом курсе.

Основная литература

  1. A.V. Aho, M.S. Lam, R. Sethi & J.D. Ullman. Compilers: Principles, Techniques, and Tools. Second Edition. /Addison-Wesley, 2006 (ISBN 0-321-48681-1) (Имеется русский перевод первого издания). Книга является основным учебным пособием по курсам компиляции программ в Стенфордском университете (США).

  2. В.А. Серебряков. Конструирование компиляторов.
    Предполагается, что слушатели знакомы с содержанием этого учебника.

Дополнительная литература

  1. K.D. Cooper & L. Torczon. Engineering a Compiler. / Morgan Kaufmann Publishers, 2004 (ISBN 1-55860-698-X)

  2. S.S. Muchnik. Advanced Compiler Design & Implementation. / Morgan Kaufmann Publishers, 1997 (ISBN 1-55860-320-4)

  

© Кафедра системного программирования ВМК МГУ.

Обновлено: 11.6.2008