Gleitkommaaddierer in Hardware

Gast #5243599
Lesenswert?

Hallo,

ich komme bei zwei Fragen nicht weiter und zwar wieso es Sinnvoll
ist ein Gleitkommaaddierer in Hardware zu implementieren...

und

Um wie viel Prozent ist die Hardwareimplemntierung im Durchschnitt
schneller als die Softwareimplementierung (GCC Emulation)?

Ich hoffe, Ihr könnt mir etwas helfen.

Danke im Voraus
#5243632
Lesenswert?

Ehsab schrieb:
> ich komme bei zwei Fragen nicht weiter

Hausübung?

> und zwar wieso es Sinnvoll
> ist ein Gleitkommaaddierer in Hardware zu implementieren...

Weil es schneller ist? Das ergibt sich ja schon aus Frage 2

> und
> Um wie viel Prozent ist die Hardwareimplemntierung im Durchschnitt
> schneller als die Softwareimplementierung (GCC Emulation)?

Ich glaube nicht, dass man das pauschal sagen kann. Eine 
Hardwareimplementierung kann schneller oder langsamer sein, genauso wie 
eine Softwareimplementierung je nach Programmierung und Hardware.
Gast #5243641
Lesenswert?

Ehsab schrieb:
> Um wie viel Prozent ist die Hardwareimplemntierung im Durchschnitt
> schneller als die Softwareimplementierung (GCC Emulation)?

Da geht es oft nicht um Prozent, sondern um Faktoren 1..100. Konkret 
hängt das sehr an Hardware und Prozessor/Compiler, die man vergleicht.

Durchschnittswerte zu bilden, ist so richtig sinnvoll nur, wenn die 
Verteilung sich halbwegs vernünftig durch eine Normalverteilung 
approximieren lässt. In allen anderen Fällen ist das statistische 
Spielerei und ohne Aussagekraft.
Persönliche Seite #5243646
Lesenswert?

Jan H. schrieb:

> Ich glaube nicht, dass man das pauschal sagen kann. Eine
> Hardwareimplementierung kann schneller oder langsamer sein, genauso wie
> eine Softwareimplementierung je nach Programmierung und Hardware.

was er wahrscheinlich meint ist:
Wieviel schneller war ein 8087 gegenüber der FP-Software-Emulation auf 
dem 8086.
bzw. die entsprechenden aktuelleren Pendants 80287 80387 usw.
#5243657
Lesenswert?

Mike B. schrieb:
> Wieviel schneller war ein 8087 gegenüber der FP-Software-Emulation auf
> dem 8086.

Was allerdings darauf hinaus liefe, zwei Software-Implementierungen zu 
vergleichen. Denn der 8087 war ein spezialisierter Prozessor zur 
Realisierung von Fliesskommarechnung in Software. Nur steckte diese 
Software im Microcode-ROM.

Demgegenüber arbeiten kombinatorische FP-Addierer und FP-Multiplizierer 
ohne Software/Microcode-Anteil und ohne Sequencing.
Gast #5243683
Lesenswert?

natürlich ist auch die genaue Hardwarerealisierung entscheidend. Wenn 
man eine Pipelined Version implementiert, wo man in jedem Takt ein 
fertiges Ergebnis bekommt, kann man einen ganz schönen Durchsatz 
bekommen. Will man hingegen nur einmal zwei Zahlen addieren, so kann 
auch die Hardware Lösung langsam sein, da ja die CPU erstmal die Daten 
mit dem FPGA austauschen muss.
#5243698
Lesenswert?

tja schrieb:
> Will man hingegen nur einmal zwei Zahlen addieren, so kann
> auch die Hardware Lösung langsam sein, da ja die CPU erstmal die Daten
> mit dem FPGA austauschen muss.

Mit welchem FPGA? Eine Hardware-FPU hat zunächst nichts mit einem FPGA 
zu tun.

Der AMD K6 hatte eine nicht gepipelinete FPU, die für Add/Mul 2 Takte 
benötigte. Das war ausgesprochen flott. Nur kamen genau zu dieser Zeit 
bewegte PC-Spiele auf, und zum ersten Mal in der Geschichte der PCs 
konnte man mit einer FPU-Pipeline in der Breite wirklich etwas anfangen.
#5243765
Lesenswert?

