web-dev-qa-db-de.com

32-Bit- oder 64-Bit-Systeme

Was sind die Unterschiede zwischen 32-Bit- und 64-Bit-Systemen?

Welche scharfen Unterschiede haben Sie erlebt, wenn Sie beide verwendet haben?

Wäre es in einigen Fällen ein Problem, 32-Bit-Programme auf 64-Bit-Systemen zu verwenden?

219

Hinweis: Diese Antworten gelten für standardmäßige x86-basierte 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 Nachteile haben.

Aus technischer Sicht bietet ein 64-Bit-Betriebssystem:

  • Ermöglicht es einzelnen Prozessen, jeweils mehr als 4 GB an RAM zu adressieren (in der Praxis begrenzen die meisten, jedoch nicht alle 32-Bit-Betriebssysteme die Gesamtzahl der verwendbaren Systeme RAM auf weniger als 4 GB, nicht jedoch auf nur das Maximum pro Anwendung).

  • Alle Zeiger benötigen 8 Bytes anstelle von 4 Bytes. Die Auswirkung auf die Verwendung von RAM ist minimal (da Sie wahrscheinlich keine Anwendung mit Gigabyte an Zeigern haben), aber im schlimmsten theoretischen Fall kann dies dazu führen, dass der CPU-Cache 1/2 so viele Zeiger (so dass es effektiv die Hälfte der Größe ist). Für die meisten Anwendungen ist dies keine große Sache.

  • Im 64-Bit-Modus gibt es viel mehr Allzweck-CPU-Register. Register sind der schnellste Speicher in Ihrem gesamten System. Im 32-Bit-Modus gibt es nur 8 und im 64-Bit-Modus 16 Universalregister. In wissenschaftlichen Computeranwendungen, die ich geschrieben habe, konnte ich durch erneutes Kompilieren im 64-Bit-Modus eine Leistungssteigerung von bis zu 30% feststellen (meine Anwendung könnte die zusätzlichen Register wirklich nutzen).

  • Bei den meisten 32-Bit-Betriebssystemen können einzelne Anwendungen nur 2 GB RAM verwenden, selbst wenn 4 GB installiert sind. Dies liegt daran, dass die anderen 2 GB Adressraum für die gemeinsame Nutzung von Daten zwischen Anwendungen und dem Betriebssystem sowie 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 für gemeinsame Anwendungen anpassen. Dies kann jedoch bei einigen Anwendungen zu Problemen führen, bei denen die Änderung nicht erwartet wird. Ich vermute auch, dass es eine Grafikkarte lähmen könnte, die über 1 GB RAM verfügt (aber ich bin nicht sicher). Mit einem 64-Bit-Betriebssystem können einzelne 32-Bit-Anwendungen auf 4 GB erweitert werden.

Aus Sicht eines Benutzers:

  • Die Anwendungsgeschwindigkeit einer 64-Bit-Anwendung in einem 64-Bit-Betriebssystem ist normalerweise höher als in der 32-Bit-Version der Anwendung in einem 32-Bit-Betriebssystem. Die meisten Benutzer werden diese Geschwindigkeit jedoch nicht bemerken. Die meisten Anwendungen für normale Benutzer nutzen die zusätzlichen Register nicht wirklich, oder die Vorteile werden durch größere Zeiger ausgeglichen, die den Cache füllen.

  • Wenn Sie über Memory-Hog-Anwendungen (wie Bildbearbeitungsprogramme, Videoverarbeitung, wissenschaftliches Rechnen usw.) verfügen (oder mehr als 3 GB RAM erwerben können) und eine 64-Bit-Version der Anwendung erhalten, Die Wahl ist einfach: Verwenden Sie das 64-Bit-Betriebssystem.

  • Manche Hardware verfügt nicht über 64-Bit-Treiber. Überprüfen Sie Ihr Motherboard, alle Steckkarten und alle USB-Geräte, bevor Sie den Wechsel vornehmen. Beachten Sie, dass in den frühen Tagen von Windows Vista viele Probleme mit Treibern aufgetreten sind. In diesen Tagen sind die Dinge im Allgemeinen besser.

  • Wenn Sie so viele Anwendungen gleichzeitig ausführen, dass Ihnen RAM ausgeht (normalerweise können Sie dies daran erkennen, dass Ihr Computer langsam wird und Sie hören, wie die Festplatte knirscht), werden Sie möchte ein 64-Bit-Betriebssystem (und ausreichend RAM).

  • Sie können 32-Bit-Anwendungen (aber keine Treiber) problemlos unter 64-Bit-Windows ausführen. Die schlechteste Verlangsamung, die ich für eine 32-Bit-Anwendung in 64-Bit-Windows gemessen habe, liegt bei etwa 5% (was bedeutet, dass es höchstens 60 * 1,05 = 65 Sekunden dauerte, bis in 32-Bit-Windows etwas ausgeführt wurde) die gleiche 32-Bit-Anwendung in 64-Bit-Windows).

