Jak mój sterownik ekranu obsługuje tak dużo danych?

61

Właśnie wykonałem kilka szybkich obliczeń:

Na moim MacBooku mam rozdzielczość 2560 x 1440 pomnożoną przez 24 bity dla kolorów, otrzymujemy 11,05 MB na pojedyncze zdjęcie lub 663 MB na sekundę przy 60 fps .

Wydaje mi się, że istnieje pewna kompresja, ale na przykład, kiedy poruszam trzema palcami po tabliczce dotykowej, co jest dość losowe, co dzieje się potem na ekranie i zmienia się prawie każdy piksel. Tak samo jak w przypadku prawie każdej innej interakcji.

Proszę wyjaśnić, czy moje obliczenia są nieprawidłowe i jak te dane są przenoszone z mojej karty graficznej na ekran? Jak szerokie są autobusy między moją kartą graficzną a ekranem? Być może wyjaśnić w skrócie, w jaki sposób wyświetlacz przechowuje piksele? Przesunięcie rejestrów? Pamięć podręczna?

Felix Crazzolara
źródło
7
„Być może wyjaśnić w skrócie, w jaki sposób wyświetlacz przechowuje piksele?” Wyświetlacz w rzeczywistości nie przechowuje danych pikseli, a wszystko to jest obsługiwane przez pamięć RAM karty graficznej (lub systemową pamięć RAM dla zintegrowanej grafiki). Pamięć RAM z łatwością ma przepustowość kilku GB / s. Ramki są wysyłane do wyświetlacza zgodnie z protokołem, więc dane są dostępne, ponieważ są wymagane do wyświetlenia.
ks0ze
3
Jak myślisz, dlaczego istnieje kompresja? Jak myślisz, co się stanie, gdy danych nie da się skompresować? Czy uważasz, że wyświetlacz pozostaje w tyle?
Mehrdad
3
@Aresloom: Ach, rozumiem. Kompresja stratna byłaby jednym sposobem, tak. :) Myślałem, że myślisz o bezstratnym!
Mehrdad
2
@ ks0ze niektóre nowsze panele przechowują ostatni ekran, który zostały wysłane. Buforowanie go tam zużywa mniej energii niż GPU wypompowujący obraz statyczny 60 razy na sekundę. anandtech.com/show/7208/understanding-panel-self-refresh
Dan Neely
2
Czy nowoczesne wyświetlacze do laptopów nadal korzystają z LVDS? Pół tuzina lat temu firmy GPU planowały wycofanie go w tym samym czasie, co VGA (który został usunięty z natywnej generacji obecnej generacji GPU) na rzecz wbudowanego portu wyświetlania.
Dan Neely,

Odpowiedzi:

70

Twoje obliczenia są w istocie poprawne. W przypadku sygnału 1440p60Hz szybkość danych wynosi 5,8 Gb / s, jeśli uwzględnisz także czas wygaszania (niewidoczna ramka pikselowa na wyjściu obrazu).

W przypadku HDMI / DVI stosowane jest kodowanie 10 / 8b, co oznacza, że ​​chociaż powiedziano 24-bitowe dane koloru na piksel, w rzeczywistości 30-bitowe przesyłane jest w miarę kodowania danych i dodawania słów kontrolnych protokołu. Kompresja nie jest wykonywana, surowe dane są wysyłane, co oznacza, że ​​potrzebujesz przepustowości danych 7,25 Gb / s.

Ponownie patrząc na HDMI / DVI. Wykorzystuje standard sygnalizacji „TDMS” do przesyłania danych. Standard HDMI V1.2 wymaga maksymalnej prędkości 4,9 Gb / s dla pojedynczego łącza (3 linie danych szeregowych + 1 linia zegara), aw przypadku podwójnego łącza DVI maksymalnie 9,8 Gb / s (6 linii danych szeregowych, tak myślę ). Jest więc wystarczająca przepustowość, aby zrobić 1440p60 przez DVI Dual-Link, ale nie przez HDMI V1.2.

W standardzie HDMI V1.3 (większość urządzeń faktycznie przeskoczyła do wersji 1.4a, która ma tę samą szerokość pasma co 1.3), przepustowość została podwojona do około 10 Gb / s, co obsługiwałoby 1440p60, a także wystarczająca szerokość pasma dla UHD przy 30 Hz (2160p30).

DisplayPort jako kolejny przykład ma 4 szeregowe strumienie danych, każdy zdolny (w wersji 1.1) do 2,16 Gb / s na strumień (uwzględniający kodowanie), więc z linkiem w wersji 1.1 można łatwo zrobić 1440p60 ze wszystkimi 4 strumieniami. Wydali także nowszy standard, V1.2, który podwaja to do 4,32 Gbps / strumień, pozwalając na UHD @ 60Hz. Istnieje jeszcze nowsza wersja, którą jeszcze bardziej przesunęli do 6,4 Gb / s .


