Interesuje mnie, w jaki sposób procesor / GPU prezentuje (na jakimkolwiek sprzęcie, który robi) dane wideo po przetworzeniu.
Powiedziano mi, że wideo jest przetwarzane przez CPU / GPU, a następnie przesyłane do układu scalonego przez szybki szeregowy, który konwertuje sygnał szeregowy na odpowiednie wyjście, ale nie mogę tego potwierdzić, wyszukując online.
Jestem zainteresowany sygnalizacją i nie mogę wyszukiwać protokołów / etc, ponieważ nie wiem, czego szukam. Więc czy CPU / GPU oddziałuje bezpośrednio z wyjściami wideo (mogę łatwo znaleźć te protokoły), czy jest „pośrednik”, że tak powiem, a jeśli tak, to co to jest, typ układu / etc?
Odpowiedzi:
Obraz wyświetlany na monitorze jest przechowywany w pamięci RAM wideo komputera na karcie graficznej w strukturze zwanej buforem klatek. Dane w buforze ramki mają na ogół 24-bitowy kolor RGB, więc dla każdego piksela na wyświetlaczu będzie jeden bajt dla koloru czerwonego i jeden dla koloru niebieskiego, ewentualnie z dodatkowymi bajtami wypełnienia. Dane w pamięci RAM wideo mogą być generowane przez GPU lub CPU. Pamięć RAM wideo jest stale odczytywana przez wyspecjalizowany komponent DMA na karcie graficznej i wysyłana do monitora. Sygnał wyjściowy do monitora jest albo sygnałem analogowym (VGA), w którym komponenty kolorów są przesyłane przez konwertery cyfrowo-analogowe przed wyjściem z karty, albo sygnałem cyfrowym w przypadku DVI, HDMI lub DisplayPort. Sprzęt odpowiedzialny za to generuje również sygnały synchronizacji poziomej i pionowej, a także wszystkie odpowiednie opóźnienia, więc dane obrazu są wysyłane do monitora tylko wtedy, gdy jest na to gotowy. W DVI i HDMI strumień informacji o kolorze pikseli jest kodowany i serializowany oraz wysyłany za pośrednictwem TMDS (minimalizacja różnicowa sygnalizacji różnicowej) do monitora. DisplayPort wykorzystuje kodowanie 8b / 10b. Kodowanie służy wielu celom. Po pierwsze, TMDS minimalizuje przejścia sygnałów w celu zmniejszenia emisji EMI. Po drugie, zarówno TMDS, jak i 8b / 10b są protokołami symetrycznymi dla prądu stałego, więc kondensatory blokujące prąd stały można wykorzystać do wyeliminowania problemów z pętlami uziemienia. Po trzecie, 8b / 10b zapewnia wystarczająco wysoką gęstość przejścia, aby umożliwić odzyskanie zegara w odbiorniku, ponieważ DisplayPort nie rozdziela osobnego zegara. strumień informacji o kolorze pikseli jest kodowany i serializowany, a następnie wysyłany do monitora za pośrednictwem TMDS (minimalna przejściowa sygnalizacja różnicowa). DisplayPort wykorzystuje kodowanie 8b / 10b. Kodowanie służy wielu celom. Po pierwsze, TMDS minimalizuje przejścia sygnałów w celu zmniejszenia emisji EMI. Po drugie, zarówno TMDS, jak i 8b / 10b są protokołami symetrycznymi dla prądu stałego, więc kondensatory blokujące prąd stały można wykorzystać do wyeliminowania problemów z pętlami uziemienia. Po trzecie, 8b / 10b zapewnia wystarczająco wysoką gęstość przejścia, aby umożliwić odzyskanie zegara w odbiorniku, ponieważ DisplayPort nie rozdziela osobnego zegara. strumień informacji o kolorze pikseli jest kodowany i serializowany, a następnie wysyłany do monitora za pośrednictwem TMDS (minimalna przejściowa sygnalizacja różnicowa). DisplayPort wykorzystuje kodowanie 8b / 10b. Kodowanie służy wielu celom. Po pierwsze, TMDS minimalizuje przejścia sygnałów w celu zmniejszenia emisji EMI. Po drugie, zarówno TMDS, jak i 8b / 10b są protokołami symetrycznymi dla prądu stałego, więc kondensatory blokujące prąd stały można wykorzystać do wyeliminowania problemów z pętlami uziemienia. Po trzecie, 8b / 10b zapewnia wystarczająco wysoką gęstość przejścia, aby umożliwić odzyskanie zegara w odbiorniku, ponieważ DisplayPort nie rozdziela osobnego zegara.
Ponadto w przypadku HDMI i DisplayPort dane audio są również przesyłane na kartę graficzną w celu przesłania do monitora. Te dane są wstawiane w pauzy w strumieniu danych między ramkami wideo. W takim przypadku karta wideo będzie prezentować się jako system audio w systemie operacyjnym, a dane audio zostaną przesłane za pośrednictwem DMA na kartę w celu włączenia do danych wideo.
Prawdopodobnie zdajesz sobie sprawę, że dla ekranu 1920 x 1080 z 4 bajtami na piksel potrzebujesz tylko około 8 MB do przechowywania obrazu, ale pamięć RAM wideo w komputerze jest prawdopodobnie wiele razy większa. Wynika to z faktu, że RAM wideo nie służy wyłącznie do przechowywania bufora ramki. Pamięć RAM wideo jest bezpośrednio podłączona do GPU, specjalnego procesora zaprojektowanego do wydajnego renderowania 3D i dekodowania wideo. GPU korzysta z bezpośredniego dostępu do pamięci RAM wideo, aby przyspieszyć proces renderowania. W rzeczywistości przenoszenie danych z pamięci głównej do pamięci wideo jest trochę wąskim gardłem, ponieważ magistrala PCI, która łączy kartę wideo z procesorem i pamięcią główną, jest znacznie wolniejsza niż połączenie między GPU i RAM wideo.
źródło
Różne nowoczesne wyjścia wyświetlające są zasadniczo szeregowymi strumieniami bitów. Szybkość transmisji jest zbyt wysoka dla procesora (lub jeśli mogłaby nadążyć, pochłaniałaby zbyt dużo czasu przetwarzania). Część pamięci jest odkładana na bity obrazu. Dedykowany sprzęt odczytuje zawartość pamięci i przesyła ją strumieniowo. Ten kawałek jest podobny do kontrolera DMA i właściwie dość prosty. To tylko niewielka część nowoczesnego procesora graficznego, który głównie zajmuje się tworzeniem tego obrazu w pamięci za pomocą poleceń GPU wyższego poziomu.
Pamięć zawierająca obraz wideo może być częścią pamięci głównej (taniej) lub pamięci dedykowanej, do której jednocześnie można uzyskać dostęp przez „DMA” oraz CPU i / lub GPU. „DMA” musi być skonfigurowany z różnymi parametrami, na przykład szerokością i wysokością pikseli, głębią kolorów, początkową lokalizacją w pamięci itp.
Na współczesnych komputerach GPU jest (bardzo wyspecjalizowanym) procesorem, który rywalizuje z szybkością głównego procesora (i przewyższa go na własnym terenie). Robi takie rzeczy, jak generowanie obrazu psuido-3D z zestawu obiektów 3D z teksturami i źródłami światła. Wszystko to można zrobić za pomocą GPU w pamięci wideo. CPU po prostu dostarcza obiekty, tekstury i źródła światła.
Odczytywanie danych wideo z pamięci i przenoszenie ich jest dość prostym procesem, ale należy to robić dość szybko i cały czas. Dlatego to zadanie jest dobrze dostosowane do dedykowanego sprzętu i źle dopasowane do procesora. AFAIK ostatnimi komputerami, które miały procesor zaangażowany w generowanie sygnału wideo, były ZX80 / 81 i Spectrum. Na tych procesor może wykonywać swoją pracę tylko w czasie odtwarzania (w pionie?).
źródło