Was 32-Bit im Vergleich zu 64-Bit bedeutet nicht impliziert:

Auf x86-Systemen bezieht sich 32-Bit vs. 64-Bit direkt auf die Größe der Zeiger. Das ist alles.

  • Es bezieht sich nicht auf die Größe des Typs C int. Dies wird von der jeweiligen Compiler-Implementierung bestimmt, und die meisten gängigen Compiler wählen auf 64-Bit-Systemen 32-Bit-int.

  • Es bezieht sich nicht direkt auf die Größe normaler Nichtzeigerregister. Die Verwendung von 64-Bit-Arithmetikregistern erfordert jedoch, dass die Anwendung und das Betriebssystem auch im 64-Bit-Zeigermodus ausgeführt werden.

  • Es bezieht sich nicht direkt auf die Größe des physikalischen Adressbusses. Beispielsweise benötigt ein System mit 64 Bit breiten Cache-Zeilen und maximal 512 GB Speicher nur 33 Bit in seinem Adressbus (d. H. log2(512*1024**3) - log2(64) = 33).

  • Es bezieht sich nicht auf die Größe des physischen Datenbusses: Dies hängt mehr mit den Herstellungskosten (Anzahl der Stifte im CPU-Sockel) und den Cache-Zeilengrößen zusammen.

261
Mr Fooz

Grundsätzlich können Sie alles in größerem Maßstab tun:

  1. RAM pro Betriebssystem: RAM Limit von 4 GB auf x86 für das Betriebssystem (meistens)
  2. RAM pro Prozess: RAM Limit von 4 GB auf x86 für Prozesse (immer). Wenn Sie der Meinung sind, dass dies nicht wichtig ist, führen Sie eine umfangreiche datenbankintensive MSSQL-Anwendung aus. Es wird> 4GB selbst verwenden, wenn Sie es zur Verfügung haben und viel besser laufen.
  3. Adressen: Bei den Adressen handelt es sich um 64-Bit-Adressen anstelle von 32-Bit-Adressen, sodass Sie "größere" Programme verwenden können, die mehr Speicher benötigen.
  4. Handles für Programme verfügbar: Sie können weitere Dateihandles, Prozesse usw. erstellen. Beispiel: Unter Windows x64 können Sie> 2000 Threads pro Prozess erstellen, unter x86 jedoch näher an einigen Hundert.
  5. Weitere Programme verfügbar: Auf einem x64-Computer können Sie sowohl x86- als auch x64-Programme ausführen. (Beispielfenster: Wow64, Windows32 unter Windows64-Emulation)
  6. Emulationsoptionen: Auf einem x64-Computer können Sie sowohl x86- als auch x64-VMs ausführen.
  7. Schneller: Einige Berechnungen sind auf einer 64-Bit-CPU schneller
  8. Aufteilen mehrerer Systemressourcen: Sehr viel RAM Arbeitsspeicher ist sehr wichtig, wenn Sie mindestens eine VM ausführen möchten, die die Systemressourcen aufteilt.
  9. Exklusive Programme verfügbar: Einige neue Programme unterstützen nur x64. Beispiel Exchange 2007.
  10. Zukünftiges veraltetes x86 ?: Mit der Zeit werden immer mehr 64-Bit-Versionen und immer mehr x86-Versionen nicht mehr verwendet. Daher werden Anbieter immer mehr 64-Bit-Versionen unterstützen.

