Log In
Or create an account -> 
Imperial Library
  • Home
  • About
  • News
  • Upload
  • Forum
  • Help
  • Login/SignUp

Index
Title Page Copyright Contents Vorwort zur englischsprachigen Originalausgabe
Zu diesem Buch
Das andere Buch Änderungen für die 6. Auflage Unterstützung für Lehrende Abschließende Bemerkungen Danksagungen für die 6. Auflage
1 Abstraktionen und Technologien
1.1 Einführung
Computerklassen und ihre Eigenschaften Willkommen in der Post-PC-Ära Was Sie in diesem Buch lernen können
1.2 Sieben große Ideen in der Computerarchitektur
Vereinfachung des Designs durch Abstraktion Beschleunigen des häufigen Falls Performanz durch Parallelität Performanz durch Pipelining Performanz durch Vorhersagen Speicherhierarchie Zuverlässigkeit durch Redundanz
1.3 Was sich hinter einem Programm verbirgt
Höhere Programmiersprachen und Maschinensprache
1.4 Unter der Haube
Hinter dem Spiegel Touchscreen Öffnen des Gehäuses Ein sicherer Ort für Daten Kommunikation mit anderen Computern
1.5 Prozessorherstellung und Speichertechnologien
Selbsttest
1.6 Leistung
Leistung definieren Leistung messen CPU-Leistung und ihre Parameter Befehlsleistung Die klassische Gleichung für die CPU-Leistung
1.7 Die Hürde des Stromverbrauchs
Beispiel: Relativer Stromverbrauch
1.8 Eine grundlegende Veränderung: Der Wechsel von Einzelprozessoren zu Multiprozessoren
Hardware-Software-Schnittstelle
1.9 Fallstudie: Benchmarking des Intel Core i7
SPEC-CPU-Benchmark Eine Benchmark für die Energieeffizienz: SPECpower
1.10 Beschleunigung: Matrixmultiplikation in Python 1.11 Fallstricke und Trugschlüsse
Selbsttest
1.12 Schlussbetrachtungen
Grundwissen
Übersicht über dieses Buch 1.13 Historische Perspektiven und Literaturhinweise 1.14 Fragestellungen für das Selbststudium
Antworten
1.15 Aufgaben
Aufgabe 1.1 Aufgabe 1.2 Aufgabe 1.3 Aufgabe 1.4 Aufgabe 1.5 Aufgabe 1.6 Aufgabe 1.7 Aufgabe 1.8 Aufgabe 1.9 Aufgabe 1.10 Aufgabe 1.11 Aufgabe 1.12 Aufgabe 1.13 Aufgabe 1.14 Aufgabe 1.15 Aufgabe 1.16 Antworten zu den Selbsttests
2 Befehle: Die Sprache des Rechners
2.1 Einführung 2.2 Operationen der Rechnerhardware
Beispiel: Übersetzen von zwei C-Anweisungen nach MIPS Beispiel: Übersetzen einer komplexen C-Zuweisung nach MIPS Selbsttest
2.3 Operanden der Rechnerhardware
Beispiel: Übersetzung einer Zuweisung in C mithilfe von Registern
Speicheroperanden
Beispiel: Zuweisung mit einem Operanden im Speicher übersetzen Hardware-Software-Schnittstelle Hardware-Software-Schnittstelle Beispiel: Übersetzen mit Lade- und Speicherbefehlen Hardware-Software-Schnittstelle
Konstanten oder Direktoperanden
Selbsttest
2.4 Vorzeichenbehaftete und nicht vorzeichenbehaftete Zahlen
Hardware-Software-Schnittstelle Beispiel: Umrechnung von Binärwerten in Dezimalwerte Hardware-Software-Schnittstelle Beispiel: Einfache Lösung für die Negation Beispiel: Einfache Lösung für die Vorzeichenerweiterung Zusammenfassung Selbsttest
2.5 Darstellung von Befehlen im Rechner
Beispiel: MIPS-Assemblerbefehl in Maschinenbefehl übersetzen Beispiel: Umrechnung von Binärzahlen in Hexadezimalzahlen
Die Felder im MIPS-Befehlsformat
Beispiel: MIPS-Assemblersprache in Maschinensprache übersetzen Hardware-Software-Schnittstelle Grundwissen Selbsttest
2.6 Logische Operationen
Selbsttest
2.7 Befehle zum Treffen von Entscheidungen
Beispiel: if-then-else in bedingte Verzweigung übersetzen Hardware-Software-Schnittstelle
Schleifen
Beispiel: Eine while-Schleife in C übersetzen Hardware-Software-Schnittstelle Hardware-Software-Schnittstelle Hardware-Software-Schnittstelle Beispiel: Vorzeichenbehafteter vs. vorzeichenloser Vergleich Beispiel: Abkürzung für die Überprüfung von Grenzen
Die case-/switch-Anweisung
Hardware-Software-Schnittstelle Selbsttest
2.8 Unterstützung von Prozeduren durch die Rechnerhardware
Verwendung weiterer Register Geschachtelte Prozeduren Speicherallokation für neue Daten im Keller Speicherallokation für neue Daten auf der Halde
2.9 Kommunikation mit Menschen
Beispiel: ASCII und Binärzahlen Beispiel: Prozedur zum Kopieren einer Zeichenfolge übersetzen
Zeichen und Zeichenketten in Java
Selbsttest Grundwissen
2.10 Umgang mit 32-Bit-Direktoperanden und 32-Bit-Adressen
32 -Bit-Direktoperanden Adressbildung bei Verzweigungen und Sprüngen MIPS-Adressierungsarten – eine Übersicht Decodieren der Maschinensprache
2.11 Parallelität und Befehle: Synchronisierung
Selbsttest
2.12 Übersetzen und Starten eines Programms
Compiler Assembler Binder Lader Dynamisch gebundene Bibliotheken (DLLs) Starten eines Java-Programms
2.13 Zusammenfassung am Beispiel eines Sortierprogramms in C
Die Prozedur swap Registerzuteilung für swap Die Prozedur sort
2.14 Felder und Zeiger im Vergleich
Die Version von clear mit Feldern Die Version von clear mit Zeigern Vergleich der beiden Versionen von clear
2.15 Fortgeschrittener Stoff: C-Compiler und Java-Interpreter 2.16 Fallstudie: ARMv7-Befehle (32 Bit)
Adressierungsmodi Vergleichen und bedingte Verzweigung Spezielle Funktionen von ARM
2.17 Fallstudie: ARMv8-Befehle (64 Bit) 2.18 Fallstudie: RISC-V-Befehle 2.19 Fallstudie: x86-Befehle
Die Entwicklung des Intel x86 x86-Register und Datenadressierungsarten x86-Integer-Operationen x86-Befehlscodierung x86 – Schlussbetrachtung
2.20 Beschleunigung: Matrixmultiplikation in C 2.21 Fallstricke und Trugschlüsse 2.22 Schlussbetrachtungen 2.23 Historische Perspektiven und Literaturhinweise 2.24 Fragestellungen für das Selbststudium
Antworten
2.25 Aufgaben
Aufgabe 2.1 Aufgabe 2.2 Aufgabe 2.3 Aufgabe 2.4 Aufgabe 2.5 Aufgabe 2.6 Aufgabe 2.7 Aufgabe 2.8 Aufgabe 2.9 Aufgabe 2.10 Aufgabe 2.11 Aufgabe 2.12 Aufgabe 2.13 Aufgabe 2.14 Aufgabe 2.15 Aufgabe 2.17 Aufgabe 2.18 Aufgabe 2.19 Aufgabe 2.21 Aufgabe 2.22 Aufgabe 2.23 Aufgabe 2.24 Aufgabe 2.25 Aufgabe 2.26 Aufgabe 2.27 Aufgabe 2.28 Aufgabe 2.29 Aufgabe 2.30 Aufgabe 2.31 Aufgabe 2.32 Aufgabe 2.33 Aufgabe 2.34 Aufgabe 2.35 Aufgabe 2.36 Aufgabe 2.37 Aufgabe 2.38 Aufgabe 2.39 Aufgabe 2.40 Aufgabe 2.41 Aufgabe 2.42 Antworten zu den Selbsttests
3 Rechnerarithmetik
3.1 Einführung 3.2 Addition und Subtraktion
Beispiel: Binäre Addition und Subtraktion Hardware-Software-Schnittstelle
Zusammenfassung
Selbsttest
3.3 Multiplikation
Sequentielle Version des Multiplikationsalgorithmus und der Multiplikationshardware Multiplikation mit Vorzeichen Schnellere Multiplikation Multiplikation bei MIPS Zusammenfassung
3.4 Division
Ein Divisionsalgorithmus und eine Divisionshardware Division für vorzeichenbehaftete Zahlen Schnellere Division Division bei MIPS Zusammenfassung
3.5 Gleitkommaarithmetik
Gleitkommadarstellung Addition von Gleitkommazahlen Multiplikation von Gleitkommazahlen Gleitkommabefehle im MIPS-Befehlssatz Genaue Arithmetik Zusammenfassung
3.6 Parallelität und Computerarithmetik: Subwort-Parallelität 3.7 Fallstudie: Streaming-SIMD-Erweiterungen und fortgeschrittene Vektorerweiterungen für x86 3.8 Beschleunigung: Subwort-Parallelität und Matrixmultiplikation 3.9 Fallstricke und Trugschlüsse 3.10 Schlussbetrachtungen 3.11 Historische Perspektiven und Literaturhinweise 3.12 Fragestellungen für das Selbststudium
Antworten
3.13 Aufgaben
Aufgabe 3.1 Aufgabe 3.2 Aufgabe 3.3 Aufgabe 3.4 Aufgabe 3.5 Aufgabe 3.6 Aufgabe 3.7 Aufgabe 3.8 Aufgabe 3.9 Aufgabe 3.10 Aufgabe 3.11 Aufgabe 3.12 Aufgabe 3.13 Aufgabe 3.14 Aufgabe 3.15 Aufgabe 3.16 Aufgabe 3.17 Aufgabe 3.18 Aufgabe 3.19 Aufgabe 3.20 Aufgabe 3.21 Aufgabe 3.22 Aufgabe 3.23 Aufgabe 3.24 Aufgabe 3.25 Aufgabe 3.26 Aufgabe 3.27 Aufgabe 3.28 Aufgabe 3.29 Aufgabe 3.30 Aufgabe 3.31 Aufgabe 3.32 Aufgabe 3.33 Aufgabe 3.34 Aufgabe 3.35 Aufgabe 3.36 Aufgabe 3.37 Aufgabe 3.38 Aufgabe 3.39 Aufgabe 3.40 Aufgabe 3.41 Aufgabe 3.42 Aufgabe 3.43 Aufgabe 3.44 Aufgabe 3.45 Aufgabe 3.46 Aufgabe 3.47 Antworten zu den Selbsttests
4 Der Prozessor
4.1 Einführung
Eine einfache MIPS-Implementierung
4.2 Konventionen für den Entwurf von Logikschaltungen
Taktverfahren Selbsttest
4.3 Aufbau eines Datenpfades
Entwurf eines einfachen Datenpfads
4.4 Eine einfache Implementierungsmethode
Die ALU-Steuerung Entwurf der Hauptsteuereinheit Warum die Eintaktimplementierung nicht mehr verwendet wird
4.5 Eine Mehrtaktimplementierung 4.6 Übersicht über die Technik des Pipelinings
Beispiel: Vergleich der Leistung eines sequentiellen Systems und eines Systems mit Pipelining
Entwurf von Befehlssätzen für das Pipelining Pipeline-Hemmnisse
Strukturkonflikt Datenkonflikte Beispiel: Forwarding mit zwei Befehlen Beispiel: Umordnen von Code zum Vermeiden von Pipelineleerläufen Steuerkonflikte Beispiel: Leistung des Sprungbefehls mit Leerlauf
Zusammenfassung: Die Technik des Pipelinings
Selbsttest Zur Programmperformanz Grundwissen
4.7 Pipelining von Datenpfad und Steuerwerk
Grafische Darstellung von Pipelines Pipelining der Steuerung
4.8 Datenkonflikte: Forwarding vs. Stalling
Beispiel: Erkennen von Abhängigkeiten
Pipelinehemmnisse durch Datenabhängigkeit und Pipelineverzögerungen
Grundwissen
4.9 Steuerkonflikte
Annahme, dass Sprünge nicht ausgeführt werden Reduktion der Verzögerung durch Sprünge Dynamische Sprungvorhersage Pipeline – Eine Zusammenfassung
4.10 Ausnahmebehandlung
Die Ausnahmebehandlung in der MIPS-Architektur Ausnahmen in einer Pipeline-Implementierung
4.11 Parallelität auf Befehlsebene
Das Prinzip der Spekulation Statische Mehrfachzuordnung Prozessoren mit dynamischer Mehrfachzuordnung Energieeffizienz und fortgeschrittenes Pipelining
4.12 Fallstudie: Intel Core i7 6700 und ARM Cortex-A53
Der ARM Cortex-A53 Performanz der A53-Pipeline Der Intel Core i7 6700 Die Performanz des Intel Core i7
4.13 Beschleunigung: Parallelität auf Befehlsebene und Matrixmultiplikation
Selbsttest
4.14 Fortgeschrittener Stoff: Einführung in den Schaltungsentwurf 4.15 Fallstricke und Trugschlüsse 4.16 Schlussbetrachtungen 4.17 Historische Perspektiven und Literaturhinweise 4.18 Fragestellungen für das Selbststudium
Antworten
4.19 Aufgaben
Aufgabe 4.1 Aufgabe 4.2 Aufgabe 4.3 Aufgabe 4.4 Aufgabe 4.5 Aufgabe 4.6 Aufgabe 4.7 Aufgabe 4.8 Aufgabe 4.9 Aufgabe 4.10 Aufgabe 4.11 Aufgabe 4.12 Aufgabe 4.13 Aufgabe 4.14 Aufgabe 4.15 Aufgabe 4.16 Aufgabe 4.17 Aufgabe 4.18 Aufgabe 4.19 Aufgabe 4.20 Aufgabe 4.21 Aufgabe 4.22 Aufgabe 4.23 Aufgabe 4.24 Aufgabe 4.25 Aufgabe 4.26 Aufgabe 4.27 Aufgabe 4.28 Aufgabe 4.29 Aufgabe 4.30 Aufgabe 4.31 Aufgabe 4.32 Aufgabe 4.33 Antworten zu den Selbsttests
5 Groß und schnell: Ausnutzung der Speicherhierarchie
5.1 Einführung
Grundwissen Selbsttest
5.2 Speichertechnologien
SRAM-Technologie DRAM-Technologie Flash-Speicher Festplattenspeicher
5.3 Grundlagen des Cachings
Grundwissen
Zugriff auf einen Cache
Beispiel: Anzahl der Bits in einem Cache Beispiel: Abbildung einer Adresse auf einen Cache-Block, der mehrere Wörter umfasst
Behandlung von Cache-Fehlzugriffen Behandlung von Schreiboperationen Ein Beispiel-Cache: Der Intrinsity-FastMATH-Prozessor Zusammenfassung
Selbsttest
5.4 Cache-Leistung messen und verbessern
Beispiel: Berechnung der Cache-Leistung Beispiel: Berechnung der mittleren Speicherzugriffszeit (AMAT)
Reduzierung von Cache-Fehlzugriffen durch eine flexiblere Platzierung von Blöcken
Beispiel: Fehlzugriffe und Assoziativität in Caches
Einen Block im Cache finden Auswahl, welcher Block ersetzt werden soll
Beispiel: Größe der Tags versus Satzassoziativität
Reduzierung des Fehlzugriffsaufwands durch Cache-Speicherhierarchien
Beispiel: Die Leistung von Cache-Speicherhierarchien Zur Programmperformanz
Softwareoptimierung durch Blocking
Selbsttest
Zusammenfassung 5.5 Zuverlässige Speicherhierarchie
Definition von Ausfällen Der Hamming-SEC/DED-Code
5.6 Virtuelle Maschinen
Hardware-Software-Schnittstelle
Anforderungen an einen VMM (Virtual Machine Monitor) (Fehlende) ISA-Unterstützung für virtuelle Maschinen Schutz und ISA 5.7 Virtueller Speicher
Eine Seite platzieren und wieder finden Seitenfehler Schreiboperationen Beschleunigung der Adressübersetzung: Der TLB Integration von virtuellem Speicher, TLBs und Caches Implementierung von Schutzmechanismen mit einem virtuellen Speicher Verarbeitung von TLB-Fehlzugriffen und Seitenfehlern Zusammenfassung
5.8 Allgemeines Schema der Speicherhierarchien
Frage 1: Wo kann ein Block platziert werden? Frage 2: Wie findet man einen Block? Frage 3: Welcher Block soll bei einem Cache-Fehlzugriff ersetzt werden? Frage 4: Was passiert bei einer Schreiboperation? Die drei Cs: Ein intuitives Modell für ein Verständnis des Verhaltens von Speicherhierarchien
5.9 Steuerung eines einfachen Caches mit einem endlichen Automaten
Ein einfacher Cache Endliche Automaten FSM für eine einfache Cache-Steuerung
5.10 Parallelität und Speicherhierarchien: Cache-Kohärenz
Grundlegende Vorgehensweisen für das Erzwingen der Kohärenz Snooping-Protokolle
5.11 Parallelität und Speicherhierarchie: RAID 5.12 Fortgeschrittener Stoff: Cache-Controller 5.13 Fallstudie: Speicherhierarchien des ARM Cortex-A53 und des Intel Core i7
Performanz der Speicherhierarchien des Cortex-A53 und des Core i7
5.14 Beschleunigung: Cache-Blocking und Matrixmultiplikation 5.15 Fallstricke und Trugschlüsse 5.16 Schlussbetrachtungen 5.17 Historische Perspektive und Literaturhinweise 5.18 Fragestellungen für das Selbststudium
Antworten
5.19 Aufgaben
Aufgabe 5.1 Aufgabe 5.2 Aufgabe 5.3 Aufgabe 5.4 Aufgabe 5.5 Aufgabe 5.6 Aufgabe 5.7 Aufgabe 5.8 Aufgabe 5.9 Aufgabe 5.10 Aufgabe 5.11 Aufgabe 5.12 Aufgabe 5.13 Aufgabe 5.14 Aufgabe 5.15 Aufgabe 5.16 Aufgabe 5.17 Aufgabe 5.18 Aufgabe 5.19 Aufgabe 5.20 Aufgabe 5.21 Aufgabe 5.22 Aufgabe 5.23 Aufgabe 5.24 Aufgabe 5.25 Aufgabe 5.26 Aufgabe 5.27 Aufgabe 5.28 Aufgabe 5.29 Antworten zu den Selbsttests
6 Parallele Prozessoren: Vom Client zur Cloud
6.1 Einführung
Selbsttest
6.2 Warum es schwierig ist, parallele Programme zu entwickeln
Beispiel: Das Beschleunigungsproblem Beispiel: Beschleunigungsproblem – nächste Stufe Beispiel: Herausforderung bei der Beschleunigung: Lastausgleich Selbsttest
6.3 SISD, MIMD, SIMD, SPMD und Vektor
SIMD in x86: Multimedia-Erweiterungen Vektor Vektor im Vergleich zu Skalar Vektor im Vergleich zu Multimedia-Erweiterungen
6.4 Hardwareseitiges Multithreading
Selbsttest
6.5 Multicores und andere Multiprozessoren mit gemeinsam genutztem Speicher
Beispiel: Einfaches paralleles Programm für einen gemeinsam genutzten Adressraum Hardware-Software-Schnittstelle Selbsttest
6.6 Grafikprozessoren (GPUs) – Einführung
Hardware-Software-Schnittstelle
NVIDIA GPU-Architektur – Einführung NVIDIA GPU-Speicherstrukturen GPUs ins rechte Licht gerückt
Selbsttest
6.7 Domänenspezifische Architekturen
Selbsttest
6.8 Cluster, Warehouse Scale Computer und andere Multiprozessoren mit Nachrichtenaustausch
Hardware-Software-Schnittstelle
Warehouse-Scale-Computer
Hardware-Software-Schnittstelle Selbsttest
6.9 Einführung in Multiprozessor-Netztopologien
Netzwerktopologien implementieren
6.10 Kommunikation mit der Außenwelt: Cluster 6.11 Multiprozessor-Benchmarks und Performanzmodelle
Performanzmodelle Das Roofline-Modell Vergleich von zwei Opteron-Generationen
6.12 Google TPUv3-Supercomputer und NVIDIA Volta GPU-Cluster: Benchmarks
Tiefe neuronale Netze: Training vs. Inferenz DSA-Supercomputernetz DSA-Supercomputerknoten DSA Arithmetik TPUv3 DSA vs. Volta GPU Leistung
6.13 Beschleunigung: Multiple Prozessoren und Matrixmultiplikation 6.14 Fallstricke und Trugschlüsse 6.15 Schlussbetrachtungen 6.16 Historische Perspektive und Literaturhinweise 6.17 Fragestellungen für das Selbststudium
Antworten
6.18 Aufgaben
Aufgabe 6.1 Aufgabe 6.2 Aufgabe 6.3 Aufgabe 6.4 Aufgabe 6.5 Aufgabe 6.6 Aufgabe 6.7 Aufgabe 6.8 Aufgabe 6.9 Aufgabe 6.10 Aufgabe 6.11 Aufgabe 6.12 Aufgabe 6.13 Aufgabe 6.14 Aufgabe 6.15 Aufgabe 6.16 Aufgabe 6.17 Aufgabe 6.18 Aufgabe 6.19 Aufgabe 6.20 Antworten zu den Selbsttests
Fachbegriffe Englisch — Deutsch
Englisch — Deutsch Deutsch — Englisch
Stichwortverzeichnis Back Matter
Notes
  • ← Prev
  • Back
  • Next →
  • ← Prev
  • Back
  • Next →

Chief Librarian: Las Zenow <zenow@riseup.net>
Fork the source code from gitlab
.

This is a mirror of the Tor onion service:
http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion