Las GPU como pasado, presente y futuro de la computación

Las GPU como pasado, presente y futuro de la computación
40 comentarios Facebook Twitter Flipboard E-mail

Todos usamos nuestro ordenador, pero muchas veces no somos conscientes de la tecnología que hay en ellos. Máquinas increíbles que nos permiten disfrutar del ocio con videojuegos de gráficos muy cercanos a la realidad, mecanismos de físicas que emulan rascacielos destruidos o golpes entre dos vehículos que luchan en carreras frenéticas. Para estas tareas el trabajo del procesador gráfico o GPU es fundamental.

Hoy nos adentraremos en el mundo de las tarjetas gráficas, de la arquitecturas de las GPU y de sus diferencias con otro procesador, el central o CPU, mucho más conocido. Porque las tarjetas gráficas son esenciales en la informática actual y son parte básica de lo que para muchos es importante de cara al futuro: GPGPU, o el procesamiento de datos mediante GPU. Hoy nos adentramos de lleno en este tema con nuestro especial sobre procesadores gráficos.

Un vistazo a…
Cómo saber los componentes de tu PC (RAM, Gráfica, CPU...) y el estado en el que se encuentran

La era pre-GPU

Las cosas han cambiado mucho desde que los ordenadores domésticos empezaron a implantarse en nuestros hogares, allá por la década de los 80. El hardware se sustenta sobre las mismas bases de la arquitectura von Neumann, si bien ésta ha evolucionado de forma muy notable y los sistemas actuales son ahora mucho más complejos.

Arquitectura de Von Neumann
Arquitectura de Von Neumann (vía Wikipedia)

El trío de componentes que planteó John von Neumann eran tres: ALU, memoria y entrada/salida, refiriéndose a mecanismos que procesan, almacenan y reciben/envían la información, respectivamente. Interpretando la arquitectura en un equipo actual equivaldría a tener sólo un procesador, un disco, un teclado y una pantalla. Evidentemente un sistema moderno está formado por muchos más elementos, y entre ellos la tarjeta gráfica se ha convertido en uno de los actuales componentes fundamentales.

Los orígenes

En los primeros ordenadores el procesador central -- CPU, central processing unit -- era el encargado de gestionar y procesar todo tipo de información. Desde los datos que el usuario quería operar hasta por supuesto el sistema operativo, y con él su interfaz.

Si bien aquellos primeros sistemas utilizaban interfaces basadas en texto, con la llegada de las primeras interfaces gráficas el nivel de exigencia creció no sólo en el propio sistema operativo, si no también en muchas de las aplicaciones que empezaban a surgir por la época. Programas CAD o videojuegos, por ejemplo, requerían muchos más recursos para funcionar correctamente.

Llegados a este punto, los diseñadores de sistemas se basaron en un componente que ya existía para evolucionarlo y hacerlo crecer. Los coprocesadores matemáticos o FPU -- floating-point unit -- eran utilizados en muchos sistemas para acelerar el procesamiento de datos. Pueden entenderse como un segundo procesador, si bien algunas de las diferencias respecto de las CPU son muy claras: no pueden tener acceso a los datos directamente (debe ser la CPU la que gestione este apartado) o ejecutan un juego de instrucciones mucho más sencillo pensado para tratar datos en coma flotante.

Intel 386-387
CPU Intel 386 y coprocesador Intel 387 (vía Wikipedia)

La definición de procesador de propósito general ya la habíamos utilizado anteriormente. Este tipo de procesadores son los más comunes y la CPU es el ejemplo más habitual. Utilizan registros y juegos de instrucciones genéricos que pueden hacer operaciones de lo más diverso. Un dato importante para el tema que vamos a tratar es que las CPU no operaban directamente con datos en punto flotante, si no que realizaban una conversión previa que implicaba un gasto en recursos y, por tanto, tiempo. Por ello, los coprocesadores matemáticos eran importantes ya que ellos sí podían procesar este tipo de datos.

Los coprocesadores matemáticos fueron el punto de partida para, años más tarde, el nacimiento de las GPU

