13
Christos Kotselidis Associate Professor at The University of Manchester Senior Architect at KTM Innovation MaxineVM Enabling HW/SW Co-design of managed languages on RISC-V

MaxineVM Enabling HW/SW Co-design of managed languages on

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MaxineVM Enabling HW/SW Co-design of managed languages on

Christos Kotselidis

Associate Professor at The University of Manchester

Senior Architect at KTM Innovation

MaxineVMEnabling HW/SW Co-design of managed languages on RISC-V

Page 2: MaxineVM Enabling HW/SW Co-design of managed languages on

Why Java on RISC-V?

• Second on the TIOBE index (> 10%)• Platform independent• High-level, developer-friendly, managed• Pervasive

− From IoT/SoC to high-end server applications

Page 3: MaxineVM Enabling HW/SW Co-design of managed languages on

State of other JVM RISC-V ports

• OpenJDK Zero – only interpreter• JikesRVM – not publicly available port • OpenJ9 – port effort ongoing; not full JIT compilation yet• OpenJDK11 – Initial port from Huawei• MaxineVM – First implementation to support full JIT compilation

and wide benchmark coverage

Page 4: MaxineVM Enabling HW/SW Co-design of managed languages on

MaxineVM History

• Project started in 2005 at Sun Microsystems• Through the years, the MaxineVM compiler branched out and

transformed to the Graal compiler• Since 2017, the University of Manchester continues the

development of MaxineVM- https://github.com/beehive-lab/Maxine-VM

Page 5: MaxineVM Enabling HW/SW Co-design of managed languages on

MaxineVM Characteristics

• Metacircular VM – VM for Java written in Java• Mainly used for research and not production

- Easy to change and experiment- ~2x slower than production quality JVMs

• Multiple plug-and-play “schemes”- HeapScheme, LockScheme, ObjectLayoutScheme, etc.

• Compilers, GCs- T1X: Template interpreter- C1X: Optimizing compiler (based on HotSpot’s C1 compiler)- SemiSpace and Generational GCs

Page 6: MaxineVM Enabling HW/SW Co-design of managed languages on

MaxineVM on RISC-V

What had to be accomplished to run Maxine on RISC-V?

• Implement the RISC-V ISA instructions encodings used by the compilers in the VM assembler

• All RISC-V extensions which provide ISA instructions from spec v2.2 were used except:- V Vector Operations, P Packed SIMD, C Compressed Instructions, Q Quad Precision

• Port to RISC-V- T1X and C1X compilers- Adapters – make the transition between two calling conventions in use by the

compilers- Stubs – hand crafted assembly that cannot be expressed as Java- Substrate – underlying C code which covers VM boot up, endianness, signal handlers

registration, etc

Page 7: MaxineVM Enabling HW/SW Co-design of managed languages on

MaxineVM on RISC-V

How the port was done?• Testing infrastructure in place; allows for offline compiler testing

Page 8: MaxineVM Enabling HW/SW Co-design of managed languages on

MaxineVM on RISC-V

Benchmarks• Fedora 31 on top of Qemu

• SPECjvm2008 → 79% pass rate

• DaCapo → 60% pass rate

• Comparison against OpenJDK Zero

Page 9: MaxineVM Enabling HW/SW Co-design of managed languages on

Results – SpecJVM2008

0.04 0.060.15

0.230.06

0.14

1.74

3.61

0.820.93

0.39

1.17

compress crypto derby scimark serial xml0

0.5

1

1.5

2

2.5

3

3.5

4

benchmark

ops/m

OpenJDK Zero

Maxine

Page 10: MaxineVM Enabling HW/SW Co-design of managed languages on

Results – Dacapo

13.4

1.5

10.79

0.754.64 3.43

9.545.16

0

39.58

3.56

58.2

7.42

28.06

9.07

134.58

30.51

0

avrora fop jython luindex lusearch pmd sunflow xalan Mean0

20

40

60

80

100

120

140

160

benchmark

minutes

Maxine

OpenJDK Zero

Page 11: MaxineVM Enabling HW/SW Co-design of managed languages on

Ongoing Research• MaxineVM is part of the Beehive ecosystem [1]

• https://github.com/beehive-lab

Heterogeneous Architectures

Aarch64

ARMv7

x86

GPUS FPGAs

VPUs ASICs

Resiliency

Simulators Emulated Architectures

MAMBODynamic Binary

Translator

MaxSim/Zsim

Com

pute

Pla

tform

Maxine VM

T1X

TornadoVMHardware Acceleration

Operating System

Traditional Benchmarking (SpecJVM, Dacapo, etc.)

Computer Vision SLAM Applications

Big Data Applications (Spark, Flink, Hadoop, etc.)DSLs (LLVM IR, etc.)

Performance

Power

Secu

rity

Services and Drivers (PIN, MAMBO, MAMBO-X64)

ISA extensions

App

licat

ions

Run

time

Laye

r

Scripting and Dynamic Languanges

(Ruby, Scala, R, etc.)

OpenJDK HotSpotTruffleGraal

Virtualization (KVM)

C1MMTk G1, ParallelGC, etc.

VoltspotMachine Learning(FEAST, KNN, SVM)

GEM5 Full System Simulator

HotspotNVSimMcPATCacti

MASTFPGA Accelerator

Framework

Fault Injection

RISC-V

- Safe code modification on architectures without HW support for SMC [2]- Type-information elimination on archs with tagged pointers [3]- Hardware acceleration of managed languages on GPUs and FPGAs [4, 5]- Systems for co-simulation of managed applications [6]- Memory characterization of managed languages on NUMA archs [7]

“Provide an extensible state-of-the-art infrastructure for hw/sw

co-design research”

Page 12: MaxineVM Enabling HW/SW Co-design of managed languages on

References

[1] C. Kotselidis, et al., “Project Beehive: A HW/SW co-designed stack for runtime and architectural research”, https://arxiv.org/abs/1509.04085[2] T. Hartley, et al., “An Analysis of Call-Site Patching without Strong Hardware Support for Self-Modifying-Code”, In MPLR 2019[3] A. Rodchenko, et al., “Type Information Elimination from Objects on Architectures with Tagged Pointers Support”, In IEEE TOC 2018[4] J. Clarkson, et al, “Exploiting High-Performance Heterogeneous Hardware for Java Programs using Graal”, In ManLang 2018[5] C. Kotselidis, et al., “Heterogeneous managed runtime systems: A computer vision case study”, In VEE 2017[6] A. Rodchenko, et al., “MaxSim: A Simulation Platform for Managed Applications”, In ISPASS 2017[7] O. Papadakis, et al., “You can’t hide you can’t run: a performance assessment of managed applications on a NUMA machine”, In MPLR 2020

Page 13: MaxineVM Enabling HW/SW Co-design of managed languages on

Thank you!