Die beiden großen Arten von 64-Bit-Architekturen sind x64- und IA64-Architekturen. Aber x64 ist bei weitem das beliebteste.

x64 kann sowohl x86-Befehle als auch x64-Befehle ausführen. IA64 führt auch x86-Befehle aus, aber es werden keine SSE -Erweiterungen ausgeführt. Auf Itanium ist Hardware für die Ausführung von x86-Anweisungen reserviert. Es ist ein Emulator, aber in Hardware.

Wie @Phil bereits erwähnte, können Sie einen genaueren Blick auf wie es hier funktioniert werfen.

106
Brian R. Bondy

Die größte Auswirkung, die die Leute im Moment bemerken werden, ist, dass ein 32-Bit-PC nur maximal 4 GB Speicher adressieren kann. Wenn Sie den vom Betriebssystem für andere Zwecke zugewiesenen Speicher entfernen, werden auf Ihrem PC wahrscheinlich nur etwa 3,25 GB verwendbarer Speicher angezeigt. Wechseln Sie zu 64-Bit und diese Grenze verschwindet.

Wenn Sie sich ernsthaft weiterentwickeln, kann dies sehr wichtig sein. Versuchen Sie, mehrere virtuelle Maschinen auszuführen, und Sie haben bald keinen Speicher mehr. Server benötigen mit größerer Wahrscheinlichkeit zusätzlichen Arbeitsspeicher. Daher ist die 64-Bit-Nutzung auf Servern weitaus höher als auf Desktops. Das Moore-Gesetz stellt sicher, dass wir immer mehr Arbeitsspeicher auf den Maschinen haben und Desktops daher irgendwann auch auf 64-Bit als Standard umstellen.

Eine ausführlichere Beschreibung der Prozessorunterschiede finden Sie in diesem hervorragenden Artikel von ArsTechnica .

46
Phil Wright

Nichts ist kostenlos: Obwohl 64-Bit-Anwendungen auf mehr Speicher zugreifen können als 32-Bit-Anwendungen, besteht der Nachteil darin, dass sie mehr Speicher benötigen . Alle diese Zeiger, die früher 4 Bytes benötigten, benötigen jetzt 8. Die Standardanforderung in Emacs ist beispielsweise 60% mehr Arbeitsspeicher, wenn sie für eine 64-Bit-Architektur erstellt wurden. Dieser zusätzliche Platzbedarf beeinträchtigt die Leistung auf allen Ebenen der Speicherhierarchie: Das Laden größerer ausführbarer Dateien von der Festplatte dauert länger, größere Arbeitssets verursachen mehr Paging und größere Objekte bedeuten, dass sie weniger in den Prozessor-Caches passen. Wenn Sie an eine CPU mit einem 16-KByte-L1-Cache denken, kann eine 32-Bit-Anwendung mit 4096 Zeigern arbeiten, bevor sie den L2-Cache verfehlt und erreicht. Eine 64-Bit-Anwendung muss jedoch nach nur 2048 Zeigern auf den L2-Cache zugreifen.

Unter x64 wird dies durch die anderen Architekturverbesserungen, wie z. B. mehr Register, gemildert. Wenn Ihre Anwendung auf PowerPC jedoch nicht> 4G verwenden kann, wird sie wahrscheinlich auf "ppc" schneller ausgeführt als auf "ppc64". Sogar auf Intel gibt es Workloads, die auf x86 schneller laufen, und auf x64 laufen nur wenige mehr als 5% schneller als auf x86.

31
James

Ein 64-Bit-Betriebssystem kann mehr RAM verwenden. Das war's auch schon in der Praxis. 64-Bit-Versionen von Vista/7 verwenden ausgefeiltere Sicherheitsfunktionen, um wichtige Komponenten in den Arbeitsspeicher zu verschieben. Dies ist jedoch als solches nicht wirklich erkennbar.

Von ChrisInEdmonton:

Ein 32-Bit-Betriebssystem auf einem ix86-System mit PAE kann bis zu 64 GB RAM adressieren. Ein 64-Bit-Betriebssystem auf x86-64 kann auf bis zu 256TBdes virtuellen Adressraums zugreifen, obwohl dies in nachfolgenden Prozessoren auf bis zu 16 EB angehoben werden kann. Beachten Sie, dass einige Betriebssysteme den Adressraum weiter einschränken und die meisten Motherboards zusätzliche Einschränkungen haben.

