Implementierung der Jikes Research Virtual Machine



Ähnliche Dokumente
Diplomarbeit Antrittsvortrag

Effiziente Java Programmierung

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

Vorkurs Informatik WiSe 15/16

Was ist Windows Azure? (Stand Juni 2012)

Java Performance Tuning

Grundlagen von Python

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

CLR CIL MCS ECMA-335. Linux.Ne t Albrecht Liebscher, Erlanger Linux Tage

Java Virtual Machine (JVM) Bytecode

4D Server v12 64-bit Version BETA VERSION

Hardware Virtualisierungs Support für PikeOS

Trace- und Zeit-Zusicherungen beim Programmieren mit Vertrag

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

C# im Vergleich zu Java

Grundlagen der Programmierung UE

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

Compilerbau mit Phoenix

JAVA als erste Programmiersprache Semesterkurs

II.1.1. Erste Schritte - 1 -

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

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

Internetanbindung von Datenbanken

OSEK-OS. Oliver Botschkowski. PG AutoLab Seminarwochenende Oktober AutoLab

Grundlagen der Programmierung UE

Java für Embedded Systems

Vorwort Azure Cloud Computing mit Microsoft Danksagungen Kontakt zum Autor... 13

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Proseminar Technische Informatik A survey of virtualization technologies

Optimierung der Code-Generierung virtualisierender Ausführungsumgebungen zur Erzielung deterministischer Ausführungszeiten

Einführung Internettechnologien. - Clientseitige Programmierung -

USU Smart Link Ausblick & Roadmap

Vorlesung Informatik II

J.5 Die Java Virtual Machine

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Smartphone Entwicklung mit Android und Java

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

Einführung zu den Übungen aus Softwareentwicklung 1

White Paper. Embedded Treiberframework. Einführung

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Windows Azure für Java Architekten. Holger Sirtl Microsoft Deutschland GmbH

Preise und Leistungen Dynamic Computing Services

1. Java Grundbegriffe

Codesigned Virtual Machines

Die Integration zukünftiger In-Car Multimedia Systeme unter Verwendung von Virtualisierung und Multi-Core Plattformen

Kapitel 12: Übersetzung objektorienter Konzepte

Datenhaltung für Android. Model First

Im Kapitel Resourc Manager werden die verschiedenen Möglichkeiten der Überwachung von Messwerten eines Server oder Benutzers erläutert.

Grid-Systeme. Betrachtung verschiedener Softwareplattformen zur Realisierung von Grids und Vorstellung des Globus Toolkit Grid Systeme 1

Java für C++ Programmierer

Data Protection von Microsoft Applikationen mit Tivoli Storage Manager

Abschlussvortrag zur Diplomarbeit Aufbau und Analyse einer Shibboleth/GridShib-Infrastruktur

Vom Konzept direkt ins Cockpit: Optimierte HMI-Entwicklung mittels automatischer Codegenerierung

CORBA. Systemprogrammierung WS

Java - Einführung in die Programmiersprache. Leibniz Universität IT Services Anja Aue

Virtualisierung und Management am Desktop mit Citrix

Cross-Platform Mobile mit.net

Citrix CVE 400 1I Engineering a Citrix Virtualization Solution

eclipse und Komponenten

Programmierung von Smart Cards mit Hilfe von Java

A Kompilieren des Kernels B Lineare Listen in Linux C Glossar Interessante WWW-Adressen Literaturverzeichnis...

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

JAVA. Ein kurzer Überblick. Thomas Karp

Java Einführung Programmcode

Build in Function BIF Compatibility. Udo Puschkarsky DB2-Guide

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Analyse verschiedener HLS-Systeme in Hinblick auf ihren Umgang mit der Hochsprachenabstraktion Speicher. Sascha Kath

Virtual Elastic Services

Open Source als de-facto Standard bei Swisscom Cloud Services

Mobile Agenten am Beispiel JADE (Java Agent DEvelopment Framework) Vorstellung in der Übung zu Konzepte Verteilter Systeme

Multiuser Client/Server Systeme

Entwurf und Prototypische Implementierung einer Data Mashup Plattform. Abschlussvortrag Projekt-INF

WINDOWS AZURE IM ÜBERBLICK GANZ NEUE MÖGLICHKEITEN

