СПОСОБ И УСТРОЙСТВА ОБРАБОТКИ ВИРТУАЛИЗАЦИИ И КОМПЬЮТЕРНАЯ СИСТЕМА Российский патент 2016 года по МПК G06F9/455 

Описание патента на изобретение RU2573219C2

Перекрестная ссылка на родственные заявки

[0001] Данная заявка является продолжением международной заявки № PCT/CN2012/075846, поданной 22 мая 2012 г., которая испрашивает приоритет по заявке на патент Китая №201110458345.8, поданной 31 декабря 2011 г., которые обе, таким образом, включены посредством ссылки в полном объеме.

Область техники, к которой относится изобретение

[0002] Настоящее изобретение относится к области компьютерных технологий и, в частности, к способу и устройствам обработки виртуализации и компьютерной системе.

Уровень техники

[0003] Технология виртуализации является технологией развязки для отделения аппаратного устройства низкого уровня от операционной системы и прикладных программ более высокого уровня, и, согласно фиг. 1, уровень монитора виртуальной машины (VMM, монитор виртуальной машины) предложен для непосредственного управления аппаратными ресурсами низкого уровня, создания виртуальной машины (VM, виртуальная машина), не зависящей от оборудования низкого уровня, для использования операционной системой и прикладными программами более высокого уровня.

[0004] Технология виртуализации, в качестве одной из важных поддерживающих технологий популярной в настоящее время платформы облачных вычислений (облачные вычисления) может значительно повышать эффективность использования ресурсов физического устройства. По сравнению с традиционным физическим сервером, виртуальная машина имеет лучшую изоляцию и инкапсуляцию, и информация виртуальной машины в целом может сохраняться в виртуальном образе диска (VDI, виртуальный образ диска), для удобства осуществления операций, например, фотографирования, резервного копирования, клонирования и доставки для виртуальной машины.

[0005] С развитием процессора x86, технология виртуализации центрального процессора (ЦП, центральный процессор) и памяти постоянно совершенствуется, при этом служебная нагрузка постоянно снижается. Согласно данным по последнему процессору, служебная нагрузка виртуализации ЦП и памяти для большинства приложений составляла менее 10%. В области виртуализации ввода/вывода (I/O, ввод/вывод), решение I/O виртуализации, имеющее высокую производительность и низкую задержку, все еще является ключевой технической задачей в области виртуализации. Традиционное решение виртуализации I/O включает в себя два типа, а именно, программное решение и аппаратное решение. Однако традиционные программное решение и аппаратное решение имеют выдающиеся преимущества и недостатки. Например, традиционное программное решение имеет преимущество в совместимости, но имеет большую потерю производительности; аппаратное решение может обеспечивать желаемую производительность, но сталкивается с такими проблемами, как совместимость признаков и совместимость гостевой операционной системы (гостевой OS).

Сущность изобретения

[0006] Варианты осуществления настоящего изобретения предусматривают способ и устройства обработки виртуализации, и компьютерную систему, для оптимизации производительность и совместимость системы виртуализации.

[0007] Для решения вышеупомянутых технических проблем варианты осуществления настоящего изобретения предусматривают следующие технические решения.

[0008] В одном аспекте, вариант осуществления настоящего изобретения предусматривает способ обработки виртуализации, который применяется к вычислительному узлу, и вычислительный узел включает в себя:

аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, где аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF;

способ включает в себя этапы, на которых:

предварительно выделяют, посредством FE, кэш-память для прямого доступа к памяти DMA;

получают, посредством экземпляра программного обеспечения VF, связанного с BE, адрес, соответствующий кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записывают полученный адрес, соответствующий кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; выбирают, посредством устройства VF, адрес, соответствующий кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициируют запрос записи DMA с использованием выбранного адреса, соответствующего кэш-памяти для DMA, в качестве целевого адреса; объявляют, посредством устройства VF, экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.

[0009] В другом аспекте, вариант осуществления настоящего изобретения дополнительно предусматривает способ обработки виртуализации, включающий в себя этапы, на которых:

после активации виртуальной функции I/O устройства ввода/вывода I/O, генерируют несколько экземпляров программного обеспечения VF на хосте; где несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии;

создают, посредством хоста, виртуальное устройство I/O, однотипное устройству I/O,

где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной виртуальной машине VM; и

связывают BE с неактивным экземпляром программного обеспечения VF.

[0010] В другом аспекте, вариант осуществления настоящего изобретения дополнительно предусматривает вычислительный узел, включающий в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, где аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF;

где FE выполнен с возможностью предварительного выделения кэш-памяти для прямого доступа к памяти DMA;

экземпляр программного обеспечения VF, связанный с BE, выполнен с возможностью получения адреса, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записи полученного адреса, соответствующего кэш-памяти для DMA, в первый блок хранения в устройстве VF соответствующий экземпляру программного обеспечения VF;

устройство VF выполнено с возможностью выбора адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирования запроса записи DMA с использованием выбранного адреса, соответствующего кэш-памяти для DMA, в качестве целевого адреса; и объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.

[0011] В другом аспекте, вариант осуществления настоящего изобретения дополнительно предусматривает хост, включающий в себя:

первый модуль создания, выполненный с возможностью, после активации виртуальной функции I/O устройства ввода/вывода I/O, генерировать несколько экземпляров программного обеспечения VF на хосте; где несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии;

второй модуль создания, выполненный с возможностью создания виртуального устройства I/O, однотипного устройству I/O,

где, экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной виртуальной машине VM; и

модуль связывания, выполненный с возможностью связывания BE, созданного вторым модулем создания, с неактивным экземпляром программного обеспечения VF, созданным первым модулем создания.

[0012] Можно видеть, что, вычислительный узел в вариантах осуществления настоящего изобретения может включать в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; где BE на хосте связана с неактивным экземпляром программного обеспечения VF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика, и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства I/O находится в VM, поэтому FE переносит данные через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

Краткое описание чертежей

[0013] Для пояснения технических решений вариантов осуществления настоящего изобретения или уровня техники, прилагаемые чертежи, используемые в описании вариантов осуществления или уровня техники, кратко описаны ниже. Очевидно, прилагаемые чертежи иллюстрируют некоторые иллюстративные варианты осуществления настоящего изобретения, и специалисты в данной области техники может получить другие чертежи на основании этих чертежей без применения творческих способностей.

[0014] Фиг. 1 - упрощенная архитектурная схема традиционной технологии виртуализации;

[0015] фиг. 2-a - упрощенная архитектурная схема программной и аппаратной системы виртуализации, предусмотренной согласно варианту осуществления настоящего изобретения;

[0016] фиг. 2-b - упрощенная архитектурная схема другой программной и аппаратной системы виртуализации, предусмотренной согласно варианту осуществления настоящего изобретения;

[0017] фиг. 3 - упрощенная блок-схема операций способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;

[0018] фиг. 4 - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;

[0019] фиг. 5 - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;

[0020] фиг. 6-a - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;

[0021] фиг. 6-b - упрощенная схема трансляции адреса GPA и HPA, предусмотренной согласно варианту осуществления настоящего изобретения;

[0022] фиг. 7-a - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;

[0023] фиг. 7-b - упрощенная схема другой трансляции адреса GPA и HPA, предусмотренной согласно варианту осуществления настоящего изобретения;

[0024] фиг. 8-a - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;

[0025] фиг. 8-b - упрощенная схема другой трансляции адреса GPA и HPA, предусмотренной согласно варианту осуществления настоящего изобретения;

[0026] фиг. 9-a - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;

[0027] фиг. 9-b - упрощенная схема другой трансляции адреса GPA и HPA, предусмотренной согласно варианту осуществления настоящего изобретения;

[0028] фиг. 10 - упрощенная схема модульной архитектуры хоста, предусмотренной согласно варианту осуществления настоящего изобретения;

[0029] фиг. 11-a - упрощенная схема вычислительного узла, предусмотренного согласно варианту осуществления настоящего изобретения;

[0030] фиг. 11-b - упрощенная схема другого вычислительного узла, предусмотренного согласно варианту осуществления настоящего изобретения;

[0031] фиг. 11-c - упрощенная схема другого вычислительного узла, предусмотренного согласно варианту осуществления настоящего изобретения; и

[0032] фиг. 12 - упрощенная схема компьютерной системы, предусмотренной согласно варианту осуществления настоящего изобретения.

Подробное описание вариантов осуществления

[0033] Варианты осуществления настоящего изобретения предусматривают способ и устройства обработки виртуализации, и компьютерную систему, для оптимизации производительности и совместимости системы виртуализации.

[0034] Чтобы решения настоящего изобретения стали понятнее специалистам в данной области техники, технические решения в вариантах осуществления настоящего изобретения отчетливо и полностью описаны ниже со ссылкой на прилагаемые чертежи в вариантах осуществления настоящего изобретения. Очевидно, что варианты осуществления, подлежащие описанию, составляют лишь часть, а не все из вариантов осуществления настоящего изобретения. Все остальные варианты осуществления, полученные специалистами в данной области техники на основании вариантов осуществления настоящего изобретения без применения творческих способностей, должны попадать в объем защиты настоящего изобретения.

[0035] Для облегчения понимания вариантов осуществления настоящего изобретения, сначала проиллюстрируем несколько элементов, которые будут введены в описании вариантов осуществления настоящего изобретения.

[0036] Виртуальная машина VM:

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

[0037] Аппаратный уровень:

Аппаратная платформа выполняется в среде виртуализации. Аппаратный уровень может включать в себя множественные типы оборудования, например аппаратный уровень вычислительного узла может включать в себя ЦП и память, и может включать в себя высокоскоростные/низкоскоростные устройства ввода/вывода (I/O, ввод/вывод), например, сетевую карту и хранилище, и другие устройства, имеющие конкретные функции обработки, например, блок управления памятью ввода/вывода (IOMMU, блок управления памятью ввода/вывода), где IOMMU может быть выполнен с возможностью трансляции физического адреса виртуальной машины и физического адреса хоста.

[0038] Виртуальная функция I/O:

Соответствующее устройство физической функции (PF, физическая функция) и несколько устройств виртуальной функции (VF, виртуальная функция) можно виртуализировать из устройства I/O, имеющего виртуальную функцию I/O, после активации виртуальной функции I/O, где устройство PF, виртуализированное из устройства I/O, в основном, отвечает за функцию управления, и устройство VF, в основном, отвечает за функцию обработки.

[0039] Хост (Хост):

Хост, в качестве уровня управления, выполнен с возможностью выполнения управления и выделения аппаратных ресурсов; представления виртуальной аппаратной платформы для виртуальной машины; и реализации планирования и изоляции виртуальной машины. Хостом может быть монитор виртуальной машины (VMM); и, кроме того, иногда, VMM может объединяться с одной прерогативной виртуальной машиной для формирования хоста. Виртуальная аппаратная платформа обеспечивает различные аппаратные ресурсы для виртуальных машин, выполняющихся на платформе, например, обеспечивает виртуальный ЦП, память, виртуальный диск, виртуальную сетевую карту и т.д. Виртуальный диск может соответствовать одному файлу или одному устройству логического блока хоста. Виртуальная машина выполняется на виртуальной аппаратной платформе, подготовленной хостом, и хост может иметь одну или более виртуальных машин выполняющихся на хосте.

