Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лекция 05. Глобальная нумерация значений

Лекция 05. Глобальная нумерация значений (Лекции (2015)), страница 2

PDF-файл Лекция 05. Глобальная нумерация значений (Лекции (2015)), страница 2 Конструирование компиляторов (52918): Лекции - 7 семестрЛекция 05. Глобальная нумерация значений (Лекции (2015)) - PDF, страница 2 (52918) - СтудИзба2019-09-18СтудИзба

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

Файл "Лекция 05. Глобальная нумерация значений" внутри архива находится в папке "Лекции (2015)". PDF-файл из архива "Лекции (2015)", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

Однако, при переходе от одногосуперблока к другому он пропускает некоторые избыточности.В рассматриваемом примере:B3 и B7 составляют отдельные суперблоки, поэтомувычисления a0 + b0 и c0 + d0 в блоках B7 и B3не рассматриваются алгоритмом вместе с вычислениямив других блоках и не распознаются как избыточные,хотя на самом деле они избыточны.Выражение e + f является доступным в блоке B7:e + f вычисляется на любом пути, достигающем блока B7,и ни e, ни f не переопределяются до вычисления в B7.Потому оно избыточно и будет исключено, хотя этоневерно.Причина: расширенный алгоритм не может установить,20что e имеет разные номера значений в блоках D и E.5.2.

Нумерация значений в суперблоках5.2.5 Оценка расширенного алгоритма локальной нумерации значенийНесмотря на перечисленные недостатки, расширенный алгоритмзаслуживает применения:он позволяет найти намного больше избыточностей, чемлокальный алгоритм, за минимальные дополнительныенакладные расходы.Использование механизма контекстно-ориентированных ТЗпозволяет существенно сократить накладные расходы наработу с суперблоками.215.3 Глобальная нумерация значений5.3.1 Необходимость обработки точек сбора Расширенный алгоритм локальнойнумерации значений пропускаетнекоторые избыточности, так как онудаляет всю таблицу значений, когдадостигает блока, имеющего в ГПУболее одного предшественникаB1B2B4B5(в нашем примере это блоки B7 и B3).B7 Нужен алгоритм, который можетраспространять информацию черезточки сбора графа потока(в нашем примере это переходыB6B3от B5 и B6 к B7, и от B2 и B7 к B3).225.3 Глобальная нумерация значений5.3.2 Проблема точек сбора Для нумерации значений в блоке B7,расширенный алгоритм не можетB1использовать ТЗ для пути {B1, B4, B5},так как при этом не учитываетсяпуть от B6 к B7 .B2B4Алгоритм не может использовать ТЗдля пути {B1, B4, B6}, так как при этомB5не учитывается путь от B5 к B7.B6B7Алгоритм не может слить ТЗ дляB5 и B6, так как операция слиянияунифицирует номера значений,полученные вдоль непересекающихсяпутей.

При унификации неучитывается, что, например, вычисленияe + f в B5 и B6 могут иметь разныеномера значений.B3235.3 Глобальная нумерация значенийB15.3.3 Обработка точек сбора ТЗ, которую алгоритм можетиспользовать для блока B7, существует:оба пути, достигающие B7 ({B1, B4, B5}B2B4B5и {B1, B4, B6}), имеют общее началоB6B7{B1, B4}.Следовательно, алгоритм можетиспользовать ТЗ для B4 (она содержитB3в себе таблицу для B1) в качественачального состояния ТЗ для B7.Легко видеть, что B4 = Idom (B7).Следовательно для глобальнойнумерации значений можноиспользовать дерево доминаторов,визуализирующее отношение Idom.245.3 Глобальная нумерация значенийB15.3.3 Обработка точек сбора ТЗ, которую алгоритм можетB2B4использовать для блока B7, существует:B5оба пути, достигающие B7 ({B1, B4, B5}и {B1, B4, B6}), имеют общее началоB6B7{B1, B4}.Следовательно, алгоритм можетB3использовать ТЗ для B4 (она содержитв себе таблицу для B1) в качествеB1начального состояния ТЗ для B7.Легко видеть, что B4 = Idom (B7).Следовательно для глобальнойнумерации значений можноиспользовать дерево доминаторов,визуализирующее отношение Idom.B3B4B3B5B7B6Дерево доминаторов255.4 Алгоритм глобальной нумерации значений5.4.1 Вводные замечанияАлгоритм DBGVN (Dominator Based Global Value Numbering)выполняет нумерацию значений процедуры с помощьюрекурсивного обхода ее дерева доминаторов.ТЗ каждого базового блока инициализируется информацией,полученной при нумерации значений его родителя по деревудоминаторов.Для упрощения реализации алгоритма, SSA-имя первого вхождениявыражения (на данном пути по дереву доминаторов) становится егономером значения.

Это позволяет обойтись без массива имен, таккак каждый номер значения – это аналог SSA-имени.Когда обнаруживается избыточное вычисление выражения,компилятор удаляет операцию, и заменяет все использованияуказанного SSA-имени на номер значения этого выражения.265.4 Алгоритм глобальной нумерации значений5.4.1 Вводные замечания Замена SSA-имени на номер значения вычисляющего его выражениядопустима в следующих двух ситуациях:Номер значения может заместить избыточное вычислениевыражения в любом блоке, доминатором которого является блок,в котором в первый раз вычисляется это выражение.Номер значения может заместить избыточное вычисление,результат которого является параметром -узла, входящего всостав границы доминирования блока, в котором в первый развычисляется это выражение.Обработка -функций.

