A diario nos encargamos de manipular imágenes con nuestro PC, no en vano nuestro monitor nos envía un mínimo de 60 de ellas por segundo. Pero, ¿Qué componente las procesa más rápido? La GPU que está especializada en ello o la CPU con su gran velocidad. Muchos sabréis ya la respuesta, pero os explicamos el motivo.

La manipulación de imágenes es una de las disciplinas profesionales más relacionadas con el PC a día de hoy y desde ya décadas. Desde la manipulación de fotografías hasta la creación de arte por ordenador, pasando por la preimpresión y el diseño editorial. Día tras día millones de imágenes son manipuladas por el hardware de nuestro PC.

¿Qué es una imagen?

Canales RGB Imagenes

Todos sabemos lo que es una imagen, pero la pregunta va más bien dirigida a lo que es una imagen cuando hablamos de informática y es que esta no es más que una malla de píxeles, almacenando cada píxel la información de los componentes de color RGB.

A la hora de manipular una imagen lo que hace el procesador, sea una CPU o una GPU, es manipular todos esos píxeles de manera individual y en paralelo, manipulando todos y cada uno de los componentes de color que componen cada uno de los píxeles de la imagen.

CPU frente a GPU en el tratamiento de imágenes

CPU Render

Las CPU están pensadas para trabajar en serio y no en paralelo, esto es debido a como funciona la arquitectura Von Neumann en la que se basan todas las CPU, esto hace que a la hora de manipular imágenes suelan hacerlo cogiendo píxel por píxel, y en ciertos casos incluso componente por componente, de manera individual.

Por temas de espacio, no existen diversas ALUs con diferentes precisiones, sino que para operar con un dato de menor precisión se utilizan ALUs de mayor precisión. Esto hace que si la CPU tiene que gestionar un pixel de 3 o 4 componentes, RGB o RGBA, entonces va a gestionar todos uno por uno cada uno de estos a la hora de calcularlos, lo que hará que necesite muchos más ciclos.

Las GPU en cambios están pensadas para el procesamiento gráfico y sus instrucciones de manipulación de píxeles están pensadas para manipular los 3 o 4 componentes de un píxel. Además la forma en la que utilizan la memoria hace que pese a que el acceso sea en serie como una CPU pueda manera varios píxeles al mismo tiempo que procesará haciendo uso de su alto nivel de paralelismo.

GPU AMD VRAM

Los procesadores gráficos pueden procesar imágenes a una gran velocidad, la cual puede llegar a ser de varias órdenes de magnitud más rápida que la de una CPU, pero para ello es necesario que los programas estén preparados para su uso. La gran mayoría de los de tratamiento de imagen apenas utilizan la tarjeta gráfica y si lo hacen es en momentos puntuales. Por lo que es posible que esa imagen que está procesando en tu editor de imágenes no se vea afectada por el hecho de tener una GPU muy potente.

Descifrado de imágenes vía CPU y GPU

Descodificación Imagenes

Debido a que el espacio de almacenamiento es algo importante, se desarrollaron formatos de imagen comprimidas en las que la información de la imagen no se da tal cual, sino que se encuentra cifrada para ocupar menos espacio y es necesario realizar un descifrado para obtenerla.

Los procesadores gráficos en sus inicios eran un cúmulo de unidades de función fija que no se podían programar, esto llevaba a que a la hora de utilizar ciertos formatos de imagen se tenía que hacer que la CPU realizará el descifrado, lo que provocaba que la imagen ya descodificada estuviera en el espacio de memoria de la CPU.

Con la llegada de las unidades shader en las GPU se empezó a utilizar el hardware de las tarjetas gráficas para descodificar imágenes, pero fue una solución momentánea, ya que aunque libera a la CPU de la tarea no era del todo elegante, es por ello que se empezaron a utilizar unidades de función fija y/o aceleradores para descifrar ciertos formatos de imagen de manera mucho más rápida y sin afectar al rendimiento de CPU y GPU.

The post ¿Qué procesa más rápido las imágenes, la CPU o la tarjeta gráfica? appeared first on HardZone.