[0040] На фиг. 2-a и фиг. 2-b, фиг. 2-a и фиг. 2-b показаны упрощенные архитектурные схемы программных и аппаратных систем двух решений виртуализации, предусмотренных в вариантах осуществления настоящего изобретения. Архитектура системы, в основном, включает в себя три уровня: аппаратный уровень, хост и виртуальную машину (VM). Аппаратный уровень, показанный на фиг. 2-a или фиг. 2-b, включает в себя устройство I/O, и аппаратный уровень, показанный на фиг. 2-a, дополнительно включает в себя IOMMU. Хост выполняется на аппаратном уровне, и, по меньшей мере, одна виртуальная машина VM выполняется на хосте, где несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны (BE, внутренняя сторона) виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны (FE, внешняя сторона) виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF. В техническом решении варианта осуществления настоящего изобретения, BE в VM можно рассматривать как драйвер внешней стороны виртуального устройства I/O, FE на хосте можно рассматривать как драйвер внутренней стороны виртуального устройства I/O, и виртуальное устройство I/O состоит из BE и FE.

[0041] Способ обработки виртуализации согласно варианту осуществления настоящего изобретения можно применять к вычислительному узлу, где вычислительный узел содержит: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, аппаратный уровень включает в себя устройство ввода/вывода I/O, способ обработки виртуализации может включать в себя: после активации виртуальной функции I/O устройства ввода/вывода I/O, генерацию нескольких экземпляров программного обеспечения виртуальной функции (VF, виртуальная функция) на хосте; несколько соответствующих устройств виртуальной функции (VF) виртуализируется из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; создание, посредством хоста, виртуального устройства I/O, однотипного устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, в инициированной VM создается экземпляр внешней стороны FE виртуального устройства I/O; и связывание BE с неактивным экземпляром программного обеспечения VF.

[0042] Согласно фиг. 3, способ обработки виртуализации, предусмотренный согласно варианту осуществления настоящего изобретения, может включать в себя:

[0043] 301. После активации виртуальной функции I/O устройства ввода/вывода I/O, генерацию нескольких экземпляров программного обеспечения виртуальной функции VF (экземпляров VF) на хосте;

где несколько соответствующих устройств VF можно виртуализировать из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии. Например, хост может активировать виртуальную функцию I/O устройства I/O во время инициирования или в определенный момент после инициирования, для активации виртуальной функции I/O устройства I/O. Альтернативно, устройство I/O может автоматически активировать свою виртуальную функцию I/O после активации питания устройства, и в этом случае, хосту не требуется активировать виртуальную функцию I/O устройства I/O.

[0044] Следует отметить, что устройство I/O, упомянутое согласно варианту осуществления настоящего изобретения, может представлять собой, например, устройство высокоскоростного соединения периферийных компонентов (PCIe, Peripheral Component Interconnect Express) или устройство другого типа, например, сетевую карту.

[0045] 302. Создание, посредством хоста, виртуального устройства I/O, однотипного устройству I/O, где экземпляр внутренней стороны (BE, внутренняя сторона) виртуального устройства I/O (vDEV) создается на хосте, и экземпляр внешней стороны (FE, внешняя сторона) виртуального устройства I/O создается в инициированной VM.

[0046] 303. Связывание, посредством хоста, BE с неактивным экземпляром программного обеспечения VF.

[0047] Если хост создает несколько виртуальных устройств I/O, однотипных устройству I/O, экземпляр внутренней стороны BE каждого виртуального устройства I/O связывается с неактивным экземпляром программного обеспечения VF, и между BE и экземпляром программного обеспечения VF, которые находятся в отношении связывания, существует интерфейс взаимного доступа, например, BE может осуществлять доступ к устройству VF, соответствующему экземпляру программного обеспечения VF, через интерфейс доступа, обеспеченный экземпляром программного обеспечения VF, связанным с BF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, поэтому VM полезно получать примерно такую же производительность, как у физической машины. На основе архитектуры приложения, построенной хостом, VM может передавать данные, принимать данные или осуществлять обработку данных в других формах.

[0048] Например, согласно фиг. 2-a и фиг. 2-b, несколько соответствующих устройств VF можно виртуализировать из устройства I/O (например, устройства PCIe) при активированной виртуальной функции I/O, и соответствующее устройство физической функции (PF, физическая функция) можно дополнительно виртуализировать из устройства I/O при активированной виртуальной функции I/O, экземпляры внутренней стороны BE нескольких виртуальных устройств I/O, однотипных с устройством I/O и созданных хостом, располагаются на хосте, и экземпляр внешней стороны FE каждого виртуального устройства I/O располагается в отдельной VM. Совместно используемую память можно дополнительно конфигурировать между хостом и VM, и экземпляр внутренней стороны BE и экземпляр внешней стороны FE виртуального устройства I/O могут, например, переносить данные через совместно используемую память.

[0049] Можно видеть, что, в этом варианте осуществления, после активации виртуальной функции I/O устройства ввода/вывода I/O, несколько экземпляров программного обеспечения VF генерируются на хосте; несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост создает виртуальное устройство I/O, однотипное устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, и в инициированной VM создается экземпляр внешней стороны FE виртуального устройства I/O; BE связана с неактивным экземпляром программного обеспечения VF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства находится в VM, поэтому данные переносятся через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

[0050] Согласно фиг. 4, другой способ обработки виртуализации, предусмотренный согласно варианту осуществления настоящего изобретения применяется к вычислительному узлу, вычислительный узел включает в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, где аппаратный уровень включает в себя устройство ввода/вывода I/O, способ может включать в себя:

[0051] 401. Активацию, посредством хоста, виртуальной функции I/O устройства ввода/вывода I/O.

Например, хост может активировать виртуальную функцию I/O устройства I/O во время инициирования или в определенный момент после инициирования, для активации виртуальной функции I/O устройства I/O. Несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O. Альтернативно, устройство I/O может автоматически активировать свою виртуальную функцию I/O после активации питания устройства, и в этом случае, хосту не требуется активировать виртуальную функцию I/O устройства I/O.

[0052] 402. Генерацию нескольких экземпляров программного обеспечения VF на хосте, где несколько соответствующих устройств VF можно виртуализировать из устройства I/O при активированной виртуальной функции I/O, и несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии.

[0053] 403. Создание, посредством хоста, виртуального устройства I/O, однотипного устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O (vDEV) создается на хосте, и экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной VM.

[0054] 404. Связывание, посредством хоста, BE с неактивным экземпляром программного обеспечения VF.

[0055] Если хост создает несколько виртуальных устройств I/O, однотипных устройству I/O, экземпляр внутренней стороны BE каждого виртуального устройства I/O связывается с неактивным экземпляром программного обеспечения VF, и между BE и экземпляром программного обеспечения VF, которые находятся в отношении связывания, существует интерфейс взаимного доступа, например, BE может осуществлять доступ к устройству VF, соответствующему экземпляру программного обеспечения VF, через интерфейс доступа, обеспеченный экземпляром программного обеспечения VF, связанным с BE. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в VM проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, поэтому VM полезно получать примерно такую же производительность, как у физической машины. На основе архитектуры приложения, построенной хостом, VM может передавать данные, принимать данные или осуществлять обработку данных в других формах.

[0056] Например, согласно фиг. 2-a и фиг. 2-b, несколько соответствующих устройств VF можно виртуализировать из устройства I/O (например, устройства PCIe) при активированной виртуальной функции I/O, и соответствующее устройство физической функции PF можно дополнительно виртуализировать из устройства I/O при активированной виртуальной функции I/O (хост может дополнительно генерировать экземпляр программного обеспечения PF, соответствующий устройству PF), экземпляры внутренней стороны BE нескольких виртуальных устройств I/O, однотипных с устройством I/O и созданных хостом, располагаются на хосте, и экземпляр внешней стороны FE каждого виртуального устройства I/O располагается в отдельной VM. Совместно используемую память можно дополнительно конфигурировать между хостом и VM, и экземпляр внутренней стороны BE и экземпляр внешней стороны FE виртуального устройства I/O может, например, переносить данные через совместно используемую память.

[0057] Для простоты понимания, необязательный режим взаимодействия архитектуры приложения, построенной на основании вышеупомянутого механизма, проиллюстрирован ниже на примере процедуры приема данных.

[0058] В сценарии приложения, после того, как хост связывает BE и неактивный экземпляр программного обеспечения VF, FE может предварительно выделять кэш-память для прямого доступа к памяти (DMA, прямой доступ к памяти); FE может записывать физический адрес гостя (GPA, физический адрес гостя), соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM; через экспортирующий интерфейс прикладного программирования BE, экземпляр программного обеспечения VF, связанный с BE, может получать GPA, соответствующий кэш-памяти для DMA; экземпляр программного обеспечения VF может записывать полученный GPA, соответствующий кэш-памяти для DMA, в очередь приема устройства VF, соответствующего экземпляру программного обеспечения VF; при наличии данных, подлежащих приему, устройство VF может выбирать GPA, соответствующий кэш-памяти для DMA, из очереди приема устройства VF, и может инициировать запрос записи DMA (запрос записи DMA используется для записи данных в кэш-память) с использованием выбранного GPA в качестве целевого адреса; блок управления памятью ввода/вывода IOMMU преобразует целевой адрес GPA запроса записи DMA в соответствующий физический адрес хоста HPA (где таблица страниц трансляции адреса, например, устанавливается в IOMMU, в таблице страниц трансляции адреса задано отображение между HPA и GPA; когда запрос записи DMA проходит, IOMMU может получать HPA, соответствующий целевому адресу GPA запроса записи DMA, посредством поиска в таблице страниц трансляции адреса, и преобразовывать целевой адрес GPA запроса записи DMA в полученный HPA); после выполнения запроса записи DMA, целевой адрес которого преобразуется в HPA, устройство VF может объявлять экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает соответствующий FE для приема данных, записанных в кэш-память, соответствующую HPA.

[0059] В другом сценарии приложения, после того, как хост связывает BE и неактивный экземпляр программного обеспечения VF, FE может предварительно выделять кэш-память для DMA; FE может записывать GPA, соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM; хост (например, BE или другой модуль на хосте) может преобразовывать GPA, соответствующий кэш-памяти для DMA, в соответствующий HPA (например, на хосте устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между HPA и GPA; посредством поиска в таблице страниц трансляции адреса, хост (например, BE или другой модуль на хосте) может получать HPA, соответствующий GPA, который соответствует кэш-памяти для DMA, и преобразовывать GPA, соответствующий кэш-памяти для DMA в полученный HPA); экземпляр программного обеспечения VF, связанный с BE на хосте получает, через экспортирующий интерфейс прикладного программирования BE, HPA, соответствующий кэш-памяти для DMA; полученный HPA, соответствующий кэш-памяти для DMA, записывается в очередь приема устройства VF, соответствующего экземпляру программного обеспечения VF; при наличии данных, подлежащих приему, устройство VF выбирает HPA, соответствующий кэш-памяти для DMA, из очереди приема устройства VF, и инициирует запрос записи DMA (запрос записи DMA используется для записи данных в кэш-память) с использованием выбранного HPA в качестве целевого адреса; после выполнения запроса записи DMA, устройство VF может дополнительно объявлять экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает соответствующий FE для приема данных, записанных в кэш-память, соответствующую HPA.

[0060] Для простоты понимания, необязательный режим взаимодействия архитектуры приложения, построенной на основании вышеупомянутого механизма, проиллюстрирован ниже на примере процедуры передачи данных.

