20 votos

¿Cómo se comunica una GPU/CPU con una salida de pantalla estándar? (HDMI/DVI/etc)

Me interesa saber cómo la cpu/gpu presenta (a cualquier equipo que lo haga) los datos de vídeo después de haber sido procesados.

Me han dicho que el vídeo es procesado por la CPU/GPU y luego enviado a un circuito integrado por serie de alta velocidad que convierte la señal serie en una salida de pantalla adecuada, pero no puedo confirmarlo buscando en internet.

Me interesa la señalización y no puedo buscar protocolos/etc porque no sé qué es lo que busco. Entonces, ¿la CPU/GPU interactúa con las salidas de vídeo directamente (puedo encontrar estos protocolos fácilmente) o hay un "intermediario" por así decirlo y si es así qué es, tipo de chip/etc?

23voto

silverbolt Puntos 18

La imagen que se muestra en el monitor se almacena en la memoria RAM de vídeo del ordenador, en la tarjeta gráfica, en una estructura denominada framebuffer. Los datos en el framebuffer son generalmente de 24 bits de color RGB, por lo que habrá un byte para el rojo, uno para el verde y uno para el azul para cada píxel de la pantalla, posiblemente con algunos bytes de relleno extra. Los datos de la RAM de vídeo pueden ser generados por la GPU o por la CPU. La RAM de vídeo es leída continuamente por un componente DMA especializado de la tarjeta de vídeo y enviada al monitor. La señal de salida al monitor es una señal analógica (VGA) en la que los componentes de color se envían a través de convertidores de digital a analógico antes de salir de la tarjeta, o una señal digital en el caso de DVI, HDMI o DisplayPort. El hardware responsable de esto también genera las señales de sincronización horizontal y vertical, así como todos los retardos apropiados para que los datos de la imagen sólo se envíen al monitor cuando esté preparado para ello. En DVI y HDMI, el flujo de información de color de los píxeles se codifica y serializa y se envía a través de TMDS (señalización diferencial de transición minimizada) al monitor. DisplayPort utiliza codificación 8b/10b. La codificación tiene múltiples propósitos. En primer lugar, TMDS minimiza las transiciones de señal para reducir las emisiones EMI. En segundo lugar, tanto TMDS como 8b/10b son protocolos de CC equilibrada, por lo que pueden utilizarse condensadores de bloqueo de CC para eliminar los problemas de bucles de masa. En tercer lugar, 8b/10b garantiza una densidad de transición lo suficientemente alta como para permitir la recuperación del reloj en el receptor, ya que DisplayPort no distribuye un reloj independiente.

Además, en el caso de HDMI y DisplayPort, los datos de audio también se envían a la tarjeta gráfica para su transmisión al monitor. Estos datos se insertan en pausas del flujo de datos entre fotogramas de vídeo. En este caso, la tarjeta de vídeo se presentará como un sumidero de audio para el sistema operativo, y los datos de audio se transferirán a través de DMA a la tarjeta para su inclusión con los datos de vídeo.

Ahora, probablemente te des cuenta de que para una pantalla de 1920x1080 con 4 bytes por píxel, sólo necesitas unos 8 MB para almacenar la imagen, pero la RAM de vídeo de tu ordenador es probablemente muchas veces ese tamaño. Esto se debe a que la RAM de vídeo no sólo sirve para almacenar el framebuffer. La RAM de vídeo está directamente conectada a la GPU, un procesador de propósito especial diseñado para el renderizado 3D y la decodificación de vídeo eficientes. La GPU utiliza su acceso directo a la RAM de vídeo para acelerar el proceso de renderizado. De hecho, llevar los datos de la memoria principal a la memoria de vídeo es un pequeño cuello de botella, ya que el bus PCI que conecta la tarjeta de vídeo con la CPU y la memoria principal es significativamente más lento que la conexión entre la GPU y la RAM de vídeo. Cualquier software que requiera una gran cantidad de renderizado 3D de alta resolución tiene que copiar todos los datos de la escena 3D (principalmente mallas 3D y datos de textura) en la RAM de vídeo para que la GPU pueda acceder a ellos de forma eficiente.

8voto

GetFree Puntos 495

Las diversas salidas de pantalla modernas son esencialmente secuencias de bits en serie. La tasa de bits es demasiado alta para un procesador (o, si pudiera mantener el ritmo, le exigiría demasiado tiempo de procesamiento). Se reserva una parte de la memoria para contener los bits de la imagen. Un hardware específico lee el contenido de la memoria y lo transmite. Esta pieza es similar a un controlador DMA y en realidad es bastante simple. Es sólo una pequeña parte de una GPU moderna, que se ocupa principalmente de crear esa imagen en la memoria a partir de comandos de GPU de nivel superior.

La memoria que contiene la imagen de vídeo puede formar parte de la memoria principal (barata) o ser una memoria dedicada a la que puedan acceder simultáneamente el 'DMA' y la CPU y/o la GPU. La 'DMA' debe configurarse con varios parámetros, por ejemplo la anchura y la altura del píxel, la profundidad del color, la ubicación de inicio en la memoria, etc.

En los ordenadores modernos, la GPU es un procesador (muy especializado) que rivaliza en velocidad con la CPU principal (y la supera en su propio terreno). Hace cosas como generar una imagen psuido-3D a partir de un montón de objetos 3D con texturas y fuentes de luz. Todo esto lo puede hacer dentro de la memoria de vídeo, la GPU. La CPU sólo entrega los objetos, las texturas y las fuentes de luz.

Leer los datos de vídeo de la memoria y desplazarlos hacia fuera es un proceso bastante sencillo, pero debe hacerse bastante rápido, y todo el tiempo. De ahí que esta tarea sea adecuada para hardware dedicado, y poco apropiada para una CPU. Según tengo entendido, los últimos ordenadores en los que la CPU participó en la generación de la señal de vídeo fueron el ZX80/81 y el Spectrum. En ellos, la CPU sólo podía hacer su propio trabajo durante el tiempo de retroceso (¿vertical?).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X