Algorithmus auf ARM ARM-Befehlssätze im Vergleich

Ein gutes Vergleichskriterium für Befehlssätze von Prozessorarchitekturen ist die Auswertung mathematischer Algorithmen. Dabei zeigen sich Schwächen wie auch Stärken sehr deutlich, wie das folgende Beispiel aus der Praxis zeigt.

Algorithmus auf ARM

Ein gutes Vergleichskriterium für Befehlssätze von Prozessorarchitekturen ist die Auswertung mathematischer Algorithmen. Dabei zeigen sich Schwächen wie auch Stärken sehr deutlich, wie das folgende Beispiel aus der Praxis zeigt.

INHALT:
Das Festkommaformat Qn.m
Umsetzung auf dem ARM7TDMI
Vergleichend betrachtet
Wollen Sie mehr wissen?
Literatur
verwandte Artikel
Autoren

Als erstes wird ein mathematischer Algorithmus auf einem ARM7-Controller umgesetzt. Dabei kommt der »LPC2138« mit dem ARM7TDMI-S-Core der Firma NXP zum Einsatz. Dabei stehen der ARM- und der Thumb-Befehlssatz zur Verfügung, sodass sich die Ergebnisse auf alle weiteren Derivate dieses Controllertyps anwenden lassen. So zeigen sich die Unterschiede zwischen dem ARM- und dem Thumb-Befehlssatz. Mit dem Signalverarbeitungsalgorithmus als Benchmark wird dann der ARM7TDMI-S mit anderen 16- und 32-Bit-Mikrocontrollersystemen verglichen.

Als Beispiel zur Berechnung dient ein Polynom fünfter Ordnung, das beispielsweise in der Signal- und Bildverarbeitung häufig zum Einsatz kommt. Allgemein lässt sich dieses Polynom nach Gleichung (1) beschreiben. Löst man die Summe allgemeingültig auf, so ergibt sich die Form (2). Mit dieser Gleichung lassen sich Funktionen, Integrale und andere mathematische Probleme in bestimmten Bereichen interpolieren und somit näherungsweise lösen. »n« ist die Ordnung des Polynoms. Der Bestimmung der Koeffizienten a0 bis an dient beispielsweise eine Taylorreihe.

Um die Gleichung auf einem Rechnersystem implementieren zu können, sind einige Umformungen nötig. Nach (2) ergibt sich für ein Polynom 5. Ordnung das Rechenschema in (3), welches sich zu (4) auflösen lässt. Zerlegt man diese Gleichung nun in die Grundrechenoperationen Addition und Multiplikation, so ergibt das im Kasten »Rechnergeeigneter Algorithmus « dargestellte Verfahren. Für die praktische Realisierung gilt es, einen Speicherbereich für die Koeffizienten a0 bis an im RAM anzulegen. Der Programmcode selbst steht im Flash, alle weiteren Variablen werden im RAM beziehungsweise im Registersatz behandelt.

Für die Gegenüberstellungen wurde der Algorithmus für ein konkretes Beispiel auf der ARM7-MCU umgesetzt. Die Koeffizienten für einen Sinus wurden mittels Taylorreihe erzeugt. Die zu lösende Sinusfunktion ist in Gleichung (5) mit k = 0, 1, ..., die zugehörigen Koeffizienten der Taylorreihe sind a0 = 0, a1 = 1/10 · Pi, a2 = 0, a3 = -1/10 · Pi3, a4 = 0, a5 = 1/1200 · Pi5. Das Polynom beschreibt den Sinus im Intervall -0,5 <= x <= 0,5 bei einem maximalen Fehler von 0,23% (Rechenweg im Fließkommaformat) im Bezug auf die doppelte Amplitude, also 2k.