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