2010-04-27 12 views
18

Kann jemand erklären, was ist der Unterschied zwischen Word und Byte adressierbar? Wie hängt es mit der Speichergröße usw. zusammen?Unterschied zwischen Wort adressierbar und Byte adressierbar

+2

Siehe [Byte-vs-Adressierungsschemata] (http://tams-www.informatik.uni-hamburg.de/applets/ hades/webdemos/50-rtlib/40-memory/byte-vs-word.html):> Eine Demonstration von byte- und wortbasierten Adressierungsschemata. –

Antwort

25

Ein Byte ist eine Speichereinheit für Speicher und ein Speicherchip ist voll von solchen Bytes. Speichereinheiten sind adressierbar. Nur so können wir das Gedächtnis nutzen.

In Wirklichkeit ist Speicher nur Byte adressierbar. Es bedeutet, dass eine binäre Adresse immer nur auf ein einziges Byte zeigt. Ein Wort ist nur eine Gruppe von Bytes – 2, 4, 8, abhängig von der Datenbusgröße der CPU.

Um die Speicheroperation vollständig zu verstehen, müssen Sie mit den verschiedenen Registern der CPU und den Speicherports des RAM vertraut sein. Ich nehme an, Sie kennen die Bedeutung 'MAR-Speicheradressregister', 'MDR-Speicherdatenregister', 'PC-Programmzählerregister', 'MBR-Speicherpufferregister'. RAM hat zwei Speicherports: 32 Bit für Daten/Adressen, 8 Bit für OPCODE.

Angenommen, die CPU möchte ab der Adresse xyz ein Wort (etwa 4 Byte) lesen. CPU würde die Adresse auf den MAR setzen, sendet ein Speicherlesesignal an den Speichercontrollerchip. Beim Empfang der Adresse und des Lesesignals würde der Speichercontroller den Datenbus mit dem 32-Bit-Port verbinden und 4 Bytes ausgehend von der Adresse xyz würden aus dem Port zum MDR fließen.

Wenn die CPU den nächsten Befehl abrufen möchte, würde sie die Adresse in das PC-Register eingeben und ein Abrufsignal an den Speichercontroller senden. Bei Empfang des Adress- und Abrufsignals würde der Speichercontroller den Datenbus mit dem 8-Bit-Port verbinden und ein einzelner Byte langer Opcode, der sich an der empfangenen Adresse befindet, würde aus dem RAM in den MDR der CPU fließen.

Also das ist, was es bedeutet, wenn wir sagen, ein bestimmtes Register ist "Speicher adressierbar" oder "Byte adressierbar". Nun, was passiert, wenn Sie sagen, Dezimal 2 binär auf der MAR mit der Absicht, das "Wort" 2, nicht (Byte Nr. 2) zu lesen?

Wort Nr. 2 bedeutet Byte 4, 5, 6, 7 für 32-Bit-Maschine. In Wirklichkeit ist physikalischer Speicher nur byteadressierbar. Also gibt es einen Trick, um mit Wortadressierung umzugehen.
Wenn MAR auf den Adressbus gesetzt wird, werden seine 32 Bits nicht auf die 32 Adressleitungen 0-31 abgebildet. Stattdessen ist das MAR-Bit 0 mit der Busleitung 2 verdrahtet, das MAR-Bit 1 ist mit der Busleitung 3 verdrahtet und so weiter. Die oberen 2 Bits von MAR werden verworfen, da sie nur für Wortadressen über 2^32 benötigt werden, von denen keine für unsere 32-Bit-Maschine zulässig sind.
Mit dieser Zuordnung wird, wenn MAR 1 ist, Adresse 4 auf den Bus gelegt, wenn MAR 2 ist, Adresse 8 wird auf den Bus gesetzt und so weiter.

Es ist ein bisschen schwierig am Anfang zu verstehen. Ich habe es von Andrew Tanenbaums "strukturierter Computerorganisation" gelernt.

1

soll Dieses Bild, um es zu verstehen, macht einfach: http://i.stack.imgur.com/rpB7N.png

einfach,

• Im Byte setzte Adressierungsschema, beginnt das erste Wort bei der Adresse 0 und das zweite Wort beginnt an der Adresse 4 .

• Im Adressierungsschema befinden sich alle Bytes des ersten Wortes in Adresse 0 und alle Bytes des zweiten Wortes befinden sich in Adresse 1.

Der Vorteil der Byte-Adressierbarkeit ist klar, wenn wir Anwendungen betrachten, die Daten Byte für Byte verarbeiten. Der Zugriff auf ein einzelnes Byte in einem Byte-adressierbaren System erfordert nur die Ausgabe einer einzelnen Adresse. In einem 16-Bit-Wort-adressierbaren System ist es notwendig, zuerst die Adresse des Wortes, das das Byte enthält, zu berechnen, dieses Wort zu holen und dann das Byte aus dem Zwei-Byte-Wort zu extrahieren. Obwohl die Prozesse für die Byte-Extraktion gut verstanden sind, sind sie weniger effizient als der direkte Zugriff auf das Byte. Aus diesem Grund sind viele moderne Maschinen byteadressierbar.

1

Adressierbarkeit ist die Größe einer Speichereinheit, die ihre eigene Adresse hat. Es ist auch der kleinste Speicherbereich, den Sie ändern können, ohne seine Nachbarn zu beeinflussen.

Zum Beispiel: eine Maschine, wo Bytes die normalen 8 Bits sind, und die Wortgröße = 4 Bytes. Wenn es sich um ein wortadressierbares Gerät handelt, gibt es keine Adresse des zweiten Bytes einer int. Der Umgang mit Zeichenketten (z. B. ein Array wie char str[]) wird unpraktisch, weil Sie immer noch zusammen gepackte Zeichen speichern. Ändern nur str[1] bedeutet Laden des Wortes, das es enthält, einige Schicht/und/oder Operationen zu tun, um die Änderung anzuwenden, dann einen Wortspeicher zu tun.

Beachten Sie, dass sich dies von einer Maschine unterscheidet, die kein unausgeglichenes Laden/Speichern von Wörtern zulässt (wobei die niedrigen 2 Bits einer Wortadresse 0 sein müssen). Solche Maschinen haben normalerweise eine Byte-Lade/Speicher-Anweisung. Wir reden über Maschinen ohne auch nur das.

CPU-Adressen enthalten möglicherweise weiterhin die niedrigen Bits, erfordern jedoch, dass sie immer null sind (oder sie ignorieren). Nachdem sie jedoch überprüft haben, dass sie null sind, könnten sie verworfen werden, so dass der Rest des Speichersystems nur die Wortadresse sieht, wobei zwei benachbarte Wörter eine Adresse haben, die sich um 1 (nicht 4) unterscheidet. Auf einer 16-Bit-CPU, bei der ein Register nur 64.000 Adressen speichern kann, würden Sie dies wahrscheinlich nicht tun. Jede separate CPU-Adresse würde sich auf andere 2 Byte Speicher beziehen, anstatt das niedrige Bit zu verwerfen. Mit dem 2B-adressierbaren Speicher können Sie 128 KB Speicher adressieren, statt nur 64 KB mit byteadressierbarem Speicher.

Fun Tatsache: ARM verwendet die niedrigen 2 Bits einer Adresse als Shuffle-Steuerelement für nicht ausgerichtete Wortladungen. (Aber es immer Byte Lade-/Speicherbefehle hatte.)


Siehe auch:


Beachten Sie, dass Speicher-Bit-adressierbaren existieren könnte , tut es aber nicht. 8-Bit-Bytes sind jetzt nahezu universell Standard. (Ancient Computer hatten manchmal größere Bytes, siehe den History-Abschnitt von wikipedia's Byte article.)

Verwandte Themen