Table Of ContentSpringer-Lehrbuch
Manfred Broy
Informatik
Eine grundlegende Einfiihrung
Teil II. Rechnerstrukturen und
maschinennahe Programmierung
Springer-Verlag
Berlin Heidelberg New \6rk
London Paris Tokyo
Hong Kong Barcelona
Budapest
Professor Dr. Manfred Broy
Institut fiir Informatik
Technische Universitat Miinchen
ArcisstraBe 21
D-80333 Miinchen
Mit 46 Abbildungen und 33 Tabellen
CR-Klassifikation (1991): A.I, B.O, C.O, D.3.4
ISBN-13: 978-3-540-56969-5 e-ISBN-13: 978-3-642-97520-2
DOl: 10.1007/978-3-642-97520-2
Die Deutsche Bibliothek - CIP-Einheitsaufnahme
Broy, Manfred: Informatik: eine grundlegende Einfiihrung 1 Manfred Broy. -
Berlin; Heidelberg; New York; London; Paris; Tokyo; Hong Kong; Barcelona;
Budapest: Springer.
(Springer-Lehrbuch)
Teil 2. Rechnerstrukturen und maschinennahe Programmierung. - 1993
Dieses Werk ist urheberrechtlich geschiitzt. Die dadurch begriindeten Rechte, insbe
sondere die der Ubersetzung, des Nachdrucks, des Vortrags, der Entnahme von
Abbildungen und Tabellen, der Funksendung, der Mikroverfilmung oder der Verviel
faltigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen,
bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfaltigung
dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen
der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik
Deutschland vom 9. September 1965 in der jeweils geltenden Fassung zulassig. Sie ist
grundsatzlich vergiitungspflichtig. Zuwiderhandlungen unterliegen den Straf
bestimmungen des Urheberrechtsgesetzes.
© Springer-Verlag Berlin Heidelberg 1993
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in
diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme,
daB solche Namen im Sinne der Warenzeichen-und Markenschutz-Gesetzgebung als
frei zu betrachten waren und daher von jedermann benutzt werden diirften.
Satz: Reproduktionsfertige Vorlage vom Autor
45/3140 -5 4 3 2 I 0 - Gedruckt auf saurefreiem Papier
Vorwort
In diesem zweiten Teil der vierteiligen EinfUhrung in die Informatik beschaftigen wir
uns mit dem Grundthema Darstellung und Verarbeitung von Informationen durch
technische Mittel. Dazu geh6rt die Darstellung von Informationen durch Zeiehen und
Zeiehenfolgen tiber einem zweistelligen Alphabet und damit Aspekte der Binlir
codierung. Wahrend sich der Teil I auf die problemnahe Programmierung und die
abstrakte Darstellung von Information richtet, steht im Teil II die technische
Realisierung von Informationsverarbeitungsvorgangen im Sinne der Informatik im
Zentrum. In Teil III werden dann die fUr den Informatiker bedeutsamen Fragen der
Systemstrukturen, der verteilten Systeme, Betriebssysteme, der Systemprograrnmier
ung bis hin zur Ubersetzung und Interpretation von Programmiersprachen behandelt.
In Teil IV gehen wit auf Themen der theoretischen Informatik ein. Dazu geh6ren
formale Sprachen, Berechenbarkeit, Komplexitat und Algorithmen fUr hochkomplexe
Systeme. Wir wenden uns abschlieBend der Behandlung groBer Datenmengen zu.
1m vorliegenden Teil II beschaftigen wir uns, ausgehend von Codierung und ins
besondere Binlircodierung, mit Schaltnetzen, Schaltwerken und Booleschen Funktio
nen. Dadurch wird eine fUr den Informatiker angemessen abstrakte Sicht auf Schal
tungen gegeben, die ihre Funktionsweise deutlich macht. Schaltungen stellen ein
vorztigliches Beispiel fUr verteilte informationsverarbeitende Systeme dar. So fallen
bei der Behandlung von Schaltungen viele der Begriffsbildungen an, die fUr den
Informatiker auch im Zusammenhang mit verteilten Systemen von allgemeiner
Bedeutung sind.
Das Studium der Schaltnetze und Schaltwerke vermittelt das Verstandnis der
Bausteine zum Verarbeiten, Speiehern und Ubertragen von Informationen und der
Realisierung solcher Bausteine. Auf dieser Grundlage k6nnen wir die Funktionsweise
der Komponenten von Rechnern erklliren. Die Rechnerarchitektur verziehtet jedoch
auf eine schaltungstechnische Darstellung und bedient sich einer abstrakten, auf die
Programmierung ausgerichteten Sieht. GemaB dieser Auffassung behandeln wir in
Kapitel 3 die grundlegenden Strukturen der von-Neumann-Rechnerarchitektur.
Exemplarisch wird eine spezielle Rechnerarchitektur beschrieben, die hypothe
tische Rechenmaschine MI. Die MI ist eine Abstraktion der Rechnerarchitektur V AX
der Firma Digital Equipment. Die abstrakte Maschine MI wurde an der Technischen
Universitat Mtinchen als Basis ftir die Erkllirung von Rechnerstrukturen im Informa
tikstudium von meinen Kollegen H.-G. Hegering und H.-J. Siegert eingefUhrt. Die in
diesem Buch verwendeten Strukturen der MI zielen auf ein genaues Verstandnis der
VI Vorwort
Funktionsweise und der maschinennahen Programmierung von Rechenanlagen. Auf
bauend auf diesen maschinennahen Programmstrukturen werden schrittweise
abstrakte Programrnierkonzepte entwickelt, und es wird gezeigt, wie sich diese in die
maschinennahen Sprachkonzepte umsetzen lassen.
Ausgehend von den grundlegenden Fragen der Codierung von Information durch
Binarworter behandeln wir also alle Aspekte der technischen Informationsverarbei
tung, von Schaltungen tiber Maschinenarchitekturen bis hin zur maschinennahen und
problernnahen Programmierung. Wichtig und ntitzlich sind dabei flir den Informatiker
nicht allein die konkret beschriebenen Strukturen, sondem auch die Schichtung in Ab
straktionsebenen, die typisch ftir die Arbeitsweise der Informatik ist.
Der vorliegende Band gibt im wesentlichen den Stoff einer Vorlesung wieder, wie
sie im zweiten Semester des Informatikstudiums im Rahmen der Einflihmng gehalten
wird. Er hat sich aus der Einflihrungsvorlesung entwickelt, die ich erstmals an der
UniversiUit Passau im Sommersemester 1984 und dann mehrfach in Passau und an
der Technischen Universitat Mtinchen gehalten habe. Die Ausarbeitung und
Gestaltung der Vorlesung haben meine Mitarbeiter und auch Studenten entscheidend
mit beeinfluBt. Ihnen bin ich zu groBem Dank verpflichtet. 1m einzelnen mochte ich
dabei meine Passauer Mitarbeiter Heinrich HuSmann, Thomas Pinegger, Friederike
Nicki, Michael Breu und meinen Mtinchner Mitarbeiter Maximilian Fuchs dankend
erwlihnen. Auch meinen Kollegen in Passau und Mtinchen verdanke ich zahlreiche
Anregungen.
Dank gebtihrt auch dem Springer Verlag und damit Hans Wossner, der die
Gestaltung entscheidend gepragt hat.
Mtinchen, im Juli 1993 Manfred Broy
Inhaltsverzeichnis
1. Codiernng nnd Informationstheorie ................................ .
1.1 Codes und Codierung ....................................................... . 2
1.1.1 Codes fester Lange ........................................................... . 3
1.1.2 Codes variierender Lange ................................................... . 7
1.1.3 Serien-und Parallelwortcodierung von Zeichenfolgen .................. . 8
1.2 Optimalitat vOl!. Codes und Entscheidungsinformation .................. . 11
1.3 Sicherung der Ubertragung von Nachrichten ............................. . 17
1.3.1 Codesicherung ................................................................ . 18
1.3.2 Ubertragungssicherung ...................................................... . 19
2. Binare Schaltnetze nnd Schaltwerke ............................... . 23
2.1 Boolesche Algebra und Boolesche Funktionen ........................... . 23
2.1.1 Boolesche Funktionen ....................................................... . 24
2.1.2 Ordnungen auf Booleschen Abbildungen ................................. . 27
2.2 Normalformen Boolescher Funktionen .................................... . 29
2.2.1 Das Boolesche Normalform-Theorem ..................................... . 29
2.2.2 Vereinfachte Normalformen ................................................. . 32
2.3 Schaltnetze .................................................................... . 35
2.3.1 Reprasentationen fur Schaltfunktionen und Schaltnetze ................. . 36
2.3.2 Konstruktion von Schaltnetzen ............................................. . 46
2.3.3 Arithmetische Schaltnetze ................................................... . 47
2.3.4 Zahldarstellung ............................................................... . 51
2.3.5 Schaltnetze mit Steuerleitungen ............................................. . 61
2.3.6 Schaltelemente als Schalter .................................................. . 66
2.3.7 Technische Realisierung von Schaltnetzen und Schaltem ............... . 67
2.4 Schaltwerke ................................................................... . 71
2.4.1 Schaltwerksfunktionen ...................................................... . 72
2.4.2 Schaltfunktionen als Schaltwerksfunktionen .............................. . 74
2.4.3 Schaltwerke ................................................................... . 76
2.4.4 Speichemde Schaltwerksfunktionen und endliche Automaten .......... . 77
2.4.5 Schaltwerke mit verz6gerungsfreier Ruckkopplung ..................... . 82
2.4.6 Sinnbilder fur Schaltwerke und ihre Funktionen ......................... . 87
2.4.7 Zusarnmenwirken speichemder und verarbeitender Schaltwerke ....... . 91
2.4.8 Technische Realisierung von Schaltwerken ............................... . 93
2.4.9 H6chstintegration ............................................................ . 94
3. Antban von Rechenanlagen ........................................... . 97
3.1 Zum strukturellen Aufbau von Rechnem .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.1.1 Der Rechnerkem .. .. ...... . ... . . . .. . . . . . .. ... .. .. .. . .. .. .. .. .. .. . . . .. . . . ... ... 99
3.1.2 Die Speichereinheit ............................................................ 101
VIII Inhaltsverzeichnis
3.1.3 Ein-IAusgabe .................................................................. . 102
3.1.4 Befehle und Daten auf Rechnerkernebene ................................. . 103
3.1.5 Operandenspezifikation und AdreBrechnung .............................. . 110
3.1.6 per Befehlszyklus ............................................................ . 116
3.2 Uberblick tiber heutige Hardwarekornponenten .......................... . 120
3.2.1 Pro~essoren. .u nd Verarbeitungselemente .................................. . 120
3.2.2 Spelcherge~~te ................................................................. . 121
3.2.3 Elngabegerate ................................................................. . 123
3.2.4 Ausgabegerate ................................................................. . 124
3.2.5 Datentibertragungsgerate .................................................... . 124
3.3 Rechnerarchitekturen ......................................................... . 125
3.3.1 Monoprozessorrechner ...................................................... . 125
3.3.2 Multiprozessorrechner ....................................................... . 126
3.3.3 Neuartige Rechnerarchitekturen ............................................. . 127
3.4 Rechnernetze .................................................................. . 128
3.4.1 Grundbegriffe ................................................................. . 128
3.4.2 Rahmenbildung ftir Nachrichten ............................................ . 128
3.4.3 Netzwerktypen ................................................................ . 129
3.4.4 Verrnittlungsarten ............................................................. . 130
3.4.5 Nachrichtenstruktur .......................................................... . 130
4. Maschinennahe Programmstrukturen .............................. . 133
4.1 Maschinennahe Programmsprachen ........................................ . 133
4.1.1 Maschinenworter als Befehle ................................................ . 133
4.1.2 Der Befehlsvorrat der MI .................................................... . 135
4.1.3 Einfache Maschinenprogramme ............................................. . 142
4.1.4 Assemblersprachen ........................................................... . 146
4.1.5 EinadreBform und MehradreBform ......................................... . 146
4.1.6 Einfache Unterprogrammtechniken ......................................... . 148
4.2 Adressiertechniken und Speicherverwaltung .............................. . 153
4.2.1 Konstante ...................................................................... . 153
4.2.2 Operandenversorgung tiber Register ....................................... . 154
4.2.3 Absolute Adressierung ....................................................... . 154
4.2.4 Relative Adressierung ........................................................ . 154
4.2.5 Indexierung und Linearisierung von Feldern ............................. . 155
4.2.6 Symbolische Adressierung .................................................. . 158
4.2.7 Geflechtsstrukturen: Indirekte Adressierung .............................. . 158
4.2.8 Speicherverteilung ............................................................ . 161
4.2.9 Kellerspeicherverwaltung ftir blockorientierte Sprachen ................. . 162
4.3 Techniken maschinennaher Programrnierung ............................. . 166
4.3.1 Auswertung von Ausdriicken durch maschinennahe Programme ...... . 166
4.3.2 Maschinennahe Realisierung von Ablaufstrukturen ...................... . 171
4.4 Maschinennahe Realisierung von Rekursion .............................. . 174
4.4.1 Kellerartige Verwaltung von Parametern .................................. . 174
4.4.2 Kellerartige Verwaltung von rekursiven Prozeduraufrufen .............. . 177
4.4.3 Optirnierung ................................................................... . 179
Literaturangaben 187
Stichwortverzeichnis 191
1. Codierung und Informationstheorie
Information muB fUr die Zwecke der maschinellen Speicherung und Verarbeitung
stets durch exakt festgelegte Formen der Reprasentation dargestellt werden. Die in
unserem Kulturkreis verbreitete Form der Reprasentation von Information ist die
Schrift. Aus der Sicht des Informatikers sind Schriften Zeichenfolgen, oder genauer
endliche Sequenzen von Zeichen. Es existieren viele unterschiedliche Repra
sentationssysteme, die auf Zeichenfolgen basieren. Neben Zeichenfolgen gibt es noch
viele andere Moglichkeiten der Reprasentation von Information. In diesem Kapitel
beschaftigen wir uns jedoch ausschlieBlich mit der Darstellung von Informationen aus
einer in der Regel endlichen Grundmenge durch Zeichenfolgen tiber einem endlichen
Zeichensatz. Ftir Zwecke der maschinellen Informationsverarbeitung sind Repra
sentationssysteme unterschiedlich gut geeignet.
Die Suche nach einfachen und okonomischen Reprasentationen von Informatio
nen durch Zeichenfolgen ftihrt auf Fragen der Codierung von Information und der
Codes. Eine Codierung oder ein Code erlaubt den Ubergang von einem gegebenen
Reprasentationssystem fUr die betrachteten Informationen durch Zeichen und Zeichen
folgen zu einer anderen Reprasentation der gleichen Informationen durch Zeichen
oder Zeichenfolgen.
Bei der Auswahl der Codierungen und deren Beurteilung stehen zwei Ziele im
Vordergrund: die Okonomie der Darstellung und der Verarbeitung sowie ein hohes
MaB an Fehlersicherheit. Einmal sind wir aus naheliegenden Effizienzgrtinden an
moglichst kurzen Codewortern interessiert, so daB die Reprasentation von Infor
mation durch den Code moglichst kompakt, wenig aufwendig und tibersichtlich wird.
Zusatzlich sollte die Verarbeitung von Information in der gewahlten Reprasentation
einfach und okonomisch sein. Andererseits mochten wir in der Lage sein, durch
Ubertragungs- oder Verarbeitungsfehler geringfUgig veranderte ("gest6rte") Code
worter zumindest als gestort zu erkennen oder gar trotz der StOrung wieder zutreffend
zu decodieren. Unterstellen wir eine gegebene mittlere Haufigkeit ("Wahrscheinlich
keit") fUr das Auftreten der zu codierenden Informationen und somit eine mittlere
Haufigkeit fUr das Auftreten der einzelnen Zeichen in der Reprasentation der zu codie
renden Information, so ist es naheliegend, die Codierung geschickt so zu wahlen, daB
die mittlere Lange der Codierung moglichst klein wird. Dartiber hinaus ist es ange
bracht, aus den Angaben tiber die Wahrscheinlichkeit einer St6rung Codierungen so
festzulegen, daB die Wahrscheinlichkeit fUr nicht erkannte Storungen hinreichend
klein wird.
2 1. Codierung und Informationstheorie
1.1 Codes und Codierung
Wir setzen im folgenden stets eine endliche Menge A von Zeichen voraus. Die Menge
A heiBt auch Zeichenvorrat. 1st die Menge A der Zeichen linear geordnet, so nennen
wir A auch Alphabet. Einen besonders elementaren Zeichenvorrat bildet die Menge B
definiert durch
B={L,O}
Ein Element der Menge B nennen wir ein Biniirzeichen oder Bit (Binary Digit).
Die Menge A * der endlichen Zeichenfolgen tiber einem Zeichenvorrat A nennen
wir auch die Menge der WiMer tiber A. Bei der Menge B* = {L, O}* sprechen wir
von Biniirwortem. Die Elemente der Menge
Bn
heiBen auch n-Bit-Worter oder Biniirworter der Liinge n. Haufig wird die Menge der
n-Bit-W6rter selbst wieder als Zeichenvorrat verwendet.
Abbildungen zwischen Zeichenvorraten A und B und insbesondere auch
zwischen den W6rtern tiber Zeichenvorraten heiBen Codes oder auch Codierung. Ein
Code ist eine Abbildung
c: A-7B
oder im Falle der Codierung ganzer W6rter eine Abbildung
c:A*-7B*
Spezialfalle von Codierungen sehen nicht fUr aIle W6rter aus A * Darstellungen vor.
Solche Codierungen entsprechen partiellen Abbildungen oder Abbildungen der Form:
c: A' -7 B' wobei A' k A* und B' k B* (oder auch A' k A und B' k B)
Haufig wahlen wir eine Zahl n E N und die Zeichenmengen A' = An und B' = Bn.
Besteht der Zeichenvorrat A aus Einzelzeichen, so sprechen wir auch von
Chiffrierung und nennen die Bildmenge Chiffren.
1m allgemeinen setzen wir fUr eine Codierung voraus, daB sie eine injektive
Abbildung ist: Verschiedene Zeichen und W6rter werden dann auf verschiedene
Codew6rter abgebildet. Darnit ist jede Codierung
c: A-7B
auf ihrer Bildmenge urnkehrbar. Die Urnkehrabbildung
d: {c(a): aE A}-7A
zur Codierungsabbildung c nennen wir Decodierung oder Dechiffrierung. Es gilt dann
fUr alle Zeichen a E A:
d(c(a)) = a.
Wir betrachten im folgenden fast ausschlieBlich Biniircodierungen von Alphabeten.
Dies sind Codierungen der Form
c:A-7B*
wobei A ein vorgegebenes Alphabet sei.
1.1 Codes und Codierung 3
Auf der Menge A * der Worter tiber einem Alphabet A ist durch die lexikographi
sche Ordnung eine lineare Ordnung definiert. Sei :s; die lineare Ordnung auf A. Ftir
*
Worter wI' w2 E A definieren wir die lexikographische Ordnung :S;lex induktiv
durch folgende Festlegungen:
*
E :S;lex w filr aile Worter w E A
<al> wI :S;lex <a2> w2 <=> (al < a2) v (al = a2" wI :S;lex w2)
0 0
Die lexikographische Ordnung bildet eine lineare Ordnung auf A *. Auf der Menge der
Binarzeichen definieren wir eine lineare Ordnung durch O:s; L.
1.1.1 Codes fester Lange
Bei Binarcodierungen, die jedes zu codierende Zeichen auf ein Binarwort gleicher
Lange abbilden, sprechen wir auch von Codierungen Jester Lange. Codierungen
fester Lange entsprechen also Abbildungen der Form
c: A~En
Da hliufig durch technische Gegebenheiten (wie etwa die Lange der Register einer
Rechenanlage) eine feste Anzahl von Bits filr die Reprasentation eines Codewortes
zur Verfilgung steht, sind in der Informatik heute fast ausschlieBlich Codierungen
fester Lange gebrauchlich. Wir betrachten im folgenden eine Reihe einfacher
Codierungen fester Lange und diskutieren deren Eigenschaften.
Seien a, b Biniirworter gleicher Lange; die Anzahl der Zeichen, in denen sich die
Worter a und b unterscheiden, nennen wir ihren Hammingabstand. Der Hamrningab
stand entspricht sornit mathematisch einer Abbildung
Ham_dis: En x En ~ N
Der Wertverlauf dieser Abbildung ist durch folgende Gleichung festgelegt:
Ham_dis( <al ... an>, <bl··· bn» = Ln dj, wobei dj = { 01 fails ai i:-bj
i = I sonst
Der Hamrningabstand einer Codierungsabbildung
c: A~En
der Codelange n ist durch den kleinsten Hammingabstand zwischen zwei verschie
denen Codewortern definiert:
Ham_dis(c) = min { Ham_dis(c(a), c(b)): a, b E A" a i:-b }
Ein groBer Hammingabstand eines Codes erlaubt das Erkennen von Fehlern, oft
sogar die Korrektur von Fehlem, benotigt aber langere Codeworter und damit einen
zusatzlichen Darstellungsaufwand. Dies filhrt auf den Begriff der "Redundanz", der
im folgenden Abschnitt genauer erlautert wird.
Ftir ein Alphabet A, also filr einen Zeichensatz A, auf dem eine lineare Ordnung
gegeben ist, heiBt eine Codierung fester Lange ein Gray-Code (auch einschrittiger
Code), wenn sich die Codierungen zweier in der Ordnung aufeinanderfolgender