Początkowo liczby te brzmią ogromnie, ale w rzeczywistości nie tak bardzo, jeśli wziąć pod uwagę USB 3.0. Zostało to wydane z prędkością transmisji 5 Gb / s za pomocą jednego kabla (właściwie dwa, jeden dla TX, jeden dla RX, ale dygresję). PCIe, którego obecnie używa Twoja karta graficzna, działa z prędkością do 8 Gb / s za pośrednictwem pojedynczej pary różnic, więc nie jest zaskakujące, że nadrabiają zaległości zewnętrzne interfejsy danych.


Pozostaje jednak pytanie, jak to się robi? Kiedy myślisz o VGA, składa się z pojedynczych przewodów dla danych R, G i B, które są wysyłane w formacie analogowym. Analogowe, jak wiemy, jest bardzo podatne na zakłócenia, a przepustowość przetworników DAC / ADC jest również ograniczona, co znacznie ogranicza to, co można przez nie przepchnąć (mówiąc, że jeśli masz szczęście, ledwo możesz zrobić 1440p60Hz przez VGA).

Jednak przy nowoczesnych standardach stosujemy standardy cyfrowe, które są znacznie bardziej odporne na szumy (wystarczy rozróżnić wysokie lub niskie, a nie wszystkie wartości pośrednie), a także eliminuje potrzebę konwersji między analogowym i cyfrowym.

Ponadto pojawienie się stosowania standardów różnicowych w stosunku do pojedynczych końców znacznie pomaga, ponieważ porównujesz teraz wartość między dwoma drutami (różnica + ve = 1, różnica -ve = 0) zamiast porównywania pojedynczego drutu z pewnym progiem. Oznacza to, że tłumienie jest mniejszym problemem, ponieważ wpływa na oba przewody jednakowo i tłumi się do napięcia w punkcie środkowym - „oko” (różnica napięć) maleje, ale nadal można stwierdzić, czy jest to + ve czy -ve nawet jeśli jest to tylko 100 mV lub mniej. Pojedyncze sygnały zakończone po osłabieniu sygnału mogą spaść poniżej progu i stać się nie do odróżnienia, nawet jeśli nadal mają amplitudę 1 V lub większą.

Używając łącza szeregowego w stosunku do łącza równoległego, możemy również przejść do wyższych prędkości transmisji danych, ponieważ odchylenie przestaje być problemem. W równoległej magistrali, powiedzmy 32-bitowej, musisz idealnie dopasować długość i właściwości propagacyjne 32 kabli, aby sygnały nie wychodziły z fazy między sobą (pochylenie). W łączu szeregowym masz tylko jeden kabel, więc przekrzywienie nie może się zdarzyć.


TL; DR Dane są wysyłane z obliczoną przez Ciebie pełną przepływnością (kilka Gb / s), bez kompresji. Umożliwiają to nowoczesne techniki sygnalizacji szeregowanych łączy cyfrowych za pomocą par różnicowych.

Tom Carpenter
źródło
Myślę też, że niektóre wyświetlacze HDMI wykorzystywały 2 łącza HDMI 1.2v, aby uzyskać obraz, skutecznie dzieląc ekran na 2. To dałoby łączną przepustowość zasadniczo 9,8 Gb / s.
Ismael Miguel
5
@Aresloom 5GHz to punkt, w którym prawie wszystkie procesory zaczynają się topić z powodu dużej liczby tranzystorów przełączających się jednocześnie i generujących ogromne ilości ciepła. Nie oznacza to, że 5GHz jest najwyższym zegarem do wszystkiego , sprowadza się do ciepła (i jakiego materiału używasz - krzem nie zawsze jest najlepszy). Najlepszym przykładem, jaki mogę wymyślić, jest Keysight Infinnium DSAX96204Q, w którym każdy z czterech frontów ma próbnik fosforu indu, który tyka przy częstotliwości 80 GHz! Ale ten sampler ma tylko kilkadziesiąt tranzystorów i pali kilka watów (współczesne procesory mają miliardy )
Sam
4
@ Areloom 340 MHz będzie częstotliwością taktowania, szybkość transmisji danych jest szeregowana w taki sposób, że (na przykład w TDMS) 10 bitów jest przesyłanych kablem w każdym cyklu zegara - tak więc zegar 340 MHz dawałby 3,4 Gb / s. To tylko kable i sprzęt (de) serializacji (SERDES) na obrzeżach układów scalonych wideo, które działają z tymi szeregowymi szybkościami transmisji danych. Po sprzęcie z SERDES wewnętrznie szyna równoległa ponownie spływa z mniejszą częstotliwością zegara. Bloki SERDES mogą działać bardzo szybko - PCIe ma 8 Gb / s na linię, więc bloki SERDES działają z częstotliwością 4GHz (używając obu krawędzi zegara dla bitów - DDR).
Tom Carpenter,
1
8b / 10b poprawia odrzucanie błędów, ponieważ łatwiej jest wykryć przejścia niż stany w szybkich sygnałach. To kodowanie gwarantuje, że nie będzie zbyt długiego ciągu kolejnych zer lub zer.
pjc50,
1
@curiousdannii To ciekawy cykl, prawda? Najpierw zaczęliśmy od seryjnego (np. UART), który był zbyt wolny (powiedzmy, że maks. 115 kb / s). Następnie przeszliśmy do równoległych magistrali, takich jak IDE, które osiągnęły szczyt około 66 MHz przy 16 bitach, czyli około 1 Gb / s. Potem wróciliśmy do serialu, ponieważ okazało się, że możemy jechać bardzo szybko z autobusami różnicowymi. Ale teraz połączenie szeregowe nie jest wystarczająco szybkie, więc idziemy z rodzajem równoległego połączenia szeregowego - wiele pasów poszczególnych magistral szeregowych, które mogą być zasadniczo obsługiwane całkowicie osobno, a następnie skośne pasowanie jest korygowane za pomocą FIFO.
Tom Carpenter
19

