Использование технологии компиляции на этапе исполнения (JIT) для моделирования работы микропроцессоров. Студент 6го курса Ситало Алексей Юрьевич Научный руководитель Гурин Константин Львович
Пошаговый интерпретатор Плюсы: Простота реализации Гибкость (контрольная точка – в любом месте) Минусы: Низкая скорость exec 1exec 2exec N... sim decode fetch
Симулятор с использованием JIT. Плюсы: Высокая скорость Минусы: Сложность реализации
Этапы реализации симулятора с JIT. Кэш откомпилированных блоков Механизм контрольной точки Поддержка самомодифицирующегося кода Оптимизация передачи управления Средства контроля памяти Перенос часто используемых данных на регистры микропроцессора Другие особенности
Постановка задачи Оценить прирост производительности симулятора простейшей микропроцессорной архитектуры после применения технологии компиляции на этапе исполнения.
Цель исследования Определить моделируемую архитектуру и систему команд Создать программные модели: Пошаговый интерпретатор Симулятор на основе jit-компиляции Написать тесты Сравнить результаты тестирования
Архитектура ssim RISC, мнемоника – сокращённая SPARC v8 Команды: арифметико-логические, ld/st, jump, call/ret, int и др. Регистровый файл AX - HX, IP/NIP и др.
Виды программных моделей ssim Пошаговый интерпретатор (sim) Компиляция на этапе исполнения: С помощью байт кода Отсутствует кэш команд (dyngen) Присутствует кэш: hash-table (dyngen-hash) Присутствует кэш: map-tree (dyngen-tree) На основе jit-макросов библиотеки GNU lightning Отсутствует кэш (jit) Присутствует кэш: hash-table (jit-hash) Присутствует кэш: map-tree (jit-tree)
Этапы реализации симулятора с JIT. Кэш откомпилированных блоков Механизм контрольной точки Поддержка самомодифицирующегося кода Оптимизация передачи управления Средства контроля памяти Перенос часто используемых данных на регистры микропроцессора Другие особенности
Реализация кэша блоков В виде хэш-таблицы Блоки хранятся в разреженном массиве Ключ – младшая часть адреса начала блока (ip) Отражает расположение блоков в памяти Древовидно Блоки записываются в массив в порядке их появления Дополнительный ассоциированный массив хранит индексы Отражает логическую структуру программы
Реализация механизма контрольной точки Simulator CPU Reg_file AX BX … NIP MMU MMU_Area hi 16Mb MMU_Area lo 16Мb Контрольная точка (КТ) – возможность сохранения/восстанов ления полного состояния симулятора Реализованы функции dump() и recover() для каждого объекта КТ используется для точной обработки прерываний в JIT- модели
Сложности реализации декодеров simdyngenjitmacros Компиляция исполнительных функций статическиjust in-time, по блокам just in-time, по блокам Внутренний форматпара: адрес, команда Байт-код: список микрокоманд список параметров макросы, подобные по мнемонике RISC- архитектуре ТехнологияРазбор switch – конструкцией, передача управления на статическую функцию 1. Трансляция блока в байт- код 2. Генерация из байт-кода хост-кода Разбор switch- конструкцией, компиляция группой макросов хост- кода Вспомогательные инструменты нетdyngen эмулятора Qemu Библиотека GNU lightning
Тесты Тесты проверки корректности логики Тестирование производительности Перемножение матриц (mm) N = 64, 80…208 Сортировка массива (sort) – «сортировка выбором» Инициализация A, B, C линейной конгруэнтной последовательностью A[n+1]=(a*A[n]+c) mod m N = 1024, 2048…10240 Поиск элементов в упорядоченном массиве (search) – «бинарный поиск» Инициализация A, B, C, приращения A[i+1]-A[i] – линейная конгруэнтная последовательность N = 256, 512…2560
Перемножение матриц (mm)
Сортировка массива (sort)
Поиск элементов в массиве (search)
Оценка прироста производительности
Заключение Проведено исследование эффективности технологии компиляции на этапе исполнения в применении к моделированию микропроцессора: Прирост производительности симулятора от применения jit-компиляции в 2-4 раза (в зависимости от задачи) Библиотека GNU lightning на 20-30% даёт больше прирост производительности, чем byte-code Прирост производительности не зависит от способа кэширования блоков (hash-table / tree-map) Данная технология будет в дальнейшем применяться в проектах ЗАО «МЦСТ»