Reference idempotency analysis: a framework for optimizing speculative execution

  • Authors:
  • Seon Wook Kim;Chong-liang Ooi;Rudolf Eigenmann;Babak Falsafi;T. N. Vijaykumar

  • Affiliations:
  • Intel Corp., Champaign, IL and School of Electrical and Computer Engineering, Purdue University;School of Electrical and Computer Engineering, Purdue University;School of Electrical and Computer Engineering, Purdue University;Department of Electrical and Computer Engineering, Carnegie Mellon University;School of Electrical and Computer Engineering, Purdue University

  • Venue:
  • PPoPP '01 Proceedings of the eighth ACM SIGPLAN symposium on Principles and practices of parallel programming
  • Year:
  • 2001

Quantified Score

Hi-index 0.00

Visualization

Abstract

Recent proposals for multithreaded architectures allow threads with unknown dependences to execute speculatively in parallel. These architectures use hardware speculative storage to buffer uncertain data, track data dependences and roll back incorrect executions. Because all memory references access the speculative storage, current proposals implement this storage using small memory structures for fast access. The limited capacity of the speculative storage causes considerable performance loss due to speculative storage overflow whenever a thread's speculative state exceeds the storage capacity. Larger threads exacerbate the overflow problem but are preferable to smaller threads, as larger threads uncover more parallelism. In this paper, we discover a new program property called memory reference idempotency. Idempotent references need not be tracked in the speculative storage, and instead can directly access non-speculative storage (i.e., the conventional memory hierarchy). Thus, we reduce the demand for speculative storage space. We define a formal framework for reference idempotency and present a novel compiler-assisted speculative execution model. We prove the necessary and sufficient conditions for reference idempotency using our model. We present a compiler algorithm to label idempotent memory references for the hardware. Experimental results show that for our benchmarks, over 60% of the references in non-parallelizable program sections are idempotent.