Grundkomponenten eines Computersystems
Definition:
Grundlegende Einheiten, die für das Funktionieren eines Computers unerlässlich sind.
Details:
- CPU (Central Processing Unit): Hauptprozessor, führt Berechnungen durch
- RAM (Random Access Memory): flüchtiger Speicher, speichert temporäre Daten und Programme
- Massen-/Sekundärspeicher: nicht-flüchtiger Speicher für permanente Daten, z.B. Festplatte, SSD
- E/A-Geräte (Eingabe/Ausgabe): Maus, Tastatur, Monitor und Drucker
- Mainboard: verbindet alle Komponenten, enthält Busse und Schnittstellen
- Netzteil: versorgt das System mit Strom
Funktionsweise von CPU, Speicher und I/O-Systemen
Definition:
Interaktion der Komponenten: CPU führt Berechnungen durch, Speicher speichert Daten und Programme, I/O-Systeme ermöglichen Kommunikation mit externen Geräten.
Details:
- CPU: zentrale Verarbeitungseinheit, führt Befehle anhand des Maschinenzyklus aus (Fetch, Decode, Execute, Writeback)
- Speicher: Beinhaltet RAM (flüchtig, schneller Zugriff) und ROM (nicht-flüchtig, langsamer), Cache-Speicher für schnellen Zugriff
- I/O-Systeme: Schnittstelle für externe Geräte, steuern Datenfluss zwischen CPU, Speicher und externen Hardware-Komponenten
- Bus-System: Datenbus (Datenübertragung), Adressbus (Adressierung), Kontrollbus (Steuerung)
Pipeline-Architekturen und Superskalarität
Definition:
Pipeline-Architekturen verbessern die Instruktionsdurchsatzrate durch parallele Bearbeitung verschiedener Befehlsphasen. Superskalare Architekturen erweitern dieses Konzept, indem sie mehrere Pipelines verwenden, um mehrere Befehle gleichzeitig zu verarbeiten.
Details:
- Pipelining: Aufteilung eines Befehls in mehrere Stufen. Jeder Stufe arbeitet parallel an verschiedenen Befehlen.
- Phasen eines Pipelines:
- IF (Instruction Fetch)
- ID (Instruction Decode)
- EX (Execute)
- MEM (Memory Access)
- WB (Write Back)
- Hazards: Konflikte in der Pipeline (Daten-, Struktur-, Steuerhazards).
- Superskalarität: Mehrere Pipelines oder funktionale Einheiten pro Taktzyklus.
- ILP (Instruction-Level Parallelism): Gleichzeitige Ausführung mehrerer Befehle durch Prozessor-Architektur.
Cache-Kohärenz und Speicheroptimierung
Definition:
Konsistenz der Daten in mehreren Caches und Effizienz im Speicherzugriff.
Details:
- Cache-Kohärenz-Protokolle: MESI, MOESI.
- Race Conditions und atomare Operationen.
- False Sharing vermeiden.
- Prefetching-Strategien.
- Speicheranpassung: Datenalignment, Stride-Häufigkeit.
- Verwendung lokaler Variablen für Stack-Optimierung.
- Zwischenspeicherung wiederverwendeter Daten.
Einführung in RISC und CISC Architekturen
Definition:
Kurze Einführung in die grundlegenden Unterschiede zwischen RISC (Reduced Instruction Set Computer) und CISC (Complex Instruction Set Computer) Architekturen, wie in der Vorlesung 'Grundlagenpraktikum: Rechnerarchitektur' behandelt.
Details:
- RISC: Weniger, einfachere Befehle, die meist in einem Taktzyklus ausgeführt werden können.
- CISC: Komplexere Befehle, die möglicherweise mehrere Taktzyklen benötigen.
- RISC-Architekturen: Fokussieren auf Effizienz und Performance durch eine reduzierte Befehlssatzarchitektur.
- CISC-Architekturen: Fokussieren auf eine vielseitigere und komplexere Befehlsstruktur zur Minimierung der Programmgröße.
- Beispiele RISC: ARM, MIPS
- Beispiele CISC: x86
- Entwurfsstrategien: RISC zielt auf Hardwarevereinfachung und hohe Ausführungsgeschwindigkeit, CISC auf Hardwareeffizienz und Programmvereinfachung.
- RISC nutzt häufiger Register, während CISC oft speicherzugriffsintensive Operationen hat.
Virtualisierung und Paging-Mechanismen
Definition:
Virtualisierung ermöglicht die Abstraktion von hardwarebezogenen Ressourcen, während Paging für die Speicherverwaltung mittels gleichgroßer Blöcke sorgt.
Details:
- Virtualisierung: multiple virtuelle Maschinen (VMs) auf einer Hardware.
- Paging: Aufteilung des physikalischen Speichers in fixe Seiten (Pages) und Zuordnung zu virtuellen Speicheradressen.
- Page Table: Datenstruktur zur Verwaltung der Seitentabellen.
- MMU (Memory Management Unit): Wandelt virtuelle Adressen in physikalische Adressen um.
- Page Fault: Tritt auf, wenn eine virtuelle Adresse keine zugeordnete physische Speicherseite hat.
Algorithmen für parallele Verarbeitung
Definition:
Algorithmen, die entwickelt wurden, um Aufgaben gleichzeitig auf mehreren Prozessoren oder Rechenkernen auszuführen, um Effizienz und Geschwindigkeit zu erhöhen.
Details:
- Teile-und-herrsche-Strategien nutzen
- Mit Lastverteilung und Synchronisation befassen
- Wichtig: Vermeidung von Race Conditions und Deadlocks
- Modellierung: PRAM (Parallel Random Access Machine)
- Wichtige Konzepte: Parallelitäten, Datenabhängigkeiten, Kommunikationskosten und Skalierbarkeit
- Beispiele: Parallelisierung von Matrixmultiplikation, Sortieralgorithmen (z.B. paralleler Quicksort)
Optimierung von Assembly-Code
Definition:
Optimierung von Assembly-Code verbessert die Effizienz und Leistung von Programmen durch manuelle Anpassungen auf Assembler-Ebene.
Details:
- Kritische Pfade identifizieren und optimieren.
- Register optimal nutzen.
- Schleifen unrollen (Loop Unrolling).
- Instruktionen parallelisieren, wo möglich.
- Spezifische Prozessor-Instruktionen (z.B. SIMD) verwenden.
- Unnötige Instruktionen vermeiden.
- Pipeline-Effizienz sicherstellen.
- Datenabhängigkeiten minimieren.