Sciweavers

ICFP
2007
ACM

Faster laziness using dynamic pointer tagging

14 years 4 months ago
Faster laziness using dynamic pointer tagging
In the light of evidence that Haskell programs compiled by GHC exhibit large numbers of mispredicted branches on modern processors, we re-examine the "tagless" aspect of the STG-machine that GHC uses as its evaluation model. We propose two tagging strategies: a simple strategy called semitagging that seeks to avoid one common source of unpredictable indirect jumps, and a more complex strategy called dynamic pointertagging that uses the spare low bits in a pointer to encode information about the pointed-to object. Both of these strategies have been implemented and exhaustively measured in the context of a production compiler, GHC, and the paper contains detailed descriptions of the implementations. Our measurements demonstrate significant performance improvements (14% for dynamic pointer-tagging with only a 2% increase in code size), and we further demonstrate that much of the improvement can be attributed to the elimination of mispredicted branch instructions. As part of our...
Simon Marlow, Alexey Rodriguez Yakushev, Simon L.
Added 13 Dec 2009
Updated 13 Dec 2009
Type Conference
Year 2007
Where ICFP
Authors Simon Marlow, Alexey Rodriguez Yakushev, Simon L. Peyton Jones
Comments (0)