1 Einleitung.- 1.1 Was ist Rechnerarchitektur?.- 1.2 Zum Stand der Technik der Hardwarekomponenten.- 1.2.1 Schaltkreistechnik.- 1.2.2 Schaltkreise.- 1.2.3 Speicherbausteine.- 1.2.4 Prozessoren.- 1.3 Motivation für innovative Rechnerarchitekturen.- 1.4 Das Schichtenmodell eines Rechnersystems.- 1.5 Die Konstituenten einer Rechnerarchitektur.- 1.5.1 Definitionen.- 1.5.2 Abstrakte Datentypen.- 1.6 Taxonomie von Rechnerarchitekturen.- 1.6.1 Allgemeine Bemerkungen.- 1.6.2 Operationsprinzipien.- 1.6.3 Strukturen von Parallelrechner-Architekturen.- Literatur zu Kapitel 1.- 2 Sequentielle Rechner.- 2.1 Die Struktur der von-Neumann-Maschine.- 2.2 Das Operationsprinzip der von-Neumann-Maschine.- 2.3 Berechnung und Ablaufkontrolle in der von-Neumann-Maschine.- 2.4 Nicht-von-Neumann-Architekturen.- 2.5 Programmstrukturen sequentieller Rechner.- 2.6 Konkurrente Prozesse.- 2.6.1 Schwergewichtige und leichtgewichtige Prozesse, Kontrollfäden.- 2.6.2 Das Petri-Netz-Modell.- 2.7 Grundlagen der Speicherorganisation im von-Neumann-Rechner.- 2.7.1 Der Working Set eines von-Neumann-Programms.- 2.7.2 Schultzmechanismen.- Literatur zu Kapitel 2.- 3 Grundzüge der Prozessor-Architekturen.- 3.1 Die minimale von-Neumann-Maschine.- 3.2 Mehrregister-Maschinen.- 3.2.1 Beispiel einer einfachen Mehrregister-Maschine (MC68020).- 3.2.2 Adressierungsarten.- 3.2.3 Mehrfach-Registersätze.- 3.3 Mikroprogrammierte CISC-Prozessoren.- 3 3.1 Vorbemerkung.- 3 3.2 Mikroprogrammiemng.- 3.3.3 Vertikale Verlagerung.- 3.4 Anwendung des Pipeline-Prinzips im Prozessor.- 3 4.1 Die Befehls-Pipeline.- 3.4.2 Pipelining von arithmetischen Operationen.- 3.5 RISC-Prozessoren.- 3.5.1 Das Ziel der RISC-Bewegung.- 3.5.2 Pipeline-Skalarprozessoren und Vektormaschinen.- 3.5.3 Beispiel: SPARC-Prozessor.- 3.6 Bus-Systeme.- 3 6.1 Bus-Arbitrierung.- 3.6.2 Standardbusse.- Literatur zu Kapitel 3.- 4 Speicherorganisation und Speicherverwaltung.- 4.1 Speicherhierarchie.- 4.2 Seitenadressierung.- 4.3 Cache-Speicher.- 4.3.1 Vorteile des Cache-Speichers.- 4.3.2 Transparenz der Adressierung: der vollassoziative Cache.- 4.3.3 Der Direct Mapping-Cache.- 4.3.4 Der mengenassoziative Cache.- 4.3.5 Bildung von Working Sets.- 4 3 6 Cache-Kohärenz.- 4.3.7 „Logischer“ oder „physikalischer“ Cache?.- 4.4 Hauptspeicher.- 4.4.1 Der wortbreite Speicher.- 4.4.2 Speicherverschränkung.- 4.5 Speichersegmentierung.- 4.6 Virtueller Speicher.- 4.7 Einfacher Objektschutz.- 4.7.1 Systemaufsichts-Modus und Benutzer-Modus.- 4.7.2 Speicherverwaltung.- 4.8 Absoluter Objektschutz: Capability-Adressierung.- 4.8.1 Capability-Adressierung und Speichersegmentierung.- 4.8.2 Referenz über Capability-Register.- 4.8.3 Einführung eindeutiger Objekt-Identifikatoren.- 4.8.4 Der Prozessor iAPX432.- Literatur zu Kapitel 4.- 5 Konzepte der Parallelarbeit.- 5.1 Parallelität und Datenabhängigkeit.- 5.2 Die Ebenen der Parallelarbeit.- 5.3 Die Anweisungsebene.- 5.3.1 Übergang zur Maschinenbefehlsebene, allgemeine Optimierungen.- 5.3.2 Software-Pipelining.- 5.4 Erkennen von Parallelität auf der Anweisungsebene.- 5.4.1 Datenabhängigkeitsanalyse in Basisblöcken.- 5.4.2 Datenabhängigkeiten über Verzweigungen hinweg.- 5.4.3 Datenabhängigkeiten in Schleifen.- 5.5 Die Prozeßebene.- 5.5.1 Schwergewichtige und leichtgewichtige Prozesse.- 5.5.2 Parallelarbeit auf der Prozeßebene.- 5.6 Nutzung der Anweisungs-Parallelität.- 5.6.1 Übersicht.- 5.6.2 Konstrukte für die parallele Ausführung mehrerer Anweisungen.- 5.6.3 Schleifen-Parallelisierung.- 5.7 Synchronisation von Parallelarbeit.- 5.7.1 FORK-JOIN-Synchronisation von Kontrollfäden.- 5.7.2 Lock-Step-Betrieb und Barrieren-Synchronisation.- 5.7.3 Synchronisation kooperierender Prozesse.- 5.7.4 Synchronisation durch objektorientierte Variablentypen.- 5.8 Datenstrukturen und Parallelarbeit.- 5.8.1 Explizite Datenparallelität und Datenstruktur-Architekturen.- 5.8.2 Wirkungsgrad der Nutzung der Datenparallelität.- 5.8.3 Vergleich zwischen Pipeline und Array von Rechenelementen.- 5.8.4 Datenparallelität auf der Ebene kooperierender Prozesse.- 5.8.5 Eine Sprache zur datenparallelen Programmierung (HPF).- Literatur zu Kapitel 5.- 6 Superskalare Prozessoren und VLWI-Maschinen.- 6.1 Übersicht.- 6.2 Der erste superskalare Prozessor: CDC6600.- 6.3 Moderne superskalare Mikroprozessoren.- 6.3.1 Allgemeines.- 6.3.2 Intel i80860XP.- 6.3.3 Motorola MC88110.- 6.3.4 Digital 21064 (Alpha).- 6.4 Das Problem des Multiport-Registerfiles.- 6.5 Das Compilerproblem.- 6.6 Die VLWI-Maschine.- 6.6.1 Grundprinzip der VLIW-Maschine.- 6.6.2 Compiler-Optimierungen und Operationsplanung.- 6.6.3 Die Speicherorganisation der VLIW-Maschine.- 6.6.4 Vergleich der VLIW-Maschine mit dem superskalaren Prozessor.- Literatur zu Kapitel 6.- 7 SIMD-Architekturen.- 7.1 Vektormaschinen und Anordnungen von Rechenelementen.- 7.2 Das Operationsprinzip der Vektormaschinen.- 7.3 Leistungskenngrößen der Vektormaschine.- 7.4 Speicherverschränkung.- 7.4.1 Konsekutive Adressierung.- 7.4.2 Verschobene Speicherung (skewed storage).- 7.4.3 Adressierung mit Zufallsadressen.- 7.4.4 Vektorregister.- 7.5 Frühe Vektormaschinen: STAR-100, CYBER 203, CRAY-1.- 7.5.1 STAR-100 und CYBER 203.- 7.5.2 CRAY-1.- 7.6 Moderne Multiprozessor-Vektormaschinen: CRAY-X MP.- 7.6.1 Zentraler Speicher.- 7.6.2 Prozessor.- 7.7 Die Programmierung von Vektormaschinen.- 7.8 Konzepte der ILLIACIV als Beispiel eines RE-Arrays.- 7.8.1 Grundstruktur.- 7.8.2 Die Organisation der ILLIAC IV.- 7.8.3 Programmierung der ILLIAC IV.- 7.9 Die Connection Machine CM2.- Literatur zu Kapitel 7.- 8 Typenkennung, Datenstruktur-Architekturen, Sprach-Architekturen.- 8.1 Architekturen mit Typenkennung.- 8.1.1 Vorteile der Typenkennung.- 8.1.2 Typengesteuerte Befehlsausführung.- 8.1.3 Unterstützung der Mechanismen höherer Programmiersprachen.- 8.1.4 Unterstützung des Betyriebssystems.- 8.1.5 Probleme der Typenkennung und Wege zu ihrer Überwindung.- 8.2 Aufbau von Datenstrukturtypen, DRAMA-Prinzip.- 8.2.1 Das DRAMA-Prinzip.- 8.2.2 DRAMA-Prinzip und Typenkennung.- 8.2.3 Beispiel einer DRAMA-Machine.- 8.3 Datenstruktur-Architekturen.- 8.3.1 Allgemeines über Datenstruktur-Architekturen.- 8.3.2 Definitionen.- 8.3.3 Datenstrukturspeicher mit parallelem Zugriff.- 8.3.4 Beispiel einer frühen Datenstruktur-Architektur: STARLET.- 8.3.5 Beispiel einer modernen Datenstruktur-Architektur: DATYPAR.- 8.3.6 Beispiel einer Spezialrechner-Architektur für die Bildanalyse.- 8.4 Sprach-Architekturen.- 8.4.1 Übersicht.- 8.4.2 Vorteile der Array-Sprachen und Datenstruktur-Architekturen.- 8.4.3 Die Lisp-Maschine ULM.- 8.4.4 Der parallele Prolog-Rechner POPE.- 8.5 Assoziative Rechner.- 8.5.1 Assoziativspeicher.- 8.5.2 Assoziativrechner.- 8.5.3 Der assoziative Feldrechner STARAN.- Literatur zu Kapitel 8.- 9 Datenfluß-Architekturen.- 9.1 Übersicht.- 9.2 Grandlagen der Datenflußarchitekturen.- 9.2.1 Das reine Datenflußprinzip.- 9.2.2 Elementares Datenflußschema, elementarer Datenflußprozessor.- 9.2.3 Verallgemeinertes Datenflußschema.- 9.3 Statische Datenflußarchitekturen.- 9.3.1 Das Operationsprinzip der statischen Datenflußarchitektur.- 9.3.2 Die statische Datenflußarchitektur des MIT.- 9.3.3 Die LAU-Architektur.- 9.4 Dynamische Datenflußarchitekturen.- 9.4.1 Das Operationsprinzip der dynamischen Datenflußarchitektur.- 9.4.2 Herstellung der Laufzeitumgebung.- 9.4.3 Kennung der Informationseinheiten (Tagged Token).- 9.4.4 Die Manchester-Maschine.- 9.4.5 Das Drosselungsproblem.- 9.5 Verfeinerungen der dynamischen Datenflußarchitektur.- 9.5.1 Zuordnung der Akteure zu den Prozessoren.- 9.5.2 Die I-Structure.- 9.5.3 Das Prinzip des expliziten Markenspeichers.- 9.5.4 Der Monsoon-Rechner.- 9.6 Hybride Datenflußarchitekturen,.- 9.6.1 Nachteile der feinkörnigen datenflußarchitekturen.- 9.6.2 Die Grundidee der hybriden datenflußarchitekturen.- 9.6.3 Das LGDG-Prinzip einer Berechnung.- 9.6.4 Die LGDG-Maschine von Dax.- 9.7 Reduktionsmaschinen.- Literatur zu Kapitel 9.- 10 Grundlagen der MIMD-Architekturen.- 10.1 Allgemeine Gesichtspunkte.- 10.1.1 Die Hauptformen von MIMD-Architekturen.- 10.1.2 Programmiermodell und abstrakte Maschine.- 10.1.3 Die Granularität der Parallelarbeit.- 10.1.4 Das Kommunikationssystem.- 10.1.5 Kommunikationslatenz.- 10.1.6 Die Grundaufgabe des Verbindungsnetzes.- 10.1.7 Synchronisation zur korrekten Programmausführung.- 10.1.8 Strategien der Zuweisung der Aufträge zu den Knoten.- 10.2 Verbindungsnetz-Topologien.- 10.2.1 Kriterien für eine Taxonomie von Verbindungsnetzen.- 10.2.2 Beispiele für Verbindungsnetze.- 10.2.3 Busverbindungen.- 10.2.4 Ringstrukturen.- 20.2.5 Gitterverbindungen (Nächste Nachbarn).- 20.2.6 Mehrstufige Verbindungsnetze.- 10.2.7 Hyperwürfel.- 10 2 8 Hierarchien von Crossbars.- 10.2.9 Eins-zu-N-Kommunikation in Verbindungsnetzen (Broadcast).- 10.3 Verhaltensparameter von Verbindungsnetzen.- 10.3.1 Benötigte Verbindungsbandbreite.- 10.3.2 Aufwand und Verbindungslatenz.- 10.3.3 Blockierungsverhalten.- 10.4 Übersicht über die behandelten MIMD-Architekturen.- Literatur zu Kapitel 10.- 11 Systeme mit gemeinsamem Speicher.- 11.1 Schleifen-Parallelisierung.- 11.1.1 Das Ausführungsmodell.- 11.1.2 Das PAX-Protokoll.- 11.1.3 Der Parallelrechner Alliant FX/2800.- 11.2 Speicherkopplung mit vielen Kontrollfäden.- 11.2.1 Gründe für diese Architekturform.- 11.2.2 HEP-ArchitekturundTERA-Maschine.- 11.2.3 Die PRAM-Architektur.- 11.3 MIMD-Architekturen mit verteiltem gemeinsamem Speicher.- 11.3.1 Das Operationsprinzip.- 11.3.2 Beispiel: Die DASH-Architektur.- 11.4 Vielfadige Architekturen mit verteiltem Speicher.- 11.4.1 Gründe für vielfädige Architekturen.- 11.4.2 Das Operationsprinzip der vielfädigen architekturen.- 11.4.3 Maßnahmen für schnelle Umgebungswechsel.- 11.4.4 Herstellung des globalen adreßraums.- 11 4.5 Die *T-Maschine.- 11.4.6 Programmierbeispiel für die *T-Maschine.- 11.4.7 Der *T-Prozessor 88110MP.- Literatur zu Kapitel 11.- 12 MIMD-Architekturen mit verteiltem Speicher.- 12.1 Die großen Herausforderungen.- 12.2 Die Knotenarchitektur.- 12.2.1 Superskalare Knoten oder Vektorknoten?.- 12.2.2 Der Kommunikationsprozessor.- 12.2.3 Multiprozessor-Knoten.- 12.3 Verbindungsnetze für massiv-parallele Rechner.- 12.3.1 Crossbar-Topologien.- 12.3.2 Anschluß des Knotens.- 12.4 Synchrone oder asynchrone Kommunikation?.- 12.5 Das parallele Knoten-Betriebssystem.- 12.5.1 Die Rolle des Betriebssystems in nachrichtenorientierten Systemen.- 12.5.2 Die Struktur des parallelen Betriebssystems PEACE.- 12.5.3 Implementierung.- 12.5.4 Die PEACE-Familie von Betriebssystemkernen.- 12.6 Der virtuelle gemeinsame Speicher (VGS).- 12.6.1 Das Operationsprinzip des virtuellen gemeinsamen Speichers.- 12.6.2 Architekturen mit virtuellem gemeinsamem Speicher.- 12.6.3 Ein Realisierungsmodell für sequentielle Konsistenz.- 12.6.4 Adaptive Konsistenz.- 12.7 Die Programmierung nachrichtenorientierter Systeme.- 12.7.1 Das nachrichtenorientierte Programmiermodell.- 12.7.2 Programmierwerkzeuge für nachrichtenorientierte Architekturen.- 12.7.3 Parallelisierende Compiler.- 12.8 Ausblick: Neue Programmiermodelle für massiv-parallele Systeme.- Literatur zu Kapitel 12.- Sach-und Namensverzeichnis.