Table Of ContentSpringer-Lehrbuch
Springer-Verlag Berlin Heidelberg GmbH
Thomas Flik . Hans Liebig
Mikroprozessor
technik
CISC, RISC
Systemaufbau
Assembler und C
5., vollständig neubearbeitete Auflage
mit 288 Abbildungen und 30 Tabellen
Unter Mitwirkung von M. Menge
Springer
Dr.-Ing. Thornas Flik
Prof. Dr.-Ing. Hans Liebig
Technische Universität Berlin
Institut für Technische Informatik
Franklinstr. 28/29
10587 Berlin
email: flik@cs.tu-berlin.de
liebig@cs.tu-berlin.de
ISBN 978-3-662-08756-5 ISBN 978-3-662-08755-8 (eBook)
DOI 10.1007/978-3-662-08755-8
Die deutsche Bibliothek -cIp-Einheitsaufnahme
cIp-Eintrag beantragt
Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der
übersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und "Tabellen, der
Funksendung, der Mikroverfilmung oder Vervielfältigung auf anderen Wegen und der Speicherung
in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine
Vervielfältigung 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 zulässig. Sie ist grundsätzlich
vergütungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechts
gesetzes.
© Springer-Verlag BerUn Heidelberg 1998
Ursprünglich erschienen bei Springer-Verlag Berlin Heidelberg New York 1998.
Softcover reprint ofthe hardcover 5th edition 1998
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch
berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daß solche Namen im Sinne
der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von
jedermann benutzt werden dürften.
Sollte in diesem Werk direkt oder indirekt auf Gesetze, Vorschriften oder Richtlinien (z.B. DIN, VDI,
VDB) Bezug genommen oder aus ihnen zitiert worden sein, so kann der Verlag keine Gewähr für die
Richtigkeit oder Aktualität übernehmen. Es empfiehlt sich, gegebenenfalls für die eigenen Arbeiten
die vollständigen Vorschriften oder Richtlinien in der jeweils gültigen Fassung hinzuzuziehen.
Satz: Reproduktionsreife Vorlage der Autoren
Umschlaggestaltung:Design & Production, Heidelberg
SPIN:I0662430 68/3020 -5 4 3 2 1 0 -Gedruckt auf säurefreien Papier
Vorwort
Das vorliegende Buch baut auf dem in vier Auflagen erschienenen Standardwerk
Mikroprozessortechnik auf. In der fünften Auflage behandelt es die Technik der
CISC- und RISC-Mikroprozessorsysteme in einer wesentlich erweiterten und
gleichzeitig aktualisierten Form. Die Neuauflage erscheint so wiederum weit
gehend neu konzipiert. Während in den früheren Auflagen mehr der Lehrbuch
charakter dominierte, hat sich nun der Schwerpunkt in Richtung Nachschlagewerk
mit ausführlichen Begriffserklärungen sowie einem umfangreichen Sachverzeich
nis verlagert.
Einen festen Stellenwert nehmen nach wie vor die Prinzipien der Rechnerorgani
sation mit der für die Mikroprozessortechnik charakteristischen Detailtreue auf der
Baustein- und Baugruppenebene ein. Insbesondere behandelt das Buch die für
diese Technik notwendige Kombination von Hardware und Software für den Sy
stemaufbau und das Zusammenspiel zwischen Prozessor, Bus und Speicher. Dar
über hinaus wurde der Programmierung dieser Systeme besondere Bedeutung bei
gemessen, und zwar in dieser Auflage erstmals in der Symbiose von Assembler
und C, wie sie heute in der Praxis der Einbettung von Mikroprozessorsystemen
üblich ist. (Durch die Ausweitung des Stoffes, verbunden mit dem Wandel im
Charakter des Buches wurde auf die Aufgaben und Lösungen verzichtet. Die Fir
menbeschreibungen von CISC- und RISC-Prozessoren führender Hersteller er
scheinen nicht mehr als Extra-Kapitel, sondern sind nun mit ihren wichtigsten
Merkmalen als Fallbeispiele in den Stoff integriert.)
Die mit vielen Bildern und Tabellen versehene Präsentation des Stoffes soll es
Studenten der einschlägigen Fachrichtungen sowie Entwicklungsingenieuren und
Anwendern in den verschiedensten technischen Disziplinen ermöglichen, sich in
die CISC- und RISC-Mikroprozessortechnik einschließlich ihrer Assembler- und
maschinennahen Programmierung einzuarbeiten. Stoffauswahl und Darstellung
lehnt sich zwar an die erfolgreichen Mikroprozessorsysteme mit Motorola-, Intel
und SPARC-Prozessoren an, ist aber dennoch nicht an einen bestimmten Maschi
nentyp gebunden und somit universell. Von Vorteil sind Kenntnisse im Logischen
Entwurf digitaler Systeme sowie in höheren Programmiersprachen, insbesondere
in C.
Kapitell gibt eine Einführung in die Arbeitsweise, den Aufbau und die Assem
blerprogrammierung von Mikroprozessorsystemen. Dieses Kapitel kann von Le
sern übersprungen werden, denen die traditionellen Grundlagen der Rechnerorga
nisation und der Assemblerprogrammierung bekannt sind. Lesern, die mit der
VIII Vorwort
RISC-Technologie nicht so vertraut sind, sei dennoch die Lektüre von Abschnitt
1.4 empfohlen, da die Kenntnis dieses Abschnitts insbesondere für das Verständ
nis der Abschnitte 2.2 sowie der heute in diesem Zusammenhang besonders wich
tigen Abschnitte 2.3 (Modeme CISC- und RISC-Architekturen) und 3.4 (RISC
spezifische Programmierung) vorausgesetzt wird. Kapitel 2, mit Der Mikropro
zessor überschrieben, behandelt die Architekturmerkmale der von CISC- und
RISC-Techniken geprägten Mikroprozessoren von heute. Es bildet gleichzeitig die
Grundlage für Kapitel 3, der Assemblerprogrammierung mit Gegenüberstellung
von C-Programmen, in dem wichtige Programmierungstechniken für CISCs und
RISCs beschrieben werden, wobei zu den exemplarisch gewählten Assembler
Programmbeispielen ihre jeweiligen C-Entsprechungen mit angegeben sind. Ka
pitel4, die Maschinennahe Programmierung in C, ist Programmierungstechniken
gewidmet, die im Zusammenwirken von Hoch-und Assemblersprache eine effizi
ente Programmierung auf hoher Abstraktionsebene erlauben, auch unter Einbezie
hung des Betriebssystems.
Kapitel 5 behandelt Busse und Systemstrukturen mit Schwerpunkt auf Ein- und
Mehrbusstrukturen sowie Ein- und Mehrprozessorsystemen, auch in der Detail
liertheit des Signalflusses zwischen Mikroprozessor und den einzelnen System
bausteinen und Baugruppen. Kapitel 6 behandelt die Speicherorganisation, d.h.
den Speicheraufbau unter Einbeziehung unterschiedlichster Speicherbausteine, die
Techniken des schnellen Speicherzugriffs sowie die Organisation von Caches und
die Speicherverwaltung mittels Speicherverwaltungseinheiten. Kapitel 7 behandelt
die Ein-IAusgabeorganisation und Rechnerkommunikation mit der Beschreibung
der gebräuchlichsten Interface-Techniken: hier werden insbesondere wichtige
Schnittstellenvereinbarungen sowie verschiedene Interface-Bausteine und deren
Einbeziehung in Mikroprozessorsysteme detailliert beschrieben. Hinzu kommen
Erörterungen der Datenfemübertragung und von Rechnernetzen. Kapitel 8 behan
delt schließlich Ein-IAusgabesteuereinheiten und Peripheriegeräte und ergänzt die
Ausführungen von Kapitel 7 durch Ein-/Ausgabe-Controller und -computer sowie
durch Hintergrundspeicher, Ein-/Ausgabegeräte und deren Anschluß über paral
lele und serielle periphere Busse.
Für die Mitwirkung an der fünften Auflage bedanken wir uns bei Frau Eveline
Homberg für das Zeichnen der Bilder, bei Herrn Dipl.-Inform. Irenäus Schoppa
für seine Beiträge zu Kapitel 3 sowie beim Springer-Verlag für die gute Zusam
menarbeit.
Über Verbesserungs vorschläge, Anregungen, Kritik (auch Hinweise auf Fehler)
würden wir uns freuen.
Berlin, im Frühjahr 1998 Thomas Flik flik@cs.tu-berlin.de
Hans Liebig liebig@cs.tu-berlin.de
Matthias Menge menge@cs.tu-berlin.de
Inhaltsverzeichnis
1 Einführung in den Aufbau und die Programmierung von
Mikroprozessorsystemen . 1
1.1 Informationsdarstellung 4
1.1. 1 Informationseinheiten . 4
1. 1. 2 Zeichen (characters) 5
1.1.3 Hexadezimal-und Oktalcode 7
1.1.4 Ganze Zahlen (binary numbers) 7
1.1.5 Gleitkommazahlen (floating-point numbers) . 11
1.1.6 Binärcodierte Dezimalziffem (BCD-Zahlen) . 14
1.2 Rechnerstruktur (CISC) 15
1.2.1 Übersicht über die Hardwarekomponenten 15
1.2.2 Busorientierte Systemstruktur . 19
1. 2.3 Mikroprozessor . 21
1.2.4 Speicher 27
1.2.5 Ein-/Ausgabeeinheit 31
1.3 Assemblerprogrammierung (CISC) 32
1.3. 1 Programmdarstellung . 33
1.3.2 Programmübersetzung (Assemblierung) 37
1.3.3 Programmeingabe und Textausgabe 44
1.4 Der RISC-Mikroprozessor 45
1.4.1 Prozessorstruktur 45
1.4.2 Maschinen-/Assemblerprogrammierung 53
2 Der Mikroprozessor . 61
2.1 CISC-Programmiermodell 63
2.1.1 Registersatz und Prozessorstatus . 63
2.1.2 Datenformate, Datentypen und Datenzugriff . 68
2.1.3 Adressierungsarten und Befehlsformate 71
2.1.4 Befehlssatz 80
2.1.5 Unterbrechungssystem und Betriebsarten 92
2.2 RISC-Programmiermodell 100
2.2.1 Registersatz und Prozessorstatus . 100
2.2.2 Datenformate, Datentypen und Datenzugriff . 105
X Inhaltsverzeichnis
2.2.3 Adressierungsarten und Befehlsformate . 106
2.2.4 Befehlssatz . . . . . . . . . . . 109
2.2.5 Unterbrechungssystem und Betriebsarten 115
2.3 Modeme CISC-und RISC-Architekturen . . 116
2.3.1 Parallel arbeitende Funktionseinheiten . 117
2.3.2 Konflikte bei superskalaren Prozessoren 123
2.3.3 Sprungvorhersage . . . . . . . . 139
3 Assemblerprogrammierung mit Gegenüberstellung von
C-Programmen . . . . . . 145
3.1 Assemblersprache . . . . 146
3. 1 . 1 Algorithmendarstellung 146
3.1.2 Assemblersyntax und Assembleranweisungen 148
3.1.3 Feste und verschiebbare Programme . . 154
3.1.4 Makrobefehle und bedingte Assemblierung 158
3.2 Programmflußsteuerung . . . 161
3.2.1 Programmverzweigungen 161
3.2.2 Programmschleifen 173
3.3 Unterprogrammtechniken . . . 178
3.3.1 Unterprogrammanschluß 179
3.3.2 Parameterübergabe . . . 181
3.3.3 Geschachtelte Unterprogramme 187
3.3.4 Modulare Programmierung. 190
3.4 RISC-spezifische Programmierung 192
3.4.1 Lade-/Speichere-Problematik 194
3.4.2 Unterprogrammanschluß 196
3.4.3 Programmunterbrechungen 200
4 Maschinennahe Programmierung in C 206
(M. Menge)
4.1 Abstraktion von der Maschine . . . 207
4.1.1 Abstraktion durch das Betriebssystem . 208
4.1.2 Abstraktion durch den Übersetzer . . 210
4.2 C-Übersetzer mit Zuschnitt auf den Prozessor 212
4.2.1 Speicher-und Ein-/Ausgabezugriffe. 213
4.2.2 Datentypen . . . . . . . . . 214
4.2.3 Interrupts . . . . . . . . . . 215
4.2.4 Nutzung prozessorspezifischer Merkmale 218
4.2.5 Portabilität. . . . . . . . . . . . 219
Inhaltsverzeichnis XI
4.3 Standard-C mit Spezialisierung durch Assemblereinbindungen 222
4.3.1 Inline-Assembler 223
4.3.2 Assemblermodule . . . . . . . . . . 225
4.3.3 Startup-Code. . . . . . . . . . . . 230
4.4 C-Programmierung mit Betriebssystemunterstützung 232
4.4.1 Kommerzielle und frei verfügbare Betriebssysteme 232
4.4.2 Entwurf eines einfachen Betriebssystems. 235
5 Busse und Systemstrukturen . . . . 244
5.1 Systemaufbau und Systemstrukturen . 245
5. 1.1 Einkartensystem und Mikrocontroller 245
5.1.2 Busorientierte Mehrkartensysteme 246
5.1.3 Busfunktionen . . . . . . . . 249
5.1.4 Mehrbussysteme . . . . . . . 252
5.1.5 Einige gebräuchliche Busse und Einprozessorstrukturen 256
5. 1 .6 Mehrprozessorstrukturen 269
5.2 Adressierung der Systemkomponenten . . . . . 273
5.2.1 Isolierte und speicherbezogene Adressierung 273
5.2.2 Karten-, Block-und Bausteinanwahl . . . 275
5.2.3 Byte-, Halbwort-und Wortanwahl . . . . 277
5.2.4 Big-endian-und Little-endian-byte-Ordering. 279
5.2.5 Busankopplung. . . . . . . 285
5.3 Datentransportsteuerung . . . . . . 286
5.3.1 Synchroner und asynchroner Bus 287
5.3.2 Schreib-und Lesezyklen 289
5.3.3 Blockbuszyklus . 292
5.4 Busarbitration . . . . 294
5.4.1 Buszuteilung . . 296
5.4.2 Systemstrukturen 297
5.5 Interruptsystem und Systemsteuersignale 301
5.5.1 Codierte Interruptanforderungen . 302
5.5.2 Uncodierte Interruptanforderungen 306
5.5.3 Besondere Unterbrechungssignale 313
5.6 DerPCI-Local-Bus . . . . . . . . 315
5.6.1 Motivation und technische Daten. 315
5.6.2 Bussignale 317
5.6.3 Busoperationen . . . . . . . 321