19
Phoshi

Ich bin nicht sicher, ob ich alle Ihre Fragen beantworten kann, ohne einen ganzen Aufsatz zu schreiben (es gibt immer Google ...), aber Sie müssen Ihre Apps für 64-Bit nicht anders gestalten. Ich vermute, es wird darauf hingewiesen, dass man Dinge beachten muss, bei denen die Zeigergröße nicht mehr mit der Größe von Ints übereinstimmt. Und Sie haben eine ganze Menge potenzieller Probleme mit eingebauten Annahmen für bestimmte Datentypen mit einer Länge von vier Bytes, die möglicherweise nicht mehr zutreffen.

Dies führt wahrscheinlich dazu, dass in Ihrer Anwendung alle möglichen Probleme auftreten - vom Speichern/Laden aus einer Datei über das Durchlaufen von Daten, die Datenausrichtung bis hin zu bitweisen Vorgängen mit Daten. Wenn Sie eine vorhandene Codebasis haben, die Sie portieren möchten, oder an beiden arbeiten, müssen Sie wahrscheinlich eine Menge kleiner Probleme lösen.

Ich denke, dies ist eher ein Implementierungsproblem als ein Designproblem. Das heißt Ich denke, das "Design" eines Fotobearbeitungspakets ist unabhängig von der Wortgröße gleich. Wir schreiben Code, der sowohl in der 32-Bit- als auch in der 64-Bit-Version kompiliert werden kann, und das Design unterscheidet sich sicherlich nicht zwischen den beiden - es ist dieselbe Codebasis.

Die grundlegende "große Sache" bei 64-Bit ist, dass Sie auf einen viel größeren Speicheradressraum als 32-Bit zugreifen können. Dies bedeutet, dass Sie wirklich mehr als 4 GB Speicher in Ihren Computer einbauen können und tatsächlich einen Unterschied machen müssen.

Ich bin sicher, dass andere Antworten mehr auf Details und Vorteile eingehen werden als ich.

Um den Unterschied dann programmgesteuert zu erkennen, prüfen Sie einfach die Größe eines Zeigers (z. B. sizeof (void *)). Die Antwort 4 bedeutet 32 ​​Bit und 8 bedeutet, dass Sie in einer 64-Bit-Umgebung arbeiten.

14
Greg Whitfield

Ein 32-Bit-Prozess verfügt über einen virtuellen Adressraum von 4 GB. Dies könnte für einige Apps zu wenig sein. Eine 64-Bit-App verfügt über einen praktisch unbegrenzten Adressraum (natürlich ist dieser begrenzt, aber Sie werden diesen Grenzwert höchstwahrscheinlich nicht erreichen).

Unter OSX gibt es noch weitere Vorteile. Lesen Sie den folgenden Artikel , warum die Ausführung des Kernels im 64-Bit-Adressraum (unabhängig davon, ob Ihre App auf 64 oder 32 läuft) oder die Ausführung Ihrer App im 64-Bit-Adressraum (während der Kernel noch auf 32 Bit läuft) dazu führt viel bessere Leistung. Zusammenfassend lässt sich sagen, dass der TLB ("Translation Lookaside Buffer") nicht gelöscht werden muss, wenn Sie vom Kernel auf die Verwendung von Speicherplatz und zurück umschalten (was die Geschwindigkeit erhöht) up RAM access).

Auch bei der Arbeit mit "long long int" -Variablen (64-Bit-Variablen wie uint64_t) kommt es zu Leistungssteigerungen. Eine 32-Bit-CPU kann zwei 64-Bit-Werte addieren/dividieren/subtrahieren/multiplizieren, jedoch nicht in einem einzigen Hardware-Vorgang. Stattdessen muss diese Operation in zwei (oder mehr) 32-Bit-Operationen aufgeteilt werden. Eine App, die viel mit 64-Bit-Zahlen arbeitet, kann also schneller 64-Bit-Berechnungen direkt in der Hardware durchführen.

