Diplomarbeit Antrittsvortrag



Ähnliche Dokumente
Diplomarbeit Abschlussvortrag

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Objektorientierte Programmierung

Java Virtual Machine (JVM) Bytecode

J.5 Die Java Virtual Machine

2. Semester, 2. Prüfung, Lösung

Haskell auf der Überholspur mit LLVM. Henning Thielemann

Einführung in die C-Programmierung

Vorkurs Informatik WiSe 15/16

10 Erweiterung und Portierung

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Zählen von Objekten einer bestimmten Klasse

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

I.1 Die Parrot Assemblersprache

Einführung in die Programmierung (EPR)

Datentypen: Enum, Array, Struct, Union

Operator-Kostenmodelle für Fortschrittsschätzung und Opt. Datenbanksystemen

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

J.6 Programmierung eingebetteter Systeme

Entwicklung einer echtzeitfähigen CLI-Laufzeitumgebung für den Einsatz in der Automatisierungstechnik

WSO de. <work-system-organisation im Internet> Allgemeine Information

Hardware Virtualisierungs Support für PikeOS

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Objektbasierte Entwicklung

Prinzipien Objektorientierter Programmierung

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Informatik Repetitorium SS Volker Jaedicke

ASD ZSS. RZ-Süd (LfStaD) Internet

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Anpassung einer freien SSL/TLS Implementierung an die Kertasarie VM

Professionelle Seminare im Bereich MS-Office

Ihre Fragen unsere Antworten rund um die Fusion der Sparkassen Wesel und Dinslaken-Voerde-Hünxe. Mehrwert der Fusion. Das Wichtigste vorab:

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Nebenläufige Programmierung

Tutorium Rechnerorganisation

Klausur in Programmieren

backy Image-basiertes Backup für virtuelle Maschinen Christian Kauhaus Chemnitzer Linux-Tage 2016

Fakultät Angewandte Informatik Lehrprofessur für Informatik

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Durch die virtuelle Optimierung von Werkzeugen am Computer lässt sich die reale Produktivität von Servopressen erhöhen

Einführung in die Programmierung

Domänenanalyse Threadverwaltung/Scheduling

Implementation of a Framework Component for Processing Tasks within Threads on the Application Level

Proseminar Technische Informatik A survey of virtualization technologies

Grundkonstrukte der Objektorientierung in Java, C# und C++

Einführung in Betriebssysteme

Europass in Wiener Schulen

C++ Tutorial: Timer 1

Einführung in die Programmierung

Leseprobe. Thomas Konert, Achim Schmidt. Design for Six Sigma umsetzen ISBN: Weitere Informationen oder Bestellungen unter

Wir machen neue Politik für Baden-Württemberg

wie / warum, wann, Braucht die Schweiz zum Heizen mehr oder weniger als ein Drittel der Gesamtenergie?

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

DLLs (dynamic loaded libraries) mit MingW erstellen

Seminar Programmierung und Reaktive Systeme

Neue Methoden in der Vermittlung von Betriebssystemkenntnissen

Praktikum: Einstieg: Arbeitsplatz, JCreator

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!.

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

FRONT CRAFT.

Die Programmiersprache C99: Zusammenfassung

Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise?

Applications Applets (eingeschränkte Rechte)

Online Tauschen und Verschenken.. Konrad-Adenauer-Stiftung. "Was du verschenkst, ist nicht verloren" (Mahatma Ghandi)

Die Deutsche Employer Branding Akademie in 3 Minuten

Built to last: Modernisierung von Java-Anwendungen

Informatik I (D-MAVT)

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

1 Einleitung. 1.1 Motivation und Zielsetzung der Untersuchung

Objektorientierte Programmierung für Anfänger am Beispiel PHP

3 Windows als Storage-Zentrale

Cover.indd :06:56

Kommunalwahl 2014 Stolberg

Ausbildungsberuf. Fachinformatiker/-in Systemintegration

Funktionale GUI-Programmierung in Haskell mit Grapefruit

Scala kann auch faul sein

Studie Autorisierungsverfahren Online-Banking n = 433, Befragungszeitraum: Februar bis März 2014

Benchmark MES Anbietern

Auswertung JAM! Fragebogen: Deine Meinung ist uns wichtig!

Regressionsanalyse zur Optimierung von künstlichen neuronalen Netzen bei der DAX-Prognose

Was unterscheidet Microcontroller von einem PC ( Laptop ) oder einem Handy

Vortrag zum Seminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Bruno Kleinert 20. Juni 2007

Von Perimeter-Security zu robusten Systemen

Worum geht es in diesem Projekt?

Einführung in PHP. (mit Aufgaben)

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 7: Prozesse und Möglichkeiten

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Effiziente Java Programmierung

Information zum wissenschaftlichen Arbeiten

Bildquelle:

Wir wollten schon immer ruhig schlafen. Rundum versichert mit der Kompakt-Police.

