Mehr Effizienz im Design: Hard- und Software als Tandem

Auf Veranstaltungen zu Embedded-Software wird immer wieder deutlich, wie unglaublich facettenreich dieser Bereich ist. Allein schon bei den Prozessoren ist die Vielfalt schwer zu erfassen; dann die unterschiedlichen Controller für Busse und Schnittstellen. Jeder Entwickler muss aus diesem Überangebot auswählen, was genau er für seine Applikation benötigt und...

Der Cortex-A8-Prozessorkern basiert auf der ARMv7-Architektur und markiert als Nachfolger der bisherigen Flaggschiffbaureihe ARM11 das obere Ende der ARM-Prozessorfamilie. Nach der Vorstellung des ARM7-Nachfolgers Cortex M3 zum Jahresanfang ist nun der Cortex A8 der zweite Vertreter der neuen Cortex-Prozessor-Generation.

Auf Veranstaltungen zu Embedded-Software wird immer wieder deutlich, wie unglaublich facettenreich dieser Bereich ist. Allein schon bei den Prozessoren ist die Vielfalt schwer zu erfassen; dann die unterschiedlichen Controller für Busse und Schnittstellen. Jeder Entwickler muss aus diesem Überangebot auswählen, was genau er für seine Applikation benötigt und mit welchen anderen Komponenten er kombinieren kann. Wer sich diese Arbeit künftig einfacher gestalten will, kann auf die Module der „Innovation-Station“ von Altium zugreifen: Fertige GSM-, GPS- oder USB-Module erleichtern hier als Referenzdesigns den Start eines Projekts. Schnell liegt Hardware vor, auf der Software entwickelt werden kann und die infolge der genannten Module mit der realen Umwelt interagiert.

Der von der britischen Prozessorschmiede ARM, Ltd., neu vorgestellte Prozessor „Cortex A8“ ist der zweite in einer neuen Generation von Prozessor-Cores, die ARM im Rahmen seiner Cortex-Familie auf den Markt gebracht hat. Gleichzeitig ist es der erste Applikationsprozessor in dieser Familie intelligenter Prozessoren. Mit einem hohen Maß an Leistungsfähigkeit und Energieeffizienz zielt der Prozessor auf ein breit gefächertes Spektrum leitungsgebundener und drahtloser Produkte. Die Spanne reicht von mobilen Handheld-Geräten über Set-Top-Boxen, Media-Gateways und Spielkonsolen bis hin zu Navigations- und Unterhaltungssystemen fürs Auto. Der Prozessor-Core deckt als Applikationsprozessor eine ganze Palette von Leistungsklassen ab. Er kommt in anspruchsvollen Consumer-Applikationen auf bis zu 2000 Dhrystone-MIPS, während er sich andererseits mit weniger als 300 mW Leistung begnügt, wenn in mobilen Geräten Sparsamkeit gefragt ist. Bild 1 zeigt den Aufbau des Cortex A8.

Kostengünstige, leistungsstarke FPGAs bieten enorme Chancen für die Entwicklung von Embedded-Systemen. Denn mit ihnen können sowohl Software als auch Hardware in einer Programmierumgebung erstellt werden. Allerdings bleibt die Frage offen, wie genau denn die Hardware in dieser Umgebung erstellt werden kann. Meist ist Erfahrung mit VHDL oder Verilog Voraussetzung, um solche Systeme zum Funktionieren zu bringen. Dies steigert aber zunächst einmal die Komplexität der Aufgaben, mit denen sich ein Entwickler auseinandersetzen muss.

Erleichterung bietet ein Designsystem dann, wenn die Definition der programmierbaren Hardware mit Methoden umgesetzt werden kann, die sowohl einem System-Entwickler als auch dem Softwareund Hardware-Entwickler vertraut sind. Dies leistet zum Beispiel ein grafischer Ansatz. System-Entwickler werden mit abstrakten, grafischen Eingaben vertraut sein. Ein Software-Entwickler fühlt sich in C zu Hause – umso besser, wenn ein leistungsstarker C-zu-Hardware-Compiler es dann möglich macht, Software direkt in programmierbare Hardware umzusetzen. Ein Hardware-Entwickler schließlich ist in aller Regel vertraut mit grafischen Schaltplaneingaben, bei denen die Elemente des Designs über signalführende Leitungen verbunden sind. Die Altium-Innovation-Station bietet auf einer neuen Abstraktionsebene Methoden, mit denen Embedded-Systeme sehr flexibel und mit Anbindung an die Entwicklung der Embedded-Hardware entworfen werden können. Bei dieser Plattform handelt es sich um die Kombination von Altium-Designer mit dem neuen Desktop-Nano-Board. Designer ist eine Entwicklungsumgebung, die alle Facetten für die Entwicklung von Embedded-Systemen in programmierbaren Bausteinen sowie die Erstellung von Systemen auf der Leiterplatte unterstützt.

