Graphics Core Next (GCN) es el nombre en clave de una serie de microarquitecturas y una arquitectura de conjunto de instrucciones que AMD desarrolló para sus GPU como sucesora de su microarquitectura TeraScale. El primer producto con GCN se lanzó el 9 de enero de 2012.

GCN es una microarquitectura SIMD de conjunto de instrucciones reducido que contrasta con la arquitectura SIMD de palabra de instrucción muy larga de TeraScale. GCN requiere considerablemente más transistores que TeraScale, pero ofrece ventajas para el cálculo de GPU de propósito general (GPGPU) debido a un compilador más simple.

Los chips gráficos GCN se fabricaron con CMOS a 28 nm y con FinFET a 14 nm (por Samsung Electronics y GlobalFoundries) y 7 nm (por TSMC), disponibles en modelos seleccionados en AMD Radeon HD 7000, HD 8000, RX 200, RX 300, RX 400, RX 500 y Vega series de tarjetas gráficas, incluida la Radeon VII lanzada por separado. GCN también se utilizó en la parte gráfica de las unidades de procesamiento acelerado (APUs - Accelerated Processing Units), como las de PlayStation 4 y Xbox One.

Conjunto de instrucciones El conjunto de instrucciones GCN es propiedad de AMD y fue desarrollado específicamente para GPU. No tiene microoperación para la división.

La documentación está disponible para:

Graphics Core Next 1 instruction set Graphics Core Next 2 instruction set Graphics Core Next 3 and 4 instruction sets Graphics Core Next 5 instruction set "Vega" 7nm instruction set architecture (también conocido como Graphics Core Next 5.1).

Un compilador de back-end LLVM está disponible para el conjunto de instrucciones GCN. Es utilizado por Mesa 3D.

GNU Compiler Collection 9 es compatible con GCN 3 y GCN 5 desde 2019 para programas independientes de un solo subproceso, y GCC 10 también se descarga a través de OpenMP y OpenACC.

MIAOW es una implementación RTL de código abierto de la microarquitectura AMD Southern Islands GPGPU.

En noviembre de 2015, AMD anunció su Iniciativa Boltzmann, cuyo objetivo es permitir la migración de aplicaciones basadas en CUDA a un modelo de programación C++ común.

En el evento Super Computing 15, AMD mostró un compilador de cómputo heterogéneo (HCC - Heterogeneous Compute Compiler), un controlador de Linux sin periféricos y una infraestructura de tiempo de ejecución HSA para computación de alto rendimiento de clase de clúster, y una herramienta de interfaz de computación heterogénea para portabilidad (HIP - Heterogeneous-compute Interface for Portability) para portar aplicaciones CUDA al modelo C++ común antes mencionado.

Microarquitecturas A partir de julio de 2017, el conjunto de instrucciones Graphics Core Next ha tenido cinco iteraciones. Las diferencias entre las primeras cuatro generaciones son bastante mínimas, pero la arquitectura GCN de quinta generación presenta procesadores de flujo muy modificados para mejorar el rendimiento y admitir el procesamiento simultáneo de dos números de menor precisión en lugar de un solo número de mayor precisión.

Procesamiento de comandos miniaturadeimagen| Procesamiento de comandos de GCN: cada motor de cómputo asíncrono (ACE - Asynchronous Compute Engines) puede analizar los comandos entrantes y enviar el trabajo a las unidades de cómputo (CUs - Compute Units). Cada ACE puede gestionar hasta 8 colas independientes. Los ACE pueden operar en paralelo con el procesador de comando de gráficos y dos motores DMA. El procesador de comandos de gráficos maneja las colas de gráficos, las ACE manejan las colas de cómputo y los motores DMA manejan las colas de copia. Cada cola puede enviar elementos de trabajo sin esperar a que se completen otras tareas, lo que permite que los flujos de comandos independientes se intercalen en el Shader de la GPU.

