Hinweis: Diese Antworten gelten für x86-basierte Standard-PC-CPUs (Intel und AMD) und Windows (wie normalerweise für Endbenutzer konfiguriert). Andere 32-Bit- oder 64-Bit-Chips, andere Betriebssysteme und andere Betriebssystemkonfigurationen können unterschiedliche Kompromisse haben.
Aus technischer Sicht bietet ein 64-Bit-Betriebssystem:
Einzelne Prozesse können jeweils mehr als 4 GB RAM adressieren (in der Praxis begrenzen die meisten, aber nicht alle 32-Bit-Betriebssysteme den gesamten verfügbaren System-RAM auf weniger als 4 GB, nicht nur auf das Maximum pro Anwendung).
Alle Zeiger benötigen 8 Bytes anstelle von 4 Bytes. Die Auswirkung auf die RAM-Auslastung ist minimal (weil Sie wahrscheinlich nicht über eine Anwendung verfügen, die mit Gigabyte von Zeigern gefüllt ist), im schlimmsten Fall kann dies jedoch dazu führen, dass der CPU-Cache 1/2 so viele Zeiger halten kann (make.) es ist effektiv 1/2 die Größe). Für die meisten Anwendungen ist dies keine große Sache.
Im 64-Bit-Modus gibt es viele weitere Universal-CPU-Register. Register sind der schnellste Speicher in Ihrem gesamten System. Es gibt nur 8 im 32-Bit-Modus und 16 Universalregister im 64-Bit-Modus. Bei wissenschaftlichen Computeranwendungen, die ich geschrieben habe, habe ich durch die Neukompilierung im 64-Bit-Modus eine Leistungssteigerung von bis zu 30% gesehen (meine Anwendung könnte die zusätzlichen Register wirklich verwenden).
Die meisten 32-Bit-Betriebssysteme lassen tatsächlich nur zwei GB RAM für einzelne Anwendungen zu, selbst wenn 4 GB installiert sind. Dies liegt daran, dass die anderen 2 GB Adressraum für die gemeinsame Nutzung von Daten zwischen Anwendungen, für das Betriebssystem und für die Kommunikation mit Treibern reserviert sind. Unter Windows und Linux können Sie diesen Kompromiss auf 3 GB für Anwendungen und 1 GB gemeinsam einstellen. Dies kann jedoch bei einigen Anwendungen zu Problemen führen, die die Änderung nicht erwarten. Ich vermute auch, dass eine Grafikkarte mit 1 GB RAM möglicherweise beschädigt wird (aber ich bin mir nicht sicher). Mit einem 64-Bit-Betriebssystem können einzelne 32-Bit-Anwendungen näher an die vollen 4 GB herankommen.
Aus Benutzersicht:
Die Anwendungsgeschwindigkeit ist normalerweise für eine 64-Bit-Anwendung in einem 64-Bit-Betriebssystem im Vergleich zu der 32-Bit-Version der Anwendung auf einem 32-Bit-Betriebssystem höher, aber die meisten Benutzer werden diese Beschleunigung nicht bemerken. Die meisten Anwendungen für Normalbenutzer nutzen die zusätzlichen Register nicht wirklich oder die Vorteile werden durch größere Zeiger ausgeglichen, die den Cache füllen.
Wenn Sie über Speicher-Hog-Anwendungen verfügen (z. B. Foto-Editoren, Videobearbeitung, Scientific Computing usw.), wenn Sie mehr als 3 GB RAM haben (oder kaufen können) und Sie eine 64-Bit-Version der Anwendung erhalten, Die Wahl ist einfach: Verwenden Sie das 64-Bit-Betriebssystem.
Einige Hardware verfügt nicht über 64-Bit-Treiber. Überprüfen Sie Ihr Motherboard, alle Einsteckkarten und alle USB-Geräte, bevor Sie den Wechsel vornehmen. Beachten Sie, dass es in den Anfängen von Windows Vista viele Probleme mit Treibern gab. In diesen Tagen sind die Dinge im Allgemeinen besser.
Wenn Sie so viele Anwendungen gleichzeitig ausführen, dass Ihnen der RAM-Speicher ausgeht (in der Regel können Sie dies feststellen, weil Ihr Computer langsam wird und Sie hören, wie das Festplattenlaufwerk krampft), dann sollten Sie ein 64-Bit-Betriebssystem verwenden (und ausreichend RAM).
Sie können 32-Bit-Anwendungen (aber keine Treiber) unter 64-Bit-Windows ohne Probleme ausführen. Die größte Verlangsamung, die ich für eine 32-Bit-Anwendung in 64-Bit-Windows gemessen habe, liegt bei etwa 5% (dh, wenn in 32-Bit-Windows 60 Sekunden benötigt wurden, dauerte dies mit 60 * 1,05 = 65 Sekunden.) die gleiche 32-Bit-Anwendung in 64-Bit-Windows).
Was 32-Bit vs. 64-Bit nicht bedeutet:
Bei x86-Systemen bezieht sich 32-Bit vs. 64-Bit direkt auf die Größe von Zeigern. Das ist alles.
Es bezieht sich nicht auf die Größe des C-
int
Typs. Dies wird von der jeweiligen Compiler-Implementierung bestimmt, und die meisten der gängigen Compiler entscheiden sich für 32-Bitint
auf 64-Bit-Systemen.Es bezieht sich nicht direkt auf die Größe von normalen Nichtzeigerregistern. Die Verwendung von 64-Bit-Arithmetikregistern erfordert jedoch auch, dass die Anwendung und das Betriebssystem auch im 64-Bit-Zeigermodus ausgeführt werden.
Sie bezieht sich nicht direkt auf die Größe des Bus für physikalische Adressen. Beispielsweise benötigt ein System mit 64 Bit breiten Cache-Zeilen und maximal 512 GB Speicher nur 33 Bit in seinem Adreßbus (dh
log2(512*1024**3) - log2(64) = 33
).Es bezieht sich nicht auf die Größe des physischen Datenbusses: Dies hängt mehr von den Herstellungskosten (Anzahl der Pins im CPU-Sockel) und der Größe der Cache-Zeilen ab.