1 Proseminar: Konzepte von Betriebssystem-Komponenten. Thema: Server OS AS/400 Referend: Sand Rainer. Server OS - AS/400

Smart Meter Gateway: Informationsflusskontrolle und Datenschutz mittels Security Kernel Framework

im Rahmen des Seminars - Programmiersprachen Markus Nestvogel

VIRTUALISIERUNG IN MIKROKERN BASIERTEN SYSTEMEN

Leistungs- und Geschwindigkeitssteigerung. Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur

... Einleitung Grundlagen der Virtualisierung Konzeption virtualisierter SAP-Systeme... 87

8a. Exkurs.NET. 8a.1.NET Architektur

Einführung in den NetBeans Profiler

Grundlagen zur nebenläufigen Programmierung in Java

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

II.1.1. Erste Schritte - 1 -

Programmieren lernen mit Groovy Allgemeines Programme und ihre Ausführung

NetScaler Integration bei Hellmann Worldwide Logistics. Benjamin Kania IS Enterprise Services Manager Hannover,

Built in Function. BIF Compatibility. Eine anonymisierte Kundenpräsentation. von Siegfried Fürst SOFTWARE ENGINEERING GmbH

Transkript:

Fakultät Informatik Institut für technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Implementierung der Jikes Research Virtual Machine Hauptseminar Technische Informatik 9. Juli 2008 Stefan Alex s2174321@inf.tu-dresden.de

Gliederung 1. Einleitung 2. Initialisierung der Jikes RVM 3. Design und Implementierung 4. Compiler 5. Benchmarks, Ausblick 6. Quellen Folie 2 von 21

1. Einleitung Java Virtual Machine fast komplett in Java geschrieben Ausführung direkt auf OS ohne zweite VM Projektbeginn November 1997 an IBM's T.J. Watson Research Center als Jalapeño VM OpenSource seit Oktober 2001 verfügbar Linux/IA-32, AIX/PowerPC, OSX/PowerPC, Linux/PowerPC Folie 3 von 21

1. Einleitung ursprünglich für den Server-Einsatz vorgesehen mittlerweile Testumgebung für VM-Research von über 80 Universitäten genutzt 188 Publikationen 36 Dissertationen basierend auf Jikes Folie 4 von 21

2. Initialisierung der Jikes RVM Hauptkomponenten User Objects Statics (JTOC) Compiled Method Compiled Method Compiled Method Thread stack Thread stack Garbage Collector Class/Method Dictionaries Runtime Opt. Compiler Fast Compiler Magic OS Folie 5 von 21

2. Initialisierung der Jikes RVM Instanziieren von Jikes auf Target Virtual Machine Erstellen eines ausführbaren Boot Images mit Basisdiensten der VM Initial Thread Object, Bootrecord, Object Allocator, Class Loader, Compiler, etc. Source VM Boot Image Runner Boot Image Writer Compiler Jikes RVM Boot Image/Target VM Initial Thread Object Boot Record Class Loader Object Allocator. Compiler Folie 6 von 21

3. Design und Implementierung Run-time subsystem Bereitstellung von Basisdiensten Dynamic Type Checking Dynamic Class Loading Exception-Handling Input/Output-System Reflection... Folie 7 von 21

3. Design und Implementierung Low-Level-Funktionalität VM_Magic -Klasse Umgehen java-spezifischer Einschränkungen Verwendung von OS-Services Einfluss auf Kontrollfluß Aufruf spezieller Maschineninstruktionen JNI 1.4 Java Native Interface Zugriff auf native Funktionen aus Java-Programm Zugriff auf Java-Funktionen aus nativen Programm Folie 8 von 21

3. Design und Implementierung Object-Model Zielsetzung: schneller Zugriff Arrays/Felder schneller Methodenaufruf Hardware-NullPointer-Check Folie 9 von 21

3. Design und Implementierung Object-Model High Memory Element n status TIB Field 0 } Object Header Element 0 length status TIB } Object Header Field n Low Memory Array Object Scalar Object Folie 10 von 21

3. Design und Implementierung Jikes Table Of Content (JTOC) JTOC o l l e H 5 (static) method body * * len 3.14 123 length String literal (static) field char [] TIB length int [] length byte [] int [] Object [] JTOC Register Object Folie 11 von 21

