Embedded-Prozessoren Neue Sitaras mit Rekord-Rechenleistung

Neue Embedded-Przessoren der Sitara-Familie
Neue Embedded-Przessoren der Sitara-Familie

Texas Instruments hat fünf neue Embedded-Prozessoren der Sitara-Familie vorgestellt, die dank ARMs stärksten 32-Bit-Core deutlich mehr Rechenleistung bereitstellen als ihre Vorgänger.

Zuerst gab es bei TI die Sitara-AM38xx-Chips, die den antiquierten Cortex-A8 einsetzten und sich bis zu knapp 5 W genehmigten, dann kamen die in ebenfalls in 45 nm gefertigten deutlich energieeffizienteren Sitara-AM437x-Chips mit dem Cortex-A9 und nun gibt es eine neue AM57x genannte Familie, die ARMs stärksten 32-bit-CPU-Core, den Cortex-A15, in einem prorietären 28-nm-Low-Power-Prozess implementiert.

Die fünf neuen Produkte heißen AM5716 (dieses Produkt gibt es merkwürdigerweise in zwei Varianten), AM5726, AM5718 und AM5728. Die Derivate mit der "2" an vorletzter Stelle sind dabei Dual-Core-Ausführungen mit 1,5 GHz Taktfrequenz, die Derivate mit der "8" an letzter Stelle beinhalten dazu eine bzw. zwei GPUs des Typs PowerVR SGX544 von Imagination Technologies für 3D-Grafik und eine weitere GPU des Typs GC320 von Vivante für die 2D-Grafik wowie einen Hardware-Beschleuniger für Video-Codierung und -Dekodierung in HD-Auflösung (H.264, MPEG4, MPEG2, JPEG, VC1).

Wie ihre Vorfahren zielen die neuen Sitara-Produkte auf eine breite Palette von Embedded-Anwendungen, der Fokus liegt jedoch auf Echtzeit-Industrie-Kommunikation, Test- und Messinstrumente, Robotik, Industrie-PCs, medizinische Geräte und Motorsteuerung. Natürlich sind sie dank ihrer GPUs besonders gut für bildgebende Geräte (z.B. CTs, MRI in der Medizintechnik) geeignet.

Bild 1 zeigt die jetzt verwendete CPU ARM Cortex-A15. Die extrem lange Pipeline wurde seinerzeit für Taktfrequenzen jenseits der 2 GHz designt, welche man glaubte, in Mobiltelefonen und Tablets benötigen zu müssen. Leider erwies sich der Cortex-A15 als viel zu energiehungrig, was dann in dem big.LITTLE-Prozessing-Modell mündete. TI taktet den A15 mit maximal 1,5 GHz, zu diesem Zeitpunkt hatten wir nur ein vorläufiges Power-Estimation-Sheet, wo die Taktfrequenz fest auf 1,0 GHz fixiert ist. Bei 100 % Auslastung beider A15 werden dabei 2,3 W berechnet.

Der Cortex-A15 weist ein Reihe von Design-Merkmalen auf, die schon von anderen High-End-RISC-Prozessoren bekannt sind: Er hat eine extrem lange Pipeline (dazu später mehr), eine sehr aggressive Out-of-Order-Befehlsausführung, unterstützt acht oder noch mehr Cache-kohärente Cores, zwei separate Puffer für eine optimierte Sprungvorhersage, Registerumbenennung, einen auf 1 Tbyte erweiterten physikalischen Adressraum und Hardware-Unterstützung für OS-Virtualisierung. Das einzige fehlende leistungssteigernde Merkmal ist Multithreading.

Die extrem lange Pipeline

Der Cortex-A15 weist eine wirklich außergewöhnlich lange Pipeline auf, die bis zu 24 Stufen umfassen kann (Bild 1). Alleine die Stufen zum Laden und Decodieren der Befehle umfassen 12 Stufen, was mehr ist als die gesamte Pipeline des ARM11. Die Befehlsausführung in einer der 8 Execution-Einheiten nimmt 3 bis 12 Stufen in Anspruch. Da wir grundsätzliche die Pipeline-Länge über einen Lade-Befehl charakterisieren, hat die Pipeline in unserem Vergleichsschema eine Länge von 18 Stufen.

Die lange Stufe zum Laden der Befehle (Fetch) ist der hohen Ziel-Taktfrequenz bis zu 2,5 GHz geschuldet. In diesem Fall hätte ein L1-Cache nur 0,4 ns Antwortzeit, was nicht annähernd ausreichend ist, erst Recht dann nicht, wenn die Caches synthetisiert werden. Mit 5 Stufen stehen dann ausreichende 2 ns zur Verfügung.

