Guía Hardware

Arquitecturas de GPU: AMD vs NVIDIA vs Intel

Actualizado a: 22 de enero de 2024

Como bien sabes, las arquitecturas de GPU de AMD, NVIDIA e Intel no son iguales, de hecho, cada una de estas compañías ha diseñado unidades muy diferentes entre sí. Pueden tener algunas semejanzas, y todas hacen la misma función, pero la forma en la que se han implementado es diferente.

En este artículo vamos a ver cuáles son esas diferencias arquitectónicas entre las GPUs más importantes del mercado actual y comparar cuál es la solución que ha dado los mejores resultados. Para ello, voy a utilizar la arquitectura Intel Xe de las tarjetas gráficas Intel Arc como base para ir comparando diferencias en las distintas partes con sus competidores de AMD y NVIDIA.

¿Qué es una GPU?

GPGPU

Una GPU (Graphics Processing Unit) es un tipo de procesador especializado en el procesamiento de gráficos, visualización y cómputo de alto rendimiento. Es un componente importante en muchos dispositivos electrónicos, desde ordenadores de escritorio hasta teléfonos móviles, y se utiliza en una variedad de aplicaciones, desde juegos y entretenimiento hasta inteligencia artificial y ciencias médicas.

A diferencia de una CPU (Central Processing Unit), que está diseñada para manejar una amplia gama de tareas generales, la GPU está específicamente diseñada para realizar cálculos intensivos en paralelo, como los necesarios para renderizar gráficos en 3D y aplicaciones de inteligencia artificial. Las GPU contienen muchos núcleos pequeños y altamente especializados que pueden procesar múltiples tareas en paralelo, lo que les permite realizar operaciones muy rápidas y eficientes en grandes conjuntos de datos.

No obstante, como ya sabrás, la GPU también se puede usar para propósito general como un acelerador, como en las GPGPU.

Las GPU modernas también incluyen una gran cantidad de memoria RAM dedicada a la GPU (VRAM o Video RAM), lo que les permite procesar grandes cantidades de datos de manera eficiente. Además, algunas GPU cuentan con características especializadas, como núcleos tensoriales dedicados, que permiten el procesamiento de aprendizaje profundo y la inteligencia artificial.

Algunas GPUs, como las integradas o iGPUs, comparten memoria con la CPU, por lo que tienen una unificada, usando una porción de la memoria RAM principal.

En general, las GPU han evolucionado para convertirse en una herramienta esencial para el procesamiento de gráficos y la aceleración en cargas de trabajo de HPC en una variedad de aplicaciones científicas, de IA, etc.

Además, me gustaría decir que no hay que confundir una GPU con un acelerador gráfico. Un acelerador gráfico es cualquier dispositivo que ayude a renderizar gráficos, ya sea implementado mediante software o hardware. Puede ser una tarjeta gráfica dedicada o un código ejecutado por la CPU. Por otro lado, la GPU es un tipo específico de acelerador gráfico que se especializa en procesamiento de gráficos y cuyo diseño está optimizado para ejecutar cálculos matemáticos intensivos y procesamiento de datos masivo necesarios para la generación de gráficos en 3D, el aprendizaje profundo, la minería de criptomonedas y otras aplicaciones que requieren un alto rendimiento.

En definitiva, todas las GPU son aceleradores gráficos, pero no todos los aceleradores gráficos son GPU.

Arquitectura de GPU

GPU chip

La arquitectura de una GPU se refiere a su diseño interno y a cómo se organiza el hardware para realizar operaciones de procesamiento gráfico de alta velocidad. La arquitectura de una GPU puede variar significativamente según el fabricante y el modelo, pero generalmente incluye múltiples núcleos de procesamiento, memoria dedicada y unidades de procesamiento de geometría, texturas y píxeles.

La arquitectura de una GPU también puede incluir tecnologías especializadas, como la memoria caché de texturas, que almacena y recupera datos de texturas comúnmente utilizados para acelerar los procesos de renderizado, o las unidades de sombreado programables, que permiten a los desarrolladores de software crear efectos gráficos personalizados.

En arquitecturas de GPU modernas a menudo se construyen en torno a una jerarquía de memoria, con diferentes tipos de memoria con diferentes velocidades y tamaños de almacenamiento. Por ejemplo, una GPU puede tener una pequeña cantidad de memoria caché de alta velocidad integrada en cada núcleo de procesamiento, junto con una memoria de acceso aleatorio (RAM) de mayor capacidad y menor velocidad para almacenar datos más grandes.

Gracias a la arquitectura de GPU o microarquitectura de GPU, como lo quieras llamar, se puede conseguir un mayor rendimiento y más funciones para enriquecer las posibilidades.

