Articulo de referencia

Arquitectura de sistemas heterogéneos

La arquitectura de sistemas heterogéneos ( HSA ) es un conjunto de especificaciones de múltiples proveedores que permite la integración de unidades centrales de procesamiento y ...

La arquitectura de sistemas heterogéneos ( HSA ) es un conjunto de especificaciones de múltiples proveedores que permite 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) a AMD y ARM . El objetivo declarado de la plataforma es reducir la latencia de comunicación entre CPU, GPU y otros dispositivos de computación , y hacer que estos diversos dispositivos sean más compatibles desde la perspectiva del programador, [ 2 ] : 3 [ 3 ] liberando al programador de la tarea de planificar el movimiento de datos entre memorias disjuntas de los dispositivos (como debe hacerse actualmente con OpenCL o CUDA ). [ 4 ]

CUDA y OpenCL, así como la mayoría de los demás 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 ni planificación separadas. [ 7 ]

Razón fundamental

La razón de ser de HSA es facilitar el trabajo de los programadores al delegar cálculos a la GPU. Originalmente impulsada exclusivamente por AMD y denominada FSA, la idea se extendió para abarcar unidades de procesamiento distintas de las GPU, como los DSP de otros fabricantes .

Las GPU modernas son muy adecuadas para realizar instrucciones únicas, múltiples datos (SIMD) e instrucciones únicas, múltiples hilos (SIMT), mientras que las CPU modernas todavía se están optimizando para ramificaciones, etc.

Descripción general

Introducida originalmente por sistemas embebidos como el Cell Broadband Engine , la compartición directa de la memoria del sistema entre múltiples componentes hace que la computación heterogénea sea más común. La computación heterogénea 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ñales digitales (DSP) o cualquier tipo de circuito integrado de aplicación específica (ASIC). La arquitectura del sistema permite que cualquier acelerador, por ejemplo, un procesador gráfico , opere al mismo nivel de procesamiento que la CPU del sistema. 

Entre sus características principales, HSA define un espacio de direcciones virtuales unificado para dispositivos de computación: 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 puedan intercambiar datos compartiendo punteros . Esto se admite mediante unidades de gestió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á diseñado para ser independiente del 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 abarcan:

capa intermedia de HSA

HSAIL (Heterogeneous System Architecture Intermediate Language), un conjunto de instrucciones virtuales para programas paralelos.

  • similar a la representación intermedia de LLVM y SPIR (utilizada por OpenCL y Vulkan )
  • finalizado según un conjunto de instrucciones específico mediante 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 los modelos de memoria de C++11 , OpenCL, Java y .NET.
  • consistencia relajada
  • Diseñado para admitir tanto lenguajes administrados (por ejemplo, Java) como lenguajes no administrados (por ejemplo, C ).
  • Esto facilitará enormemente el desarrollo de compiladores de terceros para una amplia gama de productos heterogéneos programados en Fortran , C++, C++ AMP , Java, etc.

Despachador HSA y tiempo de ejecución

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

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

Diagramas de bloques

Las ilustraciones que aparecen a continuación comparan la coordinación CPU-GPU bajo HSA frente a las arquitecturas tradicionales.

Soporte de software

Las GPU de AMD contienen ciertas unidades funcionales adicionales destinadas a ser utilizadas como parte de HSA. En Linux, el controlador del kernel amdkfd proporciona el soporte necesario. [ 9 ] [ 10 ]

Algunas de las características específicas de HSA implementadas en el hardware necesitan ser compatibles con el núcleo del sistema operativo y los controladores de dispositivos específicos. Por ejemplo, la compatibilidad con las tarjetas gráficas AMD Radeon y AMD FirePro , y las APU basadas en Graphics Core Next (GCN), se fusionó en la versión 3.19 de la rama principal del núcleo de Linux , publicada el 8 de febrero de 2015. [ 10 ] Los programas no interactúan directamente con amdkfd , 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 gráfico del núcleo Radeon existente.

Además, amdkfd admite la cola heterogénea (HQ), que busca simplificar la distribución de tareas computacionales entre múltiples CPU y GPU desde la perspectiva del programador. La compatibilidad con la gestión de memoria heterogénea ( HMM ), adecuada únicamente para hardware gráfico con la versión 2 de la IOMMU de AMD , se incorporó a la versión principal 4.14 del kernel de Linux. [ 12 ]

Se ha anunciado la compatibilidad integrada con las plataformas HSA para la versión "Sumatra" de OpenJDK , prevista para 2015. [ 13 ]

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

GPUOpen comprende un par de otras herramientas de software relacionadas con HSA. CodeXL versión 2.0 incluye un perfilador HSA. [ 15 ]

Soporte de hardware

AMD

