Cacheoptimierung durch Anpassung der Speicheranordnung

Ähnliche Dokumente
Grundlagen Algorithmen und Datenstrukturen Kapitel 13

B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme

Dynamisches Speichermanagement

Naiver Ansatz. Blöcke und Seiten. Betriebssysteme I Sommersemester 2009 Kapitel 6: Speicherverwaltung und Dateisysteme

C für Java-Programmierer

C für Java- Programmierer

7. Sortieren Lernziele. 7. Sortieren

Technische Informatik 1 - Übung & 22. Dezember Philipp Miedl

Freispeicherverwaltung

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 15. Jan Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 10

Einführung in die Systemprogrammierung

Just-In-Time-Compiler (2)

Übung Praktische Informatik II

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

EADS 3.3 Gewichtsbalancierte Bäume 95/598 ľernst W. Mayr

Vorlesung Datenstrukturen

Datenstrukturen & Algorithmen

Freispeicherverwaltung Martin Wahl,

Programmierkurs C++ Templates & STL (1/2)

Assembler - Adressierungsarten

Technische Informatik 1 - HS 2017

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Betriebssysteme. Agenda. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Cache Grundlagen. Schreibender Cache Zugriff. SS 2012 Grundlagen der Rechnerarchitektur Speicher 22

DYNAMISCHE VERWALTUNG VIRTUELLEN SPEICHERS FÜR ECHTZEITSYSTEME

Just-In-Time-Compiler (2)

Wie groß ist die Page Table?

Datenbanksysteme SS 2013

2D-Arrays. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1

Rechnerstrukturen Wintersemester 2002/03. Maschinensprache Opcode, Operanden, Adressierung Für Menschen schwer verdauliche Folgen von 0 und 1

Vorlesung Programmieren

1 Abstrakte Datentypen

C-PROGRAMMIERUNG - STRUKTUREN. Marcel Lebek

Quiz. Gegeben sei ein 16KB Cache mit 32 Byte Blockgröße. Wie verteilen sich die Bits einer 32 Bit Adresse auf: Tag Index Byte Offset.

9 Minimum Spanning Trees

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

DATENSTRUKTUREN UND ALGORITHMEN

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

2. Architektur verteilter Datenbanksysteme

Sortieren II / HeapSort Heaps

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Einführung in die Systemprogrammierung

Variablen in Java. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang. Ziele

Datenstrukturen. Dortmund, Oktober 1998

Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

Splay-Bäume. Joseph Schröer. Seminar über Algorithmen SoSe 2011, Prof. Dr. Helmut Alt

Mehr Effektiv C++ programmieren

Betriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.

Vorlesung Datenstrukturen

Beweis: Die obere Schranke ist klar, da ein Binärbaum der Höhe h höchstens

Dynamische Datenstrukturen

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Echtzeitbetriebssysteme

Algorithmen & Datenstrukturen 2 Praktikum 3

CPU-Caches. Christian Duße. Seminar Effiziente Programmierung in C

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Überblick. Zeit Motivation Network Time Protocol (NTP) Logische Uhren. c td VS (SS16) Zeit 9 1

Aufgabe 4 : Virtueller Speicher

ADS: Algorithmen und Datenstrukturen

Repetitorium Informatik (Java)

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Lösungsvorschlag zur 6. Übung

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume. AVL-Bäume Treaps Splay-Bäume

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Einstieg in die Informatik mit Java

9. November ZHK in dynamischen Graphen Zentralitäten. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 67

Informatik II Übung 3

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Polymorphie Begriffsklärung und Anwendung

C++ Templates - eine kleine Einführung

Das EM-Modell. Vorlesung 3: Lubys Algorithmus. Graphenalgorithmen und lineare Algebra Hand in Hand

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Einführung in die Programmiersprache C

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

In heutigen Computern findet man schnellen/teuren als auch langsamen/billigen Speicher

Einstieg in die Informatik mit Java

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

5.5 Prioritätswarteschlangen

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Java-Grundkurs für Wirtschaftsinformatiker

Pat Trees und Pat Arrays Datenstrukturen zur effizienten Suche in Texten

Suchen und Sortieren Sortieren. Heaps

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Collections. Arthur Zaczek

Datenbanken: Indexe. Motivation und Konzepte

Algorithmische Methoden zur Netzwerkanalyse

Algorithmen I - Tutorium 28 Nr. 9

Lock-free Datenstrukturen

Informatik II, SS 2014

Algorithmen und Datenstrukturen 1 VU 6.0 Nachtragstest SS Oktober 2014

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

Petri-Netze. Teil 2. Chandran Goodchild. Department of Automata Theory University of Freiburg. Pro Seminar, 2017

ContainerDatenstrukturen. Große Übung 4

Einführung Augmentierte Bildsynthese

Transkript:

Cacheoptimierung durch Anpassung der Speicheranordnung Seminar Zwischensprachen und Codeoptimierung, SS 2003 Matthias Heil Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.1/21

Inhalt Eigenschaften verzeigerter Datenstrukturen Strukturoptimierungen Umordnung Partitionierung Allokation ccmalloc von Chilimbi, Hill, Larus Verfahren von Franz, Kistler Färbung Reorganisation Zusammenfassung Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.2/21

