Parallel Computing Platforms



Ähnliche Dokumente
Proseminar Rechnerarchitekturen. Parallelcomputer: Multiprozessorsysteme

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Cache-Kohärenz und -Konsistenz. Betreuer: Prof. Brüning Veton Kajtazi Mat.-Nr.: Universität Heidelberg

2 Rechnerarchitekturen

Mikrocontroller Grundlagen. Markus Koch April 2011

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Johann Wolfgang Goethe-Universität

Einführung in die technische Informatik

IT-Infrastruktur, WS 2014/15, Hans-Georg Eßer

Projektseminar Parallele Programmierung

Softwarelösungen: Versuch 4

Die Marvel, ein gedrosselter Supercomputer

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Intel 80x86 symmetrische Multiprozessorsysteme. Eine Präsentation im Rahmen des Seminars Parallele Rechnerarchitekturen von Bernhard Witte

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Anleitung zur Nutzung des SharePort Utility

4D Server v12 64-bit Version BETA VERSION

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Lizenzierung von System Center 2012

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Teil VIII Von Neumann Rechner 1

Einführung in die Systemprogrammierung

Zeichen bei Zahlen entschlüsseln

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

Lizenzen auschecken. Was ist zu tun?

Formular»Fragenkatalog BIM-Server«

Grundlagen verteilter Systeme

Architektur von Parallelrechnern 50

Verwendung des IDS Backup Systems unter Windows 2000

Parallelrechner (1) Anwendungen: Simulation von komplexen physikalischen oder biochemischen Vorgängen Entwurfsunterstützung virtuelle Realität

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Lizenzierung von Windows Server 2012

I N F O R M A T I O N V I R T U A L I S I E R U N G. Wir schützen Ihre Unternehmenswerte

Grundlagen der Parallelisierung

Die allerwichtigsten Raid Systeme

Fragen zur GridVis MSSQL-Server

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Die Mikroprogrammebene eines Rechners

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

Rechnerstrukturen. 6. System. Systemebene. Rechnerstrukturen Wintersemester 2002/03. (c) Peter Sturm, Universität Trier 1. Prozessor.

! " # $ " % & Nicki Wruck worldwidewruck

WINDOWS 8 WINDOWS SERVER 2012

peer-to-peer Dateisystem Synchronisation

Rechner Architektur. Martin Gülck

4.1 Download der App über den Play Store

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Nutzung von GiS BasePac 8 im Netzwerk

2. Braunschweiger Linux-Tage. Vortrag über RAID. von. Thomas King Braunschweiger Linux-Tage Seite 1/16

Schritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player

Wir unterscheiden folgende drei Schritte im Design paralleler Algorithmen:

WIE ERHÖHT MAN DIE EFFIZIENZ DES BESTEHENDEN RECHENZENTRUMS UM 75% AK Data Center - eco e.v. 1. Dezember 2009

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

SharePoint Demonstration

Raytracing auf Desktop PCs Optimizing Cache Usage (Intel Corp.)

Quanton Manual (de) Datum: URL: )

Super rechnen ohne Superrechner Oder: Was hat das Grid mit Monte Carlo zu tun?

OpenMP am Beispiel der Matrizenmultiplikation

5 Speicherverwaltung. bs-5.1 1

8. Bintec Router Redundancy Protocol (BRRP) 8.1 Einleitung

Protected User-Level DMA in SCI Shared Memory Umgebungen

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

SAP Memory Tuning. Erfahrungsbericht Fritz Egger GmbH & Co OG. Datenbanken sind unsere Welt

Installation OMNIKEY 3121 USB

WinVetpro im Betriebsmodus Laptop

3.14 Die Programmieroberfläche Programmierung

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

1 Aufgaben zu Wie funktioniert ein Computer?

Bedienungsanleitung PC-Konfigurationssoftware des ID Inclinometers

Vergleich von RFID Systemen. EM 410x, 125kHz hitag, 125kHz mifare 13,56 MHz Legic 13,56 MHz. Allgemeine Funktionsweise:

Lizenzierung von SharePoint Server 2013

Excel beschleunigen mit dem mit Windows HPC Server 2008 R2

