Shelving a Code Block for Thread-Level Speculation
Daiki Matsunaga, Atsushi Nunome, Hiroaki Hirata · 2019
Thread-Level Speculation (TLS) is an approach to enhance the opportunity of parallelization by executing tasks in parallel based on the assumption that the task has no dependencies on any earlier task in program order. But if any dependency is detected during the execution, the task should be aborted and re-executed. So the frequency of aborts is one of the factors that damage the performance of the speculative execution. In this paper we propose the “code shelving” scheme to avoid aborts or eliminate the penalty of the abort. We have implemented it on our TLS system, which is named Speculative Memory (SM), and investigated its performance characteristics. Our evaluation results reveal the code shelving can significantly improve the performance of pure speculation that does not use the code shelving.