Введение
Возможности компьютерной архитектуры
Требования Попека и Голдберга к виртуализации — это набор условий, достаточных для эффективной поддержки виртуализации системы компьютерной архитектурой. Они были представлены Джеральдом Дж. Попеком и Робертом П. Голдбергом в их статье 1974 года «Формальные требования к виртуализируемым архитектурам третьего поколения». Несмотря на то, что эти требования выведены на основе упрощающих предположений, они по-прежнему служат удобным способом определения возможности эффективной виртуализации компьютерной архитектурой и предоставляют рекомендации по проектированию виртуализированных компьютерных архитектур.
The Popek and Goldberg virtualization requirements are a set of conditions sufficient for a computer architecture to support system virtualization efficiently. They were introduced by Gerald J. Popek and Robert P. Goldberg in their 1974 article "Formal Requirements for Virtualizable Third Generation Architectures". Even though the requirements are derived under simplifying assumptions, they still represent a convenient way of determining whether a computer architecture supports efficient virtualization and provide guidelines for the design of virtualized computer architectures.
Определение VMM
Системы виртуальных машин способны виртуализировать полный набор аппаратных ресурсов, включая процессор (или процессоры), ресурсы памяти и хранения, а также периферийные устройства. Монитор виртуальной машины (VMM, также называемый гипервизором) – это программное обеспечение, обеспечивающее абстракцию виртуальной машины. При анализе среды, созданной VMM, представляют интерес три свойства:
Эквивалентность / Верность – Программа, выполняемая под управлением VMM, должна демонстрировать поведение, по существу идентичное тому, которое она демонстрирует при работе на эквивалентной физической машине напрямую. Контроль ресурсов / Безопасность – VMM должен осуществлять полный контроль над виртуализированными ресурсами. Эффективность / Производительность – Статистически значительная часть машинных инструкций должна выполняться без вмешательства VMM. В терминологии Попека и Голдберга, VMM должен обладать всеми тремя свойствами. В терминологии, используемой в справочнике Смита и Найра (2005), обычно предполагается, что VMM удовлетворяют свойствам эквивалентности и контроля ресурсов, а те, которые дополнительно соответствуют свойству производительности, называются эффективными VMM. Попэк и Голдберг описывают характеристики, которыми должна обладать архитектура набора команд (ISA) физической машины для запуска VMM, обладающих вышеуказанными свойствами. Их анализ выводит эти характеристики, используя модель "архитектур третьего поколения" (например, IBM 360, Honeywell 6000, DEC PDP 10), которая, тем не менее, достаточно универсальна для расширения на современные машины. Эта модель включает процессор, работающий в системном или пользовательском режиме, и имеющий доступ к линейной, единообразно адресуемой памяти. Предполагается, что подмножество набора команд доступно только в системном режиме, а адресация памяти осуществляется относительно регистра релокации. Операции ввода-вывода и прерывания не моделируются.
Обработка критических инструкций
Условия виртуализации ISA, выраженные в теореме 1, могут быть ослаблены за счет снижения эффективности. VMM для не виртуализируемых ISA (в понимании Попека и Голдберга) создавались и создаются регулярно. Виртуализация таких архитектур требует корректной обработки критических инструкций, то есть чувствительных, но не привилегированных. Один из подходов, известный как патчинг, использует методы, обычно применяемые при динамической перекомпиляции: критические инструкции обнаруживаются во время выполнения и заменяются переходом в VMM. Для повышения эффективности процесса патчинга были предложены различные механизмы, такие как кэширование кода эмуляции или аппаратная поддержка. Альтернативный подход – паравиртуализация, требующая модификации (портирования) гостевых операционных систем перед запуском в виртуальной среде.
Набор инструкций для общих архитектур
В этом разделе представлены некоторые релевантные архитектуры и их соответствие требованиям виртуализации.
Система/370
Все конфиденциальные инструкции в System/370 являются привилегированными: это соответствует требованиям виртуализации.
ИА-64
Усилия, необходимые для поддержки виртуализации на архитектуре IA-64, описаны в статье 2000 года, написанной Магенхаймером и Кристианом.
Спарк
В архитектуре UltraSPARC 2005 был определен "гиперпривилегированный" режим для архитектуры UltraSPARC. Он определяет платформу sun4v, которая является расширением платформы sun4u, но при этом соответствует спецификации SPARC v9 уровня 1.
PowerPC
Все конфиденциальные инструкции в наборе инструкций PowerPC являются привилегированными.
Результаты на практике
Требование эффективности в определении VMM Попека и Голдберга относится только к исполнению непривилегированных инструкций, которые должны выполняться аппаратно. Это отличает VMM от более широкого класса программного обеспечения для аппаратной эмуляции. К сожалению, даже на архитектуре, соответствующей требованиям Попека и Голдберга, производительность виртуальной машины может существенно отличаться от производительности реального оборудования. Ранние эксперименты, проведенные на System/370 (соответствующей формальным требованиям теоремы 1), показали, что производительность виртуальной машины в некоторых тестах могла составлять всего 21% от производительности реальной машины. Затраты на перехват и эмуляцию привилегированных инструкций в VMM могут быть значительными. Это побудило инженеров IBM внедрить ряд аппаратных вспомогательных средств, которые примерно удвоили производительность виртуальных машин System/370. Вспомогательные средства добавлялись поэтапно. В конечном итоге на поздних моделях System/370 их насчитывалось более 100. Одним из ключевых факторов, стимулировавших разработку аппаратных вспомогательных средств для System/370, была сама виртуальная память. Когда в качестве гостевой системы использовалась операционная система, которая сама реализовывала виртуальную память, даже непривилегированные инструкции могли испытывать увеличение времени выполнения – плата за необходимость доступа к таблицам трансляции, не используемым при прямом исполнении (см. теневые таблицы страниц).