Graphics Command Processor El procesador de comandos de gráficos (GCP - Graphics Command Processor) es una unidad funcional de la microarquitectura GCN. Entre otras tareas, se encarga del manejo de shaders asíncronos.

Asynchronous Compute Engine El motor de cómputo asíncrono (ACE - Asynchronous Compute Engine) es un bloque funcional distinto que sirve para fines informáticos, cuyo propósito es similar al del procesador de comandos de gráficos. 

Planificadores Desde la tercera iteración de GCN, el hardware contiene dos planificadores: uno para programar "wavefronts" durante la ejecución del sombreador (Cu Scheduler o Compute Unit Scheduler) y el otro para programar la ejecución de dibujar y calcular colas. Este último ayuda al rendimiento mediante la ejecución de operaciones de cómputo cuando las unidades de cómputo (CUs - Compute Units) están infrautilizadas debido a los comandos de gráficos limitados por la velocidad o el ancho de banda de la canalización de funciones fijas. Esta funcionalidad se conoce como Async Compute.

Para un sombreador determinado, los controladores de la GPU también pueden programar instrucciones en la CPU para minimizar la latencia.

Procesador geométrico miniaturadeimagen| Procesador de geometría El procesador de geometría contiene un Ensamblador de geometría, un Teselador y un Ensamblador de vértices.

El Teselador es capaz de hacer teselado en hardware según lo definido por Direct3D 11 y OpenGL 4.5 (consulte AMD el 21 de enero de 2017), y sucedió a ATI TruForm y al teselado de hardware en TeraScale como el núcleo de propiedad intelectual de semiconductores más reciente de AMD.

Unidades de cómputo Una unidad de cómputo (CU - compute unit) combina 64 procesadores de sombreado con 4 unidades de mapeo de textura (TMUs - texture mapping units). Las unidades de cómputo están separadas de las unidades de salida de procesamiento (ROP), pero se alimentan de ellas. Cada unidad de cálculo consta de lo siguiente:

Un planificador de CU Una sucursal y unidad de mensajes 4 unidades vectoriales SIMD de 16 carriles de ancho (SIMD-VU) 4 archivos de registro de uso general vectorial (VGPR) de 64 KiB 1 unidad escalar (SU - Scalar Unit) Un archivo GPR de 4 KiB Un recurso compartido de datos locales de 64 KiB 4 unidades de filtro de textura 16 unidades de carga/almacenamiento de textura Una caché de nivel 1 (L1) de 16 KiB

Cuatro unidades informáticas están conectadas para compartir un caché de instrucciones L1 de 16 KiB y un caché de datos L1 de 32 KiB, ambos de solo lectura. Una SIMD-VU opera con 16 elementos a la vez (por ciclo), mientras que una SU puede operar con uno a la vez (uno/ciclo). Además, la SU maneja algunas otras operaciones, como la ramificación.

Cada SIMD-VU tiene una memoria privada donde almacena sus registros. Hay dos tipos de registros: registros escalares (S0, S1, etc.), que contienen un número de 4 bytes cada uno, y registros vectoriales (V0, V1, etc.), cada uno de los cuales representa un conjunto de 64 números de 4 bytes. En los registros vectoriales, cada operación se realiza en paralelo en los 64 números. que corresponden a 64 entradas. Por ejemplo, puede funcionar en 64 píxeles diferentes a la vez (para cada uno de ellos, las entradas son ligeramente diferentes y, por lo tanto, obtienes un color ligeramente diferente al final).

Cada SIMD-VU tiene espacio para 512 registros escalares y 256 registros vectoriales.

Planificador de CU El planificador CU es el bloque funcional del hardware, que elige qué frentes de onda ejecuta la SIMD-VU. Selecciona una SIMD-VU por ciclo para la programación. Esto no debe confundirse con otros programadores de hardware o software.

