
b08cc805ba33f46c722e38cb016a8be0.ppt
- Количество слайдов: 14
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МОСКОВСКИЙ ФИЗИКО - ТЕХНИЧЕСКИЙ ИНСТИТУТ (государственный университет) Решение задачи восстановления профильной информации по неполным исходным данным в динамическом двоичном компиляторе. Магистерская диссертация студента 112 группы ФРТК Загребина Андрея Александровича Научный руководитель: старший научный сотрудник Гимпельсон Вадим Дмитриевич Москва, 2007
Цели работы и её применение. Проделанный анализ: ü Исследование роли профильной информации (ПИ) в двоичной оптимизирующей трансляции. ü Исследование проблем, связанных с ПИ. ü Корректность ПИ и её поддержание. По результатам анализа: ü Разработка и реализация алгоритмов Некорректная ПИ ü Использование готовых алгоритмов Наилучшая возможная ПИ для оптимизации
Профильная информация. Граф управления Характеризует число исполнения кода. Применяется в качестве эвристик оптимизаций. С = 10 ü Счётчики узлов графа управления С = 10 P=1 ü Счётчики дуг графа управления ü Вероятности дуг графа управления С = 10 С=7 P = 0. 7 Двоичный оптимизирующий компилятор С=3 P = 0. 3 C = 350 С = 343 P = 0. 98 С=7 P = 0. 02 C = 10 C=3 С=3 P=1
Выделение региона. Формирование профильной информации. Узел с Спороговым Построение Профильный Граф (ПГ) Intel x 86 код . . . oper 1 oper 2 branch. . . oper 3 oper 4. . . C = 0 oper 1 oper 2 branch C=0 Узел региона C=1 C ++ oper 3 oper 4 Двоичный оптимизирующий компилятор Наборщик регионов oper 1 C = 1 oper 2 branch C=0 Регион C ≥ порога oper 3 oper 4 Инкрементация при интерпретации C=1 Узел региона
Корректность профильной информации Формальная корректность 1. Сузла 2. Σ = Σ Свходной дуги Сдуги Pвыходной дуги = 1 3. Сдуги = Сузла предшественника × Pдуги где С – счётчик, Р – вероятность. Дополнительное требование: 4. Счётчики должны быть наиболее близки к их оригинальным значениям (насколько это возможно) Cузла Pдуги Сдуги
Возникновение некорректности. ü При изъятии ПИ из ПГ для узлов на границах другого региона Профильный граф: 5 1 4 9 15 7 8 Регион 1 10 5 15 5 10 14 5 10 5 7 4 1 Регион 2 Вход Регион 1 0 0 0 4 4 1 0 0 4 2 8 2 ü После оптимизаций из-за удаления дуг c P ≠ 0 Граф управления: 10 P=1 произошло прерывание исполнение не продолжается 5 4 8 Профильный граф: N 4 5 ü Из-за прерываний N+1 Вход 100 P=0, 1 P=0, 9 90 P=1
Метод классического восстановление ПИ. Пропогация профиля Граф управления: Старт 10 P=0. 7 P=0. 9 P=0. 3 Узел 1 N 1 Узел 2 N 2 P=0. 1 P=1 Стоп N 3 N 1 = 0. 7 * 10 + 0. 9 * N 1, N 2 = 0. 3 * 10, N 3 = 0. 1 * N 1 + 1 * N 2. P=0. 7 P=0. 9 С = 63 P=0. 3 Узел 1 70 Узел 2 3 P=0. 1 С = 7 Стоп 10 Предусловия ü Корректность CFG ü Σ Pвыходной дуги = 1 ü Однозначность и разрешимость системы уравнений P=1
Случаи неприменимости классической пропогации. Обнуление счётчиков После пропогации До пропогации после набора региона 0 Система уравнений ü Неразрешимость ü Неоднозначность 0 P=1 P=0. 9 P=1 100 Имеет смысл применить оптимизации P=1 N P=0. 1 0 P=0. 9 P=0. 1 10 P=0 Оптимизации не будут применяться N P=1 P=0 N = 10 + N N=0+N 0 = 10 !!! 0 = 0 !!! обнуление Корректор профиля Задача коррекции – преобразовать ПИ так, чтобы после неё и пропогации обеспечить формальную корректность ПИ и по возможности пункт 4. P=1 Оптимизации не будут применяться
Коррекция входного счётчика цикла Для вложенных циклов Для самых внешних циклов Вход во внешний цикл Старт Вход в регион Вероятные пути от входов в регион Узлы вне циклов Тело самого внешнего цикла С=0 Другой цикл С≠ 0 Вероятные пути от входов во внешний цикл Тело внешнего цикла Другой вложенный цикл Тело вложенного цикла Выход из внешнего цикла
Методы коррекции для решения проблем с системой уравнений при пропогации Метод выкалывания узла во время пропогации Метод малого возмущения профильной информации 10 10 P=1 P=1 N 9990 P=0. 999 P=1 10000 P=0 N = 10 + N N = 100 = 10 + 100 P=0 Выход из региона P=0. 001 10 Выход из региона 100 = 110 !!! Недостаток: не полная корректность ПИ после пропогации в отличии от метода малого возмущения ПИ Недостаток: Неоптимальное выполнение требования 4 Корректности ПИ
Коррекция выходных из цикла дуг Этап 1 Поиск дуг для коррекции. Этап 2 Непосредственная коррекция. P = 0, Cузла-предшественника ≠ 0 ü Коррекция одной дуги: Свходной в цикл < Cпредшественника дуги Свходной в цикл ≠ 0 Pдуги = 0 Cвходной в цикл Вход 1 в цикл Pдуги = Тело цикла ü Коррекция всех дуг: Cузла предшественника дуги Свходной в цикл < ΣCпредшественника дуги Выход 2 из цикла С≠ 0 P=0 Pдуги = Этап 3 Метод малого возмущения Cвходной в цикл Σ Cузла предшественника дуги
Уменьшение времени работы результирующего кода после применения пропогации и коррекции профиля по сравнению с применением пропогации, c методом выкалывание узла. На пакете тестов SPEC 95 6 % на тесте 129. compress и 2 % на тесте 102. swim 3 -й регион теста compress и 3 -й регион теста swim Обнуление счётчиков после пропогации из-за нулевых счётчиков входов в регион после набора 4 й регион теста compress Уменьшение порядка счётчиков в цикла на несколько порядков после пропогации из-за отсутствия вероятного выхода из цикла после набора региона
Уменьшение времени работы результирующего кода после применения пропогации и коррекции профиля по сравнению с применением пропогации, с методом выкалывание узла. На пакете тестов SPEC 2000 Gсреднее = 1, 12
Спасибо за внимание.
b08cc805ba33f46c722e38cb016a8be0.ppt