Arquitectura de sistemas heterogéneos

Sistema de computación

La arquitectura de sistemas heterogéneos ( HSA ) es un conjunto de especificaciones de varios proveedores que permiten la integración de unidades centrales de procesamiento y procesadores gráficos en el mismo bus, con memoria y tareas compartidas . [1] La HSA está siendo desarrollada por la Fundación HSA , que incluye (entre muchos otros) AMD y ARM . El objetivo declarado de la plataforma es reducir la latencia de comunicación entre CPU, GPU y otros dispositivos informáticos , y hacer que estos diversos dispositivos sean más compatibles desde la perspectiva de un programador, [2] : 3  [3] aliviando al programador de la tarea de planificar el movimiento de datos entre las memorias disjuntas de los dispositivos (como debe hacerse actualmente con OpenCL o CUDA ). [4]

CUDA y OpenCL, así como la mayoría de los otros lenguajes de programación bastante avanzados, pueden usar HSA para aumentar su rendimiento de ejecución. [5] La computación heterogénea se usa ampliamente en dispositivos de sistema en chip, como tabletas , teléfonos inteligentes , otros dispositivos móviles y consolas de videojuegos . [6] HSA permite que los programas usen el procesador gráfico para cálculos de punto flotante sin memoria separada o programación. [7]

Razón fundamental

La lógica detrás de HSA es aliviar la carga de los programadores cuando transfieren cálculos a la GPU. Originalmente impulsada únicamente por AMD y llamada FSA, la idea se amplió para abarcar también otras unidades de procesamiento además de las GPU, como los DSP de otros fabricantes .

Las GPU modernas son muy adecuadas para ejecutar instrucciones únicas, múltiples datos (SIMD) e instrucciones únicas, múltiples subprocesos (SIMT), mientras que las CPU modernas aún se están optimizando para la ramificación, etc.

Descripción general

Originalmente introducido por sistemas integrados como Cell Broadband Engine , compartir la memoria del sistema directamente entre múltiples actores del sistema hace que la computación heterogénea sea más común. La computación heterogénea en sí se refiere a sistemas que contienen múltiples unidades de procesamiento: unidades centrales de procesamiento (CPU), unidades de procesamiento gráfico (GPU), procesadores de señal digital (DSP) o cualquier tipo de circuitos integrados específicos de la aplicación (ASIC). La arquitectura del sistema permite que cualquier acelerador, por ejemplo un procesador gráfico , funcione al mismo nivel de procesamiento que la CPU del sistema.

Entre sus principales características, HSA define un espacio de direcciones virtuales unificado para dispositivos de cómputo: donde las GPU tradicionalmente tienen su propia memoria, separada de la memoria principal (CPU), HSA requiere que estos dispositivos compartan tablas de páginas para que los dispositivos puedan intercambiar datos compartiendo punteros . Esto debe ser compatible con unidades de administración de memoria personalizadas . [2] : 6–7  Para hacer posible la interoperabilidad y también para facilitar varios aspectos de la programación, HSA está destinado a ser independiente de ISA tanto para CPU como para aceleradores, y para admitir lenguajes de programación de alto nivel.

Hasta el momento, las especificaciones de la HSA cubren:

Capa intermedia de HSA

HSAIL (lenguaje intermedio de arquitectura de sistemas heterogéneos), un conjunto de instrucciones virtuales para programas paralelos

Modelo de memoria HSA

  • Compatible con modelos de memoria C++11 , OpenCL, Java y .NET
  • consistencia relajada
  • Diseñado para soportar lenguajes administrados (por ejemplo, Java) y lenguajes no administrados (por ejemplo, C )
  • hará que sea mucho más fácil desarrollar compiladores de terceros para una amplia gama de productos heterogéneos programados en Fortran , C++, C++ AMP , Java, etc.

Despachador y tiempo de ejecución de HSA

  • Diseñado para permitir la puesta en cola de tareas heterogéneas: una cola de trabajo por núcleo, distribución del trabajo en colas, equilibrio de carga mediante robo de trabajo.
  • Cualquier núcleo puede programar trabajo para cualquier otro, incluido él mismo.
  • Reducción significativa de los gastos generales de programación de trabajo para un núcleo.

