Ein FPGA-Basierter Java Just-In-Time Compiler Für Eingebettete Anwendungen

Ein FPGA-Basierter Java Just-In-Time Compiler Für Eingebettete Anwendungen

JIFFY - Ein FPGA-basierter Java Just-in-Time Compiler für eingebettete Anwendungen Georg Acher Lehrstuhl für Rechnertechnik und Rechnerorganisation JIFFY - Ein FPGA-basierter Java Just-in-Time Compiler für eingebettete Anwendungen Georg Acher Vollständiger Abdruck der von der Fakultät für Informatik der Technischen Universität München zur Erlangung des akademischen Grades eines Doktors der Naturwissenschaften (Dr. rer. nat.) genehmigten Dissertation. Vorsitzender: Univ.-Prof. Dr. Hans Michael Gerndt Prüfer der Dissertation: 1. Univ.-Prof. Dr. Arndt Bode 2. Univ.-Prof. Dr. Eike Jessen, em. Die Dissertation wurde am 18.6.2003 bei der Technischen Universität München eingereicht und durch die Fakultät für Informatik am 6.10.2003 ange- nommen. JIFFY - Ein FPGA-basierter Java Just-in-Time Compiler für eingebettete Anwendungen Georg Acher Kurzfassung Durch die wachsende Leistungsfähigkeit von Prozessoren für eingebettete Sys- teme wird der Einsatz von Java für diesen Bereich immer vielversprechender. Al- lerdings sind die von normalen Desktop- oder Serversystemen bekannten Tech- niken zur Beschleunigung der Java Virtual Machine (JVM), wie z.B. die Just- in-Time-Compilation (JIT), bei den sehr begrenzten Ressourcen in dieser Gerä- teklasse nur schwer einsetzbar oder erfordern eine Bindung auf eine bestimmte CPU-Architektur. Diese Arbeit stellt das JIFFY-Konzept vor, das den Ablauf und die Integration eines vollständigen JIT-Compilers für die JVM in einem frei programmierbaren Logikbaustein (FPGA, Field Programmable Gate Array) beschreibt. Durch den Einsatz des FPGAs wird eine sehr hohe Übersetzungsgeschwindigkeit erreicht, wobei die Qualität des erzeugten Compilats die von einfachen, softwarebasierten JIT-Compilern mindestens erreicht und oft übersteigt. Durch ein spezielles Kon- zept ist der gesamte Übersetzungsvorgang im FPGA und damit die synthetisierte Gatterlogik unabhängig von der Zielarchitektur und erlaubt eine flexible Nutzung auch für typische heterogene Mehrprozessorsysteme in Kommunikationsanwen- dungen. Neben der Beschreibung des Übersetzungskonzepts werden auch die Auswir- kungen des FPGA-basierten Ansatzes auf das Java-Laufzeitystem und mögliche Abwägungen in der Implementierung von Hardware und Software qualitativ und quantitativ an zwei exemplarischen Modellierungen für 80586- und AlphaCPU- basierte Systeme verglichen. Abstract The steadily growing performance of processors for embedded systems make the usage of the platform independent Java system more and more attractive. How- ever, the usual techniques known for acceleration of the Java Virtual Machine, widely used on desktop computers, don’t apply well in general to this class of devices, the most prominent example is the Just-in-Time-Compilation (JIT). This is caused by the tight resource constraints of these systems and their wide range of processor architectures. This thesis presents the JIFFY concept, which describes the integration of a complete JIT-compiler for the JVM into an Field Programmable Gate Array (FPGA). By using the FPGA, a very high translation speed can be achieved, the code quality and thus execution speed reaches or exceeds simple, software based JITs. Based on a layered concept, the translation process in the FPGA und there- fore the synthesized gate logic is independent of the target CPU architecture. This feature allows a very flexible usage of the FPGA even for heterogenous multipro- cessor systems, typically found in modern communication applications. Besides the detailed explanation of the translation process itself, the impacts of the FPGA-based approach on the Java runtime system and possible considerations in the implementation of the hardware and software are also described. To qualify and quantify the resulting properties for CISC and RISC CPUs, the system is modeled for two typical architectures (80586 and AlphaCPU). Danksagung Diese Dissertation ist nur durch die Unterstützung einiger Menschen durchführbar geworden, bei denen ich mich an dieser Stelle bedanken will. Professor Dr. Arndt Bode ermöglichte mir in den vergangenen Jahren am Lehrstuhl für Rechnertechnik und Rechnerorganisation (LRR) der Technischen Universität München ein hervorragendes Arbeitsumfeld, und das sowohl in wis- senschaftlicher, als auch in organisatorischer und kollegialer Hinsicht. Ebenso möchte ich Professor Dr. Eike Jessen für seine Bereitschaft als Zweitgutachter danken, er hat wertvolle Hinweise zur vorliegenden Arbeit gegeben. Herzlicher Dank gebührt auch dem Leiter der Architekturgruppe am LRR, Wolfgang Karl, ohne dessen zahlreichen Vorschläge und Diskussionen die Arbeit mit diesem Thema wohl gar nicht entstanden wäre. Von den zahlreichen hilfsbereiten Kollegen am LRR möchte ich besonders Rainer Buchty, Michael Eberl, Detlef Fliegl und Robert Lindhof erwähnen, die neben wissenschaftlicher oder administrativer Unterstützung auch in meiner un- mittelbaren Umgebung für Spass an der Arbeit gesorgt haben. Der TU München möchte ich meinen Dank aussprechen, da sie mir in den ersten beiden Jahren der Arbeit ein Promotionsstipendium gewährt hat. Zum Schluss möchte ich mich bei meinen Eltern bedanken, die viel Verständ- nis für meine technischen Basteleien aufgebracht haben und mich auf meinem gesamten Ausbildungsweg immer unterstützt haben. in a jiffy, [ ’ji-fE ], engl.: “im Nu” Inhaltsverzeichnis 1 Einführung und Motivation 1 1.1 Java und die Konsequenzen . 1 1.2 Einordnung der Arbeit . 3 1.3 Forschungsbeitrag . 4 1.4 Aufbau der Arbeit . 6 2 Kellermaschinen, binäre Übersetzung, plattformunabhängige Sys- teme 9 2.1 Kellermaschinen . 9 2.1.1 Klassifizierung . 9 2.1.2 Explizite Stackarchitekturen . 11 2.1.3 Konkrete Stackarchitekturen und Sprachen . 12 2.1.3.1 Forth . 12 2.1.3.2 PostScript . 13 2.1.3.3 INMOS-Transputer . 13 2.2 Grundlagen der binären Übersetzung . 13 2.2.1 Emulation . 14 2.2.2 Static Translation . 14 2.2.3 Dynamic Translation . 15 2.3 Existierende “Binary Translation” Systeme . 15 2.3.1 Forschungssysteme . 15 2.3.1.1 RePLay und I-COP . 15 2.3.1.2 Dynamo/HP . 16 2.3.1.3 Sun Walkabout . 16 2.3.1.4 IBM Daisy . 16 2.3.2 Kommerziell eingesetzte Systeme . 17 2.3.2.1 FX!32 von Digital . 17 2.3.2.2 Dynamic Recompiling Emulator – Der 68k!PPC-Konverter von Apple . 18 2.3.2.3 80586-kompatible Desktopprozessoren . 18 2.3.2.4 Der Crusoe-Prozessor von Transmeta . 19 i 2.4 Weitere plattformunabhängige Systeme . 19 2.4.1 vmgen . 19 2.4.2 C# . 20 2.4.3 Weitere plattformunabhängige Sprachen . 20 2.5 Zusammenfassung . 21 3 Java und Java Virtual Machine 23 3.1 Hintergründe zur Java-Entwicklung . 23 3.2 Beschreibung von Java . 24 3.2.1 Übersicht . 24 3.2.2 Die Programmiersprache Java . 26 3.2.2.1 Objekte und Klassen . 27 3.2.3 Die Java-Klassendateien und Bibliotheken . 28 3.2.3.1 Java-Bibliotheken . 29 3.2.4 Die Java Virtual Machine . 29 3.2.4.1 Befehlsstruktur . 30 3.2.4.2 JVM-Ausführungsmodell – Das Sandkasten- prinzip . 31 3.2.4.3 Ausführungsstack . 31 3.2.4.4 Der Konstantenpool . 32 3.2.4.5 Lokale Variablen und Funktionsparameter . 33 3.2.4.6 Ausnahmebehandlung . 34 3.3 Java Ausführungsarten . 34 3.3.1 Interpretierung der JVM in Software . 35 3.3.2 Umgehung der JVM-Ebene – Direkte Compilation . 35 3.3.3 Just-In-Time-Compiler (JIT) und Compile Ahead . 35 3.3.4 Ausführung in Java-CPU bzw. mit Co-Prozessor . 36 3.3.4.1 Eigenständiger Java-Prozessor . 37 3.3.4.2 JVM-Coprozessor . 37 3.3.4.3 Java-Unterstützung für existierende Prozessoren 37 3.3.4.4 HW-Befehlsübersetzung in natives Maschinen- format . 37 3.3.5 Allgemeiner Vergleich der JVM-Ausführungsarten . 38 3.4 Java Benchmarks . 38 3.5 Eigenschaften von JVM-Bytecode . 39 3.5.1 Anzahl der lokalen Variablen und Stacktiefe . 41 3.5.2 Anzahl der Sprünge . 42 3.6 Zusammenfassung . 43 ii 4 Eingebettete Systeme, FPGAs, Rekonfigurierbare Systeme 45 4.1 Definition von eingebetteten System . 45 4.2 Eigenschaften und Einschränkungen . 46 4.2.1 Speicherarchitektur . 46 4.2.2 Leistungsaufnahme . 47 4.3 Mikroprozessoren für eingebettete Systeme . 48 4.3.1 80386-Kompatible . 48 4.3.2 ARM . 49 4.3.3 Motorola 68k . 50 4.3.3.1 Motorola ColdFire . 51 4.3.4 MIPS . 51 4.3.5 Etrax-100LX von Axis . 51 4.3.6 PowerPC . 52 4.3.7 Hitachi SuperH3/SuperH4 . 52 4.4 Betriebssysteme für eingebettete Systeme . 53 4.4.1 Pocket PC/Windows CE . 53 4.4.2 Linux . 54 4.4.3 VxWorks . 54 4.5 FPGA Grundlagen . 56 4.5.1 FPGA-Architekturen . 56 4.5.2 Speicherkonzepte in FPGAs . 59 4.5.3 Vor- und Nachteile von FPGAs . 60 4.6 Rekonfigurierbare Systeme mit FPGAs . 60 4.6.1 Grundlagen und Klassifikation . 60 4.6.2 Anwendungen . 61 4.7 FPGAs mit integrierten Mikroprozessoren . 62 4.8 Vergleich der Rekonfigurierbarkeit von FPGAs . 63 4.8.1 Motivation . 63 4.8.2 Vergleichsprinzip . 64 4.8.3 Zeit für Rekonfiguration einer Logikzelle . 65 4.8.4 Vergleich der Rekonfigurationsgeschwindigkeit . 65 4.8.5 Vergleich verschiedener FPGAs . 66 4.8.6 Schlussfolgerungen . 68 5 Stand der Technik bei JVM-Implementierungen in SW/HW 71 5.1 Grundsätzliche Optimierungstechniken . 71 5.2 Java Optimierungen vor der Ausführung . 72 5.3 JVM-Implementierungen in Software . 73 5.3.1 Java Runtime Environment (JRE) von Sun . 73 5.3.2 HotSpot . 73 5.3.3 gcj – GNU Java Compiler . 74 iii 5.3.4 Kaffe . 74 5.3.5 TYA – JIT für x86-Prozessoren und JDK . 75 5.3.6 Caffeine . 75 5.3.7 Jalapeño von IBM . 75 5.3.8 CACAO – JIT für 64Bit-Prozessoren . 76 5.3.9 LaTTe von IBM . 76 5.3.10 jeode von Insignia . 77 5.3.11 Weitere Implementierungen und Optimierungen für die JVM . 78 5.4 JVM-Implementierungen in Hardware . 79 5.4.1 Forschungssysteme . 79 5.4.2 picojavaI/II von Sun . 80 5.4.3 MAJC von Sun . 81 5.4.4 PSC1000 von Patriot Scientific . 81 5.4.5 JVXtreme von inSilicon . 82 5.4.6 XPRESSOcore und XC-100 von Zucotto .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    250 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us