Требования к виртуализации Попека и Голдберга - Popek and Goldberg virtualization requirements

Требования Попека и Голдберга к виртуализации - это набор условий, достаточных для того, чтобы компьютерная архитектура могла эффективно поддерживать виртуализацию системы . Они были представлены Джеральдом Дж. Попеком и Робертом П. Голдбергом в их статье 1974 г. «Формальные требования для виртуализируемых архитектур третьего поколения». Несмотря на то, что требования основаны на упрощающих предположениях, они по-прежнему представляют собой удобный способ определения того, поддерживает ли компьютерная архитектура эффективную виртуализацию, и предоставляют руководящие принципы для проектирования виртуализированных компьютерных архитектур.

Определение VMM

Системные виртуальные машины способны виртуализировать полный набор аппаратных ресурсов, включая процессор (или процессоры), память и ресурсы хранения, а также периферийные устройства. Монитор виртуальных машин (VMM, также называемый гипервизором ) является частью программного обеспечения , которое обеспечивает абстракцию виртуальной машины. При анализе среды, созданной VMM, есть три интересных свойства:

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

По терминологии Попека и Голдберга, VMM должен представлять все три свойства. В терминологии, используемой в справочнике Smith and Nair (2005), обычно предполагается, что VMM удовлетворяют свойствам эквивалентности и управления ресурсами, а те, которые дополнительно соответствуют свойству производительности, называются эффективными VMM .

Попек и Голдберг описывают характеристики, которыми должна обладать архитектура набора команд (ISA) физической машины для запуска VMM, обладающих вышеуказанными свойствами. Их анализ выводит такие характеристики с использованием модели «архитектур третьего поколения» (например, IBM 360, Honeywell 6000, DEC PDP-10), которая, тем не менее, является достаточно общей, чтобы ее можно было распространить на современные машины. Эта модель включает в себя процессор, который работает в системном или пользовательском режиме и имеет доступ к линейной памяти с равномерной адресацией. Предполагается, что подмножество набора команд доступно только в системном режиме и что память адресуется относительно регистра перемещения. Ввод / вывод и прерывания не моделируются.

Теоремы виртуализации

Чтобы вывести свои теоремы виртуализации, которые дают достаточные (но не необходимые) условия для виртуализации, Попек и Голдберг вводят классификацию некоторых инструкций ISA на 3 разные группы:

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

Тогда основной результат анализа Попека и Голдберга можно выразить следующим образом.

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

Интуитивно теорема утверждает, что для построения VMM достаточно, чтобы все инструкции, которые могут повлиять на правильное функционирование VMM (конфиденциальные инструкции), всегда перехватывали и передавали управление VMM. Это гарантирует свойство управления ресурсами. Вместо этого непривилегированные инструкции должны выполняться изначально (т. Е. Эффективно). Также следует сохранение свойства эквивалентности.

Эта теорема также предоставляет простой метод для реализации VMM, называемый виртуализацией с ловушкой и эмуляцией , которую в последнее время называют классической виртуализацией : поскольку все чувствительные инструкции хорошо себя ведут, все, что нужно делать VMM, - это перехватывать и эмулировать их каждый раз.

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

Теорема 2 . Обычный компьютер третьего поколения можно рекурсивно виртуализировать, если:

  1. это виртуализуемый и
  2. для него можно построить VMM без каких-либо временных зависимостей.

Некоторые архитектуры, такие как x86 без аппаратной поддержки , не соответствуют этим условиям, поэтому их нельзя виртуализировать классическим способом. Но архитектуры все еще могут быть полностью виртуализированы (в случае x86, что означает на уровне ЦП и MMU) с помощью различных методов, таких как двоичная трансляция, которая заменяет чувствительные инструкции, не генерирующие ловушек, которые иногда называют критическими инструкциями. Эта дополнительная обработка, однако, делает VMM менее эффективным в теории, но аппаратные ловушки также имеют значительную потерю производительности. Хорошо настроенная система кэширующей двоичной трансляции может обеспечить сравнимую производительность, и это происходит в случае двоичной трансляции x86 по сравнению с аппаратной поддержкой x86 первого поколения, которая просто делала конфиденциальные инструкции доступными. Фактически это дает теорему с различными условиями достаточности.

Теорема 3 . Гибрид МВМ может быть сконструирован для любой машины третьего поколения , в которой множество чувствительных пользовательских инструкций являются подмножеством множества привилегированных инструкций:

Обработка важных инструкций

Условия виртуализации ISA, выраженные в теореме 1, могут быть ослаблены за счет свойства эффективности. VMM для невиртуализируемых ISA (в понимании Попека и Голдберга) создавались регулярно.

