Neue Architektur verschiebt Maßstäbe bei 32-bit-Flash-Mikrocontrollern Chip-Tuning für MCUs

Die AVR32-Architektur von Atmel bietet eine direkte Schnittstelle vom Speicher zur CPU, wodurch der Systembus komplett umgangen werden kann. Dies führt, bedingt durch eine schnellere Befehlsausführung, nicht nur zu einer höheren Rechenleistung, sondern auch zu einem niedrigeren Energieverbrauch als bei vergleichbaren MCUs.

Die AVR32-Architektur von Atmel bietet eine direkte Schnittstelle vom Speicher zur CPU, wodurch der Systembus komplett umgangen werden kann. Dies führt, bedingt durch eine schnellere Befehlsausführung, nicht nur zu einer höheren Rechenleistung, sondern auch zu einem niedrigeren Energieverbrauch als bei vergleichbaren MCUs.

Wenn man die Anforderungen moderner elektronischer Geräte betrachtet, stoßen viele derzeit verfügbare Mikrocontrollerarchitekturen sowohl im 16-bit- als auch im 32-bit-Sektor an ihre Grenzen. Dies betrifft insbesondere die folgenden Bereiche:

  • Der Befehlssatz, der in vielen Fällen noch auf den Architekturen der 80er und 90er Jahre basiert, reicht in der Regel für heutige Anwendungen nicht mehr aus.
  • Die Schnittstellen zu internen Speichern sind oftmals nicht optimal ausgelegt, was zu Einbußen in der Gesamtleistung führt.
  • Bauteile, die regelmäßig an der oberen Grenze der Taktfrequenz betrieben werden, haben eine hohe Leistungsaufnahme.

In der Tat erreichen flashbasierte 32-bit-MCUs kaum mehr als 50 Dhrystone MIPS (DMIPS), und die Senkung der durch hohe Taktfrequenzen bedingten Stromaufnahme ist schwierig, da hierzu der gesamte Fertigungsprozess optimiert werden muss. Die Architektur des AVR32 führt dagegen zu einer hohen Rechenleistung und Code-Dichte sowie einer niedrigen Leistungsaufnahme. Die erste Implementierung des Prozessorkerns mit der Bezeichnung AVR32 AP war für rechenintensive Anwendungen vorgesehen. Der jetzt neu vorgestellte Prozessorkern AVR32 UC ist dagegen für Flash-Mikrocontroller optimiert.

Der im AVR32 UC implementierte Befehlssatz entspricht im Wesentlichen dem des AVR32 AP, wobei die SIMD-Multimedia-Befehle und die Instruktionen für die Java-Beschleunigung fehlen. Dafür wurden zusätzlich „atomare“ Lese-, Änderungs- und Schreibbefehle implementiert.

Die erste Mikrocontroller-Familie auf Grundlage des neuen AVR32-UCProzessorkerns, die Serie AVR32 UC3A, weist bei 66 MHz eine Rechenleistung von 80 Dhrystone MIPS auf und hat bei 3,3 V eine Stromaufnahme von nur 40 mA. Die Leistungsaufnahme ist mit 1,65 mW/DMIPS um den Faktor 1,7 bis 4,3 besser als bei anderen vergleichbaren Architekturen mit ähnlichen Leistungsmerkmalen.

SRAM-Integration in die Pipeline

Der AVR32 UC ist branchenweit der erste Prozessorkern, der über ein Einzyklen- Lese-/Schreib-SRAM mit einer direkten Schnittstelle zur CPU verfügt (Bild 1). Hierdurch lässt sich der Systembus komplett umgehen. Dies ermöglicht eine schnellere Befehlsausführung und führt zu einem niedrigeren Energieverbrauch. Über ein Hochgeschwindigkeitsbus- Slave-Interface (HSB) können DMA-Controller oder andere HSB-Master Daten direkt in das SRAM schreiben oder von dort auslesen. Wenn die CPU und ein Hochgeschwindigkeits-Slave gleichzeitig Zugriff anfordern, wird der Zugriff nach einer programmierbaren Prioritätenstruktur geregelt. Durch die Programmierbarkeit lässt sich das System an die Anforderungen unterschiedlicher Anwendungen anpassen.

Der AVR32-UC-Prozessorkern umfasst Funktionen zum Leistungsmanagement, eine Speicherschutzeinheit (Memory Protection Unit, MPU) sowie eine 32-bit-Flash-Schnittstelle mit Einzyklenzugriff; außerdem einen 6-stufigen prioritätsgesteuerten Interrupt-Controller mit nicht maskierbarem Interrupt (NMI) und eine dreistufige Pipeline, die keine Anweisungs- oder Daten-Caches, keine Weiterreichung der Daten zwischen den einzelnen Pipeline-Stufen (Data-Forwarding) und keine Vorhersage von Verzweigungen benötigt (Bild 2). Die Stufe „Befehl holen“ (instruction fetch) wurde speziell so konzipiert, dass das Lesen von Anweisungen aus dem On-Chip- Flash-Speicher optimiert wird. Die Pipeline-Stufe liest pro Taktzyklus vorab eine 32-bit- oder zwei 16-bit-Anweisungen und lädt diese in einen internen Befehlspuffer. Der Puffer gewährleistet, dass eine Blockade der Pipeline bei der sequenziellen Programmausführung vollständig verhindert wird. Die Befehle aus dem On-Chip-Flash-Speicher können mit der maximalen CPU-Taktfrequenz ausgeführt werden, ohne dass die CPU anhalten muss, weil sie auf Anweisungen aus dem Flash-Speicher warten müsste. Nachdem die Befehle in der zweiten Pipline-Stufe decodiert wurden, gelangen sie in der dritten Stufe in eine von drei Untereinheiten: ALU, Multiplikations- und Lade-/Speicher-Einheit. Die ALU führt Rechen- und Logikoperationen einschließlich der Hardware-Division durch. Die Multiplikationseinheit führt die verschiedenen Multiplikations- und Multiplikations-/Akkumulations-Vorgänge (MAC) durch, und die Lade-/Speicher-Einheit übernimmt den Einzyklen-Speicherzugriff auf das SRAM oder Zugriffe auf den Hochgeschwindigkeitsbus (HSB). Im AVR32- UC-Prozessorkern treten keine Datenkonflikte auf. Daher können die Register-Dateien noch während des Taktzyklus, während dessen die Anweisungen ausgeführt werden, aktualisiert werden. Im Vergleich zu längeren Pipelines wird die Assembler-Programmierung vereinfacht, da kein Code-Scheduling erforderlich ist.