Требования Попека и Голдберга к виртуализации представляют собой набор условий, достаточных для того, чтобы компьютерная архитектура могла эффективно поддерживать виртуализацию системы . Они были представлены Джеральдом Дж. Попеком и Робертом П. Голдбергом в их статье 1974 года «Формальные требования к виртуализируемым архитектурам третьего поколения». [1] Несмотря на то, что требования сформулированы на основе упрощающих предположений, они по-прежнему представляют собой удобный способ определить, поддерживает ли компьютерная архитектура эффективную виртуализацию, и предоставить рекомендации по проектированию виртуализированных компьютерных архитектур.
Системные виртуальные машины способны виртуализировать полный набор аппаратных ресурсов, включая процессор (или процессоры), память и ресурсы хранения, а также периферийные устройства. Монитор виртуальной машины (VMM, также называемый гипервизором ) — это часть программного обеспечения, которая обеспечивает абстракцию виртуальной машины. При анализе среды, созданной VMM, представляют интерес три свойства: [2]
По терминологии Попека и Гольдберга, МВМ должна представлять все три свойства. В терминологии, используемой в справочнике Смита и Наира (2005), обычно предполагается, что VMM удовлетворяют свойствам эквивалентности и управления ресурсами, а те, которые дополнительно соответствуют свойству производительности, называются эффективными VMM . [3]
Попек и Голдберг описывают характеристики, которыми должна обладать архитектура набора команд (ISA) физической машины для запуска VMM, обладающих вышеуказанными свойствами. Их анализ выводит такие характеристики с использованием модели «архитектур третьего поколения» (например, IBM 360, Honeywell 6000, DEC PDP-10), которая, тем не менее, достаточно общая, чтобы ее можно было распространить на современные машины. Эта модель включает в себя процессор, который работает либо в системном, либо в пользовательском режиме и имеет доступ к линейной памяти с единой адресацией. Предполагается, что подмножество набора команд доступно только в системном режиме и что память адресуется относительно регистра перемещения. Ввод-вывод и прерывания не моделируются.
Чтобы вывести свои теоремы виртуализации, которые дают достаточные (но не необходимые) условия виртуализации, Попек и Гольдберг вводят классификацию некоторых инструкций ISA на 3 различные группы:
Тогда основной результат анализа Попека и Гольдберга можно выразить следующим образом.
Теорема 1 . Для любого обычного компьютера третьего поколения может быть создан эффективный VMM, если набор конфиденциальных инструкций для этого компьютера является подмножеством набора привилегированных инструкций.
Интуитивно, теорема утверждает, что для построения VMM достаточно, чтобы все инструкции, которые могут повлиять на правильное функционирование VMM (чувствительные инструкции), всегда перехватывали и передавали управление VMM. Это гарантирует свойство управления ресурсами. Вместо этого непривилегированные инструкции должны выполняться естественным образом (т. е. эффективно). Отсюда также следует наличие свойства эквивалентности.
Эта теорема также предоставляет простой метод реализации VMM, называемый виртуализацией с перехватом и эмуляцией , а в последнее время называемый классической виртуализацией : поскольку все чувствительные инструкции ведут себя хорошо, все, что нужно сделать VMM, — это перехватить и эмулировать каждую из конфиденциальных инструкций. [4] [5]
Связанная с этим проблема заключается в получении достаточных условий для рекурсивной виртуализации, то есть условий, при которых может быть построен VMM, который может работать на своей копии. Попек и Гольдберг представляют следующие (достаточные) условия.
Теорема 2 . Обычный компьютер третьего поколения можно рекурсивно виртуализировать, если:
Некоторые архитектуры, такие как x86 без аппаратной поддержки , не соответствуют этим условиям, поэтому их нельзя виртуализировать классическим способом. Но архитектуры по-прежнему можно полностью виртуализировать (в случае x86 это означает на уровне ЦП и MMU) с помощью различных методов, таких как двоичная трансляция, которая заменяет чувствительные инструкции, не генерирующие ловушки, [4] которые иногда называют критическими инструкциями. Однако эта дополнительная обработка теоретически делает VMM менее эффективным [5] , но аппаратные ловушки также имеют немаловажные потери производительности. [ нужна цитата ] Хорошо настроенная кеширующая система двоичной трансляции может достичь сопоставимой производительности, и это происходит в случае двоичной трансляции x86 по сравнению с аппаратной поддержкой x86 первого поколения, которая просто делала перехватываемыми конфиденциальные инструкции. [6] Фактически это дает теорему с различными условиями достаточности. [ нужна цитата ]
Теорема 3 . Гибридный VMM может быть создан для любой машины третьего поколения, в которой набор чувствительных к пользователю инструкций является подмножеством набора привилегированных инструкций:
Условия виртуализации ISA, выраженные в теореме 1, могут быть смягчены за счет свойства эффективности. VMM для невиртуализируемых ISA (в смысле Попека и Голдберга) обычно создаются.
Виртуализация таких архитектур требует правильной обработки критически важных инструкций , т. е. конфиденциальных, но непривилегированных инструкций. Один из подходов, известный как исправление , использует методы, обычно используемые при динамической перекомпиляции : критические инструкции обнаруживаются во время выполнения и заменяются ловушкой в VMM. Для повышения эффективности процесса внесения исправлений были предложены различные механизмы, такие как кэширование кода эмуляции или аппаратные средства . Другой подход — это паравиртуализация , которая требует модификации ( портирования ) гостевых операционных систем перед запуском в виртуальной среде.
В этом разделе представлены некоторые соответствующие архитектуры и их связь с требованиями виртуализации.
В архитектуре PDP-10 есть несколько конфиденциальных инструкций (изменяющих или запрашивающих режим процессора), но не имеющих привилегий. [7] Эти инструкции сохраняют или восстанавливают коды условий, содержащие биты USER или IOT:
Все конфиденциальные инструкции в System/370 являются привилегированными: это удовлетворяет требованиям виртуализации. [8]
Motorola MC68000 имеет одну непривилегированную конфиденциальную инструкцию:
Эта инструкция чувствительна, поскольку она обеспечивает доступ ко всему регистру состояния, который включает не только коды условий , но также бит пользователя/супервизора, уровень прерывания и управление трассировкой. В большинстве более поздних членов семейства, начиная с MC68010 , инструкция MOVE from SR была сделана привилегированной, а новая инструкция MOVE from CCR была предоставлена, чтобы разрешить доступ только к регистру кода состояния. [9] [10]
Набор инструкций IA-32 процессора Pentium содержит 18 конфиденциальных непривилегированных инструкций. [11] Их можно разделить на две группы:
Внедрение наборов инструкций AMD-V и Intel VT-x в 2005 году позволяет процессорам x86 соответствовать требованиям виртуализации Попека и Голдберга.
Усилия, необходимые для поддержки виртуализации на архитектуре IA-64 , описаны в статье Магенхаймера и Кристиана 2000 года. [12]
«Сверхпривилегированный» режим для архитектуры UltraSPARC был указан в UltraSPARC Architecture 2005 ». [13] Он определяет платформу sun4v [14] , которая представляет собой расширенную версию платформы sun4u , но по-прежнему соответствует спецификации SPARC v9 Level-1 [15] .
Все конфиденциальные инструкции в наборе команд PowerPC являются привилегированными. [16] [17]
Требование эффективности в определении VMM Попека и Голдберга касается только выполнения непривилегированных инструкций, которые должны выполняться изначально. Это то, что отличает VMM от более общего класса программного обеспечения для эмуляции оборудования . К сожалению, даже на архитектуре, соответствующей требованиям Попека и Голдберга, производительность виртуальной машины может существенно отличаться от реального оборудования. Ранние эксперименты, проведенные на System/370 (которая отвечает формальным требованиям теоремы 1), показали, что производительность виртуальной машины в некоторых тестах может составлять всего 21% от производительности собственной машины. Стоимость перехвата и эмуляции привилегированных инструкций в VMM может быть значительной. Это побудило инженеров IBM внедрить ряд аппаратных средств , которые примерно удвоили производительность виртуальных машин System/370. [18] Помощи добавлялись в несколько этапов. В итоге на поздних моделях System/370 было сделано более 100 передач. [19]
Одним из основных движущих факторов разработки аппаратных средств для System/370 была сама виртуальная память. Когда гостем была операционная система, которая сама реализовала виртуальную память, даже непривилегированные инструкции могли выполняться дольше — штраф, налагаемый требованием доступа к таблицам трансляции, не используемым при собственном исполнении (см. Таблицы теневых страниц ). [20]
{{cite book}}
: CS1 maint: location missing publisher (link)