Además, tampoco me gustaría terminar el apartado sin hablar de la ISA que, aunque suelan ser opacas y no publicadas por parte de los diseñadores de GPUs, también están presentes al igual que en una CPU. La ISA (Instruction Set Architecture) de una GPU es un conjunto de instrucciones que se utilizan para programar la GPU y que especifican las operaciones que puede realizar la GPU, así como la forma en que se comunican los datos y los registros de la GPU. En principio, esta ISA de una GPU no es importante para los desarrolladores de software que desean crear aplicaciones que utilicen la GPU, ya que las APIs gráficas y los drivers gráficos realizan el trabajo para permitir una mayor abstracción y facilidad a los programadores.

Por supuesto, la ISA de una GPU puede ser propietaria, es decir, desarrollada por el fabricante de la GPU, o abierta, lo que significa que está disponible públicamente para su uso por parte de la comunidad de desarrolladores. Otras pueden ser abiertas.

En muchos sentidos, una GPU no es más que una CPU especial dedicada a los gráficos. De hecho, en el pasado, la CPU era la encargada de procesar los gráficos. Pero debido a la carga y a la evolución de los gráficos 3D, fue necesario agregar una unidad dedicada para aliviar la carga de la CPU.

Y, si te preguntas por las diferencias entre una arquitectura de CPU y GPU, además de por las semejanzas que puedan tener ambos chips, veamos algunas de las más importantes:

Diferencias:

  • Propósito: las CPUs se utilizan generalmente para procesamiento general, como la ejecución de programas y el procesamiento de datos, mientras que las GPUs se utilizan específicamente para acelerar el procesamiento gráfico, como el renderizado de gráficos 3D, la decodificación de video y la minería de criptomonedas. No obstante, como ya he dicho, se puede usar para uso genérico como una GPGPU con los drivers adecuados y usando APIs como CUDA o como OpenCL.
  • Estructura: las CPUs tienen un número limitado de núcleos que procesan instrucciones secuencialmente, mientras que las GPUs tienen miles de núcleos que pueden procesar múltiples instrucciones en paralelo. Además, las GPUs suelen tener más caché y una mayor capacidad de almacenamiento de memoria que las CPUs.
  • ISA: las CPUs y las GPUs utilizan diferentes conjuntos de instrucciones. Las CPUs utilizan una ISA (Arquitectura de Conjunto de Instrucciones) más compleja y generalizada, mientras que las GPUs utilizan una ISA más simplificada y optimizada para el procesamiento de gráficos. Y, como he mencionado anteriormente, no es necesario que el software o los desarrolladores modifiquen el código para que sea compatible salvo en algunos casos para dar soporte a tecnologías específicas. Pero un videojuego de hace 10 años funciona perfectamente en una GPU actual sin modificar nada. Y esto es debido a que la ISA no importa al tener otras capas intermedias que hacen de «traductor», como la API gráfica.
  • Velocidad de reloj: las CPUs suelen tener velocidades de reloj más altas que las GPUs, pero las GPUs pueden procesar una mayor cantidad de datos en paralelo.

Semejanzas:

  • Arquitectura de memoria: ambas unidades de procesamiento utilizan una jerarquía de memoria para acceder a los datos e instrucciones muy similar, que incluye caché de varios niveles, y memoria principal RAM o VRAM.
  • Procesamiento vectorial: pueden procesar datos en paralelo mediante el uso de instrucciones vectoriales, que realizan operaciones matemáticas en conjuntos de datos en lugar de uno por uno. Esto lo hace de forma nativa la ISA de la GPU, y la CPU lo consigue gracias a FPUs especiales de tipo SIMD con extensiones de instrucciones.
  • Unidades funcionales: algunas unidades funcionales son parecidas, como la ALU o FPU que tienen ambas unidades de procesamiento, aunque no sean exáctamente iguales. Igual ocurre con otras partes, ya que las dos se parecen en la forma de trabajar, recibiendo datos e instrucciones en la memoria para irlas procesando y obtener un resultado. En el caso de la CPU es la ejecución de un software y en el caso de la GPU es la creación de una señal de vídeo para mostrarla en un monitor.

Por cierto, por si no lo sabías, cuando existe una iGPU/APU y una dGPU, si no existe un MUX Switch o similar, la imagen tendrá que pasar por la iGPU necesariamente, que es la que está conectada directamente a la salida que va hacia el monitor. Además, cuando estás usando una dGPU para GPGPU, puedes usar una iGPU si existe para que se dedique a los gráficos y así usar todo el potencial de la dGPU para propósito general.

Partes de la arquitectura de GPUs y las diferencias entre Intel, AMD y NVIDIA

