Details zu AMDs heterogener Verarbeitungsschlange
Diese Woche gab AMD Details zur Programmabarbeitung auf HSA-fähigen Prozessoren bzw. APUs bekannt, zusätzlich beantwortete uns AMD noch Detailfragen dazu. Das beschriebene Konzept hört im Englischen auf den Namen “heterogeneous Queuing”, abgekürzt: “hQ”.
Wie schon bei AMDs Speichertechnik hUMA ist “heterogen” schnell erklärt. Bei hUMA bedeutet es schlicht, dass unterschiedliche Prozessorkerne auf einen gemeinsamen Speicher über gleiche Speicheradressen zugreifen können. Im Zusammenspiel mit einer Verarbeitungsschlange bedeutet es nun, dass sich die gleichen unterschiedlichen Prozessorkerne nun gegenseitig Arbeit zuschicken können:
hUMA und hQ sind sich also konzeptionell ähnlich, aber im Vergleich zum Speicher gibt es keine gemeinsame Schlange, sondern mindestens zwei, eine für die CPU sowie eine für die GPU:
Diese beiden Warteschlangen werden von der jeweiligen Recheneinheit regelmäßig automatisch abgefragt und eventuell gefundene Rechenpakete dadurch zügig abgearbeitet. Die Pakete liegen im Hauptspeicher, wobei ein sogenanntes hQ-Paket aber keinen auszuführenden Code selbst enthält, sondern nur einen Zeiger auf diesen.
Dadurch, dass die hQ-Pakete im Hauptspeicher liegen, könnte man nun annehmen, dass die Kommunikation zwischen CPU und GPU stark von der relativ hohen RAM-Latenz behindert wird. Jedoch versicherte uns AMD auf Nachfrage, dass die Speicherstellen der hQ-Pakete voll cache-fähig seien, es auch keine Kohärenzprobleme zwischen CPU und GPU gäbe und somit keine Performance-Probleme entstünden.
Neu ist das beschriebene Paketformat nicht ganz. Im bereits seit Längerem öffentlich erhältlichen HSA-PDF werden schon sogenannte AQL-Pakete (Architected Queuing Language) beschrieben. AMD bestätigte uns, dass die hQ-Pakte eng mit diesen verwandt seien und sie voll unterstützen. Alle bisher gezeigten Funktionsbeschreibungen werden auch von den AQL-Paketen erfüllt, jedoch würden die hQ-Pakete noch AMD-spezifische Features, die über den standardisierten Rahmen hinaus gingen, unterstützen. Die AQL-Pakete sind folgendermaßen spezifiziert:
An AQL packet is an HSA-standard packet format. AQL dispatch packets are used to dispatch new kernels on the HSA component and specify the launch dimensions, instruction code, kernel arguments, completion detection, and more. Other AQL packets may also be supported in the future.
Dadurch, dass sich die GPU über hQs die Arbeit selbst holen kann, besteht ein Vorteil gegenüber der aktuellen bzw. bald veralteten Technik, bei der die CPU Berechnungen händisch und relativ kompliziert über Betriebssystemschnittstellen und Kerneltreiber an die GPU senden muss. Dieser alte Umweg ist im folgenden Bild schematisch dargestellt:
Zum Schluss wollen wir noch auf den Umstand hinweisen, dass es nicht nur zwei Schlangen gibt. Jede Applikation kann ihre eigene Schlange benutzen, wobei es aber eine gewisse Obergrenze bei ca. 30 Stück gibt:
Man darf also gespannt auf die Verbesserung sein, die HSA mit sich bringt, allein es fehlt noch an der Hardware. AMD wird hoffentlich bald nachlegen und auf der kommenden APU13-Messe nicht nur Folien sondern auch Silizium zeigen.
Alle Folien gibt es in unserer Slideshow:
Abschließend möchten wir uns bei AMD für die Beantwortung unserer Fragen bedanken.
Quelle:
Standards — HSA Foundation.