A. K. schrieb:
> Der AMD K6 hatte eine nicht gepipelinete FPU, die für Add/Mul 2 Takte
> benötigte. Das war ausgesprochen flott. Nur kamen genau zu dieser Zeit
> bewegte PC-Spiele auf, und zum ersten Mal in der Geschichte der PCs
> konnte man mit einer FPU-Pipeline in der Breite wirklich etwas anfangen.

Das war aber schon früher so. Der Pentium war der erste Prozessor, bei 
dem die FPU dafür schnell genug war. Das erste größere Spiel, das eine 
FPU dann auch vorausgesetzt hat, war Quake.
#5243779
Lesenswert?

Stefan U. schrieb:
> Ich hatte meine erste FPU 80C387 gekauft, damit Windows schneller läuft.

Wobei ich mal jemanden kannte, der sich für recht viel Geld einen 387 
Coprozessor leistete, nur zum den dann 90° verdreht in den PGA Sockel zu 
wuchten.

Irgendwann kam Intel auf die Idee, die Sockel so zu bauen, dass man das 
ohne Hammer nicht zustande brachte. Wieviele (Co-)Prozessoren wohl bis 
dahin diese traurige Schicksal ereilte?
Gast #5243848
Lesenswert?

> über 1-2MB mehr RAM hätte WIndows sich mehr gefreut

Ja, aber davon hatte der Verkäufer wohl gerade keine übrig.

Ich schon ganz froh, dass man heute nicht mehr speziell für das 
Betriebssystem die Hardware aufrüsten muss. Denn letztendlich ist das BS 
genau wie die Hardware ja nur Mittel zum Zweck, ein Anwendungsprogramm 
laufen zu lassen. Also sollten dessen Anforderungen im Vordergrund 
stehen.
Gast #5244101
Lesenswert?

Ehsab schrieb:
> Hallo,
>
> ich komme bei zwei Fragen nicht weiter und zwar wieso es Sinnvoll
> ist ein Gleitkommaaddierer in Hardware zu implementieren...
>
> und
>
> Um wie viel Prozent ist die Hardwareimplemntierung im Durchschnitt
> schneller als die Softwareimplementierung (GCC Emulation)?
>
> Ich hoffe, Ihr könnt mir etwas helfen.
>
> Danke im Voraus

Schreib den algorithmus auf und schau dir eine Implementierung in 
Pseudoassembler an, zägle die cycles. Dann schau auf das Blockbild eines 
Hardwareadders an und schreibe den Algorithmus als ressorrce scheduling 
plan auf, zähle jetzt die cycle für einen durchlauf.

Wichtig ist, das du dir die einzelnen schritte des Adds und die Struktur 
einer Float-Zahl klar machst. Der Algorithmus muss also Schritte 
enthalten wie
-Exponentenvergleich
-Mantissenanpassung eines Summanden
--subtraktion der Exponenten
--bestimmung des nötigen mantissenshifts aus der ermittelnden Differenz
--Shift.
-Mantissenadd
-Prüfen auf Überlauf
-bei Überlauf Normalisierung
..

Im blockbild muss erkennbar sein welche Hardwareblöcke parallel arbeiten 
könnten. Die Beschleunigung ergibt sich das mehrere Teiloperationen 
gleichzeitig ausgeführt werden könnten (hier eher nicht) oder 
Teiloperationen effizenter ausgeführt werden bspw Barrel-shifter statt 
bitshift.

Am besten du machst mal ein paar experiemente für ein System mit 
Integrierte FPU indem du die Verlinkung der Hardwareunterstützung 
benchmarkmäßig ein- und ausschaltest.
Und geh mal in eine Fachbibliothek und schau in den Büchern zur 
Rechnerarchitektur und Numerik nach.
Gast #5244264
Lesenswert?

Stefan U. schrieb:
> Wann hast du zuletzt einen PC oder Laptop gesehen, auf dem Linux
> oder Windows nicht laufen kann?

Willst du ernsthaft behaupten, alle Rechner die noch irgendwo rumstehen, 
haben 4 GB Ram und 100 GB Festplatte, wie für Windows 10 gefordert? Da 
stehen noch Millionen rum, auch in Betrieb, die davon weit entfernt 
sind.

Georg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren