No solemos asociar la marca Intel con GPUs o chips gráficos, lo cual se debe a que Intel hasta el momento se ha mantenido en el segmento de bajo rendimiento. En el cual se incluyen las GPU integradas dentro del procesador y las de gama de entrada donde no es necesaria una alta potencia. Lo que hace que para muchos no tenga el mismo nivel de interés que las GPU de NVIDIA y AMD, no obstante la arquitectura gráfica de Intel también tiene puntos interesantes, los cuales os vamos a definir a continuación.
Intel siempre ha sido la tercera en discordía en lo que a GPUs se refiere, al fin y al cabo no es su negocio principal y se trata de algo a más a más de lo que hacen que son las CPUs. Aunque en los últimos años han aumentado recursos y tienen en la rampa de salida una serie de GPUs gaming. No obstante su arquitectura tiene una serie de puntos diferenciales respecto a su competencia.
La Execution Unit, la base de las GPU de Intel
Para entender la diferencia en la organización o arquitectura en GPUs Intel respecto al resto hemos de entender que mientras que en una GPU de NVIDIA o AMD la unidad shader es la unidad mínima, en el caso de las de Intel es la Execution Unit. ¿Pero en qué consiste exactamente? Cada Execution Unit es un procesador ideado para el paralelismo a nivel de hilo de ejecución o TLP al completo. Por lo que dispone de una unidad de control, los registros y las unidades de ejecución correspondientes. Las cuales son dos unidades SIMD de 4 ALUs de 32 bits en coma flotante y otras 4 de enteros, las cuales están conmutadas y soportan SIMD sobre registro.
Gracias al SIMD sobre registro, a base de subdividir las ALUs y sus registros asociados, estas puedan trabajar con el doble de operandos por ciclo de reloj por cada subdivisión que hagan en la precisión. Así pues pueden realizar el doble de operaciones en coma flotante de 16 bits que de 32 bits, pero cuatro veces más si estas son de 8 bits. En cuanto a la funcionalidad de la Execution Units, estas se encargan de ejecutar los programas Shader, al fin y al cabo son el equivalente a las unidades SIMD de las GPU de Intel y AMD y por tanto su tarea es la misma.
En los Intel Xe, el equipo de Raja Koduri ha realizado un cambio importante en la unidad de control, ya que ahora dos Execution Units comparten una misma unidad de control. Un cambio que recuerda mucho al que AMD ha realizado en sus arquitecturas RDNA donde dos Compute Unit se agrupan en un solo Workgroup. Algo que no nos debería extrañar por la fuga de talentos de AMD a Intel. Este cambio ha supuesto que la unidad de control ha sido actualizada, lo que supone seguramente un cambio completo en la ISA interna de las GPU de Intel por otra mucho más eficiente.
Sub-Slice, la unidad Shader
El equivalente a unidades shader que tienen las GPU de NVIDIA y AMD ya hemos visto que no es la Execution Units, sino que son los Sub-Slices. Dentro de los mismos se encuentra agrupas las Execution Units. Por que cada Execution Unit es un subconjunto de un subslice y el Slice es el superconjunto del subslice, este último lo veremos más tarde. Cada subslice alberga en su interior 16 Execution Units en su interior, lo cual se traducen en 64 ALU en FP32 y 64 ALUs de enteros en total. Una cifra que hace equivalente en potencia de cálculo en bruta a estas unidades a sus equivalentes en AMD, las Compute Units.
En cuanto al resto de elementos que podemos encontrar dentro del subslice, son los clásicos de una unidad de este tipo, aunque Intel utiliza nomenclatura distinta a lo habitual. Cómo es el caso del llamado 3D Sampler, el cual no deja de ser la clásica unidad de manejo y filtrado de texturas, simplemente Intel le ha dado otro nombre a esta clásica unidad de función fija que se encuentra en todos los procesadores de gráficos en 3D desde sus inicios.
El Media Sampler no obstante es una pieza mucho más interesante al ser única de las GPU de Intel, este se compone de una serie de unidades de función fija, las cuales son las siguientes:
- El Video Motion Engine provee la estimación de movimiento de los píxeles, lo cual es clave para los codificadores de vídeo.
- El Adaptive Video Scalar es una unidad que ejecuta filtros de suavizado de imagen.
- De-Noise/De-Interlace es una unidad encargada de reducir el ruido en una imagen por un lado y por elotro de transformar vídeo en modo entrelazado en modo progresivo.
A partir de los Intel Xe, los Media Sampler han sido retirados de dentro de los subslice y se han convertido en una unidad independiente de todo derecho. Lo cual sigue siendo una pieza diferencial respecto a los diseños de NVIDIA y AMD.
El Slice, otra pieza común en las GPUs
El Slice en la arquitectura de las GPU de Intel es el equivalente al Shader Engine o al GPC en el caso de NVIDIA. Nombres distintos para una organización de unidades entre sí. En su interior se encuentran los subslices y una serie de unidades de función fija, las cuales son comunes con las GPUs del resto de compañías.
Aunque de nuevo la nomenclatura puede ser confusa, por ejemplo en el resto de arquitecturas se suele unificar la unidad de rasterizado y la que genera el búfer de profundidad, ambos elementos ocurren en la fase de rasterizado en una unidad común en el caso de NVIDIA y AMD, pero Intel lo hace de manera separada.
Lo mismo ocurre con el Pixel Dispatch y el Pixel Back-End. Funciones de las unidades ROP que aquí son ejecutadas por dos elementos distintos. Al fin y al cabo la tarea a realizar en ambos casos es la misma.
La jerarquía de cachés de las GPU de Intel
Uno de los puntos diferenciales de la arquitectura común de las GPU de Intel, en comparación con las AMD y NVIDIA, es precisamente cómo está organizada la jerarquía de las cachés. En el caso de AMD nos encontramos que las RX 6000 tienen una jerarquía de cuatro niveles si contamos la recién incorporada Infinity Cache. En el caso de NVIDIA la jerarquía de cachés es distinta a la de Intel y AMD, pero no es sobre la competencia a Intel donde nos queremos fijar en este artículo al no estar dedicado a ellas
El diagrama en esta sección nos indica la comunicación interna dentro de la GPU, tanto a nivel de subslice como del Slice. En el caso de las subslice tenemos la clásica caché de datos y la memoria local compartida. Pero al contrario de lo que ocurre con las GPU de NVIDIA y AMD, Intel tradicionalmente ha añadido una caché L2 adicional a la que tanto el 3D Sampler como el Media Sampler pueden acceder. Lo que convierte a la caché L3 de la GPU en la caché de último nivel del mismo.
La diferenciación entre la caché L1 para datos y por tanto para las Execution Units y la L2 para las texturas ha cambiado en los Intel Xe, donde ambas se han combinado en una sola caché L1 de datos y texturas. Por lo que ahora tienen una configuración totalmente estándar si las comparamos con las GPUs de la competencia.
Otro de los cambios es en cuanto a la caché L3 o de último nivel. Las GPU contemporáneas soportan el llamado Tiled Caching, el cual consiste en que rasterizan por tiles, pero lo hacen sobre la caché de último nivel y existe el peligro que los datos caigan a la memoria donde el coste energético de recuperarlos se dispara, por lo que la han aumentado de los 3 MB a los 16 MB.
Fuente: HardZone