Los dispositivos móviles son una de las áreas de aplicación del HSA, en las que se logra una eficiencia energética mejorada. [6]

Diagramas de bloques

Las ilustraciones a continuación comparan la coordinación CPU-GPU bajo HSA versus bajo arquitecturas tradicionales.

Soporte de software

Las GPU de AMD contienen ciertas unidades funcionales adicionales diseñadas para usarse como parte de HSA. En Linux, el controlador de kernel amdkfd proporciona el soporte necesario. [9] [10]

Algunas de las características específicas de HSA implementadas en el hardware deben ser compatibles con el núcleo del sistema operativo y los controladores de dispositivos específicos. Por ejemplo, la compatibilidad con tarjetas gráficas AMD Radeon y AMD FirePro y APU basadas en Graphics Core Next (GCN) se fusionó en la versión 3.19 de la línea principal del núcleo Linux , lanzada el 8 de febrero de 2015. [10] Los programas no interactúan directamente con amdkfd [ se necesita más explicación ] , sino que ponen en cola sus trabajos utilizando el entorno de ejecución de HSA. [11] Esta primera implementación, conocida como amdkfd , se centra en las APU "Kaveri" o "Berlin" y funciona junto con el controlador de gráficos del núcleo Radeon existente.

Además, amdkfd admite la gestión de colas heterogéneas (HQ), cuyo objetivo es simplificar la distribución de trabajos computacionales entre múltiples CPU y GPU desde la perspectiva del programador. La compatibilidad con la gestión de memoria heterogénea ( HMM ), adecuada solo para hardware gráfico con la versión 2 de IOMMU de AMD , fue aceptada en la versión principal del kernel de Linux 4.14. [12]

Se ha anunciado soporte integrado para plataformas HSA para el lanzamiento "Sumatra" de OpenJDK , previsto para 2015. [13]

AMD APP SDK es un kit de desarrollo de software patentado de AMD destinado a la computación paralela , disponible para Microsoft Windows y Linux. Bolt es una biblioteca de plantillas C++ optimizada para computación heterogénea. [14]

GPUOpen incluye un par de herramientas de software más relacionadas con HSA. La versión 2.0 de CodeXL incluye un generador de perfiles de HSA. [15]

Soporte de hardware

AMD

A partir de febrero de 2015 [actualizar], solo las APU de la serie A "Kaveri" de AMD (cf. procesadores de escritorio "Kaveri" y procesadores móviles "Kaveri" ) y la PlayStation 4 de Sony permitían que la GPU integrada accediera a la memoria a través de la versión 2 de la IOMMU de AMD. Las APU anteriores (Trinity y Richland) incluían la funcionalidad de la versión 2 de la IOMMU, pero solo para su uso con una GPU externa conectada a través de PCI Express. [ cita requerida ]

Las APU Carrizo y Bristol Ridge posteriores a 2015 también incluyen la funcionalidad IOMMU de la versión 2 para la GPU integrada. [ cita requerida ]

La siguiente tabla muestra las características de los procesadores AMD con gráficos 3D, incluidas las APU (ver también: Lista de procesadores AMD con gráficos 3D ).

