Adressbus, Datenbus: wie viel Speicher direkt zugänglich

Ich habe eine CPU mit einem 32-Bit-Datenbus und einem 21-Bit-Adressbus. Ich würde gerne wissen, wie viel Speicher ich direkt an diese CPU anschließen kann.

Hängt dies von der Adressbusbreite ab, weil ich nur 21 Bit dieser 32-Bit-Daten adressieren kann, oder wie funktioniert das?

2097152 Bytes. Unter der Annahme, dass keine anderen Bereiche des 21-Bit-Bereichs zugewiesen werden. Es wäre hilfreich, wenn Sie mitteilen könnten, welches Teil Sie verwenden.
Ich kann mich nicht entscheiden, entweder 2097152 oder 8388608 Bytes.
@ Jeroen3 Ich bin anderer Meinung. Siehe meine Antwort.

Antworten (2)

Es hängt davon ab, was Sie unter 21 Adressbits verstehen:

  • Wenn dies bedeutet, dass die Adressregister 21 Bits haben (Größe des CPU- internen Adressbusses), bedeutet dies normalerweise, dass der adressierbare Raum 2 ^ 21 Bytes beträgt, da die Adresse bei der überwiegenden Mehrheit der CPUs eine Byte-Granularität aufweist. In diesem Fall bedeutet dies auch, dass bei einem externen 32-Bit-Datenbus wahrscheinlich nur 19 Zeilen auf dem externen Adressbus vorhanden sind.
  • Wenn 21 Bit die Größe des externen Adressbusses ist, ist die Antwort viel wahrscheinlicher 2^21*4. Andernfalls bedeutet dies, dass die Anpassungen für den ausgerichteten Zugriff durch eine externe Logik vorgenommen werden müssen, was bedeuten würde, dass ziemlich viele Glue-Logic-Chips erforderlich wären, was das Design übermäßig komplex machen würde. Ich habe noch nie Fälle gesehen, in denen diese Glue-Logik nicht in die CPU selbst eingebettet ist.

Da in der Frage ein 32-Bit-Datenbus erwähnt wird, der sich typischerweise auf den externen Datenbus bezieht, erscheint es logisch zu erwarten, dass sich die 21 Adressbits auch auf die Größe des externen Adressbusses beziehen. Daher würde ich mich ohne zu zögern für die zweite Option entscheiden.

Tatsächlich sind 2097152 Wörter eine bessere Erklärung. Da ist nichts über die Wortgröße des Chips bekannt.

Wie Jeroen3 sagt, 2.097.152, also 2 21 .

Obwohl das System ein 32-Bit-System ist, werden die Adressen normalerweise byteweise festgelegt, was bedeutet, dass Sie so viele Bytes zur Verfügung haben, die adressiert werden können. Innerhalb dieser Region kann also auf jedes einzelne Byte zugegriffen werden, also ein Alignment von 1 Byte.

Bevorzugte Antwort (siehe Kommentar von Dave Tweed unten):

Ich kann mir jedoch vorstellen, dass es CPUs gibt, die eine 32-Bit-Adressierung verwenden, was 2 21 × 4 (Bytes) = 8,388608 Bytes bedeutet. Auf diese Weise können Sie nur auf Adressen mit einem Alignment von 4 Byte zugreifen.

Selbst wenn ein 32-Bit-System Byte-adressierbar ist, ist es nicht immer notwendig, die zwei niederwertigen Adressbits an den physikalischen Bus zu bringen. 8 MB sind also eigentlich die bevorzugte Antwort, es sei denn, das OP liefert zusätzliche Informationen.
@DaveTweed danke für die Klarstellung, ich habe die Antwort entsprechend deiner Bemerkung angepasst.