Виртуализация GPU, как она работает и для чего используется

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

До появления персональных компьютеров люди работали в терминалах, подключенных к центральному мини-компьютеру, который отвечал за выполнение всех задач. С появлением облачных вычислений под управлением различных операционных систем на виртуальных машинах виртуализация стала необходимой не только для ЦП, но и для графических процессоров.

Виртуализация GPU

Зачем нужна виртуализация на графических процессорах?

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

В случае графических процессоров списки команд для графики и вычислений записываются в определенных частях памяти, в частности, и в целом графические процессоры, которые мы устанавливаем в наши ПК, предназначены для работы в одной операционной системе без какой-либо промежуточной виртуальной машины. .

Это не относится к видеокартам для центров обработки данных, где обычно работают несколько различных экземпляров, виртуальных машин операционной системы, и каждому клиенту необходимо иметь доступ к GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР. Именно в этом случае необходима виртуализация в графических процессорах.

Виртуализация со стороны GPU

Графический процессор AMD Vega

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

СР-ИОВ

СР-ИОВ

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

Решением этой проблемы является SR-IOV, который виртуализирует порт PCI Express и позволяет нескольким виртуальным машинам одновременно обращаться к этим адресам памяти. В ПК связь с периферией осуществляется через вызовы определенных адресов памяти. Хотя сегодня эти вызовы соответствуют не физическим адресам памяти, а виртуальным, нерушимым правилом является то, что содержимое адреса памяти не может управляться двумя клиентами одновременно, поскольку тогда возникают конфликты относительно содержимого данных.

Для работы SR-IOV необходим сетевой контроллер, интегрированный в устройство PCI Express, в случае, если мы имеем дело с видеокартой, которая получает запросы от различных виртуальных машин, которым необходим доступ к ее ресурсам.

Изменения в дисках DMA для виртуализации GPU

Каналес DMA

Первое изменение происходит в блоках прямого доступа к памяти, эти блоки обычно входят парами в графические процессоры, которые мы используем в ПК, и предоставляют доступ к Оперативная память системы, не путать с VRAM, через альтернативный канал. В каждом кадре графический процессор должен будет получить доступ для чтения списка экранов в части ОЗУ, или ему придется копировать данные из ОЗУ во VRAM, если они потребуются позже. Это использует один блок DMA в каждом направлении. В случае графических процессоров с виртуализацией? Они используют несколько модулей DMA параллельно или один модуль DMA с несколькими каналами одновременного доступа. .

Использование различных каналов виртуальными графическими процессорами управляется встроенным сетевым контроллером, который отвечает за управление запросами к ОЗУ, физически или к другому периферийному устройству, также подключенному к порту PCI Express. Поэтому, если разные виртуальные графические процессоры должны получить доступ, например, к SSD disk, они делают это через модули прямого доступа к памяти.

Изменения командного процессора графического процессора

Процессадорес Командос Типос

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

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

Следовательно, необходимо реализовать специальный процессор графических команд, который работает вместе с модулями DMA и интегрированным сетевым контроллером, чтобы функционировать не как один графический процессор, а как несколько различных и виртуальных.

Ресурсы GPU распределяются в виртуализации

Все современные видеокарты обычно делятся на несколько блоков внутри других блоков, например, если мы берем GA102 из NVIDIA RTX 3080 или 3090 мы увидим, что он изначально состоит из нескольких GPC, внутри которых есть несколько TPC, и в каждом TPC у нас есть 2 SM.

В зависимости от того, как распределение ресурсов было предложено производителем, мы можем найти распределение, в котором каждая виртуальная машина соответствует GPC, поэтому в случае GA102 мы будем говорить о виртуализации графического процессора в 7 различных вариантах. Хотя это также можно было бы сделать на уровне TPC, в этом случае можно создать до 36 виртуальных машин, но, как мы понимаем, мощность каждой из них будет очень разной.

В графических процессорах то, что назначено в NVIDIA, является полным GPC или что в AMD известен как Shader Engine, поскольку каждая из этих частей имеет все необходимые компоненты для работы в качестве графического процессора. В случаях, когда виртуализированный графический процессор используется не для рендеринга, а для вычислений, распределение осуществляется на уровне TPC или его эквиваленте в AMD RDNA, WGP.