Mikrocontroller

40-nm-Flash-Technologie für Automotive

12. April 2013, 17:04 Uhr | Von Michael Krämer
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 3

SIMD-Architektur

Bild 2. Die SIMD-Einheit des RH850G3M.
Bild 2. Die SIMD-Einheit des RH850G3M.
© Renesas

SIMD steht für Single Instruction Multiple Data, also die Verarbeitung mehrerer Operanden mit einem Befehl. Damit eignet sich diese Einheit insbesondere für die digitale Signalverarbeitung, die in der Regel einfache Grundoperationen wie Multiplizieren und Aufaddieren benötigt, diese aber sehr häufig und schnell ausführen muss. Wie das vereinfachte Blockdiagramm in Bild 2 zeigt, hat die SIMD-Einheit Zugriff auf 32 eigene und nicht anderweitig verwendete 64‑bit-Vektorregister. Sie bearbeitet mit einem Befehl 64 bit breite Vektoren, die in zwei 32‑bit- oder vier 16‑bit-Daten aufgeteilt sind.

Die SIMD-Einheit hat vollen Zugriff auf den Datenbus der CPU und kann daher eigenständig ihre Register aus dem Speicher lesen und die Ergebnisse dorthin zurückschreiben. Dazu wurden Adressierungsarten implementiert, die bei Filterberechnungen von großem Vorteil sind, nämlich die Modulo-Adressierung und das automatische Adress-Inkrementieren. Darüber hinaus wird die Bit-Reverse-Adressierung unterstützt, die bei der schnellen Fourier-Transformation (FFT) benötigt wird. Neben 16-bit-, 32-bit- und 64-bit-Integer unterstützt die SIMD-Einheit auch Festkommazahlen.

Der Befehlssatz der SIMD-Einheit lässt sich grob in die folgenden Kategorien einteilen:

  • Logische Operationen und Verschiebeoperationen
  • Datenoperationen, zum Beispiel Lesen, Schreiben, Vertauschen oder Typenumwandlungen
  • Vergleiche, Suchen von Maximum und Minimum
  • Arithmetische Operationen wie Addition, Multiplikation reeller und komplexer Zahlen, Multiplikation und Addition mit und ohne Sättigung oder Rundung für reelle Zahlen und für den Real- sowie den Imaginärteil komplexer Zahlen, Biquad-Operation für IIR-Filter, Negierung, Absolutwertbestimmung.

Die allermeisten der SIMD-Befehle werden in einem Taktzyklus ausgeführt und in der Regel steht bereits nach diesem einen Takt das Ergebnis fest. Einige wenige Instruktionen haben eine Latenzzeit von drei Takten. Das heißt, das Ergebnis liegt nach drei Takten vor. Die nachfolgend exemplarisch dargestellte VMULCX.W-Instruktion (Bild 3) ist die einzige, die zwei Takte Ausführungszeit benötigt und zwei bis vier Takte Latenzzeit hat: VMULCX.H (Vector multiply halfword with complex number) im Format VMULCX.H vreg1, vreg2, vreg3.

Die beiden Eingangsvektoren in vreg1 und vreg2 werden als komplexe Zahlen mit einem 16-bit-Real- und einem 16-bit-Imaginärteil aufgefasst. Nach den Rechenregeln komplexer Arithmetik werden jeweils zwei dieser Zahlen miteinander multipliziert, gerundet und das Ergebnis in vreg3 gespeichert.

Real- und Imaginärteile sind jeweils vorzeichenbehaftete 16-bit-Integerzahlen. Hier ist nur die Variante mit 16-bit-Datentypen gezeigt, eine Instruktion für 32-bit-Datentypen ist aber ebenso verfügbar.

Bild 3. Die VMULCX.W-Instruktion benötigt zwei Takte Ausführungszeit und hat zwei bis vier Takte Latenzzeit.
Bild 3. Die VMULCX.W-Instruktion benötigt zwei Takte Ausführungszeit und hat zwei bis vier Takte Latenzzeit.
© Renesas

  1. 40-nm-Flash-Technologie für Automotive
  2. Die RH850G3M-Architektur erweitern
  3. Hardware-Threading zur Unterstützung virtueller Betriebssysteme
  4. SIMD-Architektur
  5. Automatisches In- und Dekrementieren unterstützen
  6. Einsatz in Body, Chassis, Safety, Audio oder ADAS
  7. Der Autor

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Renesas Electronics Europe GmbH

Weitere Artikel zu Mikrocontroller