2011-09-17 9 views
9

Jak komputer narysuje cokolwiek na ekranie na najniższym poziomie (nic na temat bibliotek zewnętrznych takich jak X11)? Czy mają być komendy montażu, które to robią? Jak dokładnie kontroluje się procesor, co pojawia się na ekranie?Jak komputer narysuje ekran?

+0

Procesor nie obsługuje GPU. –

+1

@Ash: Zakłada się, że istnieje dedykowany procesor graficzny. – delnan

+0

http://fgiesen.wordpress.com/category/graphics-pipeline/page/2/ mogą być interesujące. – user786653

Odpowiedz

5

Zazwyczaj na karcie wideo znajduje się obszar pamięci o nazwie frame buffer. Zapisanie tam wartości oznacza ustalenie wartości koloru piksela.

Można rozważyć bufor ramek podobny do tablicy 2D, gdzie każdy bit reprezentuje piksel na ekranie. Do reprezentowania kolorów używane są różne poziomy bufora. Obecnie wspólny bufor ramki ma 24 poziomy (8 dla każdego komponentu koloru RGB) i pozwala na obronę 2^24 możliwych kolorów.

W dzisiejszych czasach dostęp do bufora klatek odbywa się przez GPU w przypadku problemów z perforacją: nawet jeśli jest to możliwe do wykonania tego zadania przez CPU, jest to dość kosztowne.

8

Zasadniczo w ten sam sposób, w jaki odczytuje z dysku twardego lub odtwarza dźwięk.

Pisząc określone dane na określonych adresach pamięci, które są mapowane przez kontroler pamięci na zewnętrzny sprzęt (w tym przypadku dysk twardy, GPU lub karta dźwiękowa). Kiedy sprzęt otrzymuje te zapisy, interpretuje dane zapisane jako instrukcje dotyczące tego, co należy zrobić.

Procesor jest naprawdę odizolowany od reszty systemu. Wszystko, o czym naprawdę wie, to szyna pamięci. Może czytać i zapisywać dane na tej magistrali, a to w zasadzie to. Niektóre z tych odczytów/zapisów przechodzą do pamięci, a inne można przypisać do rejestrów kontrolnych różnych urządzeń lub do pamięci urządzenia, jeśli takie istnieje, umożliwiając CPU komunikację z innymi urządzeniami.

Nowoczesny procesor graficzny ma swoją dedykowaną pamięć RAM, do której może załadować dane. CPU wysyła więc instrukcje do GPU, określając, gdzie w pamięci głównej może znaleźć dane wykorzystywane do generowania zawartości ekranu i co z nim zrobić. Następnie GPU ładuje dane z pamięci głównej do własnej pamięci RAM, gdzie wykonuje niezbędne transformacje i obliczenia, przed zapisaniem go w buforze ramki, z którego montitor nieustannie czyta.

+1

+1: Wstydzę się swojej powierzchownej odpowiedzi. – Heisenbug

+0

Dlaczego? To dobra odpowiedź. :) – jalf

3

Gdzieś znajduje się pamięć przeznaczona na ekran wideo. Każdy piksel na ekranie ma określoną ilość pamięci. Unikanie rozwiązań historycznych, takich jak palety i czarno-białe, zazwyczaj zawiera pewną liczbę bitów dla czerwieni, niektóre dla niebieskiego i inne dla zieleni. Po dodaniu tych kolorów można uzyskać wszystko, w tym biały (wiem, że nie są to podstawowe kolory używane na przykład przy malowaniu, nie martw się, że to działa). Zazwyczaj znajdziesz 24-bitowy kolor, ponieważ łatwo jest zarządzać 8-bitowym, bajtowym, czerwonym, bajtowym zielonym i bajtowym niebieskim oraz zapełniać pamięć, itp.

Sprzęt wideo ciągle czyta to Pamięć i użycie dowolnej technologii do wysyłania sygnałów do monitora, które w zasadzie informują o ilości czerwonego, zielonego i niebieskiego światła dla danego piksela, stale skanując ekran z aktualnymi informacjami.

Kilka typowych technik korzystania z tej pamięci to użycie czegoś zwanego podwójnym portem, w którym dwie jednostki są w stanie odczytać/zapisać pamięć. Albo mieć dwie wspomnienia i zamienić je. W obu przypadkach istnieje inna jednostka, procesor, albo sam procesor, albo w dzisiejszych czasach wiele małych procesorów graficznych w karcie graficznej/chipie. W obu przypadkach niektóre programy uruchamiają się i obliczają położenie i kolor wszystkich pikseli oraz zapisują je w pamięci wideo, w zależności od mechanizmu używanego po stronie wideo/monitora pamięci, która zmienia się, gdy ma to sens.nie chcesz, aby tylko niektóre piksele liter, które wpisujesz, pojawią się w jednym przebiegu na ekranie, a resztę pokażą przy następnym przejściu, może pojawić się migotanie, które zauważy użytkownik.

Pamięć wideo jest zwykle mapowana, podobnie jak pamięć systemowa, procesor prawdopodobnie użyje tych samych instrukcji, których używa do uzyskania dostępu do plików wideo, systemu, pamięci. Z pewnością moduł gpusowy może, ale procesor zwykle nie ma specyficznych instrukcji dla urządzeń peryferyjnych, takich jak: uart, gpio, wideo, usb, pamięć masowa, itp. Urządzenia peryferyjne są zwykle mapowane jako określone adresy w pamięci procesora i używane są normalne instrukcje odczytu/zapisu w pamięci .

Ze względu na wyspecjalizowane typy algorytmów i, co ważniejsze, liczbę obliczeń potrzebnych w grach wideo, karty wideo korzystają z wielu, wielu wyspecjalizowanych, prostych procesorów graficznych, które mogą wczoraj, dziś lub jutro szczegółowe instrukcje dotyczące pamięci wideo dotyczące wydajności, rozmiaru, zasilania lub z innych powodów. Prawdopodobnie nie zmieni się model posiadania pamięci bufora ramki, pamięci zawierającej ekrany o wartości pikseli, które sprzęt wideo wykorzystuje do tworzenia sygnałów wysyłanych do monitora, aby mógł narysować ekran.

+0

Prawda dla znanych systemów, ale niektóre starsze nie miały buforów ramki. :-) –

+1

To dlatego powiedziałem "unikając rozwiązań historycznych", starałem się pozostać na miejscu i nie wdawać się w niezliczone sposoby, które nie mają buforów ramek, a nawet przypadków bez buforów klatek. Myślę, że kluczowe pytanie dotyczyło instrukcji montażu (rzadko), jeśli nie to, co (pamięć odwzorowana jak większość rzeczy). Może być zabawne pytanie typu społeczności, jakie rozwiązania inne niż bufory ramki zostały wykorzystane do realizacji wideo/grafiki komputerowej. –

+0

Tak naprawdę właśnie natknąłem się na bieżący (w produkcji) system, który nie używa bufora ramki. Oparta na śmigłach "Hydra"! –