FPGA Implementierung eines dezimalen Gleitkomma-Coprozessors mit Unterstützung für das genaue Skalarprodukt (von Malte Baesler)

Wissenschaftliche und technische Probleme werden üblicher Weise mittels reeller Zahlen formuliert und anschließend auf digitalen Rechnern unter Verwendung des binären Standards IEEE 754-1985 gelöst. Obwohl wir normalerweise in dezimalen Zahlen denken und rechnen, hat sich aus historischen Gründen ein binärer Gleitkommastandard durchgesetzt, da die Komplexität der Schaltkreise kleiner, die Datenspeicherung kompakter und die Arithmetik auf Grund ihrer Geschwindigkeit und günstigen Fehlercharakteristik gut für wissenschaftliches Rechnen geeignet ist.

Viele dezimale Zahlen lassen sich jedoch nicht exakt als binäre Gleitkommazahl darstellen (wie z.B. 1/10=0.1) und müssen daher gerundet werden. Dabei entstehen Rundungsfehler, die in vielen Finanzanwendungen bzw. technischen Anwendungen nicht akzeptabel sind oder sogar gegen internationales Recht verstoßen können. Daher wurde im Jahre 2008 der neue Gleitkommastandard IEEE 754-2008 verabschiedet, welcher u.a. die Spezifikation einer dezimalen Arithmetik umfasst. Diese dezimale Arithmetik ließe sich durch Softwarebibliotheken realisieren, die entsprechenden Operationen wären jedoch 100 bis 1000 mal langsamer als vergleichbare Gleitkomma-operationen. Daher ist die Bereitstellung einer schnellen und hardwaregestützten dezimalen Arithmetik in modernen Prozessorarchitekturen wünschenswert.

Elementare Operationen werden gemäß IEEE 754 optimal, d.h. mit kleinstmöglichen Rundungsfehlern behaftet, ausgeführt. Bei komplexen, aus elementaren Operationen zusammengesetzten Algorithmen können jedoch aufgrund von Auslöschung große Fehler auftreten, sodass die Frage aufgeworfen werden kann, inwieweit das berechnete Ergebnis überhaupt noch das gegebene Problem löst. Beispielsweise ist das Skalarprodukt eine häufig verwendete Operation, die sehr anfällig für Auslöschung ist. Daher kann die Implementierung eines genauen Skalarprodukts die Qualität numerischer Algorithmen erheblich verbessern. Des Weiteren wird von vielen Anwendungen eine Aussage über die Genauigkeit des Resultats gefordert. Hierfür bietet sich die Intervallarithmetik an, welche das korrekte Ergebnis mittels einer oberen und unteren Grenze einschließt. Leider unterstützen modernen Gleitkommaeinheiten dies nur sehr schlecht, da das Umschalten des Rundungsmodus sehr viele zusätzliche Takte benötigt. Eine leistungsfähige Hardwareunterstützung muss daher den Rundungsmodus direkt mit den arithmetischen Operationen verknüpfen können.

In dieser Arbeit wurden neue dezimale Fest- und Gleitkomma-Algorithmen analysiert und ein dezimaler Gleitkomma-Coprozessor entwickelt, welcher die vier Grundrechenarten (Addition, Subtraktion, Multiplikation und Division) sowie das genaue Skalarprodukt unterstützt. Die arithmetischen Einheiten, mit Ausnahme des Dividierers, sind rein kombinatorisch, sodass der Datendurchsatz mittels konfigurierbarer Pipeline-Register erhöht werden kann. Alle Operationen sind konform zum IEEE 754-2008 Datenformat decimal64. Zusätzlich kann jede Operation mit einem entsprechende Rundungsmodus verknüpft werden, sodass die Implementierung einer effizienten dezimalen Intervallarithmetik bestmöglich unterstützt wird. Die dezimalen Algorithmen sowie der Coprozessor wurden für FPGAs, speziell für Xilinx Virtex-5 FPGAs, entwickelt und optimiert.