Wenn eine CPU einen 16-Bit-Adressbus und 8-Bit-Wörter hat, wie viel Speicher kann sie adressieren?

23

Ich studiere für eine Semesterabschlussprüfung und bin mit der folgenden Frage verwechselt. Wenn eine CPU einen 16-Bit-Adressbus und 8-Bit-Wörter hat, wie viel Speicher in KB kann sie adressieren? Mein Verständnis würde mir sagen, dass es 64KB adressieren kann, aber dazu habe ich nur 2 ^ 16 = 65.536 verwendet. Bei dieser Berechnung wurden 8-Bit-Wörter nie berücksichtigt, daher bin ich mir nicht sicher, ob sie korrekt sind. Was bedeuten auch 8-Bit-Wörter?

Prost

eZ_Harry
quelle
16
Sie haben es indirekt verwendet: Die Gesamtmenge des adressierbaren Speichers beträgt 2 ^ 16 * 8 Bits. Da ein Byte = 8 Bits ist, sind das 2 ^ 16 Bytes, dh 65536 Bytes oder 64 KiB. Beachten Sie, dass K das SI-Präfix für 1000 ist. Wenn Sie 1024 bedeuten, verwenden Sie Ki.
jcaron
2
Beachten Sie den Unterschied zwischen dem SI-Präfix Kilobyte (1.000 Byte) und dem binären Präfix Kibibyte (1.024 Byte). 2 16 = 65 536 = 64 kibi ~ 65,5 kg. Die gesuchte Antwort ist wahrscheinlich eine, bei der Kilo Kibi bedeutet, aber es gibt Zeiten, in denen der Unterschied wirklich wichtig ist. Wenn Sie sich ganz sicher sein möchten, wählen Sie den sicheren Weg und geben Sie die Anzahl der Bytes an . Bieten Sie Ihrem Lehrer die Übersetzung in handlichere Einheiten wie Kilobyte oder Kibibyte an. Vergleiche Wikipedia: Binärpräfix . Speicherchips spezifizieren typischerweise zB 65.536 × 8 Bits.
ein Lebenslauf am
3
Ich nehme an, Sie gehen nicht von einem Bankswapping aus. Die meisten 16-Bit-CPUs verwenden eine Form von Bank-Swap, die eine Beantwortung dieser Frage erschwert.
Joshua
1
@ MichaelKjörling Die Frage besagt KB was immer 1024 Bytes bedeutet hat.
Kasperd

Antworten:

38

In den meisten Architekturen ist ein Wort das größte Datenelement, das in einem einzigen Vorgang in den und aus dem Arbeitsspeicher übertragen werden kann.

Die größtmögliche Adressgröße, die zum Festlegen eines Speicherorts im Speicher verwendet wird, wird normalerweise als Hardware-Wort bezeichnet.

So wird Ihre CPU in der Lage sein , 64 KB Adresse (2 ^ 16) , aber nur in einem einzigen Vorgang 8 Bits übertragen können.

