Главная » Все файлы » Просмотр файлов из архивов » Документы » Оптимизация в компиляторах (8 сем ВМК)

Оптимизация в компиляторах (8 сем ВМК) (Программа курса)

2019-09-18СтудИзба

Описание файла

Файл "Оптимизация в компиляторах (8 сем ВМК)" внутри архива находится в папке "Программа курса". Документ из архива "Программа курса", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "Оптимизация в компиляторах (8 сем ВМК)"

Текст из документа "Оптимизация в компиляторах (8 сем ВМК)"

6


Программа по дисциплине: Конструирование оптимизирующих компиляторов

по направлению:

профиль подготовки: Системное программирование

кафедра Системного программирования

курс: 4 (бакалавриат)

семестр: весенний экзамен 8 семестр

ОБЪЁМ УЧЕБНОЙ НАГРУЗКИ И ВИДЫ ОТЧЁТНОСТИ.

Вариативная часть, в т.ч. :

__4___ зач. ед.

Лекции

__34___ часа

Практические занятия

__ нет ___ часов

Лабораторные работы

__16___ часов

Индивидуальные занятия с преподавателем

__нет___ часов

Самостоятельные занятия

__18__ часов

Итоговая аттестация

Экзамен 8 семестр

ВСЕГО

50 часов

  1. ЦЕЛИ И ЗАДАЧИ

Цель курса Целью курса является изучение основ построения оптимизирующих статических и динамических компиляторов современных языков программирования, учитывающих особенности архитектуры современных компьютеров.

Задачами данного курса являются:

  • освоение студентами базовых знаний в области компиляторных технологий и оптимизирующей компиляции программ;

  • приобретение теоретических знаний в области теории графов, теории решеток, методов сбора статистики, лежащих в основе современных компиляторных технологий;

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

  • приобретение навыков работы на современных распределенных неоднородных компьютерных системах.

  1. Структура и содержание дисциплины

Структура дисциплины

Перечень разделов дисциплины и распределение времени по темам

№ темы и название

Количество часов

1. Архитектура оптимизирующего компилятора. Цели и задачи курса.

1

2. Построение промежуточного представления среднего уровня (обзор).

1

3. Машинно-независимая оптимизация компилируемого кода.

14 + 8

4. Машинно-ориентированная оптимизация.

10 + 8

5. Динамическая и адаптивная оптимизация в компиляторах времени выполнения.

4

6. Современные компиляторные среды.

2

7. Применение статического и динамического анализа для решения различных задач инженерии программ.

2

ВСЕГО часов

50 (34 л. + 16 лаб.)

Вид занятий

ЛЕКЦИИ:

№ темы и название

Количество часов

1. Архитектура оптимизирующего компилятора. Цели и задачи курса.

1

2. Построение промежуточного представления среднего уровня (обзор).

1

3. Машинно-независимая оптимизация компилируемого кода.

14

4. Машинно-ориентированная оптимизация.

10

5. Динамическая и адаптивная оптимизация в компиляторах времени выполнения.

4

6. Современные компиляторные среды.

2

7. Применение статического и динамического анализа для решения различных задач инженерии программ.

2

ВСЕГО часов

34

ЛАБОРАТОРНЫЕ РАБОТЫ:

№ темы и название

Количество часов

3. Машинно-независимая оптимизация компилируемого кода.

8

4. Машинно-ориентированная оптимизация.

8

ВСЕГО часов

16

ВИДЫ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

№ п.п.

Темы

Трудоёмкость (количество часов)

1

Изучение теоретического курса – выполняется самостоятельно каждым студентом по итогам каждой из лекций, результаты контролируются преподавателем на лекционных и практических занятиях, используются конспект (электронный) лекций, учебники, рекомендуемые данной программой, методические пособия.

14 час.

2

Решение задач по заданию преподавателя: – решаются задачи, выданные преподавателем по итогам лекций, и сдаются в конце семестра; используются электронный конспект и слайды лекций, учебники, рекомендуемые данной программой (см. ниже),
а также сборники задач, включая электронные учебно-методические пособия.

4 час.

3

Подготовка к выполнению лабораторных работ.