Wavefront Un shader es un pequeño programa escrito en GLSL que realiza el procesamiento de gráficos, y un kernel es un pequeño programa escrito en OpenCL que realiza el procesamiento GPGPU. Estos procesos no necesitan tantos registros, pero sí necesitan cargar datos del sistema o de la memoria gráfica. Esta operación viene con una latencia significativa. AMD y Nvidia eligieron enfoques similares para ocultar esta latencia inevitable: la agrupación de múltiples hilos. AMD llama a ese grupo un "wavefront", mientras que Nvidia lo llama un "warp". Un grupo de subprocesos es la unidad más básica de programación de GPU que implementan este enfoque para ocultar la latencia. Es el tamaño mínimo de los datos procesados en modo SIMD, la unidad de código ejecutable más pequeña y la forma de procesar una sola instrucción en todos los subprocesos al mismo tiempo.

En todas las GPU GCN, un "wavefront" consta de 64 subprocesos, y en todas las GPU Nvidia, un "warp" consta de 32 subprocesos.

La solución de AMD es atribuir múltiples frentes de onda a cada SIMD-VU. El hardware distribuye los registros a los diferentes frentes de onda, y cuando un frente de onda está esperando algún resultado, que se encuentra en la memoria, el CU Scheduler asigna a la SIMD-VU otro frente de onda. Los frentes de onda se atribuyen por SIMD-VU. Las SIMD-VU no intercambian frentes de onda. Se puede atribuir un máximo de 10 frentes de onda por SIMD-VU (por lo tanto, 40 por CU).

AMD CodeXL muestra tablas con la relación entre el número de SGPR y VGPR con el número de frentes de onda, pero esencialmente, para SGPRS es entre 104 y 512 por número de frentes de onda, y para VGPRS es 256 por número de frentes de onda.

Tenga en cuenta que, junto con las instrucciones SSE, este concepto del nivel más básico de paralelismo a menudo se denomina "ancho de vector". El ancho del vector se caracteriza por el número total de bits que contiene.

Unidad vectorial SIMD Cada Unidad Vectorial SIMD tiene:

Una unidad aritmética lógica (ALU - Arithmetic Logic Unit) de vector de punto flotante y entero de 16 carriles Archivo de registro de uso general vectorial (VGPR) de 64 KiB Un contador de programa de 48 bits Búfer de instrucciones para 10 frentes de onda (cada frente de onda es un grupo de 64 subprocesos, o el tamaño de un VGPR lógico) Un frente de onda de 64 hilos emite a una unidad SIMD de 16 carriles durante cuatro ciclos

Cada SIMD-VU tiene 10 búferes de instrucciones de frente de onda y se necesitan 4 ciclos para ejecutar un frente de onda.

Bloques de aceleración de audio y video Muchas implementaciones de GCN suelen ir acompañadas de varios de los otros bloques ASIC de AMD. Incluyendo, entre otros, el decodificador de video unificado, el motor de codificación de video y AMD TrueAudio.

Motor de codificación de video El motor de codificación de video es un ASIC de codificación de video, introducido por primera vez con la serie Radeon HD 7000.

La versión inicial de VCE agregó soporte para codificar cuadros I y P H.264 en el formato de píxel YUV420, junto con codificación temporal SVE y modo de codificación de pantalla, mientras que la segunda versión agregó soporte de cuadro B para cuadros I YUV420 y YUV444.

VCE 3.0 formó parte de la tercera generación de GCN, agregando escalado de video de alta calidad y el códec HEVC (H.265).

VCE 4.0 era parte de la arquitectura Vega y posteriormente fue reemplazado por Video Core Next.

Memoria virtual unificada En una vista previa en 2011, AnandTech escribió sobre la memoria virtual unificada, compatible con Graphics Core Next.

Heterogeneous System Architecture (HSA) miniaturadeimagen| GCN incluye bloques de funciones de propósito especial para ser utilizados por HSA. El soporte para estos bloques de funciones está disponible a través de desde el kernel de Linux 3.19.