Jak rozumiem, procesory graficzne mają własne zestawy instrukcji, których instrukcje są generowane przez sterowniki graficzne. Instrukcje GPU są następnie wysyłane do GPU. Jak więc działa komunikacja graficzna przed załadowaniem sterowników? Czy istnieją jakieś podstawowe instrukcje, które procesory graficzne muszą wdrożyć jako minimum, aby komputer mógł wykonywać podstawowe zadania wyświetlania?
drivers
graphics-card
gpu
VortixDev
źródło
źródło
Odpowiedzi:
„Czy są jakieś podstawowe instrukcje ...?” Tak, dokładnie. Wszystkie procesory graficzne są wymagane do wdrożenia jednego z kilku prostych interfejsów - są zbyt prymitywne, aby można je było nazwać „zestawami instrukcji” - z którym oprogramowaniem układowym platformy („BIOS” lub „UEFI”) i sterownikami dołączonymi do systemu operacyjnego można rozmawiać . Obecnie zwykłym wyborem „prostego interfejsu” jest „VGA” („Video Graphics Array”), interfejs poziomu rejestru pierwotnie zdefiniowany dla kart wideo tego standardu. (Teraz ponad 30 lat!)
Na przykład jeśli Menedżer urządzeń w systemie Windows zidentyfikuje kartę graficzną jako „Microsoft Basic Video Adapter”, system operacyjny nie był w stanie znaleźć określonego sterownika karty i zamiast tego załadował sterownik zgodny z VGA.
Cóż, technicznie rzecz biorąc, system Windows zawsze ładuje ten sterownik (dzięki czemu może wyświetlać np. Ekrany postępu uruchamiania), a następnie (dość późno podczas uruchamiania) identyfikuje i ładuje „prawdziwy” sterownik karty graficznej.
Standard VGA obsługuje tylko kilka trybów graficznych o niskiej rozdzielczości i trybów tekstowych i nie obejmuje tak zwanych „uruchomionych programów”, a nawet „instrukcji” na GPU. Zasadniczo oprogramowanie układowe lub „podstawowy sterownik wideo” po prostu przełącza go w żądany tryb, a następnie zapisuje bity do mapy bitowej; bity w mapie bitowej bezpośrednio odpowiadają pikselom na ekranie. Każda arytmetyka, która musi być wykonana, aby narysować linie lub krzywe, jest wykonywana w CPU. Jest to bardzo niski i powolny sposób wyświetlania rzeczy na ekranie. Ale wystarczy na wyświetlacze i proste interakcje z oprogramowaniem układowym, na instalacje systemu operacyjnego i ekrany wczesnego rozruchu itp.
Wikipedia: macierz grafiki wideo
źródło
Spróbuję wyjaśnić „voodoo” stojące za tym wszystkim, wyjaśniając, jak działał stary sprzęt. Nowoczesne GPU nie działają w ten sposób, ale emulują interfejs procesora do karty graficznej.
tl; dr
Układy / karty graficzne w latach 80. i wczesnych 90. musiały wytwarzać wyjście niezwykle szybko (w stosunku do prędkości zegara), więc nie wykonywały instrukcji, a raczej miały obwody stałe. Po prostu wysysali dane z pamięci RAM, więc procesor musiał po prostu zrzucić dane do pamięci RAM w odpowiednim miejscu, a układ graficzny wziąłby ją i wyrzucił na ekran. CPU może również ustawiać różne zmienne konfiguracyjne w układzie graficznym.
Detale:
W latach 80. komputery domowe miały naprawdę „głupi” układ graficzny, który miał kilka ustalonych zachowań. To będzie najbardziej sensowne, jeśli przejdę przez rurociąg do tyłu.
Monitory CRT
Monitory te wymagały wejść analogowych. Innymi słowy, wyższe napięcie = jaśniejsza moc wyjściowa. Kolorowe monitory miały 3 kanały (czerwony, zielony i niebieski (lub np. YUV lub YIQ ) ). Napięcia te regulowały siłę wiązki elektronów. Proste rzeczy.
CRT monitoruje dosłownie używane elektromagnesy, aby odchylać wiązkę elektronów od lewej do prawej, a następnie zacząć od nowa nieco niżej i idź od lewej do prawej, i tak dalej od góry do dołu. Następnie wróć na górę i powtórz.
DAC
Układy graficzne miały konwerter „cyfrowo-analogowy” (bardzo popularny komponent elektryczny ). Konwertuje to wartości cyfrowe (np. 2, 4 lub 8 bitów) na napięcia, które mogą być dostarczane do monitora.
Łów
Układy graficzne musiały „nadążyć” za wiązką elektronów, wysyłając odpowiednią wartość do przetwornika, aby mógł wyprowadzić odpowiednie napięcie we właściwym czasie. (Do tego użyto zegarów, w które nie wchodzę.) Nie było czasu na wykonanie instrukcji tutaj. Wszystko było okablowane i wymagało niewielkiej, stałej liczby cykli zegara.
Tryby wideo
Wczesne układy nie były bardzo szybkie i miały ograniczoną pamięć RAM. Z tego powodu umożliwiały one wybór różnych trybów i innych parametrów konfiguracyjnych, na przykład koloru tła, wyboru czcionki, położenia i rozmiaru kursora, wyboru palety i ikonek. Większość oferowała tryb „tylko znak” w wysokiej rozdzielczości oraz tryb piksel po pikselu w niższej rozdzielczości.
Trzy godne uwagi tryby VGA to:
Malowanie pikseli
Z grubsza, w zależności od systemu graficznego, potok wygląda mniej więcej tak:
Bieżąca lokalizacja pikseli ⇒ Przetwarzaj znak / czcionkę / duszek / piksel / dane konfiguracji ⇒ Wartości pikseli ⇒ Paleta ⇒ DAC
To ten drugi krok, który należy odczytać z kilku lokalizacji RAM. Na przykład w trybie tekstowym 1-bajtowy znak byłby sprawdzany. To utworzy indeks do tabeli czcionek. Tę tabelę można by oderwać od siebie, wskazując, czy piksel powinien być kolorem pierwszego planu czy tła. Trzeci bajt zostałby pobrany, aby uzyskać ten kolor pierwszego planu / tła. W sumie 3 bajty odczytane z pamięci RAM.
Ale ten „przepływ” jest właściwie zestawem prostych stałych obwodów, które są ułożone dokładnie tak jak, no cóż, właśnie opisany przepływ.
Interfejs magistrali pamięci
Procesory Intela mają tę irytującą starszą rzecz zwaną szyną IO, ale nie jest to ważne, więc udam, że jej nie ma.
Procesory uzyskują dostęp do pamięci RAM, rozgłaszając żądanie READ lub WRITE oraz adres na szynie pamięci. Chociaż większość prawidłowych adresów wywołuje odpowiedź z pamięci RAM, niektóre zakresy są obsługiwane przez urządzenia . Na przykład CZYTANIE z określonego adresu może dostarczyć informacji o naciśnięciach klawiszy.
Pisząc w odpowiednich częściach „zakresu graficznego”, możesz pisać zarówno zawartość ekranu, jak i ustawiać parametry konfiguracyjne karty graficznej. „Głupi” układ graficzny nie wykonuje żadnych instrukcji. Po prostu idzie naprzód, mając kilka bajtów przepływających przez jego obwody i wytwarzających napięcia.
W przypadku VGA na karcie graficznej znajduje się pamięć RAM , ponieważ można skonfigurować kartę graficzną do przetwarzania danych przed ich zapisaniem w graficznej pamięci RAM, aby w niektórych sytuacjach zwiększyć wydajność.
VESA
Karty graficzne po VGA oferowały wyższe rozdzielczości i dobrą głębię kolorów, ale działały na podobnych zasadach. Wiele nowoczesnych kart graficznych nadal zapewnia zgodność z tym, aby umożliwić wyższą rozdzielczość podczas uruchamiania. Ale VGA jest „niezawodnym”, który praktycznie każda karta będzie naśladować.
źródło