[0061] В сценарии приложения, после того, как хост связывает BE и неактивный экземпляр программного обеспечения VF, FE может записывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM; соответствующий BE может вызывать программный интерфейс передачи экземпляра программного обеспечения VF, связанного с BE, и записывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в очередь передачи устройства VF, соответствующего экземпляру программного обеспечения VF; обнаружив наличие данных, подлежащих передаче, устройство VF инициирует запрос чтения DMA (запрос записи DMA используется для считывания данных из кэш-памяти) с использованием GPA, записанного в очереди передачи устройства VF, в качестве целевого адреса; и IOMMU преобразует целевой адрес GPA запроса чтения DMA в соответствующий HPA (где таблица страниц трансляции адреса, например, устанавливается в IOMMU, в таблице страниц трансляции адреса задано отображение между HPA и GPA; когда запрос чтения DMA проходит, IOMMU может получать HPA, соответствующий целевому адресу GPA запроса чтения DMA, посредством поиска в таблице страниц трансляции адреса, и преобразовывать целевой адрес GPA запроса чтения DMA в полученный HPA). Дополнительно, после выполнения запроса чтения DMA, устройство VF может объявлять экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает соответствующий FE для освобождения соответствующей кэш-памяти.

[0062] В другом сценарии приложения, после того, как хост связывает BE и неактивный экземпляр программного обеспечения VF, FE может записывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM; хост (например, BE или другой модуль на хосте) может преобразовывать GPA, соответствующий кэш-памяти в соответствующий HPA (например, на хосте устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между HPA и GPA; посредством поиска в таблице страниц трансляции адреса, хост (например, BE или другой модуль на хосте) может получать HPA, соответствующий GPA, который соответствует кэш-памяти, и преобразовывать GPA, соответствующий кэш-памяти в полученный HPA), соответствующий BE может вызывать программный интерфейс передачи экземпляра программного обеспечения VF, связанного с BE, и записывать HPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в очередь передачи устройства VF, соответствующего экземпляру программного обеспечения VF; при обнаружении наличия данных, подлежащих передаче, устройство VF инициирует запрос чтения DMA с использованием HPA, записанного в очереди передачи устройства VF, в качестве целевого адреса. Дополнительно, после выполнения запроса чтения DMA, устройство VF может объявлять экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает соответствующий FE для освобождения соответствующей кэш-памяти.

[0063] Необязательный режим взаимодействия архитектуры приложения, построенной на основе вышеупомянутого механизма, проиллюстрирован ниже на примере процедур передачи данных и приема данных, и режимы взаимодействия в других сценариях приложения можно вывести по аналогии.

[0064] Можно видеть, что, в этом варианте осуществления, после активации виртуальной функции I/O устройства ввода/вывода I/O, несколько экземпляров программного обеспечения VF генерируются на хосте; несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост создает виртуальное устройство I/O, однотипное устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, и экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной VM; BE связана с неактивным экземпляром программного обеспечения VF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика, и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства находится в VM, поэтому данные переносятся через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

[0065] Вариант осуществления настоящего изобретения дополнительно предусматривает способ обработки виртуализации, который применяется к вычислительному узлу, вычислительный узел может включать в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, где аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF, способ включает в себя этапы, на которых: предварительно выделяют, посредством FE, кэш-память для прямого доступа к памяти DMA; получают, посредством экземпляра программного обеспечения VF, связанного с BE, адрес, соответствующий кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записывают полученный адрес, соответствующий кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; выбирают, посредством устройства VF, адрес, соответствующий кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициируют запрос записи DMA с использованием выбранного адреса, соответствующего кэш-памяти для DMA, в качестве целевого адреса; объявляют, посредством устройства VF, экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.

[0066] Согласно фиг. 5, другой способ обработки виртуализации согласно варианту осуществления настоящего изобретения может включать в себя следующие этапы:

[0067] 501. Предварительное выделение, посредством FE, кэш-памяти для прямого доступа к памяти DMA.

[0068] 502. Получение, посредством экземпляра программного обеспечения VF, связанного с BE, адреса (адресом является, например, HPA или GPA), соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, и запись полученного адреса, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF (где первым блоком хранения является, например, очередь приема или список приема устройства VF или другая структура хранения данных, пригодная для записи адреса)

[0069] 503. Выбор, посредством устройства VF, адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирование запроса записи DMA с использованием выбранного адреса, соответствующего кэш-памяти для DMA, в качестве целевого адреса.

[0070] 504. Объявление, посредством устройства VF, экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.

[0071] Можно видеть, что, в этом варианте осуществления, вычислительный узел может включать в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, где аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, и между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства I/O находится в VM, поэтому FE переносит данные через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

[0072] Согласно варианту осуществления настоящего изобретения, после того, как FE предварительно выделяет кэш-память для DMA, FE может записывать GPA, соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM; экземпляр программного обеспечения VF, связанный с BE, может получать GPA, соответствующий кэш-памяти для DMA, из совместно используемой памяти через экспортирующий интерфейс прикладного программирования BE (определенно, FE также может объявлять GPA, соответствующий предварительно выделенной кэш-памяти для DMA, соответствующему BE; и экземпляр программного обеспечения VF, связанный с BE, может получать GPA, соответствующий кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE), записывать полученный GPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; и, при наличии данных, подлежащих приему, устройство VF может выбирать GPA, соответствующий кэш-памяти для DMA, из первого блока хранения, и инициировать запрос записи DMA с использованием GPA, соответствующий кэш-памяти для DMA, в качестве целевого адреса; IOMMU может преобразовывать целевой адрес GPA запроса записи DMA в соответствующий HPA (например, в IOMMU устанавливается таблица страниц трансляции адреса, например, в таблице страниц трансляции адреса задано отображение между HPA и GPA; IOMMU получает HPA, соответствующий целевому адресу GPA запроса записи DMA, посредством поиска в таблице страниц трансляции адреса, и преобразует целевой адрес GPA запроса записи DMA в полученный HPA); после выполнения запроса записи DMA, целевой адрес GPA которого преобразуется в HPA, устройство VF объявляет экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую HPA.

[0073] В другом сценарии приложения, после того, как FE предварительно выделяет кэш-память для DMA, FE может записывать GPA, соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM; хост может преобразовывать GPA, соответствующий кэш-памяти для DMA в совместно используемой памяти, в соответствующий HPA (например, на хосте устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между HPA и GPA; посредством поиска в таблице страниц трансляции адреса, хост может получать HPA, соответствующий GPA, который соответствует кэш-памяти для DMA в совместно используемой памяти, и преобразовывать GPA, соответствующий кэш-памяти для DMA в совместно используемой памяти, в полученный HPA. Определенно, FE также может объявлять GPA, соответствующий предварительно выделенной кэш-памяти для DMA, соответствующему BE, и хост может преобразовывать GPA, соответствующий кэш-памяти для DMA, в соответствующий HPA); экземпляр программного обеспечения VF, связанный с BE получает, через экспортирующий интерфейс прикладного программирования BE, HPA, соответствующий кэш-памяти для DMA; полученный HPA, соответствующий кэш-памяти для DMA, записывается в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; при наличии данных, подлежащих приему, устройство VF выбирает HPA, соответствующий кэш-памяти для DMA, из первого блока хранения, и инициирует запрос записи DMA с использованием выбранного HPA в качестве целевого адреса.

[0074] Согласно варианту осуществления настоящего изобретения, когда FE имеет данные, подлежащие передаче, FE может записывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM; BE может получать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, из совместно используемой памяти (определенно, FE также может объявлять GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, соответствующему BE, и BE получает, согласно объявлению, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче); BE вызывает программный интерфейс передачи экземпляра программного обеспечения VF, связанного с BE, и записывает GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF (где вторым блоком хранения является, например, очередь передачи или список передачи устройства VF или другая структура хранения данных, пригодная для записи адреса); при обнаружении наличия данных, подлежащих передаче, устройство VF инициирует запрос чтения DMA с использованием GPA, записанного во втором блоке хранения, в качестве целевого адреса; IOMMU может преобразовывать целевой адрес GPA запроса чтения DMA в соответствующий HPA (например, в IOMMU устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между HPA и GPA; IOMMU получает HPA, соответствующий целевому адресу GPA запроса чтения DMA, посредством поиска в таблице страниц трансляции адреса, и преобразует целевой адрес GPA запроса чтения DMA в полученный HPA). Дополнительно, после выполнения запроса чтения DMA, устройство VF может объявлять экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает FE для освобождения соответствующей кэш-памяти.

[0075] В другом варианте осуществления настоящего изобретения, когда FE имеет данные, подлежащие передаче, FE может записывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM; хост преобразует GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA (например, на хосте устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между HPA и GPA; посредством поиска в таблице страниц трансляции адреса, хост получает HPA, соответствующий GPA, который соответствует кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, и преобразует GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA. Определенно, FE также может объявлять GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, хосту, и хост преобразует GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в соответствующий HPA); BE получает HPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, вызывает программный интерфейс передачи экземпляра программного обеспечения VF, связанного с BE, и записывает HPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF (где вторым блоком хранения является, например, очередь передачи или список передачи устройства VF или другая структура хранения данных, пригодная для записи адреса); при обнаружении наличия данных, подлежащих передаче, устройство VF инициирует запрос чтения DMA с использованием HPA, записанного во втором блоке хранения, в качестве целевого адреса. Дополнительно, после выполнения запроса чтения DMA, устройство VF может объявлять экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает FE для освобождения соответствующей кэш-памяти.

[0076] Для улучшения понимания и реализации вышеупомянутых решений в вариантах осуществления настоящего изобретения, в качестве примеров дополнительно проиллюстрировано несколько конкретных сценариев приложения приема данных и передачи данных.

[0077] Согласно фиг. 6-a, другой способ обработки виртуализации, предусмотренный согласно варианту осуществления настоящего изобретения, может включать в себя:

[0078] 601. Активацию, посредством хоста, IOMMU;

где хост может активировать IOMMU во время инициирования или в определенный момент после инициирования; определенно, IOMMU также может автоматически активировать соответствующую функцию при включении питания устройства, и в этом случае, хосту не требуется активировать IOMMU; и определенно, для активации IOMMU также можно использовать другой модуль.

[0079] 602. Установку драйверов устройства PF и устройства VF на хосте, где устройство PF и устройство VF соответствуют устройству I/O (например, обозначенному E-1).

[0080] 603. Активацию, посредством хоста, виртуальной функции I/O устройства I/O E-1;

где, например, хост может активировать виртуальную функцию I/O устройства I/O E-1 во время инициирования или в определенный момент после инициирования. Соответствующее устройство физической функции PF и несколько устройств виртуальной функции VF можно виртуализировать из устройства I/O E-1 при активированной виртуальной функции I/O, определенно, другой модуль можно использовать для активации устройства I/O E-1, и определенно, устройство I/O E-1 также может автоматически активировать свою виртуальную функцию I/O при включении питания устройства, и в этом случае, хосту или другому модулю не требуется активировать виртуальную функцию I/O устройства I/O E-1. Устройство PF, виртуализированное из устройства I/O E-1 в основном, отвечает за функцию управления, и устройство VF, в основном, отвечает за функцию обработки.

[0081] 604. Генерацию экземпляра программного обеспечения PF и нескольких экземпляров программного обеспечения VF на хосте; где соответствующее устройство PF и несколько устройств VF можно виртуализировать из устройства I/O E-1 при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии, и экземпляр программного обеспечения PF, сгенерированный на хосте, соответствует устройству PF, виртуализированному из устройства I/O E-1.

