Estamos acostumbrados a que la reproducción de vídeo e incluso la codificación de la misma sea llevada a cabo por pequeños coprocesadores en SoCs y GPUs encargados de dicha tarea. El concepto de la Video Processor Unit o VPU va más allá de eso. Un tipo de procesador diseñado para el tratamiento de vídeo a mayor escala.
El negocio del streaming de contenido creado por los usuarios lleva ya más de una década entre nosotros, al igual que la emisión de series y películas por internet. Detrás de todo ello existe un hardware especializado que cada vez está más en ciernes que es la VPU, y que significa el retorno al hardware especializado en vídeo.
Codificación, descodificación y transcodificación
Uno de los elementos más importantes es la transmisión de vídeo a tiempo real, lo que se traduce en que tiene que haber el mínimo tiempo posible entre la transmisión del evento y la recepción del mismo. Es decir, tiene que haber una retransmisión completamente fluida y ello requiere una gran capacidad de cálculo, ya que la velocidad de procesamiento que necesitamos es mucho más alta al requerir la codificación en mucho menor tiempo.
A esta complicación sumadle la cantidad enorme de dispositivos conectados a la red, que van a exigir el contenido a diferentes resoluciones y en diferentes formatos. Esto es algo a lo que la televisión analógica no se tenía que enfrentar en absoluto, ya que todos los televisores funcionaban todos a la misma resolución independientemente de su tamaño, por lo que no hacía falta generar multitud diferente de resoluciones.
Desde el punto de vista de la reproducción la cosa es más fácil, ya que solo tienen que tratar una señal de vídeo a una tasa de bits, un formato de archivo y a una resolución específica. A esto hay que añadirle que la mayoría de los PCs que tiene la gente en casa ya vienen equipados para reproducir varios streams de vídeo al mismo tiempo, pero la codificación es un tema distinto y es mucho más compleja a la hora de implementarla y en cuanto a su coste computacional.
Una GPU no sirve para la transcodificación
Las tarjetas gráficas desde hace ya años tienen unidades que codifican vídeo, su trabajo es coger los últimos fotogramas sucesivos de una aplicación y crear un vídeo con ellos en un formato concreto para luego almacenarlo o transmitirlo en la red. La codificación se hace porque si tuviéramos el archivo con la información original se necesitaría una gran cantidad de datos y una velocidad de subida muy alta.
Pero el códec de vídeo por hardware dentro de la GPU no tiene la velocidad para poder transmitir a diferentes resoluciones y a tiempo real, si os fijáis, la gran mayoría de gente que realiza streaming tiene un tiempo de retraso de varios segundos y por tanto de cientos de fotogramas.
Por lo que las GPUs, sean dedicadas o integradas, no son lo suficientemente buenas para poder realizar transmisión de contenido a tiempo real y es necesario utilizar un tipo de hardware especializado del que no todo el mundo dispone, es en ese punto donde entran en escena las VPU como procesador dedicado para el tratamiento de vídeo.
La necesidad de tratar una mayor cantidad de datos que los códecs incluidos de serie en SoCs como en las GPUs convierten a las VPUs en el equivalente a una tarjeta gráfica dedicada en comparación a los simples códecs por hardware integrados, por lo que se acaban crean procesadores especializados a los que llamamos VPUs.
Arquitectura de una VPU
Una VPU al igual que una GPU es un coprocesador para la CPU principal, por lo que su trabajo es liberar a la CPU de hacer un trabajo concreto y realizarlo en mejores condiciones y menos tiempo que la propia CPU.
Su organización interna es muy parecida a una GPU, y por tanto deriva de la misma, pero con algunos cambios importantes:
- Puede disponer de unidades shader, pero estas carecen de la unidad de texturas y otros elementos para gráficos como es la unidad de cálculo para la intersección de rayos en la escena que se utiliza en el Ray Tracing.
- Tampoco dispone de las unidades especializadas para gráficos fuera de las unidades shader, como son las unidades de teselación, las de rasterización y los render outputs.
- Disponen de una gran cantidad de códecs de vídeo por hardware con la capacidad de tratar varios caudales de vídeo al mismo tiempo. Estas códecs ocupan una parte importante del chip en comparación con lo que ocupan en una GPU normal.
- Algunas unidades utilizan hardware para inteligencia artificial para ejecutar algoritmos como cambiar la resolución, el estilo, interpolación y extrapolación de fotogramas.
En comparación con una GPU sus capacidades a la hora de transformar los datos de un formato a otro y de una resolución a otra son mucho más altas en cuanto a velocidad. Por lo que sus codificadores son mucho más potentes, en parte por qué consiguen una gran velocidad de codificación, descodificación y transcodificación no solo gracias a los códecs de hardware, sino también a la potencia de cálculo de las unidades que hay a su alrededor.
¿Dónde se encuentran las VPU?
Por lo que en general una VPU no es un tipo de hardware que se suela encontrar de serie en la mayoría de los ordenadores, ya que muy poca gente necesita un hardware de tratamiento de vídeo con dicho nivel de potencia para su uso diario.
Generalmente las VPU se pueden encontrar en los siguientes tipos de hardware.
- En los servidores de las plataformas de streaming de vídeo, sea cual sea el tipo de contenido que se transmite a través de los mismos hacía los usuarios.
- En hardware especializado que se utiliza para la transcodificación, suelen ser unidades parecidas a reproductores de vídeo con una serie de entradas y salidas de vídeo. Algunas cadenas de televisión veteranas utilizan este tipo de equipamiento para emitir su contenido antiguo y de la era analógica directamente a digital.
- En sistemas de videoconferencia, donde por la llegada del teletrabajo se ha creado la necesidad de poder realizar una comunicación nítida y fluida entre las diferentes partes.
- En sistemas de visión por computador para que el sistema tenga ojos y pueda «ver» lo que hay alrededor, no solo en robots o coches inteligentes, sino también en smartphones y tablets.
Por lo que las VPU van a verse siempre cuando se requiera un procesamiento del vídeo mucho más alto que el que da un PC convencional y poco a poco han permeando en diferentes mercados dada la importancia de conseguir streaming de vídeo para varios clientes distintos que reproducen bajo condiciones distintas.