Der Prozessor baut auf der ARMv7-Architektur auf und verbindet wichtige Elemente der bisherigen ARMv6-Architektur mit neuen Komponenten. Übernommen wurden der Thumb-2-Befehlssatz, der für eine hohe Codedichte und eine hohe Rechenleistung bürgt, und die „TrustZone“-Funktion zur Wahrung der Datensicherheit. Neue Merkmale der ARMv7-Architektur sind hingegen die „NEON“-Einheit für eine effiziente Signalverarbeitung bei Multimedia-Datenstreams und die Jazelle-RCT-Technologie (Runtime Compiler Target). Letztere maximiert die Leistungsfähigkeit und Codedichte von JIT-Compilern (Just In Time) für Bytecode-Sprachen wie Java.

Der Thumb-2-Befehlssatz ist aus 16- und 32-bit-Instruktionen zusammengesetzt, um Codedichte und Rechenleistung zu verbessern. Während der ursprüngliche ARM-Befehlssatz „Fixed-Length“-Befehle einer Länge von 32 bit enthält, besteht der Thumb-Befehlssatz aus 16-bit-Anweisungen, die eine funktionale Teilmenge der 32-bit-Befehle implementieren. Da sich nicht alle Operationen auf die kürzeren Befehle abbilden ließen, waren gelegentlich mehrere Thumb-Befehle nötig, um die Aufgaben eines 32-bit-Befehls auszuführen.

Das NanoBoard ist ein vielseitiges Entwicklungsboard, FPGAs befinden sich dort auf auswechselbaren Einsteckkarten, sodass ein Wechsel der Baustein-Familie oder gar des FPGAAnbieters ohne Probleme möglich ist. Neben einiger Standard-Peripherie auf dem NanoBoard (Touchscreen, RS 232, CAN, PS/2, ADC/DAC, I2C, ...) kann weitere Peripherie über Einsteckkarten nach Bedarf hinzugefügt werden. Hierzu gehören Module mit Ethernet, USB, IrDA, Speicherkartenleser, ATA und Audio/ Video. Dadurch steht Entwicklern eine sehr flexible Plattform zur Verfügung, die für verschiedenste Applikationen genutzt und konfiguriert werden kann.

Innovativ mit programmierbarer Hardware

Der Schritt von Assembler zu C/C++ bei der Mikrocontroller-Programmierung hat der Software-Entwicklung neue Möglichkeiten gebracht. Nachteile wie größere Speicherbelegung oder geringere Effizienz werden durch Vorteile wie Reduzierung der Komplexität, leichtere Erlernbarkeit, Portierung, Standardisierung und auch Möglichkeiten zum Abfangen typischer Programmierfehler aufgehoben. C-Compiler sind somit bei allen größeren und verbreiteten Mikrocontrollern zum Standard geworden.

Die Architektur des Cortex-A8

Der Thumb-2-Befehlssatz räumt mit den Abstrichen bei der Rechenleistung der Vorgängerversion auf, indem er etwa 130 zusätzliche Befehle vorsieht. Zu den wichtigsten Vorteilen von Thumb-2 gehört die Tatsache, dass kein Wechsel zwischen ARM und Thumb-Betriebsart mehr notwendig ist, um Interrupts zu bearbeiten oder den Zugriff auf sämtliche Prozessorregister freizugeben. Dementsprechend können Applikationen vollständig mit Thumb-2-Instruktionen geschrieben werden. Mit dem ursprünglichen Thumb-Modus war der Prozessor dagegen gezwungen, zwischen ARM- und Thumb-Modus umzuschalten.

