ArmSummit-2018 SupportingMaterial 117

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

Enabling Virtual Machine Research on ARM-based IoT devices

Andy Nisbet, Foivos S. Zakkak, Tim Hartley, Iain Apreotesei, Andreas Andronikakis,
Mikel Luján, Christos Kotselidis
The University of Manchester, United Kingdom, M13 9PL
first.last@manchester.ac.uk
ABSTRACT Full System Co-design
Low-power IoT devices, mostly powered by the ARM architecture,
are extending their processing capabilities every new generation. Traditional Benchmarking
Scripting and Dynamic

Applications
Languanges
resulting in the ability to run more demanding programming lan- (SpecJVM, Dacapo, etc.) (Ruby, Scala, R, etc.) Big Data
Applications
guages and runtime systems on edge-devices enriching further the Computer Vision (Spark, Flink,
DSLs (LLVM IR, etc.) Hadoop, etc.)
IoT ecosystem. Although present efforts, mainly led by industry, SLAM Applications

provide runtime systems to execute managed languages on edge


devices, research frameworks to perform analysis, experimentation,

Runtime Layer
Maxine VM OpenJDK HotSpot Indigo OpenCL
and optimizations are currently missing. In this paper, we present Truffle SIMD Accelerator Heterogeneous

Performance
(SSE) Accelerator
Graal
our efforts on providing a research Java Virtual Machine target-

Power
T1X C1 MAST
ing ARM architectures (both ARMv7 and AArch64) in order to MMTk G1, ParallelGC, etc.
FPGA Accelerator
Framework
enable power/performance studies on IoT devices. Maxine VM is a Services and Drivers
Operating System (PIN, MAMBO, MAMBO-X64)
metacircular VM for Java and is part of the Beehive ecosystem that
Virtualization (KVM)
provides a unified framework for hardware/software co-designed ISA extensions
research on managed languages runtimes. Heterogeneous Architectures Emulated
Simulators MaxSim/Zsim
Compute Platform Architectures
Aarch64 x86 GEM5
Full System Simulator
ARMv7 RISC-V MAMBO
Cacti McPAT NVSim Hotspot Dynamic
1 INTRODUCTION GPUS FPGAs Machine Learning
(FEAST, KNN, SVM)
Voltspot
Binary
Translator
VPUs ASICs Fault Injection
As IoT devices are becoming more pervasive and computationally
capable, mainly due to advances of the ARM architecture [2], new
Resiliency
programming models and runtime systems are paving their way
into that domain. A number of programming languages that require
Figure 1: The Beehive ecosystem
runtime support, such as Java and Python, as well as operating sys-
tems [4] have been successfully ported and executed on low-power
edge devices enabling richer and more versatile programming en-
vironments for developers. Consequently, the upcoming plethora 2 MAXINE VM & THE BEEHIVE ECOSYSTEM
of IoT-executed high-level programming languages enable more
Maxine VM features mature compilers, both template-based and
usages and complex workflows to be offloaded to the edge, boosting
optimized Just-In-Time (JIT), and supports both 64 and 32 bit for
extreme analytics since a significant amount of processing can be
the ARM architecture; in addition to x86 support. Furthermore,
transferred from the back-end data analytics to the IoT side without
MaxineVM is a core component of the Beehive [6] project whose
sacrificing programming efficiency.
aim is to develop a whole ecosystem of tools and runtimes for
Inevitably, however, the more sophisticated runtimes and pro-
conducting research on managed runtimes on emerging low-power
gramming languages are executed on low-power edge devices, the
heterogeneous architectures [5]. Enabling MaxineVM to run on
higher the toll on battery life is. In order to balance the program-
ARMv7 and Aarch64 will result in parts of the Beehive ecosystem
ming and energy efficiency trade-off, tools and frameworks that
(depicted in Figure 1) to be used on VM-related ARM research
enable fast and accurate research are required. Focusing on the
projects.
Java programming language, we can see that a number of imple-
The goal of the Beehive Ecosystem is to provide a framework
mentations that target Java execution on embedded devices exist
with the following characteristics regarding hardware/software
[1, 7]. Nevertheless, these are either closed source or unsuitable for
co-design:
research due to their legacy and complex code.
In this paper, we present our efforts in providing a research Vir- • Modular and easily extensible.
tual Machine (VM) for the Java language suitable for research on IoT • Implemented with high level languages with good IDE sup-
devices running on the ARM architecture. Based on MaxineVM [8], port and low entry barrier.
we showcase our extensions to enable support for the ARMv7 and • Realistic and diverse simulation infrastructures.
AArch64 architectures. Combining the support for all ARM ISAs • Support of multiple hardware architectures.
and the modular nature of MaxineVM, we can scale the VM from • Support of heterogeneous systems.
embedded devices to large servers enabling application, compiler, • Capability of implementing multiple languages.
and runtime optimizations under the same framework. • Integration with popular research tools.
MaxineVM-ARMv7 OpenJDK_1.7.0_40-Client OpenJDK_1.7.0_40-Server
76
80 65
57
60 50 49 47
40 44
34 38
40 27 29 31 31 28
24 22 25
20 20 20 18 17
12 13 14
20 8 5 8 6
0
geomean startup compiler compress crypto derby mpegaudio scimark sunflow xml

Figure 2: SpecJVM2008 benchmarks (higher is better) normalized to OpenJDK-Zero-IcedTea6_1.13.11, ARMv7-32bit Samsung


Chromebook, Exynos 5 Dual@1.7GHz, 2GB RAM, 2GB heap.

On the top layer of the stack are the groups of applications that around 2.3x and 3.3x slower than the OpenJDK-1.7.0 client and
Beehive aims to improve the state of the art for. These applications server compilers respectively.
range from the standard benchmark suites, to applications run- Finally, by successfully porting and executing MaxineVM on
ning on top of Big Data frameworks, including domain specific AArch64 while adding support for JVMCI/Graal and MMTk [3],
applications and implementations of managed languages. we will enact research on AArcch64 for a plethora of managed
The runtime layer (second from top) incorporates all the runtime languages (supported by Truffle) and garbage collection algorithms
mechanisms necessary to execute a managed language. This layer (supported by MMTk). MaxineVM is fully open-sourced at: https://github.com/beehi
unifies, under the same compilers and runtimes, high-quality poly- lab/Maxine-VM.
glot production and research VMs. It will feature two VMs, Maxine
and OpenJDK HotSpot, that share a common optimizing compiler, REFERENCES
Graal, and the Truffle runtime framework. OpenJDK HotSpot rep- [1] AICAS. 2018. JamaicaVM. https://www.aicas.com/cms/en/JamaicaVM. (2018).
[2] ARM. 2018. Cortex-A Series Programmer’s Guide for ARMv8-A. (2018). Retrieved
resents the production VMs, while MaxineVM is a meta-circular May 17, 2018 from http://infocenter.arm.com/help/topic/com.arm.doc.den0024a/
research VM. MaxineVM will ultimately be compatible with the Java DEN0024A_v8_architecture_PG.pdf
Virtual Machine Compiler Interface (JVMCI), and the JikesRVM’s [3] Stephen M. Blackburn, Perry Cheng, and Kathryn S. McKinley. 2004. Oil and
Water? High Performance Garbage Collection in Java with MMTk (ICSE ’04).
Memory Management Toolkit (MMTk) [3], combining two pow- [4] Cesanta. 2018. Mongoose OS. https://mongoose-os.com. (2018).
erful interfaces that will enable experimentation with different [5] Christos Kotselidis, James Clarkson, Andrey Rodchenko, Andy Nisbet, John
compilers and garbage collectors. Mawer, and Mikel Luján. 2017. Heterogeneous Managed Runtime Systems: A
Computer Vision Case Study. In Proceedings of the 13th ACM SIGPLAN/SIGOPS
International Conference on Virtual Execution Environments (VEE ’17). ACM, New
2.1 ARM support York, NY, USA, 74–82. https://doi.org/10.1145/3050748.3050764
[6] Christos Kotselidis, Andrey Rodchenko, Colin Barrett, Andy Nisbet, John Mawer,
Currently, as of version 2.1, MaxineVM fully supports the ARMv7 Will Toms, James Clarkson, et al. 2015. Project Beehive: A Hardware/Software
architecture with the AArch64 support expected to be finalized in Co-designed Stack for Runtime and Architectural Research. In 9th International
Workshop on Programmability and Architectures for Heterogeneous Multicores
the forcoming months (full compiler ports have been completed). (MULTIPROG) (2015). http://arxiv.org/abs/1509.04085
Regarding ARMv7, as depicted in Figure 2 the performance of [7] MircoEJ. 2018. SDK. http://www.microej.com. (2018).
Maxine VM falls between the performance of OpenJDK-Zero and [8] Christian Wimmer, Michael Haupt, Michael L. Van De Vanter, Mick Jordan,
Laurent Daynès, and Douglas Simon. 2013. Maxine: An Approachable Virtual
OpenJDK-1.7.0-(Client, Server). Maxine VM outperforms OpenJDK- Machine for, and in, Java. ACM TACO 9, 4, Article 30 (Jan. 2013).
Zero by 12x on average across SpecJVM2008, while it is on average

You might also like