Исследование и оптимизация современных систем моделирования, применяемых для разработки программного обеспечения вычислительных машин тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат наук Юлюгин Евгений Андреевич

  • Юлюгин Евгений Андреевич
  • кандидат науккандидат наук
  • 2019, ФГАОУ ВО «Московский физико-технический институт (национальный исследовательский университет)»
  • Специальность ВАК РФ05.13.11
  • Количество страниц 136
Юлюгин Евгений Андреевич. Исследование и оптимизация современных систем моделирования, применяемых для разработки программного обеспечения вычислительных машин: дис. кандидат наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. ФГАОУ ВО «Московский физико-технический институт (национальный исследовательский университет)». 2019. 136 с.

Оглавление диссертации кандидат наук Юлюгин Евгений Андреевич

2.3.3 Измерения

2.4 Ускорение сценариев, использующих современные векторные инструкции

2.4.1 История развития векторных инструкций архитектуры Intel®

2.4.2 Актуальность функционального моделирования векторных инструкций

2.4.3 Моделирование современных векторных инструкций через инструкции предыдущих поколений

2.4.4 Прямое исполнение векторных инструкций архитектуры Intel

2.5 Использование аппаратной поддержки вложенной виртуализации для ускорения сценариев моделирования гипервизоров

2.5.1 Трудности, вызванные несовпадением хозяйской и гостевой архитектур

2.5.2 Описание разработанного алгоритма

2.5.3 Измерения

2.6 Моделирование технологии контроля целостности потока управления

2.6.1 Невозможность использования режима прямого исполнения

2.6.2 Использование обновлений микрокода для обеспечения прямого исполнения

2.6.3 Измерения

2.7 Выводы по главе

3 Взаимодействие между режимами моделирования

3.1 Достаточные условия построения монитора виртуальных машин при неполном совпадении гостевой и хозяйской архитектуры

3.1.1 Модель вычислительной системы

3.1.2 Монитор виртуальных машин

3.1.3 Достаточные условия построения монитора виртуальных машин

3.1.4 Построение монитора виртуальных машин

3.1.5 Замечания об эффективности

3.2 Моделирование инструкций, нарушающих достаточные условия построения монитора виртуальных машин

3.2.1 Инструкции, нарушающие достаточные условия

3.2.2 Примеры некорректного моделирования в режиме прямого исполнения

3.2.3 Обеспечение корректного моделирования

3.2.4 Измерения

3.2.5 Улучшение производительности при моделировании инструкций сохранения и восстановления состояния XSAVE

3.3 Уменьшение числа переключений между режимами прямого исполнения и программного моделирования

3.3.1 Обзор существующих решений

3.3.2 Разработанное решение

3.3.3 Измерения

3.4 Выводы по главе

Заключение

Список литературы

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Исследование и оптимизация современных систем моделирования, применяемых для разработки программного обеспечения вычислительных машин»

Введение

Проектирование и разработка новых вычислительных систем является сложной задачей, при решении которой разработчики должны учитывать особенности программного обеспечения, которое будет в дальнейшем исполняться на данной аппаратной платформе. Стоимость исправления ошибки, допущенной при разработке, существенно вырастает с каждым следующим этапом проектирования (рис. 1) [1]. Ошибка, обнаруженная на этапе концепции системы, потребует лишь затрат на время работы архитектора, тогда как найденная после выпуска на рынок ошибка может потребовать отзыв всей партии.

Время

Рис. 1: Рост стоимости исправления ошибки в зависимости от этапа разработки

Поэтому широкое распространение получил подход, при котором создание новых вычислительных систем сопровождается построением их компьютерных моделей, способных с заданной точностью демонстрировать поведение исследуемой системы. Данный подход называется программным моделированием (англ. software simulation) или виртуализацией (англ. virtualization) и является важной частью процесса производства современ-

ных вычислительных систем и создания программного обеспечения для них. Виртуализация — выполнение одной или более программ, в том числе базовых системы ввода-вывода (англ. basic input-output system, BIOS) и операционных систем, внутри изолированных друг от друга окружениях. Управляющая программа называется гипервизором (англ. hypervisor) или монитором виртуальных машин (англ. virtual machine monitor) и контролирует доступ приложений, исполняющихся в виртуальной среде, к ресурсам аппаратной системы.

Система, на которой запущен монитор виртуальных машин называется хозяином (англ. host), а моделируемая система, исполнение которой происходит внутри гипервизора — гостем (англ. guest). Программа, имитирующая поведение реальной моделируемой машины и позволяющая гостевому программному обеспечению думать, что оно исполняется на реальной аппаратуре, называется виртуальной машиной (англ. virtual machine).

Подход, получивший название «сдвиг влево» (англ. shift left), предполагает использование программных моделей для того, чтобы начать разработку и отладку программного стека задолго до выпуска аппаратной платформы, тем самым значительно сокращая время, необходимое для выпуска продукта на рынок (рис. 2). Возможность начать разработку и отладку программного обеспечения как можно раньше является особенно актуальной в текущий момент, когда архитектура набора команд процессоров по своей сложности приближается к уровню, присущему программному обеспечению [2].

Время Время

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

Можно выделить три основные задачи, которые обычно необходимо решить при проектировании новой системы:

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

• Изменение существующего программного обеспечения для получения выигрыша в производительности, энергопотреблении и/или защите персональных данных пользователя благодаря использованию функциональности, добавленной в новом оборудовании. Например, использование новой криптографической функциональности.

• Создание нового программного обеспечения, с самого начала использующего новую функциональность. Например, разработка драйвера для нового устройства.

Использование программных моделей также остается актуальным и после выхода аппаратной платформы, так как модель предоставляет множество отсутствующих в аппаратуре возможностей для отладки и исследования программного обеспечения [3]. Виртуальные системы предоставляют новую методологию, в которой реальное оборудование дополняется виртуальной платформой, имитирующей поведение этого оборудования.

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

