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?
Es hängt davon ab, was Sie unter 21 Adressbits verstehen:
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.
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.
Jeroen3
Alexander von Wernherr
schwach