Прежде, чем компилятор сможетанализировать -функцию в блоке, он должен присвоить номеразначений всем ее входам. Это возможно не всегда.В частности, любой вход -функции, значение которого приходит пообратному ребру (относительно дерева доминаторов) не может27иметь номера значения.5.4 Алгоритм глобальной нумерации значений5.4.2 Обработка -функцийСледующие два условия гарантируют, что при попадании алгоритма вблок всем параметрам -функций этого блока уже присвоены номеразначений:1. Рекурсивная процедура DBGVN обходит дерево доминаторов поширине.

Это гарантирует, что все предшественники блока будутобработаны до самого блока.2. Блок не имеет обратных входных ребер.Если -функция бессмысленна или избыточна, она должна бытьудалена:-функция бессмысленна если все ее входы имеют одинаковыйномер значения. При удалении бессмысленной -функцииссылки на ее результат заменяются номером значения ее входов.-функция избыточна, если она вычисляет то же самоезначение, что и другая -функция в том же блоке285.4 Алгоритм глобальной нумерации значений5.4.3 Рекурсивный алгоритм глобальной нумерации значенийВход:(1) граф потока управления N, E, дерево доминаторов DT(2) множество Val значений переменных, констант ивыраженийВыход: отображение VN: Val  N  {0} (N – множество натуральныхчисел), ставящее в соответствие каждому значению его номер:натуральное число или 0.Метод: Применить к корню DT рекурсивную процедуру DBGVN(Dominator Based Global Value Numbering)295.4 Алгоритм глобальной нумерации значений5.4.4 Рекурсивная процедура DBGVN (на псевдокоде)(1) Обработка -функцийprocedure DBGVN(Block B)Отметить начало новой области имен||Обработка -функцийfor each p  B, где p – -функция вида “n  (…)”if p бессмысленна или избыточнапоместить номер значения p в VN[n]удалить pelseVN[n]  n;добавить p в ТЗ305.4 Алгоритм глобальной нумерации значений5.4.4 Рекурсивная процедура DBGVN (на псевдокоде)(2) Обработка остальных инструкцийprocedure DBGVN(Block B)for each aB где a – присваивание вида “x  op, y, z”заменить y на VN[y] и z на VN[z]expr  op, y, z|| expr – вход в ТЗif expr может быть упрощено до exprЗаменить a на “x  expr ”expr  exprif expr имеется в ТЗ с номером vVN[x]  vУдалить aelse Добавить expr в ТЗ с номером x VN[x]  x315.4 Алгоритм глобальной нумерации значений5.4.4 Рекурсивная процедура DBGVN (на псевдокоде)(3) Окончание обработки блока B и переход к обработке его дочернихблоков (по дереву доминаторов)procedure DBGVN(Block B)for each s  Succ(B)скорректировать входы -функций в sfor each дочернего блока c узла B по дереву доминаторовDBGVN (c)|| рекурсивный вызовОчистить ТЗ при выходе из области (стэк)325.4 Алгоритм глобальной нумерации значений5.4.5 Пример применения алгоритмаB1 Применим алгоритм к фрагменту кода нарисунке.

Порядок обработки определяетсядеревом доминаторовv #valB1(v)B2B3B4 Обработка блока B1.Переменным u0, v0, и w0в качестве номеров значенийбудут присвоены их SSA-именаu0, v0, и w0u0 u0v0 v0w0 w0x0y0u1x1y1u2x2y2z0u3B2B3B4B1B2u0  a0 + b0 x0  c0 + d0v0  c0 + d0 y0  c0 + d0w0  e0 + f0B3B4u1  a0 + b0 u2  (u0, u1)x1  e0 + f0 x2  (x0, x1)y1  e0 + f0 y2  (y0, y1)z0  u2 + y2u3  a0 + b0После обработки B1335.4 Алгоритм глобальной нумерации значений5.4.5 Пример применения алгоритмаB1 Обработка блока B2.B2Выражение c0 + d0 определенов блоке B1, доминаторе B2.Поэтому в B2 можно удалитьоба присваивания, присвоивx0 и y0 номер значения v0.Необходимо такжеподготовится к обработке блокаB4, заменив параметры функций u0, x0, и y0 номерамиих значений u0, v0, и v0.vu0v0w0x0y0u1x1y1u2x2y2z0u3#val(v)u0v0w0v0v0B3B4B1B2u0  a0 + b0v0  c0 + d0w0  e0 + f0B3B4u1  a0 + b0 u2  (u0, u1)x1  e0 + f0 x2  (v0, x1)y1  e0 + f0 y2  (v0, y1)z0  u2 + y2u3  a0 + b0После обработки B2345.4 Алгоритм глобальной нумерации значений5.4.5 Пример применения алгоритмаB1 Обработка блока B3.Все три выражения в правыхчастях уже вычислены в B1,B2vдоминаторе B3Поэтому переменным u1, x1 и y1присваиваются номеразначений u0, w0 и w0соответственнои удалить присваивания.В заключение обработки B3,необходимо заполнить вторыепараметры -функцийиз B4 номерами значенийu0, w0 и w0.u0v0w0x0y0u1x1y1u2x2y2z0u3#val(v)u0v0w0v0v0u0w0w0B3B4B1B2u0  a0 + b0v0  c0 + d0w0  e0 + f0B3B4u2  (u0, u0)x2  (v0, w0)y2  (v0, w0)z0  u2 + y2u3  a0 + b0После обработки B3355.4 Алгоритм глобальной нумерации значений5.4.5 Пример применения алгоритмаB1 Обработка блока B4. Сначала исследуются-функции.

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