Einen hohen Stellenwert unter den neuen Eigenschaften hat die ARM-NEON-Einheit, die in einer Vielzahl realer Applikationen – umgerechnet auf den einzelnen Taktzyklus – die zwei bis vierfache Rechenleistung eines Prozessors der ARM11-Familie erreicht. Bei NEON handelt es sich um eine hybride 64/128-bit-SIMD-Architektur zur Beschleunigung von Aufgaben wie Video-Codierung und -Decodierung, 3D-Grafik und digitale Audio-Verarbeitung. Mit ihrer unabhängigen Pipeline und ihrem Registersatz kann sie sowohl Integer- als auch Gleitkomma-Werte verarbeiten. Ebenso unterstützt sie unausgerichtete Datenzugriffe und das einfache Laden von verschachtelten Datenstrukturen. Durch den Einsatz der NEON-Einheit für typische Multimedia-Funktionen kann der Cortex-A8-Prozessor MPEG-4-Videos im VGA-Format (mit „Dering“- und „Deblock“-Filtern sowie „yuv2rgb“) mit 30 Frames/s bei 275 MHz Taktfrequenz sowie H.264-Videos bei 350 MHz Taktfrequenz decodieren.

Ihren ersten Auftritt in einem ARM-Prozessor hat außerdem die Jazelle-RCT-Technologie. Mit dieser Architekturergänzung reduziert sich der Speicher-Platzbedarf von Just-in-Time-Bytecode-Applikationen auf ein Drittel der ursprünglichen Größe. Der geringere Codeumfang wiederum resultiert in einem Leistungs-Schub und einer Verringerung der Leistungsaufnahme.

Im Cortex-A8-Prozessor implementiert ist außerdem die TrustZone-Funktion, die zum Beispiel in Mobiltelefonen, PDAs und Set-Top-Boxen mit offenen Betriebssystemen dazu beiträgt, die Vertraulichkeit von Daten zu gewährleisten und DRM-Rechte (Digital Rights Management) zu sichern.

Durch ihre Einbindung in den Prozessor schützt TrustZone Peripheriefunktionen und Speicher sowohl innerhalb als auch außerhalb des Chips vor Angriffen. Ein geschützter Monitor im Prozessor fungiert als Gatekeeper und schaltet das System wechselweise in den sicheren und nicht-sicheren Zustand. Im sicheren Zustand verarbeitet der Prozessor „vertrauenswürdigen“ Code für sicherheitsempfindliche Aufgaben (z.B. Authentifizierung oder Signaturbearbeitung).

Die NEON-Einheit trägt jedoch nicht nur zur hohen Signalverarbeitungsleistung des Prozessors bei, sondern ermöglicht auch die softwaremäßige Umsetzung von Datenverarbeitungs-Applikationen. Das Resultat ist eine flexible Plattform, die durch das Herunterladen neuer Software oder eines Treibers ganz einfach an neue Algorithmen und Plattformen angepasst werden kann.

Solche Erleichterungen finden sich auch bei programmierbaren Bausteinen im Umfeld von Embedded-Systemen. Bild 1 zeigt ein OpenBus-Dokument eines Wave-Players. Das System wird grafisch mit verschiedenen Symbolen definiert und spiegelt die Denkweise des Software-Entwicklers wider, da es den Informationsfluss und die interaktiven Funktionen des Systems darstellt. Im genannten Beispiel ist der TSK3000 (32-bit-RISC-Soft-Prozessor) das Herzstück der Applikation. Teile der Applikation werden in externem SRAM abgelegt (XMEM). Die Anwendung liest Wave-Daten aus einer im SPI-Modus betriebenen SD-Karte und gibt diese über ein I²S-Audiosystem aus. Ein TFT-Touchscreen zeigt den Inhalt der SD-Karte und erleichtert die Navigation in den Verzeichnissen sowie die Wiedergabesteuerung der Audiodaten. Das System wird in einem FPGA implementiert und auf dem Nano-Board getestet. Die gesamte Komplexität der Implementierung in Hardware wird dabei von der Entwicklungsumgebung abgefangen, sodass ein solches System in kürzester Zeit implementiert und getestet werden kann. Was ist dabei zu beachten?

Die Funktion steht im Vordergrund

Zunächst einmal ist es vor der Eingabe eines Systems nicht notwendig, eine Entscheidung über die zu verwendende FPGA-Architektur zu treffen. Der Entwickler kann sich also von Beginn an voll und ganz auf die Applikation konzentrieren und nicht auf die einschränkenden Randbedingungen einer bestimmten Architektur. Um dies zu ermöglichen, liegen hinter jedem Symbol von Bild 1 für alle unterstützten FPGAs synthetisierte und verifizierte Modelle.