# Heterogeneous System Architecture

Die Heterogenous System Architecture (kurz HSA, ehemals Fusion System Architecture) ist ein von AMD entwickeltes Prozessorkonzept, um Haupt- und Grafikprozessor möglichst effizient auf einem Computerchip (Die) zu vereinen und dadurch das Ausführen von spezialisierten Programmen zu beschleunigen. Dies soll unter anderem die Gesamtleistung von APUs (Accelerated Processing Unit) deutlich steigern. Hauptmerkmal von HSA ist, dass die Prozessorkerne und der Grafikprozessor auf einen gemeinsamen Adressraum und Speicher (RAM) zugreifen.

## Geschichte

AMD kündigte das HSA-Programm auf dem AFDS (AMD Fusion Developer Summit) 2011 an, mit dem Ziel die Verarbeitungsgeschwindigkeit diverser Aufgaben immens zu beschleunigen. Wegen Markenrechtsschwierigkeiten mit Arctic (unter anderem bekannt für CPU- und GPU-Kühler) musste AMD das damals noch FSA (Fusion System Architecture) genannte Programm in HSA umbenennen.
Auf dem AFDS 2012 kündigte AMD die Gründung der sogenannten HSA Foundation an, bei der AMD mit anderen Chipentwicklern an einem gemeinsamen Konzept der HSA arbeiten wollte. Mitglieder der HSA Foundation sind unter anderen ARM und Texas Instruments.
Zukünftig plant AMD in Zusammenarbeit mit ARM, die Softwareindustrie stärker dazu zu bewegen, ihre Produkte auf HSA zu optimieren und evtl. zusätzlich noch mehrere Hardwarehersteller zu gewinnen.

### Gründer der HSA Foundation

* AMD
* ARM
* Imagination
* MediaTek
* Qualcomm
* Samsung
* Texas Instruments

## Technisches