Anleitung zur Installation des Printservers

Updatehinweise für die Version forma 5.5.5

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Cell and Larrabee Microarchitecture

Werte Kollegin, werter Kollege!

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Übersicht Oracle Lizenzierung Oracle Lizenz-Shop

Windows Server 2008 (R2): Anwendungsplattform

iphone-kontakte zu Exchange übertragen

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

neue Horizonte eröffnen.

Systemanforderungen ab Version 5.31

Lösungsvorschlag zur 4. Übung

Step by Step Webserver unter Windows Server von Christian Bartl

Erste Hilfe. «/IE Cache & Cookies» Logout, alte Seiten erscheinen, Erfasstes verschwindet?

Internet Explorer Version 6

Anleitung zur Nutzung des SharePort Plus

Adressen der BA Leipzig

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Prof. Dr. Norbert Pohlmann, Institut für Internet Sicherheit - if(is), Fachhochschule Gelsenkirchen. Lage der IT-Sicherheit im Mittelstand

Video Unlimited -Nutzungsbeschränkungen

1Computergrundlagen = 1*16 + 0*8 + 1*4 + 1*2 + 0*1

DOKUMENTATION VOGELZUCHT 2015 PLUS

Transkript:

Parallel Computing Platforms Hardware Modelle M. Thaler, TG208, tham@zhaw.ch www.zhaw.ch/~tham Februar 15 1 Literatur - https://computing.llnl.gov/tutorials - http://www.top500.org -[Mattson] pp. 7-12 -[Grama] Chapter2, pp. 11-84 -[Gove] pp. 3-29 -[Rauber] Kapitel 1, pp. 1-20 - Intel Manuals - AMD Manuals 1

40 Jahre Prozessorentwicklung Intel 4004 (1971) Core i7 (2008) Intel 4004 4-Bit 12 mm 2 2300 Transistoren 750 khz 100 KOPS Core i7 64-Bit 263 mm 2 800M Transistoren 3.2 GHz 33 GFLOPS Februar 15 2 i7 ~ 300'000 x Transistoren ~ 22 x Fläche ~ 300'000 x Operation (! OPS vsflops) Anmerkungen - 33 GFLOPS: im Durchschnitt (Peak = 51GFLOPS) 2

Um was geht es? Programmiermodell Uni-Prozessor für Programmierer vollständig transparent - Instruktionsreihenfolge in Program Order - Speichermodell Program Order, Cache versteckt Latenz - Programmierer muss sich nicht um HW kümmern concurrent execution mit Betriebssystemunterstützung Programmiermodell Multi-Prozessoren für Programmierer transparent? - Einfluss parallele Hardware Architektur Programmierung? - Speichermodell und Cache? - automatische Parallelisierung? parallel execution... was ist anders? Februar 15 3 concurrent - each program makes progress with time parallel -thingshappenat thesametime 3

slide... um was geht es? Mögliche parallele Architekturen? 3 Rechnerkomponenten - CPU - main memory - bus/ network CPU bus/ network memory Fragestellung wie Komponenten zu Mehrprozessor-System kombinieren? was ist für Programmierer anders bei mehreren Prozessoren? Modelle parallele Systeme verteilte Systeme Februar 15 4 4

... um was geht es? 3 grundlegende Modelle für Parallelrechner CPU C C C C C C C shared memory C C C C C Shared Memory Multi-Prozessor M M M C C C C M M C C M M C interconnect C M M C Message-Passing Multi-Prozessor (Multi-Computer) C M C M C M lokaler Speicher vollständiger Rechner C+M C+M C+M Internet C+M Distributed System (Cloud) C+M C+M Februar 15 5 Shared Memory Multiprozessor: tightly coupled - z.b. Multicore Prozessoren - Eigenschaften alle CPU's identisch gemeinsamer Speicher - Programmierung relativ einfach - Datenaustausch über Speicher: data acces ~60ns (DRAM) Message-Passing Multi-Prozessor, Multi-Computer: loosly coupled - Eigenschaften CPU mit lokalem Speicher über Verbindungsnetzwerk verbunden: enge Kopplung - Programmierung aufwendiger als Shared Memory Message Passing Systems (z.b. MPI) - Datenaustausch über Meldungen, Latenz ~10ms - 100ms Verteilte System (Cloud): loosely coupled - Eigenschaften vollständige Systeme über Internet verbunden: loose Kopplung - Programmierung etwa wie Message-Passing - Datenaustausch. ähnlich wie bei Message Passing 5