Una vez sabido esto, vamos a ver las diferencias que hay entre las diferentes GPUs que tenemos en la actualidad, como las de Intel, NVIDIA y AMD, aunque existan otras más, pero nos centraremos en estas:

En cuanto a la división gráfica de Intel, han surgido rumores tras la salida de Raja hacia Tenstorrent y la cancelación de algunos proyectos para HPC. Sin embargo, parece que las Intel Arc para el sector del consumo siguen adelante. Aunque Raja era clave para el avance de Intel en este terreno, queda por ver qué sucederá a continuación, como si Intel fichará a más arquitectos de AMD o NVIDIA, o si abandonarán el proyecto Intel Arc.

Execution Unit de la GPU Intel

Intel Arc arquitectura de GPU

Como ya sabrás, NVIDIA y AMD utilizan términos diferentes para denominar sus unidades de procesamiento en las GPU: NVIDIA emplea SM o Streaming Multiprocessors, mientras que AMD utiliza CU o Compute Unit. En el caso de Intel, la unidad de procesamiento puede aparecer como Execution Unit o EU en algunas arquitecturas, o como Vector Engine.

Para entender las diferencias en la arquitectura de la GPU de Intel en comparación con sus competidores, debemos comenzar por las unidades de ejecución, que son las unidades básicas de sombreado o shader. Estas unidades están diseñadas como pequeños procesadores o unidades FPU vectoriales para agregar paralelismo a nivel de hilo o thread (TLP).

Estas unidades de ejecución en la arquitectura de Intel se parecen más a un núcleo de CPU que a una simple unidad FPU, ya que incluyen algunos componentes adicionales, como una unidad de control propia, registros propios y unidades de ejecución correspondientes. En la arquitectura de Intel, cada unidad de ejecución incluye 4 FPUs de 32 bits para cálculo de coma flotante de precisión simple, y otras 4 ALUs para enteros conmutadas que admiten SIMD sobre registro.

Al operar sobre registros, es posible trabajar con el doble de operandos por ciclo de reloj, lo que significa que se pueden ejecutar programas Shader con mayor eficiencia. Por ejemplo, se puede trabajar con FP32, así como con dos FP16 o cuatro FP8 a la vez por ciclo.

RDNA 2 ARQUITECTURA DE GPU

Se puede observar la influencia de Raja Koduri en la arquitectura de Intel Xe. Koduri, quien anteriormente trabajó en la división de gráficos de AMD, ha aplicado una filosofía similar en las Execution Units de Intel. Estas unidades son duales, lo que significa que cada dos unidades comparten una unidad de control. Esto es muy similar a lo que se ve en la arquitectura RDNA de AMD, como se puede ver en la imagen anterior, donde se habla de la Dual Compute Unit.

Por otro lado, las CUDA cores de NVIDIA son mucho más simples que las EU y CU de Intel y AMD, pero la compañía incluye más de estas unidades. Las CUDA cores de NVIDIA son básicamente unidades de sombreado que procesan enteros y coma flotante de 32 bits como la que puedes ver en la siguiente imagen:

NVIDIA Arquitectura de GPU

Sub-Slice en la Intel GPU

Media Engine 4

En la sección anterior, vimos cómo las Unidades de Ejecución de la GPU Intel Xe están encargadas del procesamiento del sombreado o shader, y que están agrupadas en Sub-Slices. Cada EU es un subconjunto de un subsegmento, y el Sub-Slice es el conjunto más grande. Pero no te preocupes, esto quedará más claro más adelante.

Según Intel, un subsegmento está compuesto por 16 EUs, lo que se traduce en 64 FPUs para FP32 y 64 ALUs para enteros de 32 bits en total. Esto hace que los subsegmentos sean similares en cuanto a potencia bruta a las Compute Units de AMD. Sin embargo, no son exactamente iguales, y la ISA (arquitectura de conjunto de instrucciones) que manejan las GPUs de Intel no es la misma que la de las Radeon.

Dentro del Sub-Slice, que es la unidad básica de sombreado, se encuentran las partes que normalmente existen en las GPUs, aunque Intel utiliza una nomenclatura diferente a la de sus competidores. Estos incluyen:

  • 3D Sampler: esta primera unidad es para la manipulación y filtrado de texturas clásica que se ha empleado desde que aparecieron los primeros aceleradores 3D.
  • Media Sampler: es una unidad exclusiva para la GPU de Intel, compuesta a su vez por unidades de cálculo de función fija que son:
    • Video Motion Engine: se encarga de proporcionar una estimación del movimiento de los píxeles, calve para la codificación de vídeo.
    • Adaptive Video Scalar: el objetivo en este caso es procesar filtros para suavizar las imágenes.
    • De-Noise/De-Interlace: se centra en reducir el ruido de una imagen y de transformar el vídeo de modo entrelazado a modo progresivo.

