SIMD support to improve eclipse OpenJ9 performance on the AArch64 platform

Abstract
Just-in-time (JIT) compilers achieve application portability and improved management of large code-bases by abstracting the architecture specific details from programmers. Eclipse OMR and Eclipse OpenJ9 invest extensively in JIT technology to efficiently execute architecture-neutral Java bytecode. OMR is a robust language runtime builder, and OpenJ9 is a managed language runtime that consumes OMR. The targeted domains of OMR and OpenJ9 include AArch64, a 64-bit version of the ARM architecture. AArch64 is a popular member of the embedded computing market, where computing infrastructure resources (e.g., CPU, memory) are constrained. The concept of SIMD (Single Instruction, Multiple Data) instructions primarily evolved to accelerate the performance of multimedia applications such as motion video, real-time physics and graphics where repetitive operations were involved on large arrays of numbers. This paper discusses the steps taken to add SIMD support to OMR for AArch64. The implementation of advanced SIMD and floating-point instructions are also discussed, which cover vectorized mathematical operations, including addition, subtraction, multiplication, and division for supported data-types. We validate our implementation through relevant OMR tril tests, present two microbenchmarks VectorizationMicrobenchmark and Sepia Tone Filter and a set of standard benchmarks, which leverage the OpenJ9 autovectorization process in AArch64. The AArch64 vectorized operations are evaluated against non-vectorized, but similar operations using Eclipse OpenJ9. We demonstrate an improvement of up to four times in execution speed of certain vector arithmetic operations.
Funding Information
  • Atlantic Innovation Fund (AIF) (209763)

This publication has 15 references indexed in Scilit: