RU2573219C2 - Способ и устройства обработки виртуализации и компьютерная система - Google Patents
Способ и устройства обработки виртуализации и компьютерная система Download PDFInfo
- Publication number
- RU2573219C2 RU2573219C2 RU2014117656/08A RU2014117656A RU2573219C2 RU 2573219 C2 RU2573219 C2 RU 2573219C2 RU 2014117656/08 A RU2014117656/08 A RU 2014117656/08A RU 2014117656 A RU2014117656 A RU 2014117656A RU 2573219 C2 RU2573219 C2 RU 2573219C2
- Authority
- RU
- Russia
- Prior art keywords
- host
- cache
- dma
- instance
- software
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/002—Specific input/output arrangements not covered by G06F3/01 - G06F3/16
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
Изобретение относится к обработке виртуализации в компьютерной системе. Технический результат заключается в обеспечении совместимости средств виртуализации с устройствами, использующимися в компьютерной системе. Вычислительный узел включает в себя: аппаратный уровень, хост, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, с несколькими соответствующими устройствами виртуальной функции VF, полученными из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF и несколько устройств VF, находящихся во взаимно однозначном соответствии. Хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF. 4 н. и 14 з.п. ф-лы, 19 ил.
Description
Перекрестная ссылка на родственные заявки
[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] Подробно описаны способ и устройства обработки виртуализации, и компьютерная система, предусмотренные в вариантах осуществления настоящего изобретения. Принцип и реализация настоящего изобретения описаны здесь на конкретных примерах. Описание вариантов осуществления настоящего изобретения приведено исключительно для облегчения понимания способа и основных принципов настоящего изобретения. Специалисты в данной области техники могут предложить вариации и модификации настоящего изобретения в отношении конкретной реализации и объема применимости согласно принципам настоящего изобретения. Поэтому описание изобретения не следует рассматривать в порядке ограничения настоящего изобретения.
Claims (18)
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.
генерируют после активации виртуальной функции (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 для приема данных, записанных в кэш-память, соответствующую адресу.
несколько экземпляров программного обеспечения 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.
аппаратный уровень дополнительно содержит блок управления памятью ввода/вывода (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 в качестве целевого адреса.
записывают, посредством 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.
аппаратный уровень дополнительно содержит блок управления памятью ввода/вывода (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, записанного во втором блоке хранения, в качестве целевого адреса, при обнаружении наличия данных, подлежащих передаче.
записывают, посредством 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.
в 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.
на хосте устанавливается таблица страниц трансляции адреса, причем в таблице страниц трансляции адреса задано отображение между 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 для приема данных, записанных в кэш-память, соответствующую адресу.
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).
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.
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.
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, записанного во втором блоке хранения, в качестве целевого адреса при обнаружении наличия данных, подлежащих передаче.
FE дополнительно выполнен с возможностью записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM;
хост выполнен с возможностью преобразования GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA;
BE дополнительно выполнен с возможностью получения HPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче; вызова программного интерфейса передачи экземпляра программного обеспечения VF, связанного с BE, и записи HPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF дополнительно выполнено с возможностью инициирования запроса чтения DMA с использованием HPA, записанного во втором блоке хранения, в качестве целевого адреса при обнаружении наличия данных, подлежащих передаче.
17. Вычислительный узел по п. 14 или 15, в котором:
устройство VF дополнительно выполнено с возможностью объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса чтения DMA, так что экземпляр программного обеспечения VF запускает FE для освобождения соответствующей кэш-памяти.
устройство 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.
вычислительных узлов содержит: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, причем аппаратный уровень содержит устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируются из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного с устройством I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O, причем BE на хосте связана с неактивным экземпляром программного обеспечения VF.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110458345.8 | 2011-12-31 | ||
CN201110458345.8A CN102591702B (zh) | 2011-12-31 | 2011-12-31 | 虚拟化处理方法及相关装置和计算机系统 |
PCT/CN2012/075846 WO2012149912A1 (zh) | 2011-12-31 | 2012-05-22 | 虚拟化处理方法及相关装置和计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2014117656A RU2014117656A (ru) | 2015-11-10 |
RU2573219C2 true RU2573219C2 (ru) | 2016-01-20 |
Family
ID=46480412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2014117656/08A RU2573219C2 (ru) | 2011-12-31 | 2012-05-22 | Способ и устройства обработки виртуализации и компьютерная система |
Country Status (8)
Country | Link |
---|---|
US (2) | US8635616B2 (ru) |
EP (1) | EP2743829B1 (ru) |
JP (1) | JP5802841B2 (ru) |
KR (2) | KR101740521B1 (ru) |
CN (1) | CN102591702B (ru) |
AU (1) | AU2012250375B2 (ru) |
RU (1) | RU2573219C2 (ru) |
WO (1) | WO2012149912A1 (ru) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2644126C2 (ru) * | 2016-05-31 | 2018-02-07 | Некоммерческое Партнерство "Центр Прикладных Исследований Компьютерных Сетей" | Способ оптимального планирования использования виртуальных сетевых ресурсов центров обработки данных |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9239909B2 (en) * | 2012-01-25 | 2016-01-19 | Bromium, Inc. | Approaches for protecting sensitive data within a guest operating system |
US9244743B1 (en) | 2012-08-01 | 2016-01-26 | Amazon Technologies, Inc. | Remotely interacting with a virtualized machine instance |
CN102946366B (zh) * | 2012-11-12 | 2015-12-16 | 杭州华为数字技术有限公司 | 带内管理方法及系统 |
US9535871B2 (en) | 2012-11-27 | 2017-01-03 | Red Hat Israel, Ltd. | Dynamic routing through virtual appliances |
US9454392B2 (en) * | 2012-11-27 | 2016-09-27 | Red Hat Israel, Ltd. | Routing data packets between virtual machines using shared memory without copying the data packet |
CN103870312B (zh) * | 2012-12-12 | 2018-01-23 | 华为技术有限公司 | 建立虚拟机共享存储缓存的方法及装置 |
CN103116517B (zh) * | 2013-01-24 | 2016-09-14 | 华为技术有限公司 | 虚拟化平台下i/o通道的调整方法和调整装置 |
US9195483B2 (en) * | 2013-01-28 | 2015-11-24 | Dell Products L.P. | Systems and methods for mirroring virtual functions in a chassis configured to receive a plurality of modular information handling systems and a plurality of modular information handling resources |
GB2514107B (en) * | 2013-05-13 | 2020-07-29 | Advanced Risc Mach Ltd | Page table data management |
CN103389884A (zh) * | 2013-07-29 | 2013-11-13 | 华为技术有限公司 | 处理输入/输出请求的方法、宿主机、服务器和虚拟机 |
WO2015013920A1 (zh) * | 2013-07-31 | 2015-02-05 | 华为技术有限公司 | 一种数据转发方法、装置及系统 |
CN103763173B (zh) * | 2013-12-31 | 2017-08-25 | 华为技术有限公司 | 数据传输方法和计算节点 |
CN104123173B (zh) * | 2014-07-22 | 2017-08-25 | 华为技术有限公司 | 一种实现虚拟机间通信的方法及装置 |
JP6380084B2 (ja) * | 2014-12-19 | 2018-08-29 | 富士ゼロックス株式会社 | 情報処理装置及び情報処理プログラム |
CN105556473A (zh) * | 2014-12-27 | 2016-05-04 | 华为技术有限公司 | 一种i/o任务处理的方法、设备和系统 |
KR102398213B1 (ko) | 2015-03-09 | 2022-05-17 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법 |
CN106301876B (zh) * | 2015-06-26 | 2019-11-29 | 南京中兴新软件有限责任公司 | 物理机升级方法、业务迁移方法及装置 |
CN107643897B (zh) * | 2016-07-20 | 2021-04-16 | 阿里巴巴集团控股有限公司 | 后端驱动程序的更新方法及装置 |
CN111078353A (zh) | 2016-10-28 | 2020-04-28 | 华为技术有限公司 | 存储设备的操作方法及物理服务器 |
KR101716715B1 (ko) | 2016-12-27 | 2017-03-15 | 주식회사 티맥스클라우드 | 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치 |
CN109426545B (zh) * | 2017-08-31 | 2023-02-03 | 阿里巴巴集团控股有限公司 | 一种数据通信方法及装置 |
CN109542581B (zh) * | 2017-09-22 | 2020-10-13 | 深圳市中兴微电子技术有限公司 | 一种设备共享方法、装置及存储介质 |
CN109657471B (zh) * | 2017-10-11 | 2023-02-28 | 阿里巴巴集团控股有限公司 | 云设备管理系统和方法 |
CN110554977A (zh) * | 2018-05-30 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 数据缓存方法、数据处理方法、计算机设备、存储介质 |
CN110597451B (zh) * | 2018-06-12 | 2021-02-23 | 华为技术有限公司 | 一种虚拟化缓存的实现方法及物理机 |
CN109525515B (zh) * | 2018-10-23 | 2021-04-30 | 郑州云海信息技术有限公司 | 一种云平台中网卡的管理方法和装置 |
CN111857943B (zh) | 2019-04-30 | 2024-05-17 | 华为技术有限公司 | 数据处理的方法、装置与设备 |
KR102247247B1 (ko) * | 2019-06-05 | 2021-05-03 | 주식회사 티맥스티베로 | 데이터베이스 관리 방법 |
US11044161B2 (en) * | 2019-10-11 | 2021-06-22 | Huawei Technologies Canada Co., Ltd. | Method and system for latency-aware embedding of a virtual network onto a substrate optical network |
CN111274176B (zh) * | 2020-01-15 | 2022-04-22 | 联想(北京)有限公司 | 一种信息处理方法、电子设备、系统及存储介质 |
CN117234741B (zh) * | 2023-11-14 | 2024-02-20 | 苏州元脑智能科技有限公司 | 资源管理与调度方法、装置、电子设备以及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2259020C2 (ru) * | 1998-03-06 | 2005-08-20 | КАНАЛЬ+ Сосьетэ Аноним | Мультимедийный терминал для множества пользователей |
RU2433459C2 (ru) * | 2006-05-18 | 2011-11-10 | Майкрософт Корпорейшн | Развертывание виртуальной машины на хосте на основе описания характеристик рабочей нагрузки |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6195345B1 (en) * | 1997-12-03 | 2001-02-27 | Ericsson Messaging Systems, Inc. | High capacity multimedia messaging exchanges |
JP2006294517A (ja) | 2005-04-13 | 2006-10-26 | Kansai Electric Power Co Inc:The | Ga系固体電解質材料の製造方法 |
US20060294517A1 (en) | 2005-06-28 | 2006-12-28 | Zimmer Vincent J | Network interface sharing among multiple virtual machines |
JP4681505B2 (ja) * | 2006-05-23 | 2011-05-11 | 株式会社日立製作所 | 計算機システム、管理計算機及びプログラム配布方法 |
US20080126614A1 (en) * | 2006-09-26 | 2008-05-29 | Giap Yong Ooi | Input/output (I/O) device virtualization using hardware |
US7761612B2 (en) * | 2006-12-07 | 2010-07-20 | International Business Machines Corporation | Migrating domains from one physical data processing system to another |
CN100568181C (zh) * | 2007-06-22 | 2009-12-09 | 浙江大学 | 基于处理器虚拟化技术的虚拟机系统及其实现方法 |
US8645974B2 (en) | 2007-08-02 | 2014-02-04 | International Business Machines Corporation | Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device |
US8954957B2 (en) | 2009-07-01 | 2015-02-10 | Riverbed Technology, Inc. | Network traffic processing according to network traffic rule criteria and transferring network traffic metadata in a network device that includes hosted virtual machines |
US20130055259A1 (en) * | 2009-12-24 | 2013-02-28 | Yaozu Dong | Method and apparatus for handling an i/o operation in a virtualization environment |
JP2011145912A (ja) * | 2010-01-15 | 2011-07-28 | Fujitsu Ltd | 仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム |
US8178754B1 (en) | 2010-05-05 | 2012-05-15 | Pioneer Hi-Bred International, Inc. | Soybean variety XB29L10 |
CN101976200B (zh) * | 2010-10-15 | 2013-05-08 | 浙江大学 | 在虚拟机监控器外进行输入输出设备虚拟化的虚拟机系统 |
-
2011
- 2011-12-31 CN CN201110458345.8A patent/CN102591702B/zh active Active
-
2012
- 2012-05-22 JP JP2014537456A patent/JP5802841B2/ja active Active
- 2012-05-22 KR KR1020147007779A patent/KR101740521B1/ko active IP Right Grant
- 2012-05-22 RU RU2014117656/08A patent/RU2573219C2/ru active
- 2012-05-22 KR KR1020177013797A patent/KR20170058469A/ko not_active Application Discontinuation
- 2012-05-22 EP EP12779983.1A patent/EP2743829B1/en active Active
- 2012-05-22 AU AU2012250375A patent/AU2012250375B2/en active Active
- 2012-05-22 WO PCT/CN2012/075846 patent/WO2012149912A1/zh active Application Filing
- 2012-11-13 US US13/675,120 patent/US8635616B2/en active Active
-
2013
- 2013-09-17 US US14/029,276 patent/US9244715B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2259020C2 (ru) * | 1998-03-06 | 2005-08-20 | КАНАЛЬ+ Сосьетэ Аноним | Мультимедийный терминал для множества пользователей |
RU2433459C2 (ru) * | 2006-05-18 | 2011-11-10 | Майкрософт Корпорейшн | Развертывание виртуальной машины на хосте на основе описания характеристик рабочей нагрузки |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2644126C2 (ru) * | 2016-05-31 | 2018-02-07 | Некоммерческое Партнерство "Центр Прикладных Исследований Компьютерных Сетей" | Способ оптимального планирования использования виртуальных сетевых ресурсов центров обработки данных |
Also Published As
Publication number | Publication date |
---|---|
KR20170058469A (ko) | 2017-05-26 |
AU2012250375B2 (en) | 2015-08-13 |
CN102591702A (zh) | 2012-07-18 |
KR20140054349A (ko) | 2014-05-08 |
RU2014117656A (ru) | 2015-11-10 |
CN102591702B (zh) | 2015-04-15 |
AU2012250375A1 (en) | 2014-04-03 |
EP2743829A4 (en) | 2014-10-22 |
US8635616B2 (en) | 2014-01-21 |
KR101740521B1 (ko) | 2017-06-08 |
JP5802841B2 (ja) | 2015-11-04 |
US20130174155A1 (en) | 2013-07-04 |
WO2012149912A1 (zh) | 2012-11-08 |
US20140019973A1 (en) | 2014-01-16 |
EP2743829B1 (en) | 2018-09-12 |
US9244715B2 (en) | 2016-01-26 |
EP2743829A1 (en) | 2014-06-18 |
JP2014531093A (ja) | 2014-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2573219C2 (ru) | Способ и устройства обработки виртуализации и компьютерная система | |
EP3457288B1 (en) | Computer system and storage access device | |
US9552233B1 (en) | Virtual machine migration using free page hinting | |
CN107209681B (zh) | 一种存储设备访问方法、装置和系统 | |
RU2406113C2 (ru) | Системы и способы двухрежимной виртуализации устройства реальных и идеализированных аппаратных устройств | |
KR101952795B1 (ko) | 자원 프로세싱 방법, 운영체제, 및 장치 | |
JP6055310B2 (ja) | 仮想記憶ターゲットオフロード技術 | |
JP6099760B2 (ja) | プロセスをマイグレートするためのコンピュータ実装方法、コンピュータベースのシステム、およびコンピュータプログラム | |
US9720712B2 (en) | Physical/virtual device failover with a shared backend | |
CN103870311B (zh) | 通过半虚拟化驱动访问硬件的方法、后端驱动及前端驱动 | |
KR101716715B1 (ko) | 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치 | |
JP2016541072A5 (ru) | ||
WO2016101282A1 (zh) | 一种i/o任务处理的方法、设备和系统 | |
JP2016018298A (ja) | 通知変換プログラム及び通知変換方法 | |
CN113242175B (zh) | 一种基于spdk的存储网关及其实现方法 | |
CN107807840B (zh) | 一种应用于虚拟机网络的设备直通方法以及装置 | |
CN117369993A (zh) | 在Linux环境下兼容运行不同业务系统的方法及信创服务器 | |
KR101765723B1 (ko) | 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법 | |
JP5439435B2 (ja) | 計算機システムおよびその計算機システムにおけるディスク共有方法 | |
US8924972B2 (en) | Method and system for logging into a virtual environment executing on a host | |
CN109684029A (zh) | 存储内容访问方法、装置、电子设备及计算机存储介质 | |
AU2015203452B2 (en) | Virtualization processing method and apparatuses, and computer system | |
US20140149977A1 (en) | Assigning a Virtual Processor Architecture for the Lifetime of a Software Application | |
CN107357674B (zh) | 一种信息处理方法、设备和存储介质 |