En la arquitectura de GPU Intel Xe, el motor Media Sampler, como se puede apreciar en las imágenes que he integrado, se ha retirado del subsegmento y se ha convertido en una unidad independiente. Mientras que en los diseños de arquitecturas de GPU de AMD y NVIDIA se integra en un diseño totalmente diferente.

Slice

En las imágenes de arriba, podemos observar que NVIDIA agrupa muchos de sus núcleos CUDA en un SM, y varios SM en un GPC, que significa Clusters de Procesamiento Gráfico o en inglés Graphic Processing Clusters.

Por otro lado, AMD utiliza el término Motor de Sombreado o Shader Engine para agrupar varias CU.

En la GPU Xe de Intel, sin embargo, se emplea el término «Slice» para hacer referencia a la agrupación de núcleos. En su interior, encontramos subslices y otras unidades de función fija, similares a las de NVIDIA y AMD.

No obstante, la diferencia no se limita a la nomenclatura, ya que NVIDIA y AMD combinan la unidad raster y la que genera el buffer de profundidad en una sola fase, mientras que Intel las separa. Asimismo, en las arquitecturas de NVIDIA y AMD, el Pixel Dispatch y Pixel Back-End se encuentran en las unidades ROP, pero en la GPU de Intel se dividen en dos elementos distintos, aunque con la misma función.

La jerarquía de la caché

jerarquia GPU

Para concluir, es importante mencionar la jerarquía de la memoria caché en la GPU de Intel, la cual es significativamente diferente de la de NVIDIA y AMD. AMD ha introducido su Infinity Cache en la RDNA 2 para las Radeon RX 6000 Series, mientras que NVIDIA tiene su propia filosofía en sus GeForce RTX. En el caso de AMD, se utilizan tres niveles de caché (L0, L1 y L2), mientras que NVIDIA tiene una L1 para cada núcleo y una L2 compartida. En cambio, Intel utiliza una caché de datos L1 y una memoria local compartida en su GPU, junto con una caché L2 adicional que puede ser accedida por un 3D Sampler o un Media Sampler. Esto hace que la caché L3 sea la caché de nivel superior para la GPU de Intel.

Además, Intel mantiene una configuración estándar en cuanto a la caché L1 para datos y la L2 para texturas, algo que no era así en las arquitecturas de GPU anteriores. La LLC también presenta cambios respecto a las anteriores arquitecturas de Intel, ya que las GPUs actuales utilizan la técnica Tiled Caching en el último nivel de la caché, lo que ha llevado a Intel a ampliar significativamente la caché de nivel 3 o L3.

Otras diferencias

GPU

Claro está que existen algunas pequeñas diferencias entre las GPUs de Intel, AMD y NVIDIA, como por ejemplo el proceso de fabricación del chip, el número de transistores, la PCB, TDP y el ancho de banda del bus, entre otros. Pero en términos generales, las similitudes entre ellas son muchas.

A nivel externo, se puede notar que las tarjetas gráficas de Intel no incluyen AIBs como las de sus competidores, ya que ellos mismos proporcionan una PCB de referencia. En cuanto a la memoria VRAM integrada en estas tarjetas, no hay muchas diferencias con las de AMD, ya que ambas utilizan GDDR6, mientras que NVIDIA ha desarrollado su propia versión mejorada llamada GDDR6X para sus GPUs de PC.

Los componentes de la PCB también son similares, incluyendo la GPU, los chips de VRAM y el BIOS gráfico. Además, los puertos y la interfaz de conexión a la placa base también son estándares, siendo PCIe la interfaz común.

Por supuesto, el software tampoco es igual en los tres casos, ya que los drivers son diferentes y el software que los acompaña también. No obstante, las APIs gráficas soportadas sí que suelen ser las mismas en los tres casos, con OpenGL, DirectX 3D y Vulkan, que funcionan con las tres.

Ahora ya conoces las diferencias más elementales entre las diferentes arquitecturas de GPU de la competencia, espero que te haya ayudado, comenta si tienes dudas…

Jaime Herrera

Jaime Herrera

Técnico electrónico y experto en el sector de los semiconductores y el hardware. Con una amplia y sólida trayectoria en el campo de la electrónica, he acumulado una extensa experiencia. Mi pasión por la tecnología y la informática me ha impulsado a dedicar décadas de mi vida al estudio y desarrollo de soluciones en este fascinante sector. Como técnico electrónico, he tenido el privilegio de trabajar en una variedad de proyectos y desafíos, lo que me ha permitido adquirir un profundo conocimiento y experiencia en la creación, diseño y mantenimiento de dispositivos electrónicos.

>
Guía Hardware
Logo