Memory disambiguation for general-purpose applications

  • Authors:
  • Chi-Keung Luk

  • Affiliations:
  • Department of Computer Science, University of Toronto, Toronto, Ontario, M5S 1A4

  • Venue:
  • CASCON '95 Proceedings of the 1995 conference of the Centre for Advanced Studies on Collaborative research
  • Year:
  • 1995

Quantified Score

Hi-index 0.00

Visualization

Abstract

Memory disambiguation is a technique for removing spurious data dependences that severely limit the compiler's freedom of code-scheduling. Though dependence tests for linear array references work well in many scientific applications, they are incapable of handling pointer dereferences, which are very common in general-purpose applications written in C-like languages.This paper [1] is a survey of several recently proposed memory disambiguation schemes that can handle pointer dereferences. They are classified as either static or dynamic. Static disambiguation uses data-flow analysis to compute an approximation of the set of memory aliases at each program point. Four static disambiguators are compared. Some evidences show that they may have already achieved high accuracy in practice.Dynamic disambiguation resolves at run-time any ambiguous data dependences that cannot be determined during compilation. A pure software-based and two hardware-assisted dynamic disambiguators are examined. While they can bridge part of the gap between a raw static disambiguator and a perfect one, there is still room for improvement.Based on our studies, we propose a number of future directions to develop memory disambiguators of better performance/cost.