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 4

Automatisches In- und Dekrementieren unterstützen

Die Lese- und Schreiboperationen der SIMD-Einheit unterstützen automatisches Inkrementieren und Dekrementieren der Speicheradressen, so dass das Adressregister anschließend zum nächsten oder zum vorherigen Wert zeigt. Statt der festen Werte lässt sich auch ein beliebiger Wert zum Adressregister addieren. Damit sind beispielsweise spezielle FIR-Filterformen wie Interpolationsfilter möglich, die nur eine Auswahl der Multiplikationen ausführen müssen, weil Daten oder Koeffizienten null sind.

Die Bit-Reverse-Adressierung ist eine Adressierungsart, die für die schnelle diskrete Fourier-Transformation (FFT) benötigt wird, um die Resultate der Butterfly-Operationen in einem Feld abzuspeichern. Die Vektor-Speicher-Instruktion VST unterstützt daher diese Adressierung.

Die Rechenleistung von RISC-Architekturen leidet normalerweise recht stark, wenn Sprungbefehle ausgeführt werden. Sie führen dazu, dass die Pipeline verworfen und an der Zieladresse des Sprungs wieder neu gestartet wird. Die neue Instruktion muss zunächst gelesen und dekodiert werden, bevor sie sich ausführen lässt. Daher kostet ein Sprung oft zwei bis drei Taktzyklen.

Diese Verzögerung lässt sich vermeiden, wenn die Instruction Fetch Unit rechtzeitig darüber informiert wird, dass der Sprung wahrscheinlich stattfindet und die Pipeline daher schon mal mit der Instruktion an der Zieladresse füttert. Dann wird die Pipeline nur verworfen, wenn diese Annahme nicht eintrifft. Nun könnte man meinen, dass das auch keine Verbesserung im Vergleich zur vorherigen Situation darstellt. Das ist jedoch nicht der Fall. Insbesondere am Ende von Programmschleifen sind bedingte Sprünge zu finden, die sehr häufig ausgeführt werden. Allerdings nicht, wenn der Schleifenzähler abgelaufen ist. Das ist die Art von Sprungbefehlen, die von einer Branch Prediction besonders profitieren.

Die Branch Prediction Unit im RH850G3M führt eine Historienliste über die letzten acht Sprungbefehle und deren Ziele. Es werden nur solche Sprungbefehle Berücksichtigung finden, deren Zieladresse kleiner ist als die Adresse des nachfolgenden Befehls, also Befehle, die im Code rückwärts springen. Das sind typischerweise Programmschleifen, die besonders von einer Vorhersage des Sprungziels profitieren. Zwei Bits in der Historienliste zeigen die Wahrscheinlichkeit an, mit der verzweigt wird. Damit sind vier Zustände codierbar, nämlich stark oder schwach verzweigt und stark oder schwach nicht verzweigt. Diese zwei Bits werden bei der Ausführung eines Sprungbefehls bis zum Maximum oder Minimum inkrementiert bzw. dekrementiert – je nachdem, ob der Sprung ausgeführt oder nicht ausgeführt wurde. Die Instruction Fetch Unit richtet sich bei der Entscheidung, welche Instruktion sie lesen soll, nach dieser Historienliste. Bei stark oder schwach verzweigt geht sie davon aus, dass auch diesmal wieder verzweigt wird, und holt die Instruktion vom Sprungziel. Andernfalls wird die nachfolgende Instruktion der Pipeline zugeführt. Der Vorteil dieser Zwei-Bit-Historienliste besteht darin, dass eine einmalige Ausnahme von der üblichen Verzweigungsrichtung noch nicht die Vorhersage kippt. Erst wenn mindestens zweimal anders verzweigt wurde, ändert sich die Vorhersage.


  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