PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anzahl Takte von DIV auf 8087?


aths
2004-01-01, 09:22:22
Wie lange dauert ein DIV beim 8087, wenn Dividend und Divisor jeweils single sind? Wie sieht es aus wenn man double oder extended verwendet?

HajottV
2004-01-01, 12:12:45
Original geschrieben von aths
Wie lange dauert ein DIV beim 8087, wenn Dividend und Divisor jeweils single sind? Wie sieht es aus wenn man double oder extended verwendet?

ST,ST(i): 193-203
ST,real32: (255-225) + EA
ST,real64: (220-230) + EA
ST,real80: gibt's nicht

EA ist die Zeit (Takte) zur Berechnung der effektiven Adresse. Beim 8086 sind das:

[disp]: 6
[reg16]: 5
[reg16 + disp]: 9
[reg16 + reg16]: 7-8
[reg16 + reg16 + disp]: 11-12

Gruß

Jörg

BubbleBoy
2004-01-01, 12:16:32
.

aths
2004-01-01, 13:33:10
Ok, "über 200 Takte" ist für meine Zwecke genau genug :)

Original geschrieben von BubbleBoy
Beim 80487 mit jeweils 73 Takten und beim Pentium sind es noch 39. Ein 80487 ist quasi ein 80486 :naughty: :)

Wie darf ich das beim Pentium verstehen — die Pipeline kann die Latenz nicht verstecken, ein FDIV hält den Output quasi für 39 Takte an, wenn der nächste Befehl mit dem Ergebnis weiterrechnen will?

zeckensack
2004-01-01, 13:52:12
Original geschrieben von aths
Ok, "über 200 Takte" ist für meine Zwecke genau genug :)

Ein 80487 ist quasi ein 80486 :naughty: :)

Wie darf ich das beim Pentium verstehen — die Pipeline kann die Latenz nicht verstecken, ein FDIV hält den Output quasi für 39 Takte an, wenn der nächste Befehl mit dem Ergebnis weiterrechnen will? Der Pentium hat eine eigene FP-Pipeline, die dann komplett blockiert wird. Die Integer-Pipe(s) können AFAIK weiterlaufen, wenn sie wollen :)

aths
2004-01-02, 07:04:31
Wie wird DIV eigentlich in der FPU berechnet? Mit REPR und MUL?

Blutgrätsche
2004-01-02, 10:26:52
Original geschrieben von aths
Wie wird DIV eigentlich in der FPU berechnet? Mit REPR und MUL?
Ich nehme an, du meinst mit REPR Reziprok? Sollte schon so gemacht werden, da nur einziges Mal der Reziprok-Wert (von der homogenen Koordinate w) berechnet werden muss. Alle Interpolatoren, die perspektivisch korregiert werden sollen, braucht man damit dann nur multiplizieren.

Es gibt jede Menge Verfahren, den Umkehrwert zu berechnen. Eine kurze Latenzzeit ist (generell) wichtig/vorteilhaft. NV-Kirk gibt 2 Takte für sin/cosins an; da muss die Division nicht unbedingt mehr Takte kosten. Allerdings sind 2 Takte schon extrem und mit Sicherheit auch nicht billig. Ich denke, man bevorzugt diesselbe Latenzzeit für alle komplexen Funktionen (weil leichter zu kontrollieren) und benuzt den gleichen Berechnungsansatz, falls machbar (z.B. Tabellenzugriff dann Berechnung/Iteration, macht NV jedenfalls so). Wenn ATI/Andere also mehr Takte für die Division brauchen sollten, dann werden die anderen Funktionen wohl ebenfalls mehr Takte brauchen.

Blutgrätsche
2004-01-02, 10:32:43
Aths, habe diesen Beitrag mit deiner Frage im benachbarten Thread (FPU32 in GPUs) versehentlich gemixt (Perspektivkorrektur).

aths
2004-01-02, 11:15:47
Deine Beiträge sind wertvoll genug, dass ich mich freuen würde, wenn du ein registrierter User wärst =) Dann kannst du eigene Beiträge auch editieren :)