How to Select Superinstructions for Ruby

DOI
  • Zakirov Salikh
    Department of Mathematical and Computing Sciences, Tokyo Institute of Technology
  • Chiba Shigeru
    Department of Mathematical and Computing Sciences, Tokyo Institute of Technology
  • Shibayama Etsuya
    Information Technology Center, The University of Tokyo

抄録

Superinstruction is well-known techniques of improving performance of interpreters. Superinstructions eliminate jumps between VM operations (interpreter dispatch) and enable more optimizations in merged code. In past, processors with simple BTB-based branch predictors had high misprediction rate when executing interpreted code, resulting in high overhead of interpreter dispatch, so superinstructions were used to reduce it. However, this assumption is incorrect for Ruby on current hardware. Accordingly, using superinstructions for eliminating jump instructions only marginally improves performance. In this paper, we consider applying superinstructions differently to improve performance of floating point computation. We note that high percentage of objects allocated during numeric computation are boxed floating point values, meanwhile garbage collection takes significant part of the execution time. Using superinstructions composed from pairs of arithmetic operations we were able to reduce allocation of boxed floats by up to 36%, and obtain improvement in performance of up to 22%.

収録刊行物

詳細情報 詳細情報について

  • CRID
    1390001205264909696
  • NII論文ID
    130000251510
  • DOI
    10.11185/imt.5.519
  • ISSN
    18810896
  • 本文言語コード
    en
  • データソース種別
    • JaLC
    • CiNii Articles
  • 抄録ライセンスフラグ
    使用不可

問題の指摘

ページトップへ