Программный разрыв зависимостей между операциями обращения в память в двоичном оптимизирующем компиляторе Магистерская диссертация студента 212 группы.

Презентация:



Advertisements
Похожие презентации
Программный разрыв зависимостей между операциями обращения в память в двоичном оптимизирующем компиляторе Магистерская диссертация студента 212 группы.
Advertisements

Реализация индексного анализа для деревьев циклов любого вида сложности Выполнил : студент 818 гр. Юдин Павел Научный руководитель : к. т. н. Муханов Л.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МОСКОВСКИЙ ФИЗИКО - ТЕХНИЧЕСКИЙ ИНСТИТУТ (государственный университет) Решение задачи восстановления профильной.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин.
Автоматическая векторизация выражений оптимизирующим компилятором Ермолицкий Александр, 112 группа Научный руководитель: Шлыков Сергей Московский Физико-Технический.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин.
Распределение регистров при планировании инструкций для архитектуры Эльбрус Дипломная работа Иванова Д. С. Научный руководитель Шлыков С. Л. Москва 2008.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин науч.рук-ль: проф. А.К.Петренко.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Корныхин Евгений Валерьевич научный руководитель: д.ф.-м.н. Петренко.
Генерация средств импорта данных в рамках проектов ИС, реализованных в технологии REAL-IT Выполнил Комиссаров Антон Научный руководитель: Иванов А.Н. Рецензент:
Использование вращающихся регистров в двоичном оптимизирующем компиляторе.
ПОТОКО-ЧУВСТВИТЕЛЬНЫЙ АНАЛИЗ УКАЗАТЕЛЕЙ ЯЗЫКА С, ОСНОВАННЫЙ НА ДИАГРАММАХ ДВОИЧНЫХ РЕШЕНИЙ Санкт-Петербургский Государственный Университет Математико-Механический.
Тема 2. Способы адресации и система команд МП. Непосредственная адресация Суть способа. Требуемые данные (#data ̶ непосредственный операнд, константа)
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин кафедра СП ВМК МГУ научный руководитель: д.ф.-м.н.
Исследование методов генерации программ для тестирования модулей управления памяти микропроцессоров Корныхин Евгений.
Поиск максимальной длины рекуррентности в графе зависимостей Научный руководитель: Гимпельсон В.Д. Работу выполнила Филиппова В.Н. Московский физико-технический.
Основы операционных систем.
Учебный курс Основы операционных систем Лекция 7 кандидат физико-математических наук, доцент Карпов Владимир Ефимович.
Построение тестовых программ для проверки подсистем управления памяти микропроцессоров Евгений Корныхин ИСП РАН / кафедра СП ВМК МГУ научный руководитель:
Оптимизирующая компиляция. Производительность Параллелизм на уровне операций (ILP) – параллельное исполнение команд в процессоре Параллелизм на уровне.
Транксрипт:

Программный разрыв зависимостей между операциями обращения в память в двоичном оптимизирующем компиляторе Магистерская диссертация студента 212 группы ФРТК Волкова Павла Москва 2008

Постановка задачи Развитие оптимизации по разрыву зависимостей между операциями обращения в память с целью учета внутренней структуры циклов и избавления от построения избыточных проверок

Суть проблемы Статически нераспознаваемые зависимости между операциями обращения в память ограничивают возможности компилятора в применении оптимизаций над кодом Статически нераспознаваемые зависимости между операциями обращения в память ограничивают возможности компилятора в применении оптимизаций над кодом mov G1 -> V1 mov G2 -> V2 … store V1 1 load V2 -> V4 add V4 1 -> V4 mov G1 -> V1 mov G2 -> V2 load V2 -> V4 … store V1 1 add V4 1 -> V4

Динамическое развязывание адресов памяти mov G1 -> V1 mov G2 -> V2 … store V1 1 load V2 -> V4 add V4 1 -> V4 load V2 -> V4 … store V1 1 add V4 1 -> V4 mov G1 -> V1 mov G2 -> V2 If V1 != V2 … store V1 1 load V2 -> V4 add V4 1 -> V4 y n

Ранее реализованный алгоритм динамического развязывания адресов памяти Распознавание адресов операций обращения в память и законы их изменения (только индуктивные с постоянным шагом и инвариантные адреса) Распознавание адресов операций обращения в память и законы их изменения (только индуктивные с постоянным шагом и инвариантные адреса) Объединение в диапазоны одноименных операций работы с памятью со смежными адресами Объединение в диапазоны одноименных операций работы с памятью со смежными адресами Построение развязывающих выражений Построение развязывающих выражений 1.Поиск самых вложенных циклов 2.Для каждого из них:

Недостатки алгоритма Неоптимальная частота перехода на цикл с развязанными операциями из-за построения грубых динамических проверок Анализ причин: 1. Не учитывается внутренняя структура цикла при построении развязывающих выражений 2. Избыточное развязывание

Отображение виртуального адресного пространства на физическую память 4096 … MMU Виртуальные адреса Физическая память

Построение проверок в прежнем алгоритме dist = N*шаг индукции= 2*4 = 8 с1 = a1 + 3/2 c2 = a2 + 3/2 c_dist = f(c1,c2) = min( c1-c2, c2-c1) mod 4096 c_dist >= dist + 4/2 + 4/2 = 12 f(a1,a2) = f(c1,c2) = c_dist >= 12 d = (a1-a2) mod 4096 d = [12, 4084] a1 a1+3 a2a2+3 dist с1 с d 4084

Предложенный алгоритм построения проверок Для каждой пары диапазонов [a1, a1+s1] и [a2, a2+s2]: Для каждой пары диапазонов [a1, a1+s1] и [a2, a2+s2]: Построение развязывающих выражений Построение развязывающих выражений Для всех пар операций load(a1+d1) и store(a2+d2): Для всех пар операций load(a1+d1) и store(a2+d2): Пересечение получившихся решений Пересечение получившихся решений Построение уравнения развязывания операций на N итераций: Построение уравнения развязывания операций на N итераций: если операция чтения выше записи, то если операция чтения выше записи, то [a1 + d1, a1 + d1 + ld_size -1] [a2 + d2 - N*h, [a1 + d1, a1 + d1 + ld_size -1] [a2 + d2 - N*h, a2 + d2 – h + st_size -1] = 0 в противном случае: в противном случае: [a1 + d1, a1 + d1 + ld_size -1] [a2 + d2 - N*h, [a1 + d1, a1 + d1 + ld_size -1] [a2 + d2 - N*h, a2 + d2 + st_size -1] = 0 Замена переменных: d = (a1-a2) mod 4096 Замена переменных: d = (a1-a2) mod 4096 Определение решения для d Определение решения для d

Пример построения развязывающих выражений в предложенном алгоритме [a1, a1+3] [a2-8, a2-1] mod 4096=0 d = (a1 – a2) mod 4096 [d, d+3] [-8, -1] = 0 d

Относительное изменение времени исполнения тестов при использовании старого и нового алгоритма ( (T стар / T нов – 1) * 100 % ) Spec95 Spec2000

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

Результаты работы Реализован новый алгоритм динамического развязывания операций обращения в память. Его отличия: Реализован новый алгоритм динамического развязывания операций обращения в память. Его отличия: построение условий, увеличивающих частоту переходов на оптимизированный цикл построение условий, увеличивающих частоту переходов на оптимизированный цикл уменьшение числа операций, необходимых для построения развязывающих выражений уменьшение числа операций, необходимых для построения развязывающих выражений Сокращение времени исполнения ряда тестов Spec95/2000 Сокращение времени исполнения ряда тестов Spec95/2000 Необходимость разрешения конфликтов с другими оптимизациями для введения предложенного алгоритма в следующую версию двоичного компилятора Необходимость разрешения конфликтов с другими оптимизациями для введения предложенного алгоритма в следующую версию двоичного компилятора

Спасибо за внимание.