2017-02-27 1 views
0

Ich habe Probleme zu verstehen, in wie eine 32-Bit-Computer-Byte-Adressierung erreicht wird:Wie wird die Adressierung von Bytes in modernen Computern implementiert?

Ist der RAM selbst Byte adressierbar Bedeutung das erste Byte hat Adresse 0 und die zweite 1 usw.? In diesem Fall würde nicht 4 Lesezyklen dauern, um ein 32-Bit-Wort zu lesen und die Breite des Datenbusses zu verschwenden?

Oder besteht der RAM aus 32-Bit-Wörtern, was bedeutet, dass die Adresse 0 auf die ersten 4 Bytes und die Adresse 2 auf die Bytes 5 bis 8 zeigt? In diesem Fall würde ich erwarten, dass die RAM-Schnittstelle die Byte-Adressierung möglich macht (aus der CPU-Sicht)

Antwort

0

Denken Sie an RAM als 8 Bit breite Struktur mit N Einträgen. N ist oft die angegebene Größe, wenn auf Speicher Bezug genommen wird (256 MB - 256 Mio. Einträge, 2 GB - 2 G Einträge usw., B ist für Bytes). Wenn Sie auf diesen Speicher zugreifen, ist die kleinste Einheit, die Sie adressieren können, einer dieser Einträge, nämlich 8 Bit (1 Byte). Da Sie nur auf Byte-Ebene darauf zugreifen können, nennen wir es Byte-adressierbaren Speicher.

Nun zu Ihrer Frage über den Zugriff auf diesen Speicher, greifen wir nicht nur auf ein Byte. In den meisten Fällen werden Speicherzugriffe über Caches gesendet, um die Speicherzugriffslatenz zu verringern. Cachespeicher speichern Daten mit einer höheren Granularität als ein Byte oder ein Wort, normalerweise sind es mehrere Wörter. Caches erkunden dabei eine Eigenschaft, die "Lokalität" genannt wird. Lokalität bedeutet, dass die Wahrscheinlichkeit hoch ist, dass wir entweder sehr bald auf dieses Datenelement oder ein Datenelement in der Nähe zugreifen. Es ist also keine Verschwendung, nicht nur das Byte, sondern alle benachbarten Bytes zu holen. Betrachten Sie es als eine Investition für die Zukunft, speichert Sie mehrere Daten holen, die Sie sonst getan hätten.

-1

Speicheradressen im RAM beginnen mit 0. Adresse und sie werden unter Verwendung der Register mit einer Kapazität von 8 Bit Register oder 32 Bit zugegriffen Register. Basierend auf diesen Registern wird auf den Wert von der spezifischen Adresse durch die CPU zugegriffen. Wenn Sie wirklich verstehen müssen, wie es funktioniert, müssen Sie einige Programme mit Assembler ausführen, um im physischen Speicher zu navigieren, indem Sie die Werte direkt mit Registern lesen und Bewegungsbefehle registrieren.

Verwandte Themen