Важнейшими характеристиками современных моделирующих комплексов являются точность и скорость работы [4]. Использование недостаточно точной модели может показывать бесполезные, не описывающие реальность данные. Тогда как недостаточно быстрая модель не позволяет разработчикам запускать и отлаживать полный программный стек, включающий в себя операционные системы и прикладные приложения. Поэтому актуальной задачей является разработка сбалансированного решения, отвечающего заданным требованиям точности и позволяющего получить результат за приемлемое время.

Цели диссертационной работы

Как указано выше, производительность является одним из важнейших требований, предъявляемых к виртуальной платформе. С точки зрения производительности модели, наиболее критичным устройством является центральный процессор вычислительной системы, так как его состояние меняется наиболее часто. По этой причине целью диссертационного исследования является анализ и улучшение существующих инструментов и алгоритмов моделирования процессора, а также на разработка и внедрение новых технологий, позволяющих достичь быстрого и функционально-корректного моделирования вычислительных систем.

Для достижения поставленных целей в работе выполнены следующие этапы:

1) Изучение существующих методов и подходов к моделированию вычислительных систем.

2) Обзор существующих методов увеличения производительности программных моделей.

3) Анализ технологий аппаратной виртуализации Intel® Virtualization Technology (Intel® VT-x) и AMD* Secure Virtual Machine (ADM* SVM) на применимость для задачи моделирования процессоров архитектуры Intel® 64 с помощью прямого исполнения.

4) Разработка и реализация оптимизаций для отдельных режимов моделирования.

5) Улучшение механизмов взаимодействия между режимами моделирования.

6) Анализ разработанных решений.

Задачей диссертационной работы является обеспечение корректного и быстрого моделирования проектируемых процессоров с помощью существующих вычислительных систем. Фокус данной работы направлен на моделирование одной из наиболее распространенных в текущий момент архитектур — Intel® 64 [5].

В рамках диссертационной работы проводится анализ и увеличение скорости моделирования сценариев, использующих следующие технологии и расширения архитектуры набора команд Intel 64, моделирование которых было необходимо для разработки программного обеспечения на ранних стадиях проектирования и являлось узким местом (англ. bottleneck) производительности:

• инструкции чтения счетчика временных интервалов,

• механизмы виртуальной памяти SMAP и SMEP,

• технологию защитных ключей Intel Protection Keys,

• инструкции поддержки транзакционной памяти Intel® Restricted Transactional Memory (Intel® RTM),

• современные векторные инструкции Intel® Advanced Vector Extensions (Intel® AVX), Intel® Advanced Vector Extensions 2 (Intel® AVX2), FMA (англ. Fused Multiply-Add) и Intel® Advanced Vector Extensions 512 (Intel® AVX-512),

• инструкции сохранения и восстановления регистрового состояния процессора XSAVE,

• расширение Intel VT-x,

• технологию контроля целостности потока управления Intel® Control-flow Enforcement Technology (Intel® CET),

• инструкции LZCNT и TZCNT, нарушающие условия обратной совместимости.

Во время проведения исследования были использованы сценарии программного обеспечения, являющиеся наиболее актуальными для задачи разработки ПО на ранних этапах проектирования вычислительных систем:

• загрузка базовых систем ввода-вывода (англ. basic input-output system, BIOS)

• загрузка UEFI (англ. Unified Extensible Firmware Interface),

• загрузка операционных систем Microsoft* Windows, Linux*, FreeBSD*,

• загрузка гипервизоров: VMware* ESXi, Citrix* Xen, Linux* KVM,

• запуск тестов производительности STAMP,

• запуск тестов производительности SPEC CPU2006.

Исследования проводились на основе полноплатформенного симулятора Wind River Simics® [6] (далее — Simics) используемого компанией Intel и ее партнерами для разработки программного обеспечения на ранних стадиях проектирования вычислительных систем.

Общие принципы решения поставленной задачи основываются на:

1) использовании прямого исполнения — наиболее быстрого способа моделирования центрального процессора,

2) кэшировании промежуточных результатов,

3) уменьшении накладных расходов, вызванных переключением между режимами моделирования.

Результаты, выносимые на защиту

1) Достаточные условия построения монитора виртуальных машин при неполном совпадении гостевой и хозяйской архитектуры,

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

3) комбинированный подход к моделированию сложных расширений набора команд, совмещающий изменения в моделирующем комплексе, инструментах сборки программного обеспечения и микрокоде хозяйского процессора,

4) универсальный подход к моделированию технологий аппаратной поддержки транзакционной памяти, позволяющий минимизировать изменения в модели процессора и сохранить высокую производительность,

5) подход к созданию эффективного двоичного транслятора для современных векторных инструкций, основанный на использовании векторных инструкций предыдущих поколений,

6) алгоритмы прямого исполнения инструкций проектируемых процессоров, основанные на технологии аппаратной поддержки виртуализации, доступной в существующих процессорах,

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

Научная новизна

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

В диссертационной работе впервые были сформулированы и доказаны достаточные условия построения монитора виртуальных машин при неполном совпадении гостевой и хозяйской архитектуры.

Был впервые проведен анализ применимости технологий аппаратной виртуализации Intel® Virtualization Technology (Intel® VT-x) и AMD* Secure Virtual Machine (ADM* SVM) для задачи моделирования будущих процессоров архитектуры Intel® 64 на существующей аппаратуре.

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

Существующие методы и алгоритмы, используемые для решения задачи моделирования одной архитектуры, были адаптированы и впервые применены для задачи моделирования проектируемых процессоров на существующей аппаратуре:

• прямое исполнение инструкций чтения счетчика TSC (англ. Time Stamp Counter),

• прямое исполнение современных векторных инструкций,

• использование более старых векторных команд процессора для создания эффективного двоичного транслятора, моделирующего новые векторные инструкции,

• использование аппаратной поддержки вложенной виртуализации для ускорения сценариев моделирования гипервизоров,

