 |
Einführung Datenverarbeitungssysteme
von Prof. Jürgen Plate |
2. Aufbau und Arbeitsweise einer Datenverarbeitungsanlage
2.1 Hardware & Software
Eine DVS besteht aus einzelnen untereinander verbundenen
Bauteilen, Schaltungen und Geräten, die fest verdrahtet
sind
im wesentlichen digitale Schaltungen
Hardware
DV-Anlage.
Die Hardware bildet noch kein programmierbares DVS (abgesehen
von festverdrahteten Spezialrechnern für bestimmte Aufgaben,
z.B. Taschenrechner). Die Hardware (HW) eines Universalrechners ist
problemunabhängig.
Zum Arbeiten, d.h. zum Verarbeiten von Daten, sind noch
Programme erforderlich.
Programme sind die Bearbeitungsvorschriften für
die Daten. Ein Programm ist die Beschreibung eines Arbeitsablaufs
mit folgenden Eigenschaften:
- Eindeutigkeit,
- Ausführbarkeit,
- endliche Länge,
- jeder Schritt legt fest, was womit zu tun ist.
Die Gesamtheit der Programme nennt man Software (SW). Die
Software ist veränderbar. Das jeweilige Programm bestimmt,
welche Aufgabe das DVS bearbeiten kann. Bei der Software
unterscheidet man:
- Systemsoftware:
Sie entlastet den Benutzer von Verwaltungsaufgaben (z.B. das
Anordnen der Daten auf einem Speichermedium) und ermöglicht
eine (mehr oder weniger) komfortable Handhabung der DVS und der
Anwenderprogramme.
- Anwendersoftware:
Die Gesamtheit der Anwenderprogramme bilden die
Anwendersoftware, z.B. Textverarbeitung, Datenbanken,
Buchhaltung, Kalkulation.
Die Grenze zwischen Hardware und Software kann bei verschiedenen
DVS verschieden sein (Funktionen entweder als SW oder HW
realisiert, z.B. programmierte Gleitpunktarithmetik oder
Arithmetikprozessor).
Es gibt Teile der Systemsoftware, die zwar als Programm
realisiert sind, jedoch in einem Festwertspeicher abgelegt werden.
Der Speicher kann nur gelesen werden, ist wie die HW nicht ohne
weiteres veränderbar und für den Benutzer nicht von der
HW unterscheidbar, z.B. Mikroprogramme, Betriebssystemteile,
Systemsoftware, SW von Einplatinen-Computern (Steuerung/ Regelung)
Software on Silicon
Firmware.
2.2 "Klassische" Rechnerarchitektur
Die meisten Computer, die heute verwendet werden, sind nach dem
Konzept organisiert, das John v. Neumann (zusammen mit Burks
und Goldstine) in den Jahren 1944-1947 entwickelt hat:
problemunabhängige Struktur
Universalrechner mit interner Programmspeicherung
v. Neumann-Architektur
(
"klassischer" Rechner)
Der v.Neumann-Rechner besteht aus 4 Funktionsgruppen:
- Speicher, der sowohl Programmbefehle als auch Daten
aufnimmt (Hauptspeicher, Arbeitsspeicher, Main Memory). Die
Daten/Befehle liegen binär verschlüsselt, also als
0/1-Folgen vor. Prinzipiell besteht kein Unterschied zwischen Daten
und Befehlen. Unterteilung in Speicherplätze (Speicherzellen,
Speicherworte), die über Adressen angesprochen werden.
- Steuerwerk, Leitwerk (Befehlsprozessor), das den Programmablauf
steuert. Die Befehle werden interpretiert und deren Ausführung
veranlasst, gesteuert und überwacht.
- Rechenwerk (Datenprozessor), das die zu bearbeitenden
Daten verknüpft und verändert. Leitwerk und Rechenwerk
bilden die zentrale Verarbeitungseinheit (CPU, Prozessor).
- Ein- und Ausgabewerk (E/A-Prozessoren), welche die Schnittstelle
zur Außenwelt (Peripherie) bilden. Zusammen mit den
E/A-Geräten besorgen sie die Kommunikation mit der realen Umwelt.
Der Informationsaustausch (Steuersignale, Daten/Befehle,
Adressen) zwischen diesen Funktionsgruppen erfolgt über
interne Datenwege. Diese können realisiert werden als direkte
Verbindung der einzelnen Funktionsgruppen oder als gemeinsame
Datenschiene
Busstruktur. Bei Mikros und Minis (z. B.
Workstation, PC) wird im allgemeinen die Busstruktur verwendet.
Die Funktionsgruppen Speicher, Leitwerk, Rechenwerk, E/A-Werk
bilden zusammen mit den Verbindungswegen die Zentraleinheit
(ZE, CU, CPU) eines Computers. Die ZE wird häufig schon als
"Computer" bezeichnet. Zu einer vollständigen DVS
gehören jedoch noch die Peripheriegeräte. Dies
sind:
- Dateneingabe-Geräte
Lochkartenleser, Lochstreifenleser, Belegleser, Messfühler
(Sensoren), Messgeräte, A/D-Wandler, Digitalisierer
- Datenausgabe-Geräte
Lochkarten-Stanzer, Lochstreifen-Stanzer, Drucker, Plotter,
D/A-Wandler, Stellglieder
- Kommunikations- (Dialog-) Geräte
Tastenfeld, Datensichtgerät (Terminal), Modem, Maus,
Lichtgriffel, Sprach-E/A
- externe Speicher
Magnet-Trommel, Magnet-Band, Magnet-Platte, optische Platte
Operationsprinzip
Die CPU kann nur elementare, (fest verdrahtete) Befehle
verarbeiten (
Maschinenbefehle). Jedes Programm besteht also
aus einer Folge elementarer Befehle. Da im Speicher nicht zwischen
Daten und Befehlen unterschieden wird, muss das Leitwerk
entscheiden, ob der Inhalt einer Speicherzelle als Befehl oder
Datum aufzufassen ist. Es gibt somit zwei Zustände des
Rechners: Befehl holen (Interpretieren als Befehl) und Befehl
ausführen (Interpretation als Datum). Entsprechend gibt es
zwei Phasen der Programmabarbeitung:
- 1. Phase:
Der (durch den sogenannten Befehlszähler) referierte
Speicherplatzinhalt wird geholt und als Befehl interpretiert
(Befehlsholphase, instruction fetch)
- 2. Phase:
Der Speicherplatzinhalt der durch den Befehl spezifizierten
Adresse wird geholt, als Datum interpretiert und dem Befehl
entsprechend verarbeitet (Befehlsausführungsphase, instruction
execution)
Dieses Zweiphasenschema erfordert eine streng sequentielle
Ausführung eines Programms, d.h. es sind zwar Sprünge
möglich, jedoch keine parallele Bearbeitung mehrerer Befehle.
Ein v. Neumann-Rechner bearbeitet zu jedem Zeitpunkt immer nur
einen Befehl, der immer eine Datenoperation im Rechenwerk bewirkt.
Typ SISD (single instruction, singel data)
Vorteile der v. Neumann-Architektur:
(Dies ist der Hauptgrund für ihre Langlebigkeit)
- Einfachheit (übersichtlich, minimaler HW-Aufwand)
- maximale Flexibilität (bei genügend elementaren Befehlen)
Nachteile der v. Neumann-Architektur:
- nur ein Prozessor
- nur ein Verbindungsweg zwischen CPU und Speicher (zwischen CPU
und Speicher wird immer nur ein Wort transportiert)
- sequentielle Verarbeitung von Befehl und Datum
v.
Neumann-Flaschenhals
Durch neue Rechnerarchitekturen kann man die Nachteile des v.
Neumann-Rechners beseitigen, was aber erst durch die
stürmische Entwicklung auf dem Hardware-Sektor (sinkende
Preise, höhere Integrationsdichte, schnellere Chips,
höhere Zuverlässigkeit der Komponenten) möglich
wurde. Die neuen Architekturen werden (jedenfalls zur Zeit) den v.
Neumann-Rechner nicht ablösen, sondern nur in den Gebieten
sinnvoll ergänzen, in denen sie wirkliche Vorteile bringen.
Ein Weg ist z.B. der RISC (Reduced Instruction Set Computer), der
durch den vereinfachten Befehlssatz wesentlich schneller arbeitet.
Ein Teil der neuen Architekturen ist bereits in kommerziell
vertriebenen DVS vorhanden, ein Teil befindet sich im
Experimentierstadium und ein letzter Teil ist noch in der
Entwicklungsphase.
2.3 Innovative Rechnerarchitekturen
Erhöhung der Leistungsfähigkeit des v. Neumann-Rechners
- Verlagerung der Prozessorfunktionen bei der Ein-/Ausgabe auf das
E/A-Werk ("intelligente" Schnittstellen,
E/A-Prozessoren, Vor-Rechner, Front-End-Rechner). Dies vor allem
bei Großrechnern, aber auch immer häufiger bei Minis und
Mikros!
- Weiterentwicklung des Architekturprinzips durch Steuerung der
einzelnen Funktionseinheiten über eigene Prozessoren, wodurch
eine teilweise Parallelarbeit möglich wird.
- Bearbeiten einzelner, spezieller Befehle durch
Spezialprozessoren, die abwechselnd mit der "normalen"
CPU arbeiten (z. B. Arithmetik-Koprozessor).
Vermeiden oder Mildern des v. Neumann-Flaschenhalses
- Neue Rechnerarchitekturen durchbrechen den streng sequentiellen
Ablauf des v. Neumann-Rechners durch Parallelisierung verschiedener
Abläufe im Computer.
- Feldrechner bestehen aus mehreren parallelen Rechenwerken, mit
gemeinsamen Steuerwerk. So kann die gleiche Operation auf vielen
verschiedenen Datenwerten (Feldern) gleichzeitig ausgeführt
werden.
SIMD (single instr., multiple data)
Asynchrone Trennung von Befehlshol- und -ausführungsphase
Warteschlange
- Pipeline-Rechner: Entweder mehrere hintereinandergeschaltete
Rechenwerke, die verschieden Aufgaben erfüllen, aber
gemeinsam gesteuert werden oder Aufbau eines Prozessors mit
hintereinandergeschalteten spezialisierten Teilelementen.
Die einzelnem Befehle werden in Teilaufgaben zerlegt, die nach
einander von den hintereinandergeschalteten Teilelementen
bearbeitet werden.
Die nächste Operation kann bereits begonnen werden, wenn
die vorhergehende in die nächste "Station" gelangt ist.
gleichzeitige Bearbeitung mehrerer Befehle (schematisch dargestellt)
Zur selben Zeit führt jedes Verarbeitungselement
verschiedene Operationen auf unterschiedlichen Daten durch.
überlappende Befehlszyklen
MIMD (multiple instr., multiple data)
- Vektorrechner: Kombination mehrerer Pipelines
- Multiprozessorsysteme: Koppelung mehrerer Prozessoren, die auf
den gleichen Speicher (bzw. Speicherbereich) zugreifen und
weitgehend unabhängig voneinander arbeiten. Jede CPU kann ein
eigenes Programm bearbeiten
MIMD.
- Polyprozessorsysteme: Multiprozessorsystem mit verteilter
Kontrolle, bei dem die einzelnen CPUs autonom arbeiten, aber
miteinander kommunizieren und kooperieren
MIMD.
Meist besitzt jeder Prozessor einen eigenen Speicher, z.B.
Transputer. Fehlertolerante Mehrrechnersysteme eng/lose gekoppelt
(z. B. in der Raumfahrt).
2.4 Befehlszyklus
Der Befehlszyklus wird von der CPU ständig durchlaufen:
- die Befehle stehen im Speicher.
- das Leitwerk "weiß" jederzeit, welcher Befehl
als nächster auszuführen ist.
- die Adresse (= Nummer der Speicherzelle) des nächsten
auszuführenden Befehls steht in einem speziellen Register des
Leitwerks, dem Befehlszähler (Program Counter, PC, BZ,
Instruction Address Register, IAR, Instruction Pointer, IP).
- üblicherweise stehen aufeinanderfolgende Befehle in
aufeinander folgenden Speicherzellen, der zuerst auszuführende
Befehl hat die niedrigste Adresse.
- zu Beginn des Programms wird der BZ mit dessen Startadresse
geladen.
Ablauf des Befehlszyklus
In der Befehlsholphase erfolgt ein Speicherzugriff (1a)
auf die vom Befehlszähler (BZ) angezeigte Adresse. Der
entsprechende Befehl wird in das Befehlsregister (IR) des Leitwerks
gebracht (1b). Anschließend wird der BZ um 1 erhöht. Er
zeigt damit auf den nächsten Programmbefehl. Besteht ein
Befehl aus mehreren Speicherworten, setzt sich diese Phase auch aus
mehreren Speicherzugriffen zusammen (BZ wird jedes Mal
erhöht), bis der Befehl vollständig im IR steht. Es
erfolgt hier in der Befehlsholphase bereits eine Teilauswertung des
Operations-Codes (s. Grafik). Das Befehlsregister
besteht hier aus Op-Code-Register (OR, Befehlsregister) und
Adress-Register (AR).
Der Befehl im OR wird nun decodiert (Befehlsdecoder) und der
Ablaufsteuerung zugeführt. Diese ist in der Regel als
Mikroprogramm realisiert. Die Ablaufsteuerung erzeugt nun die
nötigen Steuersignale (siehe Kapitel 8).
Benötigt der Befehl Operanden, so wird deren Adresse
aus dem Inhalt des AR ermittelt. Häufig ist im Befehl nicht
die tatsächliche Operandenadresse, sondern nur eine
Teilinformation enthalten, die noch geeignet ergänzt werden
muss (
Adressrechnung, s. später).
Nun erfolgt ein Speicherzugriff (4a) auf die so festgestellten
Operanden-Adresse. Der Operand wird in das vom Op-Code
spezifizierte Register oder in das Rechenwerk (4b) oder in die
ausgewählte Speicherzelle gebracht.
Falls durch den Op-Code weitere Teiloperationen gefordert sind,
werden diese nun ausgeführt. Dabei kann auch der Inhalt des BZ
verändert werden (Sprungbefehle, Unterprogramm-Aufrufe).
Jeder Befehlszyklus besteht aus einer Anzahl von Teilschritten.
Die Anzahl der Teilschritte kann für unterschiedliche
Befehle verschieden sein, auch die Zeitdauer der einzelnen Befehle
kann unterschiedlich sein.
die Befehlszyklen verschiedener Befehle können
unterschiedlich lang sein. Die tatsächliche Dauer eines
Befehlszyklus hängt von der Taktfrequenz der CPU ab.
Der gesamte Ablauf in der CPU wird durch einen zentralen Takt
gesteuert. Ein Befehlszyklus kann in eine Reihe von Maschinenzyklen
zerlegt werden (z.B. Speicherzugriff in einem Maschinenzyklus). Ein
Maschinenzyklus kann eine oder mehrere Taktperioden
(Arbeitstakt des Prozessors) dauern.
2.5 Programm-Unterbrechungen
Häufig ist es notwendig, dem Computer zu einem beliebigen
Zeitpunkt von außen ein bestimmtes Verhalten aufzuzwingen,
z. B. das Lesen eines Datenwertes nach dessen Eintippen am
Terminal (
besonders wichtig in der Prozess-Steuerung).
Wenn das externe Ereignis relativ selten auftritt, wäre es sehr
ineffektiv, den Rechner mit einem ständigen
Terminal-Abfrageprogramm zu beschäftigen (Polling).
Besser ist es, den Rechner in seiner Arbeit erst dann zu
unterbrechen, wenn das externe Ereignis eintritt. Die Unterbrechung
erfolgt durch ein an die CPU gesandtes Signal, die
Unterbrechnungsanforderung (UA, interrupt request, IRQ), das die
CPU veranlasst, das gerade laufende Programm zu unterbrechen und
eine Befehlsfolge auszuführen, die auf die Unterbrechung
reagiert (z.B. ein Datum von der Tastatur in den Speicher bringt)
Programmunterbrechung (interrupt).
Die bei der Unterbrechung zu startende Befehlsfolge ist das
Unterbrechungs-Antwortprogramm (interrupt service routine, ISR).
Nach dem Abarbeiten der ISR fährt der Rechner mit der
Ausführung des unterbrochenen Programms fort. Auf gleiche
Weise lassen sich Reaktionen des Computers auf andere seltene oder
unvorhersehbare Ereignisse (z.B. Ausfall der Stromversorgung)
behandeln. Als Reaktion auf eine Unterbrechungsanforderung
geschehen zwei Dinge:
- Retten des aktuellen Programmzustands: Der
Maschinenstatus, d.h. der Inhalt der Register der CPU, muss
festgehalten werden. Dies geschieht durch Wegspeichern der
Registerinhalte des gerade unterbrochenen Programms (
Zustandsvektor).
- Laden der Register mit dem Zustandsvektor der ISR (z.B.
Startadresse der ISR): Der Zustandsvektor steht an einer
festgelegten Adresse im Speicher (
Interrupt-Vektor). Das
Programm wird nun ab der Startadresse der ISR fortgesetzt.
Die Unterbrechung darf nicht mitten in einer
Befehlsausführung erfolgen (undefinierter
Prozessorstatus!), sondern erst nachdem der gerade laufende
Befehl vollständig abgearbeitet ist, also am Ende des
Befehlszyklus (siehe Struktogramm). Nach Ende der ISR wird der
ursprüngliche Zustandsvektor wieder vom Stack geholt und
das Programm an der Unterbrechungsstelle fortgesetzt.
Während des Rettens des Programmzustands und des
anschließenden Ladens des Zustandsvektors der ISR darf
keine neue Unterbrechungsanforderung auftreten
(Zustandsinformation unvollständig!). Der Befehlssatz der
Prozessoren enthält daher spezielle Befehle zum Sperren und
Freigeben von Unterbrechungsanforderungen.
Die HTML-Fassung entstand unter Mitwirkung von Volker Arndt
Copyright © FH München, FB 04, Prof. Jürgen Plate