СПОСОБ И УСТРОЙСТВА ОБРАБОТКИ ВИРТУАЛИЗАЦИИ И КОМПЬЮТЕРНАЯ СИСТЕМА

1. Способ обработки виртуализации, содержащий этапы, на которых:
генерируют после активации виртуальной функции (VF) ввода/вывода (I/O) устройства I/O, несколько экземпляров программного обеспечения виртуальной функции (VF) на хосте, причем несколько соответствующих устройств виртуальной функции VF виртуализируются из устройства I/O при активированной VF I/O, и несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии;
создают, посредством хоста, виртуальное устройство I/O, однотипное устройству I/O,
причем экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной виртуальной машине VM; и
связывают BE с неактивным экземпляром программного обеспечения VF.
2. Способ обработки виртуализации, применяемый к вычислительному узлу, причем вычислительный узел содержит: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, причем аппаратный уровень содержит устройство ввода/вывода (I/O), несколько соответствующих устройств виртуальной функции (VF) виртуализируются из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF,
несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии;
хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O,
VM имеет экземпляр внешней стороны FE виртуального устройства I/O, причем BE на хосте связана с неактивным экземпляром программного обеспечения VF;
причем способ содержит этапы, на которых:
предварительно выделяют, посредством FE, кэш-память для прямого доступа к памяти DMA;
получают, посредством экземпляра программного обеспечения VF, связанного с BE, адрес, соответствующий кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записывают полученный адрес, соответствующий кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
выбирают, посредством устройства VF, адрес, соответствующий кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициируют запрос записи DMA с использованием выбранного адреса в качестве целевого адреса;
объявляют, посредством устройства VF, экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.
3. Способ по п. 2, в котором,
аппаратный уровень дополнительно содержит блок управления памятью ввода/вывода (I/O) (IOMMU),
способ дополнительно содержит этапы, на которых:
записывают, посредством FE, физический адрес гостя GPA, соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM;
причем процесс получения, посредством экземпляра программного обеспечения VF, связанного с BE, адреса, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записи полученного адреса, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; выбора, посредством устройства VF, адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирования запроса записи DMA с использованием выбранного адреса в качестве целевого адреса, содержит:
получение, посредством экземпляра программного обеспечения VF, связанного с BE, GPA, соответствующего кэш-памяти для DMA, из совместно используемой памяти через экспортирующий интерфейс прикладного программирования BE, запись полученного GPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; и
выбор, посредством устройства VF, GPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирование запроса записи DMA с использованием выбранного GPA в качестве целевого адреса;
способ дополнительно содержит этапы, на которых:
преобразуют, посредством IOMMU, целевой адрес GPA запроса записи DMA в соответствующий физический адрес хоста (HPA);
причем процесс объявления, посредством устройства VF, экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу, содержит:
объявление, посредством устройства VF, экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, целевой адрес которого преобразуется в HPA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую HPA.
4. Способ по п. 2, дополнительно содержащий этапы, на которых:
записывают, посредством FE, GPA, соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM;
преобразуют, посредством хоста, GPA, соответствующий кэш-памяти для DMA в совместно используемой памяти, в соответствующий HPA;
процесс получения, посредством экземпляра программного обеспечения VF, связанного с BE, адреса, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записи полученного адреса, соответствующего
кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; выбора, посредством устройства VF, адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирования запроса записи DMA с использованием выбранного адреса в качестве целевого адреса, содержит:
получение, посредством экземпляра программного обеспечения VF, связанного с BE, HPA, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, запись полученного HPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; и
выбор, посредством устройства VF, HPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирование запроса записи DMA с использованием выбранного HPA в качестве целевого адреса.
5. Способ по п. 2, в котором
аппаратный уровень дополнительно содержит блок управления памятью ввода/вывода (I/O) (IOMMU),
способ дополнительно содержит этапы, на которых:
записывают, посредством FE, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM;
получают, посредством BE, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, из совместно используемой памяти;
вызывают, посредством BE, программный интерфейс передачи экземпляра программного обеспечения VF, связанного с BE, и записывают GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
инициируют, посредством устройства VF, запрос чтения DMA с использованием GPA, записанного во втором блоке хранения, в качестве целевого адреса, при обнаружении наличия данных, подлежащих передаче; и
преобразуют, посредством IOMMU, целевой адрес GPA запроса чтения DMA в соответствующий HPA.
6. Способ по п. 2, дополнительно содержащий этапы, на которых:
записывают, посредством FE, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM;
преобразуют, посредством хоста, GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA;
получают, посредством BE, HPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, вызывают программный интерфейс передачи экземпляра программного обеспечения VF, связанного с BE, и записывают HPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; и
инициируют, посредством устройства VF, запрос чтения DMA с использованием HPA, записанного во втором блоке хранения, в качестве целевого адреса, при обнаружении наличия данных, подлежащих передаче.
7. Способ по п. 5 или 6, дополнительно содержащий этапы, на которых: устройство VF объявляет экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса чтения DMA, так что экземпляр программного обеспечения VF запускает FE для освобождения соответствующей кэш-памяти.
8. Способ по п. 3 или 5, в котором
в IOMMU устанавливается таблица страниц трансляции адреса, причем в таблице страниц трансляции адреса задано отображение между HPA и GPA;
процесс преобразования, посредством IOMMU, целевого адреса GPA запроса записи DMA в соответствующий физический адрес хоста (HPA), содержит этапы, на которых:
получают, посредством IOMMU, HPA, соответствующий целевому адресу GPA запроса записи DMA, посредством поиска в таблице страниц трансляции адреса, и преобразуют целевой адрес GPA запроса записи DMA в полученный HPA;
или,
процесс преобразования, посредством IOMMU, целевого адреса GPA запроса чтения DMA в соответствующий HPA, содержит этапы, на которых:
получают, посредством IOMMU, HPA, соответствующий целевому адресу GPA запроса чтения DMA, посредством поиска в таблице страниц трансляции адреса, и преобразуют целевой адрес GPA
запроса чтения DMA в полученный HPA.
9. Способ по п. 4 или 6, в котором
на хосте устанавливается таблица страниц трансляции адреса, причем в таблице страниц трансляции адреса задано отображение между HPA и GPA;
процесс преобразования, посредством хоста, GPA, соответствующего кэш-памяти для DMA в совместно используемой памяти, в соответствующий HPA, содержит этапы, на которых:
получают, посредством хоста, HPA, соответствующий GPA, который соответствует кэш-памяти для DMA в совместно используемой памяти, посредством поиска в таблице страниц трансляции адреса, и преобразуют GPA, соответствующий кэш-памяти для DMA в совместно используемой памяти, в полученный HPA;
или,
процесс преобразования, посредством хоста, GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA, содержит этапы, на которых:
получают, посредством хоста, HPA, соответствующий GPA, который соответствует кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, посредством поиска в таблице страниц трансляции адреса, и преобразуют GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в полученный HPA.
10. Способ по любому из пп. 2-6, в котором
первым блоком хранения является очередь приема; и/или,
вторым блоком хранения является очередь передачи.
11. Вычислительный узел, содержащий: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, причем аппаратный уровень содержит устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируются из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O, причем BE на хосте связана с неактивным экземпляром программного обеспечения VF.
12. Вычислительный узел по п. 11, в котором
FE выполнен с возможностью предварительного выделения кэш-памяти для прямого доступа к памяти DMA;
экземпляр программного обеспечения VF, связанный с BE выполнен с возможностью получения адреса, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, и записи полученного адреса, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF выполнено с возможностью выбора адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирования запроса
записи DMA с использованием выбранного адреса, соответствующего кэш-памяти для DMA, в качестве целевого адреса; объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.
13. Вычислительный узел по п. 12, в котором
FE дополнительно выполнен с возможностью записи физического адреса гостя GPA, соответствующего предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM;
экземпляр программного обеспечения VF, связанный с BE, в частности, выполнен с возможностью получения GPA, соответствующего кэш-памяти для DMA, из совместно используемой памяти через экспортирующий интерфейс прикладного программирования BE, и записи полученного GPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF, в частности, выполнено с возможностью выбора GPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, инициирования запроса записи DMA с использованием выбранного GPA, соответствующего кэш-памяти для DMA, в качестве целевого адреса; объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, целевой адрес GPA которого преобразуется в соответствующий HPA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую HPA; и
аппаратный уровень вычислительного узла дополнительно содержит:
блок управления памятью ввода/вывода (I/O) (IOMMU), выполненный с возможностью преобразования целевого адреса GPA запроса записи DMA в соответствующий физический адрес хоста (HPA).
14. Вычислительный узел по п. 12, в котором
FE дополнительно выполнен с возможностью записи GPA, соответствующего предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM;
хост выполнен с возможностью преобразования GPA, соответствующего кэш-памяти для DMA в совместно используемой памяти, в соответствующий HPA;
экземпляр программного обеспечения VF, связанный с BE, в частности, выполнен с возможностью получения HPA, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE; и записи полученного HPA, соответствующего кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF, в частности, выполнено с возможностью выбора HPA, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, инициирования запроса записи DMA с использованием выбранного HPA в качестве целевого адреса, и объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую HPA.
15. Вычислительный узел по п. 12, в котором
FE дополнительно выполнен с возможностью записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM;
BE дополнительно выполнен с возможностью получения GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, из совместно используемой памяти; вызова программного интерфейса передачи экземпляра программного обеспечения VF, связанного с BE, и записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF дополнительно выполнено с возможностью инициирования запроса чтения DMA с использованием GPA, записанного во втором блоке хранения, в качестве целевого адреса при обнаружении наличия данных, подлежащих передаче;
аппаратный уровень вычислительного узла дополнительно содержит:
блок управления памятью ввода/вывода (I/O) (IOMMU), выполненный с возможностью преобразования целевого адреса GPA запроса чтения DMA в соответствующий HPA.
16. Вычислительный узел по п. 12, в котором
FE дополнительно выполнен с возможностью записи GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM;
хост выполнен с возможностью преобразования GPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, в совместно используемой памяти, в соответствующий HPA;
BE дополнительно выполнен с возможностью получения HPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче; вызова программного интерфейса передачи экземпляра программного обеспечения VF, связанного с BE, и записи HPA, соответствующего кэш-памяти, где находятся данные, подлежащие передаче, во второй блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF;
устройство VF дополнительно выполнено с возможностью инициирования запроса чтения DMA с использованием HPA, записанного во втором блоке хранения, в качестве целевого адреса при обнаружении наличия данных, подлежащих передаче.
17. Вычислительный узел по п. 14 или 15, в котором
устройство VF дополнительно выполнено с возможностью объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса чтения DMA, так что экземпляр программного обеспечения VF запускает FE для освобождения соответствующей кэш-памяти.
18. Компьютерная система, содержащая: один или более вычислительных узлов, в которой каждый из одного или более вычислительных узлов содержит: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, причем аппаратный уровень содержит устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируются из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного с устройством I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O, причем BE на хосте связана с неактивным экземпляром программного обеспечения VF.