**This is an old revision of the document!**
Bus (Binary Unit System)
Systembus – Prinzip
- Zusammenschluss von Datenbus, Adressbus und Steuerbus zur Kommunikation der CPU mit Speicher und Peripherie.
Vergleich: Datenbus, Adressbus und Steuerbus
Datenbus (Data Bus)
- Funktion: Bidirektionale Datenübertragung zwischen CPU, Speicher und Peripherie.
- Breite: Abhängig von der Datenwortbreite der CPU (8, 16, 32 oder 64 Bit).
- Bidirektional (CPU ↔ Speicher/Peripheriegeräte).
Adressbus (Address Bus)
- Funktion: Überträgt Speicheradressen unidirektional.
- Breite: Bestimmt, wie viel Speicher direkt adressierbar ist. Abhängig von der CPU-Architektur (z. B. 16, 32 oder 64 Bit)
- Steuerung: Vom Master (CPU) gesteuert.
- Unidirektional (CPU → Speicher/Peripheriegeräte).
Steuerbus (Control Bus)
- Funktion: Steuerung des Busverkehrs, Lesen/Schreiben von RAM, Ein-/Ausgabe, Interrupts.
- Beinhaltet auch Leitungen für Taktung und Zugriffskontrolle.
- Bidirektional (CPU ↔ Speicher/Peripheriegeräte).
Darstellung von Zeilen und Spalten bei einem 8-Bit-Adressbus
Ein 8-Bit-Adressbus kann insgesamt $2^8 = 256$ Speicherzellen adressieren.
Intern wird die 8-Bit-Adresse meist in Zeilen (Row) und Spalten (Column) aufgeteilt.
Typisch ist eine 4-Bit-Zeilenadresse und eine 4-Bit-Spaltenadresse:
$$ A_7,A_6,A_5,A_4,A_3,A_2,A_1,A_0 $$
Aufteilung:
$$ \underbrace{A_7,A_6,A_5,A_4}{\text{Row (4 Bit)}}; \underbrace{A_3,A_2,A_1,A_0}{\text{Column (4 Bit)}} $$
Damit ergibt sich:
- Anzahl der Zeilen:
$$ 2^4 = 16 $$
- Anzahl der Spalten:
$$ 2^4 = 16 $$
- Gesamt:
$$ 16 \times 16 = 256 $$
Beispieladresse
Adresse (binär):
$$ 1011,0010 $$
Aufteilung:
- Row:
$1011 = 11_{\text{dezimal}}$
- Column: $$ 0010 = 2_{\text{dezimal}} $$
Ergebnis: Zugriff auf Speicherzelle Zeile 11, Spalte 2.
Was ist //wirklich// im Chip?
Intern gibt es natürlich Verbindungen (Leiterbahnen).
Aber auch hier gilt: Es sind nicht 16×16 Drähte für jede einzelne Zelle, sondern organisierte Leitungen, die zusammen mit Decodern arbeiten.
Eine Speicherzelle (insbesondere DRAM) besteht typischerweise aus:
- einem Transistor
- einem kleinen Kondensator
Diese Zellen liegen in einer Matrix, wie ein Koordinatensystem:
Zeilen → Word Lines (WL) Spalten → Bit Lines (BL)Also:
- 16 Word Lines (Zeilenleitungen)
- 16 Bit Lines (Spaltenleitungen)
Damit kann man eine 16×16-Matrix = 256 Zellen adressieren.
2. Warum braucht man keine 256 Drähte?
Weil jede Zeile eine gemeinsame Word Line teilt und jede Spalte eine gemeinsame Bit Line.
Das Prinzip:
- Jede der 16 Zeilenleitungen verbindet alle Zellen in dieser Zeile.
- Jede der 16 Spaltenleitungen verbindet alle Zellen in dieser Spalte.
Die Kombination aus einer aktiven Word Line + einer bestimmten Bit Line führt direkt zu genau einer Zelle.
Also:
$$ 16\ \text{Word Lines} + 16\ \text{Bit Lines} = 32\ \text{interne Leitungen} $$
Nicht 256.
3. Wie kommt das Adresssignal zu einer bestimmten Zeile/Spalte?
Durch Decoder:
- Row Decoder: Nimmt 4 Bits und aktiviert genau 1 von 16 Word Lines.
- Column Decoder: Nimmt 4 Bits und wählt genau 1 Bit Line.
Also:
- Von außen: 8 Bits Adresse
- Im Chip: Aufgeteilt in 4 Bit Row + 4 Bit Column
- Decoder wählen 1 Word Line + 1 Bit Line
- Dadurch Zugriff auf eine bestimmte Zelle
4. Beispielhafte Darstellung
Externe Anschlüsse:
A7 A6 A5 A4 A3 A2 A1 A0 (8 Adressdrähte)
Interne Struktur:
Row-Decoder (4 Bit)
┌────────────────────────┐
4 Bit → │ aktiviert genau 1 WL │ → 16 Word Lines
└────────────────────────┘
Column-Decoder (4 Bit)
┌────────────────────────┐
4 Bit → │ wählt 1 Bit Line │ → 16 Bit Lines
└────────────────────────┘
16 x 16 Zellen
+---------------------------+
WL0 → | o o o o ... |
WL1 → | o o o o ... |
| ... |
WL15 → | o o o o ... |
+---------------------------+
↑
BL (über Decoder ausgewählt)
Ja, die Speicherzellen sind intern verdrahtet. Aber:
- Es sind keine 256 direkten Drähte
- Sondern 32 interne Leitungen (16 Word Lines + 16 Bit Lines)
- Und Decoder entscheiden, welche davon aktiv ist
Das ist hocheffizient und spart Platz und Energie.
Ah, jetzt kommen wir zu einem klassischen Architekturthema: Adressraum bei 32-Bit-Systemen. Lass uns das Schritt für Schritt erklären.
1. Adressbusbreite vs. adressierbarer Speicher
Die Adressbusbreite bestimmt, wie viele Speicherzellen ein Prozessor maximal adressieren kann:
$$ \text{adressierbarer Speicher} = 2^{\text{Adressbusbreite}} $$
- Bei einem 32-Bit-Prozessor sind 32 Adressleitungen verfügbar.
- Also können theoretisch adressiert werden:
$$ 2^{32} = 4.294.967.296 \text{ Adressen} $$
- Meist gilt 1 Adresse = 1 Byte → 4.294.967.296 Byte = 4 GB.
2. Warum nur 4 GB?
- 32 Bit können binär maximal 2³² unterschiedliche Zahlen darstellen (0 bis 4.294.967.295).
- Jede Zahl entspricht einer Speicheradresse.
- Damit kann der Prozessor nicht mehr als 2³² Bytes = 4 GB direkt adressieren, egal wie viel RAM physisch vorhanden ist.
3. Einschränkungen in der Praxis
- Tatsächlich stand in alten Systemen manchmal sogar weniger als 4 GB zur Verfügung, z. B. wegen Memory-Mapped I/O (Grafikkarten, Peripherie blockieren Adressraum).
- Erst bei 64-Bit-Systemen mit 64 Adressleitungen kann der theoretische Adressraum auf 16 Exabyte wachsen (praktisch nutzbar deutlich kleiner).
4. Merksatz
32 Bit → maximal 2³² Adressen → 4 GB RAM. Mehr RAM geht nur, wenn der Prozessor mehr Adressleitungen hat (z. B. 36-Bit-PAE oder 64-Bit-Prozessor).