• применение технологии теневых трансляций страниц для моделирования механизмов виртуальной памяти при прямом исполнении,

• использование технологий, направленных на уменьшение количества дорогостоящих переключений между режимами прямого исполнения и программного моделирования.

В рамках диссертационного исследования были разработаны новые методы моделирования проектируемых процессоров с использованием прямого исполнения на существующих процессорах:

• новый метод шаблонного декодирования, позволяющий обеспечить корректность и высокую скорость моделирования инструкций, нарушающих достаточные условия построения монитора виртуальных машин, доказанные в диссертационной работе,

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

Теоретическая и практическая значимость работы

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

Во время проведения работы были изучены существующие подходы к моделированию вычислительных систем. Теоретические исследования, проделанные в рамках данной работы, вошли в состав лекций [1] и лабораторных работ [7] курса «Основы программного моделирования ЭВМ» кафедры радиоэлектроники и прикладной информатики МФТИ (ГУ).

Практическая значимость исследования заключается в разработке методов и алгоритмов увеличения скорости функционального моделирования вычислительных систем.

Разработанные методы и алгоритмы увеличения производительности были внедрены в программный моделирующий комплекс Simics, используемый для разработки и отладки программного стека компанией Intel и ее партнерами.

Личный вклад автора

Все описанные результаты получены самостоятельно автором или при его непосредственном участии. Разделы, описывающие результаты полученные совместно с другими авторами, помечены символом (*). В совместных работах вклад автора в результаты исследования являлся определяющим. Автор принимал активное участие в разработке и тестировании промышленного комплекса виртуальной разработки программного обеспечения вычислительных систем, используемого компанией Intel и ее внешними партнерами.

Апробация результатов работы

Результаты диссертационной работы докладывались на следующих научно-технических конференциях:

1) 56-й научной конференции МФТИ «Актуальные проблемы фундаментальных и прикладных наук в современном информационном обществе», Москва, ноябрь 2013 г. [8];

2) 57-й научной конференции МФТИ с международным участием, посвященной 120-летию со дня рождения П.Л. Капицы, Москва, ноябрь 2014 г. [9, 10];

3) 58-й научной конференции московского физико-технического института (государственного университета), Москва, ноябрь 2015 г. [11, 12];

4) 60-й всероссийской научной конференции московского физико-технического института (государственного университета), Москва, ноябрь 2017 г. [13];

5) 4-й международной конференции «Engineering & Telecommunication — En&T», Москва, ноябрь 2017 г. [14, 15];

6) международной конференции «Design and Verification Conference (DVCon) Europe», Мюнхен, октябрь 2018 г. [16].

Публикации автора по теме диссертации

По теме диссертации опубликованы 14 работ, в том числе три [17, 18, 19] в изданиях, входящих в перечень рецензируемых журналов, рекомендованных ВАК, одна [14] в журнале, индексируемом в базах IEEE и Web of Science, а также два учебно-методических пособия [1, 7].

Объем и структура диссертации

Диссертация изложена на 136 страницах, состоит из введения, трех глав, заключения и списка литературы, используемой автором, включающего 118 наименований. Диссертация содержит 7 таблиц и 60 рисунков.

1. Обзор существующих технологий моделирования

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

В разделе 1.1 приводится принятая классификация современных гипер-визоров.

В разделе 1.2 рассматриваются общие принципы работы существующих технологий программного моделирования: интерпретации и двоичной трансляции.

В разделе 1.3 представлен обзор технологий аппаратной виртуализации, реализованных в различных архитектурах. Приводится теоретическое обоснование возможности прямого исполнения, а также достаточные условия построения монитора виртуальных машин.

В разделе 1.4 приводится обзор паравиртуализации — технологии моделирования, нарушающей условие изоляции виртуальных машин для увеличения производительности.

В разделе 1.5 рассматривается метод моделирования полной системы, который основывается на модели дискретных событий и позволяет совмещать модели исполняющих и периферийных устройств.

В разделе 1.6 представлен обзор функционально-точного полноплатформенного симулятора Wind River Simics, который использовался для проверки созданных в рамках данной работы методов и алгоритмов эффективного моделирования процессоров, основанных на архитектуре Intel 64.

В разделе 1.7 рассматривается комбинированный подход к моделированию процессора, сочетающий в себе технологии интерпретации, двоичной трансляции и прямого исполнения. Изучаются существующие гипервизоры и поддерживаемые ими режимы моделирования.

1.1. Классификация гипервизоров

Существуют два основных типа гипервизоров [1, 20]. Гипервизоры первого рода (англ. bare-metal hypervisor) работают прямо на хозяйской аппаратуре и не требуют операционной системы для своего функционирования (рис. 1.1). Они берут всю функциональность ОС на себя, тем самым позволяя минимизировать накладные расходы, связанные с виртуализацией. Однако на разработку таких гипервизоров приходится тратить дополнительные ресурсы, связанные с реализацией функциональности операционной системы. Примеры таких гипервизоров: VMware* ESX [21], Microsoft* Hyper-V [22], Citrix* XenServer [23].

Приложения ОС 1

ОC 1

Приложения ОС 2

ОC 2

Монитор виртуальных машин Аппаратура

Рис. 1.1: Гипервизор первого рода

Гипервизоры второго рода (англ. hosted hypervisor) не заменяют операционную систему, но работают поверх нее, как обычные пользовательские приложения (рис. 1.2). Зачастую такие гипервизоры требуют загрузки специальных модулей ядра, работающих с повышенным приоритетом. Представителями таких мониторов виртуальных машин являются Oracle* VirtualBox [24], QEMU [25], VMware* Workstation [26], Wind River Simics[27], Linux* KVM [28].

1.2. Программные технологии моделирования процессоров

