RAM-Einschränkung bei 64-Bit-Arch

658
user1683642

Ich sehe, dass es viele Stellen gibt, die die Begrenzung auf 16 EB RAM erwähnen. Ein modernes Register ist jedoch nicht 64-Bit? und wenn ja, sollte 2 64 auf die Anzahl der möglichen Register zeigen, und da sie jeweils 8 Bytes sind, sollte die tatsächliche Grenze 128 EB ((2 64) * 8 Bytes) sein. Beispiel: 32 Bits gehen an einen Decoder von 32X (2 ^ 32) und die anderen 32 Bits gehen an den anderen 32X (2 ^ 32) - Decoder, um die richtigen Drähte in jedem Decoder einzuschalten und somit auf ein bestimmtes Register des zuzugreifen (2 ^ 32) ^ 2 verfügbare Register mit jeweils 64 Bit Daten (für den 64 Bit-Bus, der gespeichert werden soll).

Klar fehlt mir entweder etwas oder die Chance, dass ich recht habe und 16 EB ist nicht wirklich das Limit ...

0
Könnte es sein, dass Sie ein bisschen gemischt und ein bisschen gemischt sind? Wenn ja, würde es zu 16 EB kommen Schwertspize vor 8 Jahren 0
[`Ein 64-Bit-Register kann 2 ^ 64 verschiedene Werte speichern. Daher kann ein Prozessor mit 64-Bit-Speicheradressen direkt auf 2 ^ 64 Bytes (= 16 Exbibytes) byteadressierbaren Speichers zugreifen. `] (Https://en.wikipedia.org/wiki/64-bit_computing) Warum bist du so? Multiplikation mit weiteren 8? MC10 vor 8 Jahren 0
64-Bit-Register = 8 Bytes und 16 EB scheinen darauf hinzuweisen, dass das Register nur 8-Bit-Register hat user1683642 vor 8 Jahren 0
@ user1683642 Der Speicher wird in Bytes und nicht in der Größe von (Register) adressiert, sodass die Größe des Registers keine Rolle spielt. Darth Android vor 8 Jahren 0
Dank Darth Android war Ihre Antwort die nützlichste user1683642 vor 8 Jahren 0

2 Antworten auf die Frage

1
Sebastian R.

In einer 32-Bit-Architektur enthalten Zeiger 32 (verwendbare) Bits und können 2 ^ 32 (= 4294967296) verschiedene Adressen adressieren. Jede Adresse zeigt auf ein Byte, daher beträgt Ihr Adressraum 4294967296 Byte oder 4 GiB.

Bei einer 64-Bit-Architektur gilt dasselbe Argument: Sie können 2 ^ 64 verschiedene Adressen adressieren, und jede Adresse zeigt auf ein Byte, sodass Ihr Adressraum 2 ^ 64 Bytes groß ist, genau 16 EiB.

Beachten Sie jedoch, dass Zeiger auf (aktuellem) x86_64 nur 48 verwendbare Adressbits haben, um etwas Silizium zu sparen. Der Versuch, auf ungültige Adressen zuzugreifen, führt zu einer CPU-Ausnahme, da die anderen Bits nicht implementiert werden. Die Architektur wird jedoch erweitert, wenn der zusätzliche Speicher praktisch wird.

Das Register ist also 8 Bit ... Wenn ja, wie wird der 64-Bit-Datenbus gespeichert? in 8 verschiedenen Registern? würde das nicht 8 Zyklen erfordern? user1683642 vor 8 Jahren 0
Ein 64-Bit-Register enthält 64 ** Bits **, also 8 ** Bytes **. Sebastian R. vor 8 Jahren 0
@ user1683642 - Woher hast du Register bekommen sind 8 Bit von. Ich sehe in dieser Antwort keinen Hinweis darauf. Ramhound vor 8 Jahren 0
Ja, es gibt ... wenn Sie wissen, wie RAM erstellt wird, 2 Decoder, die auf (in einem 64-Bit-System) 2 ^ 64 Register zeigen können ... Jedes Register muss 8 Bit umfassen, damit die Gesamtgrenze 16 EB beträgt seit 2 ^ 64 verlinkt zu: 1.844674407 × 10¹⁹ Register * 1 Byte = 1.844674407 × 10¹⁹ Bytes = 16 EB user1683642 vor 8 Jahren 0
Ich denke, Sie haben einige Dokumentationen darüber gelesen, wie altes DRAM vor 20 Jahren angeschlossen wurde, und es wurde viel davon zurückgeworfen. Moderner RAM funktioniert anders. Dies ist jedoch nicht der Ort, um darüber weiter zu diskutieren. Sebastian R. vor 8 Jahren 1
Ok, danke ... Ich öffne einen neuen Thread dafür, nachdem ich einige neuere Quellen gelesen habe ... (wenn ich es immer noch nicht verstehe), scheint es komisch, dass sie ihn ändern würden, weil der alte tatsächlich das Limit erhöhen würde ( 128 EB) user1683642 vor 8 Jahren 0
Ich habe es recherchiert und die Antwort auf meine eigene Frage gestellt: Die meisten modernen Computer verwenden byte-adressierbares RAM ... user1683642 vor 8 Jahren 0
0
user1683642

OK, ich habe weiter recherchiert und es scheint, dass das Adressregister auf 8-Bit-Register (Byte-adressierbar) verweist. Wenn die Daten zu groß sind, um ein einzelnes Byte zu speichern, wird der Rest in aufeinanderfolgenden Adressen abgelegt ... Es gibt jedoch RAM-Typen, die ein größeres Register pro Adressenposition (wortadressierbar) haben, was die Speicherkapazität des RAM erhöhen würde, die CPU jedoch dazu veranlassen muss, das "Wort" in mehrere separate Bytes aufzuteilen, wenn ASCII benötigt wird. Wenn moderne Computer mit dieser Methode hergestellt würden, würde sich die Kapazität für ein 64-Bit-Register um den Faktor 8 erhöhen, würde jedoch mehr Verarbeitungsaufwand und mehr Code erfordern, um die Werte zu verwalten, um sie zu teilen oder zusammenzuhalten ... Vielen Dank für Ihre Hilfe .

Zur Klarstellung, der RAM-Typ, von dem ich hier spreche, ist nicht für moderne Computer geeignet. Er passt für ganz bestimmte Computer, die für diesen RAM-Typ programmiert wurden user1683642 vor 8 Jahren 0