Compiler für Eingebettete Systeme [CS7506]

Slides:



Advertisements
Ähnliche Präsentationen
CPI Der einzelne Befehl braucht immer noch 5 Zyklen (stimmt nicht ganz, einige brauchen weniger!) Was verbessert wird, ist der Durchsatz = #Befehle /
Advertisements

Leistung.
Befehlssatz und Struktur
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
Technische Universität Dortmund
Technische Universität Dortmund
1 Energiebewusste Compilierung für digitale Signalprozessoren Markus Lorenz Peter Marwedel Universität Dortmund Lehrstuhl Informatik XII Projekt Prozessorarchitekturen.
WS 2009/10 1 Systeme 1 Kapitel 1 Aufbau von Rechnern.
Parser generieren Yet Another Compiler – Compiler YACC.
Kapitel 3 5 Rechnerorganisation
EPIC, IA-64 und Itanium Eine Kurzpräsentation von Jan Hübbers bei Prof. Dr.-Ing. Risse im Fach Labor Rechnerstrukturen an der Hochschule Bremen
Duo- und Quad Prozessor-Architektur
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
Signal-Prozessoren DSV1, 2009, Hhrt, 1 Mikro-Prozessor Von Neumann-Architektur Daten und Programmcode im gleichen Speicher => Sequenzieller Zugriff auf.
Rechnerarchitekturen
Der Prozessor Von Stephan Blum.
Lernfeld 4: Informationstechnische Systeme Bereitstellen
Quick Response Codes Quick Response Codes Schlüsseltechnologien der Informationsgesellschaft Präsentation: Christine Hackenbuchner
Einführung. Ziel der Veranstaltung  Vermittlung von Grundkenntnissen in C++  Solide Basis für anschließende Weiterentwicklung  Fähigkeit, kleine Programme.
Key-Value Paare (KVP) - Metadaten für Kanäle speichern und nach MDF4 exportieren PM (V1.0)
IS: Datenbanken, © Till Hänisch 2000 Relationenalgebra Die mathematische Grundlage von relationalen Datenbanken.
Seminar Softwareproduktlinien Domänenspezifische Sprachen Sascha Draffehn von.
1 Das Dilemma des Architekten Ziel: ein gut designtes System, welches mit zukünftigen Anforderungen umgehen kann, ohne dass es zu Einschränkungen in der.
Praktische Informatik 1
Seminar im Fach Geoinformation IV
Hello World! Javakurs 2013 Arne Kappen
Der dritte Schiedsrichter
Lösung der Aufgabe 1: Die Erweiterung des Diagramms auf „Winged Egde“ besteht in zwei Beziehungen, nr-Kante und vl-Kante, zwischen der Klasse Kante. Jede.
Musterlösung zur Klausur "Diskrete Mathematik" vom
Das Problem des Handlungsreisenden
oder Womit genau ein Prozessor seine Zeit verbringt
Mitmachen im Web Jeder hat eine besondere Fähigkeit, die für andere nützlich ist. Das Web führt Menschen zusammen um gemeinsam Dinge zu schaffen, die.
VHDL-Modellierung der Pipeline eines DLX-Prozessors
Vom HW-Automaten zum Prozessor
Vorlesung #5 Überführung (Fortsetzung) / Normalformen
Sequential Function Chart
Compiler für Eingebettete Systeme [CS7506]
Grundlagen der Rechnerarchitektur [CS ]
Compiler für Eingebettete Systeme [CS7506]
Übung: Star Wars - Erbaue eine Galaxie mit Hilfe von Code
Grundlagen der Rechnerarchitektur [CS ]
Compiler für Eingebettete Systeme [CS7506]
Compiler für Eingebettete Systeme [CS7506]
Compiler für Eingebettete Systeme [CS7506]
Graphen.
Mensch-Maschine-Interaktion
Compiler für Eingebettete Systeme [CS7506]
Einführung in die Programmierung
Methodische Grundlagen des Software-Engineering
Programmierung eines Computers (Funktionsweise)
Algorithmen und Datenstrukturen
1. Die rekursive Datenstruktur Liste 1
9. Vererbung und Polymorphie
Mathematik Thema: Konstruktion von Dreiecken
Pflichtteil 2016 Aufgabe 6: Gegeben ist die Gerade
COCOMO-Methode & FPA-Methode
Wahlteil 2016 – Aufgabe B 1 Aufgabe B 1.1 In einem Koordinatensystem beschreiben die Punkte
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
Von Wietlisbach, Lenzin und Winter
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
Spiegelungen Punkt an Gerade Punkt an Ebene Gerade an Ebene
Abiturprüfung Mathematik 2015 Baden-Württemberg Allgemeinbildende Gymnasien Wahlteil Analytische Geometrie / Stochastik Aufgabe B 2.1 und B Lösungen.
Dieses Bild benutze ich gerne als Testbild, um den Beamer einzustellen und in eine geeignete Position vor der Kreidetafel zu bringen. Es folgen verschiedene.
Die Wasserfallmethode Projektmanagement SS19 Friedemann Lieberenz 17
Dieses Bild benutze ich gerne als Testbild, um den Beamer einzustellen und in eine geeignete Position vor der Kreidetafel zu bringen. Es folgen verschiedene.
Einführung in die Programmierung
Algorithmen und Datenstrukturen
Ausführung der Würfe Regel 15 sowie 10,11 und 12.
Schmock Mutter nicht ausreichend versorgt  fast verhungert Mutter bei Geburt verstorben Schmock mit Flasche aufgezogen.
 Präsentation transkript:

