Von-Neumann-Rechner und digitale Schaltungen
Ein Taschenrechner rechnet 5 + 9 in einem Augenblick. Innen gibt es keine Zahlen und kein Kopfrechnen, nur winzige Schalter, die Strom durchlassen oder sperren. Wie wird aus Schaltern ein Rechner, der ein Programm Schritt für Schritt abarbeitet? Und wie kann eine Schaltung zwei Zahlen addieren?
Du lernst zuerst, wie ein Computer nach dem Von-Neumann-Modell aufgebaut ist. Dann baust du aus einfachen logischen Bausteinen eine Schaltung, die Binärzahlen addiert.
Von-Neumann-Modell, Prozessor, Register und Arbeitsspeicher
Fast alle heutigen Computer folgen dem Von-Neumann-Modell (nach John von Neumann, 1940er Jahre). Seine wichtigste Idee: Programm und Daten stehen im selben Speicher, beide als Bitmuster. Das Modell hat vier Teile:
- Das Rechenwerk führt Rechnungen und logische Verknüpfungen aus.
- Das Steuerwerk liest die Befehle und steuert den Ablauf.
- Der Arbeitsspeicher besteht aus nummerierten Zellen. Die Nummer einer Zelle ist ihre Adresse. Er verliert beim Ausschalten seinen Inhalt.
- Die Ein- und Ausgabe verbindet den Rechner mit der Außenwelt, etwa Tastatur und Bildschirm.
Rechenwerk und Steuerwerk bilden zusammen den Prozessor. Im Prozessor liegen Register: wenige, sehr schnelle Speicherplätze. Zwei sind wichtig: Der Befehlszähler enthält die Adresse des nächsten Befehls. Der Akkumulator hält das Zwischenergebnis einer Rechnung. Daten und Befehle laufen über Leitungen, den Bus, zwischen Prozessor und Arbeitsspeicher.
Befehlszyklus
Der Prozessor arbeitet ein Programm im Befehlszyklus ab. Er wiederholt drei Schritte:
- Holen: Das Steuerwerk liest den Befehl aus der Zelle, auf die der Befehlszähler zeigt, und erhöht den Befehlszähler um 1.
- Dekodieren: Es stellt fest, welche Operation der Befehl verlangt und mit welcher Adresse.
- Ausführen: Das Rechenwerk führt die Operation aus. Dann beginnt der Zyklus von vorn.
Ein Sprungbefehl setzt den Befehlszähler auf eine andere Adresse, so entstehen Verzweigungen und Schleifen. Echte Befehle sind Bitmuster. Hier benutzen wir einen Mini-Prozessor mit vier Befehlen, die wir lesbar schreiben: LADE a kopiert die Zelle a in den Akkumulator, ADDIERE a addiert die Zelle a zum Akkumulator, SPEICHERE a schreibt den Akkumulator in die Zelle a, HALT hält an.
Ein Programm im Befehlszyklus
Ein Programm im Befehlszyklus
Der Speicher des Mini-Prozessors enthält:
| Adresse | 0 | 1 | 2 | 3 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|
| Inhalt | LADE 10 | ADDIERE 11 | SPEICHERE 12 | HALT | 5 | 9 | 0 |
Der Befehlszähler beginnt bei 0. Verfolge das Programm.
| Schritt | Befehlszähler beim Holen | Befehl | Akkumulator danach |
|---|---|---|---|
| 1 | 0 | LADE 10 | 5 |
| 2 | 1 | ADDIERE 11 | 14 |
| 3 | 2 | SPEICHERE 12 | 14 |
| 4 | 3 | HALT | 14 |
Schritt 3 schreibt die 14 in Zelle 12. Das Programm hat 5 + 9 gerechnet und das Ergebnis in Zelle 12 abgelegt. Die Zahlen 5 und 9 liegen im selben Speicher wie die Befehle. Das ist die Von-Neumann-Idee.
Binäre Signale und logische Verknüpfungen
Im Rechner steht jedes Bit für eine elektrische Spannung: hoch bedeutet 1, niedrig bedeutet 0. Weil nur zwei Zustände unterschieden werden, stören kleine Schwankungen nicht. Logische Verknüpfungen machen aus Bits ein neues Bit. Eine Wahrheitstafel listet für jede Eingabe das Ergebnis auf. Es gibt drei Grundverknüpfungen:
- UND () ist 1, wenn beide Eingaben 1 sind.
- ODER () ist 1, wenn mindestens eine Eingabe 1 ist.
- NICHT () kehrt die Eingabe um.
| A | B | A UND B | A ODER B | NICHT A |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 |
Bei n Eingaben hat die Tafel Zeilen, denn jedes Bit hat zwei Werte.
Gatter und Schaltnetze
Ein Gatter ist ein Baustein, der eine Verknüpfung ausführt. Es besteht aus Transistoren, das sind winzige elektrisch gesteuerte Schalter. Es gibt UND-, ODER- und NICHT-Gatter. Verbindest du mehrere Gatter so, dass die Signale nur von den Eingängen zu den Ausgängen laufen und nirgends zurück, entsteht ein Schaltnetz. Sein Ausgang hängt nur von den Eingaben ab, es speichert nichts. Die Wahrheitstafel eines Schaltnetzes rechnest du Gatter für Gatter aus.
Ein neues Gatter aus den Grundgattern
Ein neues Gatter aus den Grundgattern
Berechne die Wahrheitstafel des Schaltnetzes .
| A | B | A ODER B | A UND B | NICHT (A UND B) | Ergebnis |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 | 1 |
| 1 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 | 0 |
Das Ergebnis ist 1, wenn genau eine Eingabe 1 ist. Diese Verknüpfung heißt XOR (exklusives ODER). Sie unterscheidet sich vom ODER nur in der letzten Zeile.
Halbaddierer
Wie addiert man zwei Bits? Schreibe alle Fälle auf: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1 und 1 + 1 = 10. Das Ergebnis hat bis zu zwei Stellen: die Summenstelle S und den Übertrag C (englisch carry). Die Tafel zeigt: S ist das XOR der Eingaben, C ist ihr UND. Ein Halbaddierer ist ein Schaltnetz aus einem XOR-Gatter und einem UND-Gatter.
| A | B | C | S |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
Er heißt „halb“, weil er einen Übertrag aus der Stelle davor nicht mitrechnet.
Volladdierer und binäre Addition
Ab der zweiten Stelle einer Binärzahl kann von rechts ein Übertrag ankommen. Dann müssen drei Bits addiert werden: A, B und der Übertrag Ci (carry in) von der Stelle davor. Das leistet der Volladdierer. Er besteht aus zwei Halbaddierern und einem ODER-Gatter. Der erste addiert A und B, der zweite addiert dessen Summe und Ci. Das ODER vereint die beiden Überträge zum Übertrag-Ausgang Co. Die Summe aus drei Bits ist höchstens 3, binär 11, und passt in die zwei Ausgänge Co und S.
Reihst du Volladdierer hintereinander, geht Co jeder Stelle in Ci der nächsten. So addieren n Volladdierer zwei n-stellige Binärzahlen, wie du es schriftlich von rechts nach links tust. Die niedrigste Stelle hat keinen Übertrag von rechts, dort genügt Ci = 0.
Zwei 4-Bit-Zahlen addieren
Zwei 4-Bit-Zahlen addieren
Addiere 0110 und 0111 stellenweise von rechts mit Volladdierern.
| Stelle (von rechts) | A | B | Ci | S | Co |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 0 | 0 | 1 |
| 2 | 1 | 1 | 1 | 1 | 1 |
| 3 | 0 | 0 | 1 | 1 | 0 |
Die Summenbits von Stelle 3 bis Stelle 0 lauten 1, 1, 0, 1. Das Ergebnis ist 1101, also 8 + 4 + 1 = 13. Kontrolle: 0110 ist 6, 0111 ist 7, und 6 + 7 = 13. Der letzte Übertrag ist 0, das Ergebnis passt in 4 Bit.
Grenzen der binären Zahlendarstellung
Ein Register hat eine feste Zahl von Bit. Mit n Bit lassen sich ohne Vorzeichen nur die Zahlen von 0 bis darstellen, bei 8 Bit also 0 bis 255. Ist das Ergebnis einer Addition größer, entsteht an der höchsten Stelle ein Übertrag, für den kein Platz ist. Er geht verloren, das Ergebnis ist falsch. Das heißt Überlauf. Beispiel mit 4 Bit: 9 + 8 = 17, binär 1001 + 1000 = 10001. In 4 Bit bleibt 0001, also 1.
Auch bei Brüchen gibt es Grenzen: Die Zahl 0,1 lässt sich im Zweiersystem nicht mit endlich vielen Stellen schreiben (0,000110011...), so wie ein Drittel im Dezimalsystem nicht endet. Ein Rechner rundet und rechnet deshalb mit kleinen Abweichungen.
ODER heißt entweder-oder
ODER heißt entweder-oder
„Das logische ODER ist nur 1, wenn genau eine Eingabe 1 ist, wie bei Kaffee oder Tee.“
Im Alltag meint „oder“ oft „entweder, oder“. Das logische ODER ist auch bei zwei Einsen 1. Das Entweder-oder ist das XOR.
Ein Halbaddierer genügt für jede Stelle
Ein Halbaddierer genügt für jede Stelle
„Zum Addieren von Binärzahlen reihe ich einfach Halbaddierer hintereinander.“
Nur die niedrigste Stelle hat keinen Übertrag von rechts. Jede andere Stelle muss drei Bits addieren: A, B und den Übertrag der Stelle davor. Dafür braucht sie einen Volladdierer.
Zusammenfassung
Im Von-Neumann-Modell stehen Programm und Daten im selben Arbeitsspeicher. Der Prozessor besteht aus Rechenwerk und Steuerwerk und hat Register wie Befehlszähler und Akkumulator.
Der Befehlszyklus wiederholt: Befehl holen, dekodieren, ausführen. Der Befehlszähler zeigt auf den nächsten Befehl.
Bits sind hohe oder niedrige Spannung. UND, ODER und NICHT verknüpfen Bits, eine Wahrheitstafel mit Zeilen listet alle Fälle.
Gatter führen Verknüpfungen aus. Ein Schaltnetz verbindet Gatter ohne Rückkopplung und hat keinen Speicher.
Der Halbaddierer addiert zwei Bits: S ist XOR, C ist UND. Der Volladdierer rechnet den Übertrag der Stelle davor mit.
Mit n Bit gibt es nur die Zahlen 0 bis . Ein größeres Ergebnis führt zum Überlauf. Brüche wie 0,1 lassen sich binär nur gerundet speichern.
Übungen
Welche Reihenfolge hat der Befehlszyklus des Prozessors?
Ein Mini-Prozessor hat diesen Speicher: Zelle 0: LADE 10, Zelle 1: ADDIERE 11, Zelle 2: ADDIERE 11, Zelle 3: SPEICHERE 12, Zelle 4: HALT. Zelle 10 enthält die Zahl 4, Zelle 11 die Zahl 9. Der Befehlszähler beginnt bei 0. Welche Zahl steht nach HALT in Zelle 12?
Ein 8-Bit-Register enthält die Zahl 250. Es wird 10 addiert. Ein Übertrag aus der höchsten Stelle geht verloren. Welche Zahl steht danach im Register?
Ein Volladdierer bekommt A = 1, B = 1 und Ci = 1. Welche Ausgabe liefert er?
Erkläre, warum man für die zweite Stelle einer Binäraddition einen Volladdierer braucht und mit einem Halbaddierer nicht auskommt.