Siri Sahithi Ponangi, G. Dueck, K. Kent, Daryl Maier, Kazuhiro Konno
{"title":"Java Runtime Optimization for Copying Arrays on AArch64","authors":"Siri Sahithi Ponangi, G. Dueck, K. Kent, Daryl Maier, Kazuhiro Konno","doi":"10.1109/MECO58584.2023.10155064","DOIUrl":null,"url":null,"abstract":"One of the architectures supported by OpenJ9, the AArch64 platform, is widely used in electronic devices because of its reasonable price and resource efficiency. This work adds an optimization in the Just-In-Time (JIT) compiler of OpenJ9 for AArch64, that copies arrays efficiently. The optimizing JIT compiler function, arraycopy Evaluator, separates inlinable code for better performance. Making use of Vector Floating Point registers helps in copying up to 128 bits of any data type in a single load/store instruction. While copying, the situations where primitive values are copied or Garbage Collection checks are required to access the reference fields are handled. We evaluate the results using the BumbleBench Microbenchmarking test framework. We investigate the trace files and utilize the Perf tool to identify the causes of unexpected Benchmark results. We achieve an up to tenfold increase in performance.","PeriodicalId":187825,"journal":{"name":"2023 12th Mediterranean Conference on Embedded Computing (MECO)","volume":"27 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2023-06-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"1","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2023 12th Mediterranean Conference on Embedded Computing (MECO)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/MECO58584.2023.10155064","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 1
Abstract
One of the architectures supported by OpenJ9, the AArch64 platform, is widely used in electronic devices because of its reasonable price and resource efficiency. This work adds an optimization in the Just-In-Time (JIT) compiler of OpenJ9 for AArch64, that copies arrays efficiently. The optimizing JIT compiler function, arraycopy Evaluator, separates inlinable code for better performance. Making use of Vector Floating Point registers helps in copying up to 128 bits of any data type in a single load/store instruction. While copying, the situations where primitive values are copied or Garbage Collection checks are required to access the reference fields are handled. We evaluate the results using the BumbleBench Microbenchmarking test framework. We investigate the trace files and utilize the Perf tool to identify the causes of unexpected Benchmark results. We achieve an up to tenfold increase in performance.