Интерпретация (англ. interprétation) — режим моделирования, при котором исполнение гостевых инструкций происходит в цикле «считывание инструкции, декодирование, исполнение...» (рис. 1.3) [1]. Чтение машинного кода одной гостевой инструкции происходит по определенному адресу в памяти — указателю на текущую инструкцию (англ. instruction pointer, IP). Затем инструкция декодируется, то есть происходит ее анализ: какое действие она выполняет, где расположены входные операнды (регистры, адреса в памяти, константы), куда нужно поместить результат (регистр, память). После декодирования происходит исполнение с последующим продвижением значения IP на длину исполненной инструкции и повторением цикла интерпретатора с начала.

Интерпретация является базовой техникой для создания виртуального окружения. При этом полная функциональность моделируемого процессора обычно описывается на языках высокого уровня. Виртуальные машины, основанные на интерпретации, являются гибкими и платформо-независи-мыми. То есть с помощью таких моделей можно запускать программное обеспечение, созданное для исполнения на одной аппаратной платформе, на системе с другой архитектурой. Код простейшего переключаемого (англ. switched) интерпретатора, повторяющего по порядку стадии работы процес-

сора, написанный на некотором псевдо-языке программирования, представлен на листинге 1.1.

Листинг 1.1: Псевдо-код переключаемого интерпретатора

while (run) {

raw_code = fetch (IP);

(opcode, operands) = decode (raw_code) ; switch ( opcode) {

case opcode1:

func 1 ( operands ) ; IP++; break;

case opcode2:

func2 ( operands ) ; IP++; break; /* */

}

}

Шитый (англ. threaded) интерпретатор [29, 30] является более быстрым и сложным алгоритмом интерпретации, позволяющим убрать негативное влияние единого switch в теле цикла на аппаратные ресурсы хозяйской системы.

Другим алгоритмом увеличения производительности интерпретации является кэширующий интерпретатор [29, 31], записывающий декодированные инструкции в специальный программный кэш, тем самым убирая необходимость повторного декодирования этих инструкций.

Интерпретация является не только самой простой технологией моделирования с точки зрения разработки, модификации и поиска ошибок, но и самой медленной для виртуализации центрального процессора. Скорость интерпретатора редко достигает 100 MIPS (миллионов гостевых инструкций за секунду).

Симулятор Bochs [31] использует исключительно технологию интерпретации для моделирования процессора. Для увеличения производительности в нем используются только переносимые, архитектурно независимые оптимизации, такие как трассы инструкций и кэширование трансляций виртуальных адресов. Trans ARM-IU [32], также основанный исключительно на технологии интерпретации, моделирует архитектуру Intel IA-32 при исполнении на процессорах архитектуры ARM.

Двоичная трансляция (англ. binary translation) — технология моделирования, при которой гостевой машинный код транслируется (переводится в хозяйский машинный код) один раз, сохраняется, а затем многократно используется при исполнении. Двоичная трансляция избавляется от узкого места интерпретации — основного цикла «считывание, декодирование, исполнение». Единицей трансляции является участок кода, а не одна инструкция, как у интерпретации, что позволяет проводить некоторые опти-

мизации. Таким образом двоичная трансляция может достигать на порядок большей скорости по сравнению с интерпретацией.

Симулятор Zsim [33], в отличие от Bochs, совмещает использование технологий интерпретации и двоичной трансляции для моделирования центрального процессора. Технология двоичной трансляции позволяет эффективно моделировать простые инструкции, сокращая накладные расходы, связанные с декодированием инструкций архитектуры Intel 64.

Данная технология также применяется в переносимых и платформо-независимых языках программирования, таких как Java [34]. Программа, написанная на языке Java, компилируется в специальный байт-код, который в дальнейшем исполняется в виртуальной машине Java (англ. Java Virtual Machine, JVM). Таким образом программа, созданная на языке Java, может быть исполнена на виртуальной машине независимо от хозяйской архитектуры и операционной системы. Технология трансляции байт-кода в машинные инструкции непосредственно в момент исполнения программы получила название JIT-компиляции (англ. Just In Time Compilation).

Двоичная трансляция обладает значительно большими накладными расходами, связанными с трансляцией гостевого кода в хозяйский. Комбинация интерпретации и двоичной трансляции позволяет транслировать только «горячий» — наиболее часто используемый, — гостевой код, тем самым сокращая накладные расходы.

QEMU [25] — симулятор, основное предназначение которого — запускать одну операционную систему на другой. Динамический транслятор QEMU преобразует в режиме реального времени инструкции гостевой архитектуры в хозяйскую. Процесс трансляции состоит из нескольких стадий. Сначала, во время сборки QEMU, каждая гостевая инструкция разбивается на несколько микроопераций, реализованных на языке Си. Затем полученный код компилируется с помощью GCC в объектный файл. Этот объектный файл используется инструментом dyngen для формирования генератора кода. При этом dyngen решает несколько задач: получить таблицу символов из объектного файла, содержащего микрооперации; провести анализ микроопераций на предмет наличия константных параметров. Полученный генератор используется при исполнении гостевого кода для формирования блоков хозяйского кода, объединяющих множество микроопераций.

Трансляция кода продолжается до первой инструкции перехода, образуя базовый блок (англ. basic block), также называемый блоком трансляции (англ. translation block). После исполнения блока трансляции происходит поиск следующего в хэш-таблице. Затем, если он уже оттранслирован, на него совершается переход, иначе запускается его трансляция.

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

Еще одним примером двоичного транслятора являются виртуальные платформы ARM Fast Models [35]. Модели процессоров, входящих в состав Fast Models, используют технологии динамической трансляции ARM кода в хозяйский и кэширования оттранслированных блоков кода, а также множество других оптимизаций, таких как временная развязка (англ. temporal decoupling) [36]. Эти модели позволяют достичь 20-200 MIPS на обычной рабочей станции.

Существует много симуляторов, использующих технологию двоичной трансляции: Open Virtual Platforms* (OVP*) [37], MARSS [38], SimIt [39], ADM SimNow* [40], Rosetta [41], IA32 execution layer [42], DAISY [43], MAMBO-X64 [44], Graphite [45] и др.