Lehrziele Sie können parallele Systeme mit Flynn'sSchema klassifizieren und diskutieren erklären, wie Instruktions-Ströme als Hardware Threads auf Prozessoren ausgeführt werden die wichtigsten Einflussfaktoren der Hardware auf die Parallelverarbeitung aufzählen und diskutieren Sie können Problemstellungen um Caches in parallelen Systemen erklären und diskutieren erklären, um was es beim MemoryModel geht und welchen Einfluss das MemoryModel auf die Programmierung paralleler System hat Februar 15 6 6

Inhalt Flynn's Klassifikation Instruktionsausführung Multicore / Manycore Prozessoren Das Cache System Memory Consistency Models Februar 15 7 7

slide Flynn's Klassifikation (1972) Klassifikation nach Anzahl unabhängiger Instruktionströme unabhängiger Datenströme instructions in data control unit 4 Kombinationen SISD single instruction- single data SIMD single instruction- multiple data MISD multiple instruction- single data MIMD multple instruction- multiple data Definiert Programmiermodell Anwendungsdomänen CPU processor out data Februar 15 8 8

... Flynn SISD ein Instruktionsstrom, ein Datenstrom typische Einprozessor von Neumann Architektur kein paralleler Rechner typische serielle Ausführung instructions in data control unit processor out data Februar 15 9 9

... Flynn SIMD alle Prozessoren gleiche Instruktion auf verschiedene Daten typische Vertreter - Vektorprozessoren, GPU's, z.t. Signalprozessoren typische Anwendungen - fine-grained Paralellität mit wenig Interprozesskommunikation - z.b. Vektoraddition instructions in data in data in data in data in data control unit processor out data processor out data processor out data processor out data processor out data Februar 15 10 SIMD - single instruction- multiple data SSE bei Intel und AMD Prozessoren SIMT bei GPUs - Single Instruction Multiple Threads - mehrere SIMD Processoren, die mehrere "Threads" emulieren unterstützt SPMD Pattern - Single Program Multiple Data 10

... Flynn MISD alle Prozessoren verschiedene Programme auf gleichen Daten sehr geringe Bedeutung typische Anwendungen - Filterbank auf gemeinsamen Datenstrom - verschiedene Algorithmen zum Knacken von verschlüsselten Daten instructions instructions instructions instructions instructions in data control unit control unit control unit control unit control unit processor processor processor processor processor out data out data out data out data out data Februar 15 11 11

... Flynn MIMD jeder Prozessor verschiedene Programm, verschiedene Daten zu unspezifisch weitere Aufteilung notwendig - shared memory(uma, NUMA) - distributed memory heute häufigste parallele Prozessorarchiktektur instructions in data instructions in data instructions in data instructions in data control unit processor out data control unit control unit processor processor interconnect out data out data control unit processor out data Februar 15 12 Shared Memory - alle Prozessoren haben einen gemeinsamen Adresseraum und damit einen gemeinsamen Hauptspeicher kommunizieren (lesen und schreiben) über gemeinsame Daten (Variablen) UMA uniform memoryaccess - gemeinsamer Adressraum -der Zugriff auf alle Daten dauert gleich lang NUMA non-uniform memory access - gemeinsamer Adressraum -der Zugriff auf die Daten ist verschieden lang, je nach Ort des Speichers 12