Last but not least bietet die x86-64-Architektur mehr Register als die klassischen x86-Architekturen. Das Arbeiten mit Registern ist viel schneller als das Arbeiten mit RAM. Je mehr Register die CPU hat, desto seltener muss sie Registerwerte in RAM und zurück in Register tauschen.

Um herauszufinden, ob Ihre CPU im 64-Bit-Modus ausgeführt werden kann, können Sie sich verschiedene sysctl-Variablen ansehen. Z.B. öffne ein Terminal und tippe

sysctl machdep.cpu.extfeatures

Wenn EM64T aufgeführt ist, unterstützt Ihre CPU den 64-Bit-Adressraum gemäß dem x86-64-Standard. Sie können auch suchen

sysctl hw.optional.x86_64

Wenn 1 (wahr/aktiviert) angezeigt wird, unterstützt Ihre CPU den x86-64-Bit-Modus. Wenn 0 (falsch/deaktiviert) angezeigt wird, wird dies nicht angezeigt. Wenn die Einstellung überhaupt nicht gefunden wird, halten Sie sie für falsch.

Hinweis: Sie können sysctl-Variablen auch aus einer nativen C-App abrufen, ohne das Befehlszeilentool verwenden zu müssen. Sehen

man 3 sysctl
10
Mecki

Beachten Sie, dass der Adressraum für mehr als (echten) Speicher verwendet werden kann. Man kann auch große Dateien mit einem Memory Map versehen, was die Leistung bei ungewöhnlicheren Zugriffsmustern verbessern kann, da das leistungsstärkere und effizientere Caching auf Blockebene VM eintritt. Es ist auch sicherer, große Speicherblöcke auf 64-Bit-Systemen zuzuweisen. Bit, da der Heapmanager mit geringerer Wahrscheinlichkeit auf eine Adressraumfragmentierung stößt, die es ihm nicht ermöglicht, einen großen Block zuzuweisen.

Einige der in diesem Thread genannten Dinge (wie das Verdoppeln von # -Registern) gelten nur für x86-> x86_64, nicht für 64-Bit im Allgemeinen. Genau wie die Tatsache, dass man unter x86_64 garantiert SSE2, 686 Opcodes und einen billigen Weg hat, PIC zu machen. Bei diesen Funktionen handelt es sich streng genommen nicht um 64-Bit-Funktionen, sondern um das Ausschneiden von Legacy-Funktionen und das Beheben bekannter x86-Einschränkungen

Außerdem wird häufig darauf hingewiesen, dass das Verdoppeln von Registern die Ursache für die Beschleunigung ist, während es wahrscheinlicher ist, dass die standardmäßige Verwendung von SSE2 den Trick macht (Beschleunigen von memcpy und ähnlichen Funktionen). Wenn Sie denselben Satz für x86 aktivieren, ist der Unterschied viel geringer. (*) (***)

Bedenken Sie auch, dass es häufig zu einer anfänglichen Bestrafung kommt, da die durchschnittliche Datenstruktur nur deshalb zunimmt, weil die Größe eines Zeigers größer ist. Dies hat auch Cache-Effekte, ist aber vor allem dadurch bemerkbar, dass der durchschnittliche memcpy () (oder was auch immer das Äquivalent für die Speicherkopie in Ihrer Sprache ist) länger dauert. Dies ist nur in der Größenordnung von ein paar Prozent, aber die oben genannten Beschleunigungen sind auch in dieser Größenordnung.

In der Regel ist der Ausrichtungsaufwand bei 64-Bit-Architekturen ebenfalls höher (Aufzeichnungen, die zuvor 32-Bit-Werte enthielten, werden häufig nur zu einer Mischung aus 32-Bit- und 64-Bit-Werten), wodurch Strukturen noch mehr in die Luft gesprengt werden.

Insgesamt zeigen meine einfachen Tests, dass sie sich grob aufheben werden, wenn Treiber und Laufzeitbibliotheken vollständig angepasst wurden, was für die durchschnittliche App keinen signifikanten Geschwindigkeitsunterschied ergibt. Einige Apps können jedoch plötzlich schneller (z. B. abhängig von AES) oder langsamer werden (wichtige Datenstruktur wird ständig verschoben/gescannt/durchlaufen und enthält viele Zeiger). Die Tests wurden jedoch unter Windows durchgeführt, sodass die PIC-Optimierung nicht bewertet wurde.

Beachten Sie, dass die meisten JIT-VM-Sprachen (Java, .NET) im Durchschnitt (intern) wesentlich mehr Zeiger verwenden als z. C++. Wahrscheinlich steigt ihr Speicherbedarf mehr als bei einem durchschnittlichen Programm, aber ich traue mich nicht, dies direkt mit Verlangsamungseffekten gleichzusetzen (da diese wirklich komplex und unkonventionell sind und ohne Messung oft schwer vorherzusagen sind).

Windows 64-Bit verwendet standardmäßig SSE2 für Gleitkommazahlen, wodurch einfache Vorgänge beschleunigt und komplexe Vorgänge (sin, cos usw.) verlangsamt werden.

(*) Eine wenig bekannte Tatsache ist, dass sich die Anzahl der SSE -Register im 64-Bit-Modus ebenfalls verdoppelt

(**) Dr. Dobbs hatte vor ein paar Jahren einen schönen Artikel darüber.

9

Neben den offensichtlichen Speicherplatzproblemen, die die meisten Leute hier ansprechen, ist es meiner Meinung nach wert, sich den Begriff "Broadword Computing" anzuschauen, über den Knuth (unter anderem) in letzter Zeit gesprochen hat. Durch Bit-Manipulation kann eine Menge Effizienz gewonnen werden, und bitweise Operationen an einem 64-Bit-Wort gehen viel weiter als an einem 32-Bit-Wort. Kurz gesagt, Sie können mehr Operationen in Registern ausführen, ohne auf den Speicher zugreifen zu müssen, und aus Sicht der Leistung ist dies ein ziemlich großer Gewinn.

In Band 4 vor Fascicle 1A finden Sie einige Beispiele für die coolen Tricks, über die ich spreche.

8
Michael Dorfman

Abgesehen von der Fähigkeit, mehr Speicher zu adressieren, verfügt x86_64 auch über mehr Register, die es dem Compiler ermöglichen, effizienteren Code zu generieren. Die Leistungsverbesserung ist jedoch normalerweise relativ gering.

Die x86_64-Architektur ist abwärtskompatibel mit x86. Es ist möglich, unveränderte 32-Bit-Betriebssysteme auszuführen. Es ist auch möglich, unveränderte 32-Bit-Software unter einem 64-Bit-Betriebssystem auszuführen. Dafür sind jedoch alle üblichen 32-Bit-Bibliotheken erforderlich. Sie müssen möglicherweise separat installiert werden.

7
Kristof Provost

Dieser Thread ist schon zu lang, aber ...

Die meisten Antworten konzentrieren sich auf die Tatsache, dass Sie über einen größeren 64-Bit-Adressraum verfügen, sodass Sie mehr Speicher adressieren können. Für etwa 99% aller Anwendungen ist dies völlig irrelevant. Großer Whoop.

Der echte Grund, warum 64-Bit gut ist, ist nicht dass die Register größer sind, aber doppelt so viele! Dies bedeutet, dass der Compiler mehr Ihrer Werte im Register behalten kann, anstatt sie in den Speicher zu verschieben und sie in wenigen Anweisungen später wieder zu laden. Wenn ein optimierender Compiler Ihre Schleifen für Sie abwickelt, kann er sie ungefähr doppelt so oft abwickeln, was die Leistung erheblich verbessern kann.

Außerdem wurden die Konventionen für Unterprogrammaufrufer/Angerufene für 64-Bit definiert, um die meisten übergebenen Parameter in Registern zu halten, anstatt dass der Aufrufer sie auf den Stapel schiebt und der Angerufene sie abspringt.

So wird eine "typische" C/C++ - Anwendung eine Leistungsverbesserung von 10% oder 15% erzielen, wenn sie nur für 64-Bit neu kompiliert wird. (Angenommen, ein Teil der App ist rechnergebunden. Dies ist natürlich nicht garantiert. Alle Computer warten mit der gleichen Geschwindigkeit. Ihr Kilometerstand kann variieren.)

6
Die in Sente

Zitat von Microsoft.com:

In der folgenden Tabelle werden die erhöhten maximalen Ressourcen von Computern, die auf 64-Bit-Versionen von Windows und dem 64-Bit-Intel-Prozessor basieren, mit den vorhandenen 32-Bit-Ressourcenmaxima verglichen.

MS-Table

Mit einer 32-Bit-Maschine können Sie nur 4.294.967.295 Byte Speicher adressieren. Auf einem 64-Bit-Computer stehen 1.84467441 × 10 ^ 19 Byte Arbeitsspeicher zur Verfügung.

Wikipedia sagt das

64-Bit-Prozessoren berechnen bestimmte Aufgaben (z. B. Fakultäten großer Zahlen) doppelt so schnell wie in 32-Bit-Umgebungen (das angegebene Beispiel ergibt sich aus dem Vergleich zwischen 32-Bit- und 64-Bit-Windows-Rechner; erkennbar an Fakultäten von z. B. 100 000) ). Dies vermittelt einen allgemeinen Eindruck der theoretischen Möglichkeiten von 64-Bit-optimierten Anwendungen.

Während 64-Bit-Architekturen die Arbeit mit großen Datenmengen in Anwendungen wie digitalem Video, wissenschaftlichem Rechnen und großen Datenbanken unbestreitbar erleichtern, gab es erhebliche Debatten darüber, ob sie oder ihre 32-Bit-Kompatibilitätsmodi schneller sind als vergleichbar günstig 32-Bit-Systeme für andere Aufgaben. In der x86-64-Architektur (AMD64) können die meisten 32-Bit-Betriebssysteme und -Anwendungen problemlos auf der 64-Bit-Hardware ausgeführt werden.

Die virtuellen 64-Bit-Java-Maschinen von Sun starten langsamer als die virtuellen 32-Bit-Maschinen, da Sun nur den "Server" -JIT-Compiler (C2) für 64-Bit-Plattformen implementiert hat. [9] Der "Client" -JIT-Compiler (C1), der weniger effizienten Code erzeugt, aber viel schneller kompiliert, ist auf 64-Bit-Plattformen nicht verfügbar.

Es ist zu beachten, dass Geschwindigkeit nicht der einzige Faktor ist, der beim Vergleich von 32-Bit- und 64-Bit-Prozessoren berücksichtigt werden muss. Anwendungen wie Multitasking, Stresstests und Clustering (für Hochleistungs-Computing) (HPC) sind bei richtiger Bereitstellung möglicherweise besser für eine 64-Bit-Architektur geeignet. Aus diesem Grund sind 64-Bit-Cluster in großen Unternehmen wie IBM, HP und Microsoft weit verbreitet.

5
Mark Cidade

Neben den bereits genannten Vorteilen gibt es hier noch einige weitere Sicherheitsaspekte:

  • x86_64-CPUs haben das No-Execute-Bit in ihren Seitentabellen. Das heißt Dies kann Sicherheitslücken verhindern, die durch Pufferüberläufe verursacht werden. 32-Bit x86-CPUs unterstützen diese Funktion nur im PAE-Modus.
  • Ein größerer Adressraum ermöglicht eine bessere Randomisierung des Adressraum-Layouts (ASLR), wodurch die Ausnutzung von Pufferüberläufen erschwert wird.
  • positionsunabhängiger Code für x86_64-CPU-Funktionen, d. h. Datenzugriff relativ zum Befehlszeigerregister (RIP).

Ein weiterer Vorteil ist, dass der mit vmalloc() im Linux-Kernel zugewiesene virtuelle zusammenhängende Speicher im 64-Bit-Modus größer sein kann.

5
knweiss

Kristof und Poshi haben die wichtigsten technischen Unterschiede zwischen 32- und 64-Bit-Betriebssystemen angegeben. Die Benutzererfahrung unterscheidet sich normalerweise stark von der Theorie. Die 64-Bit-Consumer-Versionen von Windows (XP und Vista) weisen große Lücken in der Treiberunterstützung auf. Ich habe viele Drucker, Scanner und andere externe Geräte gehabt, die mit den 64-Bit-Versionen, die mit 32-Bit-Versionen gut funktionieren, überhaupt nicht funktionieren. Dies sind Geräte mit 64-Bit-Treibern, die immer noch nicht funktionieren. An dieser Stelle würde ich empfehlen, dass Sie sich von allen 64-Bit-Konsumenten von Microsoft fernhalten, bis Sie erfahren, wie Windows 7 damit umgeht, und zwar von echten Endbenutzern, nicht nur von denjenigen, die derzeit Zugriff darauf haben. Geben Sie es mindestens 6 Monate und sehen Sie, was die Leute erleben. Persönlich werde ich die 32-Bit-Version von Windows 7 installieren, da meine 64-Bit-Version von Vista ein teures Papiergewicht ist, das ich vor Äonen nicht mehr verwendet habe und zurück zu XP 32-Bit gegangen bin.

4
Kevin K

Einige Spielprogramme verwenden eine Bit-Board Darstellung. Schach, Dame und Othello haben zum Beispiel eine 8x8-Tafel, dh 64 Felder, so dass mindestens 64 Bits in einem Maschinen-Word die Leistung erheblich verbessern.

Ich erinnere mich an ein Schachprogramm, dessen 64-Bit-Version fast doppelt so schnell war wie die 32-Bit-Version.

2
Hugh Allen

Der Begriff 32-Bit und 64-Bit bezieht sich auf die Art und Weise, wie ein Computerprozessor (auch als CPU bezeichnet) mit Informationen umgeht. 64-Bit-Versionen von Windows verarbeiten große Mengen an Arbeitsspeicher (RAM) effektiver als 32-Bit-Systeme.

geschwindigkeit kann meiner meinung nach unterschiedlich sein

2
LestiWulan

Für die meisten praktischen Zwecke werden Sie wahrscheinlich keinen Unterschied bemerken.

Sie benötigen eine 64-Bit-CPU (die meisten CPUs in den letzten Jahren), um ein 64-Bit-Betriebssystem zu installieren.

Ein 64-Bit-Betriebssystem bietet einige Vorteile:

  • Damit können Sie mehr als 4 GB RAM ausführen (die maximale Anzahl, die Sie in einem 32-Bit-Betriebssystem adressieren können, beträgt 2 ^ 32 = 4 GB).
  • Es ist hilfreich, um mit großen Datenmengen (z. B. in Excel) und bestimmten rechenintensiven Aufgaben (z. B. Photoshop und große Dateien) zu arbeiten.
  • Sie können ein 64-Bit-Programm nur auf einem 64-Bit-Betriebssystem ausführen, aber Sie können ein 32-Bit-Programm auf beiden Betriebssystemen ausführen (denken Sie daran, dass viele Programme beide enthalten, sodass es nicht zu viele 64-Bit-Programme gibt Programme).

In den meisten Szenarien belegen 64-Bit-Programme etwas mehr Speicher. Bei einem Personal Computer wird dies jedoch normalerweise nicht bemerkt.

1
cyberx86

Ein weiterer Punkt in Bezug auf Microsoft Windows ist, dass es seit vielen Jahren die Win32-API gibt, die für 32-Bit-Betriebssysteme vorgesehen und nicht für das Kompilieren mit 64-Bit optimiert ist. Wenn ich einige DLLs für meine Anwendungen schreibe, kompiliere ich im Allgemeinen in Win32, was nicht die 64-Bit-Version von Dingen ist. Vor Vista gab es meines Erachtens nicht viele erfolgreiche 64-Bit-Versionen von Windows. Meiner Meinung nach verfügt mein neuer Computer über 4 GB RAM, aber ich verwende immer noch 32-Bit-Windows XP Pro als bekanntes stabiles Betriebssystem im Vergleich zu XP64 oder Vista.

Ich denke, Sie möchten vielleicht auch noch einmal auf die Zeit zurückblicken, als die Umstellung von 16-Bit auf 32-Bit stattfand, um mehr darüber zu erfahren, warum die Umstellung für manche eine große Sache sein könnte. Die geschäftskritischen Anwendungen, die ein Unternehmen auf einem Desktop ausführen kann, z. Kleine Abrechnungspakete können möglicherweise nicht auf einem 64-Bit-Betriebssystem ausgeführt werden. Daher muss eine ältere Maschine virtuell oder real verfügbar sein.

Das Ändern der Größe einer Adresse kann erhebliche Auswirkungen und Auswirkungen haben.

1
JB King