Wirtualizacja GPU, jak to działa i do czego służy

Jednym z ograniczeń, jakie mają karty graficzne do komputerów stacjonarnych i laptopów, jest brak możliwości uruchamiania wielu systemów operacyjnych w tym samym czasie lub maszyn wirtualnych. To zróżnicowanie, które mają niektóre procesory graficzne, nazywa się wirtualizacją iw tym artykule wyjaśnimy, czym jest i jakich zmian wymaga w sprzęcie.

Przed pojawieniem się komputera osobistego ludzie pracowali w terminalach podłączonych do centralnego minikomputera, który odpowiadał za wykonanie wszystkich zadań. Wraz z pojawieniem się chmury obliczeniowej obsługującej różne systemy operacyjne w maszynach wirtualnych, wirtualizacja jest konieczna nie tylko w przypadku procesorów, ale także procesorów graficznych.

Wirtualizacja GPU

Dlaczego wirtualizacja jest konieczna w przypadku procesorów graficznych?

Wirtualizacja to zdolność sprzętu do tworzenia wielu wersji samego siebie, dzięki czemu może być używana przez wiele maszyn wirtualnych. Na przykład część pliku CPU który został zwirtualizowany, będzie postrzegany przez system operacyjny działający na maszynie wirtualnej, podczas gdy inne maszyny wirtualne będą widzieć inne części procesora jako pojedynczy i odrębny procesor. W takim przypadku zwirtualizowaliśmy procesor, ponieważ stworzyliśmy wirtualną wersję każdego systemu operacyjnego działającego w systemie.

W przypadku GPU listy poleceń dla grafiki i obliczeń są zapisywane w szczególności w niektórych częściach pamięci i ogólnie GPU, które montujemy w naszych komputerach, są zaprojektowane do pracy w jednym systemie operacyjnym bez żadnej maszyny wirtualnej pomiędzy. .

Nie dotyczy to kart graficznych dla centrów danych, w których zwykle działa kilka różnych instancji, maszyn wirtualnych systemu operacyjnego i każdy klient musi mieć dostęp do GPU. Właśnie w tym przypadku konieczna jest wirtualizacja w procesorach graficznych

Wirtualizacja od strony GPU

Procesor graficzny AMD Vega

Procesory graficzne wymagają również zmian na poziomie sprzętowym, aby obsługiwać wirtualizację. Z tego powodu karty graficzne o tej pojemności są zwykle sprzedawane tylko na rynki z dala od komputerów stacjonarnych i dlatego mają znacznie wyższą cenę niż stacjonarne procesory graficzne. Dziś możesz wynająć moc GPU w chmurze, aby przyspieszyć niektóre prace naukowe, zdalnie renderować scenę do filmu lub serialu i tak dalej.

SR-IOV

SR-IOV

Każde urządzenie peryferyjne PCI Express ma unikalny adres pamięci na mapie pamięci każdego komputera. Co oznacza, że ​​jeśli korzystamy ze środowiska zwirtualizowanego, nie możemy wielokrotnie uzyskać dostępu do sprzętu podłączonego do tych portów, na przykład kart graficznych. Zwykle maszyny wirtualne, które uruchamiamy na komputerach stacjonarnych, nie mają możliwości korzystania z karty graficznej, która będzie dostępna tylko dla systemu operacyjnego gościa.

Rozwiązaniem tego problemu jest SR-IOV, który wirtualizuje port PCI Express i umożliwia wielu maszynom wirtualnym jednoczesny dostęp do tych adresów pamięci. W komputerze peryferyjnym komunikacja odbywa się poprzez wywołania określonych adresów pamięci. Chociaż dziś wywołania te nie odpowiadają fizycznym adresom pamięci, ale wirtualnym, nienaruszalna zasada jest taka, że ​​zawartość adresu pamięci nie może być manipulowana przez dwóch klientów jednocześnie, ponieważ wtedy występują konflikty dotyczące zawartości danych.