slide MIMD: Shared Memory Shared Memory: UMA 1) resp. SMP SMP: Symmetric Multiprocessor gemeinsamer Adresseraum (Speicher) alle Prozessoren sind gleich sehr einfach zu programmieren (keine Datenverteilung) Anzahl Prozessoren (CPU's) beschränkt Speicherbandbreite - typische Multicore-Architekturen 1) Uniform Memory Access CPU CPU CPU CPU memory Februar 15 13 Vorteile -globaler Adressraum ermöglicht benutzerfreundliche Programmierung (Programmierer muss sich nicht um Verteilung der Daten auf die Prozessoren kümmern) - Datenaustausch zwischen Tasks schnell und uniform Nachteile - Speicher und CPU skalieren nicht gemeinsam - Programmierer für Synchronisation verantwortlich Programmierung -Threads -openmp -etc. Die meisten aktuellen Supercomputer gehören zu dieser Klasse Viele MIMD-Computer enthalten SIMD Komponenten 13

... MIMD: Shared Memory Shared Memory: NUMA 1) gemeinsamer Adresseraum, verschiedene Zugriffszeiten ein Speicherbereich "näher" am Prozessor reduziert Bandbreitenproblem Verteilung der Daten notwendig: Lokalitätsproblem CPU CPU CPU CPU CPU CPU CPU CPU memory memory CPU CPU CPU CPU memory memory CPU CPU CPU CPU 1) Non-Uniform Memory Access Februar 15 14 Vorteile und Nachteile ähnlich wie bei SMP - logisch gleiche Programmierung wie bei SMP/UMA - Lokalität der Daten muss berücksichtigt werden - Synchronisation aufwendiger (Zugriffszeiten) locking von gemeinsamen Daten - Datenzugriffe transparent für Programmierer (wie bei SMP) Zugriffszeit Performance Trend sichtbar in Richtung NUMA -es können nicht beliebig viele CPU'san einen Speicher angeschlossen werden 14

... MIMD: Distributed Memory Distributed Memory jeder Prozessor hat einen eigenen Adressraum Datenkommunikation über "message passing" - Zugriffszeiten abhängig von Technologie: wie Shared Memory bis mehrere Grössenordnung langsamer weitere Aufteilung in - MPP (massively parallel): networking eng mit gekoppelt - Clusters: off the shelf Computers and Networks interconnection network CPU CPU CPU CPU memory memory memory memory Februar 15 15 Vorteile - Speicher skaliert mit Anzahl Prozessoren - schneller Zugriff auf lokalen Speicher - Kosten: off the shelf componenten Nachteile -Programmierer muss sich um viele Details der Kommunikation kümmern - Abbildung von globalen Datenstrukturen auf die Speicherorganisation ist explizit (durch Programmierer) - Latenz der Meldungen muss berücksichtigt werden communication and computation in parallel Programmierung - z.b. mit MPI (openmpi): Message Passing Interface Cluster mit Linux Beowulf clusters 15

... MIMD Hybride Systeme Rechnerknoten mit eigenen Adressräumen jeder Knoten für sich SMP clustersof SMP Grids nutzen verteilte heterogene Systeme verbunden über LANs oder WANs(Internet) Unterschied zu Clusters - keine gemeinsame Verwaltung - Ressourcen gehören verschiedenen Organisatoren Februar 15 16 Ein typischer hybrider Multicore Prozessor - IBM Cell Broadband Engine 16

Instruktionsausführung slide Instruktion z.b. in 4 Schritten fetch decode execute writeback fetch decode execute writeback t 4-stage Pipline: überlappende Schritte 1 2 3 4 5 instructions issue rate latency fetch decode execute writeback fetch decode execute writeback fetch decode execute writeback fetch decode execute writeback fetch decode execute writeback t Februar 15 17 Pipelining - macht einzelne Instruktion nicht schneller - mehr Instruktionen pro Zeit starten Programm schneller - erhöht Durchsatz aber nicht Verzögerung Moderne Prozessoren haben n = 4 oder mehr Pipeline Stufen - issue rate: Anzahl Instruktionen pro Zeit - latency: Start Instruktion Resultat verfügbar -Füllzeit: n -1 Probleme (Reduktion Durchsatz) - Datenabhängigkeiten Instruktion benötigt Datenwert von voriger Instruktion Latency abwarten (4 cylces) - Kontrollabhängigkeiten Sprungbefehle Pipeline muss sich neu füllen (Füllzeit) 17

... moderne Prozessoren Mehrere Pipelines verschiedene Instruktionstypen - Integer - Float - Memory - Branch instructions integer pipeline float pipeline memory pipeline finish branch pipeline Februar 15 18 Modernen Prozessoren mehrere Pipelines für die verschieden Instruktionstypen 18

Hyperthreading slide Idee konsekutive Instruktionen unabhängiger Hardware Thread - Instruktionen überlappen nicht pro Hardware Thread ein vollständiger Registersatz - Hardware Threads unabhängig - "Software Threads" Hardware Threads Betriebssystem sieht CPU pro Thread Februar 15 19 Hyperthreading: grundsätzliche Idee -jeder Hardware Threadbesitzt einen eigenen Registersatz (alle Register, inkl. PC (IP)), die Hardware Threadsnutzen jedoch die Pipeline gemeinsam (jedoch einen anderen Slot) Register Set 1 Register Set 2 Register Set 3 Pipeline Register Set 4 -obiges Beispiel: vor jedem FetchZyklus wird der Registersatz umgeschaltet - Hardware Threads eigenständige Threads weniger Stalls wegen reduzierter Abhängigkeiten 19

... Hyperthreading Eigenschaften Rechenressourcen und Caches gemeinsam genutzt logische oder virtuelle Prozessoren relativ kleine zusätzliche Chipfläche notwendig (~ +5%) weniger Pipeline Stalls pro Thread wegen - reduzierten Datenabhängigkeiten - Sprungbefehlen Performancegewinn abhängig von Anwendung - übliche Anwendungen ca. 15% -30% - unabhängige Software Threads bis ca. 90% wenn Prozessor-Ressourcen kein Flaschenhals - Cache, etc. Februar 15 20 20

slide Multicore vs. Manycore Multicore team of oxen Cores - optimiert als standalone"workhorses" - ein oder mehrere hardware threads - als Single Core Prozessor autonom Manycore flock of chickens Cores - optimiert für Zusammenarbeit (ALU) - reduzierte individuelle Performance - arbeiten immer zusammen SIMD Februar 15 21 21

Multicore Architektur Intel i7 Multicore (1 Chip) Nehalem Microarchitektur 2 oder 4 Cores Hyperthreading - 2 HW-Threads/ Core 3 Level Cache Hierarchy thread1 thread2 core 1st level cache 2nd level cache thread1 thread2 core 1st level cache 2nd level cache 4 Core i7 Nehalem, Quelle Intel 3rd level cache memory Februar 15 22 Wichtige für Parallel Programmierung - Anzahl Cores und Hardware Threads - Cache System Threads Hardware Threads virtuelle CPU's - simultaneous multi threading oder hyperthreading -2-way 2 threadsper core Intel I7-2 Cores mobile Anwendungen (Laptops) -4/6 Cores PC's Cache Daten -1st level datacache, 32 KB, 4 clocklatency instrcache, 32 KB, - -2nd level dataund instrcache, 256 KB, 10 clocklatency -3rd level date und instrcache, 8 MB, 35-40 clocklatency 4 MB für mobile Anwendungen -line size64 Bytes Die meisten Multicore-Prozessoren haben eine ähnliche Architektur 22

slide Manycore GPU's Graphics Processing Units mehrere 100 bis 1000 "Prozessoren" hohe Speicherbandbreite SIMD Architektur ursprünglich für Graphik entwickelt - heute oft für Datenverarbeitung verwendet Hersteller NVIDIA - Programmierung OpenGL, CUDA, opencl AMD (ATI) - Programmierung OpenGL, opencl(stream processing) "GPGPU" Februar 15 23 Hinweis - werden die GPU ausschliesslich für Rechenzwecke verwenden keine Graphikprogrammierung - GPGPU General Purpose Graphics Processor Unit 23

... GPU's Beispiel: AMD HD5870 20 compute units(simd) 16 stream cores 5 processing elements 1600 processing elements compute unit stream core Februar 15 24 ATI HD5870-20 computeunits(simd unit) mit je 16 streamcores -jedes streamcoremit 5 processingelements, Registern und eine branch unit Processing elements - 32 bit float: 4 Operation oder -64 bitfloat: 2 addsoder 1 mul oder -24 bitint: 4 addoder mul -plus 1 mal: Spezialfunktionen, 32 bitfloat Operation, 32 bitintadd 2.15 Milliarden Transistoren (20nm) 154 GB/sec Speicherbandbreite 850 MhzClock Processing power single precision: 2.72 TeraFLOPS doubel precision: 0.544 TeraFLOPS Max Power 188 Watt Hinweis -im Praktikum steht eine ATI V5800 mit 10 ComputeUnits zur Verfügung 24

Einfluss paralleler Hardware Wie/wo beeinflusst HW die Performance? Leistungsverbrauch und Clock Frequenz Speichersystem - Speicherhierarchie - Konsistenzmodelle Wie geht der Programmiere damit um? Februar 15 25 25

Energieverbrauch Leistungsaufnahme P P ~ Kapazität, Frequenz und Speisespannung P 2 3 3 ~ C f V ~ C f ~ NCores f f ~ V C~ N Cores Rechenleistung Performance ~ Anzahl Cores und Frequenz Mehrere Cores mit gleicher Architektur was bringt's? Perf ~ N Cores f Februar 15 26 Leistungsaufnahme steigt proportional zu -Taktfrequenz, Versorgungsspannung 2 und Kapazität eines Chips -Taktfrequenz und Versorgungsspannung verhalten sich ebenfalls proportional P ~ Cf 3 Beispiel: f f/2 und N Cores 2 N Cores Perf = P = 2N 1 2 Cores f 2N Cores 3 f 2 = = f N 2 8 N Cores Cores f 3 = 1 4 N Cores f 3 Probleme Power Wall - Leistungsaufnahme kann nicht mehr erhöht werden Leistungsdichte zu hoch - Leckströme steigen mit sinkender Spannung Verlustleistung 26

Main Memory and Caches Wieso? Zugriff auf Hauptspeicher langsam Zugriffszeit halbiert sich nur ca. alle 6 Jahre CPU -MemoryPerformance Gap memory gap Februar 15 27 27

... Caches Wie funktionierts? CPU greift auf "Wort" zu - in Cache io - sonst Zugriff auf Datenblock mit "Wort" im Speicher CPU cache memory word block (line) Zugriffszeit T a T a nicht deterministisch Wahrscheinlichkeit, dass Wort im Cache = T C + (1-h) T M = T C + m T M Februar 15 28 Cache funktioniert wegen Lokalitätsprinzip: Daten liegen örtlich und zeitlich nahe beieinander Mittlere Zugriffszeit hängt ab von -Zugriffszeit auf Cache T C -Zugriffszeit auf Speicher T M - Hitrate h Wahrscheinlichkeit, dass Wort in Cache Missrate m Wahrscheinlichkeit, dass Wort nicht in Cache -i.a. gilt h > 0.9 resp. m < 0.1 Mehrere Caches - zweistufig T a =T C1 + m C1 T C2 + m C1 m C2 T M - dreistufig T a =T C1 + m C1 T C2 + m C1 m C2 T C3 + m C1 m C2 m C3 T M 28

... Caches Zugriffszeiten auf Caches Level 1 ~ 4Zyklen Level 2 ~ 10Zyklen Level 3 ~ 40Zyklen Februar 15 29 Beispiel -Clock 2.5GHz -> T = 0.4 ns -Level 1 1.6 ns -Level 2 4.0 ns -Level 3 16.0 ns -Memory to CPU: ~60.0 ns (random) sequentiell ~4 ns (26 ns: alle Bytes einer Cache Line lesen) -Annahme für alle Stufen: h = 0.9 -> m = 0.1 Ta = 1.6 ns + 0.1 4 ns + 0.01 16 ns + 0.001 60 ns Ta = 1.6 ns + 0.4 ns + 0.16 ns + 0.04 ns Ta = 2.2 ns immittel 29

Caches bei Multiprozessoren Mehrere Cores jedes Cores hat eigene Caches Caches auf gleichem Level gemeinsame Daten mehrere Kopien Mehrfach-Kopien in Caches müssen konsistent sein gleicher Wert lesen kein Problem schreiben Kopien konsistent halten Lösung Cache Coherence garantiert, dass schlussendlich alle Datenkopien aufdatiert sind z.b. MESI Protokoll Februar 15 30 30

