Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Shared Memory Programmierung: Grundlagen

Ähnliche Präsentationen


Präsentation zum Thema: "Shared Memory Programmierung: Grundlagen"—  Präsentation transkript:

1 Shared Memory Programmierung: Grundlagen
Architektur Programmiermodell Sprachmittel Shared Memory Programmierung: Grundlagen

2 Klassifikation von Parallelrechnern
MIMD SIMD Shared Memory Distributed Memory Array Processor Vector Processor Shared Memory Programmierung: Grundlagen

3 Flynn – Taxonomie: Kontrollfluß
SISD : Single Instruction Stream – Single Data Stream eine Instruktion nach der anderen operiert auf jeweils einem Datenwert SIMD : Single Instruction Stream – Multiple Data Stream eine Instruktion nach der anderen operiert auf jeweils mehreren Datenwerten MIMD : Multiple Instruction Stream – Multiple Data Stream mehrere Instruktion operieren gleichzeitig auf eigenen Datenwerten Shared Memory Programmierung: Grundlagen

4 SISD Rechner-Klassifikation nach Flynn IE RE Single Instruction Stream
Abstrakte Beschreibung von Datenverarbeitung: Rechenwerke führen Instruktionen auf Daten aus Sequentieller Rechner : IE + RE IE RE Single Instruction Stream Single Data Stream SISD Shared Memory Programmierung: Grundlagen

5 SIMD Rechner-Klassifikation nach Flynn (2) IE RE1 RE2 RE3
Parallelrechner 1 : IE + RE1 + RE2 + RE IE RE1 RE2 RE3 Single Instruction Stream Multiple Data Streams SIMD Shared Memory Programmierung: Grundlagen

6 MIMD Rechner-Klassifikation nach Flynn (3) IE1 RE1 IE2 RE2 IE3 RE3
Parallelrechner 2 : IE1 + RE1 + IE2 + RE2 + IE3 + RE IE1 RE1 IE2 RE2 IE3 RE3 Multiple Instruction Streams Multiple Data Streams MIMD Shared Memory Programmierung: Grundlagen

7 ... SIMD-Rechner 1: Feldrechner IE P P P S S S globaler Speicher
Beispiele: ICL DAP (Distributed Array Processor) (4096 1bit Proz.) Thinking Machine CM2, CM5 (1bit Proz., 32bit Proz.) MassPar (4bit Proc.) jeder RISC-Prozessor mit 2 Fließkomma-Einheiten (Pentium4) Shared Memory Programmierung: Grundlagen

8 SIMD-Rechner 2: Vektorrechner
globaler Speicher IE RE: Pipeline mit unabhängigen Segmenten - Fließbandverarbeitung Beispiele: Cray T90, J90, SV1 NEC SX4 jeder RISC-Prozessor mit mehrstufigen Fließkomma- Einheiten (Pentium4) Shared Memory Programmierung: Grundlagen

9 Shared Memory Programmierung: Grundlagen
SIMD Parallelität Single Instruction Stream - Multiple Data Stream Vektor-Rechner Feld-Rechner Shared Memory Programmierung: Grundlagen

10 Shared Memory Programmierung: Grundlagen
MIMD Parallelität Multiple Instruction Stream - Multiple Data Stream Rechner mit gemeinsamem Speicher Rechner mit verteiltem Speicher Shared Memory Programmierung: Grundlagen

11 Hybrid-Systeme: Cluster von SMP-Knoten
Shared Memory Programmierung: Grundlagen

12 Kopplung in Systemen mit gemeinsamem Speicher
Bus serialisierter Speicherzugriff nicht skalierbar geringe Latenz Schalter simultaner Speicherzugriff (bei günstiger Datenverteilung) skalierbar höhere Latenz Shared Memory Programmierung: Grundlagen

13 Shared Memory Programmierung: Grundlagen
Cache - Kohärenz P0 : Lese a P0 : schreibe a P1 : Lese b P1 : Lese a Speicher a b c d a b c d Cache a b c d a b c d a b c d a b c d CPU a b a Shared Memory Programmierung: Grundlagen

14 IBM p690 mit 32 Power4 Prozessoren
Shared Memory Programmierung: Grundlagen

15 Programmiermodell: Sequentiell (von Neumann)
Speicher Instruktionen Daten Objekte: Daten, Instruktionen, PZ Operationen: opcode op1, op2,...,re1,re2 Reihenfolge: sequentiell Programmzähler Verarbeitungseinheit (CPU) Instruktionseinheit Recheneinheit Shared Memory Programmierung: Grundlagen

16 Programmiermodell: shared memory
Mehrere Kontrollflüsse (threads) Objekte: Globale Daten, Instruktionen, Lokale PZs, thread-ID Operationen: opcode op1, op2,...,re1,re2 ununterbrechbare Ops. Reihenfolge: Sequentiell im einzelnen thread, CREW (concurrent read, exclusive write) Speicher Instruktionen Daten PZ0 PZ1 PZ3 VE0 VE1 VE2 Shared Memory Programmierung: Grundlagen

17 Shared Memory Programmierung: Grundlagen
Beispielprogramm Sequentiell 1 s = 0 2 call work1(a) 3 s = s + a 4 call work2(b) 5 s = s + b 6 stop Parallel 1 s = 0 2 wenn tid = 0 PZ = 5 3 wenn tid = 1 PZ = 8 4 PZ = 10 5 call work1(a) 6 s = s + a 7 PZ = 10 8 call work2(b) 9 s = s + b 10 stop thread0 : – 10 thread1 : Instruktionsfolge: Shared Memory Programmierung: Grundlagen

18 Shared Memory Programmierung: Grundlagen
race condition 6-1 lade s -> reg 6 s = s + a reg = reg + a 6-3 speichere reg -> s thread0 thread1 6-1 6-2 6-3 9-1 9-2 9-3 s = a + b thread0 thread1 6-3 9-3 s = b thread0 thread1 9-3 6-3 s = a Zeit Shared Memory Programmierung: Grundlagen

19 Shared Memory Programmierung: Grundlagen
Barriere Voraussetzung: bar = bar + 1 ist ununterbrechbar bar = bar - 1 ist ununterbrechbar bar = 0 bei Programmstart nt = Zahl der Threads ist bekannt bar = bar + 1 wenn bar < nt PZ = 2 bar = bar -1 wenn bar > 0 PZ = 4 Shared Memory Programmierung: Grundlagen

20 Sprachmittel zur Erleichterung der shared memory Programmierung
Erzeugung und Kontrolle von threads Synchronisation von threads mutual exclusion (mutex) Private Speicherbereiche Standardisierte Sprachmittel: Posix threads OpenMP Shared Memory Programmierung: Grundlagen


Herunterladen ppt "Shared Memory Programmierung: Grundlagen"

Ähnliche Präsentationen


Google-Anzeigen