PlataformaPotencia alta, estándar y bajaConsumo bajo y ultrabajo
Nombre en claveServidorBásicoToronto
MicroKioto
De oficinaActuaciónRafaelFénix
Corriente principalLlanoTrinidadTierra ricaKaveriKaveri Refresh (Godavari)CarrizoCresta de BristolCresta del cuervoPicassoRenoirCézanne
Entrada
BásicoCabañaDalí
MóvilActuaciónRenoirCézanneRembrandtCordillera del Dragón
Corriente principalLlanoTrinidadTierra ricaKaveriCarrizoCresta de BristolCresta del cuervoPicassoRenoir
Lucienne
Cézanne
Barceló
Fénix
EntradaDalíMendocino
BásicoDesna, Ontario, ZacateCabaña, TemashBeema, MullinsCarrizo-LCresta de piedraAbadejo
IncorporadoTrinidadÁguila calvaHalcón Merlín ,
Halcón Pardo
Búho cornudoHalcón grisOntario, ZacateCabañaÁguila esteparia , águila coronada ,
familia LX
Halcón de la praderaCernícalo bandeadoHalcón de río
LiberadoAgosto de 2011Octubre de 2012Junio ​​de 2013Enero de 20142015Junio ​​de 2015Junio ​​de 2016Octubre de 2017Enero de 2019Marzo de 2020Enero de 2021Enero de 2022septiembre 2022Enero de 2023Enero de 2011Mayo de 2013Abril de 2014Mayo de 2015Febrero de 2016Abril de 2019Julio de 2020Junio ​​de 2022Noviembre de 2022
Microarquitectura de CPUK10Martillo de hincarApisonadoraExcavador" Excavadora+ " [16]zenZen+Zen 2Zen 3Zen 3+Zen 4Gato montésJaguarPumaPuma+ [17]" Excavadora+ "zenZen+" Zen 2+ "
Es unx86-64 versión 1x86-64 versión 2x86-64 versión 3x86-64 versión 4x86-64 versión 1x86-64 versión 2x86-64 versión 3
EnchufeDe oficinaActuaciónAM5
Corriente principalAM4
EntradaFM1FM2FM2+FM2+ [a] , AM4AM4
BásicoAM1FP5
OtroFS1FS1+ , FP2FP3FP4FP5FP67PMFL1FP7
FP7r2
FP8
?FT1FT3FT3bFP4FP5FT5FP5FT6
Versión PCI Express2.03.04.05.04.02.03.0
CXL
Fab. ( nm )GF 32SHP
( Inversión pública de Hong Kong )
GF 28SHP
(HKMG a granel)
GF 14LPP
( FinFET a granel)
GF 12LP
(FinFET a granel)
TSMC N7
(FinFET a granel)
TSMC N6
(FinFET a granel)
CCD: TSMC N5
(FinFET a granel)

