180 likes | 347 Views
Использование технологии компиляции на этапе исполнения (JIT) для моделирования работы микропроцессоров. Студент 6го курса Ситало Алексей Юрьевич Научный руководитель Гурин Константин Львович. sim. fetch. decode. exec 1. exec 2. exec N. Пошаговый интерпретатор. Плюсы:
E N D
Использование технологии компиляции на этапе исполнения (JIT) для моделирования работы микропроцессоров. Студент 6го курса Ситало Алексей Юрьевич Научный руководитель Гурин Константин Львович
sim fetch decode exec 1 exec 2 . . . exec N Пошаговый интерпретатор Плюсы: • Простота реализации • Гибкость (контрольная точка – в любом месте) Минусы: • Низкая скорость
Симулятор с использованием 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-модели Реализация механизма контрольной точки
Тесты • Тесты проверки корректности логики • Тестирование производительности • Перемножение матриц (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
Оценка прироста производительности
Заключение Проведено исследование эффективности технологии компиляции на этапе исполнения в применении к моделированию микропроцессора: • Прирост производительности симулятора от применения jit-компиляции в 2-4 раза (в зависимости от задачи) • Библиотека GNU lightning на 20-30% даёт больше прирост производительности, чем byte-code • Прирост производительности не зависит от способа кэширования блоков (hash-table/tree-map) Данная технология будет в дальнейшем применяться в проектах ЗАО «МЦСТ»