¿Cómo maneja mi controlador de pantalla tantos datos?

61

Acabo de hacer algunos cálculos rápidos:

En mi MacBook tengo una resolución de 2560x1440 multiplicada por 24 bits para los colores, obtenemos 11.05MB para una sola imagen o 663MB por segundo a 60 fps .

Supongo que hay algo de compresión, pero, por ejemplo, cuando me muevo con tres dedos sobre mi panel táctil, eso es bastante aleatorio, lo que sucede después en la pantalla y casi cada píxel cambia. Igual que con casi cualquier otra interacción.

Explique si mis cálculos son incorrectos y cómo se transportan estos datos desde mi tarjeta gráfica a mi pantalla. ¿Qué ancho tienen los buses entre mi tarjeta gráfica y mi pantalla? ¿Quizás explique en pocas palabras cómo una pantalla almacena píxeles? Cambio de registros? ¿Cache?

Felix Crazzolara
fuente
77
"¿Quizás explique en pocas palabras cómo una pantalla almacena píxeles?" La pantalla en realidad no almacena los datos de píxeles, todo eso es manejado por la RAM en la tarjeta gráfica (o RAM del sistema para gráficos integrados). La RAM tiene fácilmente un ancho de banda de varios GB / s. Los marcos se envían a la pantalla siguiendo un protocolo, por lo que los datos están disponibles, ya que se requieren para la visualización.
ks0ze
3
¿Por qué crees que hay compresión? ¿Qué crees que sucede cuando los datos no son comprimibles? ¿Crees que la pantalla se queda atrás?
Mehrdad
3
@Aresloom: Ah, ya veo. La compresión con pérdida sería unidireccional, sí. :) ¡Pensé que estabas pensando en sin pérdidas!
Mehrdad el
2
@ ks0ze algunos paneles más nuevos almacenan la última pantalla que se enviaron. El almacenamiento en caché allí usa menos energía que la GPU que bombea una imagen estática 60 veces por segundo. anandtech.com/show/7208/understanding-panel-self-refresh
Dan Neely
2
¿Las pantallas modernas de las computadoras portátiles todavía usan LVDS? Hace media docena de años, las compañías de GPU planeaban eliminarlo al mismo tiempo que VGA (que pasó de la generación actual de salida nativa de GPU) a favor del puerto de visualización integrado.
Dan Neely

Respuestas:

69

Sus cálculos son correctos en esencia. Para una señal de 1440p60Hz, tiene una velocidad de datos de 5.8Gbps una vez que también permite el tiempo de supresión (borde de píxeles no visible en la salida de imagen).

Para HDMI / DVI, se utiliza una codificación de 10 / 8b, lo que significa que, aunque tiene 24 bits de datos de color por píxel, en realidad se envían 30 bits a medida que se codifican los datos y se agregan palabras de control de protocolo. No se realiza ninguna compresión, los datos sin procesar se envían, por lo que significa que necesita 7.25 Gbps de ancho de banda de datos.

Otra vez mirando HDMI / DVI. Utiliza el estándar de señalización "TDMS" para la transferencia de datos. El estándar HDMI V1.2 exige un máximo de 4.9Gbps para un enlace único (3 líneas de datos en serie + 1 línea de reloj), o en el caso de DVI de doble enlace, un máximo de 9.8Gbps (6 líneas de datos en serie, creo ) Por lo tanto, hay un ancho de banda más que suficiente para hacer 1440p60 a través de un DVI de doble enlace, pero no a través de un HDMI V1.2.

En el estándar HDMI V1.3 (la mayoría de los dispositivos en realidad se saltaron a V1.4a, que es el mismo ancho de banda que 1.3), el ancho de banda se duplicó a alrededor de 10 Gbps, que admitiría 1440p60, y también es suficiente ancho de banda para UHD a 30Hz (2160p30).

DisplayPort como otro ejemplo tiene 4 flujos de datos en serie, cada uno con capacidad (en V1.1) de 2.16 Gbps por flujo (teniendo en cuenta la codificación), por lo que con un enlace V1.1 podría hacer 1440p60 fácilmente con los 4 flujos. También han lanzado un nuevo estándar, V1.2, que lo duplica a 4.32Gbps / stream permitiendo UHD @ 60Hz. Todavía hay una versión más nueva que han llevado aún más lejos a 6.4Gbps / stream .