[0082] 605. Создание, посредством хоста, виртуального устройства I/O (например, обозначенного vE-1), однотипного устройству I/O E-1;

где экземпляр внутренней стороны BE (например, обозначенный BE-1) виртуального устройства I/O vE-1 создается на хосте, и экземпляр внешней стороны FE (например, обозначенный FE-1) виртуального устройства I/O vE-1 создается в инициированной VM (например, обозначенной VM-1). Например, хост может запускать создание экземпляра внешней стороны FE-1, соответствующего виртуальному устройству I/O vE-1 в инициированной VM-1. Можно рассматривать, что, FE-1, созданный в VM-1, и BE-1, созданный на хосте, совместно образуют драйвер виртуального устройства I/O vE-1.

[0083] 606. Связывание, посредством хоста, созданного BE-1 с одним неактивным экземпляром программного обеспечения VF (например, обозначенным Vfe-1);

где экземпляр программного обеспечения VF Vfe-1, например, соответствует устройству VF (например, обозначенному VF-1) виртуализированному из устройства I/O E-1. Так называемый неактивный экземпляр программного обеспечения VF является экземпляром программного обеспечения VF, который не связан с другим экземпляром внутренней стороны BE.

[0084] До сих пор, между устройством VF VF-1, виртуализированным из устройства I/O E-1, и экземпляром внешней стороны FE-1 в VM-1 проходит канал, таким образом, FE-1 может осуществлять доступ к устройству VF VF-1 через BE-1 на хосте. Устройство VF VF-1 по отдельности выделяется VM-1 для использования, устройство VF VF-1 виртуализируется из устройства I/O E-1 и может обеспечивать высокоэффективный интерфейс устройства, поэтому VM-1 полезно получать примерно такую же производительность, как у физической машины, задержка невелика, и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть FE-1) виртуального устройства находится в VM-1, поэтому данные переносятся через привод внутренней стороны (то есть BE-1) на хосте, и VM-1 не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства.

[0085] 607. Предварительное выделение, посредством FE-1, кэш-памяти для прямого доступа к памяти (DMA);

[0086] Например, кэш-память, которая используется для DMA и предварительно выделяется FE-1, может быть [GPA1, Len1], … [GPAn, Lenn], то есть множественные секции кэш-памяти для DMA могут предварительно выделяться, где GPA1 представляет начальный адрес GPA кэш-памяти, Len1 представляет длину кэш-памяти, и т.д.

[0087] 608. Запись, посредством FE-1, GPA, соответствующего предварительно выделенной кэш-памяти для DMA, в совместно используемую память (совместно используемая память) между хостом и VM-1, и объявление BE-1 (определенно, возможно также, что после осуществления самообнаружения, BE-1 находит, что GPA, соответствующий кэш-памяти для DMA, записан в совместно используемую память).

[0088] 609. Получение, посредством экземпляра программного обеспечения VF Vfe-1, GPA, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE-1, и запись полученного GPA, соответствующего кэш-памяти для DMA, в очередь приема устройства VF VF-1, соответствующего экземпляру программного обеспечения VF Vfe-1.

[0089] 610. Выбор, посредством устройства VF VF-1, GPA, соответствующий кэш-памяти для DMA, из очереди приема устройства VF при наличии данных, подлежащих приему, и инициирование запроса записи DMA с использованием выбранного GPA в качестве целевого адреса;

где запрос записи DMA, инициированный устройством VF VF-1, будет проходить IOMMU.

[0090] 611. Преобразование, посредством IOMMU, целевого адреса GPA запроса записи DMA в соответствующий HPA;

где, например, в IOMMU устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между GPA и HPA (например, как показано на фиг. 6-b). Когда запрос записи DMA проходит, IOMMU может получать HPA, соответствующий целевому адресу GPA запроса записи DMA, посредством поиска в таблице страниц трансляции адреса, и преобразовывать целевой адрес GPA запроса записи DMA в полученный HPA.

[0091] 612. Объявление, посредством устройства VF VF-1, соответствующего экземпляра программного обеспечения VF Vfe-1 на хосте после выполнения запроса записи DMA, целевой адрес которого преобразуется в HPA, так что экземпляр программного обеспечения VF Vfe-1 запускает экземпляр внешней стороны FE-1 в VM-1 для приема данных, записанных в кэш-память, соответствующую HPA.

[0092] Будучи запущен экземпляром программного обеспечения VF Vfe-1, экземпляр внешней стороны FE-1 в VM-1 может считывать данные, записанные в кэш-памяти, соответствующей HPA.

[0093] Можно видеть, что, в этом варианте осуществления, после активации виртуальной функции I/O устройства I/O, активированной хостом, несколько экземпляров программного обеспечения VF генерируются на хосте; несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост создает виртуальное устройство I/O, однотипное устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, и в инициированной VM создается экземпляр внешней стороны FE виртуального устройства I/O; BE связана с неактивным экземпляром программного обеспечения VF, таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, и между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства находится в VM, поэтому данные переносятся через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

[0094] Кроме того, в ходе процедуры выполнения запроса записи DMA, аппаратный модуль IOMMU реализует трансляцию между GPA и HPA, таким образом, уменьшая служебную нагрузку ЦП и дополнительно повышая производительность.

[0095] Согласно фиг. 7-a, другой способ обработки виртуализации, предусмотренный согласно варианту осуществления настоящего изобретения, может включать в себя:

[0096] 701. Установку драйверов устройства PF и устройства VF на хосте, где устройство PF и устройство VF соответствуют устройству I/O (обозначенному E-2).

[0097] 702. Активацию, посредством хоста, виртуальной функции I/O устройства I/O E-2;

где, например, хост может активировать виртуальную функцию I/O устройства I/O E-2 во время инициирования или в определенный момент после инициирования. Соответствующее устройство физической функции PF и несколько устройств виртуальной функции VF можно виртуализировать из устройства I/O E-2 при активированной виртуальной функции I/O посредством хоста, определенно, другой модуль можно использовать для активации устройства I/O E-2, и определенно, устройство I/O E-2 также может автоматически активировать свою виртуальную функцию I/O при включении питания устройства, и в этом случае, хосту или другому модулю не требуется активировать виртуальную функцию I/O устройства I/O E-2. Устройство PF, виртуализированное из устройства I/O E-2 в основном, отвечает за функцию управления, и устройство VF, в основном, отвечает за функцию обработки.

[0098] 703. Генерацию экземпляра программного обеспечения PF и нескольких экземпляров программного обеспечения VF на хосте; где соответствующее устройство PF и несколько устройств VF можно виртуализировать из устройства I/O E-2 при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии, и экземпляр программного обеспечения PF, сгенерированный на хосте, соответствует устройству PF, виртуализированному из устройства I/O E-2.

[0099] 704. Создание, посредством хоста, виртуального устройства I/O (например, обозначенного vE-2), однотипного устройству I/O E-2;

где экземпляр внутренней стороны BE (например, обозначенный BE-2) виртуального устройства I/O vE-2 создается на хосте, и экземпляр внешней стороны FE (например, обозначенный FE-2) виртуального устройства I/O vE-2 создается в инициированной VM (например, обозначенной VM-2). Например, хост может запускать создание экземпляра внешней стороны FE-2, соответствующего виртуальному устройству I/O vE-2 в инициированной VM-2. Можно рассматривать, что, FE-2, созданный в VM-2, и BE-2, созданный на хосте, совместно образуют драйвер виртуального устройства I/O vE-2.

[00100] 705. Связывание, посредством хоста, созданного BE-2 с одним неактивным экземпляром программного обеспечения VF (например, обозначенным Vfe-2);

где экземпляр программного обеспечения VF Vfe-2, например, соответствует устройству VF (например, обозначенному VF-2), виртуализированному из устройства I/O E-2. Так называемый неактивный экземпляр программного обеспечения VF является экземпляром программного обеспечения VF, который не связан с другим экземпляром внутренней стороны BE.

[0100] До сих пор, между устройством VF VF-2, виртуализированным из устройства I/O E-2, и экземпляром внешней стороны FE-2 в VM-2 проходит канал, таким образом, FE-2 может осуществлять доступ к устройству VF VF-2 через BE-2 на хосте. Устройство VF VF-2 по отдельности выделяется VM-2 для использования, устройство VF VF-2 виртуализируется из устройства I/O E-2 и может обеспечивать высокоэффективный интерфейс устройства, поэтому VM-2 полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть FE-2) виртуального устройства находится в VM-2, поэтому данные переносятся через привод внутренней стороны (то есть BE-2) на хосте, и VM-2 не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства.

[0101] 706. Предварительное выделение, посредством FE-2, кэш-памяти для прямого доступа к памяти (DMA).

[0102] Например, кэш-память, которая используется для DMA и предварительно выделяется FE-2, может быть [GPA1, Len1], … [GPAn, Lenn], то есть множественные секции кэш-памяти для DMA могут предварительно выделяться, где GPA1 представляет начальный адрес GPA кэш-памяти, Len1 представляет длину кэш-памяти, и т.д.

[0103] 707. Запись, посредством FE-2, GPA, соответствующего предварительно выделенной кэш-памяти для DMA, в совместно используемую память (совместно используемая память) между хостом и VM-2, и объявление BE-2 (определенно, возможно также, что после осуществления самообнаружения, BE-2 находит, что GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, записан в совместно используемую память).

[0104] 708. Преобразование, посредством хоста, GPA, соответствующего кэш-памяти для DMA в совместно используемой памяти, в соответствующий HPA;

где, например, на хосте устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между GPA и HPA (например, как показано на фиг. 7-b). Посредством поиска в таблице страниц трансляции адреса, хост может получать HPA, соответствующий GPA, который соответствует кэш-памяти для DMA, и преобразовывать GPA, соответствующий кэш-памяти для DMA в полученный HPA.

[0105] 709. Получение, посредством экземпляра программного обеспечения VF Vfe-2, HPA, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE-2, и запись полученного HPA, соответствующего кэш-памяти для DMA, в очередь приема устройства VF VF-2, соответствующего экземпляру программного обеспечения VF Vfe-2.

[0106] 710. Выбор, посредством устройства VF VF-2, HPA, соответствующего кэш-памяти для DMA, из очереди приема устройства VF при наличии данных, подлежащих приему, и инициирование запроса записи DMA с использованием выбранного HPA в качестве целевого адреса.

[0107] 711. Объявление, посредством устройства VF VF-2, соответствующего экземпляра программного обеспечения VF Vfe-2 на хосте после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF Vfe-2 запускает экземпляр внешней стороны FE-2 в VM-2 для приема данных, записанных в кэш-память, соответствующую HPA.

[0108] Будучи запущен экземпляром программного обеспечения VF Vfe-2, экземпляр внешней стороны FE-2 в VM-2 может считывать данные, записанные в кэш-памяти, соответствующей HPA.

[0109] Можно видеть, что, в этом варианте осуществления, после активации виртуальной функции I/O устройства ввода/вывода I/O, активированной хостом, несколько экземпляров программного обеспечения VF генерируются на хосте; несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост создает виртуальное устройство I/O, однотипное устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, и в инициированной VM создается экземпляр внешней стороны FE виртуального устройства I/O; BE связана с неактивным экземпляром программного обеспечения VF, таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства находится в VM, поэтому данные переносятся через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

[0110] Кроме того, в ходе процедуры выполнения запроса записи DMA, хост реализует трансляцию между GPA и HPA, таким образом, уменьшая конфигурацию аппаратных ресурсов и упрощая последовательность обработки.

