BT_overview.pptx
- Количество слайдов: 19
Оптимизирующая двоичная трансляция как путь к архитектуре будущего Дмитрий Масленников Андрей Чудновец Сергей Щербинин 1
План 1. 2. 3. 4. 5. 6. 7. Что такое ДТ Применение/типы ДТ Обзор ДТ-проектов Принципиальная схема ДТ Уровни трансляции Отличия/преимущества ДТ от традиционной трансляции ДТ и архитектуры будущего 2
Что такое Двоичная Трансляция (ДТ) o Английское название: Binary Translation o ДТ – это преобразование программы, написанной на языке машинных инструкций • В термины инструкций той же или другой архитектуры • С возможным изменением поведения программы • С возможным применением оптимизаций o Система Двоичной Трансляции (СДТ) помимо ДТ может содержать ряд других специализированных компонент, обусловленных назначением системы x 86 code ДТ СДТ ARM code 3
Применение двоичной трансляции o ДТ может применяться для различных целей в разных областях: • Межплатформенная совместимость • Динамическая оптимизация • Симуляция процессора/платформы • Инструментирование • Виртуализация • Architecture Enabling • • • Виртуализация CPU Самое «продвинутое» применение. Включает черты других областей применения ДТ 4
Типы СДТ для Architecture enabling СДТ уровня приложений (ABTS – Application BT system) Полная СДТ (FBTS – Full BT system) HW HW BIOS-0 FBTS Native BIOS, OS & Libraries ABTS x 86 Applications Native Applications Статическая ДТ x 86 BIOS, OS & Libraries x 86 Applications Динамическая ДТ 5
JIT – это не ДТ o Just-In-Time Compilation (JIT) – это динамическая трансляция из байт-кода в исполняемый код o Различия между ДТ и JIT обуславливаются различием между машинным кодом и байт-кодом Машинный код Отражает особенности работы конкретной архитектуры Байт-код Отражает семантику программы в абстрактных терминах Спроектирован для удобства управления Спроектирован специально для удобства Executable конкретным оборудованием последующей трансляции на различные Byte code архитектуры Динамическая При трансляции на отличные Без проблем транслируется на трансляция архитектуры может возникнуть ряд большинство известных архитектур специфических задач обеспечения JIT совместимости (вплоть до необходимости программной эмуляции аппаратных механизмов) 6
Примеры продуктов с ДТ Система Назначение Тип ДТ Elbrus Lintel Architecture enabling for Elbrus-2000/3 M/3 S Борис X 86 VLIW Бабаян Architecture enabling for Crusoe, Efficion X 86 VLIW Полная, для приложений IA-32 EL (Execution Layer) Запуск x 86 приложений на IPF (Itanium). X 86 VLIW/EPIC Для приложений Intel Houdini Запуск ARM-приложений на Atom. ARM X 86 Для приложений NVidia Project Denver Architecture enabling for Tegra K 1 So. C ARM VLIW Полная Apple Rosetta Запуск Power. PC приложений с переходом на x 86 -процессоры Power. PC X 86 Для приложений Transmeta CMS (Code Morphing Software) Полная 7
Принципиальная схема СДТ o Регион - единица трансляции ДТ o Профильная информация - статистика динамического поведения программы Система Двоичной Трансляции Уровни Оптимизации Таблица Трансляции Адресов Адрес входного кода Адрес Региона ………. Адрес входного кода Адрес Региона Кэш Трансляций Код Региона ……… Код Региона Профильная Информация Агрессивный Оптимизатор ………. Драйвер трансляции Быстрый Транслятор Наборщик регионов Интерпретатор 8
Уровни оптимизации 1. 2. 3. 4. • • • Интерпретатор Чтобы не транслировать «одноразовый» код Начало профилирования Быстрый транслятор Быстрая трансляция – низкое качество кода Трансляция по одной инструкции Продолжение профилирования Промежуточный оптимизатор Трансляция более одной инструкции Простейшие / важнейшие оптимизации Оптимизированное профилирование Агрессивный оптимизатор Профилирование только для событий, которые не должны случаться часто Performance 4 3 2 1 Optimization overhead 9
Отличия от традиционной трансляции v Ограничения, присущие ДТ: 1. Вместо языка высокого уровня – двоичный код (напр. , x 86) o Потеряна языковая информация o Artificial binding 2. Требование совместимости: необходимость обеспечивать точную семантику исходной платформы o В частности, поддержка точных прерываний и множество corner-case для x 86 Меньше возможностей для оптимизаций Программа на языке Int array 1[m], array 2[n]; … array 1[i] = a+b; // store OK … x = array 2[j]; // load Двоичный код *p = c // store … y = *q // load 10
Отличия от традиционной трансляции v Ограничения, присущие ДТ: 1. Вместо языка высокого уровня – двоичный код (напр. , x 86) o Потеряна языковая информация o Artificial binding 2. Требование совместимости: необходимость обеспечивать точную семантику исходной платформы o В частности, поддержка точных прерываний и множество corner-case для x 86 Меньше возможностей для оптимизаций 3. Жёсткие требования к скорости трансляции o Время трансляции входит в общее время исполнения программы 4. Высочайшие требования по надёжности СДТ o Должна быть сравнима с надёжностью HW 11
Преимущества ДТ: знание конкретной целевой архитектуры o Внутри одного семейства может быть много похожих архитектур обладающих небольшими отличиями • Последовательный процесс развития архитектуры (SSE 2… SSE 4) o У каждого процессора есть собственные микроархитектурные особенности • Особенности обработки микрокода • Особенности работы префетчей o Учет конфигурации (частота процессора, размеры кэшей) Source code MMX code Pentium II SSE 3 code Intel Core AVX code Sandy Bridge 12
Преимущества ДТ: знание динамического поведения программы o Профильная информация • Информация о горячих и холодных дугах графа управления программы • Самый важный вид профиля • Позволяет оптимизировать горячие области кода возможно в ущерб более холодным • Значения адресов динамических переходов • Информация о значении конкретных переменных в конкретных местах кода (Value Profiling) o Профиль естественно доступен при динамической трансляции • Получение адекватного профиля при статической компиляции не всегда возможно и требует усилий • Динамическая трансляция может адаптироваться к изменению профиля 13
Преимущества ДТ: отсутствие границ для оптимизации o Единицы трансляции (модули, процедуры) для языкового компилятора блокируют межпроцедурные анализ и оптимизации для • Динамических вызов процедур • Межмодульных вызовов процедур o СДТ самостоятельно разбивает код на единицы трансляции (регионы) • Области беспрепятственной оптимизации совпадают с горячими участками кода Языковой компилятор Модуль A Модуль Б Область оптимизации СДТ Модуль A Модуль Б Область оптимизации 14
Преимущества ДТ: адаптация + право на ошибку o СДТ может адаптироваться к изменению кода/профиля o ДТ может не делать 100% корректный/оптимальный код, если • недоказуемое аналитически предположение позволяет получить более оптимальный код • СДТ и аппаратура позволяют детектировать нарушение предположения и отменять побочные эффекты нарушения for ( … ) Исходный код { a[i++] = b; //store c = *invariant_ptr; //load } Вынос инвариантного чтения памяти из цикла блокируется возможным пересечением с адресами записи Специальный аппаратный контроль обращений в память и поддержка в СДТ позволяет сделать вынос чтения безопасным inv_reg = *invariant_ptr; //load for ( … ) { a[i++] = b; //store +HW check c = inv_reg; } После ДТ 15
Путь к новым архитектурам Время исполнения Узкий код на исполн. Актуальные резервы o Исчерпанныерезервы: производительности: 1. Параллелизм. • Тактовая частота • Современные • Конвейеризация процессоры обнаруживают параллельность в последовательности кода на • Избыточность (неоптимальность) кода лету. Эти возможности сильно ограничены. • ДТ сыграет решающую роль в enabling’е новых высокопараллельных архитектур Алг. широкий x 86 код New x 86 New +ДТ CPU CPU Время исполнения Широкий код на исполн. 16
Путь к новым архитектурам 2. Специализация оборудования • ДТ сможет выбирать оптимальные процессоры/их части для исполнения кода в зависимости от его характеристик: распараллеливаемости, наличия большого кол-ва определённого типа операций, переходов, доступов в память и т. д. CPU x 86 code A СК 1 x 86 code B x 86 code C СК 2 C СК 1 ДТ B СК 3 code 1 CPU СК 2 CPU СК 3 Кристалл 17
• • • Литература James Smith, Ravi Nair. “Virtual Machines : Versatile Platforms for Systems and Processes”, 2005 (book) Richard L. Sites, Anton Chernoff, Matthew B. Kirk, Maurice P. Marks, Scott G. Robinson, “Binary Translation”, 1992 Kristy Andrews, Duane Sand, “Migrating a CISC Computer Family onto RISC via Object Code Translation”, 1992 Cristina Cifuentes, Vishv Malhotra, “Binary Translation: Static, Dynamic, Retargetable? ”, 1996 Leonid Baraz, Tevi Devor, Orna Etzion, Shalom Goldenberg, Alex Skaletsky, Yun Wang, Yigal Zemach, “IA-32 Execution Layer: a two-phase dynamic translator designed to support IA-32 applications on Itanium-based systems”, 2003 Rob Hughes, Transmeta's Crusoe Microprocessor, 2000, web. archive. org/web/20080417010516/http: //www. geek. com/procspec/features/transmeta/cru soe. htm Jon Hannibal Stokes, Crusoe explored, 2000, arstechnica. com/articles/paedia/cpu/crusoe. ars/4 Darrell Boggs, Gary Brown, Nathan Tuck and K. S. Venkatraman, “Denver: NVIDIA’s First 64 -bit ARM Processor”, 2015 www. elbrus. ru/2 -3. htm software. intel. com/en-us/articles/pintool en. wikipedia. org/wiki/Rosetta_%28 software%29 en. wikipedia. org/wiki/Binary_translation 18
BT_overview.pptx