Compiler für f r Eingebettete Systeme (CfES)

Ähnliche Dokumente
Compilerbau. Wintersemester 2009 / Dr. Heiko Falk

Hochschule Düsseldorf University of Applied Sciences HSD RISC &CISC

Rechnerarchitektur (RA)

Rechnerarchitektur (RA)

Von-Neumann-Architektur

Tutorium Rechnerorganisation

Technische Informatik 1 Übung 8 Instruktionsparallelität (Rechenübung) Andreas Tretter 8./9. Dezember Bitte immer eine Reihe freilassen

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

Tutorium Rechnerorganisation

Arbeitsfolien - Teil 4 CISC und RISC

Besprechung des 5. Übungsblattes Parallelität innerhalb der CPU Pipelining

Das Prinzip an einem alltäglichen Beispiel

Umstellung auf neue Pipeline

Rechnernetze und Organisation

Technische Informatik - Eine Einführung

Programmiersprachen und Übersetzer

Technische Informatik I - HS 18

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

Prinzipieller Aufbau und Funktionsweise eines Prozessors

Compilerbau + Virtuelle Maschinen

Grundlagen der Rechnerarchitektur. MIPS Assembler

C-to-CUDA-Compiler. Johannes Kölsch. October 29, 2012

Lehrveranstaltung: PR Rechnerorganisation Blatt 8. Thomas Aichholzer

FAKULTÄT FÜR INFORMATIK

Einführung. (Compiler) Prof. Dr. Oliver Braun. Letzte Änderung: :49. Einführung 1/26

Martin Stiller, Fakultät Informatik, Institut für Technische Informatik. LLVA: Eine virtuelle Befehlssatzarchitektur

Musterlösungen Technische Informatik 2 (T2) Prof. Dr.-Ing. D. P. F. Möller

Compiler. Einführung. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München. Letzte Änderung:

Compiler: Einführung

Technische Informatik 1 - HS 2016

Rechnerarchitektur. Marián Vajteršic und Helmut A. Mayer

Compiler für f r Eingebettete Systeme (CfES)

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

Grundlagen der Informationsverarbeitung:

Compiler für Eingebettete Systeme

Tutorium Rechnerorganisation

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Beispiele von Branch Delay Slot Schedules

Technische Informatik 1 - HS 2017

Teil 2: Rechnerorganisation

Verteidigung des INF-PM-FP-ANW: Entwicklung einer MIPS-CPU

4. Mikroprogrammierung (Firmware)

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

Übungsblatt 6. Implementierung einer Befehlspipeline

Prozessorarchitektur. Sprungvorhersage. M. Schölzel

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling

, WS2013 Übungsgruppen: Di., Fr.,

Die HAM. Die Hypothetische Akku-Maschine

Philipp Grasl PROZESSOREN

Der von Neumann Computer

Rechnerarchitektur SS TU Dortmund

Informatik II SS Der Kompilationsprozess (-phasen) Schreiben des Programms. Die Organisation eines typischen Compilers

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

2. Der ParaNut-Prozessor "Parallel and more than just another CPU core"

Assembler am Beispiel der MIPS Architektur

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

Data Hazards. Grundlagen der Rechnerarchitektur Prozessor 74

Technische Informatik 1 - HS 2016

Vorstellung (Wdh. für die Neuen )

Compilerbau. Wintersemester 2010 / Dr. Heiko Falk

Rechnernetze und Organisation

RO-Tutorien 3 / 6 / 12

Electronic Design Automation (EDA) Systementwurf

Just-In-Time-Compiler (2)

Allgemeine Lösung mittels Hazard Detection Unit

Prozessorarchitektur. Kapitel 1 - Wiederholung. M. Schölzel

Datenpfad einer einfachen MIPS CPU

nutzt heute Diese Prinzipien werden wir im Kapitel 3 behandelt Lehrstuhl für Informatik 3 - D. Fey Vorlesung GRa - SS

Definition Compiler. Bekannte Compiler