SR-IOV do działania potrzebuje kontrolera sieciowego zintegrowanego z urządzeniem PCI Express, w przypadku gdy mamy do czynienia z kartą graficzną, która odbiera żądania z różnych maszyn wirtualnych, które potrzebują dostępu do swoich zasobów.

Zmiany w napędach DMA do wirtualizacji GPU

Kanały DMA

Pierwsza zmiana następuje w jednostkach DMA, jednostki te zwykle występują w parach w procesorach graficznych, których używamy w komputerach PC i dają dostęp do RAM systemu, nie mylić z pamięcią VRAM, poprzez alternatywny kanał. Przy każdej klatce GPU będzie musiał uzyskać dostęp do odczytu listy ekranów w części pamięci RAM lub będzie musiał skopiować dane z pamięci RAM do pamięci VRAM na wypadek, gdyby te dane były potrzebne później. Wykorzystuje jedną jednostkę DMA w każdym kierunku. W przypadku GPU z wirtualizacją? Używają kilku jednostek DMA równolegle lub jednej jednostki DMA z kilkoma równoczesnymi kanałami dostępu .

Wykorzystaniem różnych kanałów przez wirtualne GPU zarządza zintegrowany kontroler sieciowy, który jest odpowiedzialny za zarządzanie żądaniami do pamięci RAM, fizycznie lub do innego urządzenia peryferyjnego również podłączonego do portu PCI Express. Jeśli więc różne wirtualne procesory graficzne mają na przykład dostęp do pliku SSD dysku, robią to za pośrednictwem jednostek DMA.

Zmiany w procesorze poleceń GPU

Procesadores Comandos Typy

Druga zmiana dotyczy procesora poleceń. Wszystkie GPU do obliczeń bez grafiki w środku są przyzwyczajone do pracy w kilku kontekstach jednocześnie, to dlatego, że są to bardzo małe listy poleceń, które są rozwiązywane w krótkim czasie, z drugiej strony jeśli mówimy o grafice to rzecz zmienia się całkowicie, ponieważ zwykle używana jest pojedyncza lista poleceń.

A co z niezwirtualizowanymi procesorami graficznymi, które używają wielu wyświetlaczy? To nie to samo, co używanie kilku systemów operacyjnych w maszynach wirtualnych, ponieważ lista ekranów w tych przypadkach pochodzi z jednego systemu operacyjnego, który wskazuje procesorowi graficznemu wyjście wideo, przez które musi być przesłany każdy obraz.

Dlatego konieczne jest zaimplementowanie specjalnego graficznego procesora poleceń, który współpracuje z jednostkami DMA i zintegrowanym kontrolerem sieciowym, aby funkcjonować nie jako jeden GPU, ale jako kilka różnych i wirtualnych.

Zasoby GPU są dystrybuowane w ramach wirtualizacji

Wszystkie współczesne karty graficzne są zwykle podzielone na kilka bloków w innych blokach, na przykład jeśli weźmiemy GA102 z NVIDIA RTX 3080 lub 3090 zobaczymy, że początkowo składa się z kilku GPC, w których znajduje się kilka TPC, aw każdym TPC mamy 2 SM.

W zależności od tego, jak dystrybucja zasobów została zaproponowana przez producenta, możemy znaleźć dystrybucję, w której każda maszyna wirtualna odpowiada GPC, więc w przypadku GA102 mówilibyśmy o wirtualizacji GPU w 7 różnych. Chociaż byłoby to również możliwe na poziomie TPC, w takim przypadku można stworzyć do 36 maszyn wirtualnych, ale jak rozumiemy, moc dla każdej z nich byłaby bardzo różna.

W GPU to, co jest przypisane w NVIDIA, to kompletny GPC lub co w AMD jest znany jako Shader Engine, ponieważ każda z tych części zawiera wszystkie niezbędne komponenty, aby samodzielnie funkcjonować jako GPU. W przypadkach, gdy zwirtualizowany procesor graficzny nie jest używany do renderowania, ale do obliczeń, dystrybucja odbywa się na poziomie TPC lub jego odpowiednika w AMD RDNA, WGP.