Inicialmente, esas cifras suenan enormes, pero en realidad no tanto cuando se considera USB 3.0. Eso fue lanzado con una velocidad de datos de 5 Gbps en un solo cable (en realidad dos, uno para TX, uno para RX, pero estoy divagando). PCIe, que es lo que su tarjeta gráfica utiliza internamente hoy en día, funciona a una velocidad de hasta 8 Gbps a través de un solo par diferencial, por lo que no es tan sorprendente que las interfaces de datos externas se estén poniendo al día.


Pero la pregunta sigue siendo, ¿cómo se hace? Cuando piensa en VGA, se compone de cables individuales para datos R, G y B que se envían en formato analógico. Como sabemos, es muy susceptible al ruido, y el rendimiento de DAC / ADC también es limitado, por lo que limita enormemente lo que puede pasar a través de ellos (habiendo dicho que apenas puede hacer 1440p60Hz sobre VGA si tiene suerte).

Sin embargo, con los estándares modernos, usamos estándares digitales que son mucho más inmunes al ruido (solo necesita distinguir entre alto o bajo en lugar de todos los valores intermedios), y también elimina la necesidad de conversión entre analógico y digital.

Además, el advenimiento de usar estándares diferenciales sobre un solo extremo ayuda significativamente porque ahora está comparando el valor entre dos cables (+ ve diferencia = 1, -ve diferencia = 0) en lugar de comparar un solo cable con algún umbral. Esto significa que la atenuación es un problema menor porque afecta a ambos cables por igual y se atenúa hasta el voltaje del punto medio: el "ojo" (diferencia de voltaje) se vuelve más pequeño, pero aún puede saber si es + ve o -ve incluso si es solo 100mV o menos. Una vez que la señal se atenúa, las señales de un solo extremo pueden caer por debajo de su umbral y volverse indistinguibles incluso si aún tiene una amplitud de 1V o mayor.

Al usar un enlace en serie sobre uno paralelo, también podemos ir a velocidades de datos más rápidas porque el sesgo deja de ser un problema. En un bus paralelo, digamos 32 bits de ancho, debe coincidir perfectamente con la longitud y las características de propagación de 32 cables para que las señales no se desfasen entre sí (sesgo). En un enlace en serie solo tiene un solo cable, por lo que no puede producirse una distorsión.


TL; DR Los datos se envían a la velocidad de bits completa que calculó (varios Gbps), sin compresión. Las modernas técnicas de señalización de enlaces digitales serializados sobre pares diferenciales lo hacen posible.

Tom Carpenter
fuente
Además, creo que algunas pantallas HDMI utilizaron 2 enlaces HDMI 1.2v para obtener la imagen, dividiendo efectivamente la pantalla en 2. Eso daría un ancho de banda combinado de esencialmente 9.8Gbps.
Ismael Miguel
55
@Aresloom 5GHz es el punto en el que casi todas las CPU comienzan a derretirse debido a la gran cantidad de transistores que cambian simultáneamente y generan grandes cantidades de calor. No significa que 5GHz sea el reloj más alto para todo , se reduce al calor (y qué material usa, el silicio no siempre es el mejor). El mejor ejemplo que se me ocurre es un Keysight Infinnium DSAX96204Q en el que cada uno de los cuatro extremos frontales tiene una muestra de fosfuro de indio que funciona a 80 GHz. Pero esa muestra solo tiene un par de docenas de transistores y quema varios vatios (las CPU modernas tienen miles de millones )
Sam
44
@Aresloom 340MHz sería la velocidad del reloj, la velocidad de datos se serializa de manera que (en TDMS, por ejemplo) se envían 10 bits en un cable en cada ciclo de reloj, por lo que un reloj de 340MHz produciría 3.4Gbps. Solo los cables y el hardware de (des) serialización (SERDES) en la periferia de los circuitos integrados de video se ejecutan a esas velocidades de datos en serie. Después del hardware SERDES, internamente hay un bus paralelo que vuelve a bajar a la velocidad de reloj más baja. Los bloques SERDES pueden ejecutarse muy rápido: PCIe es de 8 Gbps por carril, por lo que los bloques SERDES se ejecutan a 4 GHz (utilizando ambos bordes de reloj para bits - DDR).
Tom Carpenter
1
8b / 10b mejora el rechazo de errores porque es más fácil detectar transiciones que estados en señales rápidas. Esa codificación garantiza que no habrá una ejecución demasiado larga de unos o ceros consecutivos.
pjc50
1
@curiousdannii Es un ciclo interesante, ¿no? Primero comenzamos con serial (por ejemplo, UART) que era demasiado lento (digamos 115kbps máx.). Luego fuimos a buses paralelos como IDE que alcanzaron aproximadamente 66MHz @ 16bit, más o menos 1Gbps. Luego volvimos a la serie porque resultó que podemos ir muy rápido con los buses diferenciales. Pero ahora el serial no es lo suficientemente rápido nuevamente, así que vamos con una especie de serial paralelo: múltiples carriles de buses seriales individuales que se pueden manejar esencialmente por separado y luego cualquier sesgo de carril a carril se corrige con FIFO.
Tom Carpenter el
19

