W jaki sposób procesor komunikuje się z GPU przed załadowaniem sterowników? [duplikować]

24

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?

VortixDev
źródło

Odpowiedzi:

34

„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

Jamie Hanrahan
źródło
1
Pełna sytuacja jest skomplikowana. Pierwsze karty „VGA” były rzeczywiście tak ograniczone. Przez długi czas Windows NT wymagał obsługi formatu 800x600, ale tak, tylko 16 kolorów. Wyglądało to okropnie! Zobacz artykuł w Wikipedii, który podłączyłem.
Jamie Hanrahan
9
System Windows częściej używa rozszerzenia VESA BIOS Extentions (VBE) jako podstawowego adaptera. VBE jest dość szeroko obsługiwany i pozwala na 16-24-bitowe kolory i do 1600x1200 pikseli.
8bittree
3
Nie byłoby to rozszerzenie VESA BIOS, ponieważ system Windows nie wywołuje kodu BIOS / UEFI dla czegokolwiek po ukończeniu najwcześniejszych etapów ładowania.
Jamie Hanrahan
2
Widziałem niektóre komputery, w tym mój laptop, w którym ekran rozruchowy systemu Windows „spinning dots” rozpoczyna wyjątkowo niską rozdzielczość (320 x 200, powiedziałbym, 256-kolorowy tryb VGA), a następnie szybko przechodzi do wyższej rozdzielczości.
Artelius
1
Nawet 800 x 600 przy 16 kolorach przekracza możliwości VGA. Maksymalna rozdzielczość VGA przy 640 x 480 16 kolorach. Jednak producenci układów graficznych wykroczyli poza to i dodali „SuperVGA”, inaczej tryby SVGA, które zwiększyłyby kolory i rozdzielczość, a jednocześnie miały własne własne tryby. Firma VESA zaproponowała standardowy sposób uzyskiwania dostępu do tych zastrzeżonych trybów, ale w tym czasie komputer PC był głównie oparty na interfejsie GUI, dlatego sterowniki były dobrym wyborem. Właśnie wtedy zaczęto dodawać akcelerację 3D. Tak więc, podczas gdy większość kart stała się kompatybilna z VESA, nikt o tym nie mówił.
trlkly
16

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:

  • Tryb tekstowy 16 (ish) w kolorze 80x25 (tak wygląda ekran ładowania systemu BIOS)
  • 16-kolorowy tryb wysokiej rozdzielczości 640 x 480
  • 256-kolorowy tryb wysokiej rozdzielczości 320 x 200

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ć.

Artelius
źródło