Heterogeneous System Architecture

Originalmente impulsado únicamente por AMD y llamado FSA, la idea se amplió para abarcar otras unidades de procesamiento además de las GPU, como los DSP de otros fabricantes.Las GPU modernas son muy adecuadas para realizar single instruction, multiple data (SIMD) y single instruction, multiple threads (SIMT), mientras que las CPU modernas todavía se están optimizando para la bifurcación.

Entre sus características principales, HSA define un espacio de dirección virtual unificado para dispositivos informáticos: cuando las GPU tradicionalmente tienen su propia memoria, separada de la memoria principal (CPU), HSA requiere que estos dispositivos compartan tablas de página para que los dispositivos puedan intercambiar datos compartiendo punteros.

[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 Radeon kernel existente.

Además, amdkfd admite cola heterogénea (HQ), que tiene como objetivo simplificar la distribución de trabajos computacionales entre múltiples CPU y GPU desde la perspectiva del programador.

Bolt es una biblioteca de plantillas C ++ optimizada para computación heterogénea.

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

Pasos realizados al descargar cálculos a la GPU en un sistema que no es HSA
Pasos realizados al descargar cálculos a la GPU en un sistema HSA, utilizando la funcionalidad HSA
Arquitectura estándar con una discreta GPU conectada al bus PCI Express . Zero-copy entre la GPU y la CPU no es posible debido a las distintas memorias físicas.
HSA brinda memoria virtual unificada y facilita el envío de punteros a través de PCI Express en lugar de copiar toda la información.
En la memoria principal particionada, una parte de la memoria del sistema se asigna exclusivamente a la GPU. Como resultado, la operación de copia cero no es posible.
Memoria principal unificada, posible gracias a una combinación de GPU y CPU habilitadas para HSA. Como resultado, es posible realizar operaciones de copia cero. [ 8 ]
Tanto la MMU de la CPU como la IOMMU de la GPU deben cumplir con las especificaciones de hardware de la HSA.
Las GPU de AMD contienen ciertas unidades funcionales adicionales destinadas a ser utilizadas como parte de HSA. En Linux, el controlador de kernel amdkfd proporciona el soporte requerido. [ 9 ]