arm TechDays 2018 Neue Mikroarchitektur bringt Cortex-A76 Laptop-Rechenleistung

Der neue Cortex-A76 verbindet hohe Rechenleistung mit Energieeffizienz.
Der neue Cortex-A76 verbindet hohe Rechenleistung mit Energieeffizienz.

Auf dem diesjährigen TechDay von arm in Austin, Texas, stellte Chefarchitekt Mike Filippo den neuen Cortex-A76-Applikationsprozessor vor. Eine von Grund auf neue Mikroarchitektur soll die Rechenleistung eines Laptops mit der Energieeffizienz eines Mobiltelefons verbinden. Hier ist unsere Analyse.

Die Entwicklungszentren für Cortex-A befinden sich, wie schon mehrfach erwähnt, neben Austin an arms Firmenzentrale in Cambridge sowie im wunderschönen Sophia-Antipolis in der Nähe von Nizza, dort wo vor 10 Jahren noch Texas Instruments seine OMAP-Prozessoren designte. Die letzten beiden Generationen, der Cortex-A73 und -75 stammten beide aus Frankreich, während die Energiespar-Varianten Cortex-A53 und -A55 aus Cambridge kamen. Der letzte Austin-Prozessor war der Cortex-A72.

Nach 4 Jahren Arbeit wurde nunmehr der Cortex-A76 enthüllt, der eine von Grund auf neu aufgebaute Mikroarchitektur implementiert, welche laut Filippo Basis für mindestens zwei weitere CPU-Generationen darstellen soll. Mit dem A72 hat diese nichts mehr gemein, wie wir später sehen werden.

Die Cortex-A76-Mikroarchitektur wurde mit Blick auf hohe Leistung und Energieeffizienz entwickelt. Ausgehend von einer grünen Wiese konnten Schwächen in den bisherigen Designs konsequent eliminiert werden. Arm kündigte eine Steigerung der Rechenleistung von 35 % bei gleichzeitiger Verbesserung der Energieeffizienz um 40 % gegenüber einem mit 2,8 GHz getakteten und in 10 nm implementierten Cortex-A75 an, wobei der A76 mit 3 GHz in 7 nm laufen soll. Was die Intel-Konkurrenz angeht, erklärte arm, dass drei A76 mit Caches flächenmäßig in die Größe einer Skylake-CPU passen würden – Skylake wird allerdings in 14 nm gefertigt, das muss man fairerweise erwähnen.

Die Konkurrenz incl. der arm-Lizenznehmer wie Samsung, Huawei etc. soll der A76 schlagen, indem er die Hälfte der Chipfläche und die Hälfte der Leistungsaufnahme aufweist. Diese Behautpung ist natürlich sehr ambitioniert und wird in der Praxis zu überprüfen sein.

Die Mikroarchitektur im Überblick

Die superskalarer Out-of-Order-CPU kommt mit 4 Befehlsdekodern und 8 Ausführungseinheiten daher (siehe Bilderstrecke, Folie 12) und weist insgesamt eine 13-stufige Pipeline auf. Im Frontend hat Arm eine neue Einheit für die Sprungvorhersage und das Laden von Instruktion (Fetch) gebaut, welche "predict-directed fetch" genannt wird, da die Sprungvorhersage direkt Daten in die Befehlsabruf-Einheit eingespeist. Dies ist ein neuer Ansatz, der einen höheren Datendurchsatz als auch eine geringere Stromaufnahme zur Folge hat.

Die Sprungvorhersage setzt dabei – und dies ist eine Prämiere in der CPU-Industrie - einen hybriden indirekten Prädiktor ein. Der Prädiktor ist von der Fetch-Einheit entkoppelt und seine wichtigsten Strukturen arbeiten unabhängig vom Rest der CPU. Er wird von 3-stufigen Branch-Target-Caches unterstützt: einem 16 Einträge umfassenden nanoBTB, einem 64 Einträge umfassenden microBTB und einem 6000 Einträge umfassenden Haupt-BTB. Die Trefferquote hinsichtlich richtig prognostizierter Verzweigungen im Programmablauf soll sich gegenüber dem A75 nochmals gesteigert haben.

Die Verzweigungseinheit kann pro Taktzyklus acht 16-bit-Instruktionen verarbeiten, welche in eine Fetch-Warteschlange vor dem Laden eines Befehls münden. Diese Warteschlange umfasst 12 Blöcke. Die Fetch-Einheit selbst arbeitet nur mit halbem Datendurchsatz, also pro Taktzyklus werden maximal vier 16-bit-Instruktionen geladen. Im Falle einer fehlerhaft vorhergesagten Verzweigung kann sie durch diese Architektur vor der restlichen Pipeline verborgen werden, ohne dass die Fetch-Einheit und der Rest der CPU blockiert werden.

Auch wenn der A76 eine 13-stufige Pipeline hat, reduzieren sich die Latenzzeiten auf die einer 11-stufigen Pipeline. Wie ist das möglich?  In kritischen Pfaden können sich die Stufen überlappen wie z.B. zwischen dem zweiten Taktzyklus der Sprungvorhersage und dem ersten Zyklus der Fetch-Operation. Während somit nominell 4 Pipeline-Stufen abgearbeitet werden müssen, beträgt die tatsächliche Latenzzeit dank der Überlappung nur 3 Taktzyklen.

