СИСТЕМЫ И СПОСОБЫ ДВУХРЕЖИМНОЙ ВИРТУАЛИЗАЦИИ УСТРОЙСТВА РЕАЛЬНЫХ И ИДЕАЛИЗИРОВАННЫХ АППАРАТНЫХ УСТРОЙСТВ
SYSTEMS AND METHODS FOR DUAL-MODE VIRTUALISATION OF REAL AND IDEALISED HARDWARE DEVICES

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение в общем случае относится к области виртуальных устройств в компьютерных системах, а более конкретно, к улучшенным виртуальным устройствам в компьютерных системах, которые при необходимости работают по выбору в качестве виртуального аналога аппаратного устройства или в качестве виртуального идеализированного устройства.
УРОВЕНЬ ТЕХНИКИ
Виртуальное устройство представляет собой логическое устройство, реализованное при помощи программного обеспечения, которое соответствует какому-либо виду реального или идеализированного физического устройства. В общем случае существует два подхода к моделированию виртуальных устройств: подход “виртуальный аналог аппаратного устройства”, в котором непосредственно моделируют существующий компонент аппаратных средств; и подход “виртуальное идеализированное устройство”, который не является простым отражением физических аппаратных средств, но оптимизировано для среды VM (ВМ, виртуальной машины).
Подход, основанный на виртуальных аналогах аппаратных устройств, предлагает преимущества в отношении совместимости,  поскольку виртуальное устройство действует во всех отношениях подобно реальному устройству, программное обеспечение, которое разработано для взаимодействия с таким устройством (например, драйвер), будет работать с виртуальным аналогом аппаратного устройства без модификации. Однако виртуальные аналоги аппаратных устройств имеют недостатки в отношении их производительности - физические аппаратные средства часто сложны для эмуляции виртуальным устройством без связанных с этим издержек в виде значительных накладных расходов (и неэффективности), поскольку разработки аппаратных средств обычно не принимают в расчет вопросы виртуализации, и таким образом, виртуальные аналоги аппаратных устройств часто являются заметно более медленными, чем их двойники - реальные аппаратные средства.
С другой стороны, виртуальные идеализированные устройства предоставляют значительную свободу для разработчиков конструкций виртуальных устройств, являющихся как простыми в осуществлении, так и эффективными в использовании. Поскольку конструкцию виртуальных идеализированных устройств не требуется согласовывать с ограничениями, налагаемыми конструкцией физических аппаратных средств, виртуальные идеализированные устройства могут быть оптимизированы для использования в среде ВМ. Более того, разработчикам идеализированных виртуальных устройств нет необходимости самим иметь дело с тонкими побочными эффектами (такими как временные параметры, изменения состояний и т.д.), которые существующие программные средства могут учитывать для корректной работы. Помимо этого, разработчики также могут разрабатывать идеализированные виртуальные устройства, которые являются аналогами аппаратных средств, которые фактически не существуют - например, виртуальное устройство, которое позволяет обмен данными между гостевой системой и системой-хозяином. Однако оборотная сторона заключается в том, что могут возникнуть вопросы совместимости с подходом виртуального идеализированного устройства, поскольку виртуальное устройство фактически не может во всех отношениях работать подобно реальному устройству, и программное обеспечение, которое разработано для взаимодействия с таким физическим устройством (например, драйвер), может не работать с идеализированным виртуальным устройством корректно или не работать вовсе, без модификации.
То, что является необходимым в данной области техники - это подход к виртуализированным устройствам, который включает в себя преимущества двух существующих принципов, обсуждавшихся в данном описании, но лишен большинства их ограничений.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Различные варианты осуществления настоящего изобретения относятся к подходу виртуальных двухрежимных устройств (т.е. “двухрежимным устройствам”), которые объединяют относительные преимущества подходов виртуализации аппаратных средств и идеализированных устройств и в то же время уменьшают соответствующие их недостатки. В определенных вариантах осуществления двухрежимное устройство представляет собой виртуальное устройство, которое основывается главным образом на реальных компонентах аппаратных средств для обеспечения высокого уровня совместимости с программным обеспечением, функционирующим в гостевой среде (подобно подходу виртуализации аппаратного устройства). Однако для преодоления проблемы низкой производительности, которая присуща виртуальным аналогам аппаратных устройств, такие варианты осуществления также обеспечивает идеализированный “высокопроизводительный режим”, который отсутствует в оригинальном аппаратном устройстве. Программные драйвера (и другое программное обеспечение), разработанные для взаимодействия с оригинальным аппаратным устройством, не знающие (и неспособные использовать) высокопроизводительного режима, будут продолжать использовать “обычный режим” (виртуализация аппаратных средств), в то время как улучшенные версии гостевого программного обеспечения будут способны распознавать и использовать высокопроизводительный режим (идеализированная виртуализация).
Краткое описание чертежей
Приведенное выше раскрытие изобретения так же, как следующее ниже подробное описание предпочтительных вариантов осуществления, будут лучше поняты при чтении совместно с прилагаемыми чертежами. С целью иллюстрации настоящего изобретения на чертежах приведены иллюстративные варианты настоящего изобретения; однако настоящее изобретение не ограничено конкретными раскрытыми способами и средствами. На чертежах:
Фиг.1 является блок-схемой, соответствующей компьютерной системе, в которую могут быть включены аспекты настоящего изобретения;
На Фиг.2 показано разбиение на логические уровни архитектуры аппаратных и программных средств для эмулированной рабочей среды в компьютерной системе;
На Фиг.3А показана виртуализированная компьютерная система;
На Фиг.3В показан альтернативный вариант осуществления виртуализированной компьютерной системы, включающей в себя монитор виртуальной машины, функционирующий параллельно с операционной системой-хозяином;
На Фиг.4А показана виртуализованная компьютерная система по Фиг.3, дополнительно включающая в себя драйвера, виртуальные устройства и аппаратные средства;
На Фиг.4В показан рабочий путь от приложения, исполняемого в гостевой операционной системе, до аппаратного устройства аппаратных средств компьютера;
На Фиг.5 в упрощенном виде показаны некоторые взаимосвязи между драйверами, виртуальным устройством и аппаратными средствами, показанными на Фиг.4;
На Фиг.6А показано замещение двухрежимным устройством виртуального устройства в подсистеме по Фиг.5, причем указанное двухрежимное устройство работает в обычном режиме; и
На Фиг.6В показано двухрежимное устройство по Фиг.6А, работающее в высокопроизводительном режиме.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Объект изобретения описан таким образом, чтобы удовлетворить установленным требованиям. Однако само описание не предназначено для ограничения объема настоящего патента. Напротив, изобретатель предполагал, что заявленный объект также может быть реализован другими способами, включая в себя различные этапы или комбинации этапов, подобных описанным в этом документе, в связи с другими существующими или будущими технологиями. Помимо этого, хотя термин “этап” может быть использован в данном описании для связи различных элементов применяемых способов, данный термин не следует истолковывать как предполагающий какой-либо особый порядок среди или между различными этапами, изложенными в данном описании, за исключением и кроме тех, в которых порядок отдельных этапов рассматривается в явном виде.
Компьютерная среда
Многочисленные варианты осуществления настоящего изобретения могут выполняться на компьютере. Фиг.1 и следующее ниже обсуждение предназначено для предоставления краткого общего описания подходящей компьютерной среды, в которой может быть реализовано изобретение. Хотя это не является необходимым, изобретение будет описано в контексте инструкций, выполняемых компьютером, таких как программные модули, выполняемые на компьютере, таком как клиентская рабочая станция или сервер. Обычно, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют отдельные задачи или реализуют отдельные абстрактные типы данных. Помимо этого, специалистам в данной области техники будет очевидно, что настоящее изобретение может быть применено с другими конфигурациями компьютерных систем, включающими в себя портативные устройства, мультипроцессорные системы, микропроцессорные или программируемые бытовые электронные устройства, сетевые ПК, мини-компьютеры, мэйнфреймы и т.п. Изобретение также может применяться в распределенной компьютерной среде, в которой задачи выполняются удаленными процессорными устройствами, связанными через сеть обмена данными. В распределенной компьютерной среде программные модули могут размещаться как в локальном, так и удаленном запоминающем устройстве.
Как показано на Фиг.1, иллюстративная компьютерная система общего назначения включает в себя обычный персональный компьютер 20 или ему подобный, включающий в себя процессор 21, системную память 22 и системную шину 23, которая соединяет различные компоненты системы, в том числе системную память с процессором 21. Системная шина 23 может быть любой из нескольких типов конструкций шин, включающих в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из различных шинных архитектур. Системная память включает в себя постоянное запоминающее устройство 24 (ПЗУ) и оперативное запоминающее устройство 25 (ОЗУ). Базовая система 26 ввода/вывода (БСВВ, BIOS), включающая в себя основные процедуры, которые помогают передавать информацию между элементами внутри персонального компьютера 20, например во время запуска, хранится в ПЗУ 24. Персональный компьютер 20 может дополнительно включать в себя привод 27 жесткого диска для чтения данных с жесткого диска (не показан) и записи на него, привод 28 магнитного диска для чтения данных со съемного магнитного диска 29 и записи на него и привод оптического диска для чтения и записи данных на оптический диск 31, такой как CD ROM или другой оптический носитель. Привод 27 жесткого диска, привод 28 магнитного диска и привод 30 оптического диска подсоединены к системной шине 23 при помощи интерфейса 32 привода жесткого диска, интерфейса 33 привода магнитного диска и интерфейса 34 привода оптического диска соответственно. Приводы и связанные с ними читаемые компьютером носители обеспечивают в персональном компьютере 20 энергонезависимое хранение читаемых компьютером инструкций, структур данных, программных модулей и других данных. Хотя иллюстративная среда, изложенная в данном описании, использует жесткий диск, съемный магнитный диск 29 и съемный оптический диск 31, специалистам в данной области техники должно быть очевидным, что в иллюстративной рабочей среде также могут быть использованы другие типы читаемых компьютером носителей, которые могут хранить данные, доступные компьютеру, такие как магнитные кассеты, карты флэш-памяти, цифровые видеодиски, картриджи Бернулли, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ) и т.п.
Некоторые программные модули, включающие в себя оперативную систему 35, одну или несколько прикладных программ 36, другие программные модули 37 и данные 38 программ, могут храниться на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25. Пользователь может вводить команды и информацию в персональный компьютер через устройства ввода, такие как клавиатура 40 и указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер или т.п. Эти и другие устройства ввода часто соединены с процессором 21 через интерфейс 46 последовательного порта, который соединен с системной шиной, но могут быть подсоединены при помощи других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (УПШ, USB). Монитор 47 или другой тип устройства отображения также подсоединяют к системной шине 23 через интерфейс, такой как видеоадаптер 48. Дополнительно к монитору 47 персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показано), такие как громкоговарители и принтеры. Иллюстративная система по Фиг.1 также включает в себя хост-адаптер 55, шину 56 интерфейса малых компьютерных систем (ИМКС, SCSI) и внешнее запоминающее устройство 62, подсоединенное к шине 56 SCSI.
Персональный компьютер 20 может работать в сетевой среде, используя логические связи с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 49. Удаленный компьютер 49 может быть другим персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим сетевым узлом общего назначения, и обычно включает в себя большинство или все элементы, описанные выше в отношении персонального компьютера 20, хотя на Фиг.1 показано только запоминающее устройство 50. Логические связи, изображенные на Фиг.1, включают в себя локальную сеть 51 (ЛС) и глобальную сеть 52 (ГС). Такие сетевые среды являются обычным явлением в офисах, глобальных корпоративных компьютерных сетях, интрасетях и Интернет.
При использовании сетевой среды ЛС персональный компьютер 20 подсоединен к ЛС 51 через сетевой интерфейс или адаптер 53. При использовании сетевой среды ГС персональный компьютер 20 обычно включает в себя модем 54 или другое средство для организации обмена данными через глобальную сеть 52, такую как Интернет. Модем 54, который может быть внешним или внутренним, подсоединен к системной шине 23 через интерфейс 46 параллельного порта. В сетевой среде программные модули, изображенные в отношении персонального компьютера 20, или их части, могут быть сохранены в удаленном запоминающем устройстве. Очевидно, что показанные сетевые соединения являются иллюстративными и могут быть использованы другие средства для организации линий связи между компьютерами. Помимо этого, несмотря на то, что многочисленные варианты осуществления настоящего изобретения являются особо подходящими для компьютеризованных систем, ничто в этом документе не следует рассматривать в качестве ограничения настоящего изобретения такими вариантами осуществления.
Виртуальные машины
С абстрактной точки зрения компьютерные системы обычно включают в себя один или несколько уровней программного обеспечения, исполняемого на базовом уровне аппаратных средств. Указанное разбиение по уровням выполнено для целей абстракции. Определяя интерфейс для данного уровня программного обеспечения, такой уровень может быть реализован по-разному другими верхними по отношению к нему уровнями. В хорошо разработанной компьютерной системе каждый уровень знает только об уровне непосредственно под ним (и только от него зависит). Это позволяет уровню или “стеку” (набор граничащих друг с другом уровней) быть замененным без негативного влияния на уровни, находящиеся выше указанного уровня или стека. Например, прикладные программы (верхние уровни) обычно зависят от нижележащих уровней операционной системы (нижние уровни) при записи файлов в постоянное запоминающее устройство какого-либо вида, и от таких приложений не требуется понимания различий между записью данных на гибкий диск, жесткий диск или в сетевой каталог. Если такие нижние уровни заменяются новыми компонентами операционной системы для записи файлов, работа прикладных программ верхнего уровня останется незатронутой.
Гибкость разбитого на уровни программного обеспечения позволяет виртуальной машине (ВМ) представлять уровень виртуального аппаратного обеспечения, который фактически является другим уровнем программного обеспечения. В этом случае ВМ может создать иллюзию для уровней программного обеспечения, находящихся выше нее, что указанные уровни программного обеспечения работают в своей собственной компьютерной системе, и такие ВМ могут позволить набору “гостевых систем” выполняться одновременно в одной “системе-хозяине”.
Фиг.2 представляет собой диаграмму, изображающую логическое разбиение на уровни архитектуры аппаратных и программных средств для эмулированной рабочей среды в компьютерной системе. Программа 94 эмуляции исполняется в операционной системе-хозяине и/или архитектуре 92 аппаратных средств. Программа 94 эмуляции эмулирует гостевую архитектуру 96 аппаратных средств и гостевую операционную систему 98. Прикладная программа 100, в свою очередь, выполняется в гостевой операционной системе 98, в эмулированной рабочей среде по Фиг.2, поскольку при работе программы 94 эмуляции прикладная программа 100 может выполняться в компьютерной системе 90, даже несмотря на то, что прикладная программа 100 установлена для выполнения в операционной системе, которая обычно является несовместимой с операционной системой-хозяином и архитектурой 92 аппаратных средств.
На Фиг.3А показана виртуализованная компьютерная система, включающая в себя уровень 104 программного обеспечения операционной системы-хозяина, функционирующий непосредственно над физическими аппаратными средствами 102 компьютера, и операционная система-хозяин 104 (ОС-хозяин) виртуализует все ресурсы машины при помощи предоставления интерфейсов, которые являются такими же, что и у аппаратных средств, которые виртуализует ОС-хозяин (что позволяет ОС-хозяину выполняться незаметно для уровней операционной системы, выполняемых над ней).
В качестве альтернативы, монитор виртуальной машины или МВМ, уровень 104' программного обеспечения может выполняться вместо или параллельно с операционной системой-хозяином 104”, последняя возможность показана на Фиг.3В. Для простоты, все обсуждение в данном описании ниже (особенно относительно операционной системы-хозяина 104) будет относиться к варианту осуществления, показанному на Фиг.3А; однако каждый аспект такого обсуждения в равной степени может быть применен к варианту осуществления по Фиг.3В, в котором МВМ 104' по Фиг.3В по существу заменяет, на функциональном уровне, роль операционной системы-хозяина 104 по Фиг.3А, изложенную в данном описании ниже.
Возвращаясь снова к Фиг.3А, над ОС-хозяином 104 (или МВМ 104') находятся две реализации виртуальных машины (ВМ), ВМ А 108, которая, например, может быть виртуализованным процессором Intel 386, и ВМ В 110, которая, например, может быть виртуализованной версией одного из процессоров семейства Motorola 680X0. Над каждой ВМ 108 и 110 находится гостевая операционная система (гостевая ОС) А 112 и В 114 соответственно. Над гостевой ОС А 112 исполняются два приложения, приложение А1 116 и приложение А2 118, а над гостевой ОС В 114 исполняется приложение В1 120.
Виртуальные устройства
В отношении физических аппаратных устройств ВМ предоставляют несколько возможностей, позволяющих прикладным программам использовать указанные аппаратные средства. В некоторых системах ВМ аппаратное устройство (такое как привод жесткого диска или сетевой адаптер) может быть назначено одной ВМ, и только программное обеспечение, исполняемое в такой ВМ, может использовать указанное аппаратное устройство (архитектура выделенного устройства). Однако такая конструкция не позволяет совместное использование аппаратных устройств различными ВМ, а также ВМ и системой-хозяином. По этой причине многие реализации ВМ вместо этого используют “виртуальные устройства”.
Виртуальное устройство является логическим устройством, реализованным при помощи программного обеспечения, которое соответствует какому-либо виду реального или идеализированного физического устройства. Обычно виртуальные устройства обладают своим собственным набором состояний устройства, который может включать в себя, например, установки регистров, буферизованные данные, очереди отложенных команд и т.д. и т.п. В качестве не ограничивающего варианта осуществления, для виртуального сетевого адаптера вызывается программное обеспечение, связанное с виртуальным адаптером, когда код, исполняемый на ВМ, осуществляет обращение к сетевому адаптеру, и затем виртуальный адаптер может ответить на команды способом, который согласуется с реальной картой адаптера. В этом случае код, исполняемый внутри ВМ, не осведомлен, что он “общается” с виртуальным адаптером, а не с реальным, и затем виртуальный адаптер может непосредственно или опосредованно взаимодействовать с реальным адаптером, инициируя требуемые действия реального адаптера.
Во многих случаях запросы к виртуальному устройству отображаются на соответствующее устройство-хозяин. Например, сетевые пакеты, которые посланы из виртуального сетевого адаптера, могут быть направлены в один из реальных сетевых адаптеров, установленных в машине-хозяине. В этом отношении архитектура виртуального устройства обеспечивает производительность, подобную таковой, для архитектуры выделенного устройства, описанную выше. Однако в отличие от архитектуры выделенного устройства архитектура виртуального устройства позволяет набору виртуальных устройств отображаться на одно устройство-хозяин (реальное устройство). Например, три независимые ВМ могут каждая содержать виртуальный сетевой адаптер, и все три адаптера могут совместно использовать один адаптер-хозяин, тогда как в архитектуре выделенного устройства только одна ВМ может использовать адаптер-хозяин.
На Фиг.4А показана виртуализованная компьютерная система по Фиг.3, дополнительно включающая в себя драйвера, виртуальные устройства и аппаратные средства. Гостевая ОС А 112 и виртуальная машина А 108 включают в себя виртуальное устройство А 124, соответствующее драйверу А 122. Аналогично, гостевая ОС В 114 включает в себя драйвер В 126, а виртуальная машина В 110 включает в себя виртуальное устройство В 128, соответствующее драйверу В 126. Дополнительно, ОС-хозяин 104 включает в себя драйвер Х 130, а аппаратные средства 102 компьютера включают в себя аппаратное устройство Х 132, соответствующее драйверу Х 130.
На Фиг.4В показан рабочий путь от приложения, исполняемого в гостевой операционной системе, до аппаратного устройства в аппаратных средствах компьютера. Приложение А1 116 взаимодействует 134 с драйвером А 122, который, в свою очередь, взаимодействует 136 с виртуальным устройством А 124. Затем указанное виртуальное устройство А 124 взаимодействует 138 с драйвером Х 130 (в ОС-хозяине 104), который, в свою очередь, взаимодействует 140 непосредственно с аппаратным устройством Х 132. На Фиг.5 более просто показана та же взаимосвязь между драйверами, виртуальным устройством и аппаратными средствами, показанными на Фиг.4В.
Двухрежимное устройство
В общем случае существует два подхода при создании виртуальных устройств: принцип “виртуального аналога аппаратного устройства”, который непосредственно моделирует существующие компоненты аппаратных средств; и подход “виртуального идеализированного устройства”, который не является только отражением физических аппаратных средств, а оптимизирован для среды ВМ. Подход виртуального аналога аппаратного устройства предлагает преимущества в отношении совместимости, поскольку виртуальное устройство действует во всех отношениях подобно реальному устройству, программное обеспечение, которое разработано для взаимодействия с таким устройством (например, драйвером), будет работать с виртуальным аналогом аппаратного устройства без модификации. Однако виртуальные аналоги аппаратных устройств имеют недостатки в отношении их производительности - физические аппаратные средства часто сложны для эмуляции виртуальным устройством без связанных с этим значительных накладных расходов (и неэффективности), поскольку разработчики аппаратных средств обычно не принимают в расчет вопросы виртуализации, и, таким образом, виртуальные аналоги аппаратных устройств часто являются заметно более медленными, чем их реальные аппаратные двойники.
С другой стороны, виртуальные идеализированные устройства предоставляют значительную свободу для разработчиков конструкций виртуальных устройств, которые являются как простыми для осуществления, так и эффективными в использовании. Поскольку конструкцию виртуальных идеализированных устройств не требуется согласовывать с ограничениями, налагаемыми конструкцией физических аппаратных средств, виртуальные идеализированные устройства могут быть оптимизированы для использования в среде ВМ. Помимо этого, разработчики также могут разрабатывать виртуальные идеализированные устройства, которые являются аналогами аппаратных средств, которые фактически не существуют, - например, виртуальное устройство, которое позволяет обмен данными между гостевой системой и системой-хозяином. Однако оборотная сторона заключается в том, что могут возникать вопросы совместимости с подходом виртуального идеализированного устройства, поскольку виртуальное устройство фактически не может во всех отношениях работать подобно реальному устройству, и программное обеспечение, которое разработано для взаимодействия с таким физическим устройством (например, драйвером), может не работать с виртуальным идеализированным устройством корректно или не работать вовсе, без модификации.
Различные варианты осуществления настоящего изобретения относятся к подходам двухрежимных виртуальных устройств (т.е. “двухрежимные устройства”), которые объединяют относительные достоинства подходов виртуализации аппаратных средств и идеализированных устройств и в то же время уменьшают их относительные недостатки. В основных вариантах осуществления двухрежимное устройство является виртуальным устройством, которое основывается главным образом на реальных компонентах аппаратных средств для обеспечения высокого уровня совместимости с программным обеспечением, исполняемым в гостевой среде (подобно подходу виртуализации аппаратного устройства). Однако для преодоления проблемы низкой производительности, которая присуща виртуальным аналогам аппаратных устройств, такие варианты осуществления также предусматривают идеализированный “высокопроизводительный режим”, который отсутствует в оригинальном аппаратном устройстве. Программные драйвера (и другое программное обеспечение), разработанные для взаимодействия с оригинальным аппаратным устройством, и которые не знают (и не способны использовать) высокопроизводительный режим, будут продолжать использовать “обычный режим” (виртуализация аппаратных средств), в то время как версии гостевого программного обеспечения способны распознавать и использовать высокопроизводительный режим (идеализированная виртуализация).
Для определенных вариантов осуществления высокопроизводительный режим может быть полностью независимым от исходных функциональных возможностей обычного режима виртуального устройства. В качестве альтернативы, высокопроизводительный режим может включать в себя расширения или замещения исходных функциональных возможностей. В любом случае высокопроизводительный режим подобен подходам виртуализации идеализированного процессора, является ли он независимым от функциональных возможностей обычного режима, или он является его модернизацией. Помимо этого, также следует отметить, что в зависимости от того, какой вариант осуществления используется, переключение в высокопроизводительный режим может полностью блокировать обычный режим, это может частично блокировать обычный режим, и/или это может расширить функциональные возможности обычного режима.
В определенных вариантах осуществления настоящего изобретения высокопроизводительный режим может быть разрешен через использование зарезервированных битов в виртуальных регистрах устройства, тогда как альтернативные варианты осуществления могут добавлять взамен новые регистры (например, регистр, специально созданный для использования одним или несколькими виртуальными устройствами) или могут осуществлять вид квитирования связи таким образом, что предписанная последовательность команд или данных записывается в обычные регистры.
В качестве не ограничивающего примера рассмотрим двухрежимное устройство сетевой интерфейсной платы Ethernet. В обычном режиме отправка пакета информации в карту Ethernet может включать в себя до восьми (8) отлетных процедур записи в обычные регистры ввода/вывода. Указанные процедуры ввода/вывода требуются для установления параметров для передачи пакета, включающего в себя DMA адрес (т.е. положение в ОЗУ, в котором находится пакет данных), длину передачи и байт команды, который инициализирует передачу после того, как определены другие параметры. Однако каждая из таких процедур записи в регистры ввода/вывода является относительно дорогостоящей для ВМ, и суммарное время, требуемое для виртуализации такого доступа ввода/вывода, является значительным и приводит к большим потерям производительности. Однако виртуальная “идеализированная” карта Ethernet, т.е. виртуальная карта, функционирующая в высокопроизводительном режиме, может требовать только одну процедуру ввода/вывода для инициации отправки пакета, и, таким образом, двухрежимное устройство карты Ethernet (например, устройство, основанное на наборе микросхем DEC 21140), которое дополняется высокопроизводительным режимом, будет значительно увеличивать производительность в таких случаях, в которых может использоваться высокопроизводительный режим.
Для определенных вариантов осуществления высокопроизводительный режим может быть разрешен через использование специального, модифицированного драйвера, установленного внутри гостевой среды операционной системы, и как только высокопроизводительный режим разрешается, драйвер может использовать более оптимальный механизм для инициации отправки пакета. Однако если у гостя модифицированный драйвер отсутствует, обычный драйвер будет способен обеспечивать функциональные возможности использования сети, хотя и без оптимизации производительности возможной при высокопроизводительном режиме.
На Фиг.6А показано замещение двухрежимным устройством виртуального устройства в подсистеме по Фиг.5, причем указанное двухрежимное устройство работает в обычном режиме. На этом чертеже обычный драйвер А' 122' взаимодействует 136' с двухрежимным устройством 150, которое включает в себя как обычный режим 152 для виртуализации аппаратных средств, так и высокопроизводительный режим 154 для идеализированной виртуализации. Поскольку драйвер А' 122' не разработан для работы с идеализированной виртуализацией, предоставляемой высокопроизводительным режимом 154 двухрежимного устройства 150, он вместо этого работает с виртуализацией аппаратных средств, предоставляемой обычным режимом 152 двухрежимного устройства 150 (как показано), которая, в свою очередь, взаимодействует 138' с драйвером Х 130 ОС-хозяина.
Напротив, на Фиг.6В показано двухрежимное устройство, работающее в высокопроизводительном режиме. На этом чертеже высокопроизводительный драйвер А” 122” взаимодействует 136” с двухрежимным устройством 150. Поскольку высокопроизводительный драйвер А” 122” выполнен с возможностью работы с идеализированной виртуализацией, предоставляемой высокопроизводительным режимом 154 или двухрежимным устройством 150, он делает это (как показано), а двухрежимное устройство 150, в свою очередь, затем взаимодействует 138” с драйвером Х 130 ОС-хозяина.
Аппаратные средства на основе “двухрежимных” подходов используются в различных технологических областях для добавления новых функциональных возможностей аппаратному устройству, которое, в противном случае, несовместимо со старыми функциональными возможностями. Например, обычная PS/2 мышь посылает три байта информации в компьютер (Х-координату, Y-координату и состояние кнопки), но когда производители мыши добавили к мыши “колесо прокрутки”, им также потребовалось перейти к четырехбайтовому пакету информации, который включает в себя состояние колеса прокрутки. Для обеспечения обратной совместимости с драйверами мыши, которые не знали колеса прокрутки, новые мыши запускаются в “обычном режиме” и предоставляют только три байта информации, но когда загружался драйвер нового стиля, этот драйвер запускал “режим колеса прокрутки”, давая указание мыши начинать отправку четырехбайтовых пакетов.
Методики двухрежимных устройств
Существует несколько методик, при помощи которых драйвера гостевого режима могут идентифицировать двухрежимное устройство (т.е. отличить реальное аппаратное устройство и эмулированное устройство, которое поддерживает дополнительные режимы работы). Эти методики включают в себя, без ограничения следующие:
- Уникальный номер версии устройства: Многие устройства включают в себя идентификаторы версии устройства, доступные программному обеспечению. Эти значения иногда доступны непосредственно через порт ввода/вывода или отображаемый в память регистр. В другом случае, в устройство может быть послана определенная команда с запросом вернуть информацию о версии. В таких случаях иногда существует возможность модификации номера версии таким образом, что он не будет соответствовать каким-либо существующим реальным аппаратным средствам. Большинство драйверов игнорируют номер версии или выполняют проверку для минимального номера версии, таким образом, выбор нового уникального номера версии возможен без влияния на совместимость с существующими обычными драйверами.
- Неиспользуемые регистры: Некоторые устройства определяют совокупность портов ввода/вывода или отображаемых в памяти регистров, но используют только подмножество этой совокупности. Это является общим случаем, поскольку совокупности обычно размещены в блоках с размерами, кратными степени двойки, к тому же инженеры обычно резервируют больше, чем необходимо для дальнейшего расширения. Возможно использование “произвольного” или “резервного” регистра в совокупности в качестве идентификатора. Реальные аппаратные средства обычно возвращают значение 0х00 или 0хFF, если зарезервированный регистр является реальным. Эмулированное двухрежимное устройство может возвращать различные, определенные значения.
- Квитирование: Если две вышеуказанные методики являются невыполнимыми, обычно возможно разработать какую-либо форму квитирования “через заднюю дверь”. Это включает в себя определенную последовательность обращений к регистрам или команд устройству, использование которых является маловероятным для реальных сценариев. Например, если устройство является контроллером диска, методика квитирования может включать в себя отправку последовательности команд, которые считывают нулевые байты, находящиеся в начале определенного, заранее заданного списка секторов в определенном порядке (например, 0,3 и 7). В реальном контроллере такая процедура не будет эффективной (поскольку считывание нулевых байтов определено как отсутствие операции). Однако в двухрежимном устройстве, такая последовательность может вызвать другой эффект (например, установку определенного бита состояния в регистре состояния).
Конечно, одинаковые методики, используемые для идентификации эмулированного устройства, выполненного с возможностью двухрежимной работы, могут также применяться для автоматического разрешения “расширенного” режима для указанного устройства.
Заключение
Различные системы, способы и методики, изложенные в данном описании, могут быть реализованы аппаратно или программно, или, при необходимости, в виде сочетания и того, и другого. Таким образом, способы и устройства настоящего изобретения, или основные аспекты или их элементы, могут быть реализованы в форме программного кода (т.е. инструкций), осуществленного в материальном носителе, таком как гибкие магнитные диски, CD-ROM, жесткие диски или любые другие машиночитаемые носители, причем, если программный код загружен в машину, такую как компьютер, и исполняется ею, машина становится устройством для осуществления изобретения. В случае выполнения программного кода на программируемых компьютерах, компьютер обычно может включать в себя процессор, среду для хранения информации, читаемую процессором (включающую в себя энергозависимую и энергонезависимую память и/или запоминающие устройства), по меньшей мере, одно устройство ввода данных и, по меньшей мере, одно устройство вывода данных. Для связи с компьютерной системой одна или несколько программ предпочтительно реализованы на процедурном/объектно-ориентированном языке программирования высокого уровня. Однако программа(программы) могут быть реализованы на языке ассемблера или машинном языке, если это требуется. В любом случае язык может быть транслируемым или интерпретируемым языком в сочетании с аппаратными реализациями.
Способы и устройства настоящего изобретения также могут быть осуществлены в виде программного кода, который передается по какой-либо среде передачи, такой как электрические провода или кабели, через волоконно-оптический кабель, или посредством любого другого вида передачи, причем, если программный код получен, загружен и исполняется машиной, такой как СППЗУ, вентильная матрица, программируемое логическое устройство (ПЛУ), клиентский компьютер, устройство видеозаписи или т.п., указанная машина становится устройством для осуществления изобретения. При реализации на процессоре общего назначения программный код сочетается с процессором для обеспечения однозначно определяемого устройства, которое работает для выполнения указанных функциональных возможностей настоящего изобретения.
Поскольку настоящее изобретение описано в связи с предпочтительными вариантами различных чертежей, должно быть понятно, что могут быть использованы другие похожие варианты осуществления или могут быть произведены модификации или дополнения в изложенных вариантах осуществления для выполнения той же функции настоящего изобретения без отклонения от них. Например, хотя иллюстративные варианты осуществления настоящего изобретения описаны в контексте цифровых устройств, эмулирующих функциональные возможности персональных компьютеров, специалистам в данной области техники должно быть очевидным, что настоящее изобретение не ограничивается такими цифровыми устройствами, которые описаны в настоящей заявке на патент и может применяться для любого количества существующих или появляющихся компьютерных устройств или сред, таких как игровая консоль, микрокалькулятор, портативная вычислительная машина и т.п., либо проводных, либо беспроводных, и может применяться для любого количества таких компьютерных устройств, связанных через сеть обмена данными и взаимодействующих через указанную сеть. Помимо этого, необходимо подчеркнуть, что разнообразие компьютерных платформ, включающих в себя операционные системы для ручных устройств и другие специфичные для приложений системы сопряжения аппаратного/программного обеспечения, также учитываются настоящим описанием, особенно имея в виду продолжающееся увеличение количества беспроводных сетевых устройств. Следовательно, настоящее изобретение не следует ограничивать любым частным вариантом осуществления, но скорее должно рассматриваться в пределах объема согласно прилагаемой формуле изобретения.
В заключение, раскрытые варианты осуществления, изложенные в настоящем описании, могут быть приспособлены для использования для других архитектур процессоров, систем на основе компьютеров или систем виртуализации, и такие варианты осуществления также учитываются раскрытиями, приведенными в настоящем описании, и, таким образом, настоящее изобретение не ограничивается отдельными вариантами осуществления, изложенными в данном описании, но напротив, толкуется наиболее широко. Аналогично, применение методик с целью, отличной от виртуализации процессора, также учитывается в приведенных в настоящем описании раскрытиях, и любое такое использование методик в контексте, отличном от виртуализации процессора, следует истолковывать наиболее широко в контексте раскрытий, приведенных в настоящем описании.