Concurrent & Distributed Systems Flashcards
Aus welchen Teileinheiten besteht ein Prozessor? Erkläre diese.
Steuerwerk - Steuerung der Programmausführung
ALU (Arithmetisch-Logische Einheit, Rechenwerk) - führt Berechnungen durch für Dinge in Registern
(Allgemeine) Register: Schneller Zwischenspeicher von Daten
Spezielle Register:
Befehlszähler (BZ): Zeigt auf aktuellen Befehl im Speicher
Befehlsregister (BR): Zwischenspeicher für aktuellen Befehl
Statusregister (SR): Abspeichern von charakteristischen Eigenschaften des Ergebnisses der letzten ALU-Operation
Was verarbeitet ein Prozessor?
Der Prozessor verarbeitet die einzelnen Befehle eines Befehlssatzes (Menge der Maschinenbefehle) - diese enthalten meist einen Opcode und einen oder mehrere Operanden
Was ist der Von-Neumann-Zyklus? Erkläre diesen näher.
= Prinzip der sequentiellen Programmausführung
1) Fetch –> hol nächsten Befehl aus dem Speicher entsprechend der Adresse im Befehlszähler
2) Decode –> Befehl wird durch Steuerwerk in Schaltinstruktionen für das Rechenwerk aufgelöst
3) Fetch Operands -> schaut sich Operanden an, holt dese aus dem Hauptspeicher (Operanden = Parameter)
4) Execute -> Operation wird ausgeführt
5) Write Back -> Wenn notwendig, wird Ergebnis der Berechnung in den Hauptspeicher zurückgeschrieben
Was sind Vor- und Nachteile der Von-Neumann-Architektur?
+ Streng sequentieller Ablauf vereinfacht Programmierung
- Daten- und Adressbus werden zum Engpass (Bottleneck) zwischen Prozessor und Speicher (wenn Bus nicht schnell genug ist, kommt es zu Performance-Problemen - immer nur eine Sache auf einmal)
Was besagt Moore’s Law?
Verdopplung der Transistorzahl alle 18 Monate, also dass sich die Komplexität der CPUs verdoppelt alle 18 Monate
Was sind die Grenzen der Leistungssteigerung?
Taktraten der CPUs können nicht beliebig erhöht werden (kleine physikalische Größen von Systemen)
CPU <–> Arbeitsspeicher Bandbreite ist begrenzt (RAM kann mit Geschwindigkeit der CPUs nicht mithalten)
Wie sind Prozessoren mit mehreren Kernen aufgebaut?
= Mikroprozessoren mit mehreren vollständigen CPUs - jeder Kern hat eine eigene ALU und einen eigenen individuellen Speicher, was die Parallelisierung der Programmausführung erleichtert
Wie sieht die Speicherhierarchie in modernen Computern aus?
Register - 300 ps (1 KB)
L1 Cache - 1 ns (64 KB)
L2 Cache - 3 - 10 ns (256 KB)
L3 Cache - 10 - 20 ns (2 - 4 MB)
Arbeitsspeicher - 50 - 100 ns (4 - 64 GB)
Hauptspeicher - 5 - 10 ms (4 - 16 TB)
Was sind Cache-Lines?
Wenn Daten aus dem Speicher geholt werden, dann in Form von Cache-Lines - diese halten 64 Byte und holen immer diese Größe von Daten: wenn man Matrizen z.B. Zeilenweise einliest, so ist dies viel schneller als wenn man diese spaltenweise einliest
Was ist Concurrency (Nebenläufigkeit)?
Es werden mehrere Aufgaben gleichzeitig ausgeführt, aber ein Kern führt mehrere Tasks gleichzeitig durch (Multitasking)
Was ist Parallele Verarbeitung?
Ein Rechner mit einer parallelen Architektur kann Operationen gleichzeitig auf mehrere Haupt- oder Grafikprozessoren durchführen
Was ist Shared Memory?
= Geteilter Speicher
Alle Kerne haben Zugriff auf den selben gemeinsamen Speicher
Was ist Distributed Memory?
Alle Kerne haben ihren eigenen lokalen Speicher und sind über ein Kommunikationsnetzwerk (Interconnet) miteinander verbunden
Was ist Amdahls Law? Wie lautet die Formel?
Das Gesetz wird im Bereich des parallelen Rechnen benutzt zur Festlegung der theoretisch maximal erreichbren Speedups
Jedes Problem hat einen sequentiellen Anteil, der nicht parallelisiert werden kann - ist der sequentielle Anteil 0, ist das Problem vollständig parallel ausführbar -> der parallel auführbare Anteil des Problem ergibt sich aus (1 - f)
Die gesamte Laufzeit des Algorithmus ergibt sich aus dem sequentiellen Anteil plus dem parallelen Anteil
Formel:
Speedup = 1 / (f + (1 - f) / p)
f = sequentieller Anteil
p = Anzahl der Prozessoren
Welche Kritik gibt es an Amdahls Law?
Effekte durch Caches in der CPU bleiben unberücksichtigt
Problemgröße verändert sich nicht
Zu welchem Problemen kann es bei der Parallelisierung kommen?
Kommunikation zwischen Prozessen ist ein Problem
Race Condition: Bug, wenn Operationen zeitlich abhängig von anderen Threads sind und das Ergebnis einer Operation beeinflussen (zeitliche Ausführung kann bei Threads nicht garantiert werden)
Data Race: Zwei Threads greifen zur selben Zeit auf gleiche Daten zu und verändern diese
Deadlock / Verklemmung: Zwei Prozesse warten gegenseitig auf ein Ergebnis vom anderen Prozess und es kommt zu einem Stillstand
Was bedeutet thread-safety?
Ein Programm oder eine Methode ist thread-sicher, wenn es keine Unbestimmtkeit gegenüber irgendeinem Multithreading Szenario aufweist.
Wie kann ein Data Race gelöst werden?
Mit Sperrsynchronisation mitteln Locking