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.
Sterownik Microsoft Compute Driver Model (MCDM) to struktura przeznaczona do obsługi zadań obliczeniowych o wysokiej wydajności na platformach Windows. Udostępnia standardowy interfejs do tworzenia sterowników, które mogą używać procesora GPU, npu i innych zasobów obliczeniowych na potrzeby zadań przetwarzania równoległego. Sterowniki MCDM są niezbędne dla aplikacji wymagających intensywnej mocy obliczeniowej, takich jak symulacje naukowe, analiza danych i uczenie maszynowe.
W tym artykule opisano pojęcia dotyczące architektury MCDM. Sterownik MCDM lub sterownik tylko do obliczeń ma zarówno sterownik trybu jądra ( sterownik.sys ), jak i bibliotekę linków dynamicznych trybu użytkownika (DLL).
Zobacz również:
- Omówienie modelu sterowników obliczeniowych firmy Microsoft
- Wytyczne dotyczące implementacji sterowników trybu jądra MCDM
- Przepływ operacji WDDM
Kolejka poleceń
Kolejka poleceń to konstrukcja DirectCompute używana do przesyłania pracy. Sterownik jest odpowiedzialny za utworzenie co najmniej jednego kontekstu , którego następnie używa do wykonywania przesłanej pracy. Sterownik jest odpowiedzialny za przekształcenie pracy wyrażonej za pośrednictwem wywołań jego DDI w bufory DMA, które następnie przesyła do kontekstu w celu wykonania.
Kontekst
Kontekst to kolejka pracy obliczeniowej przesłanej przez driver, przeznaczony dla silnika z określonym dla instancji stanem. Praca obliczeniowa jest wyrażana jako bufory DMA, które są przechowywane w kolejce oprogramowania SW, oczekującym na przesłanie do silnika.
Kolejka oprogramowania
Bufory DMA, które zostały przesłane do wykonania w kontekście, są przechowywane w kolejce oprogramowania. Długość kolejki SW jest ograniczona tylko przez zasoby. Istnieje skojarzenie jeden do jednego między kontekstem a odpowiadającą jej kolejką SW. Scheduler jest odpowiedzialny za usunięcie buforów DMA z kolejki SW i przesłanie ich do odpowiedniego silnika, który z kolei umieszcza bufor na własnej kolejce HW.
Planista
Harmonogram jest implementowany przez system operacyjny, a sterownik nie ma kontroli nad tym harmonogramem.
Moduł Planowania jest odpowiedzialny za planowanie pracy w kolejkach SW, które kierowane są do Silników. Zapewnia sprawiedliwe wykorzystanie ograniczonych zasobów aparatu we wszystkich kolejkach SW i wywłaszcza pracę zgodnie z potrzebami w celu zapewnienia sprawiedliwości i zapewnienia, że praca o wyższym priorytacie zostanie ukończona w odpowiednim czasie.
Gdy harmonogram przerywa pracę, jest odpowiedzialny za odpowiednie ponowne umieszczenie w kolejce pracy, która została przerwana.
Silnik
Silnik wykonuje niezbędne działania, aby ukończyć pracę wyrażoną w sekwencji buforów DMA. Każdy bufor DMA jest wykonywany w danym kontekście i przestrzeni adresowej. Silnik musi wskazać, kiedy wykonanie buforu DMA jest ukończone, a te wskazania muszą być podane w tej samej kolejności, w której odebrano bufory DMA.
Silnik powinien być w stanie dokonywać niezależnego postępu w przypadku braku jawnych lub niejawnych zależności wyrażonych w buforach DMA. Jeśli istnieją co najmniej dwa aparaty , są one zaplanowane z założeniem, że praca każdego silnika będzie kontynuowana w odpowiednim czasie i bez upośledzenie pracy prowadzonej w innych aparatach.
Ponieważ bufor DMA jest wykonywany z daną przestrzenią adresową, wiele aparatów może być obsługiwanych tylko wtedy, gdy każdy aparat może wykonywać DMA w różnych przestrzeniach adresowych.
Sterownik określa, ile Silników zgłasza i jak te Silniki są używane przez Kontekst, który tworzy.
Kolejka HW
Silnik otrzyma sekwencję buforów DMA, które są koncepcyjnie umieszczane w kolejce o nazwie HW Queue. Obecnie ta kolejka jest wypełniona co najwyżej dwoma wpisami buforu DMA. Silnik musi ukończyć bufory DMA w kolejności przesyłania.
Wywłaszczanie
Silnik musi mieć możliwość wywłaszczania, co pozwala na przerwanie lub anulowanie wykonywania częściowo ukończonych buforów DMA.
Jeśli zażądano wywłaszczenia zaległej pracy, silnik musi co najmniej wspierać ukończenie wszystkich częściowo ukończonych buforów DMA i anulować wszystkie bufory DMA, które nie zostały jeszcze uruchomione.
Wskazanie ukończenia lub wywłaszczania Buforów DMA musi być nadal wykonywane w kolejności, w której Bufory DMA zostały przesłane. Jeśli bufor DMA jest wywłaszczony, wszystkie kolejne bufory DMA (obecnie co najwyżej jeden inny bufor) są również wywłaszczone.
Jeśli bufor DMA jest częściowo wykonywany, sterownik musi zapisać wystarczającą ilość informacji na potrzeby wznowienia jego wykonywania.
Bufor DMA
Sterownik przekształca zadania przesłane poprzez wywołania do swojego DDI na bufory DMA, które następnie są przesyłane do wykonania. Silnik wykonuje niezbędne akcje, aby ukończyć pracę wyrażoną w sekwencji buforów DMA. Każdy bufor DMA jest wykonywany w danym kontekście i przestrzeni adresowej. Silnik musi wskazywać, kiedy wykonanie buforu DMA jest ukończone, a te wskazania muszą być podane w tej samej kolejności, w jakiej odebrano bufory DMA.
Przestrzeń adresowa
Przestrzeń adresowa służy do mapowania adresów urządzeń wirtualnych na adresy urządzeń fizycznych. Pojedyncza przestrzeń adresowa jest używana dla każdego procesu po stronie hosta.
Silniki są zasobem współużytkowanym między procesami i dlatego muszą obsługiwać przełączanie między przestrzeniami adresowymi, ponieważ bufory DMA są wykonywane z różnych procesów.
Urządzenia, które obsługują tylko jedną przestrzeń adresową , muszą być ograniczone w sposobie ich użycia. Tylko jeden proces jednocześnie może używać urządzenia. Chociaż jeden proces korzysta z urządzenia, wszystkie próby uzyskania dostępu do urządzenia przez inne procesy zakończy się niepowodzeniem. Urządzenia, które mogą obsługiwać dostęp tylko przez jeden proces, są nazywane urządzeniami z jednym użyciem .
Przestrzeń adresowa jest określana przez pojedynczy wskaźnik do tabeli stron głównych przestrzeni adresowej. Zmiana innej przestrzeni adresowej wymaga tylko określenia innego adresu tabeli stron głównych.
System operacyjny zarządza tabelą stron przestrzeni adresowej. Aby wprowadzić zmiany w tabeli stron, system operacyjny wysyła żądania do sterownika, aby zanotować te zmiany w buforach DMA, które są później przesyłane do odpowiedniego silnika we właściwym czasie.