Архитектура виртуальной машины может логически разделять физическую машину, так что лежащее в основе аппаратное обеспечение машины используется совместно и кажется, что независимо работают одна или несколько виртуальных машин. Виртуализация ввода/вывода (ВВВ) может реализовывать функциональные возможности устройства ввода/вывода, используемые несколькими виртуальными машинами.
Программная эмуляция всего устройства может являться одним примером виртуализации ввода/вывода. Полная эмуляция устройства ввода/вывода может позволить виртуальным машинам повторно использовать существующие драйверы устройств. Виртуализация ввода/вывода с одним корнем (ВВВ-ОК) или любые другие решения по разделению ресурсов могут являться другим примером виртуализации ввода/вывода Разделение функции устройства ввода/вывода (например, функции устройства ввода/вывода, касающейся перемещения данных) на несколько виртуальных интерфейсов (ВИ), каждый из которых закреплен за одной виртуальной машиной, может уменьшить служебную информацию ввода/вывода в слое эмуляции программного обеспечения.
Краткое описание чертежей
Описанное здесь изобретение проиллюстрировано с помощью примера и на приложенных чертежах, которые не ограничивают изобретение. Для простоты и ясности иллюстрации элементы, показанные на фигурах, не обязательно выполнены в масштабе. Например, для ясности размеры некоторых элементов могут быть увеличены относительно размеров других элементов. Более того, где возможно, для обозначения соответствующих или аналогичных элементов на разных фигурах использованы одинаковые ссылочные позиции.
Фиг.1 - вид, показывающий один вариант осуществления вычислительной платформы, содержащей обслуживающую виртуальную машину, выполненную с возможностью управления операцией ввода/вывода, начатую гостевой виртуальной машиной;
фиг.2а - вид, показывающий вариант осуществления кольцевой структуры дескрипторов, в которой хранят дескрипторы ввода/вывода для операции ввода/вывода;
фиг.2b - вид, показывающий вариант осуществления кольцевой структуры дескрипторов и кольцевой структуры теневых дескрипторов, в которых хранят дескрипторы ввода/вывода для операции ввода/вывода;
фиг.3 - вид, показывающий вариант осуществления таблицы блока управления памятью ввода/вывода (БУПВВ), приспособленной для прямого доступа к памяти (ПДП), осуществляемого устройством ввода/вывода;
фиг.4 - вид, показывающий один вариант осуществления способа записи информации ввода/вывода, касающейся операции ввода/вывода, осуществляемой гостевой виртуальной машиной;
фиг.5 - вид, показывающий один вариант осуществления способа выполнения операции ввода/вывода, осуществляемой обслуживающей виртуальной машиной на основе информации ввода/вывода;
фиг.6а-6b - виды, показывающие другой вариант осуществления способа выполнения операции ввода/вывода, осуществляемой обслуживающей виртуальной машиной на основе информации ввода/вывода.
Подробное описание изобретения
В последующем описании приведены технологии выполнения операции ввода/вывода в среде виртуализации. В последующем описании для обеспечения более глубокого понимания рассматриваемого изобретения приведено большое количество конкретных деталей, таких как реализации логики, псевдокод, средства определения операндов, реализации разделения/совместного использования/дублирования ресурсов, типы и взаимосвязи системных компонентов и логические альтернативы разделения/объединения. Тем не менее, изобретение может быть реализовано без таких конкретных подробностей. В других примерах структуры управления, схемы уровня логических элементов и полные последовательности команд программного обеспечения не показаны подробно, чтобы сделать изобретение более понятным. С помощью приведенных описаний специалисты в рассматриваемой области могут реализовать соответствующие функциональные возможности без проведения лишних экспериментов.
В этом описании слова «один вариант осуществления», «вариант осуществления», «пример варианта осуществления» и т.д. показывают, что описанный вариант осуществления изобретения может содержать конкретный признак, структуру или характеристику, но каждый вариант осуществления не обязательно содержит конкретный признак, структуру или характеристику. Более того, такие фразы не обязательно относятся к одному и тому же варианту осуществления изобретения. Далее, когда в связи с некоторым вариантом осуществления изобретения описан конкретный признак, структура или характеристика, считается, что в рамках своих знаний средний специалист в рассматриваемой области может осуществить такой признак, структуру или характеристику в связи с другими вариантами осуществления изобретения, описано ли это ясно или нет.
Варианты осуществления изобретения могут быть реализованы с помощью аппаратного обеспечения, аппаратно реализованного программного обеспечения, программного обеспечения или с помощью любого объединения перечисленного. Также варианты осуществления изобретения могут быть реализованы в виде команд, которые хранятся на считываемом машиной носителе информации и которые могут быть считаны и выполнены одним или несколькими процессорами. Считываемый машиной носитель информации может содержать любой механизм хранения или передачи информации в считываемом машиной (например, вычислительным устройством) виде. Например, считываемый машиной носитель информации может содержать постоянное запоминающее устройство (ПЗУ); оперативное запоминающее устройство (ОЗУ); запоминающее устройство на магнитных дисках; оптическое запоминающее устройство; устройства флэш-памяти; электрические, оптические, акустические или другие формы распространяющихся сигналов (например, несущие частоты, инфракрасные сигналы, цифровые сигналы и так далее) и другое.
На фиг.1 показан вариант осуществления вычислительной платформы 100, выполняющей операцию ввода/вывода в среде виртуализации. Неполный список примеров вычислительной системы 100 может включать в себя распределенные вычислительные системы, суперкомпьютеры, вычислительные кластеры, большие вычислительные машины, миникомпьютеры, персональные компьютеры, рабочие станции, серверы, переносные компьютеры, ноутбуки и другие устройства, выполненные с возможностью приема, передачи и обработки данных.
В варианте осуществления изобретения вычислительная платформа 100 может содержать лежащую в основе аппаратную машину 101, содержащую один или несколько процессоров 111, систему 121 памяти, чипсет 131, устройства 141 ввода/вывода и возможно другие компоненты. Один или несколько процессоров 111 могут быть с возможностью обмена данными соединены с различными компонентами (например, чипсетом 131) по одной или нескольким шинам, таким как шина процессора (не показана на фиг.1). Процессоры 111 могут быть реализованы в виде интегральной схемы (ИС) с одним или несколькими вычислительными ядрами, которые могут выполнять коды при подходящей архитектуре.
Система 121 памяти может хранить данные и команды, которые выполняет процессор 111. Примеры памяти 121 могут включать в себя любое из следующих полупроводниковых устройств или любое их объединение: устройства синхронной динамической оперативной памяти (SDRAM), устройства динамической оперативной памяти компании RAMBUS (RDRAM), устройства памяти с двойной скоростью (DDR), статическая оперативная память (SRAM) и устройства флэш-памяти.
Чипсет 131 может обеспечивать один или несколько каналов обмена данными между одним или несколькими процессорами 111, памятью 121 и другими компонентами, такими как устройство 141 ввода/вывода. Устройство 141 ввода/вывода может содержать, помимо прочего, устройства с разъемом взаимодействия периферийных компонентов (PCI) и/или с разъемом PCI типа экспресс (PCIe), соединенные с основной материнской платой по шине PCI или PCIe. Примерами устройства 141 ввода/вывода могут являться контроллер универсальной последовательной шины (USB), графический адаптер, аудиоконтроллер, контроллер сетевого интерфейса (NIC), запоминающее устройство и так далее.
Вычислительная платформа 100 может дополнительно содержать монитор 102 виртуальных машин (МВМ), которая отвечает за сопряжение лежащего в основе аппаратного обеспечения и виртуальных машин верхнего уровня (например, обслуживающей виртуальной машины 103, гостевой виртуальной машины 1031-103n), что нужно для облегчения и управления несколькими операционными системами (ОС) виртуальных машин (например, хостовой операционной системой 113 обслуживающей виртуальной машины 103, гостевыми операционными системами 1131-113n гостевых виртуальных машин 1031-103n) с точки зрения совместного использования лежащих в основе физических ресурсов. Примерами монитора виртуальных машин могут являться следующие: Xen, ESX server, virtual PC, Virtual Server, Hyper-V, Parallel, OpenVZ, Qemu и так далее.
В одном варианте осуществления изобретения устройство 141 ввода/вывода (например, сетевая карта) может быть разделено на несколько функциональных частей, в том числе блок 1410 управления (БУ), поддерживающий архитектуру виртуализации ввода/вывода (например, ВВВ с одним корнем), и несколько виртуальных интерфейсов 1411-141n функций (ВИ), содержащий ресурсы времени выполнения для выделенных доступов (например, пары очередей в сетевом устройстве). Примерами БУ и ВИ могут являться физическая функция и виртуальная функция при архитектуре виртуализации ввода/вывода с одним корнем или архитектуре виртуализации ввода/вывода с несколькими корнями. БУ может дополнительно конфигурировать и управлять функциональными возможностями ВИ. В одном варианте осуществления изобретения несколько гостевых виртуальных машин 1031-103n могут совместно использовать физические ресурсы, управляемые БУ 1410, при этом за каждой из гостевых виртуальных машин 103i-103n может быть закреплен один или несколько ВИ 1411-141n. Например, за гостевой виртуальной машиной 1031 может быть закреплен ВИ 1411.
Ясно, что в других вариантах осуществления изобретения могут быть реализованы другие технологии для структуры устройства 141 ввода/вывода. В одном варианте осуществления изобретения устройство 141 ввода/вывода может содержать один или несколько ВИ без БУ. Например, существующий NIC, не обладающий способностью разделения, может содержать единственный ВИ, работающий при условии отсутствия БУ.
Обслуживающая виртуальная машина 103 может быть загружена кодами модели 114 устройства, драйвера 115 БУ и драйвера 116 ВИ. Модель 114 устройства может являться программной эмуляцией реального устройства 141 ввода/вывода, а может и не являться упомянутой программной эмуляцией. Драйвер 115 БУ может управлять БУ 1410, который относится к инициализации устройства ввода/вывода и его конфигурации во время инициализации и работы вычислительной платформы 100. Драйвер 116 ВИ может являться драйвером устройства, приспособленным для управления одним или несколькими интерфейсами из ВИ 1411-ВИ 141n, в зависимости от политики управления. В одном варианте осуществления изобретения на основе политики управления драйвер ВИ может управлять ресурсами, выделенными гостевой ВМ, которую может поддерживать драйвер ВИ, а драйвер БУ может управлять общими операциями.
Каждая из гостевых виртуальных машин 1031-103n может быть загружена кодами драйвера гостевого устройства, управляющего виртуальным устройством, представленным МВМ 102, например, драйвера 116n гостевой виртуальной машины 1031 или драйвера 116n гостевой виртуальной машины 103n. Драйвер гостевого устройства может быть способен работать в режиме, совместимом с ВИ 141 и их драйверами 116, а может быть неспособен работать в упомянутом режиме. В одном варианте осуществления изобретения драйвер гостевого устройства может быть существующим драйвером.
В одном варианте осуществления изобретения в ответ на то, что гостевая операционная система гостевой виртуальной машины (например, гостевая ОС 1131 гостевой ВМ 1031) загружает драйвер гостевого устройства (например, драйвер 1161 гостевого устройства), обслуживающая ВМ 103 может запустить вариант модели 114 устройства и драйвер 116 ВИ. Например, вариантом модели 114 устройства может служить драйвер 1161 гостевого устройства, а вариант драйвера 116 ВИ может управлять ВИ 1411, закрепленным за гостевой ВМ 1031. Например, если драйвер 1161, гостевого устройства является существующим драйвером NIC на основе 82571 ЕВ (сетевой контроллер, изготовленный корпорацией Intel, город Санта Клара, штат Калифорния) и ВИ 1411, закрепленный за гостевой ВМ 1031, является NIC на основе 82571ЕВ или другим типом NIC, совместимого или не совместимого с 82571 ЕВ, то обслуживающая ВМ 1031 может запустить вариант модели 114 устройства, представляющей виртуальный NIC на основе 82571ЕВ и вариант драйвера 116 ВИ, управляющего ВИ 1411, то есть NIC на основе 82571ЕВ или другой тип NIC, совместимого или не совместимого с 82571ЕВ.
Ясно, что вариант осуществления изобретения, показанный на фиг.1, приведен для иллюстрации и другие технологии могут реализовывать другие варианты осуществления вычислительной системы 100. Например, модель 114 устройства может содержать драйвер 116 ВИ или драйвер БУ или все драйверы вместе и так далее. Они могут быть запущены в привилегированном режиме, таком как ядро ОС, или не привилегированном режиме, таком как пользовательский режим ОС. Обслуживающая ВМ может быть даже разделена на несколько ВМ, при этом одна ВМ выполняет БУ, а другая ВМ выполняет Модель Устройства и драйвер ВИ или возможны любые другие объединения с достаточным обменом данными между несколькими ВМ.
В одном варианте осуществления изобретения, если операцией ввода/вывода командует приложение (например, приложение 117j), выполняющееся на гостевой ВМ 1031 драйвер 1161 гостевого устройства может записывать информацию ввода/вывода, касающуюся операции ввода/вывода, в буфер (не показан на фиг.1), закрепленный за гостевой ВМ 1031. Например, драйвер 1161 гостевого устройства может записывать дескрипторы ввода/вывода в кольцевую структуру, как показано на фиг.2а, с одной записью кольцевой структуры для одного дескриптора ввода/вывода. В одном варианте осуществления изобретения дескриптор ввода/вывода может указывать операцию ввода/вывода, касающуюся пакета данных. Например, если гостевое приложение 1171 предписывает считать или записать 100 пакетов из гостевой памяти по адресам ххх-ууу, драйвер 1161 гостевого устройства может записать 100 дескрипторов ввода/вывода в кольцо дескрипторов с фиг.2а. Драйвер 1161 гостевого устройства может записать дескрипторы в кольцо дескрипторов, начиная с указателя 201 начала. Драйвер 1161 гостевого устройства может обновить указатель 202 конца после завершения записи дескрипторов, касающихся операции ввода/вывода. В одном варианте осуществления изобретения указатель 201 начала и указатель 202 конца могут храниться в регистре начала и регистре конца (не показаны).
В одном варианте осуществления изобретения дескриптор может содержать данные, тип операции ввода/вывода (считать или записать), адрес гостевой памяти для ВИ 1411 для считывания данных или для записи данных, состояние операции ввода/вывода и возможную другую информацию, нужную для операции ввода/вывода.
В одном варианте осуществления изобретения, если драйвер 1161 гостевого устройства не может работать в режиме, совместимом с ВИ 1411, закрепленным за гостевой ВМ 1031, например, если ВИ 1411 не может реализовать операцию ввода/вывода на основе дескрипторов, записанных драйвером 1161 гостевого устройства, из-за различных битовых форматов и/или семантик, которые поддерживают ВИ 1411 и драйвер 116i гостевого устройства, то драйвер 116 ВИ может сгенерировать теневое кольцо (как показано на фиг.2b) и перевести дескрипторы, указатель начала и указатель конца, которые соответствуют архитектуре гостевой ВМ 1031, в теневые дескрипторы (Т-дескрипторы), указатель теневого начала (указатель Т-начала) и указатель теневого конца (указатель Т-конца), которые соответствуют архитектуре ВИ 1411, так что ВИ 1411 может реализовать операции ввода/вывода на основе теневых дескрипторов.
Ясно, что варианты осуществления изобретения, показанные на фиг.2а и 2b, приведены для иллюстрации, и другие технологии могут реализовывать другие варианты осуществления информации ввода/вывода. Например, информация ввода/вывода может быть записана в структуры данных, отличные от кольцевых структур с фиг.2а и 2b, такие как хэш-таблица, таблица ссылок и так далее. В качестве другого примера, единственное кольцо может быть использовано как для приема, так и для передачи, или отдельные кольца могут быть использованы для приема или передачи.
БУПВВ или аналогичная технология может позволить устройству 141 ввода/вывода направить доступ к системе 121 памяти через многократное отображение гостевого адреса, извлеченного из дескрипторов в кольце дескрипторов или кольца теневых дескрипторов, в хост-адрес. На фиг.3 показан вариант осуществления таблицы БУПВВ. Гостевая виртуальная машина, такая как гостевая ВМ 1031, может содержать, по меньшей мере, одну таблицу БУПВВ, показывающую соответствующую взаимосвязь между адресом гостевой памяти, который соответствуют архитектуре гостевой ВМ, и адресом хост-памяти, который соответствуют архитектуре вычислительной хост-системы. МВМ 102 и обслуживающая ВМ 103 могут управлять таблицами БУПВВ для всех гостевых виртуальных машин. Более того, таблица страниц БУПВВ может быть индексирована с помощью разных способов, таких как индексирование идентификатором устройства (например, шина: устройство: номер функции в системе PCIe), номером гостевой ВМ или с помощью любого другого способа, определенного в реализациях БУПВВ.
Ясно, что в других вариантах осуществления изобретения могут быть использованы другие технологии доступа к памяти. В одном варианте осуществления изобретения может не использоваться БУПВВ, если гостевой адрес равен хост-адресу, например, благодаря программному решению. В другом варианте осуществления изобретения, драйвер гостевого устройства может работать с МВМ 102 с целью перевода гостевого адреса в хост-адрес путем использования таблицы отображений, аналогичной таблице БУПВВ.
На фиг.4 показан один вариант осуществления способа записи информации ввода/вывода, касающейся операции ввода/вывода, осуществляемой гостевой виртуальной машиной. В последующем описании в качестве примера используется гостевая ВМ 1031 Ясно, что такая же или аналогичная технология может быть применима к другим гостевым ВМ.
В блоке 401 приложение 1171, работающее на гостевой ВМ 1031, может предписать операции ввода/вывода, например, записать 100 пакетов по адресу ххх-ууу в гостевой памяти. В блоке 402 драйвер 1161 гостевого устройства может генерировать и записывать дескрипторы ввода/вывода, касающиеся операции ввода/вывода, в кольцо дескрипторов гостевой ВМ 1031 (например, кольцо дескрипторов, аналогичное показанному на фиг.2а или 2b) до тех пор, пока все дескрипторы, касающиеся операции ввода/вывода, не будут записаны в кольцо дескрипторов в блоке 403. В одном варианте осуществления изобретения драйвер 1161 гостевого устройства может записывать дескрипторы ввода/вывода, начиная с указателя начала (например, указателя 201 начала с фиг.2а или указателя 2201 начала с фиг.2b). В блоке 404 драйвер 1161 гостевого устройства может обновить указатель конца (например, указатель 202 конца с фиг.2а или указатель 2202 конца с фиг.2b) после завершения записи в буфер всех дескрипторов, относящихся к операции ввода/вывода.
На фиг.5 показан один вариант осуществления способа выполнения операции ввода/вывода с помощью обслуживающей ВМ 103. Этот вариант осуществления может быть применен в ситуации, когда драйвер гостевой виртуальной машины способен работать в режиме, совместимом с ВИ, и/или когда его драйвер закреплен за гостевой виртуальной машиной. Например, драйвер гостевого устройства является существующим драйвером NIC на основе 82571 ЕВ, а ВИ является NIC на основе 82571 ЕВ или другим типом NIC, совместимым с NIC на основе 82571 ЕВ, например, виртуальной функцией NIC на основе 82571 ЕВ. В последующем описании в качестве примера используется гостевая ВМ 1031. Ясно, что такая же или аналогичная технология может быть применима к другим гостевым ВМ.
В блоке 501 гостевая ВМ 103] обновляет указатель конца (например, указатель 202 конца с фиг.2а), который может инициировать выход виртуальной машины (например, VMExit), который может быть перехвачен МВМ 102, так что МВМ 102 может передать управление системой от гостевой ОС 1131 гостевой ВМ 1031 на модель 114 устройства обслуживающей ВМ 103.
В блоке 502 модель 114 устройства может запустить драйвер 116 ВИ в ответ на обновление конца. В блоках 503-506 драйвер 116 ВИ может управлять ВИ 1141 закрепленным за гостевой ВМ 1031 с целью реализации операции ввода/вывода на основе дескрипторов ввода/вывода, записанных гостевой ВМ 1031 (например, дескрипторов ввода/вывода с фиг.2а). Более конкретно, в блоке 503 драйвер 116 ВИ может запустить драйвер 1141 ВИ для готовых дескрипторов ввода/вывода. В одном варианте осуществления изобретения драйвер 116 ВИ может запустить ВИ 1141 путем обновления регистра конца (не показан). В блоке 504 драйвер 1141 гостевого устройства может считать дескриптор из кольца дескрипторов гостевой ВМ 1031 (например, кольца дескрипторов, аналогичного показанному на фиг.2а) и реализовать операцию ввода/вывода, как описано в дескрипторе ввода/вывода, например, принимая пакет и записывая пакет по адресу ххх в гостевой памяти. В одном варианте осуществления изобретения ВИ 1141 может считать дескриптор ввода/вывода, на который показывает указатель начала из кольца дескрипторов (например, указатель 201 начала с фиг.2а).
В одном варианте осуществления изобретения ВИ 1141 может использовать БУПВВ или аналогичную технологию для реализации прямого доступа к памяти (ПДП) для операции ввода/вывода. Например, ВИ 1141 может получить адрес хост-памяти, соответствующий адресу гостевой памяти, из таблицы БУПВВ, выработанной для гостевой ВМ 1031, и напрямую считать пакет из системы 121 памяти или записать пакет в систему 121 памяти. В другом варианте осуществления изобретения ВИ 1141 может реализовать прямой доступ к памяти без таблицы БУПВВ, если гостевой адрес совпадает с хост-адресом при фиксированном отображении между гостевым адресом и хост-адресом. В блоке 505 ВИ 1141 может дополнительно обновить дескриптор ввода/вывода, например, состояние операции ввода/вывода, содержащееся в дескрипторе ввода/вывода, с целью показа, что дескриптор ввода/вывода был реализован. В одном варианте осуществления изобретения ВИ 1141 может использовать или может не использовать таблицу БУПВВ для обновления дескриптора ввода/вывода. ВИ 114i может дополнительно обновить указатель начала с целью перемещения вперед указателя начала и указания на следующий дескриптор ввода/вывода в кольце дескрипторов.
В блоке 506 ВИ 1141 может определить, достиг ли он дескриптора ввода/вывода, на который указывает конец. Если конец не достигнут, ВИ 1141 может продолжить считывать дескриптор ввода/вывода из кольца дескрипторов и реализовывать операцию ввода/вывода, которая предписана дескриптором ввода/вывода в блоках 504 и 505. Если конец достигнут, ВИ 1141 может сообщить МВМ 102 о завершении операции ввода/вывода в блоке 507, например путем подачи на МВМ 102 сигнала о прерывании. В блоке 508 МВМ 102 может сообщить драйверу 116 ВИ о завершении операций ввода/вывода, например, путем вставки прерывания в обслуживающую ВМ 103.
В блоке 509 драйвер 116 ВИ может поддерживать состояние ВИ 1141 и сообщить модели 114 устройства о завершении операции ввода/вывода. В блоке 510 модель 114 устройства может передать сигнал о виртуальном прерывании на гостевую ВМ 1131, чтобы драйвер 1161 гостевого устройства мог обработать это событие и сообщить приложению 1171, что операции ввода/вывода реализованы. Например, драйвер 1161 гостевого устройства может сообщить приложению 1171 о том, что данные приняты и готовы к использованию. В одном варианте осуществления изобретения модель 114 устройства может дополнительно обновить регистр начала (не показан), чтобы показать, что управление кольцом дескрипторов передано назад драйверу 1161 гостевого устройства. Ясно, что информирование драйвера 1161 гостевого устройства может быть осуществлено другим образом, который может быть определен политиками устройства/драйвера, например, политикой устройства/драйвера, выполненной в случае, когда драйвер гостевого устройства запрещает прерывание устройства.
Ясно, что описанный вариант осуществления изобретения предназначен для иллюстрации и другие технологии могут реализовывать другие варианты осуществления изобретения. Например, в зависимости от различных механизмов МВМ, ВИ 1141 может сообщить машине верхнего уровня о завершении операции ввода/вывода различными способами. В одном варианте осуществления изобретения ВИ 1141 может сообщить непосредственно обслуживающей ВМ 103, а не МВМ 102. В другом варианте осуществления изобретения ВИ 1141 может сообщить машине верхнего уровня, когда завершена одна или несколько, а не все операции ввода/вывода, перечисленные в кольце дескрипторов, так что гостевое приложение может быть своевременно проинформировано о завершении части операций ввода/вывода.
На фиг.6а-6b показан другой вариант осуществления способа выполнения операции ввода/вывода с помощью обслуживающей ВМ 103. Этот вариант осуществления может быть применен в ситуации, когда драйвер гостевой виртуальной машины не способен работать в режиме, совместимом с ВИ, и/или когда его драйвер закреплен за гостевой виртуальной машиной. В последующем описании в качестве примера используется гостевая ВМ 1031. Ясно, что такая же или аналогичная технология может быть применима к другим гостевым ВМ.
В блоке 601 МВМ может захватывать выход виртуальной машины (например, VMExit), вызванный гостевой ВМ 1031 например, когда драйвер 116 гостевого устройства обращается к виртуальному устройству (например, модели 114 устройства). В блоке 601 МВМ 102 может передать управление системой от гостевой ОС 1131 гостевой ВМ 1031 на модель 114 устройства обслуживающей ВМ 103. В блоке 603 модель 114 устройства может определить, инициирован ли выход виртуальной машины тем фактом, что драйвер 1161 гостевого устройства завершил запись дескрипторов ввода/вывода, относящихся к операции ввода/вывода, в кольцо дескрипторов (например, кольцо дескрипторов с фиг.2b). В одном варианте осуществления изобретения гостевая ВМ 1031 может обновить указатель конца (например, указатель 2202 конца с фиг.2b), показывающий конец дескрипторов ввода/вывода. В этом случае модель 114 устройства может определить, инициирован ли выход виртуальной машины обновлением этого указателя конца.
Если выход виртуальной машины не инициирован тем фактом, что драйвер 1161 гостевого устройства завершил запись дескрипторов ввода/вывода, то способ с фиг.6а-6b может вернуться к блоку 601, то есть МВМ может захватить следующий выход ВМ. Если выход виртуальной машины инициирован тем фактом, что драйвер 1161 гостевого устройства завершил запись дескрипторов ввода/вывода, то в блоке 604 модель 114 устройства может запустить драйвер 116 ВИ с целью перевода дескрипторов ввода/вывода, которые соответствуют архитектуре гостевой ВМ 1031, в теневые дескрипторы ввода/вывода, которые соответствуют архитектуре ВМ 1411 и которые закреплены за гостевой ВМ 1031, и с целью сохранения теневых дескрипторов ввода/вывода в кольце теневых дескрипторов (например, кольце теневых дескрипторов, которое показано на фиг.2b).
В блоке 605 драйвер 116 ВИ может перевести указатель конца, который соответствует архитектуре гостевой ВМ 1031, в указатель теневого конца, который соответствуют архитектуре ВМ 1411.
В блоках 606-610 драйвер 116 ВИ может управлять ВИ 1141 с целью реализации операции ввода/вывода на основе дескрипторов ввода/вывода, записанных гостевой ВМ 1031. Более конкретно, в блоке 606 драйвер 116 ВИ может запустить драйвер 1141 ВИ для готовых теневых дескрипторов. В одном варианте осуществления изобретения драйвер 116 ВИ может запустить ВИ 1141 путем обновления указателя теневого конца (не показан). В блоке 607 ВИ 1141 может считать теневой дескриптор ввода/вывода из кольца теневых дескрипторов и реализовать операцию ввода/вывода, как описано в теневом дескрипторе ввода/вывода, например, путем приема пакета и записи пакета по адресу ххх в гостевую память или считывания пакета по адресу ххх из гостевой памяти и передачи этого пакета. В одном варианте осуществления изобретения ВИ 1141 может считывать дескриптор ввода/вывода, на который показывает указатель теневого начала из кольца теневых дескрипторов (например, указатель 2201 теневого начала с фиг.2b).
В одном варианте осуществления изобретения ВИ 1141 может использовать БУПВВ или аналогичную технологию для реализации прямого доступа к памяти для операции ввода/вывода. Например, ВИ 1141 может получить адрес хост-памяти, соответствующий адресу гостевой памяти, из таблицы БУПВВ, выработанной для гостевой ВМ 1031 и напрямую записать принятый пакет в систему 121 памяти. В другом варианте осуществления изобретения ВИ 1141 может реализовать прямой доступ к памяти без таблицы БУПВВ, если гостевой адрес совпадает с хост-адресом при фиксированном отображении между гостевым адресом и хост-адресом. В блоке 608 ВИ 1141 может дополнительно обновить теневой дескриптор ввода/вывода, например, состояние операции ввода/вывода, содержащееся в теневом дескрипторе ввода/вывода, с целью показа того, что дескриптор ввода/вывода был реализован. В одном варианте осуществления изобретения ВИ 1141 может использовать таблицу БУПВВ для обновления дескриптора ввода/вывода. ВИ 1141 может дополнительно обновить указатель теневого начала с целью перемещения вперед указателя теневого начала и указания на следующий теневой дескриптор ввода/вывода в кольце теневых дескрипторов.
В блоке 609 драйвер 116 ВИ может перевести обновленный теневой дескриптор ввода/вывода и указатель теневого начала назад к дескриптору ввода/вывода и указателю начала и обновить кольцо дескрипторов с учетом нового дескриптора ввода/вывода и указателя начала. В блоке 610 ВИ 1141 может определить, достиг ли он теневого дескриптора ввода/вывода, на который указывает указатель теневого конца. Если конец не достигнут, ВИ 1141 может продолжить считывать теневой дескриптор ввода/вывода из кольца теневых дескрипторов и реализовывать операцию ввода/вывода, которая описана теневым дескриптором ввода/вывода в блоках 607-609. Если конец достигнут, ВИ 1141 может сообщить МВМ 102 о завершении операции ввода/вывода в блоке 611, например, путем подачи на МВМ 102 сигнала о прерывании. Далее МВМ 102 может сообщить драйверу 106 ВИ о завершении операции ввода/вывода, например, путем вставки прерывания в обслуживающую ВМ 103.
В блоке 612 драйвер 116 ВИ может поддерживать состояние ВИ 114i и сообщить модели 114 устройства о завершении операции ввода/вывода. В блоке 613 модель 114 устройства может передать сигнал о виртуальном прерывании на драйвер 1161 гостевого устройства, чтобы драйвер 1161 гостевого устройства мог обработать это событие и сообщить приложению 1171, что операция ввода/вывода реализована. Например, драйвер 1161 гостевого устройства может сообщить приложению 1171 о том, что данные приняты и готовы к использованию. В одном варианте осуществления изобретения модель 114 устройства может дополнительно обновить регистр начала (не показан), чтобы показать, что управление кольцом дескрипторов передано назад драйверу 1161 гостевого устройства. Ясно, что информирование драйвера 1161 гостевого устройства может быть осуществлено другим образом, который может быть определен политиками устройства/драйвера, например, политикой устройства/драйвера, выполненной в случае, когда драйвер гостевого устройства запрещает прерывание устройства.
Ясно, что описанный вариант осуществления изобретения предназначен для иллюстрации и другие технологии могут реализовывать другие варианты осуществления изобретения. Например, в зависимости от различных механизмов МВМ, ВИ 1141 может сообщить машине верхнего уровня о завершении операции ввода/вывода различными способами. В одном варианте осуществления изобретения ВИ 1141 может сообщить непосредственно обслуживающей ВМ 103, а не МВМ 102. В другом варианте осуществления изобретения ВИ 1141 может сообщить машине верхнего уровня, когда завершена одна или несколько, а не все операции ввода/вывода, перечисленные в кольце дескрипторов, так что гостевое приложение может быть своевременно проинформировано о завершении части операций ввода/вывода.
Хотя определенные признаки изобретения описаны со ссылками на примеры вариантов осуществления изобретения, описание не предназначено для ограничения изобретения. Различные модификации примеров вариантов осуществления изобретения, а также другие варианты осуществления изобретения, которые ясны специалистам в рассматриваемой области, считаются не выходящими за пределы объема и новизны изобретения.
Изобретение относится к области сред виртуализации. Техническим результатом является повышение эффективности операции ввода/вывода в среде виртуализации. В некоторых вариантах осуществления изобретения система содержит аппаратную машину, включающую в себя устройство ввода/вывода; и монитор виртуальных машин для сопряжения аппаратной машины и нескольких виртуальных машин. В некоторых вариантах осуществления изобретения виртуальная машина содержит гостевую виртуальную машину для записи информации ввода/вывода, касающейся операции ввода/вывода, и обслуживающую виртуальную машину, которая содержит модель устройства и драйвер устройства, при этом модель устройства запускает драйвер устройства с целью управления некоторой частью устройства ввода/вывода для реализации операции ввода/вывода с использованием информации ввода/вывода и при этом модель устройства, драйвер устройства и эта часть устройства ввода/вывода закреплены за гостевой виртуальной машиной. 4 н. и 22 з.п. ф-лы, 8 ил.
1. Способ для осуществления операции ввода/вывода в среде виртуализации, осуществляемый обслуживающей виртуальной машиной, содержащий:
запускают, с помощью модели устройства обслуживающей виртуальной машины, драйвер устройства обслуживающей виртуальной машины с целью управления виртуальным интерфейсом функций устройства ввода/вывода для реализации операции ввода/вывода путем использования информации ввода/вывода, которая касается операции ввода/вывода и которая записана гостевой виртуальной машиной, причем модель устройства сконфигурирована так, чтобы эмулировать физическое устройство ввода/вывода;
при этом модель устройства, драйвер устройства и виртуальный интерфейс функций устройства ввода/вывода закреплены за гостевой виртуальной машиной.
2. Способ по п.1, который, если виртуальный интерфейс функций устройства ввода/вывода не может работать совместимо с архитектурой гостевой виртуальной машины, дополнительно содержит:
переводят, с помощью драйвера устройства, информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, в теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода; и
переводят, с помощью драйвера устройства, обновленную теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода, в обновленную информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, при этом обновленная теневая информация ввода/вывода обновлена виртуальным интерфейсом функций устройства ввода/вывода в ответ на реализацию операции ввода/вывода.
3. Способ по п.1, дополнительно содержащий:
поддерживают, с помощью драйвера устройства, состояние виртуального интерфейса функций устройства ввода/вывода после реализации операции ввода/вывода.
4. Способ по п.1, дополнительно содержащий:
сообщают, с помощью модели устройства, гостевой виртуальной машине о реализации операции ввода/вывода.
5. Способ по п.1, в котором информацию ввода/вывода записывают в структуру данных, начиная с указателя начала, которым управляет виртуальный интерфейс функций устройства ввода/вывода.
6. Способ по п.1, в котором указатель конца, который указывает на конец информации ввода/вывода, обновляют с помощью гостевой виртуальной машины.
7. Устройство для осуществления операции ввода/вывода в среде виртуализации, содержащее:
модель устройства и драйвер устройства, при этом модель устройства запускает драйвер устройства с целью управления виртуальным интерфейсом функций устройства ввода/вывода для реализации операции ввода/вывода путем использования информации ввода/вывода, которая касается операции ввода/вывода и которая записана гостевой виртуальной машиной, причем модель устройства сконфигурирована так, чтобы эмулировать физическое устройство ввода/вывода, и модель устройства, драйвер устройства и виртуальный интерфейс функций устройства ввода/вывода закреплены за гостевой виртуальной машиной.
8. Устройство по п.7, в котором если виртуальный интерфейс функций устройства ввода/вывода не может работать совместимо с архитектурой гостевой виртуальной машины, то драйвер устройства:
переводит информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, в теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода; и
переводит обновленную теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода, в обновленную информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, при этом обновленная теневая информация ввода/вывода обновлена виртуальным интерфейсом функций устройства ввода/вывода в ответ на реализацию операции ввода/вывода.
9. Устройство по п.7, в котором драйвер устройства дополнительно поддерживает состояние виртуального интерфейса функций устройства ввода/вывода после реализации операции ввода/вывода.
10. Устройство по п.7, в котором модель устройства дополнительно сообщает гостевой виртуальной машине о реализации операции ввода/вывода.
11. Устройство по п.7, в котором информация ввода/вывода записана в структуру данных, начиная с указателя начала, которым управляет виртуальный интерфейс функций устройства ввода/вывода.
12. Устройство по п.7, в котором гостевая виртуальная машина обновляет указатель конца, который указывает на конец информации ввода/вывода.
13. Считываемый машиной носитель информации для осуществления операции ввода/вывода в среде виртуализации, содержащий несколько команд, выполнение которых приводит к тому, что в системе:
запускают, с помощью модели устройства обслуживающей виртуальной машины, драйвер устройства обслуживающей виртуальной машины с целью управления виртуальным интерфейсом функций устройства ввода/вывода для реализации операции ввода/вывода путем использования информации ввода/вывода, которая касается операции ввода/вывода и которая записана гостевой виртуальной машиной,
при этом модель устройства сконфигурирована так, чтобы эмулировать физическое устройство ввода/вывода; и модель устройства, драйвер устройства и виртуальный интерфейс функций устройства ввода/вывода закреплены за гостевой виртуальной машиной.
14. Считываемый машиной носитель информации по п.13, в котором, если виртуальный интерфейс функций устройства ввода/вывода не может работать совместимо с архитектурой гостевой виртуальной машины, несколько команд дополнительно приводят к тому, что в системе:
переводят, с помощью драйвера устройства, информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, в теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода; и
переводят, с помощью драйвера устройства, обновленную теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода, в обновленную информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, при этом обновленная теневая информация ввода/вывода обновлена виртуальным интерфейсом функций устройства ввода/вывода в ответ на реализацию операции ввода/вывода.
15. Считываемый машиной носитель информации по п.13, в котором несколько команд дополнительно приводят к тому, что в системе:
поддерживают, с помощью драйвера устройства, состояние виртуального интерфейса функций устройства ввода/вывода после реализации операции ввода/вывода.
16. Считываемый машиной носитель информации по п.13, в котором несколько команд дополнительно приводят к тому, что в системе:
сообщают, с помощью модели устройства, гостевой виртуальной машине о реализации операции ввода/вывода.
17. Считываемый машиной носитель информации по п.13, в котором информация ввода/вывода записана в структуру данных, начиная с указателя начала, которым управляет виртуальный интерфейс функций устройства ввода/вывода.
18. Считываемый машиной носитель информации по п.13, в котором гостевая виртуальная машина обновляет указатель конца, который указывает на конец информации ввода/вывода.
19. Система для осуществления операции ввода/вывода в среде виртуализации, содержащая:
аппаратную машину, содержащую устройство ввода/вывода; и
монитор виртуальных машин для сопряжения аппаратной машины и нескольких виртуальных машин, при этом виртуальная машина содержит:
гостевую виртуальную машину, предназначенную для записи информации ввода/вывода, касающейся операции ввода/вывода; и
обслуживающую виртуальную машину, которая содержит модель устройства и драйвер устройства, при этом модель устройства запускает драйвер устройства с целью управления виртуальным интерфейсом функций устройства ввода/вывода для реализации операции ввода/вывода путем использования информации ввода/вывода и при этом модель устройства сконфигурирована так, чтобы эмулировать физическое устройство ввода/вывода; и модель устройства, драйвер устройства и виртуальный интерфейс функций устройства ввода/вывода закреплены за гостевой виртуальной машиной.
20. Система по п.19, в которой если виртуальный интерфейс функций устройства ввода/вывода не может работать совместимо с архитектурой гостевой виртуальной машины, то драйвер устройства обслуживающей виртуальной машины дополнительно:
переводит информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, в теневую информацию ввода/вывода, которая соответствует архитектуре виртуального интерфейса функций устройства ввода/вывода; и
переводит обновленную теневую информацию ввода/вывода, которая соответствует архитектуре, виртуального интерфейса функций устройства ввода/вывода, в обновленную информацию ввода/вывода, которая соответствует архитектуре гостевой виртуальной машины, при этом обновленная теневая информация ввода/вывода обновлена виртуальным интерфейсом функций устройства ввода/вывода в ответ на реализацию операции ввода/вывода.
21. Система по п.20, в которой гостевая виртуальная машина записывает информацию ввода/вывода в структуру данных, начиная с указателя начала, который обновляется виртуальным интерфейсом функций устройства ввода/вывода.
22. Система по п.20, в которой гостевая виртуальная машина обновляет указатель конца, указывающий конец информации ввода/вывода.
23. Система по п.20, в которой монитор виртуальных машин передает управление системой от гостевой виртуальной машины на обслуживающую виртуальную машину, если определено, что обновлен указатель конца.
24. Система по п.20, в которой виртуальный интерфейс функций устройства ввода/вывода обновляет информацию ввода/вывода в ответ на реализацию операции ввода/вывода.
25. Система по п.20, в которой драйвер устройства поддерживает состояние виртуального интерфейса функций устройства ввода/вывода после реализации операции ввода/вывода.
26. Система по п.20, в которой модель устройства сообщает гостевой виртуальной машине о реализации операции ввода/вывода.
WO 2007115425 A1, 18.10.2007 | |||
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
CN 1936845 A, 28.03.2007 | |||
WO 2009058490 A2, 07.05.2009 | |||
ОБЕСПЕЧЕНИЕ ЗАЩИЩЕННОГО ВВОДА В СИСТЕМУ С ВЫСОКОНАДЕЖНОЙ СРЕДОЙ ИСПОЛНЕНИЯ ПРОГРАММ | 2004 |
|
RU2365988C2 |
Авторы
Даты
2014-11-10—Публикация
2009-12-24—Подача