Der einsame Kämpfer Renesas gegen ARM und Microchip – ist CISC besser als RISC?

Mit der RX-Familie will Renesas auch zukünftig der gesamten ARM-Community und MIPS-Lizenznehmer Microchip das Fürchten lehren – dies ist zumindest das Ziel von Terukazu Watanabe, der bei Renesas die RX-Familie verantwortet. Dank der wachsenden Akzeptanz des CoreMark-Benchmarks von EEMBC kann man nun auch endlich seriöse Vergleiche vornehmen.

Nach dem Merger mit NEC, von der man die weiterverbreitete V850-Familie erbte, ist Renesas unangefochten Marktführer bei den 32-bit-Mikrocontrollern. Noch in der „alten“ Firma Renesas setzte man große Hoffnungen auf die „Renesas Extrem“ (RX) genannte Mikrocontroller-Familie, die im Gegensatz zu ARM und MIPS auf eine CISC-Architektur setzt.

Wie nicht anders zu erwarten, kann der RX-Core mit seiner 5-stufigen Pipeline und Out-of-order-befehlsausführung den Cortex-M3 von ARM mit seiner 3-stufigen Pipeline „outperformen“: Renesas gibt 1,65 DMIPS/MHz und eine maximale Taktfrequenz von 100 MHz an – doch Vorsicht ist angebracht: Die 1,65 DMIPS/MHz werden nur dann erreicht, wenn der Compiler im INLINE-Modus betrieben wird, d.h. wenn bei Funktionsaufrufen der Code quasi ins Hauptprogramm kopiert wird, so dass der mit dem Aufruf von Funktionen verbundene Overhead (Registerinhalte und Programmzähler auf Stapel sichern, neuen Propgrammzähler laden u.s.w.) entfällt.

Ohne INLINE-Modus erreicht der RX-Core „nur“ 1,38 DMIPS/MHz, was freilich immer noch über dem Wert eines Cortex-M3 liegt, der es auf 1,25 DMIPS/MHz bringt. RX nutzt dazu eine verbesserte Harvard-Architektur. Harvard-Architekturen besitzen separate Speicherbereiche und Busse für Befehle und Daten, so dass Daten- und Instruktionszugriffe gleichzeitig ablaufen können. Von Nachteil bei der klassischen Harvard-Architektur ist, dass konstant bleibende Daten im Code-Bereich gespeichert werden und diese folglich nach einem Reset in den Daten-Bestand (in der Regel RAM) verschoben werden müssen. Dies verlängert die Zeit zum Hochfahren und vergeudet teuren RAM-Speicherplatz. Die klassische Von-Neumann-Architektur besitzt nur einen Speicherbereich/Bus für Code und Daten und umgeht damit diese Nachteile, ist dafür aber langsamer. Die RX-Erweiterungen vereinen das Beste aus beidem: RX benutzt separate Busse (für Code sogar 64 Bit breit) mit gemeinsamem Speicherraum, und ist damit so schnell wie Harvard, spart dabei aber RAM-Ressourcen wie nach Von-Neumann.

Nichtsdestotrotz ist der Drystone-Benchmark für Mikrocontroller auf Grund der uneinheitlichen Rahemenbedingungen bei den Messungen für Vergleiche nur bedingt einsetzbar. Wesentlich besser geeigent ist der CoreMark-Benchmark der EEMBC (The Embedded Microprocessor Benchmark Consortium), einer Non-Profit-Organisation, die von Markus Levy geleitet wird, der schon mehrfach auf Fachkongressen der WEKA Mediengruppe (zuletzt auf der Embedded World 2011) auftrat.

Nachdem die Akzeptanz des CoreMark-Benchmarks in der Industrie zunächst limitiert war, finden sich jetzt Werte für alle relevanten Architekturen wieder. Der RX610 kommt bei 100 MHz bei Codeausführung aus dem Flash-Speicher bei Einsatz des RedHat-Compilers auf 2,247 Coremark/MHz. Dabei kommt ihm der MONOS-Flash-Speicher mit einer konkurrenzlos kurzen Lesezugriffszeit von 10 ns zu Gute.

Die einzige von EEMBC getestete MCU-Familie aus dem ARM-Universum, die überhaupt damit konkurrieren kann, ist der in 90 nm gefertigte STM32F2xxx, der bei 120 MHz auch ohne MONOS-Flash-Speicher auf mehr als respektable 2,120 Coremark/MHz kommt, obwohl man annehmen müsste, dass der Flash-Speicher in Wait-States reinläuft. Der Trick ist ST Microelectronics sogenannter Adaptive-Real-Time-Memory-Accelerator (ART), der es ermöglicht, einen nur mit 30 MHz betriebenen Flash-Speicher einzusetzen und trotzdem Null Wait-States zu ermöglichen. Wie geht das?