Der Prozessor

Erstmal für alle, die überhaupt nix vom Computer verstehen:

Nehmen wir mal ne Waschmaschine. Da gibts doch auch nen Programmwahlschalter Wir stellen auf Vorwäsche und das Teil eiert los und führt automatisch das Vollwaschprogramm durch. Das heisst, über viele kleine Schritte (deshalb tickt das Teil wie ein wildgewordener Wecker) wird die Vorwäsche erledigt (also Wasser rein, rumnudeln der Trommel, Wasser raus, spülen), dann die Hauptwäsche (wieder Wasser rein, rumnudeln usw.), dann das Spülen, dann das Schleudern.

Nix anderes macht ein Prozessor. Wir geben ihm ein "Maschinenprogramm" in Form von Zahlen zum Fraß und er führt dieses Programm aus - einen Datensatz von der Pladde einlesen, ein bischen Speicher von hier nach da, Daten von einem Bildschirm einlesen.

Ein gewaltiger Unterschied zur Waschmaschine besteht allerdings darin, dass ein Prozessor das Programm nicht nur vorwärts ausführt, sondern auch wieder zurückspringen kann und das abhängig von Bedingungen. Bedingungen werden von den zuvor ausgeführten Befehlen gesetzt, so kann ein Subtraktionsbefehl eine Bedingung "kleiner Null" oder "gleich Null" setzen.

Das wäre so, als ob unsere Waschmaschine testen könnte, ob die Wäsche sauber ist, wenn nicht, dann macht sie nochmal das Vorprogramm. Oder wenn die Wäsche nach dem Schleudern noch zu nass ist, dann einfach nochmal zurück an den Anfang des Schleuderteils im Programm.

Damit das alles zusammenpasst, hat so ein Prozessor einen Instruktionszeiger, der auf die abgearbeiteten Befehle zeigt. Ist fast so, wie die Nase am Drehschalter der Waschmaschine, die ja auch auf den gerade ausgeführten Programmschritt zeigt.

Die Befehle, die in der Waschmaschine über Drähte realisiert werden (z.B. Draht für die Heizung, Draht für den Trommelmotor usw.) stehen beim S/390-System im Hauptspeicher, der nix anderes ist, als kleine Schalter, die auf "Ein" oder "Aus" stehen können. Damit wir Menschen nun nicht endlose Sätze mit "Ein" und "Aus" bilden müssen, haben wir jeweils acht dieser Schalterchen als Byte zusammengefasst, wobei jeder Schalter ein Vielfaches von zwei ist, also 128, 64, 32, 16, 8, 4, 2, 1. Die Kombination "Ein" "Aus" "Aus" "Ein" "Aus" "Aus" "Ein" "Ein" wäre also 128 + 0 + 0 + 16 + 0 + 0 + 2 + 1 = 147.

Die Prozessorarchitektur der IBM S/390

Wer den Motorola 68000 kennt, findet viele Parallelen in der S/390 Architektur. Die Intel-Gurken passen da weniger dazu. Der Prozessor hat 16 "General Purpose Register". Das heisst, diese Register können zum einen zum Rechnen (jedes Register ist 32 Bit breit, kann also ganze Zahlen von ca. +2 Milliarden bis -2 Milliarden enthalten), zum anderen zur Adressierung von Speicher benutzt werden.

Ausserdem gibt es 16 Gleitkomma-Register (wie beim Taschenrechner mit Mantisse und Exponent, für sowas hat Intel früher die 80x87-Gleitkommaprozessoren gebraucht), 16 Control-Register (da steht zum Beispiel drin, ob unser Prozessor nach jedem Befehl an eine bestimmte Speicheradresse hupfen soll: Single Step Mode) und in der ESA-Architektur noch 16 Access-Register (damit können in Verbindung mit den General Purpose Registern mehrere Adressräume gleichzeitig angesprochen werden).