3. Design und Implementierung Threads und Synchronisation Threads auf Virtuelle Prozessoren verteilt N:M-Thread-Model Unabhängigkeit vom Betriebssystem, Verwendung eigener Implementierungen i.d.r. ein Virtueller Prozessor pro CPU Load Balancing zwischen Prozessoren quasi-preemptives Scheduling Folie 12 von 21

3. Design und Implementierung Memory Management MMTk: Memory Management Toolkit Toolkit zum Erstellen von Memory Managers nebenläufiger Object-Allocator pro virt. Prozessor: lokaler freier Speicher Erreichbar von allen Prozessoren nebenläufige Allocation ohne Locking/Synchronisation Stop-the-World-Garbage Collection GC-Thread pro Virtuellen Prozessor Anhalten aller laufenden Threads Synchronisation der einzelnen GC-Threads keine Unterstützung von nebenläufiger GC Folie 13 von 21

4. Compiler Baseline Compiler direkte Übersetzung von Bytecode in Maschinencode Simulation des Java-Stacks keine Optimierungen Optimizing Compiler ( JNI Compiler ) Folie 14 von 21

4. Compiler Optimizing Compiler mehrstufige Optimierung verschiedene Zwischenrepräsentationen High-Level-Intermedia-Representation (HIR) registerbasierte Sprache High-Level-Analyse Low-Level-Intermedia-Representation (LIR) Anpassung an Jikes RVM (Object Layout) Machine-Specific-Intermedia-Representation (MIR) Machine Code einschließlich GC-Maps, Exception Tables, Machine Code Informations, Debugging-Information, etc. Bytecode Bytecode to HIR Optimization of HIR HIR to LIR Optimization of LIR LIR to MIR Optimization of MIR Final Assembly Binary Code Folie 15 von 21

4. Compiler Optimizing Compiler Mehrere Optimierungslevel Level 0 on-the-fly-optimization constant-folding, copy-propagation, unrechable code-elimination, inlining trivialer Methoden, Kontrollflußoptimierungen etc. Level 1 Multi-Pass-Optimierungen Verwendung von Profiling-Daten Level 2 globale Optimierungen global value numbering, global common subexpression elimination, etc. Compiler Bytecode Bytes/Millisecond Speed Ba seline Opt. Level 0 Opt. Level 1 Opt. Level 2 377.76 9.29 5.69 1.81 1.0 4.26 6.07 6.61 Folie 16 von 21

4. Compiler Adaptive Optimization System Recompilierung verschiedener Methoden Sammeln von Profiling Daten Identifizerung von Hot Methods, Hot Edges oft aufgerufene Methoden gleicher Aufrufer für Methoden Folie 17 von 21

4. Compiler Adaptive Optimization System Controller Priority Queue Priority Queue Decay Organizer Dynamic Call Graph Adaptive Inlining Organizer Method Sample Data Hot Methods Organizer AOS Database Compilers Compilation Thread Call Edge Samples Method Samples Programmcode Folie 18 von 21

5. Benchmarks/Ausblick Vergleich zw. Jikes Baseline-Compiler/Optimizing-Compiler und JDK mit/ohne Just-in-Time-Compiler Folie 19 von 21

5. Benchmarks/Ausblick Weiterentwicklung durch IBM Research weitere Kooperationen mit Universitäten zukünftige Forschungsfelder: Dynamic code optimization Virtual machine technologies for web services and grid computing Extensions for real-time processing Integration in das Eclipse framework... Folie 20 von 21

6. Quellen Jikes RVM http://jikesrvm.org/ Implementing Jalapeño in Java - http://cs.anu.edu.au/~steve.blackburn/teaching/comp4700/resources/papers/j alapeno-oopsla-1999.pdf The Jalapeño Virtual Machine - http://www.research.ibm.com/journal/sj/391/alpern.pdf MMTk: The Memory Manager Toolkit - http://cs.anu.edu.au/~robin.garner/mmtk-guide.pdf Adaptive Optimization System Nov. 2004 Technical Report - http://domino.research.ibm.com/comm/research_people.nsf/pages/dgrove.rc2 3429.html Folie 21 von 21

Fragen??? Folie 22 von 21