Frage zu Speicherblöcke und Systembus
-
Hallo zusammen
Ich habe eine kleine Unklahrheit bezüglich der Anbindung von Speicherzellen an den Systembus und habe dazu folgende Aufgabenstellung:A CPU chip has 32 pins for connecting to a data bus and 32 pins for connecting to an address bus. That CPU has to work together with memory chips, each chip containing 16 K cells of 8 bits each. Draw the connection diagram.
Also auf Deutsch, ein 32-Bit Datenbus soll Speicherblöcke ansprechen, welche 16Kbyte Speicher enthalten und deren Blockgrösse 1 Byte ist.
Also mal überlegen...

Da nun ein 32-Bit Datenbus 4 Byte benötigt, schalte ich 4 Speicherblöcke parallel an die entsprechenden Datenbusleitungen. Ein kompletter Datenbus enspricht dann also 4*16Kb = 64 Kb.
Damit ich mit einem 32-Bit Adressbus die maximale Anzahl Speicherstellen ansprechen kann benötige ich 2^32 Bit Speicherbits! 64Kb also 2^16 habe pro Block, also benötige ich 232/216 = 2^16 solche 4er Speicherblöcke!
Da ich nun 65536 Speicherblöcke mit je 65536 Bits habe, muss ich denn Adressbus in 2*2^16 Adressbusleitungen aufteilen, so dass ich je 16 Leitungen für die Adressierung des korrekten Bits innerhalb des aktiven 4er Block habe sowie 16 Leitungen, um den korrekten 4er Block zu selektieren.
Dies würde doch nun aber bedeuten, dass der Adressdecoder 65536 ausgehende Leitungen haben müsste! Ist das korrekt?
D00-D07-------+------------+-------... D08-D15-----+-|----------+-|-------... D16-D23---+-|-|--------+-|-|-------... D24-D31-+-|-|-|------+-|-|-|-------... | | | | | | | | --|-|-|-|-- --|-|-|-|-- | | | |[8]| | | | |[8]| | | |[8] | | | |[8] | | |[8] | | |[8] | |[8] 65K| |[8] 65K| -+-+-+-+-+- -+-+-+-+-+- | | | |[C] | | | |[C] | | | |[S] | | | |[S] A01----+-|-|-|-|----+-|-|-|-| A02------+ |-|-|------+-|-|-| .----------+-|-|--------+-|-| A15----------+-|----------+-| | | ------- | | A16--+ DEC +---+ | A17--+ +----------------+ .----+ +----------------------... A31--+ +----------------------... | +......................... | +......................... -------Mfg Ishlidur
-
Was adressiert der Adressbus? Bytes oder 32 Bit Worte? Wenn der Bytes adressiert musst du sicherstellen dass die untersten 3 Leitungen immer 0 sind. Wenn die CPU das nicht mitmacht wird's wirklich doof.
Üblicherweise adressieren CPUs mit einem 32 Bit breiten Speicherbus aber auch 32 Bit Worte, d.h. die Leitungen A0-A2 fallen dann weg (=sind nichtmal ausgeführt).Weiters fehlt in der Angabe die Information darüber ob du Speicher für den gesamten Adressraum zur Verfügung stellen musst. Das wäre nicht so ganz realistisch wie du selbst schon herausgefunden hast, da du dafür 262144 Chips brauchen würdest - was ja doch etwas viel ist

(Und das nur wenn man davon ausgeht dass der Adressbus Bytes adressiert, wenn der Bus mit 32 aktiven Leitungen 32 Bit Worte adressiert dann wären es 4*262144 Chips)Wenn du keine weiteren Angaben als diese 3 Sätze hast wirst du wohl nachfragen oder raten müssen.
-
Hallo hustbear
Du scheinst wirklich etwas von der Sache zu verstehen!
Wieso müssen die untersten 3 Leitungen immer 0 sein, falls Bytes adressiert werden?
-
Ishildur schrieb:
Hallo hustbear
Du scheinst wirklich etwas von der Sache zu verstehen!
Eigentlich überhaupt nicht, ist bloss logisch

Wieso müssen die untersten 3 Leitungen immer 0 sein, falls Bytes adressiert werden?
Weil... argh! Blöder Fehler. Die untersten 2, sorry

Weil wenn der jetzt z.B. die Adresse 1 auf den Bus legen würde, dann würde er folgendes erwarten:
D0...D7 = Byte 1 (= das 2. Byte)
D8...D15 = Byte 2
D16...D23 = Byte 3
D24...D31 = Byte 4
Jetzt sind die Speicherchips aber so verdrahtet dass D0...D7 von einem Chip bedient werden der sich nur für Byte 0, Byte 4, Byte 8 etc. zuständig fühlt.
Und um zu garantieren dass D0...D7 immer zu einer durch 4 teilbaren Adresse gehört (für die der angeschlossene Chip zuständig ist) müssen die untersten 2 Bits eben 0 sein.