1.3. Аппаратная виртуализация

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

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Список литературы диссертационного исследования кандидат наук Юлюгин Евгений Андреевич, 2019 год

Список литературы

[1] Основы программного моделирования ЭВМ: Учебное пособие / Г.С. Речистов, Е.А. Юлюгин, А.А. Иванов и др.—2-е изд., испр. и доп. изд. — Издательство МФТИ, 2013. —ISBN: 978-5-7417-0444-8.

[2] Baumann Andrew. Hardware is the new software // 16th Workshop on Hot Topics in Operating Systems. — 2017. — P. 132-137.

[3] Engblom Jakob. Wind River Simics for Software Development. — 2015.

[4] VMware. A Performance Comparison of Hypervisors. — 2007.

[5] Intel Corporation. — Intel® 64 and IA-32 Architectures Software Developer's Manual. Volumes 1-4, 2018.

[6] Simics: A Full System Simulation Platform / Peter S. Magnusson, Magnus Christensson, Jesper Eskilson et al. // Computer. — 2002. — February.—Vol. 35.—P. 50-58.

[7] Лабораторный практикум по программному моделированию / Е.А. Юлюгин, Г.С. Речистов, Н.Н. Щелкунов, Д.А. Гаврилов. — МФТИ, 2013.

[8] Юлюгин Е.А., Речистов Г.С. О задаче декодирования машинных инструкций в функциональном симуляторе // Труды 56-й научной конференции МФТИ «Актуальные проблемы фундаментальных и прикладных наук в современном информационном обществе», Всероссийской молодежной научно-инновационной конференции «Физико-математические науки: актуальные проблемы и их решения». Радиотехника и кибернетика. — 2013. — С. 76-78.

[9] Юлюгин Е.А. Технология прямого исполнения векторных инструкций архитектуры IA-32 // Труды 57-й научной конференции МФТИ с международным участием, посвященной 120-летию со дня рождения П.Л. Капицы. Радиотехника и кибернетика. — 2014. — С. 30-32.

[10] Юлюгин Е.А. Обеспечение корректной виртуализации современных инструкций архитектуры IA-32 // Труды 57-й научной конференции МФТИ с международным участием, посвященной 120-летию со

дня рождения П.Л. Капицы. Радиотехника и кибернетика. — 2014. — С. 29-30.

[11] Конычев В.В., Юлюгин Е.А., Речистов Г.С. Оптимизация сценариев программного моделирования, использующих команду чтения времени RDTSC // Труды 58-й научной конференции МФТИ «Актуальные проблемы фундаментальных и прикладных наук в современном информационном обществе». — 2015. — URL: http://conf58.mipt.ru/static/ reports_pdf/933.pdf (дата обращения: 2019-01-11).

[12] Кравцов А.А., Речистов Г.С., Юлюгин Е.А. Увеличение производительности режима прямого исполнения в программном симуляторе // Труды 58-й научной конференции МФТИ «Актуальные проблемы фундаментальных и прикладных наук в современном информационном обществе». — 2015. —URL: http://conf58.mipt.ru/static/reports_pdf/ 813.pdf (дата обращения: 2019-01-11).

[13] Юлюгин Е.А., Речистов Г.С. Использование технологии аппаратной поддержки вложенной виртуализации для ускорения сценариев моделирования гипервизоров // Труды 60-й Всероссийской научной конференции МФТИ. Радиотехника и компьютерные технологии. -2017. —С. 13-15.

[14] Yulyugin E.A. Accelerating Simulation of Future Processors with Compiler and Microcode Assist // 2017 IVth International Conference on Engineering and Telecommunication (EnT). — 2017. — P. 111-113.

[15] Yulyugin E.A. Direct execution technique aimed to improve performance of software simulation workloads frequently accessing time stamp counter //IV International Conference «Engineering & Telecommunication - En&T 2017». Book of Abstracts. — 2017. — P. 208-210.

[16] Yulyugin Evgeny. Same bits, different meaning — when direct execution based simulation becomes complicated // Design and Verification Conference (DVCon) Europe 2018. — 2018. — URL: http://events.dvcon.org/ Europe/2018/proceedings/papers/09_1.pdf (online; accessed: 2019-01-27).

[17] Юлюгин Е.А., Речистов Г.С. Моделирование инструкций поддержки транзакционной памяти в современных центральных процессорах // Прикладная Информатика. — 2014. — № 5(53). — С. 16-24.

[18] Юлюгин Е.А. Реализация технологии прямого исполнения обращений к счетчику TSC в программном симуляторе // Труды МФТИ. -2017. —Т. 9, № 4(36). —С. 215-223.

[19] Юлюгин Е.А. Корректное и быстрое исполнение отдельных инструкций архитектуры Intel® 64 в виртуальном окружении // Информационные технологии. —2019. —Т. 25, № 3. —С. 157-164.

[20] VMware. Virtualization Overview. — 2006.

[21] VMware. VMware ESXi: The Purpose-Built Bare Metal Hypervisor. — 2018.

[22] Tulloch Mitch. Understanding Microsoft Virtualization Solutions / Microsoft.— 2 edition. — Microsoft Press, 2010.

[23] Xen and the Art of Virtualization / Paul Barham, Boris Dragovic, Keir Fraser et al. // Proceedings of the Nineteenth ACM Symposium on Operating Systems Principles. — ACM, 2003. — P. 164-177.

[24] Oracle Corporation. — Oracle VM VirtualBox® User Manual, 2019. — URL: https://www.virtualbox.org/manual/UserManual.html (online; accessed: 2019-01-26).

[25] Bellard Fabrice. QEMU, a Fast and Portable Dynamic Translator // FREENIX Track: 2005 USENIX Annual Technical Conference. — 2005.

[26] Bringing Virtualization to the x86 Architecture with the Original VMware Workstation / Edouard Bugnion, Scott Devine, Mendel Rosenblum et al. // ACM Trans. Comput. Syst. — 2012.—Vol. 30, no. 4. —P. 1-51.