Die Dekodier- und Register-Umbenennungsblöcke können 4 Befehle pro Taktzyklus verarbeiten, also mehr als der A73 mit zwei und der A75 mit 3 Instruktionen. Dafür werden im Gegensatz zu der 1-Taktzyklus-Dekodiereinheit von A73/A75 nunmehr 2 Taktzyklen benötigt. Allerdings muss man faierweise sagen, dass auch A73/A75 bei der Abarbeitung von Gleitkomma- und Vektor-Instruktionen zwei Taktzyklen für die Befehls-Dekodierung benötigten.

Am Ausgang der Dekodierer finden sich sogenannte Makro-Ops, die im Schnitt laut arm um den Faktor 1,06 größer als die ursprünglichen Befehle sind. Die Register-Umbenennung erfolgt getrennt für Integer/ASIMD/Flag-Operationen in separaten Einheiten, die mit Clock-Gating von der Taktversorgung abgeschnitten werden, wenn sie nicht benötigt werden. Dies führt zu enormen Energieeinsparungen. Benötigt die Dekodierung beim A76 zwei Taktzyklen, wurde die Registerumbenennung gegenüber A73/A75 von 2 auf 1 Taktzyklus verkürzt. Die Makro-Ops werden mit einem Verhältnis im Schnitt von 1,2 pro Instruktion zu Mikro-Ops erweitert, am Ende der Stufe werden bis zu 8 Mikro-Ops pro Taktzyklus ausgegeben, was gegenüber A73 bzw A75 eine Steigerung von 50 % bzw. 25 % darstellt (6 Mikro-Ops/Taktzyklus für A75 und 4 Mikro-Ops/Taktzyklus für A73).

Die Commit-Puffer-Größe des A76 beträgt 128 Einträge, wobei der Puffer in zwei Strukturen für die Befehlsverwaltung und Registerrückgewinnung aufgeteilt ist – arm nennt es „hybrides Commit-System“.  Anders als bei der Konkurrenz wurde die Puffergröße nicht erhöht, da laut arm eine Vergrößerung des Puffers um 7% nur zu einer Leistungssteigerung von 1 % führt.

Bilder: 24

Cortex-A76: Laptop-Rechenleistung mit Leistungsaufnahme eines Smartphones

Auf arms TechDays in Austin,Texas, wurde der neue Cortex-A76-Applikationsprozessor präsentiert. Eine vollkommen neue Mikroarchitektur soll die gesammelte Konkurrenz in den Schatten stellen.

Die Ausführungseinheiten

Der Integer-Teil enthält 6 Warteschlangen und Ausführungseinheiten, konkret zwei Lade/Speichereinheiten, eine Pipeline für Verzweigungen, zwei ALUs, die in der Lage sind, einfache arithmetische Operationen durchzuführen, und eine komplexe Pipeline für Multiplikations-, Divisions- und CRC-Operationen. Die drei Integer-Pipelines und die Verzweigungs-Pipeline werden von 16 Einträgen umfassenden Warteschlangen bedient, wogegen die zwei Lade-/Speichereinheiten jeweils von zwei 12 Einträgen umfassenden Warteschlangen gefüttert werden. Alle Warteschlangen umfassen 3 Pipelinestufen, wobei auch hier die erste Stufe sich mit der Registerumbenennung bzw. dem Versand der Mikro-Ops überschneidet. Damit wurde in Summe ein weiterer Taktzyklus gespart, so dass die Gesamtlatenz nur 11 statt 13 Taktzyklen beträgt. Der für Gleitkomma- und Vektoroperationen (ASIMD) zuständige Teil enthält zwei Pipelines, die von zwei 16 Einträgen umfassenden Warteschlangen bedient werden.

Wie sieht es nun im Backend mit Befehlsdurchsatz und Latenzzeit aus? Auf der Seite der ganzzahligen Operationen reduziert der A76 die Multiplikation und MAC-Operationen von 3 auf 2 Taktzyklen, wobei der Durchsatz im Vergleich zum A75 gleich bleibt. Da der A76 über 3 Integer-Pipelines verfügt, ist der Durchsatz im Vergleich zu den 2 Pipelines des A75 insgesamt um 50% gestiegen.

Die viel größeren und wichtigeren Verbesserungen finden sich in den Vektor-Pipelines, die für Gleitkomma- und ASIMD zuständig sind. Bei der Gleitkomma-Arithmetik wurde die Latenz von 3 auf 2 Taktzyklen reduziert und bei MAC-Befehlen von 5 auf 4 Taktzyklen.

Eine sogenannte "Dual 128 bit ASIMD" hat die Ausführungsbandbreite verdoppelt. Der A75 konnte nämlich nur mit einer seiner zwei Vektor-Pipelines 128-bit-Daten verarbeiten, während die andere auf 64-bit-Daten limitiert war. Beim A76 können beide Vektor-Pipelines 128-Bit-Daten verarbeiten,  so dass Operationen mit vierfacher Genauigkeit eine Verdoppelung der Rechenleistung zur Folge haben.