Verzeigerte Datenstrukturen Verschiedene Knoten Zusammengesetzt aus Elementen Oft uniformer Aufbau Allokation unabhängig voneinander Transparente Speicherposition der Knoten Elemente haben unterschiedliche Zugriffshäufigkeiten Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.3/21

Abbildung auf Speicher Knoten sind Verbunde, Objekte Speicherabbildung sprachabhängig In Reihenfolge der Aufschreibung (C/C++/...) typsichere Sprachen erlauben Umordnung (Java/Oberon/...) Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.4/21

Abbildung auf Cache Elementreihenfolge nach Aufschreibung: Speicher Cache Zugriffshäufigkeit: häufig mittel selten Häufig benötigte Elemente im Cache verteilt Keine Synergieeffekte Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.5/21

Strukturumordnung Stelle Zugriffshäufigkeiten auf Elemente fest häufiger Zugriff: heißes Element seltener Zugriff: kaltes Element Idee [FK98, CHL00]: Sortiere nach Zugriffshäufigkeit heiße Elemente in gleiche Cachezeile Cachelokalität steigt nicht typsichere Sprache: Übersetzer meldet mögliche Verbesserung Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.6/21

Auswirkung auf den Cache Speicher Cache heiße Elemente werden gemeinsam geladen aber nur ein Verbund pro Cachezeile Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.7/21

Strukturpartitionierung Ziel: verbesserte Cacheausnutzung Idee [FK98, CHL00]: Trenne heiße von kalten Elementen Zusätzliche Indirektion für kalte Elemente Zusätzlicher Speicher für den Zeiger Komplizierte Initialisierung Aber: Mehr Platz im Cache für heiße Elemente Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.8/21

Cachebewußte Allokation malloc beachtet den Cache nicht Ersatz: ccmalloc [CHL00] Zusätzlicher Parameter Zeiger auf gleichzeitig benötigten Partner z.b. Vaterknoten im Baum Platziert neuen Speicher möglichst in derselben Cachezeile wie den Partner Sonst auf gleicher Speicherseite Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.9/21

Verfahren von [FK98] Kombination aus Partitionierung und Allokation Problem: Minimiere Kosten der Indirektion Berechne Elementadresse aus Basisadresse Idee: Allokation gruppiert nach Größenverhältnis: Größe heiße Elemente Größe kalte Elemente Partitioniere entsprechend in mehrere Teile gleicher Größe Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.10/21

Elementzugriff Größenverhältnis ist bekannt durch Programmanalyse Profiling Abstand zum nächsten Block: Cachegröße + Größe einer Cachezeile Kalte Elemente verdrängen heiße nicht Adressen sind beim Übersetzen berechenbar! Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.11/21

Partitionierung im Speicher 1:1 1:2 1:3 Pfeillänge = Cachegröße + Größe einer Cachezeile Große Elemente (Strings,...) verhindern Trennung Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.12/21

Auswirkung auf den Cache Speicher Cache Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.13/21

Halbierung der Teilgrößen Speicher Cache Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.14/21

Gedanken zur Methode Nicht bei allen Verbunden lohnt die Teilung Heiße Elemente müssen häufiger referenziert werden als alle kalten Elemente zusammen [FK98] Problem ist die Identifizierung heißer Elemente Ab wann ist ein Element heiß? Globale vs. lokale Temperatur? Aufwand lohnt nur bei manchen Schleifen und verlangsamt das Programm andernfalls (Ergebnisse [FK98]) Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.15/21

Färbung Problem: kalte Knoten verdrängen heiße Knoten Idee [CHL00]: Partitioniere den Cache p Cachezeilen für heiße Knoten der Rest für kalte Knoten beachte Assoziativität des Cache Implementierung: Lücke im virtuellen Adressraum Lücke als Vielfaches der Seitengröße: kein physikalischer Speicherverschnitt Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.16/21

Auswirkung auf den Cache Cache p Speicher p p p p heiße Knoten können von kalten nicht verdrängt werden Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.17/21

Beispiel 1 2 3 4 5 1 2 3 Speicher 4 5 Cache Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.18/21

Reorganisation Löschen und Einfügen von Knoten zerstört (cachebewußtes) Speicherlayout Umordnung der Knoten zur Wiederherstellung Typsichere Sprache Implizit durch Speicherbereiniger [CHL00] Nicht typsichere Sprache Nur möglich wenn keine Zeiger ins Innere der Struktur existieren Explizit durch Funktionsaufruf (ccmorph [CHL00]) Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.19/21

Zusammenfassung Drei sich ergänzende Strategien cachebewußte Definition cachebewußte Allokation cachebewußte Reorganisation Jede Kombination kann Verbesserung der Laufzeit bewirken Verschlechterung ebenfalls möglich Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.20/21

Quellen Literatur [CHL00] Trishul M. Chilimbi, Mark D. Hill, and James R. Larus. Making pointer-based data structures cache conscious. Computer, 33(12):67 75, December 2000. [FK98] Michael Franz and Thomas Kistler. Splitting data objects to increase cache utilization. Technical Report 98-34, Department of Information and Computer Science, University of California, Irvine, October 1998. Matthias Heil Cacheoptimierung durch Anpassung der Speicheranordnung p.21/21