[0111] Согласно фиг. 8-a, другой способ обработки виртуализации, предусмотренный согласно варианту осуществления настоящего изобретения, может включать в себя:

[0112] 801. Активацию, посредством хоста, IOMMU;

где хост может активировать IOMMU во время инициирования или в определенный момент после инициирования; определенно, IOMMU также может автоматически активировать соответствующую функцию при включении питания устройства, и в этом случае, хосту не требуется активировать IOMMU; и определенно, для активации IOMMU также можно использовать другой модуль.

[0113] 802. Установку драйверов устройства PF и устройства VF на хосте, где устройство PF и устройство VF соответствуют устройству I/O (например, обозначенному E-3).

[0114] 803. Активацию, посредством хоста, виртуальной функции I/O устройства I/O E-3;

где, например, хост может активировать виртуальную функцию I/O устройства I/O E-3 во время инициирования или в определенный момент после инициирования. Соответствующее устройство физической функции PF и несколько устройств виртуальной функции VF можно виртуализировать из устройства I/O E3-3 при активированной виртуальной функции I/O, определенно, другой модуль можно использовать для активации устройства I/O E-3, и определенно, устройство I/O E-3 также может автоматически активировать свою виртуальную функцию I/O при включении питания устройства, и в этом случае, хосту или другому модулю не требуется активировать виртуальную функцию I/O устройства I/O E-3. Устройство PF, виртуализированное из устройства I/O E-3 в основном, отвечает за функцию управления, и устройство VF, в основном, отвечает за функцию обработки.

[0115] 804. Генерацию экземпляра программного обеспечения PF и нескольких экземпляров программного обеспечения VF на хосте; где соответствующее устройство PF и несколько устройств VF можно виртуализировать из устройства I/O E-3 при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии, и экземпляр программного обеспечения PF, сгенерированный на хосте, соответствует устройству PF, виртуализированному из устройства I/O E-1.

[0116] 805. Создание, посредством хоста, виртуального устройства I/O (например, обозначенного vE-3), однотипного устройству I/O E-3;

где экземпляр внутренней стороны BE (например, обозначенный BE-3) виртуального устройства I/O vE-3 создается на хосте, и экземпляр внешней стороны FE (например, обозначенный FE-3) виртуального устройства I/O vE-3 создается в инициированной VM (например, обозначенной VM-3). Например, хост может запускать создание экземпляра внешней стороны FE-3 соответствующего виртуальному устройству I/O vE-3 в инициированной VM-3. Можно рассматривать, что, FE-3, созданный в VM-3, и BE-3, созданный на хосте, совместно образуют драйвер виртуального устройства I/O vE-3.

[0117] 806. Связывание, посредством хоста, созданного BE-3 с одним неактивным экземпляром программного обеспечения VF (например, обозначенным Vfe-3);

где экземпляр программного обеспечения VF Vfe-3, например, соответствует устройству VF (например, обозначенному VF-3), виртуализированному из устройства I/O E-3. Так называемый неактивный экземпляр программного обеспечения VF является экземпляром программного обеспечения VF, который не связан с другим экземпляром внутренней стороны BE.

[0118] До сих пор, между устройством VF VF-3, виртуализированным из устройства I/O E-3, и экземпляром внешней стороны FE-3 в VM-3 проходит канал, таким образом, FE-3 может осуществлять доступ к устройству VF VF-3 через BE-3 на хосте. Устройство VF VF-3 по отдельности выделяется VM-3 для использования, устройство VF VF-3 виртуализируется из устройства I/O E-3 и может обеспечивать высокоэффективный интерфейс устройства, поэтому VM-3 полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть FE-3) виртуального устройства находится в VM-3, поэтому данные переносятся через привод внутренней стороны (то есть BE-3) на хосте, и VM-3 не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства.

[0119] 807. Запись, посредством экземпляра внешней стороны FE-3, GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM-3, и объявление BE-3 (определенно, возможно также, что после осуществления самообнаружения, BE-3 находит, что GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, записаны в совместно используемую память).

[0120] Например, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, являются [GPA1, Len1], … [ GPAn, Lenn], то есть множественные секции кэш-памяти для DMA могут предварительно выделяться, где GPA1 представляет начальный адрес GPA кэш-памяти, Len1 представляет длину кэш-памяти, и т.д.

[0121] 808. Вызов, посредством BE-3, программного интерфейса передачи экземпляра программного обеспечения VF Vfe-3, связанного с BE-3, и запись GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в очередь передачи устройства VF VF-3, соответствующего экземпляру программного обеспечения VF Vfe-3.

[0122] 809. При обнаружении наличия данных, подлежащих передаче, инициирование, посредством устройства VF VF-3, запроса чтения DMA с использованием GPA, записанного в очереди передачи устройства VF, в качестве целевого адреса;

где устройство VF VF-3, например, может обнаруживать очередь передачи устройства VF периодически или непериодически, и, найдя, что GPA вновь записан в очередь передачи, предполагать наличие данных, подлежащих передаче, или экземпляр программного обеспечения VF Vfe-3 может объявлять устройство VF VF-3 после новой записи GPA в очередь передачи;

где запрос чтения DMA, инициированный посредством устройства VF VF-3, будет проходить IOMMU.

[0123] 810. Преобразование, посредством IOMMU, целевого адреса GPA запроса чтения DMA в соответствующий HPA;

где, например, в IOMMU устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между GPA и HPA (например, как показано на фиг. 8-b). Когда запрос чтения DMA проходит, IOMMU может получать HPA, соответствующий целевому адресу GPA запроса чтения DMA, посредством поиска в таблице страниц трансляции адреса, и преобразовывать целевой адрес GPA запроса чтения DMA в полученный HPA.

[0124] 811. Объявление, посредством устройства VF VF-3, соответствующего экземпляра программного обеспечения VF Vfe-3 на хосте после выполнения запроса чтения DMA, целевой адрес которого преобразуется в HPA, так что экземпляр программного обеспечения VF Vfe-3 запускает экземпляр внешней стороны FE-3 в VM-3 для освобождения кэш-памяти, соответствующей HPA.

[0125] Будучи запущен экземпляром программного обеспечения VF Vfe-3, экземпляр внешней стороны FE-3 в VM-3 может освобождать кэш-память, соответствующую HPA, для кэширования новых данных.

[0126] Можно видеть, что, в этом варианте осуществления, после активации виртуальной функции I/O устройства ввода/вывода I/O, активированной хостом, несколько экземпляров программного обеспечения VF генерируются на хосте; несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост создает виртуальное устройство I/O, однотипное устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, и в инициированной VM создается экземпляр внешней стороны FE виртуального устройства I/O; BE связана с неактивным экземпляром программного обеспечения VF, таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства находится в VM, поэтому FE переносит данные через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

[0127] Кроме того, в ходе процедуры выполнения запроса чтения DMA, аппаратный модуль IOMMU реализует трансляцию между GPA и HPA, таким образом, уменьшая служебную нагрузку ЦП и дополнительно повышая производительность.

[0128] Согласно фиг. 9-a, другой способ обработки виртуализации, предусмотренный согласно варианту осуществления настоящего изобретения, может включать в себя:

[0129] 901. Установку драйверов устройства PF и устройства VF на хосте, где устройство PF и устройство VF соответствуют устройству I/O (обозначенному E-4).

[0130] 902. Активацию, посредством хоста, виртуальной функции I/O устройства I/O E-4;

где, например, хост может активировать виртуальную функцию I/O устройства I/O E-4 во время инициирования или в определенный момент после инициирования. Соответствующее устройство физической функции PF и несколько устройств виртуальной функции VF можно виртуализировать из устройства I/O E-4 при активированной виртуальной функции I/O, определенно, другой модуль можно использовать для активации устройства I/O E-4, и определенно, устройство I/O E-4 также может автоматически активировать свою виртуальную функцию I/O при включении питания устройства, и в этом случае, хосту или другому модулю не требуется активировать виртуальную функцию I/O устройства I/O E-4. Устройство PF, виртуализированное из устройства I/O E-4 в основном, отвечает за функцию управления, и устройство VF, в основном, отвечает за функцию обработки.

[0131] 903. Генерацию экземпляра программного обеспечения PF и нескольких экземпляров программного обеспечения VF на хосте; где соответствующее устройство PF и несколько устройств VF можно виртуализировать из устройства I/O E-4 при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии, и экземпляр программного обеспечения PF, сгенерированный на хосте, соответствует устройству PF, виртуализированному из устройства I/O E-4.

[0132] 904. Создание, посредством хоста, виртуального устройства I/O (например, обозначенного vE-4), однотипного устройству I/O E-4;

где экземпляр внутренней стороны BE (например, обозначенный BE-4) виртуального устройства I/O vE-4 создается на хосте, и экземпляр внешней стороны FE (например, обозначенный FE-4) виртуального устройства I/O vE-4 создается в инициированной VM (например, обозначенной VM-4). Например, хост может запускать создание экземпляра внешней стороны FE-4, соответствующего виртуальному устройству I/O vE-4 в инициированной VM-4. Можно рассматривать, что, FE-4, созданный в VM-4, и BE-4, созданный на хосте, совместно образуют драйвер виртуального устройства I/O vE-4.

[0133] 905. Связывание, посредством хоста, созданного BE-4 с одним неактивным экземпляром программного обеспечения VF (например, обозначенным Vfe-4);

где экземпляр программного обеспечения VF Vfe-4, например, соответствует устройству VF (например, обозначенному VF-4), виртуализированному из устройства I/O E-4. Так называемый неактивный экземпляр программного обеспечения VF является экземпляром программного обеспечения VF, который не связан с другим экземпляром внутренней стороны BE.

[0134] До сих пор, между устройством VF VF-4, виртуализированным из устройства I/O E-4, и экземпляром внешней стороны FE-4 в VM-4 проходит канал, таким образом, FE-4 может осуществлять доступ к устройству VF VF-4 через BE-4 на хосте. Устройство VF VF-4 по отдельности выделяется VM-4 для использования, устройство VF VF-4 виртуализируется из устройства I/O E-4 и может обеспечивать высокоэффективный интерфейс устройства, поэтому VM-4 полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть FE-4) виртуального устройства находится в VM-4, поэтому данные переносятся через привод внутренней стороны (то есть BE-4) на хосте, и VM-4 не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства.

[0135] 906. Запись, посредством FE-4, GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM-4, и объявление BE-4 (определенно, возможно также, что после осуществления самообнаружения, BE-4 находит, что GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, записан в совместно используемую память).

[0136] 907. Преобразование, посредством хоста, GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA;

где, например, на хосте устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между GPA и HPA (например, как показано на фиг. 9-b). Посредством поиска в таблице страниц трансляции адреса, хост может, например, получать HPA, соответствующий GPA, который соответствует кэш-памяти, где находятся данные, подлежащие передаче, и преобразовывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в полученный HPA.

[0137] 908. Вызов, посредством BE-4, программного интерфейса передачи экземпляра программного обеспечения VF Vfe-4, связанного с BE-4, и запись HPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в очередь передачи устройства VF VF-4, соответствующего экземпляру программного обеспечения VF Vfe-4.

[0138] 909. При обнаружении наличия данных, подлежащих передаче, инициирование, посредством устройства VF VF-4, запроса чтения DMA с использованием HPA, записанного в очереди передачи устройства VF в качестве целевого адреса;

