Wie können 4 GB 32 Bit Speicheradresse entsprechen?

292
Qureshi

Vergib mir, dass ich diese Frage naiv gestellt habe.

Wie können 4 GB 32 Bit Speicheradresse entsprechen? Wenn ich mich nicht irre, sind 4 GB * 1024 * 1024 * 1024 = 4.294.697.296 Bytes Speicherzellen. Warum also nicht mit 8 multiplizieren, um es auf Bits zu reduzieren, vorausgesetzt, 1 Byte = 8 Bit.

-2
Es gibt keine Adressen von Bits. Es gibt nur Adressen für Bytes. Wir müssen also Bytes zählen und adressieren, nicht Bits. Wir dürfen uns also nicht mit 8 multiplizieren. Akina vor 5 Jahren 0
Lesen Sie [diese Antwort und Kommentare] (https://superuser.com/a/593863/194694). gronostaj vor 5 Jahren 0
Warum sagen wir also, dass 32 Bits 4.294.697.296 Speicheradressen haben? Während tatsächlich 2 ^ 32 Bytes = 4.294.697.296 Qureshi vor 5 Jahren 0
32-Bit-Adressen können 2 ^ 32 = 4.294.697.296 verschiedene Adressen speichern. Jeder Wert adressiert ein einzelnes Byte => 4 GB. Es gab bereits ein genaues Duplikat davon, aber ich kann es nicht finden, diese Frage zu schließen phuclv vor 5 Jahren 0

1 Antwort auf die Frage

2
Mokubai

Denn es macht keinen Sinn, den Speicher bitweise zu adressieren. Es ist viel schneller und effizienter, ein Byte Speicher auf einmal abzufragen, anstatt jedes Bit einzeln abzufragen.

Die interne Betriebszeit für die Verarbeitung von Daten in einer CPU wird in Nanosekunden gemessen. Die Zeit zum Auswählen einer Speicheradresse, Warten, bis die Daten an dieser Adresse am Bus erscheinen und dann verwendbar sind, beträgt Mikrosekunden (einige Größenordnungen langsamer).

Angenommen, Sie müssten 8-mal so lange warten, bis ein volles Byte an verwendbaren Daten verfügbar ist, wenn Sie die Bit-Adressierung verwenden, bedeutet dies eine unzumutbare zusätzliche Arbeit und Verzögerung beim Abrufen von Daten. Während Sie auf Daten warten, bis Ihr Programm eintrifft, ist Ihr Programm effektiv blockiert.

Durch die Verwendung einer größeren Basiseinheit (Byte) reduzieren wir die Zeit für den Datenzugriff um weniger als eine Größenordnung und übertragen gleichzeitig mehr nützliche Daten.

Dies wäre der ursprüngliche Grund für die Wahl der Speicheradressierung mit Bytes gewesen.

Die Byte-Adressierung wird aus Gründen der Vereinfachung immer noch verwendet. Dies ist immer noch ein sehr nützlicher kleiner Datenblock. Moderne Speicher übertragen jetzt größere Datenblöcke in Bursts, um die Leistung zu erhalten, da wir über den Punkt hinausgegangen sind, an dem die Übertragung einzelner Bytes erfolgt. effizient".