Overmind
quelle
3
Ich bin sicher, diese Antwort ist die, nach der der Lehrer sucht, aber ist sie tatsächlich richtig? Könnten Sie nicht so etwas wie PAE verwenden, um einer Hierarchie mit 3 Ebenen (oder sogar mehr) zu ermöglichen, dass CPUs auf mehr als 64 KB zugreifen können? Ich bin kein Hardware-Experte, aber hat es der Commodore 128 nicht einmal geschafft, so etwas auf einem 8-Bit-Wort-16-Bit-Bus zu tun, indem er das Umschalten von RAM-Bänken erlaubte?
Davidgo
5
Nicht ganz sicher, ich verstehe Ihren Satz "wird nur in einer einzigen Operation übertragen können, ist 256B (2 ^ 8)"? Es kann immer nur 1 Wort = 1 Byte = 8 Bits in einer einzigen Operation übertragen.
Jcaron
8
@davidgo PAE erfordert weiterhin eine angemessene Größe des Adressbusses. Intel-CPUs, die PAE unterstützen, haben einen Adressbus von 36 Bit.
Dmitry Grigoryev
6
PAE ist mehr oder weniger ein Marken- / Funktionsname, der für moderne x86-CPUs spezifisch ist. Ja, Schemata zur indirekten Adressierung größerer Speichermengen sind seit langem implementiert (z. B. XMS). Letztendlich wird das Speichersubsystem wie ein Peripheriegerät behandelt, das ständig neu konfiguriert werden kann, um anderen Speicher in einem kleineren Adressraum verfügbar zu machen. Siehe auch das segmentierte Speichermodell von Old School x86 ...
Rackandboneman
6
@Overmind Sie sollten Ihre Antwort ein wenig klären. Niemand benutzt wirklich ein einzelnes B als Einheit und der Grund ist genau das, was hier passiert ist - Sie verwirren Bits und Bytes. Das OP gibt "8-Bit-Wörter * - jedes Wort hat also 8 Bits (1 Byte) und kann nur das in einer Operation übertragen. 256 ist einfach die Anzahl der möglichen Werte, die jedes Wort hat, nicht wie viel übertragen wird.
adelphus
21

Ein Maschinenwort oder allgemein nur ein Wort ist die größte Dateneinheit, die die CPU als Ganzes unter Verwendung gemeinsamer Anweisungen bearbeiten kann. Dies hat nichts mit der Speicheradressierung zu tun.

Was zählt, ist die Einheit der Adressauflösung , die selbst bei 16/32/64-Bit-Architekturen üblicherweise ein 8-Bit-Byte ist. Es muss nicht gleich der Größe des Maschinenworts sein, aber es ist wahrscheinlich in Ihrem Fall.

Eine 8-Bit-adressierbare Einheit in Kombination mit einem 16-Bit-Adressbus beläuft sich auf 64 KB RAM, den die CPU adressieren kann.

Dmitry Grigoryev
quelle
3
Aber ich habe Maschinen verwendet, bei denen die Einheit der Adressauflösung 16 Bit betrug. (Das Konzept ist also sinnvoll.)
Martin Bonner
4
@MartinBonner Trotzdem hängt es nicht direkt mit der CPU-Wortgröße zusammen.
glglgl
1
@glglgl - Es ist sehr verwandt. Ich glaube nicht , es gibt keine Architekturen , die keine Adresse Einheit haben entweder 8 Bit oder ihre Wortgröße.
Jules
1
Ich stimme der Aussage nicht zu, dass ein Wort die größte Einheit ist , die die CPU insgesamt manipulieren kann . Der Intel i7 verfügt über einen 64-Bit-Datenbus und kann weiterhin 256-Bit-SIMD-Anweisungen verwenden. Wenn Wikipedia korrekt ist, bezieht sich das Wort auf die Datenbusbreite und nicht auf CPU-interne Inhalte.
Thomas Weller
1
@ThomasWeller: 8088 hat 8-Bit-Datenbus, aber immer noch 16-Bit-Anweisungen. Tatsächlich handelt es sich um einen 8086 mit einem kleineren Datenbus. Hinweis: Die Breite des Datenbusses und die tatsächliche Übertragung unterscheiden sich ebenfalls (denken Sie an falsch ausgerichtete Daten).
Giacomo Catenazzi
1

Was bedeuten auch 8-Bit-Wörter?

Im Zusammenhang steht die Wortgröße mit der Adressgröße zur Beschreibung des Speicherbusses. Es gibt 16 Bits, die in den Speicher fließen, so dass 64-ki-Positionen ausgewählt werden können. Dann enthält jeder Ort 8 Bits.

Die Wortgröße hier kann mit der CPU-Recheneinheitsgröße übereinstimmen oder nicht, und dies kann mit der logischen Granularität bei der Adressierung übereinstimmen oder nicht.