Con la llegada de las por entonces nuevas interfaces se vio que muchas de las operaciones gráficas que procesaba la CPU se podían plantear como operaciones de punto flotante. La pantalla es, al fin y al cabo, una matriz de NxM píxeles en la que cada uno de ellos requiere de una alta carga matemática para generar el color concreto a mostrar en cada momento. Varias operaciones por segundo para cada píxel, y varios miles para procesar todos los píxeles de la pantalla.

Las exigencias continuaron creciendo, y los sistemas de la época disponían de CPU y una FPU optativa que terminó convirtiéndose en fundamental: los coprocesadores matemáticos evolucionaron hacia las GPU, al ser el componente más eficiente a la hora de procesar y determinar el aspecto gráfico de todo tipo de software.

Las primeras tarjetas gráficas

Los coprocesadores matemáticos siguieron evolucionando y mejorando, y empezaron a montarse en tarjetas individuales. Mediante este formato podían disponer de un mayor espacio para crear chips más grandes, con más transistores y circuitería y mejores conexiones energéticas, que eran capaces de ofrecer una mayor capacidad de proceso.

NVidia GeForce 256
NVidia GeForce 256 en su análisis en AnandTech... en 1.999

No fue hasta 1.999 cuando NVidia acuñó el término GPU, Graphics Processing Unit, para sustituir a las anteriores tarjetas de vídeo. Tras unas exitosas RIVA TNT2 presentaron la NVidia GeForce 256, y para promocionarla pusieron gran énfasis en las posibilidades gráficas que aportaba a nuestro equipo. Los videojuegos, ganando cada vez más adeptos, fueron una de las claves para que los diseñadores de las GPU fueran incrementando su rendimiento año tras año.

Más unidades de proceso que CPU, pero más sencillas: la arquitectura de las GPU

Los coprocesadores primero y las tarjetas gráficas después plantearon una arquitectura hardware muy diferente de las utilizadas en las CPU. Nos olvidamos de la conocida x86 ya que los requisitos eran diferentes (operaban diferentes tipos de datos y la salida de los resultados era el monitor, no la memoria), y por ello el diseño debía ser otro.

Arquitectura Kepler
Arquitectura Kepler de NVidia

En una GPU también tendremos unidades de proceso (tradicionalmente Unified Shaders o Stream Processors), memoria (que hace las veces de memoria RAM, como un sistema de almacenamiento temporal para apoyar al procesamiento de los datos) y entrada/salida. Las GPU también tienen sus propias librerías (las más conocidas son OpenGL y DirectX) para que los desarrolladores programen el software.

Una GPU contiene cientos o miles de pequeños procesadores, con lo que su potencial para procesar algoritmos paralelos es muy superior al de una CPU

Un aspecto fundamental de las actuales GPU son esos Unified Shaders, los pequeños procesadores. Estos son muy sencillos (ejecutan un conjunto de instrucciones muy concreto que realizan operaciones aritméticas básicas) pero su crecimiento en cantidad en cada nueva generación es significativo: la GeForce 256 de 1.999 tenía un total de 4, mientras en las actuales tarjetas gráficas lo habitual es encontrarnos con entre 1.000 y 4.000, aproximadamente. Por ejemplo, NVidia GTX 780 Ti tiene 2.688 Unified Shaders y AMD 7990 sube la apuesta a 4.096 (a razón de 2.048 para cada uno de sus dos núcleos).

Estos Unified Shaders son los que procesan la información gráfica, y a priori cuantos más tengamos será mejor para la capacidad de proceso de la GPU. Este factor es importante en videojuegos, pero fundamental para uno de los usos que más están creciendo en los últimos años: GPGPU, General-purpose computing on graphics processing units.

GPGPU, presente y futuro de la computación

Los sistemas crecen, pero lo hacen debido a lo que tanto los desarrolladores como los usuarios finales van exigiendo. Los videojuegos y su calidad gráfica son la prueba más palpable de este incremento en las capacidades de proceso, pero el uso que le damos a las GPU también ha cambiado para adaptarse a otras posibilidades.

NVidia GTX 690 SLI
SLI de dos NVidia GTX 690