Cache Coherence: MESI-Protokoll Cache-Konsistenz: SMP Systeme Zustände von Cache Lines Modified - Cache Line wurde modifiziert - nur in diesem Cache vorhanden Exclusive - Cache Line ist gleich wie Speicher - nur in diesem Cache vorhanden Shared - Cache Line ist gleich wie Speicher - in mehr als einem Cache vorhanden Invalid - Cache Line enthält keine gültigen Daten Februar 15 31 Ein sehr häufig verwendetes Protokoll - oft auch in modifizierter Form MESI Protokoll regelt "read hit", "read miss", "write hit" und "write miss" für alle am Bus angeschlossenen Caches Cache Controller -überwachen Bus (snoop snoopingcache) und reagieren auf CoherenceSignale entsprechend dem Protokoll mit Zustandsänderungen siehe rote Pfeile Mehrere Cache Levels - Cache Zustände werden auf allen Levels unterhalten - Schreiben write through zum busnächsten Cache Weiter Information siehe Literatur 31

... MESI-Protokoll Snooping Cache Controlerüberwachen Bus und regeln Konsistenz gemäss MESI-Protokoll MESI-Zustände Modified Exclusiv Shared Invalid Cache Line gültig? Speicherkopie? Kopien in anderen Caches? Schreiben der Line bewirkt... ja veraltet/ungültig nein geht nicht auf Bus ja gültig nein geht nicht auf Bus ja gültig ja (möglich) geht auf Bus & Caches aufdatieren nein - ja (möglich) direkt auf Bus Februar 15 32 Lokale Ereignisse lösen - eine Zustandsänderung im "lokalen" Cache aus - eine Zustandsänderung in den "entfernten" Caches aus event read hit {M, E} read miss {I} write hit {S, E} write miss {I} local use local copy I S or I E {S, E} M I M remote no action {S, E, M } S {S, E, M } I {S, E, M } I Wenn eine Cache Line den Zustand von M X oder E S wechselt, muss zuerst der Hauptspeicher aufdatiert werden: -z.b. ReadMiss in einem anderen Cache 32

... Cache Coherence Gemeinsame Daten (shared memory) häufige Schreib-/ Lese-Zugriffe auf örtlich nahe zusammen liegende Daten, z.b. Arrays, Structs, etc. - viel Busverkehr mit Speicher langsam weil T M >> T C führt u.u. zu - false sharing Zugriffe mehrerer Cores auf Daten in gleicher Cache Line viel Schreibverkehr mit Speicher - conflict misses/ capacity misses Daten aus letztem Cache (bei Bus) "verdrängt", aber gerade wieder benötigt führt zu Thrashing(dauerndes ein-/auslagern der Daten) Februar 15 33 33

... Cache Coherence Hyperthreading Hardware Threads in gleichem Core gemeinsame Caches Lösungsansätze Daten so lokalwie möglich halten - Daten in lokalen Variablen verarbeiten, erst wenn nötig zurückschreiben - Datenstrukturen auf Cache Line Länge erweitern (Padding) Datenorganisation cache aware - Datenzugriff mit Schrittweite >= Cache Line - Datengruppierung Mehrfachverwendung geeignete Algorithmenwahl Februar 15 34 34

Memory consistency models Memory consistency model für SMPs eine formale Spezifikation (Vertrag) - wie der Programmierer Speicherzugriffe sieht erklärt den Unterschied, zwischen dem Verhalten, - das der Programmierer erwartet - und wie sich das System wirklich verhält für jede Programmiersprache definiert Intuitive Wahrnehmung Lesen gibt den zuletzt in den gleichen Speicherplatz geschriebenen Wert zurück Uniprozessoren: "zuletzt" ist definiert mit der Program Order - Reihenfolge der Speicheroperationen im Programm Februar 15 35 siehe z.b. -S. V. Adve, K. Gharachorloo, "Shared Memory Consistency Models: A Tutorial", WRL Research Report, 95/7 Palo Alto, USA. 35

