МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МОСКОВСКИЙ ФИЗИКО - ТЕХНИЧЕСКИЙ ИНСТИТУТ (государственный университет) Решение задачи восстановления профильной информации по неполным исходным данным в динамическом двоичном компиляторе. Магистерская диссертация студента 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 x86 код ..... oper 1 oper 2 branch ..... oper 3 oper 4 ..... C = 0 oper 1 oper 2 branch C=0 Узел региона Узел региона C=1 C ≥ порога C ++ oper 3 oper 4 Двоичный оптимизирующий компилятор Наборщик регионов oper 1 C = 1 oper 2 branch C=0 Регион oper 3 oper 4 Инкрементация при интерпретации C=1 Узел региона Узел региона Корректность профильной информации Формальная корректность 1. Сузла 2. Σ = Σ Свходной дуги Сдуги Pдуги Pвыходной дуги = 1 3. Сдуги = Сузла предшественника × Pдуги где С – счётчик, Р – вероятность. Дополнительное требование: 4. Счётчики должны быть наиболее близки к их оригинальным значениям (насколько это возможно) Cузла Pдуги Сдуги Возникновение некорректности. При изъятии ПИ из ПГ для узлов на границах другого региона Профильный граф: 5 15 Регион 1 10 4 9 10 14 7 5 5 10 N 4 4 2 8 2 После оптимизаций из-за удаления дуг c P ≠ 0 Граф управления: 10 P=1 произошло прерывание исполнение не продолжается 0 1 4 7 Профильный граф: 0 4 0 0 1 5 Из-за прерываний 5 4 8 N+1 Регион 1 0 5 8 Регион 2 Вход 4 15 5 1 Вход 100 P=0,1 P=0,9 90 P=0 P=1 Метод классического восстановление ПИ. Пропогация профиля Граф управления: Старт 10 P=0.9 Старт 10 P=0.7 P=0.3 Узел 1 N1 Узел 2 N2 P=0.1 P=1 Стоп N3 N1 = 0.7 * 10 + 0.9 * N1, N2 = 0.3 * 10, N3 = 0.1 * N1 + 1 * N2. P=0.9 С = 63 P=0.7 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=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 10 P=1 P=1 N 9990 P=0.999 P=1 10000 P=0 N = 10 + N N = 100 100 = 10 + 100 P=0 Выход из региона P=0.001 10 Выход из региона 100 = 110 !!! Недостаток: не полная корректность ПИ после пропогации в отличии от метода малого возмущения ПИ Недостаток: Неоптимальное выполнение требования 4 Корректности ПИ Коррекция выходных из цикла дуг Этап 1 Поиск дуг для коррекции. Этап 2 Непосредственная коррекция. P = 0, Cузла-предшественника ≠ 0 Коррекция одной дуги: Свходной в цикл < Cпредшественника дуги Свходной в цикл ≠ 0 Pдуги = 0 Вход 1 в цикл Pдуги = Тело цикла Коррекция всех дуг: Cвходной в цикл Cузла предшественника дуги Свходной в цикл < ΣCпредшественника дуги Выход 2 из цикла С≠0 P=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 180% 170% 1,64 1,57 160% 150% 1,44 140% 1,34 130% 100% 1,25 1,23 120% 110% 1,32 1,10 1,09 1,00 1,01 1,10 1,01 1,00 1,00 1,00 1,02 1,01 1,00 1,04 1,00 1,00 1,00 1,02 1,00 1,00 90% 80% 1 16 64.g 8.w z up ip wi s 17 1.s e w 17 2.m im 17 grid 3.a pp 17 lu 5.v 17 pr 6 17 .gcc 7.m e 17 8.g sa alg 17 el 9. 18 art 18 1.m 3.e c qu f a 18 6.c ke r 18 7.f afty ac 18 erec 8.a mm 18 9.l p 19 uca s 1.f m 19 a 7.p 3d a 20 0.s rser ixt ra 25 ck 2 25 3.p .eon erl b 25 mk 25 4.gap 5.v o 25 rtex 6.b 30 zip2 0.t w 30 olf 1.a ps i 70% Спасибо за внимание.