[27] Aarno Daniel, Engblom Jakob. Software and System Development using Virtual Platforms, 1st Edition. — Elsevier, 2014. — ISBN: 9780128008133.

[28] KVM wiki. — 2018.—URL: http://www.linux-kvm.org/page/Main_Page (online; accessed: 2018-11-08).

[29] Изучение производительности приложений на вычислительных кластерах с помощью компьютерного моделирования. Методология и руководство к применению / Г.С. Речистов, Д.А. Гаврилов, А.А. Иванов и др. — Спутник+, 2012. —ISBN: 978-5-9973-2215-1.

[30] SimGen: Development of Efficient Instruction Set Simulators : Rep. / SICS ; Executor: Fredrik Larsson, Peter Magnusson, Bengt Werner : 1997. —SICS technical Report R97:03.

[31] Mihocka Darek, Shwartsman Stanislav. Virtualization Without Direct Execution or Jitting: Designing a Portable Virtual Machine Infrastructure // ISCA-35 Proceedings of the 1st Workshop on Architectural and Microarchitectural Support for Binary Translation. — 2008.

[32] Chen Wei, Wang Zhiying, Chen Dan. An Emulator for Executing IA-32 Applications on ARM-Based Systems // Journal of Computers. — 2010. —07. —Vol. 5. —P. 1133-1141.

[33] Zsim: A Fast Architectural Simulator for ISA Design-Space Exploration / Yair Lifshitz, Robert Cohn, Inbal Livni et al. // 3rd Workshop on Infrastructures for Software/Hardware Co-Design. — WISH-3. — Chamonix, France, 2011. — April.

[34] Oracle Corporation. Java Software. — 2018. — URL: https://www.omde. com/java/index.html (online; accessed: 2018-11-08).

[35] ARM. —Fast Models. Version 11.5. User Guide, 2018.

[36] Engblom Jakob. Temporal Decoupling - Are "Fast" and "Correct" Mutually Exclusive? // DVCon Europe 2018. —2018.

[37] Imperas. Open Virtual Platforms. — 2018.—URL: http://www.ovpworld. org/welcome (online; accessed: 2019-01-25).

[38] MARSS: a full system simulator for multicore x86 CPUs / Avadh Patel, Furat Afram, Shunfei Chen, Kanad Ghose // Proceedings of the 48th Design Automation Conference, DAC. — 2011. — 06. — P. 1050-1055.

[39] Qin Wei, D'Errico Joseph, Zhu Xinping. A multiprocessing approach to accelerate retargetable and portable dynamic-compiled instruction-set simulation // Proceedings of the 4th international conference on Hardware/software codesign and system synthesis. — 2006. — 11. — P. 193-198.

[40] AMD.—AMD SimNow™ Simulator. User's Manual, 2010.

[41] Singh Amit. Mac OS X Internals: A Systems Approach. — Addison Wesley, 2001. —ISBN: 978-0-321-27854-8.

[42] IA-32 execution layer: a two-phase dynamic translator designed to support IA-32 applications on Itanium/spl reg/-based systems / L. Baraz, T. Devor, O. Etzion et al. // Proceedings. 36th Annual IEEE/ACM International Symposium on Microarchitecture, 2003. MICRO-36. — 2003. — Dec. —P. 191-201.

[43] Ebcioglu Kemal, Altman Erik R. DAISY: Dynamic Compilation for 100% Architectural Compatibility // Proceedings of International Symposium on Computer Architecture, ISCA'97. — 1997.

[44] Optimizing Indirect Branches in Dynamic Binary Translators / Amanieu d'Antras, Cosmin Gorgovan, Jim Garside, Mikel Lujan // ACM Trans. Archit. Code Optim.— 2016.— Apr.—Vol. 13. —P. 1-25.

[45] Graphite: A distributed parallel simulator for multicores / J. E. Miller, H. Kasture, G. Kurian et al. // HPCA - 16 2010 The Sixteenth International Symposium on High-Performance Computer Architecture. — 2010. —P. 1-12.

[46] Popek G. J., Goldberg R. P. Formal Requirements for Virtualizable Third Generation Architectures // Communications of the ACM. —1974.

[47] Intel® Virtualization Technology / F. Leung, G. Neiger, D. Rodgers et al. // Intel Technology Journal. — 2006. — August.—Vol. 10.

[48] AMD Corporation. — AMD64 Architecture Programmer's Manual Volume 2: System Programming, 2013.

[49] Adams Keith, Agesen Ole. A Comparison of Software and Hardware Techniques for x86 Virtualization // ASPLOS. — 2006. — October.

[50] Full Speed Ahead: Detailed Architectural Simulation at Near-Native Speed / Andreas Sandberg, Nikos Nikoleris, Trevor E. Carlson et al. // 2015 IEEE International Symposium on Workload Characterization. — 2015. —P. 183-192.

[51] Parallels Software International, Inc. — Parallels® Workstation User Guide, 2008.

[52] Devine Scott W., Bugnion Edouard, Rosenblum Mendel. Virtualization system including a virtual machine monitor for a computer with a segmented architecture. — 2002. — May. — URL: http://www.google.com/ patents/US6397242.

[53] The Turtles Project: Design and Implementation of Nested Virtualization / Muli Ben-Yehuda, Michael D. Day, Zvi Dubitzky et al. // Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation. — 2010. — P. 423-436.

[54] Software Techniques for Avoiding Hardware Virtualization Exits / Ole Agesen, Jim Mattson, Radu Rugina, Jeffrey Sheldon // Presented as part of the 2012 USENIX Annual Technical Conference (USENIX ATC 12). —Boston, MA : USENIX, 2012. —P. 373-385.

[55] John Goodacre. Hardware accelerated Virtualization in the ARM Cortex Processors. — 2011.

[56] MIPS Technologies. Hardware-assisted Virtualization with the MIPS® Virtualization Module. — 2012.