где устройство VF VF-4 может, например, обнаруживать очередь передачи устройства VF периодически или непериодически, и, найдя, что HPA вновь записан в очередь передачи, предполагать наличие данных, подлежащих передаче, или экземпляр программного обеспечения VF Vfe-4 может объявлять устройство VF VF-4 после новой записи HPA в очередь передачи.

[0139] 910. Объявление, посредством устройства VF VF-4, соответствующего экземпляра программного обеспечения VF Vfe-4 на хосте после выполнения запроса чтения DMA, так что экземпляр программного обеспечения VF Vfe-4 запускает экземпляр внешней стороны FE-4 в VM-4 для освобождения кэш-памяти, соответствующей HPA.

[0140] Будучи запущен экземпляром программного обеспечения VF Vfe-4, экземпляр внешней стороны FE-4 в VM-4 может освобождать кэш-память, соответствующую HPA, для кэширования новых данных.

[0141] Можно видеть, что, в этом варианте осуществления, после активации виртуальной функции I/O устройства I/O, активированной хостом, несколько экземпляров программного обеспечения VF генерируются на хосте; несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост создает виртуальное устройство I/O, однотипное устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, и в инициированной VM создается экземпляр внешней стороны FE виртуального устройства I/O; BE связана с неактивным экземпляром программного обеспечения VF, таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства находится в VM, поэтому данные переносятся через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

[0142] Кроме того, в ходе процедуры выполнения запроса чтения DMA, хост реализует трансляцию между GPA и HPA, таким образом, уменьшая конфигурацию аппаратных ресурсов и упрощая последовательность обработки.

[0143] Для улучшения понимания и реализации вышеупомянутых способов в вариантах осуществления настоящего изобретения, дополнительно предусмотрены устройства и компьютерная система, выполненные с возможностью реализации вышеупомянутых способов.

[0144] Согласно фиг. 10, хост 1000, предусмотренный согласно варианту осуществления настоящего изобретения, может включать в себя:

первый модуль 1010 создания, второй модуль 1020 создания и модуль 1030 связывания;

первый модуль 1010 создания выполнен с возможностью, после активации виртуальной функции I/O устройства ввода/вывода I/O, генерации нескольких экземпляров программного обеспечения VF на хосте 1000, где несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O при активированной виртуальной функции I/O, и несколько экземпляров программного обеспечения VF, сгенерированных на хосте 1000, и несколько устройств VF находятся во взаимно-однозначном соответствии;

второй модуль 1020 создания выполнен с возможностью создания виртуального устройства I/O, однотипного устройству I/O,

где, экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте 1000, экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной виртуальной машине VM; и

модуль 1030 связывания выполнен с возможностью связывания BE, созданного вторым модулем 1020 создания, с неактивным экземпляром программного обеспечения VF, созданным первым модулем 1010 создания.

[0145] Можно понять, что, хост 1000 в этом варианте осуществления может быть хостом в каждом из вышеупомянутых вариантов осуществления способа, функции каждого функционального модуля могут быть конкретно реализованы согласно способу в каждом из вышеупомянутых вариантов осуществления способа. Для процедуры конкретной реализации, можно сослаться на соответствующее описание вышеупомянутых вариантов осуществления способа, и подробности здесь не повторяются.

[0146] Можно видеть, что, в этом варианте осуществления, после активации виртуальной функции I/O устройства I/O, несколько экземпляров программного обеспечения VF генерируются на хосте 1000; несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF, сгенерированных на хосте 1000, и несколько устройств VF находятся во взаимно-однозначном соответствии; хост создает виртуальное устройство I/O, однотипное устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте 1000, и в инициированной VM создается экземпляр внешней стороны FE виртуального устройства I/O; BE связана с неактивным экземпляром программного обеспечения VF, таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства находится в VM, поэтому данные переносятся через привод внутренней стороны (то есть, BE) на хосте 1000, и VM не воспринимает реальное физическое устройство хоста 1000, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

[0147] Согласно фиг. 11-a, вычислительный узел 1100, предусмотренный согласно варианту осуществления настоящего изобретения, может включать в себя,

аппаратный уровень 1110, хост 1120, выполняющийся на аппаратном уровне 1110, и, по меньшей мере, одну виртуальную машину VM 1130, выполняющуюся на хосте 1120.

[0148] Аппаратный уровень 1110 включает в себя устройство I/O 1111, несколько соответствующих устройств 11111 виртуальной функции VF виртуализируются из устройства I/O 1111, хост 1120 имеет несколько экземпляров 1121 программного обеспечения VF, несколько экземпляров 1121 программного обеспечения VF и несколько устройств VF 11111 находятся во взаимно-однозначном соответствии; хост 1120 дополнительно имеет экземпляр 1122 внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O 1111, VM 1130 имеет экземпляр 1131 внешней стороны FE виртуального устройства I/O; BE 1122 на хосте 1120 связан с неактивным экземпляром 1121 программного обеспечения VF.

[0149] В сценарии приложения, FE 1131 выполнен с возможностью предварительного выделения кэш-памяти для прямого доступа к памяти DMA.

[0150] Экземпляр 1121 программного обеспечения VF, связанный с BE 1122, выполнен с возможностью получения адреса, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE 1122, и записи полученного адреса, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF 11111, соответствующего экземпляру 1121 программного обеспечения VF.

[0151] Устройство VF 11111 выполнено с возможностью выбора адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирования запроса записи DMA с использованием адреса, соответствующего кэш-памяти для DMA, в качестве целевого адреса; объявления соответствующего экземпляра 1121 программного обеспечения VF на хосте 1120 после выполнения запроса записи DMA, так что экземпляр 1121 программного обеспечения VF запускает FE 1131 для приема данных, записанных в кэш-память, соответствующую адресу.

[0152] Согласно фиг. 11-b, в сценарии приложения, FE 1131 дополнительно выполнен с возможностью записи физического адреса гостя GPA, соответствующего предварительно выделенной кэш-памяти для DMA, в совместно используемую память 1140 между хостом 1120 и VM 1130.

[0153] Экземпляр 1121 программного обеспечения VF, связанный с BE 1122, может быть, в частности, выполнен с возможностью получения GPA, соответствующего кэш-памяти для DMA, из совместно используемой памяти 1140 через экспортирующий интерфейс прикладного программирования BE 1122, и записи полученного GPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF 11111, соответствующего экземпляру 1121 программного обеспечения VF.

[0154] Кроме того, FE 1131 также может объявлять GPA, соответствующий предварительно выделенной кэш-памяти для DMA, соответствующему BE 1122; и экземпляр 1121 программного обеспечения VF, связанный с BE 1122, может получать GPA, соответствующий кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE 1122.

[0155] Устройство VF 11111 может быть, в частности, выполнено с возможностью выбора GPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, инициирования запроса записи DMA с использованием выбранного GPA, соответствующего кэш-памяти для DMA, в качестве целевого адреса; объявления соответствующего экземпляра 1121 программного обеспечения VF на хосте 1120 после выполнения запроса записи DMA, целевой адрес GPA которого преобразуется в соответствующий HPA, так что экземпляр 1121 программного обеспечения VF запускает FE 1131 для приема данных, записанных в кэш-память, соответствующую HPA.

[0156] Аппаратный уровень 1110 вычислительного узла 1100 может дополнительно включать в себя:

блок 1112 управления памятью ввода/вывода IOMMU, выполненный с возможностью преобразования целевого адреса GPA запроса записи DMA, инициированного устройством VF 11111, в соответствующий физический адрес хоста HPA.

[0157] Например, в IOMMU устанавливается таблица страниц трансляции адреса 1112, где в таблице страниц трансляции адреса задано отображение между GPA и HPA; IOMMU 1112 может получать HPA, соответствующий целевому адресу GPA запроса записи DMA, посредством поиска в таблице страниц трансляции адреса, и преобразовывать целевой адрес GPA запроса записи DMA в полученный HPA.

[0158] Согласно фиг. 11-c, в другом сценарии приложения, FE 1131 может быть дополнительно выполнен с возможностью записи GPA, соответствующего предварительно выделенной кэш-памяти для DMA, в память 1140, совместно используемую между хостом 1120 и VM 1130.

[0159] Хост 1120 может быть выполнен с возможностью преобразования GPA, соответствующего кэш-памяти для DMA в совместно используемой памяти 1140, в соответствующий HPA.

[0160] Например, на хосте устанавливается таблица страниц трансляции адреса 1120, где в таблице страниц трансляции адреса задано отображение между GPA и HPA; посредством поиска в таблице страниц трансляции адреса, хост 1120 может получать HPA, соответствующий GPA, который соответствует кэш-памяти для DMA в совместно используемой памяти, и преобразовывать GPA, соответствующий кэш-памяти для DMA в совместно используемой памяти, в полученный HPA. Определенно, FE 1131 также может объявлять GPA, соответствующий предварительно выделенной кэш-памяти для DMA, соответствующему BE 1122, и хост 1120 может преобразовывать GPA, соответствующий кэш-памяти для DMA, в соответствующий HPA.

[0161] Экземпляр 1121 программного обеспечения VF, связанный с BE 1122, может быть, в частности, выполнен с возможностью получения HPA, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE 1122; и записи полученного HPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF 11111, соответствующего экземпляру 1121 программного обеспечения VF.

[0162] Устройство VF 11111 может быть, в частности, выполнено с возможностью выбора HPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, инициирования запроса записи DMA с использованием выбранного HPA в качестве целевого адреса, и объявления соответствующего экземпляра 1121 программного обеспечения VF на хосте 1120 после выполнения запроса записи DMA, так что экземпляр 1121 программного обеспечения VF запускает FE 1131 для приема данных, записанных в кэш-память, соответствующую HPA.

[0163] Дополнительно, в сценарии приложения, FE 1131 дополнительно выполнен с возможностью записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в память 1140, совместно используемую между хостом 1120 и VM 1130.

[0164] BE 1122 может дополнительно быть выполнен с возможностью получения GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, из совместно используемой памяти 1140; вызова программного интерфейса передачи экземпляра 1121 программного обеспечения VF, связанного с BE 1122, и записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF 11111, соответствующего экземпляру 1121 программного обеспечения VF.

[0165] Кроме того, FE 1131 также может объявлять GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, соответствующему BE 1122, и BE 1122 получает, согласно объявлению, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче.

[0166] Устройство VF 11111 дополнительно выполнено с возможностью инициирования запроса чтения DMA с использованием GPA, записанного во втором блоке хранения, в качестве целевого адреса, при обнаружении наличия данных, подлежащих передаче; кроме того, устройство VF 11111 может быть дополнительно выполнено с возможностью, после выполнения запроса чтения DMA, объявления соответствующего экземпляра 1121 программного обеспечения VF на хосте 1120, так что экземпляр 1121 программного обеспечения VF запускает FE 1131 для освобождения соответствующей кэш-памяти.

[0167] Аппаратный уровень 1110 вычислительного узла 1100 может дополнительно включать в себя:

блок 1112 управления памятью ввода/вывода IOMMU, выполненный с возможностью преобразования целевого адреса GPA запроса чтения DMA, инициированного устройством VF 11111, в соответствующий HPA.

[0168] Например, в IOMMU устанавливается таблица страниц трансляции адреса 1112, где в таблице страниц трансляции адреса задано отображение между GPA и HPA; IOMMU 1112 может получать HPA, соответствующий целевому адресу GPA запроса чтения DMA, посредством поиска в таблице страниц трансляции адреса, и преобразовывать целевой адрес GPA запроса чтения DMA в полученный HPA.

