Benötigte Adressbusbreite

InformMax

Newbie
Registriert
März 2017
Beiträge
3
Hallo,
kurz gesagt: Ich schreibe morgen eine Infoklausur und habe noch eine kleine Frage auf die ich beim lernen selbst nicht komme.

Diese lautet wie folgt...: Welche Breite muss ein Adressbus haben, um 8KByte Speicher direkt zu adressieren?

Wäre cool wenn mir jemand das erklären könnte smile

Vielen Dank schon mal im Vorraus

MfG Max :D
 
Also bräuchte ich eine Breite von 2^8000 o.O?
Entschuldige die Unwissenheit.
 
Nein die Adresse ist eine Zahl. Bei Hundert Häusern brauchst du Hausnummern von 1 bis 100. Bei 8000 Bytes brauchst du Nummern von 0 bis 7999. Diese Zahl ist natürlich binär wie alles im PC. Also brauchst du n Bits um Zahlen bis 2^n aufschreiben zu können. Du suchst hier also die Antwort auf die Frage: 2^n >= 8000.
 
nee, 2^n=8192, also n=13 (bit Adressbusbreite), n=ln(8192)/ln(2)=13
 
Zuletzt bearbeitet:
Wobei die nötige Bereite des Adressbus davon abhängt wie Breit der Datenbus ist, bei 8Bit sind 13 Bit Adressbus nötig, weil ja pro Adresse nur ein Byte adressiert wird, ist der Datenbus aber z.B. 32 Bit breit, sind nur 11 Bits am Adressbus nötig, da pro Adresse 4 Bytes angesprochen werden. Eine einzige korrekte Antwort auf die Frage welche Breite ein Adressbus haben muss um 8k Speicher direkt adressieren zu können, gibt es also nicht.
 
Ist das nicht eher die Frage wie Groß eine Speicherzelle ist die man Anspricht (ohne angabe geht man ja von 8-Bit aus) und nicht die des Datenbusses?
 
ich unterschlage gerne mal etwas, 8bit Datenbusbreite, also 8bit Datenwort Speicherzelle und 13bit Adressbusbreite.

8*2bit^13=8*8192bit*(byte/8bit)=8192byte direkt adressierbarer Speicher.

Nachtrag:
2^(Anzahl Aressleitungen) gibt an, wie viel Speicherzellen angesprochen werden können.
Multipliziert mit der Speicherzellenbreite ergibt den maximal ansprechbaren Speicher.

Breite des Datenbusses muss/sollte wohl gleich der Speicherzellenbreite sein?

Nachtrag:
und weil wir schon dabei sind,
korrekt heißt es 8KiB=8192Byte, um eine Verwechslung mit den SI Präfix k zu vermeiden.
Kibi=Ki ist eine Buchstabenkombination aus Kilo und Binär.
8kB=8000Byte, k=1000 ist der Si Präfix für Kilo.
 
Zuletzt bearbeitet:
Holt schrieb:
ist der Datenbus aber z.B. 32 Bit breit, sind nur 11 Bits am Adressbus nötig, da pro Adresse 4 Bytes angesprochen werden.
Es ging beim TE um _direkt_ _adressierbare_ Bytes. Deine "Lösung" adressiert keine Bytes sondern nur 4-Byte-Gruppen ("words") direkt.

Die Datenbusbreite ist für die Beantwortung der Frage des TE vollkommen irrelevant. Ebenso irrelevant ist die Größe der Bytes in Bit.
 
Auch wenn ein WORD oder wie es bei DDR RAM üblich ist, sogar ein DWORD (64Bit) auf einmal adressiert und übertragen werden, so ist das einzelne Byte darin immer noch direkt adressierbar, die liegt ja dann in einem Cache oder Register und das daneben noch anderes Bytes stehen, ändert nichts daran das diese Byte direkt adressiert wurde, denn direkt bedeutet hier nicht individuell, sondern ohne Umwege.
 
Holt schrieb:
die liegt ja dann in einem Cache oder Register und das daneben noch anderes Bytes stehen, ändert nichts daran das diese Byte direkt adressiert wurde
Ach? Und woher weißt du denn bei deinen z.B. nebeneinanderliegenden 4 Bytes, die du aus 8k nur mit 11 Bit adressiert hast, welches der 4 das direkt adressierte Byte ist? Die 2 dafür fehlenden Bits, um das eine Byte aus der 4 Bytes großen Gruppe auszuwählen, zauberst du wie aus dem Hut? Egal wie: Die 2 Bits sind jedenfalls Teil der direkten Adresse des Bytes, die zu den 11 Bits hinzukommen, mit denen du die 4er-Gruppe ausgewählt hast. Rein zufällig: 11+2 = 13 = log_2(8192) = ln(8192) / ln(2)

An der Stelle, an der das einzelne Byte adressiert wird (=direkte Adressierung) brauchst du den 13-bittigen Adressbus. Daran ändert sich sich auch nichts, weil du in einem Zwischenschritt erstmal eine größere Gruppe Bytes unter Nutzung nur eines Teils der direkten Adresse (11 Bit in deinem Beispiel) irgendwo zwischenlagerst, um dann in einem 2. Schritt das konkrete Byte aus der Gruppe zu fischen. Im dem ersten Zwischenschritt, den du 11-bittig schaffst, sind die Bytes _nicht_ direkt adressiert, was aber die Aufgabenstellung fordert. Du kannst also nicht nur die 11 Adressbits des ersten Schritts zählen und den 2. Schritt, der 2 weitere Adressbits erfordert, einfach unter den Tisch fallen lassen.

Oder anders:
Nenne uns mal deine 11-bittigen, direkten Adressen für folgende Bytes:
a) für das erste
b) für das zweite
c) für das vorletzte
d) für das allerletzte Byte
... der 8 "KByte" aus der Aufgabe. Der Adressraum möge bei 0 beginnen. Keine Spitzfindigkeiten wegen "KByte" bitte. Gehe von 8192 Bytes, also 8 KiByte aus. Rechnet sich einfacher und ist nicht der springende Punkt im Moment.
 
Zuletzt bearbeitet:
was ist eigentlich zu der folgenden Rechnung zu sagen, bzw. entgegenzusetzen?
Bin selber etwas unsicher.

Für eine 32Bit Speicherzelle statt 8Bit:
4Byte *8Bit/Byte* 2x=8192Byte *8Bit/Byte
x= ln(8192/4)/ln(2)=11 Adressleitungen

Laut dieser Formel:
maximaler Speicher = Anz.Datenleitungen * 2Anz.Adressleitungen
 
Zurück
Oben