Beschleunigung und Parallelität Flashcards
Klassifikation von Speichern
- Volatilität:
- flüchtig: Betriebsspannung weg = Datenweg
- nicht flüchtig: Speicher weg = Daten noch da
- Zugriffsart:
- wahlfrei: Festplatte - man kann an beliebige Stelle im Speicher gehen
- sequentiell: Magnetband - Spulen nötig
Speicherorganisation
Klassifikationsparameter
- Zugriffszeit: Zeit zwischen Anforderung eines Lesezugriffs und Eintreffen des Inhalts der adressierten Speicherzelle am Speicherausgang
- Kosten pro Bit
► sind gegenläufig → Optimierungsproblem
Cache
Lokalitätsprinzip
= heuristisches Prinzip, das sich mit einiger Wahrscheinlichkeit aus abgelaufenen Programmteil auf den folgenden schließen lässt, da komplexe Datenstrukturen im Speicher dicht hintereinander gespeichert sind und sequentiell aufeinanderfolgende Befehle dicht sequentiell gespeichert sind
-
Zeitliche Lokalität:
- Betrachtung einer Zelle
- Zugriff auf eine Speicherzelle lässt es erwarten, dass bald wieder auf sie zugegriffen wird → im Zwischenspeicher behalten
-
Räumliche Lokalität
- Betrachtung benachbarter Zellen
- Zugriff auf eine Speicherzelle lässt baldigen Zugriff auf benachbarte Speicherzellen erwarten
Speicherhierarchien
Optimierungskriterien:
- minimale Zugriffszeit
- minimale Kosten pro gespeicherten Bit
je teurer der Speicher, desto weniger ist davon im Rechner → Speicherhierarchie
Cache
Weitere Verwendung des Cache-Prinzips
-
Hardware
- Pufferspeicher der MMU (Memory Management Unit)
- übersetzt von virtuellen Adressen zu physischen Adressen
- ermöglicht Zugriff auf gesamten virtuellen Adressraum
- lokaler Pufferspeicher bei peripheren Geräten (Netzwerkschnittstelle, Festplatte)
- Sprungvorhersage in der Pipelinesteuerlogik der CPU
- Pufferspeicher der MMU (Memory Management Unit)
-
Software
- Pufferspeicher des Betriebssystems
- Pufferspeicher für Datenbanken
- Browser laden (Unter-)Seiten vor ihrer Anforderung
Cacheleistung
- Zugriffszeiten geringer als auf Hauptspeicher
- h = hit rate (Trefferrate in %): Anteil aller Speicherzugriffe, bei denen die gewünschte Information im Cache verfügbar ist
- Niete (miss): Information im Cache nicht gefunden
- Teff = effektive Zugriffszeit
- TC = Zugriffszeit des Cache
- TM = Zugriffszeit des Hauptspeichers
Amdahls Gesetz
- Modell über die Beschleunigung von Programmen durch parallele Ausführung
- zu parallelisierendes Programm = parallelisierbarer + nicht parallelisierbarer/sequentieller Code
- P = Anteil der Laufzeit der parallelen Teilstücke eine Programms
- (1 - P) = sequentieller Anteil
- Gesamtlaufzeit: 1 = (1 - P) + P
- mehr Prozessoren: t = (1 - P) + P/n
Amdahls Gesetz
Schlussfolgerungen
- Beschleunigung wird vor allem durch sequentiellen Teil beschränkt
- Maximum: 1 / (1 - P)
- Mindeslaufzeit eines Programms:
- (Laufzeit bei einem Prozessor) / Maximum des SpeedUp)
- umso mehr Prozessoren
- desto kleiner (1 - P) + P/n
- desto größer SpeedUp
Erweiterung von Amdahls Gesetz
-
zusätzliche Kosten o(N) steigen monoton mit Prozessorenzahl
- Aufwand durch Aufteilung auf mehrere Prozessoren
- zusätzlicher Aufwand durch Kommunikation/Datentransfer
- die Funktion konvergiert nicht mehr gegen (1 / (1 - P)), sondern erreicht ein Maximum, um dahinter wieder abzufallen
Amdahls Gesetz
Amdahls Gesetz bei Prozessanpassungen
Gesetz kann auch für potentielle Verbesserung durch Teilanpassungen in Systemen angewandt werden
Parallelität
2 Arten
-
zeitliche Parallelität
- Aufgabe wird in mehrere Unteraufgaben unterteilt
- Unteraufgaben werden parallel ausgeführt
- auch genannt: Pipelining
-
räumliche Parallelität
- vervielfachte Hardware bearbeitet mehrere Aufgaben gleichzeitig
- Zusammenschalten mehrerer kleinerer Computer realisiert leistungsfähigeren Computer
zeitliche Parallelität
- durch Datenflussanalyse von Algorithmen
- Steuerflussabhängigkeit
- Datenflussabhängigkeit
- jedes Programm hat Potential für Parallelität
- Ziel: Operationen finden, die nicht zwingend in der Reihenfolge ausgeführt werden müssen, in der sie im Programmtext stehen
- Kosten: Analyseaufwand
- je nachdem wie viel parallel ausgeführt werden soll, so viel ALUs braucht man
zeitliche Parallelität
Steuerflussabhängigkeit
= control
v1 (x) →c v2 (y)
Ausführung von Zeile x entscheidet über Ausführung von Zeile y
z.B. IF - ELSE
zeitliche Parallelität
Datenflussabhängigkeit
es gibt wenigstens eine Variable z, auf die in beiden Anweisungen x und y zugegriffen wird
- echte Datenflussabhängigkeit = true:
- 1. schreibend → 2. lesend
- v1 (x) →t v2 (y)
- Ausgangsdatenabhängigkeit = output:
- 1. schreibend → 2. schreibend
- v1 (x) →o v2 (y)
- Anti-Datenabhängigkeit = anti:
- 1. lesend → 2. schreibend
- v1 (x) →a v2 (y)
- durch Pipelining ist bei gleichen Taktzyklus paralleles Ausführen möglich