cIOD: TSMC N6
(FinFET a granel)
TSMC 4 nm
(FinFET a granel)
TSMC N40
(a granel)
TSMC N28
(granel de HKMG)
GF 28SHP
(HKMG a granel)
GF 14LPP
( FinFET a granel)
GF 12LP
(FinFET a granel)
TSMC N6
(FinFET a granel)
Área de la matriz (mm 2 )228246245245250210 [18]156180210CCD: (2x) 70
cd/m2: 122
17875 (+ 28 FCH )107?125149~100
TDP mínimo (W)351712101565354.543,95106128
TDP máximo de la APU (W)10095654517054182565415
Reloj base máximo de la APU de serie (GHz)33.84.14.13.73.83.63.73.84.03.34.74.31,752.222.23.22.61.23.352.8
Máximo de APU por nodo [b]11
Número máximo de núcleos por CPU1211
CCX máximo por núcleo1211
Máximo de núcleos por CCX482424
Máximo de núcleos de CPU [c] por APU481682424
Máximo de subprocesos por núcleo de CPU1212
Estructura de canalización de números enteros3+32+24+24+2+11+3+3+1+21+1+1+12+24+24+2+1
i386, i486, i586, CMOV, NOPL, i686, PAE , NX bit , CMPXCHG16B, AMD-V , RVI , ABM y LAHF/SAHF de 64 bitsSíSí
IOMMU [d]versión 2versión 1versión 2
BMI1 , AES-NI , CLMUL y F16CSíSí
MOVIMIENTOSí
AVIC , BMI2 , RDRAND y MWAITX/MONITORXSí
SME [e] , TSME [e] , ADX , SHA , RDSEED , SMAP , SMEP , XSAVEC, XSAVES, XRSTORS, CLFLUSHOPT, CLZERO y PTE CoalescenteSíSí
GMET , WBNOINVD, CLWB, QOS, PQE-BW, RDPID, RDPRU y MCOMMITSíSí
MPK , VAESSí
SGX
FPU por núcleo10,5110,51
Tuberías por FPU22
Ancho de la tubería FPU128 bits256 bits80 bits128 bits256 bits
Conjunto de instrucciones de CPU nivel SIMDSSE4a [f]AVXAVX2AVX-512ESSE3AVXAVX2
¡3DAhora!¡3DAhora!+
PREFETCH/PREFETCHWSíSí
GFNISí
AMX
FMA4 , LWP, TBM y XOPSíSí
FMA3SíSí
XADN de AMDSí
Caché de datos L1 por núcleo (KiB)64163232
Asociatividad de caché de datos L1 (vías)2488
Cachés de instrucciones L1 por núcleo10,5110,51
Máximo total de caché de instrucciones L1 de APU (KiB)2561281922565122566412896128
Asociatividad de la caché de instrucciones L1 (vías)23482348
Cachés L2 por núcleo10,5110,51
Máxima cantidad total de caché L2 de APU (MiB)424161212
Asociatividad de caché L2 (vías)168168
Caché L3 integrado máximo por CCX (MiB)416324
Máximo V-Cache 3D por CCD (MiB)64
Máximo total de caché L3 en CCD por APU (MiB)4816644
Máx. V-Cache 3D total por APU (MiB)64
Máxima memoria caché L3 de la placa por APU (MiB)
Máximo total de caché L3 por APU (MiB)48161284
Asociatividad de caché L3 de APU (vías)1616
Esquema de caché L3VíctimaVíctima
Máx. caché L4
Compatibilidad máxima con DRAM de serieDDR3-1866DDR3-2133DDR3-2133 , DDR4-2400DDR4-2400DDR4-2933DDR4-3200 , LPDDR4-4266DDR5-4800 , LPDDR5-6400DDR5-5200DDR5-5600 , LPDDR5x -7500DDR3L -1333DDR3L-1600DDR3L-1866DDR3-1866 , DDR4-2400DDR4-2400DDR4-1600DDR4-3200LPDDR5-5500
Máximo de canales DRAM por APU21212
Ancho de banda máximo de DRAM (GB/s) por APU29.86634.13238.40046.93268.256102.40083.200120.00010.66612.80014.93319.20038.40012.80051.20088.000
Microarquitectura de GPUTeraScale 2 (VLIW5)TeraScale 3 (VLIW4)GCN 2da generaciónGCN de tercera generaciónGCN 5ta generación [19]ADNr 2ADNr 3TeraScale 2 (VLIW5)GCN 2da generaciónGCN 3ra generación [19]GCN 5ta generaciónADNr 2
Conjunto de instrucciones de la GPUConjunto de instrucciones de TeraScaleConjunto de instrucciones GCNConjunto de instrucciones RDNAConjunto de instrucciones de TeraScaleConjunto de instrucciones GCNConjunto de instrucciones RDNA
Reloj base de GPU de serie máximo (MHz)60080084486611081250140021002400400538600?847900120060013001900
GFLOPS base de GPU de serie máximos [g]480614.4648.1886.71134.517601971.22150.43686.4102.486???345.6460.8230.41331.2486,4
Motor 3D [h]Hasta 400:20:8Hasta 384:24:6Hasta 512:32:8Hasta 704:44:16 [20]Hasta 512:32:8768:48:8128:8:480:8:4128:8:4Hasta 192:12:8Hasta 192:12:4192:12:4Hasta 512:?:?128:?:?
IOMMUv1IOMMUV2IOMMUv1?IOMMUV2
Descodificador de vídeoUVD3.0UVD 4.2UVD6.0VCN 1.0 [21]VCN 2.1 [22]VCN2.2 [22]VCN 3.1?UVD3.0UVD 4.0UVD 4.2UVD6.2VCN 1.0VCN 3.1
Codificador de vídeoVCE 1.0VCE 2.0VCE 3.1VCE 2.0VCE 3.4
Movimiento fluido AMDNoSíNoNoSíNo
Ahorro de energía de la GPUJuego de poderSintonizador de potenciaJuego de poderPotenciaTune [23]
Audio verdaderoSí[24]?Sí
Sincronización gratuita1
2
1
2
HDCP [i]?1.42.22.3?1.42.22.3
Listo para jugar [i]3.0 aún no3.0 aún no
Pantallas compatibles [j]2–32–433 (computadora de escritorio)
4 (móvil, integrado)
42344
/drm/radeon[k] [26] [27]SíSí
/drm/amdgpu[k] [28]Sí[29]Sí[29]
  1. ^ Para los modelos de excavadoras FM2+: A8-7680, A6-7480 y Athlon X4 845.
  2. ^ Una PC sería un nodo.
  3. ^ Una APU combina una CPU y una GPU. Ambas tienen núcleos.
  4. ^ Requiere soporte de firmware.
  5. ^ ab Requiere soporte de firmware.
  6. ^ Sin SSE4. Sin SSSE3.
  7. ^ El rendimiento de precisión simple se calcula a partir de la velocidad del reloj del núcleo base (o aumentada) en función de una operación FMA .
  8. ^ Sombreadores unificados  : unidades de mapeo de texturas  : unidades de salida de renderizado
  9. ^ ab Para reproducir contenido de video protegido, también se requiere compatibilidad con tarjeta, sistema operativo, controlador y aplicaciones. Para esto también se necesita una pantalla compatible con HDCP. HDCP es obligatorio para la salida de ciertos formatos de audio, lo que impone restricciones adicionales a la configuración multimedia.
  10. ^ Para alimentar más de dos pantallas, los paneles adicionales deben tener soporte nativo para DisplayPort . [25] Alternativamente, se pueden emplear adaptadores activos de DisplayPort a DVI/HDMI/VGA.
  11. ^ab DRM ( Direct Rendering Manager ) es un componente del núcleo de Linux. La compatibilidad que se muestra en esta tabla se refiere a la versión más actual.

