2012-05-01 09:30:45 +0000 2012-05-01 09:30:45 +0000
818

¿Un ping transatlántico más rápido que el envío de un píxel a la pantalla?

John Carmack tweeted ,

Puedo enviar un paquete IP a Europa más rápido que un píxel a la pantalla. ¿Cómo de jodido es eso?

Y si no se tratara de John Carmack, lo archivaría como "la interwebs siendo tonta".

Pero esto es John Carmack.

¿Cómo puede ser esto cierto?

Para evitar discusiones sobre lo que se quiere decir exactamente en el tuit, esto es lo que me gustaría que se respondiera:

*¿Cuánto tiempo tarda, en el mejor de los casos, en enviarse un solo paquete IP desde un servidor en los Estados Unidos a algún lugar de Europa, midiendo desde el momento en que un software lanza el paquete, hasta el punto en que lo recibe un software por encima del nivel del controlador? *

*¿Cuánto tiempo tarda, en el mejor de los casos, un píxel en aparecer en la pantalla, medido desde el momento en que un software por encima del nivel del controlador cambia el valor de ese píxel? *


Incluso suponiendo que la conexión transatlántica sea el mejor cable de fibra óptica que el dinero pueda comprar, y que John esté sentado justo al lado de su ISP, los datos todavía tienen que ser codificados en un paquete IP, llegar desde la memoria principal hasta su tarjeta de red, desde allí, a través de un cable en la pared, hasta otro edificio, probablemente saltarán a través de unos cuantos servidores allí (pero supongamos que sólo necesita un único relé), se fotonizan a través del océano, se convierten de nuevo en un impulso eléctrico por un fotosensor, y finalmente son interpretados por otra tarjeta de red. Dejémoslo ahí.

En cuanto al píxel, se trata de una simple palabra de máquina que se envía a través de la ranura PCI express, se escribe en un búfer, que luego se descarga en la pantalla. Incluso teniendo en cuenta el hecho de que los "píxeles individuales" probablemente hacen que se transmita todo el búfer de la pantalla a la misma, no veo cómo puede ser más lento: no es que los bits se transfieran "uno a uno", sino que son impulsos eléctricos consecutivos que se transfieren sin latencia entre ellos (¿verdad?).

Respuestas [3]

1339
2012-05-01 14:24:00 +0000

El tiempo para enviar un paquete a un host remoto es la mitad del tiempo reportado por ping, que mide un tiempo de ida y vuelta.

La pantalla que estaba midiendo era una Sony HMZ-T1 pantalla montada en la cabeza conectada a un PC.

Para medir la latencia de la pantalla, tengo un pequeño programa que se sienta en un bucle de giro sondeando un controlador de juego, haciendo un claro a un color diferente y el intercambio de buffers cada vez que se pulsa un botón. Grabo en vídeo mostrando tanto el controlador del juego como la pantalla con una cámara de 240 fps, y luego cuento el número de fotogramas entre que se pulsa el botón y la pantalla empieza a mostrar un cambio.

El controlador del juego se actualiza a 250 Hz, pero no hay forma directa de medir la latencia en la ruta de entrada (me gustaría poder seguir conectando cosas a un puerto paralelo y usar instrucciones Sam de entrada/salida). Como experimento de control, hago la misma prueba en una vieja pantalla CRT con un retroceso vertical de 170 Hz. Aero y los monitores múltiples pueden introducir una latencia extra, pero en condiciones óptimas se suele ver un cambio de color que comienza en algún punto de la pantalla (vsync desactivado) dos fotogramas de 240 Hz después de que el botón baje. Parece que hay 8 ms más o menos de latencia pasando por el procesamiento de USB HID , pero me gustaría concretar esto mejor en el futuro.

No es raro ver que los monitores LCD de escritorio tarden más de 10 cuadros de 240 Hz en mostrar un cambio en la pantalla. El Sony HMZ tardó una media de 18 fotogramas, es decir, más de 70 milisegundos en total.

Esto fue en una configuración multimonitor, así que un par de fotogramas son culpa del controlador.

Parte de la latencia es intrínseca a la tecnología. Los paneles LCD tardan entre 4 y 20 milisegundos en cambiar realmente, dependiendo de la tecnología. Las pantallas de un solo chip LCoS deben almacenar en el búfer un cuadro de vídeo para convertir los píxeles empaquetados en planos de color secuenciales. Las pantallas de trama láser necesitan una cierta cantidad de búfer para convertir el retorno de la trama en patrones de exploración de ida y vuelta. Una pantalla 3D estereoscópica secuencial o dividida arriba-abajo no puede actualizarse a mitad de cuadro la mitad del tiempo. OLED las pantallas deberían estar entre las mejores, como demuestra una eMagin Z800 , que es comparable a una CRT de 60 Hz en latencia, mejor que cualquier otra que no sea CRT que haya probado.

El mal rendimiento del Sony se debe a una mala ingeniería de software. Algunas funciones del televisor, como la interpolación de movimiento, requieren el almacenamiento en búfer de al menos un fotograma, y pueden beneficiarse de más. Otras funciones, como los menús flotantes, las conversiones de formato, la protección de contenidos, etc., podrían implementarse en streaming, pero la solución fácil es limitarse a almacenar en el buffer cada subsistema, lo que puede acumular hasta media docena de fotogramas en algunos sistemas.

Esto es muy desafortunado, pero todo es solucionable, y espero que los fabricantes de pantallas se apoyen más en la latencia en el futuro.

1339
69
2012-05-01 10:26:17 +0000

Algunos monitores pueden tener un lag de entrada significativo

Teniendo en cuenta que una conexión a Internet es impresionante en comparación con un combo de monitor y tarjeta de vídeo de mala calidad es posible

Fuentes: Console Gaming: The Lag Factor - Page 2

Así que, a 30FPS obtenemos un rendimiento de referencia de ocho fotogramas/133ms, pero en el segundo clip donde el juego ha bajado a 24FPS, hay un claro retraso de 12 fotogramas/200ms entre que aprieto el gatillo, y Niko comienza la animación de disparo de la escopeta. Eso son 200ms más el retraso adicional de tu pantalla. Ouch.

Una pantalla puede añadir otros 5-10ms

Así, una consola puede tener hasta 210ms de lag

Y, según el comentario de David, el mejor caso debería ser de unos 70ms para enviar un paquete

69
37
2012-05-03 10:31:24 +0000

Es muy sencillo demostrar el retraso de entrada en los monitores, basta con poner un lcd al lado de un crt y mostrar un reloj o una animación llenando la pantalla y grabarlo. Uno puede tener un segundo o más de retraso. Es algo que los fabricantes de LCD han endurecido desde que los jugadores, etc. lo han notado más.

Ej. Youtube Video: Input Lag Test Vizio VL420M

37