Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano model GpuMmu , który został wprowadzony w systemie Windows 10 (WDDM 2.0).
W modelu GpuMmu GPU ma własną jednostkę zarządzania pamięcią (MMU), która tłumaczy wirtualne adresy GPU dla każdego procesu na adresy fizyczne.
Każdy proces ma oddzielne przestrzenie adresowe procesora CPU i procesora GPU, które używają odrębnych tabel stron. Menedżer pamięci wideo (VidMm) zarządza wirtualną przestrzenią adresową procesora GPU wszystkich procesów. Program VidMm jest również odpowiedzialny za przydzielanie, rozwijanie, aktualizowanie, zapewnianie rezydencji i zwalnianie tabel stron. Format sprzętowy tabel stron używanych przez procesor GPU MMU jest nieznany VidMm i jest abstrahowany za pośrednictwem interfejsów sterowników urządzeń (DDIs). Abstrakcja obsługuje translację na poziomie wielopoziomowym, w tym tabelę stron o stałym rozmiarze i tabelę stron głównych z możliwością zmiany rozmiaru.
Mimo że VidMm jest odpowiedzialny za zarządzanie wirtualną przestrzenią adresową procesora GPU i jego bazowymi tabelami stron, VidMm nie przypisuje automatycznie adresów wirtualnych procesora GPU do alokacji. Ta odpowiedzialność spoczywa na sterowniku trybu użytkownika (UMD).
VidMm oferuje dwie główne usługi UMD:
Alokacja i dealokacja pamięci. UMD może przydzielić pamięć wideo za pomocą istniejącego wywołania zwrotnego przydzielania i zwolnić tę pamięć za pomocą istniejącego wywołania zwrotnego zwolnienia. Alokacja zwraca uchwyt do alokacji VidMm dla UMD. Silnik GPU może działać na tym uchwycie. Taka alokacja odnosi się konkretnie do fizycznej pamięci wideo, do której aparat GPU może uzyskiwać dostęp i przetwarzać za pośrednictwem listy alokacji.
Wirtualne zarządzanie przestrzenią adresową procesora GPU. W przypadku silników działających w trybie wirtualnym wirtualny adres GPU musi być jawnie przypisany do alokacji, zanim będzie można uzyskać do niej dostęp wirtualnie. W tym celu VidMm oferuje usługi UMD do zarezerwowania lub zwolnienia wirtualnych adresów GPU oraz mapowania określonych zakresów alokacji do przestrzeni adresowej GPU procesu. Te usługi są elastyczne i umożliwiają UMD szczegółową kontrolę nad wirtualną przestrzenią adresową GPU w procesie. UMD może zdecydować się na przypisanie określonego adresu wirtualnego procesora GPU do alokacji lub pozwól VidMm automatycznie wybrać dostępny, ewentualnie określając pewne minimalne i maksymalne ograniczenia adresów wirtualnych procesora GPU. Pojedyncza alokacja może mieć wiele mapowań wirtualnych adresów procesora GPU, a usługi są dostarczane do sterownika UMD w celu zaimplementowania kontraktu Tile Resource.
Podobnie w konfiguracji adaptera wyświetlania połączonego, UMD może jawnie mapować wirtualne adresy GPU na konkretne instancje alokacji. Dla każdego mapowania UMD może wybrać, czy mapowanie powinno być skierowane do samego siebie, czy też do określonej równorzędnej karty GPU. W tym modelu adresy wirtualne procesora CPU i procesora GPU przypisane do alokacji są niezależne. UMD może zdecydować, aby zachować je takie same w obu przestrzeniach adresowych lub utrzymać je jako niezależne.
Adresy wirtualne GPU są zarządzane logicznie przy stałej granulacji strony 4 KB za pośrednictwem interfejsu DDI. Adresy wirtualne procesora GPU mogą odwoływać się do alokacji, które znajdują się w segmencie pamięci lub pamięci systemowej. Pamięć systemowa jest zarządzana z 4-KB granularnością fizyczną, podczas gdy segmenty pamięci są zarządzane przy użyciu 4 KB lub 64 KB według wyboru sterownika. Wszystkie alokacje VidMm są wyrównane i mają rozmiar będący wielokrotnością rozmiaru strony wybranego przez sterownik.
Dostęp do nieprawidłowego zakresu adresów wirtualnych procesora GPU powoduje naruszenie dostępu i zakończenie kontekstu i/lub urządzenia, które spowodowało błąd dostępu. Aby odtworzyć system po wystąpieniu takiego błędu, VidMm inicjuje resetowanie silnika, które jest rozszerzane na odzyskiwanie po wykryciu przekroczenia limitu czasu dla całego adaptera (TDR), jeśli nie powiedzie się.
Model GpuMmu przedstawiono na poniższym diagramie: