RAM-Beschränkung für 64-Bit-Arch

0

ORIGINAL FRAGE: (Sie können dieses Durcheinander einer Frage lesen, aber ich schlage vor, zu der neu geschriebenen Frage zu springen)

Ich sehe, dass es viele Stellen gibt, an denen die Beschränkung auf 16 EB RAM erwähnt wird ... Ist ein modernes Register jedoch nicht 64-Bit? In diesem Fall sollte 2 ^ 64 auf die Anzahl der möglichen Register verweisen. Da es sich um jeweils 8 Byte handelt, sollte die tatsächliche Grenze 128 EB ((2 ^ 64) * 8 Byte) betragen. Beispiel: 32 Bits gehen zu einem 32X (2 ^ 32) Decoder und die anderen 32 Bits gehen zu dem 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 Register mit jeweils 64 Datenbits (für den zu speichernden 64-Bit-Bus).

Klar, ich vermisse entweder etwas oder es gibt eine seltsame Chance, dass ich Recht habe und 16 EB ist nicht wirklich die Grenze ...

BEARBEITEN:

Dies wurde vor langer Zeit geschrieben, als ich mir selbst etwas über RAM beibrachte. Ich bin über mehrere Quellen gestolpert, die mir widersprachen (zumindest in meinen Gedanken, aber ich kann mich nicht genau erinnern, warum ich so verwirrt war, eine Frage darüber zu schreiben ) und muss verwirrt worden sein.

Ich möchte meine ursprüngliche Frage lieber noch einmal klären, als sie zu löschen, damit sie für zukünftige Leser nützlicher ist (aber ich brauche keine Antwort, das habe ich mir vor einigen Jahren selbst beigebracht und habe seitdem sogar einen Abschluss in Informatik dann).

DIE FRAGE: (geschrieben in einer Weise, die für andere Menschen nützlicher ist)

Als ich diese Frage stellte, verwendete ich den Begriff "Register" sehr locker, um auf einen Speicherort Bezug zu nehmen, und nahm an, dass der RAM wortadressierbar ist (daher die Verwendung von 8 Bytes für eine 64-Bit-Architektur). Wenn der RAM wortadressierbar wäre, würde jeder Speicherplatz 8 Bytes enthalten und daher 16E · 8 Bytes = 128EB.

Da die meisten modernen Computer die Byteadressierung verwenden, beträgt die tatsächliche Größe jedes Speicherplatzes 1 Byte (8 Bit) und daher 16E * 1 Byte = 16EB.

NÜTZLICHER HINWEIS:

Ein byteadressierbarer RAM erleichtert die Verwaltung, sodass der Unterschied zwischen 32 Bit und 64 Bit nicht so groß ist. Bei einem RAM-Aufruf wird jedoch immer noch das gesamte 64-Bit-Wort abgerufen (indem die letzten 3 Bits der Adresse für ignoriert werden Wenn nur 1 Byte benötigt wird, können die anderen 7 Byte ignoriert werden.

Ein weiterer nützlicher Hinweis: Bei der 64-Bit-Adressierung werden normalerweise nur 40-52 Bit verwendet. Dadurch verbleibt eine ausreichende Menge an maximalem RAM (zwischen 1 TB und 4 PB).

user1683642
quelle
Könnte es sein, dass Sie Bit und Byte gemischt haben?
Schwertspize
64-Bit-Register = 8 Bytes und 16 EB scheinen darauf hinzuweisen, dass das Register nur 8-Bit-Register hat
user1683642
@ user1683642 Der Speicher wird in Bytes und nicht in sizeof (Register) adressiert, sodass die Größe des Registers keine Rolle spielt.
Darth Android
danke Darth Android, deine Antwort war die nützlichste
user1683642

Antworten:

1

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

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

Beachten Sie jedoch, dass Zeiger auf (aktuellen) 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.

Sebastian R.
quelle
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
Ein 64-Bit-Register enthält 64 Bit (8 Byte) .
Sebastian R.
@ user1683642 - Woher hast du die Register? Ich sehe in dieser Antwort keine Erwähnung davon.
Ramhound
1
Ich denke, Sie haben eine Dokumentation darüber gelesen, wie alt DRAM vor 20 Jahren angeschlossen war, und haben eine Menge davon rückgängig gemacht. Moderner RAM funktioniert anders. Dies ist jedoch nicht der Ort, um weiter darüber zu diskutieren.
Sebastian R.
Ok, danke ... ich werde dafür einen neuen Thread eröffnen, nachdem ich einige neuere Quellen gelesen habe ... (wenn ich es immer noch nicht verstehe) scheint seltsam, dass sie es ändern würden, weil der alte das Limit tatsächlich höher machen würde ( 128 EB)
user1683642