Nowoczesne komputery są zaskakująco szybkie. Ludzie z przyjemnością załadują filmy Full HD 30 klatek na sekundę, nie zdając sobie sprawy, że wymaga to miliardów operacji arytmetycznych na sekundę. Gracze są nieco bardziej świadomi tego; GTX 1060 da ci 4,4 TFLOPS ( trylion operacji zmiennoprzecinkowych na sekundę).

Proszę wyjaśnić, czy moje obliczenia są nieprawidłowe i jak te dane są przenoszone z mojej karty graficznej na ekran?

Jak szerokie są autobusy między moją kartą graficzną a ekranem?

Inna odpowiedź dotyczy wielogigabitowego charakteru HDMI, DisplayLink itp.

Być może wyjaśnić w skrócie, w jaki sposób wyświetlacz przechowuje piksele? Przesunięcie rejestrów? Pamięć podręczna?

Sam wyświetlacz przechowuje teoretycznie brak danych obrazu.

(Niektóre wyświetlacze, zwłaszcza telewizory, przechowują klatkę lub dwie w celu zastosowania przetwarzania obrazu. Zwiększa to opóźnienie i jest niepopularne wśród graczy).

Podsystem graficzny komputera przechowuje piksele w zwykłej pamięci DRAM. Zwykle nie przerysowuje całego procesu od każdej klatki, ale przekazuje część funkcjonalności dedykowanym podsystemom i kompozytorowi . Kompozytor pozwoli np. Przechowywać każde okno na pulpicie jako odrębny zestaw pikseli, które następnie można przesuwać, przewijać lub powiększać za pomocą dedykowanego sprzętu. Staje się to dość oczywiste przy przewijaniu na urządzeniach mobilnych - możesz przejść krótką drogę, aż zabraknie wstępnie obliczonych pikseli „poza ekranem”, a oprogramowanie będzie musiało się zatrzymać i renderować nieco więcej w buforach kompozytora.

Gry przerysowywane co każdą klatkę, a literatura na temat budowania sceny. Jest to wbudowane w bufor ramki na karcie graficznej, który jest następnie przesyłany, gdy następna ramka jest wciągana do innego bufora.

Dekodowanie wideo jest zwykle przekazywane także dedykowanemu sprzętowi, zwłaszcza H.264.

pjc50
źródło
11

Połączenie między kartą graficzną a panelem LCD jest przenoszone przez kilka szybkich par różnicowych z wykorzystaniem sygnalizacji TMDS , zwykle nazywanej „liniami”. Zazwyczaj stosuje się cztery pasy, więc można powiedzieć, że autobus ma szerokość 4 bitów. Aby uzyskać więcej informacji, istnieje odpowiedź Stackhexchange .

Każdy model panelu LCD jest zwykle produkowany z kilkoma inkarnacjami interfejsu, więc należy zachować ostrożność i spojrzeć na przyrostki, próbując wymienić uszkodzony panel. Większość nowoczesnych łączy cyfrowych (HDMI 1.4) ma 10,2 Gb / s lub zaledwie 2,5 Gb / s na linię. W twoich obliczeniach (663 MB / s) wynosi to 1,2 Gb / s na linię (przy założeniu 4 linii), co nie jest aż tak duże (na przykład SATA3 ma 6 Gb / s).

DODATEK na panelach LCD. Aktywna matryca LCD faktycznie próbuje przechowywać obraz klatki (dane w pikselach) w kondensatorach związanych z „Twisted Nematic Cells” (tym, który kontroluje polaryzację filmu). Problem polega na tym, że rozmiar czapek pamięci analogowej musi być kompromisem między czasem przechowywania a prędkością przełączania pikseli. Dlatego nie można go powiększyć, szybko traci potencjał i dlatego wymaga okresowego odświeżania . Każda komórka pikselowa jest połączona z liniami danych i adresu przez tranzystor (element „aktywny”), zobacz ten artykuł Tomshardware . Sterownik LCD-sterownik mulipleksuje linie danych i adresy wiersz po wierszu, utrzymując w ten sposób wyświetlany obraz. Sam obraz jest przechowywany w buforze ramek (RAM) wewnątrz kontrolera grafiki.

Ale..chenski
źródło