Beispielsweise kann eine CPU einen 16-Bit-Bus (für diesen Zweck) ankündigen. Es verwendet 16-Bit-Adressen in seinen Anweisungen und hat wie in Ihrem Beispiel 64ki. Es verfügt jedoch über einen 15- Bit-Adressbus und einen 16-Bit-Datenbus. Es braucht nur 32ki Adressen und bekommt immer 2 Bytes mit jedem Ort. (Wenn ein Befehl 1 Byte benötigt, sendet er die Adresse mit dem geringsten fehlenden Bit, ruft in diesem Schritt beide Bytes ab und prüft dann das kleinste Bit der gewünschten Adresse, um zu entscheiden, welche Hälfte verwendet werden soll.)

Beachten Sie, dass Bank Switching, PAE usw., die von anderen erwähnt wurden, hier nicht relevant sind. Eine Speicherverwaltungseinheit verwendet möglicherweise 16-Bit-Adressen und verfügt über 20-Bit-Hardwareadressen. Daher muss die CPU die Daten umschalten und zuordnen, um den tatsächlichen 20-Bit-Adressbereich der adressierbaren RAM-Chips zu nutzen.

Geben Sie in Ihren Antworten unbedingt Einheiten an. "64ki". Von was? 8-Bit - Worte, es (noch) 64ki Herstellung Bytes von adressierbaren RAM. Dieser Schritt beseitigt Verwirrung und macht Probleme wie diese trivial.

JDługosz
quelle
0

Sie müssen die Wortgröße auch in Berechnungen verwenden. Die Antwort ist 64 KB.

Sie können 2 ^ 16 Wörter adressieren und jedes Wort ist 8 Bit (= 1 Byte). Daher sind es 64 KB.

Wenn die Wortgröße 16 Bit war. Die Antwort wäre 128 KB.

Nuri Tasdemir
quelle
1
Ihre Berechnung gilt nicht für herkömmliche 32-Bit-CPUs, die noch 2 ^ 32 Byte Speicher (4 GB) adressieren können, nicht (2 ^ 32) * 4 (16 GB).
Dmitry Grigoryev
Moderne CPUs adressieren größere „Zeilen“ und haben weniger passende Adressleitungen. Die Frage spricht von Adressbus der physischen Seite der Dinge. Die Multiplikation mit der Wortgröße dieses Busses (nicht der CPU-Registergröße) ist also korrekt.
JDługosz
0

Es gibt zwei Seiten, was Ihr Lehrer wahrscheinlich möchte, dass Sie ihm sagen, und was die Realität ist.

Zuerst, was Ihr Lehrer wahrscheinlich möchte, dass Sie es ihm sagen.

"16 Bits können 2 ^ 16 Speicherplätze adressieren, jeder Platz hat 8 Bits. Wir können also einen 524288-Bit-Speicher (65536 Oktett) adressieren."

Dies spiegelt jedoch eine ziemlich vereinfachte Weltanschauung wider. Die Realität ist komplizierter und um eine endgültige Antwort zu geben, sind mehr Informationen erforderlich. Zu den Möglichkeiten, wie echte Systeme komplizierter sein können, gehören:

  • Viele Prozessoren verfügen nicht über eine dedizierte E / A-Zuordnung, daher müssen möglicherweise Teile des Speicheradressraums für andere Zwecke als den Speicher verwendet werden.
  • Die "Wortgröße" des Prozessors ist nicht unbedingt gleich der Breite des Speicherdatenbusses oder der kleinsten adressierbaren Speichereinheit.
  • Einige Busse ermöglichen die Bewegung von Dateneinheiten unterschiedlicher Größe. Dies erfordert eine weitere Adressierung, die von Bits des Hauptadressbusses behandelt werden kann oder nicht.
  • Einige Busse multiplexen unterschiedliche Signale auf denselben Leitungen. Zum Beispiel verwendet der SDRAM die gleichen Adressleitungen zweimal, um eine "Zeilenadresse" und eine "Spaltenadresse" zu senden.
  • Viele Systeme verwendeten Bankwechselansätze, um Programmen den Zugriff auf mehr Speicher zu ermöglichen, als der Prozessor nativ adressieren könnte.
Plugwash
quelle