Memory Models. 17. September 2012



Ähnliche Dokumente
Rechnerarchitektur SS 2012

Abstrakte C-Maschine und Stack

Preisliste für The Unscrambler X

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer

Wenn Russland kein Gas mehr liefert

Schreiben auf Englisch

Betriebszertifikat. Zertifikats Nr Registrierungs Nr. CERES Certification of Environmental Standards GmbH (CERES) bestätigt, dass

All Motorola Europe, Middle East & Africa Approved Channel Partners

WAS IST DER KOMPARATIV: = The comparative

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Memory Models Frederik Zipp

Grundlagen zur nebenläufigen Programmierung in Java

Konfigurieren eines HHR Gerät, um es über eine CBX800 an Profibus anzubinden

Java-Tutorium WS 09/10

Für AX 4.0, den letzten Hotfix rollup einspielen. Der Hotfix wurde das erste Mal im Hotfix rollup eingeschlossen:

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Einführung in die Systemprogrammierung

ICT-Triengen - Zugang für Lehrpersonen

Registrierungsprozess des Boardgeräts (OBU) Inhalt Registrierung auf der Online-Benutzeroberfläche HU-GO

CABLE TESTER. Manual DN-14003

Computer-Architektur Ein Überblick

1.1. Apache / Tomcat via JK JNI ## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software


Computerarithmetik ( )

Internet Explorer Version 6

Das neue Volume-Flag S (Scannen erforderlich)

Programmentwicklung ohne BlueJ

Ressourcenmanagement in Netzwerken SS06 Vorl. 12,

Hardware/Software-Codesign

English. Deutsch. niwis consulting gmbh ( manual NSEPEM Version 1.0

Live Streaming => Netzwerk ( Streaming Server )

A-CERT CERTIFICATION SERVICE

Kurzanleitung um Transponder mit einem scemtec TT Reader und der Software UniDemo zu lesen

RL

4D Server v12 64-bit Version BETA VERSION

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Evil Tech presents: Windows Home Server

USB Treiber updaten unter Windows 7/Vista

5 Speicherverwaltung. bs-5.1 1

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Übung - Datensicherung und Wiederherstellung in Windows Vista

Software Engineering Klassendiagramme Assoziationen

Python SVN-Revision 12

Daten haben wir reichlich! The unbelievable Machine Company 1

Dezentrale Verschlüsselung. Lumension Device Control Version 4.4

Monitore. Klicken bearbeiten

Java Einführung Abstrakte Klassen und Interfaces

Power Supply Control Kit

Konsistenzproblematik bei der Cloud-Datenspeicherung

Einführung in die technische Informatik

Portierung eines geeigneten LZ-basierten Kompressors auf LegUp-HLS

Kapitel 4. Monitore und wechselseitiger Ausschluss

FEBE Die Frontend-Backend-Lösung für Excel

Technical Support Information No. 123 Revision 2 June 2008

Version 0.3. Installation von MinGW und Eclipse CDT

mobile Responsive Design Lässt Ihre Anwendungen und Inhalte auf jedem Gerät einfach gut aussehen

Mikrocontroller Grundlagen. Markus Koch April 2011

Rechnerarchitektur SS 2012

Zeit bedeutet eine Abwägung von Skalierbarkeit und Konsistenz

Softwareupdate-Anleitung // AC Porty L Netzteileinschub

Installationshilfe und Systemanforderungen. Vertriebssoftware für die Praxis

CarMedia. Bedienungsanleitung Instruction manual. AC-Services Albert-Schweitzer-Str Hockenheim

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

Algorithms & Datastructures Midterm Test 1

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

Version/Datum: Dezember-2006

Pipelining for DLX 560 Prozessor. Pipelining : implementation-technique. Pipelining makes CPUs fast. pipe stages

Algorithmen und Datenstrukturen

Einkommensaufbau mit FFI:

UM ALLE DATEN ZU KOPIEREN. ZUNÄCHST die Daten des alten Telefons auf einen Computer kopieren

Wozu dient ein Logikanalysator?

(Prüfungs-)Aufgaben zum Thema Scheduling

SEMINAR Modifikation für die Nutzung des Community Builders

Der Begriff Cloud. Eine Spurensuche. Patric Hafner geops

SWE1 / Übung 2 ( )

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

iphone-kontakte zu Exchange übertragen

Serviceinformation Nr. 02/11

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Einleitende Bemerkungen

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

++ Read Programmieren: Software entwickeln fr Einsteiger: Lernen Sie die Grundlagen von Java, SQL und C++ (Codierung,... download php book free pdf

Aufbau eines IT-Servicekataloges am Fallbeispiel einer Schweizer Bank

Mächtigkeit von WHILE-Programmen

EXPANDIT. ExpandIT Client Control Kurzanleitung. utilities. be prepared speed up go mobile. Stand

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

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

Oracle VM Support und Lizensierung. best Open Systems Day April Unterföhring. Marco Kühn best Systeme GmbH

Data. Guido Oswald Solution Switzerland. make connections share ideas be inspired

Windows 7 - Whoami. Whoami liefert Informationen wie z.b. die SID, Anmelde-ID eines Users, sowie Gruppenzuordnungen, Berechtigungen und Attribute.

Benutzerhandbuch bintec R4100 / R4300 Configuration Management. Copyright 17. Juli 2006 Funkwerk Enterprise Communications GmbH Version 1.

Felix Großkreuz Philipps-Universität Marburg Fachbereich 12 Seminar IT-Administration SS2011

Technische Voraussetzungen


Klausur "Informationstechnische Grundlagen" WS 2012/2013

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Transkript:

Memory Models 17. September 2012

Here Be Dragons In addition, programming idioms used by some programmers and used within Sun s Java Development Kit is not guaranteed to be valid according the existing Java memory model. Fixing the Java Memory Model, William Pugh Compilerbau Systemprogrammierung High-Performance Code Effekte teilweise beobachtbar mit Wahrscheinlichkeit 10 9 http://www.cl.cam.ac.uk/ pes20/ppc-supplemental/ppc051.html

Warum und Wozu Out-of-Order Execution Speculative Reads Multiprocessor / -core Systeme 1 Takt für Registerzugriff 3 Takte für L1 Cache 12 Takte für L2 Cache 40 Takte für L3 Cache 200 Takte für RAM

Read Reordering movl $0, x movl $0, y movl x, %eax movl y, %ebx movl $1, y movl $1, x eax = 0 ebx = 0 eax = 1 ebx = 0 eax = 0 ebx = 1?

Read Reordering movl $0, x movl $0, y movl x, %eax movl y, %ebx movl $1, y movl $1, x eax = 0 ebx = 0 eax = 1 ebx = 0 eax = 0 ebx = 1 eax = 1 ebx = 1

Write Reordering movl $0, x movl $0, y movl $1, x movl y, %ebx lfence movl $1, y movl x, %eax eax = 0 ebx = 0 eax = 1 ebx = 0 eax = 1 ebx = 1?

Write Reordering movl $0, x movl $0, y movl $1, x movl y, %ebx lfence movl $1, y movl x, %eax eax = 0 ebx = 0 eax = 1 ebx = 0 eax = 1 ebx = 1 eax = 0 ebx = 1

Independent reads of independent writes movl $0, x movl $0, y movl $1, x movl x, %eax movl $1, y movl y, %ecx lfence lfence movl y, %ebx movl x, %edx. eax = 1 ebx = 0 ecx = 1 edx = 0.

Causality Loops A = 0 B = 0 a = A b = B if(a == 1) { if(b == 0) { B = 1 A = 1 } } if(b == 1) { A = 1 }. a = 1 b = 1.

Memory Models Mehrere Wortbedeutungen, hier nur bezogen auf Nebenläufigkeit Welche Verhaltensweisen sind zulässig? Welche Optimierungen darf der Prozessor vornehmen? Welche Optimierungen dürfen Compiler & Prozessor vornehmen? Unter welchen Bedingungen gelten welche Reihenfolgengarantien? Welche Arten von Abhängigkeiten sind für die Reihenfolge relevant?

Data Dependencies movl $1, %eax movl %eax, %ebx Das Ergebnis einer Operation hängt vom Ergebnis einer früheren ab Instruktionsreihenfolge wird von realen Prozessoren nicht garantiert

Control Dependencies andl $0, %eax jnz skip movl $1, %ebx skip: Die Ausführung einer Operation hängt vom Ergebnis einer früheren ab Instruktionsreihenfolge wird von realen Compilern nicht garantiert

Address Dependencies movl x, %eax movl (%eax), %ebx Ein Speicherzugriff einer Operation hängt vom Ergebnis einer früheren ab Instruktionsreihenfolge wird von realen Prozessoren momentan garantiert Relevanz für den Entwurf von lockfree und waitfree Algorithmen

Transitive Dependencies movl $0, addr1 movl $0, addr2 movl $0, %eax movl $0, %ebx movl $addr1, addr1 start1: start2: orl addr1, %eax orl addr2, %ebx jz start1 jz start2 movl (%eax), %eax movl (%ebx), %ebx movl %eax, addr2. ebx = 0.

Explicit Barriers lfence Kein Reordering von loads, lfence, mfence, serializing instructions sfence Kein Reordering von stores, sfence, mfence, serializing instructions mfence Kein Reordering von Speicherzugriff, lfence, sfence, mfence, clflush, serializing instructions ser.instr. Instruktion wird vollständig abgeschlossen lock-* Systemweit atomare Operation

Sequential Consistency... the result of any execution is the same as if the operations of all the processors were executed in some sequential order, and the operations of each individual processor appear in this sequence in the order specified by its program. How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs, Leslie Lamport

x86 Memory Model The following n6 example, due to Paul Loewenstein [14], shows a behaviour that is observable (e.g. on an Intel Core 2 duo), but that is disallowed by x86-cc, and by any interpretation we can make of IWP and AMD64-3.14. A Better x86 Memory Model: x86-tso, Scott Owens, Susmit Sarkar, Peter Sewell x86-total-store-order Jeder Kern hat einen eigenen Write-Buffer Ansonsten gibt es nur noch den globalen Speicher

PowerPC Memory Model To order stores to devices on two different PCI buses requires additional software protocols, such as performing a load from one device to ensure that a store has completed before permitting a store to a second device that is on a different PCI bus. PowerPC storage model and AIX programming, www.ibm.com/developerworks/systems/articles/powerpc.html Verschiedene Klassen von Speicher ( Memory, IO ) Address Dependencies werden beachtet sync Kumulative Barrier für alle Speicher eieio Barrier für IO-Speicher lwsync Barrier für RAM isync Instruktionsserialisierung

Java Memory Model happens-before-relation: ( Program Order Synchronizations ) + Ein Programm ist correctly synchronized wenn in Sequentially Consistent Ausführungen alle Read-/Writekonflikte durch happens-before geordnet sind Correctly synchronized Programme verhalten sich, als ob Sequential Consistency gelten würde Sonderregeln für volatile und final

C++11 Memory Model std::atomic und std::memory order memory order relaxed völlig ungeordnet memory order consume keine abhängigen Loads vorziehen memory order acquire, memory order release, memory order acq rel entsprechen lfence, sfence, mfence memory order seq cst Sequential Consistency volatile garantiert Dinge nur innerhalb eines Threads Über std::atomic keine völlig frei erfundenen Werte erzeugbar Normale Variablen: undefined behaviour