Übung Praktische Informatik II

Optimierungen der Lattice Boltzmann Methode auf x86-64 basierten Architekturen

Programmierkurs II. C und Assembler

a) Erläutern Sie die Begriffe CISC und RISC. Worin liegen die Unterschiede zwischen diesen beiden Architekturen?

Datenpfad einer einfachen MIPS CPU

Mikroprozessoren. Aufbau und Funktionsweise. Christian Richter. Ausgewählte Themen der Multimediakommunikation SS 2005

54. Analysewerkzeuge für Worst-Case Execution Time (Attributanalyse) 54.1 AiT - Worst-Case Execution Time Analyzer. Obligatorische Literatur

Neue Prozessor-Architekturen für Desktop-PC

Just-In-Time-Compiler (2)

Compilerbau. Wintersemester 2010 / Dr. Heiko Falk

Technische Informatik 1 Übung 7 Pipelining (Rechenübung) Balz Maag 22./23. November 2018

Vorlesung Modellierung und Simulation heterogener Systeme

Vorlesung Rechnerarchitektur. Einführung

Rechnerstrukturen 1: Der Sehr Einfache Computer

Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register

Übungsblatt 7 Implementierung von Programmsteuerbefehlen in einer Befehlspipeline Abgabefrist: Mittwoch , 14:00 Uhr

Kap.3 Mikroarchitektur. Prozessoren, interne Sicht

Betriebssysteme Vorstellung

Programmieren von MiniRISC-Prozessor in Assemblersprache

, SS2012 Übungsgruppen: Do., Mi.,

Grundbegriffe der Informatik

Datenpfad einer einfachen MIPS CPU

1. Einführung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Transkript:

Compiler für f r Eingebettete Systeme (CfES) Sommersemester 2009 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung für Eingebettete Systeme

Kapitel 9 Ausblick Folie 2 / 16

Gliederung der Vorlesung Kapitel 1: Compiler für Eingebettete Systeme Kapitel 2: Interner Aufbau von Compilern Kapitel 3: Prepass-Optimierungen Kapitel 4: HIR Optimierungen und Transformationen Kapitel 5: Instruktionsauwahl Kapitel 6: LIR Optimierungen und Transformationen Kapitel 7: Register-Allokation Kapitel 8: Compiler zur WCET EST -Minimierung Kapitel 9: Ausblick Instruktionsanordnung Retargierbarkeit Folie 3 / 16

Motivation Quell- Code Level IR Lexikalische Analyse Low- Code- Optimierung Register- Allokation Token- Folge High- Level IR Low- Low- Level IR Syntaktische Syntax- Analyse Baum High- Instruktions- Auswahl Instruktions- Anordnung Level IR ASM Code Semantische Analyse Code- Optimierung Level IR 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 Folie 4 / 16

Pipeline-Verarbeitung (1) Eine triviale Prozessor-Pipeline: Fetch Decode Execute Write Back 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. Folie 5 / 16

Pipeline-Verarbeitung (2) Eine triviale Prozessor-Pipeline: Fetch Decode Execute Write Back Jede Stufe der Pipeline arbeitet i.d.r. in einem Taktzyklus Zu einem Zeitpunkt t kann die Pipeline parallel vier verschiedene Befehle enthalten: Befehl i 1 in Fetch-Phase, i 2 : Decode, i 3 : Execute, i 4 : Write Back Im Idealfall beendet eine volle Pipeline mit jedem Taktzyklus die Abarbeitung eines Befehls Dieser Idealzustand kann jedoch sehr leicht gestört werden... Folie 6 / 16

Pipeline-Verarbeitung (3) Mögliche Störungen des Ablaufs einer Pipeline: Datenabhängigkeiten bei Speicherzugriffen: Ein Lade-Befehl i 1 sei in Execute-Phase. Ein anderer Befehl i 2, der das Register benutzt, das i 1 aus dem Speicher lädt, sei in Decode- Phase. Da der Speicherzugriff von i 1 i.d.r. mehrere Takte dauert, muß die Pipeline für diese Dauer angehalten werden. Sprünge: Ein Sprung wird in der Execute-Phase ausgeführt, so daß 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 Adresse des Sprungziels erst neu zu füllen. Folie 7 / 16

