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 .
Pasos que se realizan al descargar cálculos a la GPU en un sistema que no es HSA
Pasos que se realizan al descargar cálculos a la GPU en un sistema HSA, utilizando la funcionalidad HSA
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:
finalizado a un conjunto de instrucciones específicas por un compilador JIT
Tomar decisiones tardías sobre qué núcleo(s) deben ejecutar una tarea
explícitamente paralelo
Admite excepciones, funciones virtuales y otras características de alto nivel.
soporte de depuración
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.
Arquitectura estándar con una GPU discreta conectada al bus PCI Express . No es posible realizar copias cero entre la GPU y la CPU debido a que las memorias físicas son distintas.
HSA aporta memoria virtual unificada y facilita el paso de punteros a través de PCI Express en lugar de copiar todos los datos.
En la memoria principal particionada, una parte de la memoria del sistema se asigna exclusivamente a la GPU. Como resultado, no es posible realizar operaciones de copia cero.
Memoria principal unificada, en la que la GPU y la CPU están habilitadas para HSA. Esto hace posible la operación sin copia. [8]
La MMU de la CPU y la IOMMU de la GPU deben cumplir con las especificaciones de hardware HSA.
Soporte de software
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 ]
^ 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.
^ 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.
^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.
^ Tarun Iyer (30 de abril de 2013). "AMD presenta su tecnología de acceso uniforme a memoria heterogénea (hUMA)". Tom's Hardware .
^ 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 .
^ "¿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 .
^ 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 .
^ Linaro (21 de marzo de 2014). "LCE13: Arquitectura de sistemas heterogéneos (HSA) en ARM". slideshare.net .
^ 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 .
^ "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 .
^ "Microarquitectura de Kaveri". SemiAccurate . 15 de enero de 2014.
^ 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 .
^ 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 .
^ "HSA-Runtime-Reference-Source/README.md at master". github.com . 14 de noviembre de 2014 . Consultado el 12 de febrero de 2015 .
^ "Se anuncia el kernel Linux 4.14 con cifrado de memoria seguro y más". 13 de noviembre de 2017.[ enlace muerto permanente ]
^ Alex Woodie (26 de agosto de 2013). "La Fundación HSA tiene como objetivo impulsar la capacidad de procesamiento gráfico de Java". HPCwire .
^ 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 .
^ "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 .
^ "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 .
^ "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 de AMD". TechARP.com . Consultado el 13 de diciembre de 2017 .
^ ab "GPU AMD VEGA10 y VEGA11 detectadas en el controlador OpenCL". VideoCardz.com . Consultado el 6 de junio de 2017 .
^ 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 .
^ 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 .
^ 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 .
^ Tony Chen; Jason Greaves, "Arquitectura Graphics Core Next (GCN) de AMD" (PDF) , AMD , consultado el 13 de agosto de 2016
^ "Una mirada técnica a la arquitectura Kaveri de AMD". Semi Accurate . Consultado el 6 de julio de 2014 .
^ "¿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 .
^ 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 .
^ "Matriz de características de Radeon". freedesktop.org . Consultado el 10 de enero de 2016 .
^ Deucher, Alexander (16 de septiembre de 2015). «XDC2015: AMDGPU» (PDF) . Consultado el 16 de enero de 2016 .
^ ab Michel Dänzer (17 de noviembre de 2016). "[ANUNCIO] xf86-video-amdgpu 1.2.0". listas.x.org .
^ "Arquitectura de GPU ARM Bifrost". 30 de mayo de 2016.
Enlaces externos
Wikimedia Commons tiene medios relacionados con Arquitectura de sistemas heterogéneos .
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