[57] Sun microsystems. UltraSPARC Virtual Machine Specification. — 2008.

[58] Virtio. — 2013. — URL: https://wiki.libvirt.org/page/Virtio (online; accessed: 2018-08-27).

[59] Magenheimer Dan. TSC_MODE HOW-TO. — 2018. — URL: http:// xenbits.xen.org/docs/4.3-testing/misc/tscmode.txt (online; accessed: 201901-26).

[60] Bugnion Edouard, Devine Scott, Rosenblum Mendel. Disco: Running Commodity Operating Systems on Scalable Multiprocessors // Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles.—ACM, 1997. —P. 143-156.

[61] Albrecht M. C. (Mike). Introduction to Discrete Event Simulation. — 2010. — URL: http://www.albrechts.com/mike/DES/Introduction%20to% 20DES.pdf (online; accessed: 2019-01-27).

[62] Wind River. Simics Hindsight Guide 4.8. — 2015. — May.

[63] Wind River. Simics Getting Started Guide 4.8. — 2015. — May.

[64] Chernoff Anton, Hookway Ray. DIGITAL FX!32: Running 32-Bit x86 Applications on Alpha NT // Proceedings of the USENIX Windows NT Workshop. — Seattle, Washington, 1997.

[65] Hookway Raymond J., Herdeg Mark A. DIGITAL FX!32: Combining Emulation and Binary Translation // Digital Technical Journal. — 1997. — P. 3-12.

[66] Alpha Architecture Book / Compaq Computer Corporation. —1998.

[67] Complete Computer System Simulation: The SimOS Approach / Mendel Rosenblum, S.A. Herrod, Emmett Witchel, Anoop Gupta // Parallel & Distributed Technology: Systems & Applications, IEEE. — 1995. — 02.—Vol. 3.—P. 34 - 43.

[68] Using the SimOS Machine Simulator to Study Complex Computer Systems / Mendel Rosenblum, Edouard Bugnion, Scott Devine, Stephen A. Herrod // ACM Trans. Model. Comput. Simul. — 1997. — Jan.—Vol. 7, no. 1. —P. 78-103.

[69] Silicon Graphics Inc. — Deskside POWER CHALLENGE™ and HALLENGE® L Owner's Guide, 1994.

[70] Witchel Emmett, Rosenblum Mendel. Embra: Fast and Flexible Machine Simulation // Proceedings of the 1996 ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems. — SIG-METRICS '96. —New York, NY, USA : ACM, 1996. —P. 68-79.

[71] Carlone Ralf V. Patriot Missile Deffence. Software Problem Led to System Failure at Dhahran, Saudi Arabia. — 1992. — February.

[72] A.S. Tanenbaum, H. Bos. Modern Operating Systems 4th Edition. — 2014. —March. —P. 1137.—ISBN: 978-0133591620.

[73] Amsden Zachart. Timekeeping Virtualization for X86-Based Architectures. — 2010. — URL: https://www.kernel.org/doc/Documentation/ virtual/kvm/timekeeping.txt (online; accessed: 2019-01-27).

[74] Intel Corporation. — Intel 8254 Programmable Interval Timer, 1993.— September.

[75] Motorola. — Motorola® Real-Time Clock Plus Ram (RTC), 1984.

[76] Intel Corporation. — Intel® 82093AA I/O Advances Programmable Interrupt Controller (IOAPIC), 1996.

[77] Intel Corporation. — IA-PC HPET (High Precision Event Timers) Specification, 2004.

[78] Intel Corporation. — Intel® Turbo Boost Technology in Intel® Core™ Microarchitecture (Nehalem) Based Processors, 2008.

[79] Enumeration Common Weakness. CWE-476: NULL Pointer Dereference. —2018. —URL: http://cwe.mitre.org/data/definitions/476.html (online; accessed: 2018-11-08).

[80] Rechistov Grigory, Plotkin Arnold. Implementation of Intel Restricted Transactional Memory ISA Extension in Simics // Procedia Computer Science. —2013.—Vol. 18, no. 0. —P. 1804 - 1813.

[81] Herlihy Maurice, Moss J. Eliot B. Transactional memory: architectural support for lock-free data structures // Proceedings of the 20th annual international symposium on computer architecture. — ISCA '93. — New York, NY, USA : ACM, 1993. —P. 289-300.

[82] Evaluation of Blue Gene/Q Hardware Support for Transactional Memories / Amy Wang, Matthew Gaudet, Peng Wu et al. // Proceedings of the 21st International Conference on Parallel Architectures and Compilation Techniques. — PACT '12.— 2012.— P. 127-136.

[83] Jacobi Christian, Slegel Timothy, Greiner Dan. Transactional Memory Architecture and Implementation for IBM System Z // Proceedings of the 2012 45th Annual IEEE/ACM International Symposium on Microarchitecture. — 2012. — 12.—P. 25-36.

[84] ASF: AMD64 Extension for Lock-free Data Structures and Transactional Memory / Jaewoong Chung, Stephan Diestelhorst, Martin Pohlack et al. // Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture. — 2010.

[85] Moir Mark, Moore Kevin, Nussbaum Dan. The adaptive transactional memory test platform: a tool for experimenting with transactional code for ROCK (poster) // Proceedings of the twentieth annual symposium on Parallelism in algorithms and architectures. — SPAA '08. — New York, NY, USA : ACM, 2008. —P. 362-362.

[86] Software Transactional Memory for Dynamic-sized Data Structures / Maurice Herlihy, Victor Luchangco, Mark Moir, William N. Scherer, III // Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing. — PODC '03. — New York, NY, USA : ACM, 2003. —P. 92-101.

[87] Dice Dave, Shalev Ori, Shavit Nir. Transactional Locking II // Proceedings of the 20th International Conference on Distributed Computing. — DISC'06. —Berlin, Heidelberg : Springer-Verlag, 2006. —P. 194-208.

