Thomas Flik Hans Liebig Mikroprozessortechnik CISC, RISC Systemaufbau Assembler und С 5., vollständig neubearbeitete Auflage mit 288 Abbildungen und 30 Tabellen Unter Mitwirkung von M. Menge Ä) Springer
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 Dezimalziffern (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 EhWAusgabeeinheit 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 Moderne 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 С 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
XII Inhaltsverzeichnis 6 Speicherorganisation 335 6.1 Speicheraufbau und Speicherzugriff 335 6.1.1 Speicherbausteine 336 6.1.2 Aufbau einer Speicherbank 342 6.1.3 Verschränken von Speicherbänken 344 6.1.4 Überlappen von Buszyklen 345 6.1.5 Speicherzugriffe mittels Blockbuszyklen 350 6.2 Caches 357 6.2.1 Speicherhierarchie 358 6.2.2 Laden des Cache 362 6.2.3 Cache-Strukturen 364 6.2.4 Aktualisierungsstrategien und Datenkohärenz 368 6.2.5 Virtuelle und reale Cache-Adressierung 379 6.3 Hauptspeicherverwaltung 386 6.3.1 Segmentierung (segmenting) 387 6.3.2 Seitenverwaltung (paging) 393 6.3.3 Segmentierung mit Seitenverwaltung 395 6.3.4 Speicherschutz und Speicherstatus 403 7 Ein-/Ausgabeorganisation und Rechnerkommunikation.... 406 7.1 Prozessorgesteuerte Ein-/Ausgabe 407 7.1.1 Ein einfacher Interface-Baustein 408 7.1.2 Synchronisationstechniken 409 7.1.3 Gleichzeitige Bearbeitung mehrerer Ein-/Ausgabevorgänge. 415 7.2 Schnittstellenvereinbarungen 417 7.2.1 Übertragungsmerkmale 419 7.2.2 Serielle Schnittstellen 421 7.2.3 Parallele Schnittstellen 426 7.3 Parallele Ein-/Ausgabe 435 7.3.1 Datendarstellung 436 7.3.2 Datenpufferung und Synchronisation 436 7.3.3 Parallel-Interface-Baustein 437 7.4 Asynchron serielle EhWAusgabe 444 7.4.1 Datendarstellung 445 7.4.2 Takt-und Zeichensynchronisation 446 7.4.3 Asynchron serieller Interface-Baustein 447 7.5 Synchron serielle Ein-/Ausgabe 454 7.5.1 Takt-und Zeichensynchronisation 455 7.5.2 Protokolle 456 7.5.3 Synchron serieller Interface-Baustein 460
Inhaltsverzeichnis ХШ 7.6 Rechnernetze und Datenfernübertragung 462 7.6.1 Weitverkehrsnetze und lokale Netze 462 7.6.2 Datenfernübertragung 472 7.6.3 Sicherung der Datenübertragung 478 8 Ein-/Ausgabesteuereinheiten und Peripheriegeräte 482 8.1 DMA-Controller und Ein-/Ausgabecomputer 483 8.1.1 Direktspeicherzugriff (DMA) 483 8.1.2 DMA-Controller-Baustein 486 8.1.3 Ein-/Ausgabeprozessor 493 8.1.4 Ein-/Ausgabecomputer 493 8.2 Hintergrundspeicher 497 8.2.1 Floppy-Disk-Speicher 499 8.2.2 Magnetplattenspeicher 504 8.2.3 Solid-State-Disk und RAM-Disk 512 8.2.4 Optische Plattenspeicher 512 8.2.5 Magneto-optische Plattenspeicher 516 8.2.6 Magnetbandspeicher 517 8.3 EhWAusgabegeräte 525 8.3.1 Datensichtgerät und Video-Controller 525 8.3.2 Tastatur 537 8.3.3 Maus 540 8.3.4 Drucker 541 8.3.5 Scanner 545 8.4 Periphere Busse 545 8.4.1 Paralleler SCSI-Bus 546 8.4.2 Serielle SCSI-Busse 554 8.4.3 Universal Serial Bus 557 8.4.4 IEC-Bus 558 Literatur 561 Akronyme 566 Sachverzeichnis 569