AMD goes ARM

Noch vor wenigen Jahren undenkbar: ARM-CTO Mike Muller hält Keynote bei AMD

25. November 2013, 16:51 Uhr | Frank Riemenschneider
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

SIMT als Beschleunigungswerkzeug für Prozessoren

SIMT (Single Instruction, Multiple Thread) bringt höhere Rechenleistung bei vergleichsweise geringem Portierungsaufwand.
SIMT (Single Instruction, Multiple Threads) bringt höhere Rechenleistung bei vergleichsweise geringem Portierungsaufwand.
© ARM

Als zweiten Punkt in seiner Keynote beschäftigte sich Muller mit der Frage, wie man die Rechenleistung durch architektonsiche Verbesserungen, also nicht mit immer höheren Taktfrequenzen oder mehr Cores, verbessern kann.

Ausgehend von ARMs Big.LITTLE-Prozessing-Modell stellt er einen Ansatz aus der ARM-Forschung vor, der an sich nicht neu ist, allerdings noch nicht bei Allzweck-Prozessoren eingesetzt wurde: SIMT (Single Instruction Multiple Threads). Dieses Verfahren wurde von NVIDIA für Grafik-Prozessoren (GPUs) entwickelt und wurde von ARM offenbar für Forschungszwecke in einen Allzweck-Prozessor portiert (Bild). Au seiner SIMT-Warteschlange werden Instruktionen parallel in drei Pipelines (Integer, Gleitkomma und Laden/Speichern) abgearbeitet, was den Vorteil hat, dass gegenüber anderen Programmiermodellen z.B. mit dem C++-Modell weitergearbeitet werden kann.

Natürlich gibt es auch andere Methoden zur Beschleunigung, diese haben allerdings einen hohen Portierungsaufwand. In der Tabelle zeigte Muller einige Alternativen auf, um den bekannten Matrizen-Multiplikations-Benchmark SGEMM zu beschleunigen. Ausgangspunkt war einen Implementierung in gewöhnlichem “C”, schon ARMs NEON-Engine mit ihren SIMD-Befehlen führte zu einer Verbesserung um Faktor 15 – der Portierungsaufwand ist allerdings nicht vernachlässigbar. Wird das ganze in Assembler umgeschrieben, steigt der Durchsatz sogar um Faktor 26, allerdings auf Kosten eines gigantischen Codierungsaufwandes.

Bleibt man in C und nutzt ARMs SIMT-Architektur, schlängt man 2 Fliegen mit einer Klappe: Die Berechnung beschleunigt sich um Faktor 35, während der Anpassungsaufwand gering ist. Mit Loop-Unrolling steigt die Beschleunigung sogar auf Faktor 44.

Der einzige Weg, die SGEMM-Applikation noch weiter zu beschleunigen, ist eine Portierung auf eine GPU – hier sit sogar Faktor 136 drin, allerdings ist der Aufwand auf Grund der völlig unterschiedlichen Programmiermodelle von CPU und GPU riesig.

SGEMM-Implementierung BeschleunigungsfaktorPortierungsaufwand
 ARM in C 1 Gering
ARM in C mit NEON-SIMD-Befehlen und Prefetching 15 Mittel bis Hoch
ARM in Assembler mit NEON-SIMD-Befehlen und Prefetching 26 Hoch
SIMT-ARM in C 35 Gering
SIMT-ARM in C und Loop-Unrolling 44 Gering bis Mittel
Mali GPU (4-Wege-Prozessing) 136 Hoch

Darstellung unterschiedlicher Wege, die Applikation SGEMM, einen Matrizen-Multiplikations-Benchmark, zu beschleunigen. Quelle: ARM



  1. Noch vor wenigen Jahren undenkbar: ARM-CTO Mike Muller hält Keynote bei AMD
  2. SIMT als Beschleunigungswerkzeug für Prozessoren

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu ARM Germany GmbH

Weitere Artikel zu AMD Advanced Micro Devices GmbH