Laden und Speichern von Daten

Die beiden Pipelines für das Laden und Speichern von Daten weisen jeweils eine eigene Warteschlange mit 16 Einträgen auf. Der Daten-Cache ist auf 64 KB festgelegt und ist 4-fach assoziativ. Die Latenzzeit bleibt bei 4 Zyklen. Die D-TLBs betreiben eine separate Pipeline. Der A76 bekam einen völlig neu designten Prefetcher mit  4 verschiedenen Prefetching-Engines, die parallel laufen und verschiedene Datenmuster betrachten und Daten in die Caches laden. Der 64 KB große L1-Befehls-Cache liest bis zu 32 Bytes/Taktzyklus, gleiches gilt für den L1-Daten-Cache in beide Richtungen. Der L1 ist ein Writeback-Cache. Der L2-Cache ist in 256 oder 512 KB Größe konfigurierbar und ist weist datenseitig die gleichen 2x 32 Byte/Taktzyklus-Schreib- und Leseschnittstellen zum bis zu 4 MByte großen L3-Cache der DSU auf. Insgesamt sollen die mikroarchitektonischen Verbesserungen die Speicherbandbreite zum DRAM um bis zu 90 % verbessern.

Das soll der Cortex-A76 an Leistungszuwachs bringen

Im Allgemeinen verspricht arm einen Anstieg der IPC (Instruktionen pro Taktzyklus) bei Integer-Anweisungen um 25% und bei Gleitkomma-/Vektoroperationen um 35%. Zusammen mit einer bis zu 90% höheren Speicherbandbreite im Vergleich zum A75 soll der A76 dann rund 28% höhere GeekBench4-Benchmark-Ergebnisse und 35% mehr JavaScript-Leistung liefern (Benchmarks Octane, JetStream).

Zusammen mit einer Implementierung in 7 nm und einer Taktfrequenz-Erhöhung auf 3 GHz soll man insgesamt beim GeekBench-Benchmark auf eine Erhöhung um Faktor 1,8 bei Integer- und Faktor 2,4 bei Gleitkomma-Operationen kommen. In der Vergangenheit war arm jedoch auf Basis seiner Simulationen stets zu optimistisch hinsichlich seiner Ankündigungen möglicher Taktfrequenzen. Der A73 wurde zuerst mit bis zu 2,8 GHz und der Cortex A75 mit bis zu 3 GHz projiziert, die schnellsten Implementierungen bewegen sich tatsächlich bei 2.45 GHz bzw. 2.8 GHz.

Neben den absoluten Leistungssteigerungen ist natürlich die Energieeffizienz die wichtigste Kennzahl. Bei einem Zielbudget von 750 mW/CPU kommt der Cortex-A76 in 7 nm laut arm- Simulationen auf eine 40 % höhere Rechenleistung als ein in 10 nm implementierter Cortex-A75. Werden beide CPUs beim Benchmark SPECint2006 auf eine identische Rechenleistung skaliert (maximale Leistung des A75 bei 2,8 GHz), nimmt der A76 in 7 nm nur noch die Hälfte der Energie auf.

Das Leistungsbudget liegt laut arm bei 5 W für ein Octo-Core-SoC mit vier Cortex-A76 und vier Cortex-A55 im DynamIQ-Verbund. Im Vergleich zum Cortex-A73 mit 2,45 GHz – damit dürfte letztlich der Snapdragon 835 mit Kryo 280 gemeint sein – soll ein Cortex-A76 mit 3 GHz im Geekbench 4.1 etwa 80 Prozent schneller sein.

Fazit

Im Vergleich zu Apples Ax-SoCs der letzten Generationen ist die Mikroarchitektur des Cortex-A76 schlank und schwächer auf der Brust, was die IPC angeht. Der A76 steigert gegenüber dem A75 die Rechenleistung, konzentriert sich aber auch auf die Energieeffizienz. Wie schon in den vergangenen Jahren hat es arm auch diesmal wieder geschafft, pro Jahr 20-25 % an Rechenleistung zuzulegen.

Der Cortex-A76 soll bereits von zwei Lizenznehmern lizensiert worden sein, mein Tips sind HiSilicon (die Chip-Schmiede von Huawei) und Qualcomm. Samsung wird nach dem Desaster mit seiner selbstdesignten M3-CPU auf Basis einer ARMv8-A-Architekturlizenz, deren Energieeffizienz diplomatisch ausgedrückt, optimierbar ist, auch überlegen, ob der A76 mit seinem geringen Flächenbedarf und seiner Energieeffizienz eine Alternative zum M4 sein könnte.

Vor 10 Jahren prognostizierte ein Ex-Kollege von mir, dass wir die Rechenleistung eines Desktop-PCs bald in der Hosentasche werden tragen können. Mit einem Quad-Core-Cortex-A76 ausgestatteten Mobiltelefon der nächsten Generation dürften wir dieser Prognose zumindest sehr nahekommen.