A fecha de febrero de 2015 Solo las APU de la serie A "Kaveri" de AMD (comparadas con los procesadores de escritorio "Kaveri" y los procesadores móviles "Kaveri" ) y la PlayStation 4 de Sony permitían que la GPU integrada accediera a la memoria mediante la versión 2 de la IOMMU de AMD. Las APU anteriores (Trinity y Richland) incluían la funcionalidad IOMMU versión 2, pero solo para su uso por una GPU externa conectada mediante PCI Express.

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

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

  1. Para los modelos de excavadora FM2+: A8-7680, A6-7480 y Athlon X4 845.
  2. Un PC sería un nodo.
  3. Una APU combina una CPU y una GPU. Ambas tienen núcleos.
  4. Requiere compatibilidad con el firmware.
  5. 1 2 Requiere compatibilidad con el firmware.
  6. Sin SSE4. Sin SSSE3.
  7. El rendimiento de precisión simple se calcula a partir de la velocidad de reloj base (o turbo) del núcleo en función de unaoperación FMA .
  8. Shaders unificados  : unidades de mapeo de texturas  : unidades de salida de renderizado
  9. 1 2 Para reproducir contenido de vídeo protegido, también se requiere compatibilidad con tarjeta gráfica, sistema operativo, controlador y aplicación. Además, 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 tenersoporte nativo para DisplayPort . [ 25 ] Como alternativa, se pueden emplear adaptadores activos de DisplayPort a DVI/HDMI/VGA.
  11. 1 2 DRM ( Direct Rendering Manager ) es un componente del kernel de Linux. La compatibilidad en esta tabla se refiere a la versión más reciente.

BRAZO

La microarquitectura Bifrost de ARM , tal como se implementa en el Mali-G71, [ 30 ] cumple totalmente con las especificaciones de hardware HSA 1.1. A partir de junio de 2016 ARM no ha anunciado ningún software que utilice esta función de hardware.

Véase también

Referencias

  1. Tarun Iyer (30 de abril de 2013). "AMD presenta su tecnología de acceso a memoria uniforme heterogénea (hUMA)" . Tom's Hardware .
  2. 1 2 George Kyriazis (30 de agosto de 2012). Arquitectura de sistemas heterogéneos: una revisión técnica (PDF) (Informe). AMD. Archivado del original (PDF) el 28 de marzo de 2014. Recuperado el 26 de mayo de 2014 .
  3. "¿Qué es la arquitectura de sistemas heterogéneos (HSA)?" . AMD. Archivado del original el 21 de junio de 2014. Recuperado el 23 de mayo de 2014 .
  4. Joel Hruska (26 de agosto de 2013). "Estableciendo HSAIL: AMD explica el futuro de la cooperación CPU/GPU" . ExtremeTech . Ziff Davis .
  5. Linaro (21 de marzo de 2014). "LCE13: Arquitectura de sistema heterogéneo (HSA) en ARM" . slideshare.net .
  6. 1 2 "Arquitectura de sistemas heterogéneos: propósito y perspectivas" . gpuscience.com . 9 de noviembre de 2012. Archivado del original el 1 de febrero de 2014. Recuperado el 24 de mayo de 2014 .
  7. "Arquitectura de sistema heterogénea: procesamiento de imágenes multinúcleo mediante una combinación de elementos de CPU y GPU" . Embedded Computing Design . Consultado el 23 de mayo de 2014 .
  8. "Microarquitectura 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. 1 2 "Núcleo de Linux 3.19, Sección 1.3. Controlador HSA para dispositivos GPU AMD" . kernelnewbies.org . 8 de febrero de 2015. Recuperado el 12 de febrero de 2015 .
  11. "HSA-Runtime-Reference-Source/README.md en master" . github.com . 14 de noviembre de 2014. Consultado el 12 de febrero de 2015 .
  12. "Anuncian el kernel de Linux 4.14 con cifrado de memoria seguro y más" . 13 de noviembre de 2017. Archivado del original el 13 de noviembre de 2017.
  13. Alex Woodie (26 de agosto de 2013). "La Fundación HSA busca impulsar la potencia de la GPU de Java" . HPCwire .
  14. "Añadir a GitHub" . GitHub . 11 de enero de 2022.
  15. AMD GPUOpen (19 de abril de 2016). "CodeXL 2.0 incluye el perfilador HSA" . Archivado del original el 27 de junio de 2018. Consultado el 21 de abril de 2016 .
  16. "AMD anuncia la APU de séptima generación: 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" (Comunicado de prensa). 20 de noviembre de 2014. Consultado el 16 de febrero de 2015 .
  18. "Guía comparativa de CPU móviles Rev. 13.0 Página 5 : Lista completa de CPU móviles AMD" . TechARP.com . Consultado el 13 de diciembre de 2017 . 
  19. 1 2 "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 de 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). "El soporte para codificación VCN de Radeon llega a Mesa 17.4 Git" . Phoronix . Recuperado el 20 de noviembre de 2017 .
  22. 1 2 "AMD Ryzen 5000G 'Cezanne' APU obtiene las primeras imágenes de alta resolución del chip, 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 o HD 7000?" . AMD . Consultado el 8 de diciembre de 2014 .
  26. Airlie, David (26 de noviembre de 2009). "DisplayPort compatible con el controlador KMS incorporado al 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. ^ 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.{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  31. Arquitectura de memoria de computadora para sistemas de computación híbridos seriales y paralelos, patentes estadounidenses 7,707,388, 2010 y 8,145,879, 2012. Inventor: Uzi Vishkin
  • Descripción general de la arquitectura de sistemas heterogéneos 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