amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Unterschiede der FPU bei G3 und G4 AMD64 P3 [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

28.12.2006, 16:22 Uhr

bernd_roesch
Posts: 364
[Benutzer gesperrt]
Nachdem nun auch unter OS4 der JIT gut geht konnte ich nun auch ohne G3 G4 User zu sein den Unterschied der FPU ausmachen.

Bei dem G4 sollte man speedkritische Routinen mit 64 bit floats machen.beim G3 mit 32bit floats.egal ob man nun native codet oder nicht.
evtl kann ja mal jemand native benches machen...

Man beachte beim G3 die 133 Mips bei single float fmove.s dagegen bei double float kommt man nur auf 54 Mips.
Der G4 kommt bei single float nur auf 49 Mips.Bei double float auf 130 Mips

Ob das nun native code ist oder nicht ist egal,der JIT übersetzt das eh in eine einzige PPC asm instructions.
da das add.l 500 mips macht,brauchen alle Befehle die langsamer als das sind eben mehr takte.


werte unter MOS wären:
.5
237.08 fadd.x fpx,fpy Million/sec
133.59 fmove.s (d1.l),fp0 Million/sec
352.70 move.l (d1.l),d0 Million/sec (cached)
bufferaddr $20CF6984 /4 ?
54.43 fmove.d -4(a0),fp1 and fmove.d -16(a0),fp0:allignd Million/sec
(cached)
bufferaddr &20CF6982 /4 ?
91.57 fmove.s -4(a0),fp1: unalligned Million/sec (cached)
299.59 fmove.s #2,fp0:
230.24 fmove.d #2,fp0:
500.65 add.l d0,d1:
123.26 fmul.x fp1,fp0

Bei dem G4 900 MHZ unter OS4

bekommt man den besten Wert wenn man 64 bit floats nutzt.

122.70 fadd.x fpx,fpy Million/sec
51.87 fmove.s (d1.l),fp0 Million/sec
240.68 move.l (d1.l),d0 Million/sec (cached)
137.67 fmove.d -4(a0),fp1 and fmove.d -16(a0),fp0:allignd Million/sec (cached)
49.86 fmove.s -4(a0),fp1: unalligned Million/sec (cached)
137.67 fmove.s #2,fp0:
78.36 fmove.d #2,fp0:
463.35 add.l d0,d1:
135.87 fmul.x fp1,fp0

Da ist natürlich klar dass der G4 nie ne Chance bei platformunabhängigen benches raytracing hat.
die nutzen alle 32bit floats weil das schneller geht.

bei X86 ist das single float optimiert.würde man 64bit nehmen,dann hätte der G4 ne gute Chance.
trotz 1,8 GHZ kommt der AMD nur auf 92 Mips.das hat nix mit dem X86 byteswap zu tun,denn mein P3 1 GHZ kam damals
unter winuae bei single und double floats auf 72 Mips

Unter winuae kommt der AMD64 3000+ echte 1,8 GHz auf diese Werte

1.
594.86 fadd.x fpx,fpy Millions/sec
599.78 fmove.s (d1.l),fp0 Millions/sec
1177.47 move.l (d1.l),d0 Millions/sec (cached)
bufferaddr $116014BC /4 ? .
91.61 fmove.d -4(a0),fp1 and fmove.d -16(a0),fp0:alligned Millions/sec (cached)
bufferaddr $116014BA /4 ? .7
432.90 fmove.s -4(a0),fp1: unaligned Millions/sec (cached)
467.11 fmove.s #2,fp0:
523.86 fmove.d #2,fp0:
1556.02 add.l d0,d1:
400.60 fmul.x fp1,fp0
2.


[ - Antworten - Zitieren - Direktlink - ]

02.01.2007, 12:32 Uhr

Solar
Posts: 3680
Nutzer
Zitat:
Original von bernd_roesch:

Da ist natürlich klar dass der G4 nie ne Chance bei platformunabhängigen benches raytracing hat.
die nutzen alle 32bit floats weil das schneller geht.


Da plattformunabhängige Raytracer wohl kaum in Assembler geschrieben sind, und jemand der einen Benchmark portiert wohl kaum so dämlich sein dürfte die Berechnung nicht in 64bit zu machen, wenn dieser schneller als 32bit sein sollte...

Letzteres halte ich nebenbei für unwahrscheinlich. Viel eher wird die Operation selbst sowieso in 64bit ausgeführt, und der Rest der Zeit geht für Einpacken / Auspacken des 32bit-Werts drauf.

[ - Antworten - Zitieren - Direktlink - ]

02.01.2007, 13:03 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Solar:
Letzteres halte ich nebenbei für unwahrscheinlich. Viel eher wird die Operation selbst sowieso in 64bit ausgeführt, und der Rest der Zeit geht für Einpacken / Auspacken des 32bit-Werts drauf.

Runden. Wenn man nur die reine Ausführungszeit des auf den Registern operierenden Arithmetikbefehls misst, wird nix aus- oder eingepackt. Die Register haben immer die gleiche Breite, auf dem 68k sind das 80 Bit, und wenn man die Zeit für's Runden sparen will, rechnet man auch immer in 80 Bit, womit eine effiziente und 100% kompatible Emulation auf dem ppc kaum möglich ist.

Der Transfer in und aus dem Register dürfte dann meist von der Speicherbandbreite bestimmt werden, zumindest wenn man mehr als eine Zahl transferiert.

Berechnungen in 32Bit werden erst dann deutlich effizienter, wenn man die SIMD-Einheiten eines Prozessor zu nutzen beginnt. Die sind meist darauf ausgelegt, mit 32 Bit Werten zu rechnen.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

02.01.2007, 14:18 Uhr

Solar
Posts: 3680
Nutzer
Zitat:
Original von Holger:

Runden. Wenn man nur die reine Ausführungszeit des auf den Registern operierenden Arithmetikbefehls misst, wird nix aus- oder eingepackt.


Das wissen Du und ich. Weiß das auch das Programm, mit dem Bernd seine Werte errechnet hat? Oder macht es den Fehler, eine (nicht vorhandene?) 32bit-Operation in 64bit zu "emulieren", inklusive zweifache Umwandlung des Wertes?

Ich kenne mich mit der PPC-FPU nicht aus, aber wenn eine 32bit-Operation doppelt so lange brauchen soll wie eine 64bit-Operation, dann riecht das fischig, IMHO.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Unterschiede der FPU bei G3 und G4 AMD64 P3 [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.