Decodieren, Registerumbennennung und die Zuweisung an eine der 8 Ausführungseinheiten benötigen weitere sieben Taktzyklen. Der Cortex-A15 hat mit 128 mehr Schattenregister, die anders als bei Cortex-A8 und Cortex-A9 mit Neon’s Multimedia-Registern geteilt werden. Bei letzeren hatte Neon einen eigenen Registersatz für Registerumbenennung, beim Cortex-A15 arbeiten Neon- und „herkömmliche“ ARM-Anweisungen mit demselben Register-Vorrat, wodurch natürlich die Geschwindigkeit des Datenaustauschs zwischen Integer-Code und Neon’s DSP-Anweisungen erhöht wird.

Die letzte Stufe wird zur Zuweisung von einem bis drei Befehlen an die Ausführungs-Einheiten benötigt, so dass vor dem Beginn irgendeiner wirklich sinnvollen Arbeit bereits 12 Pipeline-Stufen durchlaufen wurden.

Wie in Bild 1 ersichtlich ist, hat der Cortex-A15 zwei Integer-Einheiten für herkömmliche ARM-Anweisungen, zwei für Gleitkomma- oder Neon-Anweisungen, zwei für Lade/Speichern-Befehle, eine für Verzweigungen und eine für Integer-Multiplikationen bzw. -Divisionen. Während letztere nicht für alle Anwendungen ausreichen dürfte (z.B. für die Verarbeitung von Vodeo-Datenströmen), können die beiden Gleitkomma/Neon-Einheiten bis zu acht SIMD-Multiplikationen bzw. -Divisionen gleichzeitig ausführen.

Die ersten zwei Taktzyklen werden für die Bereitstellung der Daten benötigt, ein Taktzyklus für die Rückgabe der Ergebnisse am Ende der Berechnungen. Integer-Berechnungen und Verzweigungen nehmen nur einen Taktzyklus in Anspruch, Integer-Multiplikationen und -Divisionen benötigen wie Lade/Speicher-Befehle in jedem Fall unabhängig von der Operanden-Größe vier Taktzyklen. Lediglich Gleitkomma- und Neon-Anweisungen weisen variable Ausführungszeiten auf.

Nach den ersten 12 Pipeline-Stufen folgen noch 7 Warteschlangen für die 8 Ausführungs-Einheiten. Pro Taktzyklus werden von der Dispatch-Stufe ein bis drei ARM-Befehle in diese eingespeist. An dieser Stelle werden sie je nach Bedarf umgeordnet: Eine blockierte Anweisung am Anfang der Warteschlange kann durch eine folgende Anweisung, die bereit zur Abarbeitung ist, quasi überholt werden. Die Warteschlangen für die Integer- und Multiplikations/Divisions-Einheiten umfassen jeweils 8 Einträge, während die für Gleitkomma/Neon- und Lade/Speichern-Einheiten 16 Einträge haben.

Die beiden Integer-Pipelines sind identisch. Anders als bei einigen anderen superskalaren Designs hängt ihre Verfügbarkeit nicht von dem Befehlsmix ab, der zuvor verarbeitet wurde. Die Neon/Gleitkomma- und Lade-Speichern-Pipelines sind nicht gleich. Lediglich eine Gleitkomma/Neon-Einheit kann 128-bit-Operationen ausführen und „pickt“ diese quasi aus der gemeinsamen Warteschlange heraus.

Die beiden Lade/Speichern-Pipelines arbeiten auch nach dem Out-of-Order-Prinzip, dabei aber so zusammen, dass Dateninkonsistenzen vermieden werden. Das Laden, das 4 Taktzyklen benötigt, wenn sich die Daten im L1-Cache befinden, geschieht Out-of-Order, allerdings werden Daten nicht vor einem Speichern an derselben Adresse gelesen. Um die Datenintegrität sicherzustellen, erfolgen Schreibzugriffe in der Originalreihenfolge. Daten, die weniger als 32 bit umfassen (z.B. Bytes, Wörter) werden wenn möglich in einen Datentransfer zusammengefasst. Wenn z.B. vier Byte-Werte an vier aufeinanderfolgende Adressen geschrieben werden sollen, würde dies in einen Zugriff auf Cache oder Hauptspeicher kombiniert.

Am Ende des Tages erzielt der Cortex-A15 gegenüber dem A9 dank dieser deutlich aggressiveren Mikroarchitektur bei der Rechenleistung einen Vorteil von 3,5 DMIPS/MHz gegenüber 2,5 DMIPS/MHz, was beim Dual-Core-Sitara mit 1,5 GHz zu 10.500 DMIPS führt.