Sind 64Bit CPUs langsamer als 32Bit CPUs? (Theorie)

Turing

Admiral Special
Mitglied seit
11.11.2001
Beiträge
1.007
Renomée
1
Ich habe mir da mal etwas überlegt:

Schnelle Addierer oder Multiplizierer haben eine Tiefe die in der Komplexitätsklasse log(n) liegt. Wobei n die Länge der Zahl ist.

Das sollte eigentlich eine untere Schranke für alle Rechenoperationen sein, bei denen Überträge entstehen.
Denn eine Rechenoperation bei der Überträge berücksichtigt werden müssen kann ja nie in konstanter Zeit (konstant zur Zahlengröße) durchgeführt werden.

Wenn ich jetzt mal (wahrscheinlich sehr optimistisch) davon ausgehe das die Schaltungen für die meisten Rechenoperationen wirklich Tiefe log(n) haben.

Wäre das bei 32bit -> 64bit schon eine Verlangsamung um 20%.


Dadurch das gleich mit 64Bit zahlen gerechnet werden kann. Verbessert sich natürlich die Geschwindigkeit bei Programmen die Zahlen >32bit verweden. Aber viele Anwendungen benutzen solche große Zahlen gar nicht.


Stimmt das mit der Verlangsamung?

Aber das größere Problem sind wohl eher die höheren Kosten für die Schaltung (also mehr Transistoren) die müssen ja für jede Operation mindestens linear zur Zahlenlänge steigen.
 
Zuletzt bearbeitet:
Wie Seeman schon sagt, kommt es darauf an.

Beim K8 z.B sieht die Sache bisher so aus:

Latenz IMull:
Athlon -> 5
K8 32Bit -> 3
K8 64Bit -> 4

Durchsatz IMull
Athlon -> 1/2
K8 32Bit -> 1
K8 64Bit -> 1/2

Der K8 ist also bei 64Bit Integer Daten etwas langsamer als bei 32Bit. Daher nutzt er auch im 64Bit Modus per Default 32Bit Daten (wenn man wirklich mal mehr braucht kann man 64Bit forcen)

Aber verglichen mit dem 32Bit Athlon hat der 64Bit K8 eine niedrigere Latenz. im 32Bit Modus ist er sogar um Einiges schneller mit 3vs5 Latenztakten und 1 IMull pro Takt statt alle zwei Takte.

Es kommt also wirklich auf die Implementation an.
 
Zurück
Oben Unten