Nicht vergessen wollen wir das Programmstatuswort. Damit haben wir nicht direkt zu tun, dort stehen aber zum Beispiel die zuletzt gesetzen Bedingungen drin, wovon es wieder vier gibt: "kleiner Null", "größer Null", "gleich Null", "Überlauf". Das darf man aber nicht so wörtlich nehmen, da diese Bedingungen ihre Bedeutung je nach setzendem Befehl ändern.

I/O-Befehle wie die Intels kennt der S/390 eigentlich nicht, es ist nicht die Aufgabe des Prozessors, die Mäuse abzufragen. Dies wird von einem intelligenten I/O-Subsystem erledigt, dass mit eigenen, primitiven "Kanalprogrammen" vom Prozessor mit einem "Start Subchannel" angestossen wird. Der Sinn: der Prozessor soll rechnen, rechnen, rechnen und alles was mit der relativ langsamen Ein-/Ausgabe zu tun hat, wird selbständig vom I/O-Subsystem erledigt und zwar parallel ohne den Prozessor zu bremsen.

Wenn wir schon von Ein-/Ausgabe reden: sämtliche Ein-/Ausgabevorgänge laufen "memory-mapped" im DMA-Modus ab, d.h. wir bauen in unser Programm als Datenfelder ein "Kanalprogramm" ein, welches u.a. Adressen der Datenbereiche enthält, die wir z.B. auf einen Bildschirm ausgeben wollen. Dann bauen wir in das Programm einen Befehl "Start Subchannel" ein, der die Adresse des Kanalprogramms enthält. Wenn der Prozessor nun die "Start Subchannel" Operation ausführt, sagt er dabei dem I/O-Subsystem, dass es das Kanalprogramm an der angegebenen Adresse abarbeiten soll. Das I/O-Subsystem greift dabei selber auf den Hauptspeicher zu, um die Daten auszulesen oder reinzuschreiben.

Der Prozessor wartet nun an dieser Stelle nicht, bis das I/O-Subsystem mit dem Kanalprogramm fertig ist, sondern kann nun zu einem anderen Programm hupfen, um dieses auszuführen. Wenn das I/O-Subsystem unser Kanalprogramm durchgewurschtelt hat, also die Daten auf den Bildschirm geschrieben hat, erzeugt es eine Unterbrechung. Eine Unterbrechung ist dabei was "elektrisches", hat also nix mit einem Programm zu tun.
Wenn an einen Prozessor bestimmte elektrische Signale (Unterbrechungsleitungen) angelegt werden, dann führt er "instinktiv" bestimmte Aktionen durch. Das ist so, als ob uns der Doktor mit dem Hämmerchen aufs Knie haut. Da müssen wir auch nicht nachdenken, ob wir das Bein anheben, das passiert dann einfach.
Der Prozessor kann nun kein Bein anheben, sondern er lädt in so einem Unterbrechungsfall eine neue Adresse aus einem festgelegten Speicherbereich in seinen Instruktionszeiger und eiert ja somit ab dieser neuen Adresse weiter. Gleichzeitig wird automatisch die zu diesem Zeitpunkt im Instruktionszeiger befindliche Adresse (also die, wo der Prozessor gerade war) in eine andere festgelegte Speicherstelle abgelegt. Damit kann ein Prozessor also auf Ereignisse von aussen reagieren, ohne dass wir im Programm irgendwelche Abfragen oder Warteschleifen machen müssten.

Solche Ereignisse sind nicht nur beendete Ein-/Ausgabe-Vorgänge, sondern auch der Zeitgeber des S/390-Systems oder ein Prozessorschaden, den die interne Diagnose festgestellt hat. Geplant ausgelöst werden kann so ein Ereignis ebenfalls, das nennt sich dann "Supervisor Call" und ist eine Maschineninstruktion, mit deren Hilfe wir aus unserem Programm ins Betriebssystem springen. Wer den Intel kennt, kennt auch den INT-Befehl, dasselbe macht auf S/390 der SVC.



Wird fortgesetzt...

Top Home