[88] Multifacet's general execution-driven multiprocessor simulator (GEMS) toolset / Milo M. K. Martin, Daniel J. Sorin, Bradford M. Beckmann et al. // SIGARCH Comput. Archit. News. — 2005. — Nov. — Vol. 33, no. 4. —P. 92-99.

[89] Efficient Transaction Nesting in Hardware Transactional Memory / Yi Liu, Yangming Su, Cui Zhang et al. // Architecture of Computing Systems -ARCS 2010. — Berlin, Heidelberg : Springer Berlin Heidelberg, 2010. — P. 138-149.

[90] Moore Kevin E. LogTM: Log-Based Transactional Memory // In Proceedings of the Twelfth IEEE Symposium on High-Performance Computer Architecture. — 2006. — P. 258-269.

[91] Implementing AMD's Advanced Synchronization Facility in an out-of-order x86 core / Stephan Diestelhorst, Martin Pohlack, Michael Hohmuth et al. // 5th ACMSIGPLAN Workshop on Transactional Computing. — 2010.

[92] Intel® Software Development Emulator. — 2012. — URL: https:// software.intel.com/en-us/articles/intel- software- development- emulator (online; accessed: 2019-01-25).

[93] Drepper Ulrich. What Every Programmer Should Know About Memory. — 2007.

[94] Kleen Andi. Adding lock elision to Linux. — 2012. — August. — URL: http://www.linuxplumbersconf.org/2012/wp-content/uploads/2012/08/ Adding-lock-elision-to-Linux.pdf (online; accessed: 2019-01-27).

[95] STAMP: Stanford Transactional Applications for Multi-processing / C. Cao Minh, J. Chung, C. Kozyrakis, K. Olukotun //In IISWC '08: Proceedings of The IEEE International Symposium on Workload Characterization. — 2008. — September.

[96] Efficient transaction nesting in hardware transactional memory / Yi Liu, Yangming Su, Cui Zhang et al. // Proceedings of the 23rd international conference on Architecture of Computing Systems. — ARCS'10. — Berlin, Heidelberg : Springer-Verlag, 2010.—P. 138-149.

[97] Intel Corporation. —Intel® Architecture Instruction Set Extensions Programming Reference, 2018.

[98] Шишпор П.Л. Использование инструкций векторной обработки данных (SSE) для увеличения быстродействия эмуляции в полноплатформенном симуляторе SoftSDV : Выпускная квалификационная работа / П.Л. Шишпор ; Московский физико-технический институт (государственный университет). — Москва, 2009. —Июнь. — С. 25.

[99] SoftSDV: A Presilicon Software Development Environment for the IA-64 Architecture / Richard Uhlig, Roman Fishtein, Oren Gershon et al. // Intel Technology Journal. — 1999. — November. — no. 14. — P. 112-126.

[100] SPEC's Benchmarks and Published Results. — 2018. — URL: http://www. spec.org/benchmarks.html (online; accessed: 2019-01-27).

[101] Intel® Corporation. — Control-flow Enforcement Technology Preview, 2017.

[102] Control-flow Integrity Principles, Implementations, and Applications / Martin Abadi, Mihai Budiu, Ulfar Erlingsson, Jay Ligatti // ACM Trans. Inf. Syst. Secur. —2009.—Nov.—Vol. 13. —P. 1-40.

[103] Ramilli M., Prandini M. Return-Oriented Programming // IEEE Security & Privacy. —2012. —11.—Vol. 10. —P. 84-87.

[104] Yao F., Chen J., Venkataramani G. JOP-alarm: Detecting jump-oriented programming-based anomalies in applications // IEEE 31st International Conference on Computer Design (ICCD). — 2013. — P. 467-470.

[105] Gwennap Linley. P6 Microcode Can Be Patched // Microprocessor Report. —1997.—P. 1-2.

[106] Ашейчик К.В., Речистов Г.С. Реализация поддержки механизма элизии для транзакционной памяти в функциональном симуляторе // Труды 56-й научной конференции МФТИ «Актуальные проблемы фундаментальных и прикладных наук в современном информационном обществе», Всероссийской молодежной научно-инновационной конференции «Физико-математические науки: актуальные проблемы и их решения», —Т. 01, —2013, —С. 82-84.

107

108

109

110

111

112

113

114

115

116

117

IBM. —IBM System/360 Model 67. Functional Characteristics, 1972.

AMD. — Software Optimization Guide for AMD Family 10h and 12h Processors, 2011.

Bonzini Paolo. x86: emit tzcnt unconditionally. — 2012.—URL: https:// gcc.gnu.org/ml/gcc-patches/2012-04/msg01765.html (online; accessed: 201901-27).

GNU Binutils. — 2018. — URL: https://www.gnu.org/software/binutils/ (online; accessed: 2018-08-29).

metasm. — 2011.—URL: http://metasm.cr0.org/ (online; accessed: 201808-29).

beaengine. — 2016. —URL: https://github.com/BeaEngine/beaengine (online; accessed: 2018-08-29).

distorm. — 2017.—URL: https://github.com/gdabah/distorm (online; accessed: 2018-08-29).

Sepp Alexander, Kranz Julian, Simon Alex. GDSL: A Generic Decoder Specification Language for Interpreting Machine Language // Electronic Notes in Theoretical Computer Science. — 2012.

N. Ramsey, F. Fernandez M. Specifying Representations of Machine Instructions // Transactions of Programming Languages and Systems. — 1997.—Vol. 19, no. 3.

Rahman Rezaur. Intel® Xeon Phi™ Coprecessor Atchitecture and Tools The Guide for Application Develipers / Intel Corporation. — ApressOpen, 2013. —ISBN: 978-1-4302-5926-8.

Yulyugin Evgeny. vmlatency. — 2018. — URL: https://github.com/ yulyugin/vmlatency (online; accessed: 2018-08-30).

Academic Simics. — 2010. — URL: http://blogs.windriver.com/engblom/ 2010/07/academic-simics.html (online; accessed: 2018-12-14).

Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.