Распределение регистров при планировании инструкций для архитектуры Эльбрус Дипломная работа Иванова Д. С. Научный руководитель Шлыков С. Л. Москва 2008.

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



Advertisements
Похожие презентации
Оптимизация управляющего графа программ, имеющих избыточные условные вычисления Выполнил: Степнов Денис, 816 гр. Научный руководитель: Бучнев А.Ю. Выпускная.
Advertisements

Локальная сеть Типы локальных сетей Топология сетей.
Реализация индексного анализа для деревьев циклов любого вида сложности Выполнил : студент 818 гр. Юдин Павел Научный руководитель : к. т. н. Муханов Л.
Теория компиляторов-2. Л.31 Теория компиляторов Часть II Лекция 2.
Выполнили: Мартышкин А. И. Кутузов В. В., Трояшкин П. В., Руководитель проекта – Мартышкин А. И., аспирант, ассистент кафедры ВМиС ПГТА.
Арбитры в мультипроцессорных системах. Арбитры Используются для разрешения конфликтных ситуаций на аппаратном уровне Арбитры принимают от процессоров.
Разработка и исследование алгоритмов динамического распределения и доставки данных с учетом требований вычислительных сервисов в системе распределенных.
Московский Физико-Технический Институт Оптимизация методов умножения матриц библиотеки линейной алгебры для ВК Эльбрус-3M1 и Эльбрус-90 микро Выполнил:
ИНСТИТУТ ПРОБЛЕМ ПРОЕКТИРОВАНИЯ В МИКРОЭЛЕКТРОНИКЕ РАН (ИППМ) Способы регулирования вычислений в параллельной потоковой вычислительной системе Д.Н. Змеев,
Теория компиляторов-1. Л.61 Классическая теория компиляторов Лекция 6.
Запись алгоритмов при помощи блок-схем. Начало и конец алгоритма.
ЛАБОРАТОРНАЯ РАБОТА 1 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ ТАБЛИЦ, ИСПОЛЬЗУЕМЫХ В ТРАНСЛЯТОРЕ Рейн Т. С.
Программный разрыв зависимостей между операциями обращения в память в двоичном оптимизирующем компиляторе Магистерская диссертация студента 212 группы.
Задача построения расписания конфигураций с ограничением на максимальную глубину узлов Евгений Наградов.
Введение в теорию компиляции Основные принципы построения трансляторов.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Программный разрыв зависимостей между операциями обращения в память в двоичном оптимизирующем компиляторе Магистерская диссертация студента 212 группы.
Учебный курс Технологии и средства разработки корпоративных систем Лекция 1 Открытые системы. Клиент и сервер Лекции читает кандидат технических наук,
Система фрагментированного программирования Перепелкин В.А. Всероссийская молодежная школа по параллельному программированию МО ВВС ИВМиМГ 2009 г.
Задача построения расписания конфигураций с ограниченной глубиной узлов для беспроводных сенсорных сетей Евгений Наградов.
Транксрипт:

Распределение регистров при планировании инструкций для архитектуры Эльбрус Дипломная работа Иванова Д. С. Научный руководитель Шлыков С. Л. Москва 2008

Задачи распределения регистров и планирования инструкций в компиляторе Планирование инструкций – эффективное переупорядочивание инструкций с учетом доступных вычислительных ресурсов. Распределение регистров – эффективное распределение доступных архитектурных регистров между переменными и результатами инструкций.

Схемы взаимного расположения фаз планирования инструкций и распределения регистров 1. Распределение перед планированием Создает дополнительные зависимости между инструкциями, сильно ограничивая параллельность. Высокая алгоритмическая сложность. 2. Распределение после планирования Приводит к разрезу спланированного кода при появлении инструкций откачки в память. Ограничения на планирование. Высокая алгоритмическая сложность. 3. Распределение при планировании Позволяет избежать указанных проблем. Перспективная, но плохо исследованная техника.

Цель работы Планирование инструкций Распределение регистров Распределение регистров при планировании инструкций BACK END + FRONT END OPTIMIZER

Основные понятия Виртуальные регистры – переменные программы и промежуточные результаты вычислений. Сеть – виртуальный регистр и множество инструкций его чтения и записи. Локальная сеть – это сеть, значение которой необходимо хранить на регистре или в памяти в пределах только одного линейного участка (узла) управляющего графа. Глобальная сеть – любая нелокальная сеть. Время жизни глобальной сети – множество дуг и узлов управляющего графа, на которых необходимо хранить значение сети. Давление на регистровый файл – количество сетей, значения которых в данный момент необходимо хранить на регистрах.

Алгоритм распределения регистров при планировании инструкций 1. Подготовка к распределению регистров и планированию инструкций 2. Распределение регистров для глобальных сетей перед планированием инструкций 3. Распределение регистров для локальных сетей одновременно с планированием инструкций

Подготовка к распределению регистров 1. Определение времен жизни глобальных сетей 2. Разделение регистрового файла на две части для глобального и локального распределения для каждого линейного участка. | Глоб. Сети |--- Лок. Сети ---| 3. Подсчет максимального давления локальных сетей на регистровый файл: TU – среднее время планирования последнего чтения сети, TL - среднее время планирования первой записи сети, H – время планирования линейного участка.

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

Глобальное распределение регистров 1. Подсчет приоритетов сетей (стоимость планирования инструкций откачки/подкачки) по формуле: spill_cst - стоимость планирования инструкции откачки, fill_cst – стоимость планирования инструкции подкачки, node_cnt – значение счетчика линейного участка. 2. Распределение глобальных сетей на доступные регистры с помощью битовых матриц 3. Маркировка сетей, которые не удалось распределить на регистры.

Глобальное распределение регистров Приоритет типов архитектурных регистров для глобального распределения: 1. Глобальные регистры являются общими и доступны всем процедурам 2. Базированные регистры заблокированы для использования в циклах с наложением итераций 3. Локальные регистры не имеют ограничений на использование при распределении |--Gs[0-31]--| Bs[0-127] |----Rs[0-63]----|

Локальное распределение регистров при планировании инструкций Планирование инструкции в широкую команду: 1. Поиск доступного исполнительного устройства 2. Поиск регистров для локальных аргументов и локального результата инструкции. Принятие решения об отказе в планировании при высоком давлении на регистровый файл. 3. Приоритет регистров при локальном распределении: |--Gs[0-31]--|----Rs[0-63]----| Bs[0-127] | 4. Создание и планирование на общих основаниях инструкций откачки и подкачки, если они необходимы

Преимущества реализованного алгоритма 1. Уменьшение времени работы за счет отказа от построения графа несовместимости и совмещения схожих функций 2. Сохранение целостности спланированного кода за счет планирования инструкций откачки/подкачки на общих основаниях 3. Точный учет давления на регистры при планировании инструкции

Результаты

1. Для архитектуры Эльбрус в составе оптимизирующего компилятора разработан и реализован алгоритм распределения регистров при планировании инструкций, позволяющий повысить производительность и уменьшить время компиляции программ 2. Проведено комплексное тестирование алгоритма, подтвердившее его эффективность на различных задачах 3. Реализованный алгоритм войдет в следующую версию оптимизирующего компилятора для архитектуры Эльбрус

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