Das Konzept der HSA beruht darauf, dass der Grafikteil von APUs allgemeine Aufgaben (GPGPU) übernehmen und dadurch spezielle Rechenoperationen beschleunigen kann. Die Grafikeinheit ist mit C++ und OpenCL programmierbar. Das Entwicklungspaket "HSA SDK" soll zusätzlich als Abstraktionsebene die "HSA intermediate language" (HSAIL) anbieten, um C++-Code für die APU zu Prozessorkernoptimieren. Ebenso erhält diese Zwischenschicht die Kompatibilität zwischen unterschiedlichen APUs.
Die aktuell höchste Ausbaustufe von HSA im Desktop- und Notebookmarkt ist die Kaveri APU, die Kohärenz im Speicher gewährleisten kann und auch AMDs "Heterogeneous Uniform Memory Access" (hUMA) beherrscht.
Die GPU (Graphics Processing Unit, Grafikprozessor) wird verwendet, da diese mit ihren parallelen Ausführungseinheiten sehr gut Gleitkommarechenoperationen schnell und effizient ausführen können. Im Gegensatz zur normalen CPU (Central Processing Unit, Prozessor) bieten diese nämlich viel mehr Gleitkommaeinheiten. Aktuelle CPUs bieten bei AMD nur eine Gleitkommaeinheit pro Modul (AMD Bulldozer Architektur) und bei Intel nur eine Gleitkommaeinheit pro Kern (Intel-Sandybridge-Architektur').

### Merkmale

Die Merkmale eines Prozessors mit HSA-Unterstützung sind, dass der Grafikprozessor und Hauptprozessor auf demselben Computerchip vereint sind. Dies erleichtert den schnelleren Datenaustausch zwischen den beiden Einheiten, und somit kann man softwareseitig Aufgaben stark beschleunigen. Unter anderem verringert dies die Komplexität von Rechner-Hauptplatinen, da dort kein Extra-Grafikchip mehr aufgelötet zu werden braucht. Ein weiteres wichtiges Merkmal ist, dass im Endausbaustadium der Grafikteil einen kohärenten Speicher und gemeinsamen Adressraum aufweist und mit C++ bzw. OpenCL programmierbar ist. Dies hat AMD bereits in seinen Kaveri-APUs mit Graphics-Core-Next-Grafikarchitektur integriert. Auch können Chipfertiger über die HSA 3rd-Party-IP-Bestandteile in ihre Mikrochips integrieren. Dies ist bei der Nachfolgergeneration der stromsparenden ("low power") Chips auf Basis der Jaguar-Architektur der Fall. Dort ist beispielsweise die ARM TrustedZone direkt in den x86-Chip integriert.

### Weiterentwicklung

AMD plant, diverse Logik-Einheiten von Dritten wie z. Bsp. ARM-Kerne ihren APUs hinzuzufügen und diese somit dem Verwendungszweck gezielt anzupassen. Die dritte Ausbaustufe von HSA vertreten die Kaveri- und Godavari-Modelle, die kohärenten Speicher und einen gemeinsamen Adressraum von CPU und GPU bieten. Sie sind mit 2–4 Steamroller-Kernen (Nachfolger von Piledriver) und Graphics-Core-Next-Grafikteil (momentan neueste Grafikchipgeneration von AMD) ausgestattet.
Sony kündigte im Februar 2013 an, in ihrer PlayStation 4 x86-APUs mit AMDs Jaguar als CPU- und "Graphics Core Next" als GPU-Architektur zu verwenden. Diese besitzen wie Kaveri und Godavari die dritte HSA-Ausbaustufe und haben als Kabini bzw. Temash im Low-End Desktop- und Notebookmarkt bzw. im Tabletmarkt die vorherigen Modelle, basierend auf der Bobcat-Architektur, abgelöst.
Die vorerst letzte HSA-Ausbaustufe stellen die Carrizo-APUs mit Excavator-Kernen dar, welche 2016 um Bristol-Ridge-Versionen für den Desktop ergänzt werden sollen.

## Software

Softwaremäßig wird HSA jetzt schon durch einige große Softwarehäuser unterstützt. Zu den unterstützten Programmen zählen die bekannten Bildbearbeitungsprogramme Gimp, Adobe Photoshop und Darktable, wo diverse Funktionen via OpenCL auf dem Grafikteil laufen. Des Weiteren das Office-Paket LibreOffice (in der Tabellenkalkulation), diverse Software zur Konvertierung und Anzeige von Videos wie z. B. Handbrake, x264, Sony Vegas, Adobe Premiere, Final Cut Pro, Avisynth sowie Web-Browser und Software für 3D-Rendering (z. B. Blender, Maya, 3dsMax).
Software, die mit OpenCL programmiert wurde, wird auf Grafikprozessoren aller Hersteller beschleunigt. Ins Hintertreffen gerät dem gegenübergestellt aber NVIDIAs Eigenentwicklung CUDA.
PGI (The Portland Group) plant, einen entsprechenden HSA-Compiler in Partnerschaft von AMD zu entwickeln, mit dem man ohne viel eigenes Zutun Programme kompilieren kann, die durch die HSA-Erweiterungen beschleunigt werden.

## Prozessoren mit HSA-Unterstützung

Übersicht der Prozessoren mit HSA-Unterstützung :
| Entwickler | CPU-Architektur | GPU-Architektur | Befehlssatz | Codename | Veröffentlichungsdatum | Fertigung |
| AMD | AMD Jaguar | Graphics Core Next | x86-64 | PlayStation 4 SoC | 2013 | 28 nm |
| AMD | AMD Steamroller | Graphics Core Next | x86-64 | Kaveri | 2014 | 28 nm |
| AMD | AMD Puma+ | Graphics Core Next | x86-64 | Mullins & Beema | 2014 | 28 nm |
| AMD | ARM Cortex A57 | Graphics Core Next | ARMv8 (64-bit) | Seattle | 2014 | 28 nm |
| AMD | AMD Steamroller | Graphics Core Next | x86-64 | Godavari | 2015 | 28 nm |
| AMD | AMD Excavator | Graphics Core Next | x86-64 | Carrizo | 2015 | 28 nm |
| AMD | AMD Puma+ | Graphics Core Next | x86-64 | Carrizo-L | 2015 | 28 nm |
| AMD | AMD Excavator | Graphics Core Next | x86-64 | Bristol Ridge | 2016 | 28 nm |
| AMD | AMD Zen | Graphics Core Next | x86-64 | Summit Ridge | 2016 | 14 nm |
| AMD | AMD K12 | Graphics Core Next | ARMv8 (64-bit) | n/a | | 14 nm |
| AMD | AMD Zen 2 | Graphics Core Next | x86-64 | / | 2019 | 7 nm |