The Java Virtual Machine in Hardware

Aim

The aim of this class is to prepare the students for a career in the emerging area of System-on-Chip with FPGAs and the resulting HW/SW co-design issues.

Subject

This course is about the implementation of the Java Virtual Machine (JVM) in hardware and the design trade-offs for different HW/SW partitioning schemes. The students will learn the fundamentals of the JVM and processor architecture. The combination of these two topics will be shown with and practiced on JOP (the Java Optimized Processor). They will learn the design flow starting with building a soft-core CPU in an FPGA up to the Java application that runs on this CPU. Based on the understanding of the design flow the practical aspects of the HW/SW partitioning will be shown. Areas Covered: * The Java virtual machine * Basic processor architecture * SoC, FPGA design flow * HW/SW partitioning

Lecturer

Privatdoz. Dipl.-Ing. Dr.techn. SCHÖBERL Martin http://ti.tuwien.ac.at/rts/people/schoeberl

This course starts Tu. 10.3.2009, 14:00

Topic


This course is about the implementation of the Java Virtual Machine (JVM) in hardware and the design trade-offs for different HW/SW partitioning schemes.

Course description


Results from winter semester 2005/2006 projects of this course are presented as written reports. The sources are also online.

Laboratory

The lab is in the TI-LAB at Treitlstr. 3, Hochparterre. You can use the lab during the week from 8:00 till 22:00.
Each student will get an access card. The lab is supervised on arrangement to submit your exercises.
Furthermore, each group can also borrow the FPGA card dspio from the SoC group. Drop an e-mail for
an appointment at Treitlsstr. 3/4th floor.

Wiki

The lab project page is on following Wiki. Select your project, add your name, and start to describe the issues and solutions.

Schedule

Lecture at:

  • Institute Library E182-1, Treitlstrasse 3/3rd floor or

Lab in the

Enrolment is now open. Please register yourself for the course. You can sign off anytime till 20.3.2007.

Tu, 10.3.2009, 14:00 Introduction and Java and the JVM

Slides:

Th, 12.3.2009, 14:00 JOP Design Flow + Introductional Exercise in TI-LAB

Slides: JOP Design Flow

The first exercise is a Hello World program running on JOP. This work is supervised and will help you to get used to the design flow. This exercise is part of your grade (10 points).

Exercise material:

Opencores has switched to SVN and anonymous access is not possible anymore!

Till we have a new host for JOP a snapshot of JOP is available as .zip file: jop.zip

JOP can also be obtained by anonymous GIT access with:

git clone git://www.soc.tuwien.ac.at/jop.git 

Tu, 24.3.2009, 14:00 The Java virtual machine

Slides: The Java virtual machine

Tu, 31.3.2009. 14:00 JOP, the Java Optimized Processor

Slides: JOP Overview

Th 16.4.2009, 14:00 Lab

Tu 21.4.2009, 14:00 An Efficient Stack Machine

Slides: Stack
Paper: Design and Implementation of an Efficient Stack Machine

Tu 19.5.2009, 14:00 Real-time Garbage Collection (Wolfgang Puffitsch)

Slides: Garbage Collection

Reading:

Th 28.5.2009, 14:00 Lab (Wolfgang Puffitsch)

Th 4.6.2009, 14:00 Lab

Tu 9.6.2008, 14:00 Real-time and Safety Critical Java

Slides: Real Time Java and Safety Critical Java

Reading:

Th 18.6.2009, 14:00 TI-Lab Lego Robot

A Java real-time example on the LEGO robot
with WCET analysis of the program (15 points).
Paper: WCET Analysis for a Java Processor

Tu 23.6.2009, 14:00 WCET Analysis for Java, Java CMP

Slides:

Paper: WCET Analysis for a Java Processor

Tu 25.6.2009, 14:00TI-Lab Lego Robot, Final Presentation (Wolfgang Puffitsch)

 

July 2009 Final Presentation on Request

 

xxx, 14:00 A Time Predictable Instruction Cache for a Java Processor

Slides: Instruction Cach

 

Paper: A Time Predictable Instruction Cache for a Java Processor

 

Final Presentation

  • Short demo
  • Wiki entry (short description)
  • Documentation in paper form (2-4 pages) in PDF. Will be published at the SoC website
    • Title
    • Authors
    • Abstract + Introduction
    • Related Work (optional)
    • Main Part
    • Conclusion
    • References
  • Source (if possible under GNU GPL)

Resources