stringtranslate.com

Требования Попека и Голдберга к виртуализации

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

Определение ВММ

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

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

По терминологии Попека и Гольдберга, МВМ должна представлять все три свойства. В терминологии, используемой в справочнике Смита и Наира (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 . Обычный компьютер третьего поколения можно рекурсивно виртуализировать, если:

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

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

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

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

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

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

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

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

ПДП-10

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

Система/370

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

Моторола MC68000

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

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

ИА-32 (х86)

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

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

ИА-64

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

СПАРК

«Сверхпривилегированный» режим для архитектуры UltraSPARC был указан в UltraSPARC Architecture 2005 ». [13] Он определяет платформу sun4v [14] , которая представляет собой расширенную версию платформы sun4u , но по-прежнему соответствует спецификации SPARC v9 Level-1 [15] .

PowerPC

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

Эффективность на практике

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

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

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

  1. ^ Попек, Дж. Дж .; Гольдберг, Р.П. (июль 1974 г.). «Формальные требования к виртуализуемым архитектурам третьего поколения». Коммуникации АКМ . 17 (7): 412–421. дои : 10.1145/361011.361073 . S2CID  12680060.
  2. ^ Рожье Диттнер, Дэвид Рул, Лучшая книга периода по виртуализации серверов , Syngress, 2007, ISBN 1-59749-217-5 , стр. 19 
  3. ^ Смит и Наир, с. 387
  4. ^ аб Адамс и Агесен, 2006, стр. 2-3.
  5. ^ аб Смит и Наир, с. 391
  6. ^ Адамс и Агесен, с. 1 и 5
  7. ^ SW Галера (1969). «Виртуальные машины PDP-10». Учеб. Семинар ACM SIGARCH-SIGOPS по виртуальным компьютерным системам . стр. 30–34.
  8. ^ Смит и Наир, с. 395
  9. ^ Руководство пользователя 8-/16-32-битного микропроцессора M68000, девятое издание . Финикс, Аризона, США: Motorola, Inc., 1993.
  10. ^ Справочное руководство программиста семейства Motorola M68000 . Финикс, Аризона, США: Motorola, Inc., 1992.
  11. ^ Джон Скотт Робин и Синтия Э. Ирвин (2000). «Анализ способности Intel Pentium поддерживать безопасный монитор виртуальных машин». Учеб. 9-й симпозиум USENIX по безопасности .
  12. ^ Дэниел Дж. Магенхаймер и Томас В. Кристиан (2000). «vBlades: оптимизированная паравиртуализация для семейства процессоров Itanium». Учеб. 3-й симпозиум по исследованиям и технологиям виртуальных машин . УСЕНИКС. стр. 73–82.
  13. ^ Уивер, Дэвид (17 мая 2007 г.). Архитектура UltraSPARC 2005: Одна архитектура.... Несколько инновационных реализаций (DraftD0.9) (PDF) . Санта-Клара, Калифорния, США: Sun Microsystems, Inc. Архивировано из оригинала (PDF) 19 февраля 2009 г.
  14. ^ Sun Microsystems, Inc. (24 января 2006 г.). Спецификация виртуальной машины UltraSPARC (PDF) . Санта-Клара, Калифорния, США. Архивировано из оригинала (PDF) 27 сентября 2007 г.{{cite book}}: CS1 maint: location missing publisher (link)
  15. ^ Уивер, Дэвид Л.; Том Джермонд (1994). Руководство по архитектуре SPARC: Версия 9 . Сан-Хосе, Калифорния, США: ISBN SPARC International, Inc. 0-13-825001-4.
  16. ^ «Виртуализация: элегантный способ и путь x86 – pagetable.com» .
  17. ^ Виртуализация cs.cmu.edu
  18. ^ Смит и Наир, с. 415-416 и 426
  19. ^ Гум, с. 535
  20. ^ Гум, с. 533
Примечания