Anordnung von Instruktionen Grundsätzliche Idee: Maschinenbefehle können in einem Programm in beliebiger Reihenfolge umgeordnet werden, solange zwischen je zwei Befehlen i 1 und i 2......Datenabhängigkeiten beachtet werden. Wenn z.b. i 1 ein Register benutzt, das i 2 definiert, darf i 1 im Code nicht hinter i 2 angeordnet werden....kontrollabhängigkeiten beachtet werden. Wenn z.b. aufgrund des Kontrolflusses gilt, daß eine Ausführung von i 1 stets eine Ausführung von i 2 nach sich zieht, so dürfen i 1 und i 2 nicht so umgeordnet werden, daß diese Beziehung später nicht mehr gilt. Folie 8 / 16

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 / hinten im Code verschieben, ohne die Korrektheit des Programms zu verletzen. Ein Scheduler im Compiler kann diese Intervalle nun ausnutzen, um den Code so umzuordnen, daß die Prozessor-Pipeline(s) möglichst wenig gestört werden. Bsp. Datenabhängigkeiten: Schiebe einen weiteren Befehl i 3 zwischen Lade-Befehl i 1 und i 2. Bsp. 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. Bsp. TriCore: Ordne Befehle so an, daß alle 3 Pipelines stets laufen. Folie 9 / 16

Gliederung der Vorlesung Kapitel 1: Compiler für Eingebettete Systeme Kapitel 2: Interner Aufbau von Compilern Kapitel 3: Prepass-Optimierungen Kapitel 4: HIR Optimierungen und Transformationen Kapitel 5: Instruktionsauwahl Kapitel 6: LIR Optimierungen und Transformationen Kapitel 7: Register-Allokation Kapitel 8: Compiler zur WCET EST -Minimierung Kapitel 9: Ausblick Instruktionsanordnung Retargierbarkeit Folie 10 / 16

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? Folie 11 / 16

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 4) ist schlecht retargierbar. Zum Retargieren müssen Code-Selektion, sämtliche LIR-Optimierungen, Register-Allokator und Scheduler zu großen Teilen neu implementiert werden. Folie 12 / 16

Ein besser retargierbarer Compiler Quell- Code Frontend ASM Code Medium- Level IR Code Medium- Optimierung Level IR Low- Instruktions- Anordnung Level IR Low- Instruktions- Auswahl Register- Allokation Level IR Eigenschaften: Statt einer HIR enthält dieser Compiler eine MIR und LIR. Sämtliche Code-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 zur Retargierung des Backends bleibt bestehen. Folie 13 / 16

Automatische Compiler-Konstruktion Beschreibung Ziel- Architektur Framework zur Compiler- Konstruktion IR CS- RT-Libs RA- Frontend IA- Compiler Optimierungen Compiler-Konstruktion: Ausgangspunkt ist eine Beschreibung des Ziel-Prozessors entweder in HW-Beschreibungssprache (z.b. VHDL) oder in System-Beschreibungssprache (z.b. SystemC oder Lisa) Aus dieser Beschreibung heraus wird automatisch ein Compiler- Backend erzeugt. Folie 14 / 16

Automatische Compiler-Konstruktion Beschreibung Ziel- Architektur Framework zur Compiler- Konstruktion IR CS- RT-Libs RA- Frontend IA- Compiler Optimierungen 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 Features der Register-Files extrahiert, um einen Register-Allokator zu generieren. (Analog für einen Scheduler) Folie 15 / 16

Automatische Compiler-Konstruktion Beschreibung Ziel- Architektur Framework zur Compiler- Konstruktion IR CS- RT-Libs RA- Frontend IA- Compiler Assembler Linker Optimierungen Simulator 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. Folie 16 / 16