4. AuD Tafelübung T-C3

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Transkript:

Diplomarbeit Antrittsvortrag Christian Müller Run-time byte code compilation, interpretation and optimization for Alice Betreuer: Guido Tack Verantwortlicher Prof.: Gert Smolka

Die nächsten 15 Minuten... Was ist Alice? Was ist Seam? Bestehende Ansätze zur Ausführung von Alice Code Neuer Ansatz und Optimierungen

Was ist Alice? Am Lehrstuhl entwickelte Erweiterung von Standart ML Nebenläufigkeit Lazy Linking von Komponenten Verteilte und offene Programmierung Grundlage: Abstrakte Repräsentation von Code und Daten Abstrakt Uniformität von Code und Daten, Plattform unabhängig Alice Abstract Code Hochgradig dynamische Sprache

Was ist Seam? Simple Extensible Abstract Machine Am Lehrstuhl entwickeltes Framework zur einfachen Implementierung von Virtuellen Maschinen (VMs) Unterstützung von Nebenläufigkeit Speicherverwaltung (Garbage Collection und Memory Layout) Abstraktes Ausführungsmodell

Seam Ausführungs-Modell Scheduler koordiniert thread 1 thread 2... task 1 task 2... Interpreter führt aus task m thread n Thread Pool Task Stack Task / Stack Frame

Alice Seam VM Zwei Ansätze existieren: 1. Interpretiere den abstrakten Code Einfache, gut zu wartende Struktur Plattform unabhängig Aber: naiv und langsam 2. Erzeuge zur Laufzeit Maschinencode Jitting Etwa 3x so schnell Aber: komplexe, kaum zu wartende Struktur Aber: nicht Plattform unabhängig

Neuer Ansatz: Bytecode Jitting Erzeuge Bytecode anstelle von Maschinencode Führe Bytcode auf einem Interpreter aus Struktur der Arbeit 1. Spezifikation eines Bytecodes für Alice 2. Implementierung eines Interpreters auf Seam 3. Entwicklung eines Bytecode Jitters 4. Optimierung des Jitters und Interpreters

Stand der Arbeit Vertraut machen mit der Architektur und Literaturrecherche Erste Spezifikation eines Bytecodes Implementierung eines Assemblers in Alice Beginn der Implementierung eines Interpreter-Prototyps Eingebettet in das Seam-Ausführungsmodell Maschinenmodell: Register Maschine mit fester Anzahl von General Purpose Registers

Ausblick und Future Work Bytecode besser/schneller als Maschinencode???

Bytecode besser/schneller als Maschinencode??? Jitting findet nur lokal statt Übersetzung je einer Funktionen GC, Scheduler,... weiterhin als C-Funktionsaufrufe Code-Größe: Bei aktuellem Jitter bis zu 80MB im Extremfall Bytecode ist wesentlich kompakter

Optimierungen: Code Größe: Möglichst wenige Instruktionen Erledige viel Arbeit pro Instruktion Kleiner Dispatch Overhead Spezialisierung von Befehlen: Z.B. tuple_select1, tuple_select2 Kleinere, schnellere Befehle Direct Threaded Code: Schneller Dispatch

Optimierung: Direct Threaded Code Switch-basierend Direct Threaded typedef enum { hello, halt} Inst; void interprete() { static Inst program[] = {hello, hello, halt }; int pc = 0; while(true) { switch(program[pc]){ case print: cout << hello << endl; pc++; break; case halt: return; } } } typedef void *Inst; void interprete() { static Inst program[] = {&&hello, &&hello, &&halt}; int pc = 0; goto *program[pc]; hello: cout << hello << endl; goto *program[pc++]; halt: return; }

Bytecode besser/schneller als Maschinencode??? Dynamisches Optimieren (Jitter) Umgehe Scheduler, bspw. bei Self-Call Inlining von Primitiven AppPrim Int.+ (2,3) iadd 2 3 Optimierung nicht nur zur Compile-Zeit, sondern auch zur Laufzeit Inlining von Primitiven, die beim Jitting unbekannt waren Strictness Analysis

Zusammenfassung Erweitere Alice Seam VM um eine weitere Ausführungseinheit. JIT Compiler für dynamische Sprachen besonders gut geeignet. Lasse optimierten Bytecode Jitter gegen Maschinencode Jitter antreten! Es ist einen Versuch wert

Literatur Wilhelm, Maurer, Übersetzerbau, Springer 1997 Rossberg et. Al., Alice ML Through the Looking Glass, Techreport 2004 Brunklaus, Kornstädt, A Virtual Machine for Multi- Language Execution, 2002 Ralf Scheidhauer, Design, Implementierung und Evaluierung einer virtuellen Maschine für Oz, PhD Thesis, 1998 Poletta und Sakar, Linear Scan Register Allocation, ACM, 1999 Davis, The Case For Virtual Register Machines, 2002 Ertl, Threaded Code Variations and Optimizations, 2001