GPGPU es el término que se utiliza para designar las tareas de propósito general, típicamente pensadas para ser procesadas en una CPU, pero que se aprovechan del potencial de la GPU para ejecutarse en ella. Dado que los procesadores gráficos son mucho más eficientes en cierto tipo de operaciones, los resultados se obtendrán más rápidamente.

El problema de la GPGPU es precisamente que no todas las tareas tienen que ser más eficientes en una GPU. Éstas están especializadas en tareas altamente paralelizables cuyos algoritmos puedan subdividirse, procesarse por separado para luego unir los subresultados y tener el resultado final. Típicamente son problemas científicos, matemáticos o simulaciones (este tema ya lo tratamos en nuestra entrevista a Manuel Ujaldón), aunque un ejemplo mucho más popular es la problemática de minar Bitcoins.

GPGPU consiste en ejecutar procesos típicamente orientados a la CPU, pero en la GPU

Los bitcoins se han ganado la confianza de muchos al ser dinero relativamente fácil de ganar. Para un usuario final, la tarea para conseguir un bitcoin (o una fracción suya) es tan sencilla como ejecutar un programa y esperar. Dependiendo de la capacidad de nuestro ordenador tardará más o menos, y podremos obtener beneficios dependiendo del consumo energético del equipo. Al fin y al cabo es un problema con base económica, donde los beneficios finales dependerán de los ingresos (los bitcoins ganados) menos los gastos (energéticos y de tiempo invertido).

Lo que en este caso nos interesa de los bitcoins es la ciencia que hay detrás de ellos. Se trata de un problema criptográfico que hace uso del algoritmo SHA-256. El usuario tendrá que ejecutar este algoritmo sobre múltiples cadenas alfanuméricas de forma repetida hasta que el resultado sobre una de ellas sea válido, y entonces ganará una fracción de bitcoin.

A la vista de que minar bitcoins es una tarea altamente paralelizable y basada en operaciones matemáticas básicas (el algoritmo SHA-256 es público y puede consultarse en Wikipedia; podemos dedicar los núcleos de la GPU para procesar varias cadenas simultáneamente), su cálculo a través de GPGPU es la mejor opción existente. Existen múltiples manuales, tutoriales y documentos sobre cómo montar un buen equipo para bitmining, todos ellos basados en los siguientes principios:

  • Hacer uso de una muy CPU básica, si puede ser de tipo ULV -- Ultra Low Voltage -- mejor.
  • No más de 2 o 4 GB de memoria RAM.
  • Un dispositivo de almacenamiento de pequeñas dimensiones. Si puede ser SSD para ahorrar energía, mejor.
  • Una configuración de varias tarjetas gráficas para usar en GPGPU. Típicamente se utiliza CrossFire X de AMD.
  • Una buena fuente de alimentación, importante para dotar de energía a tres o cuatro tarjetas gráficas simultáneamente.

¿Por qué AMD? La razón para ello es bastante sencilla: disponen de un mayor número de 'Stream Processors', de forma que pueden procesar mayor cantidad de información simultáneamente.

Marenostrum BCN
Una parte del MareNostrum, el supercomputador del BSC

A priori podemos pensar que cuanto más potente sea una GPU será mejor para nuestros intereses. Sin embargo, existe una clave fundamental que es el consumo energético, algo que no solemos tener en cuenta pero que es imprescindible a la hora de determinar los beneficios finales. Tened en cuenta que un equipo de varias GPU trabajando simultáneamente puede alcanzar una potencia cercana a los 1.000 vatios que, operando las 24 horas del día, supondrá un fuerte desembolso económico.

Las gráficas en el entorno doméstico

Ya hemos mencionado que el mundo de los videojuegos es el principal impulsor de la potencia de las tarjetas gráficas actuales. Sin embargo, en los últimos años estamos viviendo un importante cambio de rumbo que va a seguir afectando y cambiando el sector durante los próximos años. Son las GPU integradas o IGP (Integrated Graphics Processor), ya existentes en las CPU tanto de Intel como de AMD en prácticamente todas sus gamas.

Intel Haswell

