stringtranslate.com

Arquitectura de sistemas heterogéneos

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

Despachador y tiempo de ejecución de HSA

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 , 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 ).

  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 , 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.

Enlaces externos