... memory consistency models Uniprozessor Systeme Sicht Programmierer Program Order Optimierungen resp. re-ordering durch Compiler, Prozessor - erlaubt, solange "ProgramOrder" eingehalten - z.b. read-write reorder, out of order execution, etc. Multiprozessor Systeme SMP Speicheroperationen - parallel, d.h gleichzeitig - cache coherence, - write buffer Definition von Konsistenzmodellen notwendig - sequentielle Konsistenz (Leslie Lamport, 1975) - relaxed Konsistenz (alle heutigen Rechner-Systeme) Februar 15 36 Shared Memory Systeme - jedes Core sieht gleichen, virtuellen Adressraum program order -Programm wird so ausgeführt, dass vom Programmierer vorgesehene Datenabhängigkeiten Kontrollabhängigkeiten eingehalten werden Moderne Prozessoren (Hardware) - halten logische "program order" ein - aber ordnen Instruktionsausführung neu out of order execution data prefetch write buffer(caches) etc. Compiler (Software) - optimieren Code unter Berücksichtigung der logischen program oder Hinweis: - es gibt auch noch weiter Konsistenzmodelle, siehe [Herlihy] 36

... sequential consistency 1) Sicht des Programmierers zu jeder Zeit ein Prozessor mit Speicher verbunden Operationen einzelner Prozessoren - in programorder Operationen aller Prozessoren - in programorder - aber ineinander verschachtelt Implementation - möglich - restriktiv viele Optimierungen nicht möglich Relaxed memory Konsistenzmodelle einfacher zu implementieren, erlauben mehr Optimierungen 1) Leslie Lamport P 1 P 2 P 3 P N memory Februar 15 37 Leslie Lamport -A multiprocessorsystemissequentiallyconsistentiftheresultof anyexecutionisthesameas iftheoperationsof all processors wereexecutedin somesequentialorder, and theoperationsof eachindividualprocessorappearin thissequencein theorder specified by its program Sequentielle Konsistenz -ein globaler Speicher, wird zufälligüber Schalter mit einem Prozessor verbunden auch mehrere Speicheroperationen von einem Prozessor möglich -jeder Prozessor führt seine eigenen Speicheroperationen in program order aus -der Schalter erzeugt die globale Serialisierungfür alle Prozessoroperationen Shared Memory Prozessoren (Multicores) - verwenden i.a. relaxed Speichermodelle -verwenden writebufferorstore-buffer(cachebypass) writebufferforwardingon read(lokaler Prozessor) - Speicheroperationen müssen Speicherhierarchie durchlaufen - Prozessoren out of order execution, etc. - Compiler Neuordnung von Instruktionen -seeeg. [Herlihy], p 478. 37

Relaxed Memory Konsistenzmodelle Verschiedene Gründe Optimierung der Ausführungsreihenfolge von Instruktionen Write Buffer, etc. Z.B. Write Buffer wenige Worte schneller als Cache write through policy CPU cache memory Februar 15 38 38

Konsequenzen Relaxed Memory Model Speicheroperationen nicht gleiche Reihenfolge für alle Cores Daten u.u. noch nicht durch Speicherhierarchie propagiert Beispiel Petersons Algorithmus kritischer Abschnitt für 2 Tasks: lockfree(nur Software) flag[0] = flag[1] = false; turn = 0; criticaltask0() { flag[0] = true; turn = 1; while (flag[1] && turn == 1) {} /* critical section */ } flag[0] = false; criticaltask1() { flag[1] = true; turn = 0; while (flag[0] && turn == 0) {} /* critical section */ } flag[1] = false; Februar 15 39 Algorithmus abhängig von Reihenfolge Zuweisung an -flag[] -turn "der letzte der turn setzt muss warten (wenn beide gleichzeitig in den kritischen Abschnitt eintreten wollen)" - arbeitet korrekt auf Uniprozessorsystemen -funktioniert nicht zuverlässig auf Multiprozessorsystem einem relaxedmemorymodell, z.b. Intel I7, Dual Core: Fehlerrate ~0.015%, erlaubt store-buffer forwarding Lösungen - Speichern (Laden) der Daten erzwingen volatile deklararieren memory fence Instruktionen verwenden - Intel: Instruktion mfence 39

Take Home Februar 15 40 40