Algorithmus auf ARM

ARM-Befehlssätze im Vergleich #####

28. September 2007, 11:21 Uhr |
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 4

ARM-Befehlssätze im Vergleich

Druckversion

Das Festkommaformat Qn.m

Um die Performance des Algorithmus gegenüber einer Fließkommalösung zu erhöhen, kommt für die Berechnung das Festkommaformat »Qn.m« zum Einsatz. Bei diesem Zahlenformat steht »n« für die Vorkommastellen (Anzahl Bits) und »m« für die Nachkommastellen (Anzahl Bits). Eine Unterscheidung in signed und unsigned wird, wie gewohnt, über das MSB (Most Significant Bit) vorgenommen. So ist beispielsweise »unsigned Q16.0« eine gewöhnliche vorzeichenlose 16-Bit-Zahl. »signed Q0.15« ist eine 16-Bit-Zahl wobei hier das MSB das Signum dargestellt und damit der Bereich -1 <= x <= 1-2-15 abgebildet wird. Das Vorzeichen ist zudem als erste Vorkommastelle zu deuten, geht jedoch in n nicht mit ein.

Für die Gegenüberstellung werden die Formate »signed Q0.31«, »signed Q0.15« und »signed Q0.7« umgesetzt. Im Folgenden werde jegliche Qn.m-Bezeichnung als vorzeichenbehaftet gedeutet. Da die meisten Compiler dieses Zahlenformat nicht unterstützen, ist es sinnvoll, die beiden Grundrechenoperationen, welche für die Berechnung in Frage kommen, näher zu betrachten. Bei der Addition zweier gleich skalierter Qn.m-Zahlen (etwa zwei Q0.15-Zahlen) findet die normale Addition Verwendung. Bei der Multiplikation gilt es, mehr zu beachten. Die Multiplikation ist vorzeichenbehaftet, und wie im dezimalen System ist die Kommastellenkorrektur zu beachten. Dies geschieht in Abhängigkeit von »n« der beiden Multiplikatoren durch einen einfachen oder mehrfachen Schiebebefehl nach links. Weiterhin wird bei der Multiplikation noch eine Rundung vorgenommen, sodass das gleiche Zahlenformat als Ergebnis entsteht (vgl. Kasten »Multiplikation zweier Q0.15-Zahlen«).

Bild02_tm_23.jpg
Bild 2: ARM7-Entwicklungssystem der Firma Keil

In Bild 1 ist die Sinusfunktion mit jeweils einem der drei Festkommavarianten zusammen gezeigt. Die behandelten Formate sind das Q0.7 (Bild1, oben), Q0.15 (Bild 1, Mitte) und das Q0.31 (Bild 1, unten). Um einen Overflow während der Berechnung zu verhindern, wurde der Sinus wie in Gleichung (5) normiert. Die maximale Abweichung vom echten Sinus aus (5) beträgt im Intervall -0,5 <= x <= 0,5 für Q0.7 5,5%, für Q0.15 0,23% und für Q0.31 ebenfalls 0,23%, jeweils auf die doppelte Amplitude bezogen. Dies zeigt, dass das Q0.15-Format eine ausreichende Genauigkeit, auch gegenüber dem Floating-Point-Format, erzielt.

Der Algorithmus wurde für alle Datenformate auf dem ARM7TDMI (LPC2138) implementiert. Eine Laufzeitmessung erfolgt dabei über jeweils zehn Berechnungen mit unterschiedlichen Eingangswerten. Auf diese Weise lassen sich Laufzeitunterschiede in der Multiplikation bei unterschiedlichen Multiplikatoren berücksichtigen. Die Laufzeitmessung dient dem Datenformatvergleich und dem Systemvergleich. In Bild 2 ist das verwendete ARM7-Entwicklungssystem der Firma Keil dargestellt.

gleichungen_14.jpg

  1. ARM-Befehlssätze im Vergleich #####
  2. ARM-Befehlssätze im Vergleich
  3. ARM-Befehlssätze im Vergleich
  4. ARM-Befehlssätze im Vergleich
  5. ARM-Befehlssätze im Vergleich

Jetzt kostenfreie Newsletter bestellen!