Runtime adaptation: a case for reactive code alignment
Venue
Proceedings of the 2nd International Workshop on Adaptive Self-Tuning Computing Systems for the Exaflop Era, ACM, New York, NY, USA (2012), pp. 1-11
Publication Year
2012
Authors
Michelle McDaniel, Kim Hazelwood
BibTeX
Abstract
Static alignment techniques are well studied and have been incorporated into
compilers in order to optimize code locality for the instruction fetch unit in
modern processors. However, current static alignment techniques have several
limitations that cannot be overcome. In the exascale era, it becomes even more
important to break from static techniques and develop adaptive algorithms in order
to maximize the utilization of every processor cycle. In this paper, we explore
those limitations and show that reactive realignment, a method where we dynamically
monitor running applications, react to symptoms of poor alignment, and adapt
alignment to the current execution environment and program input, is more scalable
than static alignment. We present fetches-per-instruction as a runtime indicator of
poor alignment. Additionally, we discuss three main opportunities that static
alignment techniques cannot leverage, but which are increasingly important in large
scale computing systems: microarchitectural differences of cores, dynamic program
inputs that exercise different and sometimes alternating code paths, and dynamic
branch behavior, including indirect branch behavior and phase changes. Finally, we
will present several instances where our trigger for reactive realignment may be
incorporated in practice, and discuss the limitations of dynamic alignment.
