Núcleo de gráficos siguiente - Graphics Core Next
Graphics Core Next ( GCN ) es el nombre en clave tanto para una serie de microarquitecturas como para una arquitectura de conjunto de instrucciones que fue desarrollada por AMD para sus GPU como sucesora de su conjunto de microarquitectura / instrucción TeraScale . El primer producto con GCN se lanzó el 9 de enero de 2012.
GCN es una microarquitectura RISC SIMD (o más bien SIMT ) que contrasta con la arquitectura VLIW SIMD de TeraScale. GCN requiere considerablemente más transistores que TeraScale, pero ofrece ventajas para el cálculo GPGPU . Hace que el compilador sea más simple y también debería conducir a un mejor uso.
Los chips gráficos GCN están fabricados 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 Radeon HD 7000 , HD 8000 , 200 , 300 , 400 , 500 y Vega de tarjetas gráficas AMD Radeon, incluida la Radeon VII lanzada por separado. GCN también se utiliza en la parte de gráficos de las unidades de procesamiento acelerado (APU) de AMD , como en las APU de PlayStation 4 y Xbox One .
Conjunto de instrucciones
El conjunto de instrucciones GCN es propiedad de AMD (que también posee el conjunto de instrucciones X86-64 ). El conjunto de instrucciones GCN se ha desarrollado específicamente para GPU (y GPGPU) y, por ejemplo, no tiene microoperación para la división .
La documentación está disponible para:
- el conjunto de instrucciones Graphics Core Next 1
- el conjunto de instrucciones Graphics Core Next 2
- el conjunto de instrucciones Graphics Core Next 3
- Graphics Core Next 4: la documentación para el conjunto de instrucciones GCN 4 es la misma que para la tercera generación.
- el conjunto de instrucciones Graphics Core Next 5 (también conocido como Vega )
Un generador de código LLVM (un compilador back-end) está disponible para el conjunto de instrucciones GCN. Es utilizado por Mesa 3D .
La colección de compiladores de GNU (GCC) apoya GCN 3 (Fiji, Carrizo) y GCN 5 (Vega) desde 2019 (GCC 9) para, programas independientes de un único subproceso y con GCC 10 también la descarga a través de OpenMP y OpenACC .
MIAOW es una implementación RTL de código abierto del conjunto de instrucciones AMD Southern Islands GPGPU (también conocido como Graphics Core Next).
En noviembre de 2015, AMD anunció la "Iniciativa Boltzmann". La Iniciativa AMD Boltzmann permitirá la migración de aplicaciones basadas en CUDA a un modelo de programación C ++ común .
En el "Super Computing 15", AMD mostró su compilador de cómputo heterogéneo (HCC), un controlador de Linux sin cabeza y una infraestructura de tiempo de ejecución de HSA para computación de alto rendimiento (HPC) de clase de clúster y la herramienta de interfaz de cómputo heterogéneo para portabilidad (HIP) para la portabilidad Aplicaciones basadas en CUDA a un modelo de programación C ++ común.
Microarquitecturas
En julio de 2017, la familia de microarquitecturas que implementan el conjunto de instrucciones idénticamente llamado "Graphics Core Next" ha experimentado cinco iteraciones. Las diferencias en el conjunto de instrucciones son bastante mínimas y no se diferencian demasiado entre sí. Una excepción es la arquitectura GCN de quinta generación, que modificó en gran medida los procesadores de flujo para mejorar el rendimiento y admitir el procesamiento simultáneo de dos números de menor precisión en lugar de un único número de mayor precisión.
Procesamiento de comandos
Procesador de comandos de gráficos
El "Procesador de comandos de gráficos" (GCP) es una unidad funcional de la microarquitectura GCN. Entre otras tareas, es responsable de Asynchronous Shaders. El breve video AMD Asynchronous Shaders visualiza las diferencias entre "multiproceso", " preferencia " y "Asynchronous Shaders".
Compute Engine asincrónico
Asynchronous Compute Engine (ACE) es un bloque funcional distinto que sirve para fines informáticos. Su propósito es similar al del procesador de comandos de gráficos.
Programador
Desde la tercera iteración de GCN, el hardware contiene dos programadores: uno para programar frentes de onda durante la ejecución del sombreador (CU Scheduler, ver más abajo) y uno nuevo para programar la ejecución de colas de cálculo y dibujo. Este último ayuda al rendimiento mediante la ejecución de operaciones de cómputo cuando las CU están infrautilizadas debido a los comandos de gráficos limitados por la velocidad de la canalización de funciones fijas o el ancho de banda limitado. Esta funcionalidad se conoce como Async Compute.
Para un sombreador determinado, los controladores de la GPU también deben seleccionar un buen orden de instrucciones para minimizar la latencia. Esto se hace en la CPU y, a veces, se denomina "Programación".
Procesador geométrico
El procesador de geometría contiene Geometry Assembler, Tesselator y Vertex Assembler.
El Tesselator GCN del procesador Geometry es capaz de realizar teselados en hardware según lo definido por Direct3D 11 y OpenGL 4.5 (consulte AMD el 21 de enero de 2017).
El GCN Tesselator es el bloque SIP más actual de AMD, las unidades anteriores eran ATI TruForm y teselación de hardware en TeraScale .
Calcular unidades
Una unidad de cálculo combina 64 procesadores de sombreado con 4 TMU . La unidad de cálculo es independiente de las unidades de salida de procesamiento (ROP) , pero se alimentan de ellas. Cada unidad de cómputo consta de un programador CU, una unidad de rama y mensajes, 4 unidades vectoriales SIMD (cada una de 16 carriles de ancho), 4 archivos VGPR de 64 KB, 1 unidad escalar, 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 obtención de textura y una caché de 16 KiB L1. Cuatro unidades de cómputo están conectadas para compartir una caché de instrucciones L1 de 16 KB y una caché de datos L1 de 32 KB, ambas de solo lectura. Un SIMD-VU opera en 16 elementos a la vez (por ciclo), mientras que un SU puede operar en 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.), que representan un conjunto de 64 números de 4 bytes cada uno. Cuando opera en los registros vectoriales, cada operación se realiza en paralelo en los 64 números. Cada vez que trabajas con ellos, en realidad trabajas con 64 entradas. Por ejemplo, trabaja en 64 píxeles diferentes a la vez (para cada uno de ellos, las entradas son ligeramente diferentes y, por lo tanto, obtiene un color ligeramente diferente al final).
Cada SIMD-VU tiene espacio para 512 registros escalares y 256 registros vectoriales.
Programador de CU
El programador CU es el bloque funcional de hardware que elige para el SIMD-VU qué frentes de onda ejecutar. Selecciona una SIMD-VU por ciclo para programar. Esto no debe confundirse con otros programadores, en hardware o software.
- Frente de onda
- Un ' sombreador ' 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 y que realiza el procesamiento GPGPU. Estos procesos no necesitan tantos registros, 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 subprocesos . AMD llama a este grupo un frente de onda, Nvidia lo llama warp. Un grupo de subprocesos es la unidad más básica de programación de las GPU que implementan este enfoque para ocultar la latencia, es el tamaño mínimo de los datos procesados en forma SIMD, la unidad de código ejecutable más pequeña, la forma de procesar una sola instrucción en todos los subprocesos en él al mismo tiempo.
En todas las GCN-GPU, un "frente de onda" consta de 64 subprocesos, y en todas las GPU de 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 decide hacer que el SIMD-VU funcione en otro frente de onda. Los frentes de onda se atribuyen por SIMD-VU. Las SIMD-VU no intercambian frentes de onda. Se pueden 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 básicamente para SGPRS es mínimo (104, 512 / numwavefronts) y VGPRS 256 / numwavefronts.
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 Vector SIMD tiene:
- una Unidad Aritmética Lógica (ALU) vectorial de punto flotante y entero de 16 carriles
- Archivo de registro de propósito general de vector de 64 KiB (VGPR)
- Un contador de programa de 48 bits
- Búfer de instrucciones para 10 frentes de onda
- Un frente de onda es un grupo de 64 subprocesos: 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úfer 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
TrueAudio
Memoria virtual unificada
En una vista previa en 2011, AnandTech escribió sobre la memoria virtual unificada, compatible con Graphics Core Next.
Arquitectura de computadora de escritorio clásica con una tarjeta gráfica distinta a través de PCI Express . La CPU y la GPU tienen su memoria física distinta, con diferentes espacios de direcciones. Es necesario copiar todos los datos a través del bus PCIe. Nota: el diagrama muestra los anchos de banda, pero no la latencia de la memoria .
GCN admite "memoria virtual unificada", por lo que permite la copia cero , en lugar de los datos, solo se copian, "pasan" los punteros . Esta es una característica primordial de la HSA .
Las soluciones gráficas integradas (y las APU AMD con gráficos TeraScale ) sufren bajo la memoria principal particionada : una parte de la memoria del sistema se asigna exclusivamente a la GPU. La copia cero no es posible, los datos deben copiarse (a través del bus de memoria del sistema) de una partición a la otra.
Las APU AMD con gráficos GCN se benefician de la memoria principal unificada que conserva el escaso ancho de banda.
Arquitectura de sistema heterogéneo (HSA)
Algunas de las características específicas de HSA implementadas en el hardware necesitan soporte del kernel del sistema operativo (sus subsistemas) y / o de controladores de dispositivos específicos. Por ejemplo, en julio de 2014, AMD publicó un conjunto de 83 parches que se fusionarán en la línea principal del kernel de Linux 3.17 para admitir sus tarjetas gráficas Radeon basadas en Graphics Core Next . El controlador especial titulado "controlador del kernel HSA" reside en el directorio / drivers / gpu / hsa mientras que los controladores de dispositivos gráficos DRM residen en / drivers / gpu / drm y aumenta el controlador DRM ya existente para las tarjetas Radeon. Esta primera implementación se centra en una sola APU "Kaveri" y funciona junto con el controlador de gráficos del kernel de Radeon (kgd) existente.
Compresión de color Delta sin pérdida
Programadores de hardware
Se utilizan para realizar la programación y descargar la asignación de colas de cómputo a las ACE del controlador al hardware almacenando estas colas en búfer hasta que haya al menos una cola vacía en al menos una ACE, lo que hace que el HWS asigne inmediatamente colas en búfer a las ACE. hasta que todas las colas estén llenas o no haya más colas para asignar de forma segura. Parte del trabajo de programación realizado incluye colas priorizadas que permiten que las tareas críticas se ejecuten con una prioridad más alta que otras tareas sin requerir que las tareas de menor prioridad sean adelantadas para ejecutar la tarea de alta prioridad, lo que permite que las tareas se ejecuten simultáneamente con las tareas de alta prioridad. programado para acaparar la GPU tanto como sea posible mientras deja que otras tareas usen los recursos que las tareas de alta prioridad no están usando. Se trata esencialmente de motores informáticos asíncronos que carecen de controladores de despacho. Se introdujeron por primera vez en la microarquitectura GCN de cuarta generación, pero estuvieron presentes en la microarquitectura GCN de tercera generación con fines de prueba interna. Una actualización del controlador ha habilitado los programadores de hardware en partes GCN de tercera generación para uso en producción.
Acelerador de descarte primitivo
Esta unidad descarta los triángulos degenerados antes de que entren en el sombreador de vértices y los triángulos que no cubren ningún fragmento antes de que entren en el sombreador de fragmentos. Esta unidad se introdujo con la microarquitectura GCN de cuarta generación.
Generaciones
Núcleo de gráficos Next 1
Fecha de lanzamiento | Enero de 2012 |
---|---|
Historia | |
Predecesor | TeraScale 3 |
Sucesor | Núcleo de gráficos Next 2 |
La microarquitectura GCN 1 se utilizó en varias tarjetas gráficas de la serie Radeon HD 7000 .
- soporte para direccionamiento de 64 bits ( espacio de direcciones x86-64 ) con espacio de direcciones unificado para CPU y GPU
- soporte para PCI-E 3.0
- La GPU envía solicitudes de interrupción a la CPU en varios eventos (como fallas de página )
- soporte para texturas residentes parciales, que permiten el soporte de memoria virtual a través de extensiones DirectX y OpenGL
- Compatibilidad con AMD PowerTune , que ajusta dinámicamente el rendimiento para mantenerse dentro de un TDP específico
- soporte para Mantle (API)
Hay motores de cómputo asíncronos que controlan el cálculo y el despacho.
Energía ZeroCore
ZeroCore Power es una tecnología de ahorro de energía inactiva durante mucho tiempo, que apaga las unidades funcionales de la GPU cuando no está en uso. La tecnología AMD ZeroCore Power complementa a AMD PowerTune .
Papas fritas
GPU discretas (familia de las islas del sur):
- Öland
- Cabo Verde
- Pitcairn
- Tahití
Núcleo de gráficos Next 2
Fecha de lanzamiento | Septiembre de 2013 |
---|---|
Historia | |
Predecesor | Núcleo de gráficos Next 1 |
Sucesor | Núcleo de gráficos Next 3 |
GCN de segunda generación se introdujo con Radeon HD 7790 y también se encuentra en Radeon HD 8770 , R7 260 / 260X, R9 290 / 290X, R9 295X2 , R7 360, R9 390 / 390X , así como en APU de escritorio Kaveri y dispositivos móviles basados en Steamroller . APU Kaveri y en las APU "Beema" y "Mullins" basadas en Puma . Tiene múltiples ventajas sobre el GCN original, incluida la compatibilidad con FreeSync , AMD TrueAudio y una versión revisada de la tecnología AMD PowerTune .
La segunda generación de GCN introdujo una entidad llamada "Shader Engine" (SE). Un Shader Engine consta de un procesador de geometría, hasta 44 CU (chip Hawaii), rasterizadores, ROP y caché L1. No forman parte de un motor de sombreado el procesador de comandos de gráficos, los 8 ACE, los controladores de memoria y caché L2, así como los aceleradores de audio y video, los controladores de pantalla, los 2 controladores DMA y la interfaz PCIe .
El A10-7850K "Kaveri" contiene 8 CU (unidades de cómputo) y 8 motores de cómputo asíncronos para programación independiente y despacho de elementos de trabajo.
En AMD Developer Summit (APU) en noviembre de 2013, Michael Mantor presentó la Radeon R9 290X .
Papas fritas
GPU discretas (familia Sea Islands):
- Bonaire
- Hawai
integrado en APU:
- Temash
- Kabini
- Liverpool (es decir, la APU que se encuentra en PlayStation 4)
- Durango (es decir, la APU que se encuentra en Xbox One y Xbox One S)
- Kaveri
- Godavari
- Mullins
- Beema
- Carrizo-L
Núcleo de gráficos Next 3
Fecha de lanzamiento | Junio de 2015 |
---|---|
Historia | |
Predecesor | Núcleo de gráficos Next 2 |
Sucesor | Núcleo de gráficos Next 4 |
La tercera generación de GCN se introdujo en 2014 con las Radeon R9 285 y R9 M295X, que tienen la GPU "Tonga". Cuenta con un rendimiento de teselación mejorado, compresión de color delta sin pérdidas para reducir el uso del ancho de banda de la memoria, un conjunto de instrucciones actualizado y más eficiente, un nuevo escalador de alta calidad para video y un nuevo motor multimedia (codificador / decodificador de video). La compresión de color delta es compatible con Mesa. Sin embargo, su rendimiento de doble precisión es peor en comparación con la generación anterior.
Papas fritas
GPU discretas:
- Tonga (familia de las islas volcánicas), viene con UVD 5.0 (decodificador de video unificado)
- Fiji (familia de las Islas Piratas), viene con UVD 6.0 y memoria de alto ancho de banda (HBM 1)
integrado en APU:
- Carrizo, viene con UVD 6.0
- Bristol Ridge
- Stoney Ridge
Núcleo de gráficos Next 4
Fecha de lanzamiento | Junio de 2016 |
---|---|
Historia | |
Predecesor | Núcleo de gráficos Next 3 |
Sucesor | Núcleo de gráficos Next 5 |
Las GPU de la familia Arctic Islands se introdujeron en el segundo trimestre de 2016 con la serie AMD Radeon 400 . El motor 3D (es decir, GCA (Graphics and Compute array) o GFX) es idéntico al que se encuentra en los chips Tonga. Pero Polaris presenta un motor de controlador de pantalla más nuevo, UVD versión 6.3, etc.
Todos los chips basados en Polaris distintos del Polaris 30 se producen en el proceso FinFET de 14 nm , desarrollado por Samsung Electronics y con licencia de GlobalFoundries . El Polaris 30, ligeramente más reciente, se basa en el nodo de proceso LP FinFET de 12 nm , desarrollado por Samsung y GlobalFoundries. La arquitectura del conjunto de instrucciones GCN de cuarta generación es compatible con la tercera generación. Es una optimización para el proceso FinFET de 14 nm que permite velocidades de reloj de GPU más altas que con la tercera generación de GCN. Las mejoras arquitectónicas incluyen nuevos programadores de hardware, un nuevo acelerador de descarte primitivo, un nuevo controlador de pantalla y un UVD actualizado que puede decodificar HEVC a resoluciones de 4K a 60 cuadros por segundo con 10 bits por canal de color.
Papas fritas
GPU discretas:
- Polaris 10 (también con nombre en código Ellesmere ) que se encuentra en las tarjetas gráficas de las marcas "Radeon RX 470" y "Radeon RX 480"
- Polaris 11 (también con nombre en código Baffin ) que se encuentra en las tarjetas gráficas de la marca "Radeon RX 460" (también Radeon RX 560 D )
- Polaris 12 (también con nombre en código Lexa) que se encuentra en las tarjetas gráficas de las marcas "Radeon RX 550" y "Radeon RX 540"
- Polaris 20, que es un proceso actualizado (proceso LPP Samsung / GloFo FinFET de 14 nm ) Polaris 10 con relojes más altos, utilizado para tarjetas gráficas de las marcas "Radeon RX 570" y "Radeon RX 580"
- Polaris 21, que es un proceso actualizado (proceso LPP Samsung / GloFo FinFET de 14 nm) Polaris 11, utilizado para tarjetas gráficas de la marca "Radeon RX 560"
- Polaris 22, que se encuentra en las tarjetas gráficas de las marcas "Radeon RX Vega M GH" y "Radeon RX Vega M GL" (como parte de Kaby Lake-G )
- Polaris 30, que es un Polaris 20 actualizado ( proceso LP GloFo FinFET de 12 nm ) con relojes más altos, utilizado para tarjetas gráficas de la marca "Radeon RX 590"
Además de las GPU dedicadas, Polaris se utiliza en las APU de PlayStation 4 Pro y Xbox One X, tituladas "Neo" y "Scorpio", respectivamente.
Rendimiento de precisión
FP64 rendimiento de todas las GPU cuarta generación GCN es 1 / 16 de de rendimiento FP32.
Núcleo de gráficos Next 5
Fecha de lanzamiento | Junio de 2017 |
---|---|
Historia | |
Predecesor | Núcleo de gráficos Next 4 |
Sucesor | RDNA 1 |
AMD comenzó a publicar detalles de su próxima generación de Arquitectura GCN, denominada 'Unidad de cómputo de próxima generación', en enero de 2017. Se esperaba que el nuevo diseño aumentara las instrucciones por reloj , velocidades de reloj más altas , soporte para HBM2 , un espacio de direcciones de memoria más grande . Los conjuntos de chips de gráficos discretos también incluyen "HBCC (controlador de caché de ancho de banda alto)", pero no cuando están integrados en APU. Además, se esperaba que los nuevos chips incluyesen mejoras en las unidades de salida de Rasterización y Renderizado . Los procesadores de flujo están muy modificados con respecto a las generaciones anteriores para admitir la tecnología matemática empaquetada Rapid Pack Math para números de 8, 16 y 32 bits. Con esto, hay una ventaja de rendimiento significativa cuando se acepta una precisión más baja (por ejemplo: procesar dos números de precisión media a la misma velocidad que un número de precisión único ).
Nvidia introdujo la rasterización y el agrupamiento basados en mosaicos con Maxwell , y esta fue una gran razón para el aumento de la eficiencia de Maxwell. En enero, AnandTech asumió que Vega finalmente alcanzaría a Nvidia con respecto a las optimizaciones de eficiencia energética debido al nuevo "DSBR (Draw Stream Binning Rasterizer)" que se presentará con Vega.
También agregó soporte para una nueva etapa de sombreado : Primitive Shaders. Los sombreadores primitivos proporcionan un procesamiento de geometría más flexible y reemplazan los sombreadores de vértice y geometría en una canalización de renderizado. A partir de diciembre de 2018, los sombreadores primitivos no se pueden usar porque los cambios de API requeridos aún no se han realizado.
Vega 10 y Vega 12 utilizan el proceso FinFET de 14 nm , desarrollado por Samsung Electronics y con licencia de GlobalFoundries . Vega 20 utiliza el proceso FinFET de 7 nm desarrollado por TSMC .
Papas fritas
GPU discretas:
- Vega 10 ( proceso Samsung / GloFo FinFET de 14 nm ) (también con nombre en código Groenlandia ) que se encuentra en "Radeon RX Vega 64", "Radeon RX Vega 56", "Radeon Vega Frontier Edition", "Radeon Pro V340", Radeon Pro WX 9100, y tarjetas gráficas Radeon Pro WX 8200
- Vega 12 (proceso Samsung / GloFo FinFET de 14 nm) que se encuentra en las tarjetas gráficas móviles de las marcas "Radeon Pro Vega 20" y "Radeon Pro Vega 16"
- Vega 20 ( proceso TSMC FinFET de 7 nm ) que se encuentra en las tarjetas de aceleración con las marcas "Radeon Instinct MI50" y "Radeon Instinct MI60", y en las tarjetas gráficas con las marcas "Radeon Pro Vega II" y "Radeon VII".
integrado en APU:
- Raven Ridge vino con VCN 1 que reemplaza a VCE y UVD y permite la decodificación VP9 de función fija completa.
Rendimiento de precisión
Doble precisión de punto flotante (FP64) desempeño de todas las GPU de la generación 5ª GCN, a excepción de Vega 20, es 1 / 16 de de rendimiento FP32. Para Vega 20 esto es 1 / 2 de rendimiento FP32. Todas las GPU GCN de quinta generación admiten cálculos de punto flotante de precisión media (FP16) , que es el doble del rendimiento de FP32.