Виртуализация таких архитектур требует правильной обработки критических инструкций , т. Е. Чувствительных, но непривилегированных инструкций. Один подход, известный как исправление , использует методы, обычно используемые при динамической перекомпиляции : критические инструкции обнаруживаются во время выполнения и заменяются ловушкой в ​​VMM. Для повышения эффективности процесса исправления были предложены различные механизмы, такие как кэширование кода эмуляции или аппаратные средства поддержки . Другой подход - это паравиртуализация , которая требует, чтобы гостевые операционные системы были изменены ( портированы ) перед запуском в виртуальной среде.

Наборы инструкций распространенных архитектур

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

PDP-10

В архитектуре PDP-10 есть несколько инструкций, которые являются чувствительными (изменяют или запрашивают режим процессора), но не являются привилегированными. Эти инструкции сохраняют или восстанавливают коды условий, содержащие биты USER или IOT:

  • JSR: перейти к подпрограмме
  • JSP: переход и сохранение счетчика программ
  • PUSHJ: толкайся и прыгай
  • JRST: прыгай и восстанавливайся

Система / 370

Все конфиденциальные инструкции в System / 370 являются привилегированными: это удовлетворяет требованиям виртуализации.

Motorola MC68000

Motorola MC68000 имеет один непривилегированные чувствительные инструкции:

  • ПЕРЕМЕЩЕНИЕ из SR

Эта инструкция является чувствительной, поскольку она позволяет получить доступ ко всему регистру состояния, который включает не только коды условий, но также бит пользователя / супервизора, уровень прерывания и управление трассировкой. В большинстве более поздних членов семейства, начиная с MC68010 , инструкция MOVE from SR была сделана привилегированной, и была предоставлена ​​новая инструкция MOVE from CCR, чтобы разрешить доступ только к регистру кода условия.

IA-32 (x86)

Набор инструкций IA-32 процессора Pentium содержит 18 чувствительных непривилегированных инструкций. Их можно разделить на две группы:

  • Инструкции для чувствительных регистров: чтение или изменение чувствительных регистров или участков памяти, таких как регистр часов или регистры прерывания:
    • SGDT, SIDT, SLDT
    • SMSW
    • ПУШФ, ПОПФ
  • Инструкции системы защиты: ссылка на систему защиты хранилища, память или систему перемещения адресов:
    • LAR, LSL, VERR, VERW
    • Поп
    • ТОЛКАТЬ
    • ЗВОНИТЬ ДАЛЬНО, JMP ДАЛЬНЕЙШИЙ, ВНУТРЕННИЙ n, RETF
    • STR
    • MOV (сегментные регистры)

Введение в 2005 году наборов инструкций AMD-V и Intel VT-x позволяет процессорам x86 соответствовать требованиям виртуализации Popek и Goldberg.

IA-64

Усилия, необходимые для поддержки виртуализации в архитектуре IA-64, описаны в статье 2000 года Магенхаймера и Кристиана.

SPARC

«Гиперпривилегированный» режим для архитектуры UltraSPARC был определен в UltraSPARC Architecture 2005 » . Он определяет платформу sun4v, которая является надстройкой платформы sun4u , но по-прежнему соответствует спецификации SPARC v9 Level-1.

PowerPC

Все конфиденциальные инструкции в наборе команд PowerPC являются привилегированными.

Производительность на практике

Требование эффективности в определении VMM, данное Попеком и Голдбергом, касается только выполнения непривилегированных инструкций, которые должны выполняться изначально. Это то, что отличает VMM от более общего класса программного обеспечения для эмуляции оборудования . К сожалению, даже в архитектуре, отвечающей требованиям Попека и Голдберга, производительность виртуальной машины может значительно отличаться от реального оборудования. Ранние эксперименты, проведенные на System / 370 (которая соответствует формальным требованиям теоремы 1), показали, что производительность виртуальной машины может составлять всего 21% от собственной машины в некоторых тестах. Стоимость перехвата и эмуляции привилегированных инструкций в VMM может быть значительной. Это побудило инженеров IBM внедрить ряд вспомогательных аппаратных средств , которые примерно вдвое увеличили производительность виртуальных машин System / 370. Голевые передачи добавлялись в несколько этапов. В итоге на последних моделях System / 370 было сделано более 100 передач.

Одним из основных факторов развития аппаратных ассистентов для System / 370 была сама виртуальная память. Когда в качестве гостя использовалась операционная система, которая сама реализовывала виртуальную память, даже непривилегированные инструкции могли испытывать более длительное время выполнения - штраф, налагаемый требованием доступа к таблицам трансляции, не используемым в собственном исполнении (см. Таблицы теневых страниц ).

Рекомендации

Примечания