[0169] В другом сценарии приложения, FE 1131 может дополнительно быть выполнен с возможностью записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в память 1140, совместно используемую между хостом 1120 и VM 1130.

[0170] Хост 1120 может быть выполнен с возможностью преобразования GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти 1140, в соответствующий HPA.

[0171] Например, на хосте устанавливается таблица страниц трансляции адреса 1120, где в таблице страниц трансляции адреса задано отображение между GPA и HPA; посредством поиска в таблице страниц трансляции адреса, хост 1120 может получать HPA, соответствующий GPA, который соответствует кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, и преобразовывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA. Определенно, FE 1131 также может объявлять GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, хосту 1120, и хост 1120 может преобразовывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в соответствующий HPA.

[0172] BE 1122 дополнительно выполнен с возможностью получения HPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче; вызова программного интерфейса передачи экземпляра 1121 программного обеспечения VF, связанного с BE 1122, и записи HPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF 11111, соответствующего экземпляру 1121 программного обеспечения VF.

[0173] Устройство VF 11111 может быть дополнительно выполнено с возможностью инициирования запроса чтения DMA с использованием HPA, записанного во втором блоке хранения, в качестве целевого адреса, при обнаружении наличия данных, подлежащих передаче. Кроме того, устройство VF 11111 может быть дополнительно выполнено с возможностью, после выполнения запроса чтения DMA, объявления соответствующего экземпляра 1121 программного обеспечения VF на хосте 1120, так что экземпляр 1121 программного обеспечения VF запускает FE 1131 для освобождения соответствующей кэш-памяти.

[0174] Первым блоком хранения, например, является очередь приема или список приема устройства VF или другая структура хранения данных, пригодная для записи адреса. Вторым блоком хранения, например, является очередь передачи или список передачи устройства VF или другая структура хранения данных, пригодная для записи адреса.

[0175] Можно понять, что хост 1120 в этом варианте осуществления может представлять собой хост в каждом из вышеупомянутых вариантов осуществления способа, рабочий механизм системы виртуализации, на котором вычислительный узел 1100 выполняется согласно варианту осуществления, может соответствовать описанию, приведенному в вышеупомянутых вариантах осуществления способа, функции каждого функционального модуля могут быть конкретно реализованы согласно способу в каждом из вышеупомянутых вариантов осуществления способа. Для процедуры конкретной реализации, можно сослаться на соответствующее описание вышеупомянутых вариантов осуществления способа, и подробности здесь не повторяются.

[0176] Можно видеть, что, вычислительный узел 1100 согласно варианту осуществления настоящего изобретения включает в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, где аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O; хост имеет несколько экземпляров программного обеспечения VF, и несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, и VM имеет экземпляр внешней стороны FE виртуального устройства I/O, где BE на хосте связана с неактивным экземпляром программного обеспечения VF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика, и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства I/O находится в VM, поэтому FE переносит данные через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.

[0177] Согласно фиг. 12, вариант осуществления настоящего изобретения дополнительно предусматривает компьютерную систему, которая может включать в себя:

по меньшей мере, один вычислительный узел 1100.

[0178] Следует отметить, что, согласно каждому из вышеупомянутых вариантов осуществления способа, для простого описания, способ описан как последовательность действий, но специалисты в данной области техники должны усвоить, что настоящее изобретение не ограничивается описанной последовательностью действий, поскольку согласно настоящему изобретению, некоторые этапы могут осуществляться в других последовательностях или осуществляться одновременно. Кроме того, специалисты в данной области техники должны усвоить, что все варианты осуществления, описанные в описании изобретения, являются иллюстративными вариантами осуществления, и предусмотренные операции и модули могут не требоваться для настоящего изобретения.

[0179] В вышеописанных вариантах осуществления, описание каждого варианта осуществления имеет свое ударение, и для части, которая не детализируется согласно варианту осуществления, можно сослаться на соответствующее описание других вариантов осуществления.

[0180] Ввиду вышеизложенного, вычислительный узел согласно варианту осуществления настоящего изобретения может включать в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O; хост имеет несколько экземпляров программного обеспечения VF, и несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, и VM имеет экземпляр внешней стороны FE виртуального устройства I/O, где BE на хосте связана с неактивным экземпляром программного обеспечения VF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика, и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства I/O находится в VM, поэтому FE переносит данные через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации. Кроме того, не требуется, чтобы OS в VM имела последнюю аппаратную технологическую поддержку, вычислительный узел применим к различным наиболее распространенным OS, вне зависимости от приводов VM, обеспеченных поставщиками оборудования (IHV); изоляция и развязка между виртуальной машиной и физической платформой полностью сохраняются, и виртуальная машина проста в переносе; хост по-прежнему может отслеживать прием и передачу данных в VM, и по-прежнему можно использовать такие передовые признаки, как фильтрация данных и мультиплексирование памяти; часть FE внешней стороны PV можно мультиплексировать, и удобно осуществлять обновление.

[0181] Кроме того, в ходе процедуры выполнения запроса чтения/записи DMA, аппаратный модуль IOMMU реализует трансляцию между GPA и HPA, таким образом, уменьшая конфигурацию аппаратных ресурсов и упрощая последовательность обработки. Альтернативно, в ходе процедуры выполнения запроса чтения DMA, хост реализует трансляцию между GPA и HPA, таким образом, уменьшая конфигурацию аппаратных ресурсов и упрощая последовательность обработки.

[0182] Специалисты в данной области техники должны понять, что все или часть этапов способа согласно вариантам осуществления настоящего изобретения можно реализовать посредством программы, управляющей соответствующим оборудованием. Программа может храниться на машиночитаемом носителе данных, например, в постоянной памяти, оперативной памяти, магнитном диске или оптическом диске.

[0183] Подробно описаны способ и устройства обработки виртуализации, и компьютерная система, предусмотренные в вариантах осуществления настоящего изобретения. Принцип и реализация настоящего изобретения описаны здесь на конкретных примерах. Описание вариантов осуществления настоящего изобретения приведено исключительно для облегчения понимания способа и основных принципов настоящего изобретения. Специалисты в данной области техники могут предложить вариации и модификации настоящего изобретения в отношении конкретной реализации и объема применимости согласно принципам настоящего изобретения. Поэтому описание изобретения не следует рассматривать в порядке ограничения настоящего изобретения.

Похожие патенты RU2573219C2

название год авторы номер документа
СИСТЕМЫ И СПОСОБЫ ПРЕДОСТАВЛЕНИЯ РЕЗУЛЬТАТА ТЕКУЩЕЙ КОМАНДЫ ПРОЦЕССОРА ПРИ ВЫХОДЕ ИЗ ВИРТУАЛЬНОЙ МАШИНЫ 2015
  • Лукакс Сандор
  • Лутас Андрей-Влад
RU2686552C2
УСТАНОВКА, СПОСОБ И СИСТЕМА КЭШИРОВАНИЯ 2008
  • Уагх Махеш
  • Айанович Жасмин
RU2483347C2
ТЕХНОЛОГИЧЕСКИЕ ПРИЕМЫ ВЫГРУЗКИ ОБЪЕКТА НАЗНАЧЕНИЯ ВИРТУАЛЬНОГО ХРАНИЛИЩА 2010
  • Ошинс Джейкоб
  • Грин Дастин Л.
RU2562436C2
ФИЛЬТРАЦИЯ СОБЫТИЙ ДЛЯ ПРИЛОЖЕНИЙ БЕЗОПАСНОСТИ ВИРТУАЛЬНЫХ МАШИН 2017
  • Лутас Андрей-Влад
RU2723668C1
АКТИВАЦИЯ/ДЕАКТИВАЦИЯ АДАПТЕРОВ ВЫЧИСЛИТЕЛЬНОЙ СРЕДЫ 2010
  • Дан Грейнер
  • Чарлз Гейни
  • Дейвид Краддок
  • Антони Конески
  • Бет Гленденинг
  • Марк Фаррел
  • Томас Грегг
  • Угочукву Ньоку-Чарлз
RU2562372C2
ОПРЕДЕЛЕНИЕ ФОРМАТОВ ТРАНСЛЯЦИИ ДЛЯ ФУНКЦИЙ АДАПТЕРА ВО ВРЕМЯ ВЫПОЛНЕНИЯ 2010
  • Дейвид Краддок
  • Томас Грегг
  • Дан Грейнер
  • Эрик Норман Лейс
  • Доналд Уилльям Шмидт
RU2556418C2
УПРАВЛЕНИЕ СКОРОСТЬЮ, С КОТОРОЙ ОБРАБАТЫВАЮТСЯ ЗАПРОСЫ НА ПРЕРЫВАНИЕ, ФОРМИРУЕМЫЕ АДАПТЕРАМИ 2010
  • Густав Зитманн, Iii
  • Дейвид Краддок
  • Томас Грегг
  • Доналд Уилльям Шмидт
  • Брентон Франсуа Белмар
  • Марк Фаррел
  • Деймиан Лео Осисек
  • Ричард Тарша
  • Джанет Истон
RU2526287C2
ТРАНСЛЯЦИЯ АДРЕСОВ ВВОДА-ВЫВОДА В АДРЕСА ЯЧЕЕК ПАМЯТИ 2010
  • Дейвид Краддок
  • Томас Грегг
  • Дан Грейнер
  • Эрик Норман Лейс
RU2547705C2
БОЛЕЕ БЫСТРЫЙ ДОСТУП ЗАПОМИНАЮЩЕГО УСТРОЙСТВА ВИРТУАЛЬНОЙ МАШИНЫ, РЕЗЕРВИРУЕМОГО ВИРТУАЛЬНЫМ ЗАПОМИНАЮЩИМ УСТРОЙСТВОМ ВЫЧИСЛИТЕЛЬНОГО ХОСТ-УСТРОЙСТВА 2019
  • Бэк, Евгений
  • Ийигун, Мехмет
  • Кишан, Арун У.
RU2780969C1
ИЗМЕРИТЕЛЬНОЕ СРЕДСТВО ДЛЯ ФУНКЦИЙ АДАПТЕРА 2010
  • Питер Кеннет Швед
  • Дейвид Краддок
  • Томас Грегг
  • Бет Гленденнинг
  • Эрик Норман Лейс
  • Стивен Гленн Уилкинс
  • Фрэнк Уилльям Брайс Джр.
RU2523194C2

Иллюстрации к изобретению RU 2 573 219 C2

Реферат патента 2016 года СПОСОБ И УСТРОЙСТВА ОБРАБОТКИ ВИРТУАЛИЗАЦИИ И КОМПЬЮТЕРНАЯ СИСТЕМА

Изобретение относится к обработке виртуализации в компьютерной системе. Технический результат заключается в обеспечении совместимости средств виртуализации с устройствами, использующимися в компьютерной системе. Вычислительный узел включает в себя: аппаратный уровень, хост, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, с несколькими соответствующими устройствами виртуальной функции VF, полученными из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF и несколько устройств VF, находящихся во взаимно однозначном соответствии. Хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF. 4 н. и 14 з.п. ф-лы, 19 ил.

Формула изобретения RU 2 573 219 C2

1. Способ обработки виртуализации, содержащий этапы, на которых:
генерируют после активации виртуальной функции (VF) ввода/вывода (I/O) устройства I/O, несколько экземпляров программного обеспечения виртуальной функции (VF) на хосте, причем несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O при активированной VF I/O и несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно однозначном соответствии;
создают, посредством хоста, виртуальное устройство I/O, однотипное устройству I/O,
причем экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной виртуальной машине VM; и
связывают BE с неактивным экземпляром программного обеспечения VF.