4

Подготовка к экзамену

ВСЕГО (зач. ед.(часов))

Содержание дисциплины

п/п

Название модулей

Разделы и темы лекционных занятий

Содержание

1

Архитектура оптимизирую-щего компилятора. Цели и задачи курса.

Архитектура оптимизирующе-го компилятора.

Задача компиляции. Основные фазы компиляции. Промежуточные представления программы. Цели и задачи курса.

2

Построение промежуточно-го представле-ния среднего уровня (обзор).

Построение промежуточного представления среднего уровня

Лексический, синтаксический и контекстный анализ исходного кода, построение абстрактного синтаксического дерева и таблицы символов (промежуточное представление верхнего уровня).

Построение промежуточного представления среднего уровня – трехадресный код (четверки).

Граф потока управления и алгоритм его построения.

3

Машинно-независимая оптимизация компилируе-мого кода.

Локальная оптимизация.

Задачи локальной оптимизации. Построение ациклического направленного графа базового блока методом нумерации значений. Особенности реализации локального метода нумерации значений.

Глобальная оптимизация. Анализ и оптимизация потока управления.

Оптимизация переходов и возвратов из функций. Открытая вставка функций. Развертка циклов.

Глобальная оптимизация. Анализ потока данных.

Анализ потока данных – основной метод глобальной и межпроцедурной оптимизации. Итерационный алгоритм анализа потока данных на полурешетках. Сходимость итерационного алгоритма для различных классов передаточных функций. Монотонные и дистрибутивные структуры потока данных.

Глобальная оптимизация. Анализ зависимостей.

DU-цепочки. Зависимости по данным и по управлению. Граф зависимостей. Построение срезов (слайсов).

Глобальная оптимизация. Методы ускорения анализа потока данных.

Построение глубинного остовного дерева графа потока управления. Нумерация узлов графа потока управления (в глубину). Дерево доминаторов и алгоритм его построения. Понятие области. Виды областей Алгоритм построения иерархии областей для приводимых графов потока управления. Дерево управления процедуры.

Анализ потоков данных на основе областей. Построение передаточных функций областей с помощью операций композиции, сбора и замыкания. Замкнутость структуры потока данных относительно операций композиции, сбора и замыкания.

Трехэтапный алгоритм анализа потока данных на основе областей (на примере достигающих определений). Метод расщепления узлов для обработки неприводимых графов потока управления.

Глобальная оптимизация гнезд циклов.

Выделение гнезд циклов на графе потока управления. Вынесение инвариантных вычислений за пределы цикла. Сокращение количества индуктивных переменных. Выбор оптимального порядка циклов в гнезде для улучшения локальности данных. Развертка циклов.

Глобальная нумерация значений

SSA-форма и оптимальный метод ее построения.

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

Объединение глобальной нумерации значений с построением SSA-формы.

Глобальный анализ псевдонимов
(в частности, указателей и объектных ссылок).

Проблемы, связанные с обработкой членов структур, элементов массивов и данных, доступных по указателям, в том числе – динамических данных. Понятие псевдонима (алиаса). Псевдонимы в языке Си (указатели). Псевдонимы в языке Java (объектные ссылки). Глобальный анализ псевдонимов: первая фаза – обнаружение псевдонимов, вторая фаза – распространение псевдонимов (задача анализа потока данных). Недостаточность глобального анализа псевдонимов.

Межпро-цедурный анализ указателей

Межпроцедурный анализ указателей. Граф вызовов и способы его задания. Чувствительность анализа к потоку управления и контексту вызова. Контекстно-нечувствительный межпроцедурный анализ, его достоинства и недостатки.

4

Машинно-ориентиро-ванная оптимизация.

Особенности архитектуры современных компьютеров и задача генерации оптимального кода.

RISC и CISC. Конвейер потока команд: блокировки конвейера, система сброса конвейера, конфликты по данным. Вырезки из массивов. Конвейер данных. Выдача команд. Блок предсказания переходов. Конвейерное выполнение. Out-of-Order-процессоры. VLIW и EPIC. Многоядерные процессоры.

