Czym różnią się sterowniki GPU od innych sterowników urządzeń, co pozwala na optymalizację wydajności?

12

Wygląda na to, że dwoje dużych producentów GPU stale wydaje zaktualizowane sterowniki, które mają niewielki wzrost wydajności tu i tam. Gdy dotyczą tej samej gry, założę się, że z czasem się to sumuje.

Mając to na uwadze, dlaczego nigdy nie słyszymy o poprawianiu sterowników procesorów AMD lub Intel dla określonej aplikacji lub wersji systemu Windows lub czegoś takiego?

Louis Waweru
źródło
1
Odnośnie VTC: nie jest to dwuznaczne. Istnieje konkretne uzasadnienie dotyczące tego, co zostanie poprawione i dlaczego, ze sterownikami GPU (i procesora).
Ben Richards,
1
Dostawcy procesorów udostępniają aktualizacje. Patrz np. Downloadcenter.intel.com/… (kliknij oprogramowanie układowe po prawej stronie)
derobert
@derobert - Interesujące, oczywiście Intel nie zamierza powtarzać fiasku Pentium. Jednak te aktualizacje dotyczą mikrokodu procesora i nie są „sterownikami procesora”. Mikrokod jest wykonywany na niższym poziomie niż kod maszynowy plików jądra i .exe .
trociny
@sawdust mikrokod CPU (przynajmniej częściowo) jest odpowiedzialny za tłumaczenie instrukcji x86 otrzymywanych przez CPU na rzeczywiste operacje, które wykonuje. Jest to właściwie nieco podobne do sterowników graficznych. Oczywiście Intel obchodzi dużo więcej niż o poprawności nVidia robi, więc ich aktualizacje są prawdopodobnie głównie poprawki błędów.
derobert,

Odpowiedzi:

13

Po pierwsze, czasami zdarzają się przypadki wydania poprawki sterownika, która może zwiększyć wydajność lub wydajność określonego procesora. Ale oczywiście zadajesz to pytanie, ponieważ po prostu nie jest tak powszechne. Jednak optymalizacja sterowników procesora ma podobną koncepcję.

Procesor graficzny to bardzo skomplikowany zespół obwodów. Istnieje, aby odciążyć niektóre zadania, które zajmują bardzo dużo czasu procesorowi. Otrzymują zestawy danych i instrukcje, co zrobić z tymi danymi. Karta graficzna musi być w stanie uporządkować dane w sposób możliwy do zarządzania i zinterpretować instrukcje, aby powiedzieć mu, co ma robić. Następnie musi wykonać szereg operacji matematycznych na danych. Następnie musi ponownie uporządkować dane i po zakończeniu wysłać wyniki z powrotem do systemu operacyjnego. To bardzo uproszczony opis potoku grafiki komputerowej . Aby dane były gotowe do programu, należy wykonać wiele czynności.

Teraz, ponieważ GPU musi akceptować zestawy instrukcji i implementować bardzo skomplikowane operacje matematyczne na sprzęcie, pewne rzeczy będą działać szybciej lub wolniej przez ten potok. Częścią pisania sterownika dla urządzenia jest interpretacja danych i instrukcji przesyłanych do urządzenia, ich tłumaczenie, aby urządzenie mogło je zrozumieć. Gdy kierowca to robi, może podejmować decyzje dotyczące wysyłania danych do urządzenia, aby zadania zajęły jak najkrótszy czas. Jednak sterownik na ogół nie ma zbyt wielu informacji o tym, co robi program, który obsługuje. Wszystko, co otrzymuje z programu, to wywołania API („narysuj linię”, „pokoloruj punkt”, „odcień trójkąta” itp.). Tak więc założenia, które może poczynić, nie są zbyt dobre.

Kiedy AMD lub nVidia wydaje aktualizację sterownika, która zawiera ulepszenia wydajności dla określonych gier, oznacza to, że sterownik wykryje, która gra nazywa się sprzętem graficznym, i ma szereg zakodowanych założeń, które są znane na temat tego, jak gra jest zaimplementowano. Może się zdarzyć, że gra ma wiele obrazów tekstur, które należy szybko zamienić i wyrzucić z pamięci, lub że w czasie rzeczywistym mieszają kolory, aby uzyskać określone efekty świetlne. Zwykle to, co zrobi gra, to zaimplementowanie małych programów (zwanych „modułami cieniującymi”), które opisują sposób wykonywania tych obliczeń, i zostaną one wysłane do GPU w celu wykonania. Jeśli kierowca wie, w jaki sposób gra korzysta ze sprzętu, może zorganizować dane i wybrać zestawy instrukcji, które wykonają pożądane zadanie w sposób zwiększający przepustowość i wydajność.