2. Способ обработки виртуализации, применяемый к вычислительному узлу, причем вычислительный узел содержит: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, причем аппаратный уровень содержит устройство ввода/вывода (I/O), несколько соответствующих устройств виртуальной функции (VF) виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF,
несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно однозначном соответствии;
хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O,
VM имеет экземпляр внешней стороны FE виртуального устройства I/O, причем BE на хосте связана с неактивным экземпляром программного обеспечения VF;
причем способ содержит этапы, на которых:
предварительно выделяют, посредством FE, кэш-память для прямого доступа к памяти DMA;
получают, посредством экземпляра программного обеспечения VF, связанного с BE, адрес, соответствующий кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записывают полученный адрес, соответствующий кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
выбирают, посредством устройства VF, адрес, соответствующий кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициируют запрос записи DMA с использованием выбранного адреса в качестве целевого адреса;
объявляют, посредством устройства VF, экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.

3. Способ по п. 2, в котором,
аппаратный уровень дополнительно содержит блок управления памятью ввода/вывода (I/O) (IOMMU),
способ дополнительно содержит этапы, на которых:
записывают, посредством FE, физический адрес гостя GPA, соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM;
причем процесс получения, посредством экземпляра программного обеспечения VF, связанного с BE, адреса, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записи полученного адреса, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; выбора, посредством устройства VF, адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирования запроса записи DMA с использованием выбранного адреса в качестве целевого адреса, содержит:
получение, посредством экземпляра программного обеспечения VF, связанного с BE, GPA, соответствующего кэш-памяти для DMA, из совместно используемой памяти через экспортирующий интерфейс прикладного программирования BE, запись полученного GPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; и
выбор, посредством устройства VF, GPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирование запроса записи DMA с использованием выбранного GPA в качестве целевого адреса;
способ дополнительно содержит этапы, на которых:
преобразуют, посредством IOMMU, целевой адрес GPA запроса записи DMA в соответствующий физический адрес хоста (HPA);
причем процесс объявления, посредством устройства VF, экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу, содержит:
объявление, посредством устройства VF, экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, целевой адрес которого преобразуется в HPA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую HPA.

4. Способ по п. 2, дополнительно содержащий этапы, на которых:
записывают, посредством FE, GPA, соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM;
преобразуют, посредством хоста, GPA, соответствующий кэш-памяти для DMA в совместно используемой памяти, в соответствующий HPA;
процесс получения, посредством экземпляра программного обеспечения VF, связанного с BE, адреса, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записи полученного адреса, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; выбора, посредством устройства VF, адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирования запроса записи DMA с использованием выбранного адреса в качестве целевого адреса, содержит:
получение, посредством экземпляра программного обеспечения VF, связанного с BE, HPA, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, запись полученного HPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; и
выбор, посредством устройства VF, HPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирование запроса записи DMA с использованием выбранного HPA в качестве целевого адреса.

5. Способ по п. 2, в котором:
аппаратный уровень дополнительно содержит блок управления памятью ввода/вывода (I/O) (IOMMU),
способ дополнительно содержит этапы, на которых:
записывают, посредством FE, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM;
получают, посредством BE, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, из совместно используемой памяти;
вызывают, посредством BE, программный интерфейс передачи экземпляра программного обеспечения VF, связанного с BE, и записывают GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
инициируют, посредством устройства VF, запрос чтения DMA с использованием GPA, записанного во втором блоке хранения, в качестве целевого адреса, при обнаружении наличия данных, подлежащих передаче; и
преобразуют, посредством IOMMU, целевой адрес GPA запроса чтения DMA в соответствующий HPA.

6. Способ по п. 2, дополнительно содержащий этапы, на которых:
записывают, посредством FE, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM;
преобразуют, посредством хоста, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA;
получают, посредством BE, HPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, вызывают программный интерфейс передачи экземпляра программного обеспечения VF, связанного с BE, и записывают HPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; и
инициируют, посредством устройства VF, запрос чтения DMA с
использованием HPA, записанного во втором блоке хранения, в качестве целевого адреса, при обнаружении наличия данных, подлежащих передаче.

7. Способ по п. 5 или 6, дополнительно содержащий этапы, на которых: устройство VF объявляет экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса чтения DMA, так что экземпляр программного обеспечения VF запускает FE для освобождения соответствующей кэш-памяти.

8. Способ по п. 3 или 5, в котором,
в IOMMU устанавливается таблица страниц трансляции адреса, причем в таблице страниц трансляции адреса задано отображение между HPA и GPA;
процесс преобразования, посредством IOMMU, целевого адреса GPA запроса записи DMA в соответствующий физический адрес хоста (HPA) содержит этапы, на которых:
получают, посредством IOMMU, HPA, соответствующий целевому адресу GPA запроса записи DMA, посредством поиска в таблице страниц трансляции адреса и преобразуют целевой адрес GPA запроса записи DMA в полученный HPA;
или
процесс преобразования, посредством IOMMU, целевого адреса GPA запроса чтения DMA в соответствующий HPA, содержит этапы, на которых:
получают, посредством IOMMU, HPA, соответствующий целевому адресу GPA запроса чтения DMA, посредством поиска в таблице страниц трансляции адреса, и преобразуют целевой адрес GPA запроса чтения DMA в полученный HPA.

9. Способ по п. 4 или 6, в котором:
на хосте устанавливается таблица страниц трансляции адреса, причем в таблице страниц трансляции адреса задано отображение между HPA и GPA;
процесс преобразования, посредством хоста, GPA, соответствующего кэш-памяти для DMA в совместно используемой памяти, в соответствующий HPA, содержит этапы, на которых:
получают, посредством хоста, HPA, соответствующий GPA, который соответствует кэш-памяти для DMA в совместно используемой памяти, посредством поиска в таблице страниц трансляции адреса и преобразуют GPA, соответствующий кэш-памяти для DMA в совместно используемой памяти, в полученный HPA;
или
процесс преобразования, посредством хоста, GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA, содержит этапы, на которых:
получают, посредством хоста, HPA, соответствующий GPA, который соответствует кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, посредством поиска в таблице страниц трансляции адреса и преобразуют GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в полученный HPA.

10. Способ по любому из пп. 2-6, в котором:
первым блоком хранения является очередь приема; и/или
вторым блоком хранения является очередь передачи.

11. Вычислительный узел, содержащий: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, причем аппаратный уровень содержит устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O, причем BE на хосте связана с неактивным экземпляром программного обеспечения VF.

12. Вычислительный узел по п. 11, в котором:
FE выполнен с возможностью предварительного выделения кэш-памяти для прямого доступа к памяти DMA;
экземпляр программного обеспечения VF, связанный с BE выполнен с возможностью получения адреса, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, и записи полученного адреса, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF выполнено с возможностью выбора адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирования запроса
записи DMA с использованием выбранного адреса, соответствующего кэш-памяти для DMA, в качестве целевого адреса; объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.

13. Вычислительный узел по п. 12, в котором,
FE дополнительно выполнен с возможностью записи физического адреса гостя GPA, соответствующего предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM;
экземпляр программного обеспечения VF, связанный с BE, в частности, выполнен с возможностью получения GPA, соответствующего кэш-памяти для DMA, из совместно используемой памяти через экспортирующий интерфейс прикладного программирования BE, и записи полученного GPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF, в частности, выполнено с возможностью выбора GPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, инициирования запроса записи DMA с использованием выбранного GPA, соответствующего кэш-памяти для DMA, в качестве целевого адреса; объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, целевой адрес GPA которого
преобразуется в соответствующий HPA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую HPA; и
аппаратный уровень вычислительного узла дополнительно содержит:
блок управления памятью ввода/вывода (I/O) (IOMMU), выполненный с возможностью преобразования целевого адреса GPA запроса записи DMA в соответствующий физический адрес хоста (HPA).

14. Вычислительный узел по п. 12, в котором:
FE дополнительно выполнен с возможностью записи GPA, соответствующего предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM;
хост выполнен с возможностью преобразования GPA, соответствующего кэш-памяти для DMA в совместно используемой памяти, в соответствующий HPA;
экземпляр программного обеспечения VF, связанный с BE, в частности, выполнен с возможностью получения HPA, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE; и записи полученного HPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF, в частности, выполнено с возможностью выбора HPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, инициирования запроса записи DMA с использованием выбранного HPA в качестве
целевого адреса, и объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую HPA.

15. Вычислительный узел по п. 12, в котором:
FE дополнительно выполнен с возможностью записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM;
BE дополнительно выполнен с возможностью получения GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, из совместно используемой памяти; вызова программного интерфейса передачи экземпляра программного обеспечения VF, связанного с BE, и записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF дополнительно выполнено с возможностью инициирования запроса чтения DMA с использованием GPA, записанного во втором блоке хранения, в качестве целевого адреса при обнаружении наличия данных, подлежащих передаче;
аппаратный уровень вычислительного узла дополнительно содержит:
блок управления памятью ввода/вывода (I/O) (IOMMU), выполненный с возможностью преобразования целевого адреса GPA запроса чтения DMA в соответствующий HPA.

16. Вычислительный узел по п. 12, в котором:
FE дополнительно выполнен с возможностью записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM;
хост выполнен с возможностью преобразования GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA;
BE дополнительно выполнен с возможностью получения HPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче; вызова программного интерфейса передачи экземпляра программного обеспечения VF, связанного с BE, и записи HPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF дополнительно выполнено с возможностью инициирования запроса чтения DMA с использованием HPA, записанного во втором блоке хранения, в качестве целевого адреса при обнаружении наличия данных, подлежащих передаче.

17. Вычислительный узел по п. 14 или 15, в котором:
устройство VF дополнительно выполнено с возможностью объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса чтения DMA, так что экземпляр программного обеспечения VF запускает FE для освобождения соответствующей кэш-памяти.

18. Компьютерная система, содержащая: один или более вычислительных узлов, в которой каждый из одного или более
вычислительных узлов содержит: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, причем аппаратный уровень содержит устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируются из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного с устройством I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O, причем BE на хосте связана с неактивным экземпляром программного обеспечения VF.

Документы, цитированные в отчете о поиске Патент 2016 года RU2573219C2

Пломбировальные щипцы 1923
  • Громов И.С.
SU2006A1
Способ приготовления лака 1924
  • Петров Г.С.
SU2011A1
US 201000773958 A1, 22.03.2010
МУЛЬТИМЕДИЙНЫЙ ТЕРМИНАЛ ДЛЯ МНОЖЕСТВА ПОЛЬЗОВАТЕЛЕЙ 1999
  • Рей Франсуа
RU2259020C2
РАЗВЕРТЫВАНИЕ ВИРТУАЛЬНОЙ МАШИНЫ НА ХОСТЕ НА ОСНОВЕ ОПИСАНИЯ ХАРАКТЕРИСТИК РАБОЧЕЙ НАГРУЗКИ 2007
  • Валерт Брайан М.
  • Вега Рене Антонио
  • Гибсон Роберт
  • Фрис Роберт М.
  • Шайдель Уилльям Л.
  • Дурнов Павел А.
  • Ослейк Джон Морган
RU2433459C2

RU 2 573 219 C2

Авторы

Ян Сяовэй

Ван Фэн

Даты

2016-01-20Публикация

2012-05-22Подача