“…Being aware of this large-scale time-varying behavior is key to understanding the behavior of a program as a whole. Phase behavior can be exploited for various purposes, like performance modeling [1], compiler optimizations [1], hardware adaptation [2,3,4,5,6,1,7,8], etc. For example in phase-based hardware adaptation, if we know that particular parts of the processor are nearly unused during some program phase, we could turn off those parts during that phase, resulting in a reduced energy consumption without affecting overall performance.…”