Промежуточное представление низкого уровня (последователь-ность трехадресных инструкций).

Операции низкого уровня. Модель целевой машины (целевой язык). Псевдорегистры. Режимы адресации: прямая, косвенная, индексированная адресации.

Задачи машинно-ориентированной оптимизации: распределение памяти, распределение и назначение регистров, планирование кода.

Распределение и назначение регистров.

Распределение и назначение регистров в пределах базового блока (Функция getReg()).

Глобальное распределение регистров. Интервалы жизни значений переменных и их построение. Оценка стоимости сброса. Конфликтные ситуации, граф конфликтов и его построение. Распределение и назначение регистров с помощью алгоритма раскраски графа конфликтов снизу вверх.

Планирование кода.

Постановка задачи планирования кода: цель планирования кода – эффективное использование параллелизма на уровне команд. Ограничения планирования кода – зависимости по данным и по управлению. Упорядочение фаз распределения регистров и планирования кода. Способы оценки эффективности расписания.

Локальное планирование кода: алгоритм планирования списка.

Конвейеризация одиночных циклов.

5

Динамиче-ская и адаптивная оптимизация в компилято-рах времени выполнения

Динамическая и адаптивная оптимизация в компиляторах времени выполнения

Структура JIT-компилятора. Примеры JIT-компиляторов. Уровни оптимизации. Архитектура JIT-компилятора (на примере экспериментального JIT-компилятора Jikes RVM): подсистема измерений, подсистема перекомпиляции, подсистема управления процессом динамической компиляции (контроллер). Фазы JIT-компиляции. Профилирование в JIT-компиляторах. Профилирование с помощью «семплов». Хранение данных о профилях.

Динамическая и адаптивная оптимизация в JIT-компиляторах.

6

Современные компилятор-ные среды.

Современные компиляторные среды.

GCC, LLVM

7

Применение статического и динамиче-ского анализа для решения различных задач инженерии программ.

Применение статического и динамического анализа для решения задач инженерии программ (обзорная лекция).

Рассматриваются проблемы поиска дефектов, контроля за использованием выбранного подмножества исходного языка, понимания программ (обратная инженерия) и др.

  1. Образовательные технологии

№ п/п

Вид занятия

Форма проведения занятий

Цель

1

лекция

изложение теоретического материала

получение теоретических знаний по дисциплине

2

лекция

изложение теоретического материала с помощью презентаций

повышение степени понимания материала

3

лекция

решение задач по заданию преподавателя – решаются задачи, выданные преподавателем по итогам лекционных занятий, и сдаются в конце семестра, используются конспект (электронный) лекций, учебники, рекомендуемые данной программой, а также учебно-методические пособия

осознание связей между теорией и практикой, а также взаимозависимостей разных дисциплин

4

самостоятельная работа студента

подготовка к защитам лабораторных работ, подготовка к экзамену и зачету с оценкой

повышение степени понимания материала

  1. Учебно-методическое и информационное обеспечение дисциплины

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

  1. A.В. Axo, М.С. Лам, P. Сети, Дж.Д. Ульман. Компиляторы: принципы, технологии и инструментарий. Издание второе. / М.: ООО «И.Д. Вильямс», 2008, ISBN: 978-5-8459-1349-4

  2. K. D. Cooper and L. Torczon. Engineering a Compiler. 2nd edition. / Elsevier (Morgan Kaufman Publishers), 2012, ISBN: 978-0-12-088478-0.

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

  1. Y. N. Srikant, P. Shankar. The Compiler Design Handbook. 2nd edition. CRC press – 2008 ISBN: 978-1-4200-4382-2

  2. The LLVM Compiler Infrastructure. // http://llvm.org/

  3. A GNU Manual. // http://gcc.gnu.org/

  4. The SUIF 2 Compiler System. // http://suif.stanford.edu/suif/suif2/

  5. Free Compiler Construction Tools. // http://www.thefreecountry.com/programming/compilerconstruction.shtml

    1. Пособия и методические указания.

Слайды лекций (Интернет)

Программу составил

С. С. Гайсарян, доцент, к.ф.–м.н.

«_____»_________2013 г.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5161
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее