Wie viel Speicher kann eine 64-Bit-Maschine gleichzeitig adressieren?


32

Wenn der Speicher byteadressierbar ist, sollte es nicht so sein

2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB ?

Eine allgemeine Google-Suche sagt 8 GB oder 16 GB max.

Wie ist das wahr? Wie hängt es auch vom Betriebssystem ab?


8 GB sind offensichtlich von der Wand, da meine Arbeitsmaschine 12 GB hat und alles adressieren kann, plus ein GB Video-RAM, plus meine gesamte Hardware plus meinen gesamten virtuellen Speicher.

Newegg verkauft ein 32-GB-RAM-Paket, das für einen Computer vorgesehen ist. 32-Bit unterstützt 3,2 GB, und 128-Bit unterstützt Millionen von Terabyte. 64-Bit ist also weit mehr als doppelt so viel wie 32-Bit.
tkbx

Antworten:


53

Es gibt mehrere Verschachtelungsfaktoren.

Zunächst einmal werden Sie niemals in der Lage sein, ein System zusammenzustellen, das über 2 64 Bytes (16 Exibytes) physischen RAM verfügt.

Zweitens bedeutet eine Architektur, die 64-Bit-Zeiger verwendet, nicht, dass alle Bits dieser Zeiger tatsächlich verwendet werden. Insbesondere verwenden aktuelle x86-64-CPUs (auch bekannt als AMD64- und Intels aktuelle 64-Bit-Chips) 48-Bit-Adressleitungen (AMD64) und 42-Bit-Adressleitungen (Intel) (siehe http://en.wikipedia.org/wiki) / X86_64 # Virtual_address_space_details ), was theoretisch 256 Terabyte physischen RAM erlaubt.

Zweitens haben Motherboards ihre eigenen Grenzen, wie viel RAM sie sowohl physisch als auch logisch unterstützen können. Physikalisch wird es nur so viele Slots für RAM geben. Was die "logischen" Grenzen angeht, verstehe ich nicht ganz, warum dies bei x86-64 immer noch der Fall ist (der Speichercontroller wurde längst in die CPU selbst migriert), aber da ist er. Vermutlich werden an den Adressleitungen Ecken abgeschnitten, um ein paar Dollar bei Design und Herstellung zu sparen.

Drittens kann ein Betriebssystem interne Einschränkungen dahingehend haben, wie viel RAM effizient unterstützt werden kann. Dies dient zum Teil dazu, zu verhindern, dass übermäßig große Datenstrukturen benötigt werden, um die Nutzung von Speicher zu verfolgen, der nicht wirklich vorhanden ist. Zuletzt habe ich überprüft, dass Linux 128 TB virtuellen Adressraum pro Prozess auf x86-64 zulässt und theoretisch 64 TB physischen RAM unterstützen kann.

Viertens begrenzen einige Betriebssysteme (z. B. Windows) künstlich, wie viel RAM als Taktik verwendet werden kann, damit Benutzer auf teurere Versionen aktualisieren, wenn sie mehr RAM möchten (Windows 7 Starter ist auf 2 GB, Home Basic auf 8, Home Premium beschränkt) bis 16 und Professional und höher sind 192 GB, und Windows Server-Versionen haben weit höhere Grenzwerte).


1
+1 für die Erwähnung von physischen Adressleitungen, die typischerweise << Anzahl von Bits in einem Adressregister auf 64-Bit-Architekturen sind
Paul R

3
Eine Quelle für die 42-Bit-Adressleitungen (hinzugefügt durch anonyme Bearbeitung) wäre willkommen. Bis dahin halte ich diese Informationen persönlich nicht für vertrauenswürdig.
Bob

21
Sag niemals nie. Moores Gesetz ist immer noch in Kraft, das letzte, was ich gehört habe, also können Systeme mit 16 Exabyte RAM in unserem Leben auftauchen. Dann müssen wir alle auf 128-Bit-Betriebssysteme umsteigen ...
Michael Hampton

Physikalische Adressen werden auch durch die Anzahl der Bits begrenzt, die für physikalische Adressen in den TLBs bereitgestellt werden (und durch die Größe der Cache-Tags, denen eine physikalische Adressenkennzeichnung zugewiesen wurde), und durch die Bits, die für physikalische Adressen in den Seitentabelleneinträgen verfügbar sind (sofern diese durch die definiert sind) Architektur wie in x86-64 (unterstützt 52-Bit-Adressraum mit 4-KB-Seiten). Letzteres ist eine strengere (nicht implementierungsbasierte) Grenze, obwohl auch Architekturen geändert werden können.
Paul A. Clayton

2
@MichaelHampton - NecroReply, konnte aber nicht widerstehen :) Das Verdoppeln alle 2 Jahre (was schneller ist als die neuesten Trends) würde immer noch 60 Jahre dauern, um von 16 GB auf 16 EB zu kommen. Bis dahin bezweifle ich, dass "Gesetze" über Siliziumtransistoren irgendeine Relevanz haben werden;)
MatBailie

9

Wenn Sie MS Windows verwenden, ist der maximale Arbeitsspeicher vom Betriebssystem abhängig.

Für Windows 7 sind die Höchstwerte:

  • Starter: 2 GB
  • Home Basic: 8 GB
  • Home Premium: 16 GB
  • Professionell: 192 GB
  • Unternehmen: 192 GB
  • Ultimate: 192 GB

Windows Server 2008 reicht von 8 GB für Einsteiger bis zu 2 TB für den Anfang der Zeile.

Eine vollständige Liste finden Sie unter http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx .

Diese Grenzwerte dienen hauptsächlich Marketingzwecken. Indem sie die billigeren Versionen einschränken, machen sie die High-End-Versionen (vergleichsweise) attraktiver.

Ich denke, dass neuere Linux-Builds mit rund 32 TB RAM funktionieren, obwohl dies nicht von allen Hardwarekomponenten unterstützt wird.


4
Das sind keine wirklichen technischen Grenzen. Das sind künstliche Grenzen, die aus geschäftlichen Gründen eingeführt wurden.
Kasperd

8

Ein 64-Bit-Computer sollte in der Lage sein, bis zu 2 64 adressierbare Einheiten zu adressieren (in Architekturen, die in den letzten Jahrzehnten entwickelt wurden, sind adressierbare Einheiten ausnahmslos Bytes, auch bekannt als Oktette). Wenn Sie ein "Gigabyte" als 2 30 adressierbare Einheiten definieren, sind 2 34 Gigabyte eine weitere Möglichkeit, die gleiche Anzahl auszudrücken.

Welche Google-Suche hat diese lächerlichen winzigen Ergebnisse hervorgebracht? Vielleicht hat die Seite, die Sie gefunden haben, über die Menge an RAM gesprochen, die Sie in einigermaßen günstigen Boxen eines bestimmten Modells kaufen können - Sie können definitiv viel mehr RAM haben (natürlich alle adressierbar), auch in Boxen, die alles andere als sehr teuer sind .

Mit Sicherheit können und können Betriebssysteme die Größe des adressierbaren Speichers einschränken (z. B. indem sie die Größe der Seitentabellen auf ein konfigurierbares Maximum beschränken, das durch Neukompilieren oder anderweitiges Neukonfigurieren des Betriebssystems festgelegt werden kann - das ist schwierig spezifischer sein, ohne sich auf eine bestimmte Gruppe von Betriebssystemen zu konzentrieren).


Warum sind 2 ^ 30 adressierbare Einheiten 1 GB? Jede Adresseinheit speichert 1 Bit, so dass 2 ^ 30 Adresseinheiten so viele Bits speichern, die sich auf 0,134217728 Gigabyte belaufen. Was vermisse ich?
Darshan Chaudhary

1
@DarshanChaudhary 2 ^ 30 ist die Anzahl der unterschiedlichen Adressen. Jede Adresse identifiziert ein Byte Speicher, kein Bit.
David Moles

3

Sie können so viel RAM haben, wie Sie möchten, aber es hängt alles vom Betriebssystem und der Anwendung ab, die Sie ausführen - wie jemand anderes angegeben hat.

Wenn Sie eine CPU-intensive Anwendung ausführen, die sich auch intensiv mit anderer Hardware wie Ihrer Festplatte befasst, sollten Sie eine zweite CPU auf einem vollständig separaten Computer in Betracht ziehen. Beispiel: Eine Datenbankanwendung und ein E-Mail-Server werden auf separaten Computern ausgeführt.

Es spielt keine Rolle, wie viel Speicher Sie haben - auf dem heutigen Markt wird das gesamte System zum Stillstand kommen. Einzelne CPUs können das Multitasking einfach nicht so bewältigen, wie Sie es erwarten.

Für einen einzelnen Computer mit viel Speicher ist es besser, aber nicht so hervorragend, wenn mehrere Anwendungen auf demselben System ausgeführt werden - unabhängig von der installierten Speichermenge. Dies ist genau der Grund, warum große Unternehmen nicht nur die 64-Bit-Architektur verwenden, um mehr Speicher zu adressieren, sondern auch den Lastausgleich für zwei oder mehr Server durchführen.

Wenn Sie die Leistung wirklich ernst nehmen, sollten Sie auf jeden Fall auf 64-Bit umsteigen, aber auch einen Lastenausgleich mit einem zweiten Server in Betracht ziehen.

Ich war auf diesem Weg und habe eine einzelne Maschine mit maximalem RAM konfiguriert. Wenn mehrere Anwendungen ausgeführt werden, läuft es dennoch wie ein Hund. Das liegt daran, dass die CPU selbst einfach nicht damit umgehen kann.

Mein Rat ist, Ihre Dollars auf dem Speicher zu speichern und einen zweiten Server zu kaufen und dann die zwei zu laden, auszugleichen. Es ist viel einfacher und lässt sich einfach erweitern, wenn Sie mehr Rechenleistung und Geschwindigkeit benötigen.

Eine Maschine mit 64-Bit-Architektur kann auch mit 32-Bit-Software umgehen, aber bei einer 32-Bit-Maschine ist die Anzahl der Anwendungen auf 32-Bit-Anwendungen oder weniger beschränkt - einschließlich des Betriebssystems.

Da der gesamte Markt sowohl hard- als auch softwaremäßig auf 64-Bit umsteigt, würde ich empfehlen, langfristig auf 64-Bit umzusteigen. Vergessen Sie jedoch die Idee, alles auf eine einzige Maschine mit einer großen Menge Arbeitsspeicher zu packen, da Sie enttäuscht sein werden.

Wenn Sie sich nicht sicher sind, was "Load Balancing" ist, dann googeln Sie es.


2

Ich denke, es kann mehr als ein Exabyte "EB" dauern.

Schauen Sie sich an, dieser 32-Bit-Prozessor kann 2 32 B = 4 GB, aber höchstens 3 GB aufnehmen, "weil sie 1 GB für umgekehrte Adressen sind".

Das bedeutet, 64-Bit-Prozessor kann 2 64 B = 16 EB nehmen, aber ich kann nicht, wie Adressen, die für umgekehrt gesperrt sind, verwendet werden. Wir können also sagen, dass ein 64-Bit-Prozessor mehr als 1 EB benötigt. und diese Spezifikation hängt nicht davon ab, welches Betriebssystem der PC verwendet hat oder welches Modell er hat.


1
In der Praxis verfügen 64-Bit-Prozessoren normalerweise über einen 48-Bit-Adressraum, der für 256 Terabyte Arbeitsspeicher ausreicht.
465544

Ich denke du meinst exbibyte , nicht exabyte .
Martineau

1

Am Beispiel einer Intel- oder AMD-CPU gibt es verschiedene Einschränkungen sowohl für den physischen als auch für den virtuellen Speicher. Andere Leute haben über Einschränkungen der Hardware-Pinbelegung und der Hauptplatine gesprochen, aber es gibt auch interne Einschränkungen.

Ein Eintrag in der Terminalseitentabelle in der MMU enthält 52 signifikante Bits der physikalischen Adresse und kann theoretisch bis zu 4096 TB des physikalischen RAM abbilden.

Die MMU implementiert eine Seitentabelle mit 4 Ebenen, deren oberste Ebene aus 512 × 512 GB Einträgen besteht. Der virtuelle Speicher ist also auf 256 TB begrenzt.

Soweit ich weiß, implementieren alle 64-Bit-Betriebssysteme ein DMAP (eine Direktzuordnung), was sehr praktisch ist. Da der virtuelle Speicher jedoch auf 256 TB begrenzt ist, ist auch die Größe des DMAP begrenzt. Normalerweise sind 128 TB für den Benutzermodus und 128 TB für den Kernel reserviert. Von diesen 128 TB für den Kernel können bis zu die Hälfte für den DMAP reserviert werden. Aufgrund der Nützlichkeit des DMAP beschränken Betriebssysteme den physischen Speicher normalerweise auf das, was der DMAP verarbeiten kann.

Bei den meisten (allen?) 64-Bit-Betriebssystemen für Intel / AMD ist der unterstützte physische Speicher auf ungefähr 64 TB beschränkt, wobei 64 TB für den allgemeinen virtuellen Kernelspeicher und 128 TB für den virtuellen Benutzerspeicher verbleiben.

-

In den CPU-internen Caches ist die Anzahl der von ihnen gespeicherten physischen Adressbits ebenfalls begrenzt, da jedes zusätzliche Adressbit mehr Transistoren für das Cache-Tag aufnimmt. DRAM-Controller-Pin-Beschränkungen sind nicht unbedingt das letzte Wort, da der Speicher auch über DMI-Links adressiert werden kann.

Unterschiedliche CPU-Architekturen (z. B. ARM, PowerPC usw.) unterliegen unterschiedlichen Einschränkungen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.