DOI QR코드

DOI QR Code

DEX2C: Translation of Dalvik Bytecodes into C Code and its Interface in a Dalvik VM

  • Kim, Minseong (Department of Electrical and Computer Engineering, Korea University) ;
  • Han, Youngsun (Department of Electronics Engineering, Kyungil University) ;
  • Cho, Myeongjin (Department of Electrical and Computer Engineering, Korea University) ;
  • Park, Chanhyun (Department of Electrical and Computer Engineering, Korea University) ;
  • Kim, Seon Wook (Department of Electrical and Computer Engineering, Korea University)
  • 투고 : 2015.03.27
  • 심사 : 2015.04.17
  • 발행 : 2015.06.30

초록

Dalvik is a virtual machine (VM) that is designed to run Java-based Android applications. A trace-based just-in-time (JIT) compilation technique is currently employed to improve performance of the Dalvik VM. However, due to runtime compilation overhead, the trace-based JIT compiler provides only a few simple optimizations. Moreover, because each trace contains only a few instructions, the trace-based JIT compiler inherently exploits fewer optimization and parallelization opportunities than a method-based JIT compiler that compiles method-by-method. So we propose a new method-based JIT compiler, named DEX2C, in order to improve performance by finding more opportunities for both optimization and parallelization in Android applications. We employ C code as an intermediate product in order to find more optimization opportunities by using the GNU C Compiler (GCC), and we will detect parallelism by using the Intel C/C++ parallel compiler and the AESOP compiler in our future work. In this paper, we introduce our DEX2C compiler, which dynamically translates Dalvik bytecodes (DEX) into C code with method granularity. We also describe a new method-based JIT interface in the Dalvik VM for the DEX2C compiler. Our experiment results show that our compiler and its interface achieve significant performance improvement by up to 15.2 times and 3.7 times on average, in Element Benchmark, and up to 2.8 times for FFT in Smartbench.

키워드

참고문헌

  1. Google, "Dalvik VM Internals," https://sites.google.com/site/io/dalvik-vm-internals, 2008.
  2. B. Cheng and B. Buzbee. "A JIT compiler for Android's Dalvik VM," http://dl.google.com/googleio/2010/android-jit-compiler-androids-dalvik-vm.pdf, 2010.
  3. B. Stefan, "Analysis of the Android Architecture," http://os.itec.kit.edu/downloads/sa_2010_braehlerstefan_android-architecture.pdf, 2010.
  4. Intel, "Intel C and C++ Compilers," https://software.intel.com/en-us/c-compilers, 2014.
  5. A. Kotha, T. Creech and R. Barua, "AESOP: The Autoparallelizing Computer for Shared Memory Computers," http://aesop.ece.umd.edu, 2013.
  6. Y. Han, S. Kim, H. Kim, S. J. Hwang and S.W. Kim, "Code Generation and Optimization for Java-to-C Compilers," Emerging Directions in Embedded and Ubiquitous Computing Lecture Notes in Computer Science Volume 4097, 2006, pp 785-794.
  7. K. Kodama, "Element Benchmark," https://sites.google.com/site/elementbenchmark, 2012.
  8. 123 Smartmobile, "Smartbench 2012," http://123smartmobile.com, 2012.
  9. Google, "Galaxy nexus," http://www.google.com/nexus/, 2014.
  10. J. Dongarra, P. Luszczek, A. Petitet, "The LINPACK benchmark: Past, present, and future," Concurrency and Computation: Practice and Experience Volume 15, 2003, pp 803-820.