Compiler für Eingebettete Systeme [CS7506] Sommersemester 2014 Heiko Falk Institut für Eingebettete Systeme/Echtzeitsysteme Ingenieurwissenschaften und Informatik Universität Ulm

Kapitel 10 Ausblick

Inhalte der Vorlesung Einordnung & Motivation der Vorlesung Compiler für Eingebettete Systeme – Anforderungen & Abhängigkeiten Interner Aufbau von Compilern Prepass-Optimierungen HIR Optimierungen und Transformationen Instruktionsauswahl LIR Optimierungen und Transformationen Register-Allokation Compiler zur WCETEST-Minimierung Ausblick © H. Falk | 24.11.2018 10 - Ausblick

Inhalte des Kapitels Ausblick Instruktionsanordnung Retargierbarkeit © H. Falk | 24.11.2018 10 - Ausblick

Motivation Instruktionsanordnung (Scheduling) Umordnen von Maschinenbefehlen zur Erhöhung der Parallelität Einfügen von NOP-Befehlen zur Erhaltung der Code-Korrektheit Wegen Kürze der Zeit in Vorlesung nicht weiter behandelt Lexikalische Analyse Token- Folge Syntaktische Analyse Syntax- Baum Semantische Analyse Quell- Code Level IR High- Code- Optimierung Low- Level IR Instruktions- Auswahl High- Level IR Code- Optimierung Level IR Low- Register- Allokation Low- Level IR Instruktions- Anordnung ASM Code © H. Falk | 24.11.2018 10 - Ausblick

Pipeline-Verarbeitung (1) Eine einfache Prozessor-Pipeline Fetch: Holt den nächsten auszuführenden Befehl aus dem Speicher Decode: Dekodiert den Befehl und zerlegt diesen in Opcodes, Operanden, Adressierungsmodi, ... Execute: Führt einen Befehl gemäß Opcodes und Operanden aus. Das Ergebnis der Ausführungsphase wird in einem internen Zwischenregister gepuffert Write Back: Schreibt den Inhalt des Puffer-Registers in das Registerfile des Prozessors zurück Fetch Decode Execute Write Back © H. Falk | 24.11.2018 10 - Ausblick

Pipeline-Verarbeitung (2) Eine einfache Prozessor-Pipeline Jede Stufe der Pipeline arbeitet i.d.R. in einem Taktzyklus Zu einem Zeitpunkt t kann die Pipeline parallel vier verschiedene Befehle enthalten: Befehl i1 in Fetch-Phase, i2: Decode, i3: Execute, i4: Write Back Im Idealfall beendet eine volle Pipeline mit jedem Taktzyklus die Abarbeitung eines Befehls Dieser Idealzustand kann jedoch sehr leicht gestört werden... Fetch Decode Execute Write Back © H. Falk | 24.11.2018 10 - Ausblick

Mögliche Störungen des Ablaufs einer Pipeline Datenabhängigkeiten bei Speicherzugriffen Ein Lade-Befehl i1 sei in Execute-Phase. Ein anderer Befehl i2, der das Register benutzt, das i1 aus dem Speicher lädt, sei in Decode-Phase Da der Speicherzugriff von i1 i.d.R. mehrere Takte dauert, muss die Pipeline für diese Dauer angehalten werden. Sprünge Ein Sprung wird in der Execute-Phase ausgeführt, so dass die dem Sprung folgenden Befehle bereits in Fetch und Decode enthalten sind Wird der Sprung genommen, sind Fetch- und Decode-Stufen zu leeren und ab der Adresse des Sprungziels erst neu zu füllen © H. Falk | 24.11.2018 10 - Ausblick

Anordnung von Instruktionen Grundsätzliche Idee Maschinenbefehle können in einem Programm in beliebiger Reihenfolge umgeordnet werden, solange zwischen je zwei Befehlen i1 und i2 ... ... Datenabhängigkeiten beachtet werden. Wenn z.B. i2 ein Register benutzt, das i1 definiert, darf i1 im Code nicht hinter i2 angeordnet werden. ... Kontrollabhängigkeiten beachtet werden. Wenn z.B. aufgrund des Kontrollflusses gilt, dass eine Ausführung von i1 stets eine Ausführung von i2 nach sich zieht, so dürfen i1 und i2 nicht so umgeordnet werden, dass diese Beziehung nicht mehr gilt. © H. Falk | 24.11.2018 10 - Ausblick

