Interpreter Instruction Scheduling

  • Stefan Brunthaler
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6601)


Whenever we extend the instruction set of an interpreter, we risk increased instruction cache miss penalties. We can alleviate this problem by selecting instructions from the instruction set and re-arranging them such that frequent instruction sequences are co-located in memory. We take these frequent instruction sequences from hot program traces of external programs and we report a maximum speedup by a factor of 1.142. Thus, interpreter instruction scheduling complements the improved efficiency of an extended instruction set by optimizing its instruction arrangement.


Virtual Machine Instruction Schedule Open List Instruction Cache Benchmark Program 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Open Research Compiler (October 2010),
  2. 2.
    Bell, J.R.: Threaded code. Communications of the ACM 16(6), 370–372 (1973)CrossRefGoogle Scholar
  3. 3.
    Brunthaler, S.: Efficient interpretation using quickening. In: Proceedings of the 6th Symposium on Dynamic Languages (DLS 2010), Reno, Nevada, US, October 18, ACM Press, New York (2010)Google Scholar
  4. 4.
    Brunthaler, S.: Inline caching meets quickening. In: D’Hondt, T. (ed.) ECOOP 2010. LNCS, vol. 6183, pp. 429–451. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  5. 5.
    Ertl, M.A., Gregg, D.: Optimizing indirect branch prediction accuracy in virtual machine interpreters. In: Proceedings of the SIGPLAN 2003 Conference on Programming Language Design and Implementation (PLDI 2003), pp. 278–288. ACM, New York (2003)CrossRefGoogle Scholar
  6. 6.
    Fulgham, B.: The computer language benchmarks game,
  7. 7.
    Intel: Intel Turbo Boost Technology in Intel Core microarchitecture (Nehalem) based processors. Online (November 2008),
  8. 8.
    Lin, C.-C., Chen, C.-L.: Code arrangement of embedded java virtual machine for NAND flash memory. In: Stenström, P., Dubois, M., Katevenis, M., Gupta, R., Ungerer, T. (eds.) HiPEAC 2007. LNCS, vol. 4917, pp. 369–383. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  9. 9.
    Pettis, K., Hansen, R.C.: Profile guided code positioning. SIGPLAN Notices 25(6), 16–27 (1990)CrossRefGoogle Scholar
  10. 10.
    Ramírez, A., Larriba-Pey, J.L., Navarro, C., Torrellas, J., Valero, M.: Software trace cache. In: Proceedings of the 13th International Conference on Supercomputing (ICS 1999), Rhodes, Greece, June 20-25, pp. 119–126. ACM, New York (1999)CrossRefGoogle Scholar
  11. 11.
    Zhao, P., Amaral, J.N.: Feedback-directed switch-case statement optimization. In: Proceedings of the International Conference on Parallel Programming Workshops (ICPP 2005 Workshops), Oslo, Norway, June 14-17, pp. 295–302. IEEE, Los Alamitos (2005)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Stefan Brunthaler
    • 1
  1. 1.Institut für ComputersprachenTechnische Universität WienWienAustria

Personalised recommendations