Itanium: Dauer für das Switchen des Rundungsmodus in der/den FPU(s)

Mitglied seit
11.04.2005
Beiträge
20
Renomée
0
Hallo,

ich habe eine Frage bezüglich der Rundungen innerhalb der FPUs auf dem Itanium-Prozessor.
Welche Zeit benötigt der Rechner, um den Rundungsmodus umzuschalten? Ich kann zwar auf Assembler-Ebene bei einer Operation den Rundungsmodus spezifizieren, aber wie effektiv wird das auf Hardware-Ebene umgesetzt? Wieviel Zeit wird dafür effektiv benötigt (zum Beispiel im Vergleich zu zweimaligem Negieren)?

Für mich hängt davon ab, ob ich gezielt das Umschalten der Rundung innerhalb von Algorithmen vermeiden sollte.

Beispiel: Ich möchte die Intervallgrenzen für die Zahl 5.00 haben, also zwei FloatingPoint-Zahlen, die die 5.00 einschliessen. Also runde ich einmal nach oben (infinity) und bekomm die Intervallgrenze max. Anschliessend negiere ich die Ausgangszahl, runde anschliessend erneut mit dem gleichen Rundungsmodus nach oben und bekomme die negierte untere Intervallgrenze -min. Diese negierte untere Grenze negiere ich ein weiteres Mal und bekomme die wirkliche untere Intervallgrenze.

Dieses Vorgehen ist ja gleichwertig mit dem Umschalten der Rundung (nach minus Infinity) und 'direktem' Runden (ohne zu Negieren). Bei der reinen Negation einer Zahl, die als Gleitkommazahl darstellbar ist, dürften doch keine erneuten Rundungen nötig sein, oder? Schliesslich muss ich ja nur das Sign-Bit ändern.

Gibt es da Kniffe, die man beim Programmieren mit C und bestimmten Compilern beachten sollte?

Dank und Gruss,
Heinz
 
Ohne jetzt zuviel Zeit zur Verfügung zu haben, fand ich zumindest dies (mit ein paar Fehlern dank dem Acrobat-OCR):
Software conventions determine many of the appropriate applications
for particular status fields. Typically sf0 is the
main `user' status field used for most
oating-point calculations,
and sf1, with all exceptions disabled, is used for intermediate
calculations in many standard numerical software
kernels, e.g. those for division, square root and transcendental
functions. However, the multiple status elds can be
put to other uses. In particular, when implementing interval
arithmetic one often wants to be able to switch repeatedly
between rounding up and rounding down in a short sequence
of calculations. On many existing architectures, changing
the rounding mode is so costly that performance degrades
dramatically. However, on the Itanium architecture, one can
simply set up two status fields to have diffrent rounding directions
and use whichever is desired on each instruction.

Gefunden in "Scientific Computing on the ItaniumTM Processor" auf ACM.
 
Zurück
Oben Unten