Einführung in die Systemprogrammierung



Ähnliche Dokumente
Einführung in die Systemprogrammierung 03

Einführung in die Systemprogrammierung 03

Einführung in die Systemprogrammierung 03

é Er ist software-transparent, d.h. der Benutzer braucht nichts von seiner Existenz zu wissen. Adreßbus Cache- Control Datenbus

Besprechung des 8. Übungsblattes Einführung in Caches Cache-Organisation Cache-Ersetzungsstrategien Aufgaben (an der Tafel) Testklausur

Tutorium Rechnerorganisation

Besprechung des 9. Übungsblattes Virtuelle Speicherverwaltung Aufgaben

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Technische Informatik 1 - HS 2017

Grundlagen der Informatik III Wintersemester 2010/2011

Cache. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

Speicher. Speicher. Speicherhierarchie. Speicher. Interessante Zahlen:

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

Paging. Einfaches Paging. Paging mit virtuellem Speicher

Grundlagen der Informationsverarbeitung:

Lösungsvorschlag zur 5. Übung

Grob-Struktur des Prozessor-Speichersystems

Cache Kohärenz. von Rainer Leisen

1. räumliche Lokalität - Nach dem Zugriff auf eine bestimmte Adresse erfolgt in naher Zukunft ein erneuter Zugriff auf ein dazu benachbartes Datum.

6 Exkurs: Assoziativspeicher

6 Exkurs: Assoziativspeicher (2) 6 Exkurs: Assoziativspeicher. 7.1 Speicherhierarchie. 7 Caches

Name: Vorname: Matr.-Nr.: 4. a) RISC-Architekturen müssen zur Decodierung von Maschinenbefehlen stets ein mikroprogrammierbares Steuerwerk verwenden.

Einführung in die Systemprogrammierung

Lehrveranstaltung: PR Rechnerorganisation Blatt 10. Thomas Aichholzer

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Arbeitsfolien - Teil 4 CISC und RISC

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 9 und Präsenzaufgaben Übung 10

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

236 6 Fortgeschrittene Java-Konzepte für Nebenläufigkeit ***

Datenpfaderweiterung Der Single Cycle Datenpfad des MIPS Prozessors soll um die Instruktion min $t0, $t1, $t2 erweitert werden, welche den kleineren

Einführung in die Systemprogrammierung

Grundlagen der Rechnerarchitektur. MIPS Assembler

Beispielhafte Prüfungsaufgaben zur Vorlesung TI I, gestellt im Frühjahr 2009

Tutorium Rechnerorganisation

Grundlagen der Rechnerarchitektur. Ein und Ausgabe


Übung Praktische Informatik II

Grundlagen der Rechnerarchitektur. Speicher

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

, 2014W Übungsgruppen: Mo., Mi.,

Technische Informatik - Eine Einführung

Grafikkarten-Architektur

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Übungsblatt 10 (Block C 2) (16 Punkte)

Vorlesung Rechnerarchitektur. Speicher V 1.2

Übung Praktische Informatik II

Konzepte von Betriebssystemkomponenten Disk-Caches und Dateizugriff

Aufgabe 4 : Virtueller Speicher

Übung zu Einführung in die Informatik # 10

Data Hazards. Grundlagen der Rechnerarchitektur Prozessor 74

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

Technische Informatik II Wintersemester 2002/03 Sommersemester Heiko Holtkamp

Rechner Architektur. Martin Gülck

Algorithmen und Datenstrukturen Laufzeitabschätzung

Cache-Speicher. Design Digitaler Systeme. Prof. Dr.-Ing. Rainer Bermbach

Einführung in die Systemprogrammierung

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d Technische Informatik I Übung 3. Technische Informatik I Übung 3

Von-Neumann-Architektur

4.2 Verbesserung der Leistungsfähigkeit von Caches

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Verbesserung der Leistungsfähigkeit von Caches

Computational Engineering I

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

G. Caches. G.1.1 Kontext & Orientierung

Algorithmen und Datenstrukturen 1 Kapitel 4.1

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Viola-Jones Gesichtserkennung mit WebGL

ZENTRALEINHEITEN GRUPPE

Paragon System Upgrade Utilities Leitfaden: System aus einem zuvor erstellten Sicherungsarchiv virtualisieren

Optimierungen der Lattice Boltzmann Methode auf x86-64 basierten Architekturen

8 Cache. 8.1 Motivation. 8.1 Motivation 335

Assembler am Beispiel der MIPS Architektur

Technische Realisierung (1)

(Cache-Schreibstrategien)

Projekt Systementwicklung

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

, 2015W Übungsgruppen: Mo., Mi.,

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung

Vorlesung 1 Medizininformatik. Sommersemester 2017

Virtueller Speicher und Cache. VL5 GRT, SS 2004, Kneisel

Prinzipieller Aufbau und Funktionsweise eines Prozessors

Fachgebiet Architektur eingebetteter Systeme Rechnerorganisation Wiederholung

Das Laden der Instruktionen erreicht eine Cache-Hit Rate von 90%.

Drucken und Löschen von angehaltenen Druckaufträgen

Speicherverwaltung (Swapping und Paging)

Datenpfad einer einfachen MIPS CPU

Aufgabe 1 : Assembler

Datenpfad einer einfachen MIPS CPU

Technische Informatik 1 Übung 6 Pipelining (Rechenübung) Andreas Tretter 24./25. November 2016

Instruktionen pro Takt

Einführung in die Informatik

Speicher. Rechnerarchitektur (RA) Sommersemester Prof. Dr. Jian-Jia Chen 2016/06/15. technische universität dortmund

früher: CISC ( Complex Instruction Set Computer )

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

Wie groß ist die Page Table?

Transkript:

Einführung in die Systemprogrammierung Caches in der Praxis Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 17. Juli 2015

Cache-Architektur Mehrere Cache-Stufen, z.b.: Speicherplatz Zugriffszeit Reg. 1 kib sofort L1 64 kib 4 Zyklen L2 256 kib 10 Zyklen L3 8 MiB 40 75 Zyklen Arbeitsspeicher 512 GiB 200 Zyklen Festspeicher groß > 100000 Zyklen L1-Cache wird meist getrennt in: Instruktionscache (I-Cache) Datencache (D-Cache)

Modifizierte Harvard-Architektur Trennung in Instruktions- und Datencaches ergibt Struktur wie in Harvard-Architektur Lesen, Schreiben, Ausführen prinzipiell mit allen Speicheradressen weiter möglich Ausführung fließt durch I-Cache Lesen/Schreiben fließt durch D-Cache I-Cache D-Cache PSp Reg ALU DSp Reg

Speicherlayout mit Caches (Beispiel) Prozessor Arbeitsspeicher Northbridge Kern Kern L1I L1D L2 L1I L1D L2 L3 Southbridge Kern Kern L1I L1D L1I L1D L2 L2 Festspeicher

Weitere Cache-Details Zeilengröße: Cachezeilen sind meist größer als ein Byte Datenteilung zwischen Caches: Dupliziert L1 die L2 (L2 die L3,... )-Inhalte? Prefetching: Speicher laden, bevor er benötigt wird

Cachezeilengröße und Räumliche Lokalität Räumliche Lokalität: Daten, die im Speicher nahe beieinander liegen, werden oft zusammen gelesen/geschrieben

Zeilengröße Caches wie bisher gezeigt nutzen temporale Lokalität Nutzung von räumlicher Lokalität: Ein Rechner mit 64-Bit-Registern schreibt/liest meist 32 oder 64 Bit (n k ) gleichzeitig Wir können mehrere Bytes pro Cache-Zeile speichern Mehr als 8 Bytes: hilft bei Zeichenketten und anderen Datenstrukturen Hintere k bit werden als Indizes in Werteintrag in Cachezeile verwendet Adresse: 1010 01 10 V Tag Wert Index.................. 00 1 1010 0x00112233......... 01.................. 10.................. 11

Direkt abgebildeter Cache: Erweitertes Beispiel Cachezeilengröße 32 Bit V Tag Cachezeile Idx 00 01 10 11 0...... 000 0...... 001 lbu $t0, 0b1100100101($0) Fehlz. 01... 110... 464F4F42 010 lbu $t0, 0b1100101111($0) Treffer 0...... 011 0...... 100 0...... 101 0...... 110 0...... 111 Speicherinhalt Adresse 000 00101 010 011 100 101 110 111 0b11000... A4 FF C3 10 e8 03 01 02 0b11001... 46 4F 4F 42 41 52 00 62

Realistischer satzassoziativer L1-Cache Haswell, L1 Datencache: Adresse: 0000 0000 1000 0101 1001 00 01 0000 Satz-Index: 6 Bits Tag: 36 Bits Bytenr. in Cachezeile: 6 Bits 2 15 Bytes (= 32 kib) insgesamt im Cache 2 6 = 64 Bytes Cachezeilengröße 2 6 = 64 Cachesätze 2 3 = 8-fach satzassoziativ 2 9 = 512 Cache-Zeilen

Datenteilung zwischen Caches Inklusive Cacheteilung Daten in L1 müssen auch in L2 liegen Daten in L2 müssen auch in L3 liegen Vereinfacht Kommunikation zwischen Prozessorkernen (z.b. Intel seit Core) L1 L2 0100 0100 0E20 0E20 0730 0050 Exklusive Cacheteilung Daten dürfen nicht gleichzeitig in mehreren Caches liegen Nutzt Cache-Speicher besser aus (z.b. AMD Athlon) L1 L2 0100 AF90 0E20 AF80 0730 0050

Prefetching Wenn wir vorhersagen könnten, welche Daten gelesen werden müssen, könnten wir Caches weiter beschleunigen Prefetching: Laden von Werten in den Cache, bevor sie benötigt werden Bessere Nutzung räumlicher Lokalität Varianten: Explizit: Programm löst prefetching aus: uldl zero, 0(t2) (Lesen in $zero-register, Alpha) Prozessor läd Wert in Cache, hält Programm nicht an Implizit: Prozessor sagt Zugriff heuristisch voraus Herausforderungen: Falsche Adresse geladen: Speicherbandbreite/Cachezeile verschwendet Zu früh geladen: Wert evtl. gelöscht vor Nutzung Zu spät geladen: Prefetch hilft nur teilweise

k-schritt prefetching Häufiges Speicherzugriffsmuster: la $t0, adresse loop: lw 0($t0) addi $t0, $t0, 40... j loop Wir lesen von adresse, adresse+40, adresse+80, adresse+120, adresse+160,... k-schritt prefetching (k-stride prefetching): Erkennt Lesezugriffe nahe beieinander mit konstanter Schrittgröße Löst automatische prefetches aus Von vielen modernen Prozessoren unterstützt

Zusammenfassung: Cache-Eigenschaften Cache-Typ k-fach satzassoziativ Sonderfälle: Direkt abgebildet (k = 1) Vollassoziativ (k = #Einträge) Zeilengröße / Blockgröße (Bytes pro Cache-Zeile) Ersetzungsstrategie (für assoziative Caches): LRU Zufällig Inklusiver Cache / Exklusiver Cache Prefetch ermöglicht frühes Laden

Zusammenfassung: Caches Ausnutzung von temporaler und räumlicher Lokalität Teil der Speicherhierarchie: L1, L2, L3,... Trennung von L1 in Daten- und Instruktionscache