Zurück zur Modulübersicht
13.4Jgst. 13FortgeschrittenWird aufgebaut

Funktionsweise eines Rechners

Von-Neumann-Architektur, Maschinenbefehle, Speicher und Bussysteme – mit einer Mini-Maschine zum Selbstprogrammieren.

3 Stunden LernzeitRechnerarchitektur · Assembler

Ihr Fortschritt

Modul-Fortschritt0 %

Lernziele

  • Sie beschreiben die Komponenten eines Computersystems und die Von-Neumann-Architektur.
  • Sie erläutern Aufbau und Register einer Registermaschine.
  • Sie beschreiben den Befehlszyklus in seinen Phasen.
  • Sie setzen einfache Algorithmen in Assembler um und testen sie im Simulator.
  • Sie erklären, wie Verzweigungen und Schleifen aus Vergleichen und Sprüngen entstehen.
  • Sie beschreiben die Grenzen endlicher Zahlendarstellungen.

Schritt 1

Motivation

Die Maschine unter der Sprache.

Bis hierher war ein Programm eine Folge von Anweisungen in Java. Dieser Lernbereich geht eine Ebene tiefer: Was tut der Prozessor, wenn er eine solche Anweisung ausführt?

Die Antwort ist überraschend schlicht. Ein Prozessor kann sehr wenig – laden, speichern, rechnen, vergleichen, springen. Alles andere ist daraus zusammengesetzt. Eine if-Abfrage wird zu einem Sprung über den Teil hinweg, der nicht gilt; eine Schleife zu einem Sprung nach hinten.

Schritt 2

Erklärung

Der Aufbau.

Die Von-Neumann-Architektur

1945 beschrieb John von Neumann eine Architektur, in der das Programm im selben Speicher steht wie die Daten. Davor waren Rechner fest verdrahtet: Wer eine andere Aufgabe rechnen wollte, baute die Maschine um.

EinheitAufgabe
Steuerwerkinterpretiert Befehle, koordiniert den Ablauf
Rechenwerk (ALU)führt Rechnungen und Vergleiche aus
Speicherenthält Daten und Programm in adressierbaren Zellen
Ein-/Ausgabeeinheitverbindet den Rechner mit der Außenwelt

Steuerwerk und Rechenwerk zusammen bilden den Prozessor.

Das Bussystem

BusRichtungInhalt
AdressbusProzessor → Speicherwelche Zelle gemeint ist
Datenbusin beide Richtungender Inhalt der Zelle
SteuerbusProzessor → Komponentenlesen oder schreiben?

Schritt 2

Erklärung

Die Registermaschine.

Register

Eine Registermaschine hat wenige, sehr schnelle Speicherplätze direkt im Prozessor:

RegisterAufgabe
AkkumulatorZiel und Quelle fast jeder Rechenoperation
ProgrammzählerAdresse des nächsten Befehls
Befehlsregisterder gerade geholte Befehl
Statusregister (Flags)Ergebnis der letzten Rechnung: Z, N, V, C

Befehle

Ein Maschinenbefehl besteht aus Operationscode (was zu tun ist) und Adressteil (womit). Beides steht in je einer Speicherzelle – deshalb belegt ein Befehl mit Operand zwei Zellen, und der Programmzähler wächst je Befehl um zwei.

LOAD  100     Wert aus Zelle 100 in den Akkumulator
LOADI 100     die Zahl 100 selbst in den Akkumulator
STORE 100     Akkumulator in Zelle 100 speichern
ADD   100     Zelle 100 zum Akkumulator addieren
SUB   100     Zelle 100 vom Akkumulator abziehen
JMP   marke   unbedingter Sprung
JMPZ  marke   Sprung, wenn das Zero-Flag gesetzt ist
HOLD          Programmende

Der Befehlszyklus

Für jeden Befehl läuft dieselbe Folge ab:

  1. FETCH – Der Programmzähler steht auf dem Adressbus, der Befehl kommt über den Datenbus ins Befehlsregister. Der Programmzähler wird erhöht.
  2. FETCH (Adressteil) – dasselbe noch einmal für den Operanden.
  3. DECODE – Das Steuerwerk erkennt, welche Operation gemeint ist.
  4. EXECUTE – Das Rechenwerk führt sie aus; das Ergebnis landet im Akkumulator, und die Flags werden gesetzt.

Dann beginnt der Zyklus von vorn – bis ein HOLD erreicht wird oder das Programm nicht mehr anhält.

Schritt 2

Erklärung

Kontrollstrukturen in Assembler.

Flags, Vergleiche und Sprünge

Der Prozessor kennt kein „größer als". Er rechnet und schaut auf die Flags:

Flaggesetzt, wenn …
Z (Zero)das Ergebnis 0 ist
N (Negative)das Ergebnis negativ ist
V (Overflow)der Wertebereich überschritten wurde
C (Carry)ein Übertrag entstanden ist

Ein Vergleich a > b wird zur Subtraktion a − b und der anschließenden Frage nach dem Vorzeichen. Daraus folgt eine Reihenfolge, die man einhalten muss: erst rechnen, dann springen – und dazwischen nichts, was die Flags verändert.

Verzweigung und Schleife

; if (a > b) { ... }
        LOAD  a
        SUB   b
        JMPN  sonst      ; a - b negativ, also a < b
        ...              ; Then-Zweig
        JMP   ende
sonst:  ...              ; Else-Zweig
ende:   ...

; while (i > 0) { ... }
wiederh: LOAD  i
         JMPZ  ende
         ...             ; Rumpf – hier muss sich i ändern!
         JMP   wiederh
ende:    HOLD

Eine Schleife ist ein Sprung nach hinten plus ein Zähler, der endet. Ändert sich der Zähler im Rumpf nicht, läuft das Programm endlos – der Simulator bricht nach einer Schrittgrenze ab und meldet es.

Schritt 2

Erklärung

Wenn die Bits nicht reichen.

Zahlendarstellungen

SystemBasisZiffern
binär20, 1
dezimal100–9
hexadezimal160–9, A–F

Hexadezimal ist im Rechnerkontext üblich, weil eine Hexadezimalziffer genau vier Binärstellen entspricht – die Umrechnung ist dadurch mechanisch.

Überlauf

Ein Speicherwort hat feste Breite. Bei 16 Bit im Zweierkomplement reicht der Bereich von −32 768 bis 32 767. Addiert man zu 32 767 die Zahl 1, entsteht nicht 32 768, sondern −32 768: Das Ergebnis kippt ins Negative, und das Overflow-Flag wird gesetzt.

Schritt 8

Zusammenfassung

Das Wichtigste auf einen Blick.

  • Die Von-Neumann-Architektur legt Programm und Daten in denselben Speicher; das macht Rechner universell einsetzbar – und verwundbar.
  • Adressbus, Datenbus, Steuerbus verbinden Prozessor und Speicher; nur der Datenbus arbeitet in beide Richtungen.
  • Der Akkumulator ist Ziel jeder Operation – außer bei STORE, wo er die Quelle ist.
  • Ein Befehl mit Operand belegt zwei Zellen; der Programmzähler wächst entsprechend um zwei.
  • Der Befehlszyklus ist für jeden Befehl derselbe: holen, decodieren, ausführen.
  • Der Prozessor kennt keine Vergleiche – er rechnet und liest die Flags. Deshalb gilt: erst rechnen, dann springen.
  • Eine Schleife ist ein Sprung nach hinten; ohne veränderten Zähler endet sie nie.
  • Zahlendarstellungen sind endlich; ein Überlauf kippt das Vorzeichen und wird nur bemerkt, wenn man das V-Flag abfragt.