BRAZO

La microarquitectura Bifrost de ARM , tal como se implementó en el Mali-G71, [30] es totalmente compatible con las especificaciones de hardware HSA 1.1. A junio de 2016 [actualizar], ARM no ha anunciado soporte de software que utilice esta característica de hardware.

Véase también

Referencias

  1. ^ Tarun Iyer (30 de abril de 2013). "AMD presenta su tecnología de acceso uniforme a memoria heterogénea (hUMA)". Tom's Hardware .
  2. ^ ab George Kyriazis (30 de agosto de 2012). Arquitectura de sistemas heterogéneos: una revisión técnica (PDF) (Informe). AMD. Archivado desde el original (PDF) el 28 de marzo de 2014. Consultado el 26 de mayo de 2014 .
  3. ^ "¿Qué es la arquitectura de sistemas heterogéneos (HSA)?". AMD. Archivado desde el original el 21 de junio de 2014. Consultado el 23 de mayo de 2014 .
  4. ^ Joel Hruska (26 de agosto de 2013). "Configuración de HSAIL: AMD explica el futuro de la cooperación entre CPU y GPU". ExtremeTech . Ziff Davis .
  5. ^ Linaro (21 de marzo de 2014). "LCE13: Arquitectura de sistemas heterogéneos (HSA) en ARM". slideshare.net .
  6. ^ ab "Arquitectura de sistemas heterogéneos: propósito y perspectivas". gpuscience.com . 9 de noviembre de 2012. Archivado desde el original el 1 de febrero de 2014 . Consultado el 24 de mayo de 2014 .
  7. ^ "Arquitectura de sistema heterogéneo: procesamiento de imágenes multinúcleo utilizando una combinación de elementos de CPU y GPU". Diseño de computación integrada . Consultado el 23 de mayo de 2014 .
  8. ^ "Microarquitectura de Kaveri". SemiAccurate . 15 de enero de 2014.
  9. ^ Michael Larabel (21 de julio de 2014). "El controlador AMDKFD sigue evolucionando para HSA de código abierto en Linux". Phoronix . Consultado el 21 de enero de 2015 .
  10. ^ ab "Linux kernel 3.19, Sección 1.3. Controlador HSA para dispositivos GPU AMD". kernelnewbies.org . 8 de febrero de 2015 . Consultado el 12 de febrero de 2015 .
  11. ^ "HSA-Runtime-Reference-Source/README.md at master". github.com . 14 de noviembre de 2014 . Consultado el 12 de febrero de 2015 .
  12. ^ "Se anuncia el kernel Linux 4.14 con cifrado de memoria seguro y más". 13 de noviembre de 2017.[ enlace muerto permanente ]
  13. ^ Alex Woodie (26 de agosto de 2013). "La Fundación HSA tiene como objetivo impulsar la capacidad de procesamiento gráfico de Java". HPCwire .
  14. ^ "Bolt en GitHub". GitHub . 11 de enero de 2022.
  15. ^ AMD GPUOpen (19 de abril de 2016). «CodeXL 2.0 incluye el generador de perfiles HSA». Archivado desde el original el 27 de junio de 2018. Consultado el 21 de abril de 2016 .
  16. ^ "AMD anuncia la séptima generación de APU: Excavator mk2 en Bristol Ridge y Stoney Ridge para portátiles". 31 de mayo de 2016. Consultado el 3 de enero de 2020 .
  17. ^ "La familia de APU "Carrizo" de AMD Mobile está diseñada para ofrecer un salto significativo en rendimiento y eficiencia energética en 2015" (Nota de prensa). 20 de noviembre de 2014 . Consultado el 16 de febrero de 2015 .
  18. ^ "Guía de comparación de CPU para dispositivos móviles Rev. 13.0 Página 5: Lista completa de CPU para dispositivos móviles AMD". TechARP.com . Consultado el 13 de diciembre de 2017 .
  19. ^ ab "GPU AMD VEGA10 y VEGA11 detectadas en el controlador OpenCL". VideoCardz.com . Consultado el 6 de junio de 2017 .
  20. ^ Cutress, Ian (1 de febrero de 2018). "Zen Cores y Vega: APU Ryzen para AM4 – AMD Tech Day en CES: se revela la hoja de ruta para 2018, con APU Ryzen, Zen+ en 12 nm, Vega en 7 nm". Anandtech . Consultado el 7 de febrero de 2018 .
  21. ^ Larabel, Michael (17 de noviembre de 2017). "Radeon VCN Encode Support Lands in Mesa 17.4 Git". Phoronix . Consultado el 20 de noviembre de 2017 .
  22. ^ ab "La APU AMD Ryzen 5000G 'Cezanne' obtiene las primeras imágenes de matriz de alta resolución, 10,7 mil millones de transistores en un paquete de 180 mm2". wccftech . 12 de agosto de 2021 . Consultado el 25 de agosto de 2021 .
  23. ^ Tony Chen; Jason Greaves, "Arquitectura Graphics Core Next (GCN) de AMD" (PDF) , AMD , consultado el 13 de agosto de 2016
  24. ^ "Una mirada técnica a la arquitectura Kaveri de AMD". Semi Accurate . Consultado el 6 de julio de 2014 .
  25. ^ "¿Cómo conecto tres o más monitores a una tarjeta gráfica AMD Radeon™ HD 5000, HD 6000 y HD 7000 Series?". AMD . Consultado el 8 de diciembre de 2014 .
  26. ^ Airlie, David (26 de noviembre de 2009). "DisplayPort compatible con el controlador KMS integrado en el kernel de Linux 2.6.33" . Consultado el 16 de enero de 2016 .
  27. ^ "Matriz de características de Radeon". freedesktop.org . Consultado el 10 de enero de 2016 .
  28. ^ Deucher, Alexander (16 de septiembre de 2015). «XDC2015: AMDGPU» (PDF) . Consultado el 16 de enero de 2016 .
  29. ^ ab Michel Dänzer (17 de noviembre de 2016). "[ANUNCIO] xf86-video-amdgpu 1.2.0". listas.x.org .
  30. ^ "Arquitectura de GPU ARM Bifrost". 30 de mayo de 2016.
  • Descripción general de la arquitectura de sistemas heterogéneos de HSA en YouTube por Vinod Tipparaju en SC13 en noviembre de 2013
  • HSA y el ecosistema de software
  • 2012 – HSA por Michael Houston Archivado el 5 de marzo de 2016 en Wayback Machine

Obtenido de "https://es.wikipedia.org/w/index.php?title=Arquitectura_de_sistemas_heterogéneos&oldid=1245916026"