Instruktions-Scheduling im Compiler Grundsätzliche Idee Für jede Instruktion i kann man ein Intervall [v, h] bestimmen: Um wie viele Instruktionen kann man i nach vorne (v) / hinten (h) im Code verschieben, ohne die Korrektheit des Programms zu verletzen? Ein Scheduler im Compiler kann diese Intervalle nun ausnutzen, um den Code so anzuordnen, dass die Prozessor-Pipeline(s) möglichst wenig gestört werden Beispiel Datenabhängigkeiten: Schiebe einen weiteren Befehl i3 zwischen Lade-Befehl i1 und i2 Beispiel Sprünge: Schiebe 1 oder 2 Befehle, von denen ein Sprung i nicht datenabhängig ist, hinter i, um die sog. Delay-Slots zu füllen Beispiel TriCore: Ordne Befehle so an, dass alle drei Pipelines stets laufen © H. Falk | 24.11.2018 10 - Ausblick

Inhalte des Kapitels Ausblick Instruktionsanordnung Retargierbarkeit © H. Falk | 24.11.2018 10 - Ausblick

Motivation Bisherige Sichtweise auf einen Compiler Ein Ziel-Prozessor P sei fest vorgegeben. Dann besteht die Aufgabe darin, einen Übersetzer von einer Quell- in die Maschinensprache von P zu konstruieren, mit möglichst hoher Codequalität. Die meisten Komponenten des Compilers brauchen Detailwissen über die Architektur von P. Dieses Wissen ist fest in die einzelnen Phasen / Optimierungen des Compilers einprogrammiert Was, wenn man statt eines Compilers für P einen für P’ braucht? Alle Compiler-Komponenten für P’ neu programmieren...? © H. Falk | 24.11.2018 10 - Ausblick

Retargierbarkeit Retargierbarkeit Ist die Fähigkeit, einen Compiler an eine andere Ziel-Architektur (target architecture) anzupassen. Bisherige Compiler-Struktur Die bisher in dieser Vorlesung betrachtete Struktur von Compilern ( siehe Folie 5) ist schlecht retargierbar. Zum Retargieren müssen Code-Selektion, sämtliche LIR-Optimierungen, Register-Allokator und Scheduler zu großen Teilen neu implementiert werden. © H. Falk | 24.11.2018 10 - Ausblick

Ein besser retargierbarer Compiler Eigenschaften Statt einer HIR enthält der Compiler eine MIR und LIR Sämtliche Optimierungen finden auf MIR-Ebene statt, sind daher prozessorunabhängig und brauchen nicht retargiert werden Hochgradig spezielle Optimierungen, die komplexe Prozessor-Features ausnutzen, sind nur schwer bis gar nicht zu integrieren Aufwand zum Retargieren des Backends bleibt bestehen Medium- Level IR Code Optimierung Medium- Level IR Instruktions- Auswahl Quell- Code Frontend Level IR Low- Instruktions- Anordnung Low- Level IR Register- Allokation ASM Code © H. Falk | 24.11.2018 10 - Ausblick

Automatische Compiler-Konstruktion (1) Ausgangspunkt ist eine Beschreibung des Ziel-Prozessors entweder in einer Hardware-Beschreibungssprache (z.B. VHDL) oder in System-Beschreibungssprache (z.B. SystemC oder Lisa) Aus dieser Beschreibung heraus wird automatisch ein Compiler-Backend erzeugt. Framework zur Compiler- Konstruktion Compiler Beschreibung Ziel- Architektur CS- Generator RA- Generator IA- Generator © H. Falk | 24.11.2018 10 - Ausblick

Automatische Compiler-Konstruktion (2) Compiler-Konstruktion (Fortsetzung) Aus der Prozessor-Beschreibung wird der komplette Befehlssatz des Prozessors extrahiert. Mit diesem wird dann eine vollständige Baum-Grammatik zur Generierung des Code-Selektors erzeugt. Analog werden Merkmale des Registersatzes extrahiert, um einen Register-Allokator zu generieren. (Analog für einen Scheduler) Framework zur Compiler- Konstruktion Compiler Beschreibung Ziel- Architektur CS- Generator RA- Generator IA- Generator © H. Falk | 24.11.2018 10 - Ausblick

Automatische Compiler-Konstruktion (3) Compiler-Konstruktion (Fortsetzung) Diese Backend-Komponenten werden mit „vorgefertigten“ Standard-Komponenten gekoppelt, die die zentrale IR, das Frontend sowie IR-Optimierungen und Laufzeit-Bibliotheken bereitstellen. Neben einem Compiler kann ein solches Framework zusätzlich Assembler, Linker und Zyklus-genauen Simulator generieren. Framework zur Compiler- Konstruktion Compiler Beschreibung Ziel- Architektur IR RT-Libs Frontend Assembler Linker CS- Generator RA- Generator IA- Generator Optimier- ungen … Simulator © H. Falk | 24.11.2018 10 - Ausblick