Instruction Fetch Deferral using Static Slack
Authors:
Gregory A. Muthler, David Crowe, Sanjay J. Patel, and Steven S. Lumetta
University of Illinois at Urbana-Champaign
Abstract:
In this paper we present an approach to boosting performance and
tolerating latency by deferring non-critical instructions into a deferred
queue for later processing. As such, instruction deferral allows more
critical instructions to be fetched, dispatched, and possibly executed,
earlier.
We present methods for identifying deferrable instructions using
previously investigated notions of instruction slack. In particular we
use static slack to determine if an instruction is deferrable. The static
slack of an instruction corresponds to the number of cycles an instruction
can be delayed without impacting overall execution time when considering
all dynamic paths from that instruction. A significant fraction of the
dynamic instruction stream has enough static slack to be deferred by 10 or
more cycles on an aggressive execution model. Futhermore, the small
amount of register-based communication from deferred instructions to
non-deferred instructions makes a deferral-based approach to fetch and
execution very attractive.
We use a trace cache based microarchitecture to overcome some significant
implementation challenges associated with instruction deferral. Overall,
instruction deferral boosts the performance of a 4-wide processor by
approximately 11% and an 8-wide processor by 6% on eight of the SPEC2000
integer benchmarks.
Web Site
http://www.crhc.uiuc.edu/ACS/