Las computadoras modernas son sorprendentemente rápidas. La gente cargará felizmente videos Full HD de 30 fps sin darse cuenta de que eso implica miles de millones de operaciones aritméticas por segundo. Los jugadores tienden a ser un poco más conscientes de esto; una GTX 1060 le dará 4.4 TFLOPS ( billones de operaciones de coma flotante por segundo).

Explique si mis cálculos son incorrectos y cómo se transportan estos datos desde mi tarjeta gráfica a mi pantalla.

¿Qué ancho tienen los buses entre mi tarjeta gráfica y mi pantalla?

Otra respuesta ha abordado la naturaleza de varios gigabits de HDMI, DisplayLink, etc.

¿Quizás explique en pocas palabras cómo una pantalla almacena píxeles? Cambio de registros? ¿Cache?

La pantalla en sí no almacena, en teoría, ningún dato de imagen.

(Algunas pantallas, especialmente televisores, almacenan un marco o dos para aplicar el procesamiento de imágenes. Esto aumenta la latencia y no es popular entre los jugadores).

El subsistema de gráficos de una computadora almacena píxeles en DRAM ordinaria. Por lo general, no vuelve a dibujar todo desde el procesador en cada fotograma, pero entrega parte de la funcionalidad a subsistemas dedicados y un compositor . Un compositor permitirá, por ejemplo, que cada ventana del escritorio se almacene como un conjunto distinto de píxeles, que luego puede ser movido, desplazado o ampliado por el hardware dedicado. Esto se vuelve bastante obvio con el desplazamiento en dispositivos móviles: puede recorrer un camino corto hasta que se quede sin píxeles precalculados "fuera de pantalla" y el software tenga que detenerse y procesar un poco más en los búferes del compositor.

Los juegos se vuelven a dibujar en cada cuadro, y hay mucha literatura sobre cómo se construye una escena. Esto se construye en un buffer de cuadros en la tarjeta gráfica que luego se transmite mientras el siguiente cuadro se dibuja en un buffer diferente.

La decodificación de video generalmente también se entrega al hardware dedicado, especialmente H.264.

pjc50
fuente
11

El enlace entre la tarjeta de visualización y el panel LCD se realiza a través de varios pares diferenciales de alta velocidad utilizando la señalización TMDS , generalmente llamada "carriles". Por lo general, se usan cuatro carriles, por lo que se puede decir que el bus tiene 4 bits de ancho. Para más detalles hay una respuesta stackhexchange .

Cada modelo de panel LCD generalmente se produce con varias encarnaciones de interfaz, por lo que hay que tener cuidado y mirar los sufijos cuando se intenta reemplazar un panel roto. El enlace digital más moderno (HDMI 1.4) tiene 10.2 Gbps, o solo 2.5 Gbps por carril. En sus cálculos (663 MBps) totaliza 1.2 Gbps por carril (suponiendo 4 carriles), que no es tanto (por ejemplo, SATA3 tiene 6 Gbps).

ADICION en paneles LCD. La pantalla LCD de matriz activa en realidad intenta almacenar la imagen del cuadro (datos de píxeles) en los condensadores asociados con las "celdas nemáticas retorcidas" (la que controla la polarización de la película). El problema es que el tamaño de los límites de almacenamiento analógico debe ser una compensación entre el tiempo de almacenamiento y la velocidad del cambio de píxeles. Por lo tanto, no puede hacerse grande, pierde el potencial almacenado rápidamente y, por lo tanto, requiere una actualización periódica . Cada celda de píxel está conectada con datos y líneas de dirección a través de un transistor (elemento "activo"), consulte este artículo de Tomshardware . El controlador-controlador LCD multiplexa las líneas de datos y direcciones en línea por línea, manteniendo así la imagen mostrada. La imagen en sí se almacena en un búfer de cuadro (RAM) dentro del controlador de gráficos.

Ale..chenski
fuente