@inbook{gao_sair_2005, title={Exploiting intra-function correlation with the global history stack}, volume={3553}, ISBN={354026969X}, booktitle={Embedded computer systems: Architectures, modeling, and simulation: 5th international workshop, Samos, Greece, July 18-20, 2005: proceedings (Lecture notes in computer science; 172)}, publisher={Berlin; New York: Springer}, author={Gao, F. and Sair, S.}, year={2005}, pages={172–181} } @inbook{kursun_reinman_sair_shayesteh_sherwood_2005, title={Low-overhead core swapping for thermal management}, volume={3471}, booktitle={Power-aware computer systems: 4th International Workshop, PACS 2004, Portland, OR, USA, December 5, 2004 (Lecture notes in computer science; 3471)}, publisher={Berlin: Springer}, author={Kursun, E. and Reinman, G. and Sair, S. and Shayesteh, A. and Sherwood, T.}, editor={B. Falsafi, T.N. VijaykumarEditor}, year={2005}, pages={46–60} } @article{sherwood_perelman_hamerly_sair_calder_2003, title={Discovering and exploiting program phases}, volume={23}, ISSN={["1937-4143"]}, DOI={10.1109/MM.2003.1261391}, abstractNote={Understanding program behavior is at the foundation of computer architecture and program optimization. Many programs have wildly different behavior on even the largest of scales (that is, over the program's complete execution). During one part of the execution, a program can be completely memory bound; in another, it can repeatedly stall on branch mispredicts. Average statistics gathered about a program might not accurately picture where the real problems lie. This realization has ramifications for many architecture and compiler techniques, from how to best schedule threads on a multithreaded machine, to feedback-directed optimizations, power management, and the simulation and test of architectures. Taking advantage of time-varying behavior requires a set of automated analytic tools and hardware techniques that can discover similarities and changes in program behavior on the largest of time scales. The challenge in building such tools is that during a program's lifetime it can execute billions or trillions of instructions. How can high-level behavior be extracted from this sea of instructions? Some programs change behavior drastically, switching between periods of high and low performance, yet system design and optimization typically focus on average system behavior. It is argued that instead of assuming average behavior, it is now time to model and optimize phase-based program behavior.}, number={6}, journal={IEEE MICRO}, author={Sherwood, T and Perelman, E and Hamerly, G and Sair, S and Calder, B}, year={2003}, pages={84–93} }