Las IGP nacen tras un estancamiento de los requisitos gráficos del software y por el crecimiento del ecosistema Web: páginas y juegos a través de un navegador. A día de hoy sólo los juegos más exigentes y cierto software profesional requieren el uso de una tarjeta gráfica dedicada que, si bien es significativamente más potente que una IGP, ésta última ofrece un rendimiento suficiente para tareas cotidianas. En otras palabras: sistema operativo, navegador web, ofimática o software de gestión son aplicaciones cuya carga gráfica es muy baja, y no es necesario tener una dedicada para disfrutar de una buena experiencia en su uso. Una IGP será suficiente.

Como referencia vamos a remitirnos a uno de los análisis que hemos realizado en un ordenador portátil. Por ejemplo el del Alienware 14 que publicamos el pasado mes de octubre, y donde realizamos una comparativa con el potencial de su chip gráfico dedicado (NVidia GTX 765M) e integrado (Intel HD Graphics 4600), ambos de gama media.

Los resultados al completo los podéis leer en el artículo de análisis, y aquí nos limitaremos a resumir aquellos datos. Teniendo en cuenta el rendimiento de ambos chips gráficos en videojuegos los resultados muestran una media del 410% más de rendimiento a favor de la NVidia. Con los gráficos integrados Intel la experiencia en esos juegos es paupérrima (en la mayoría de los casos por debajo de los 30 fps, el límite entre buena y mala experiencia), pero el uso del sistema operativo, navegador y aplicaciones básicas es excelente y no difiere en nada de lo que nos encontramos con la gráfica NVidia.

La tendencia de las IGP es seguir evolucionando, ofrecer un rendimiento creciente en cada nueva generación e incluso robarle algo de protagonismo a los gráficos dedicados en los juegos más punteros. Las tarjetas gráficas dedicadas seguirán existiendo, pero quedarán cada vez más relegadas a su uso en videojuegos muy punteros, a aplicaciones de corte profesional y para los que busquen la mejor experiencia existente.

AMD NVidia GPUs

Estas IGP son muy interesantes para el usuario medio, pero traen consigo ciertas ventajas y desventajas. A saber:

  • Ventajas: menor consumo general, menor temperatura de funcionamiento general, potencia creciente y cada vez más representativa, menor espacio físico ocupado.
  • Desventajas: está limitada físicamente (en tamaño disponible en el SoC, calor generado en un chip encapsulado donde se encuentran CPU y GPU), imposibilidad de poder cambiar la IGP (y tener que cambiar el conjunto CPU+GPU al completo).

El futuro de las GPU a nivel doméstico pasa por que los gráficos integrados gocen de mayor protagonismo en cada nueva generación. Sus evoluciones estarán limitadas por cuestiones físicas (espacio, calor generado) y es por ello que

El mercado de las GPU domésticas está en pleno proceso de cambio. Las gráficas dedicadas seguirán existiendo, pero estarán cada vez más limitados al software más exigente y al GPGPU

cada salto generacional en el tamaño del transistor (el proceso de fabricación, actualmente liderado por Intel y sus 22 nanómetros que darán el salto a los 14 nanómetros con Broadwell a lo largo de 2014) será vital, ya que se trata de meter lo mismo en menos espacio (o pensando de forma análoga, meter más en el mismo espacio).

También hay nuevas tecnologías que pretenden revolucionar el mercado de los gráficos domésticos, como por ejemplo hUMA de AMD prevista también para 2014: CPU y la IGP podrán acceder al mismo espacio de memoria para así mejorar el rendimiento del conjunto.

En definitiva, el mercado de los gráficos domésticos está en pleno proceso de cambio. Las IGP pueden parecer una vuelta al pasado (cuando teníamos GPU integradas en el chipset) pero la evolución de la tecnología ha hecho que sean una brillante idea pensada para una gran mayoría de usuarios. Los gráficos dedicados seguirán existiendo pero estarán cada vez más limitados a un uso en videojuegos y aplicaciones profesionales, con especial importancia en su uso como GPGPU esencial en ciertos ámbitos.

En Xataka | Todo sobre las arquitecturas de PC

Comentarios cerrados
Inicio