Czasami jednak po wysłaniu produktu w niektórych procesorach graficznych mogą znajdować się błędy. Może być na tyle niejasny, że został pominięty podczas sprawdzania poprawności podczas projektowania układu, ale może się okazać, że powoduje on pewne błędne lub niepożądane zachowanie (lub nawet awarie) w konkretnej grze, która go uderza. W takim przypadku sterownik wykryje ten stan błędu i obejdzie go, odciążając niektóre obliczenia po stronie procesora lub zmieniając sposób, w jaki podaje dane do GPU, aby nie wchodził w ten stan. Te ponownie zostaną wydane w formie aktualizacji sterowników.

Zasadniczo nie zmienia to wydajności samego sprzętu, tylko zmienia sposób korzystania ze sprzętu, dzięki czemu może działać wydajniej i szybciej na tym samym zestawie danych.

Ben Richards
źródło
O tym, jak inżynierowie sterowników rozumieją, w jaki sposób gra jest wdrażana, zastanawiam się, czy te ekrany powitalne Nvidii w niektórych grach to coś więcej niż tylko reklamy.
Louis Waweru,
2
@Louis To nie są tylko reklamy. Dzieje się tak, ponieważ NVidia utrzymuje specjalne relacje z niektórymi studiami gier i oferuje programistom pomoc w optymalizacji kodu gry dla sprzętu graficznego NVidia. AMD też to robi (czasami zobaczysz logo AMD w grze), ale NVidia historycznie była znacznie bardziej obecna.
Ben Richards,
Czytając to jeszcze raz, widzę, że to świetna odpowiedź i gdzie należy znak wyboru. Chciałbym, żeby wszystkie odpowiedzi tak pouczały.
Louis Waweru,
Czy zintegrowałbyś to ( więcej liczb ) jako przykład kolejnej nagrody?
Louis Waweru
10

„Sterowniki procesorów” rzadko istnieją, a na pewno nie jako moduły ładowalne. Okazjonalny „sterownik procesora” byłby potrzebny do pewnych odmian sterowania wielordzeniowego lub obsługi przerwań (np. Podwójne rdzenie AMD wymagały sterownika WinXP do pełnego wykorzystania). W przeciwnym razie większość systemów operacyjnych jest skonfigurowana i zbudowana w celu bezpośredniego dostępu do procesora. Jeśli problem pojawia się i jest poważny, oznacza to, że kod jądra jest załatany i aktualizacja jądra zostaje wydana.

Procesory graficzne nie są już tylko urządzeniami peryferyjnymi; ewoluowały w koprocesory. „Sterownik GPU” nie tylko zapewnia dostęp do urządzenia, ale obejmuje algorytmy przetwarzania (tj. Podprogramy graficzne) dla GPU spakowanego w sterowniku. Rozmiar tych „kierowców” jest podarunkiem / wskazówką. Te algorytmy / podprogramy są ulepszane.

trociny
źródło
2
To wyjaśnia, dlaczego sterowniki do pobrania mojej karty mają teraz ponad 200 MB.
Louis Waweru
Naprawdę wątpię, aby w tych sterownikach był kod o wartości 200 MB . Byłbym zaskoczony, gdyby chodziło o więcej niż garść MB w odniesieniu do wszystkich tych algorytmów. >.>
user541686,
1
@ Mehrdad z ciekawości otworzyłem instalator EXE z 7-zip dla sterownika Nividy. folder Display.Driver ma rozmiar 147 MB, jest jeden plik exe o wielkości 31 MB, każdy inny plik powyżej 660 KB to biblioteka DLL.
Scott Chamberlain,
@Scott: Ten plik exe jest prawie na pewno archiwum kolejnych plików zawierających rzeczywisty kod. Oczekuję, że rzeczywiste pliki zajmą najwyżej garść megabajtów ... modulo wszelkie zasoby, które mogą zawierać, które nie są kodem.
user541686,
0

To nie tylko sterowniki, to sam procesor graficzny. GPU specjalizuje się w różnych rodzajach obliczeń (np. FFT) i manipulacji pamięcią. Może pracować równolegle przy większości podanych zadań i sprawić, że będzie bardziej efektywny niż procesor ogólnego przeznaczenia.

Dzięki lepszej wiedzy o uruchomionych programach możesz zoptymalizować procesy przetwarzania pamięci lub obliczeń dla tych programów. Procesor graficzny jest bardzo wszechstronny w wykonywaniu obliczeń i manipulowaniu pamięcią, dlatego trzeba napisać idealne oprogramowanie układowe lub sterownik. ;) Jest wiele miejsca na ulepszenia.

Większość innych urządzeń nie jest tak wszechstronna w użyciu. Większość sprzętu na komputerze musi działać zgodnie ze specyfikacją, przestrzegać protokołów, więc sterownik nie musi być optymalizowany.

A, zapomniałem o procesorze. > _ <Procesor można zoptymalizować. Większość nowych modeli procesorów ma programowalne oprogramowanie układowe, ale zwiększenie wydajności nie jest warte wysiłku. Służy wyłącznie do korygowania błędów w procesie budowania sprzętu.

użytkownik178979
źródło
„Większość nowych modeli procesorów ma programowalne oprogramowanie układowe”. Wyjaśnij.
Tim