John Carmack napisał na Twitterze ,
Mogę wysłać pakiet IP do Europy szybciej niż mogę wysłać piksel na ekran. Jak leci?
A gdyby to nie był John Carmack, zapisałbym to jako „głupie interweny”.
Ale to jest John Carmack.
Jak to może być prawda?
Aby uniknąć dyskusji na temat tego, co dokładnie oznacza w tweecie, chciałbym uzyskać odpowiedź:
Ile czasu zajmuje, w najlepszym przypadku, przesłanie pojedynczego pakietu IP z serwera w USA do jakiegoś miejsca w Europie, mierząc od momentu uruchomienia pakietu przez oprogramowanie, aż do momentu otrzymania go przez oprogramowanie powyżej poziom kierowcy?
Ile czasu zajmuje w najlepszym przypadku wyświetlenie piksela na ekranie, mierzone od momentu, w którym oprogramowanie powyżej poziomu sterownika zmienia wartość tego piksela?
Nawet zakładając, że połączenie transatlantyckie jest najlepszym kablem światłowodowym, jaki można kupić za pieniądze, i że John siedzi tuż obok swojego dostawcy usług internetowych, dane nadal muszą być zakodowane w pakiecie IP, dostać się z pamięci głównej na kartę sieciową , stamtąd przez kabel w ścianie do innego budynku, prawdopodobnie przeskoczy tam kilka serwerów (załóżmy, że potrzebuje tylko jednego przekaźnika), zostanie fotonizowany przez ocean, przekształcony z powrotem w impuls elektryczny przez fotosensor, i ostatecznie zinterpretowana przez inną kartę sieciową. Zatrzymajmy się tam.
Jeśli chodzi o piksel, jest to proste słowo maszynowe, które jest przesyłane przez gniazdo PCI Express, zapisywane w buforze, a następnie spuszczane na ekran. Nawet biorąc pod uwagę fakt, że „pojedyncze piksele” prawdopodobnie powodują przesłanie bufora całego ekranu na ekran, nie rozumiem, jak to może być wolniejsze: to nie tak, że bity są przesyłane „jeden po drugim” - raczej one to kolejne impulsy elektryczne, które są przekazywane bez opóźnień między nimi (prawda?).
źródło
Odpowiedzi:
Czas wysłania pakietu do zdalnego hosta to połowa czasu zgłoszonego przez ping, który mierzy czas podróży w obie strony.
Wyświetlacz, który mierzyłem, był wyświetlaczem Sony HMZ-T1 podłączonym do komputera.
Aby zmierzyć opóźnienie wyświetlania, mam mały program, który siedzi w pętli spinowej odpytując kontroler gier, wykonując czyszczenie do innego koloru i zamieniając bufory po każdym naciśnięciu przycisku. Nagrywam wideo pokazujące zarówno kontroler gier, jak i ekran z kamerą 240 kl./s, a następnie zliczam liczbę klatek między naciśnięciem przycisku a ekranem zaczynającym pokazywać zmianę.
Kontroler gry aktualizuje się przy 250 Hz, ale nie ma bezpośredniego sposobu pomiaru opóźnienia na ścieżce wejściowej (szkoda, że nie mógłbym jeszcze podłączyć przewodów do portu równoległego i użyć instrukcji Sama we / wy). Jako eksperyment kontrolny wykonuję ten sam test na starym wyświetlaczu CRT z pionowym zejściem 170 Hz. Aero i wiele monitorów może wprowadzić dodatkowe opóźnienie, ale w optymalnych warunkach zazwyczaj zobaczysz zmianę koloru, zaczynającą się w pewnym momencie na ekranie (vsync wyłączone) dwie ramki 240 Hz po zwolnieniu przycisku. Wygląda na to, że przetwarzanie USB HID trwa około 8 ms , ale chciałbym to lepiej poprawić w przyszłości.
Często zdarza się, że stacjonarne monitory LCD zajmują 10+ 240 Hz klatek, aby pokazać zmianę na ekranie. Sony HMZ uśredniał około 18 klatek, czyli ponad 70 milisekund.
Było to w konfiguracji z wieloma monitorami, więc kilka ramek jest winą kierowcy.
Pewne opóźnienia są nierozerwalnie związane z technologią. Rzeczywista zmiana paneli LCD zajmuje 4-20 milisekund, w zależności od technologii. Single Chip LCOS wyświetla musi buforować jedną klatkę wideo przekonwertować z upakowanych pikseli sekwencyjnej płaszczyzn barwnych. Laserowe wyświetlacze rastrowe wymagają pewnej ilości buforowania w celu konwersji ze wzorów rastrowych na wzorce skanowania w przód iw tył. Wyświetlacz stereo sekwencyjny klatek lub podzielony u góry u dołu ekranu 3D nie może zaktualizować połowy klatki o połowę czasu.
Wyświetlacze OLED powinny być jednymi z najlepszych, jak wykazał eMagin Z800 , który jest porównywalny z opóźnieniem CRT 60 Hz, lepiej niż jakikolwiek inny testowany inny niż CRT I.
Zła wydajność Sony wynika z kiepskiej inżynierii oprogramowania. Niektóre funkcje telewizora, takie jak interpolacja ruchu, wymagają buforowania co najmniej jednej klatki i mogą korzystać z większej liczby. Inne funkcje, takie jak pływające menu, konwersje formatów, ochrona zawartości itp., Mogą być zaimplementowane w sposób strumieniowy, ale najłatwiejszym rozwiązaniem jest po prostu buforowanie między każdym podsystemem, który może układać do pół tuzina ramek w niektórych systemach .
Jest to bardzo niefortunne, ale wszystko można naprawić i mam nadzieję, że w przyszłości oprę się na producentach wyświetlaczy o opóźnieniu.
źródło
Niektóre monitory mogą mieć znaczne opóźnienie wejściowe
Możliwe jest połączenie niesamowitego połączenia internetowego w porównaniu z kiepskim zestawem monitorów i kart graficznych
Źródła:
Gry konsolowe: Współczynnik opóźnienia • Strona 2
Wyświetlacz może dodać kolejne 5-10 ms
Konsola może mieć opóźnienie do 210 ms
I, zgodnie z komentarzem Davida, najlepszym przypadkiem powinno być około 70 ms na wysłanie pakietu
źródło
Bardzo łatwo jest zademonstrować opóźnienie wejścia na monitorach, po prostu przykleić ekran LCD do crt i pokazać zegar lub animację wypełniającą ekran i nagrać go. Można być drugim lub więcej z tyłu. Jest to coś, na co producenci LCD zaostrzyli, odkąd gracze itp. Zauważyli to bardziej.
Na przykład. Youtube Video: Input Lag Test Vizio VL420M
źródło