A Unified Approach to Cancel Memory Instructions Early
Report, 2010
Execution efficiency of memory instructions remains critically important. To this end, a plethora of techniques aims to cancel load and store requests as soon as they are issued to the first-level cache. This paper unifies the diversity of approaches that cancel memory instructions early by contributing with a novel architectural scheme. Prior to that, we introduce the notion of silent loads to generalize the loads that can be satisfied by the already available values of the physical register file and contribute with a new architectural concept to cancel such loads early. We then show that our unified approach covers the techniques of cancelling (1) forwarded loads that obtain values through load-to-load and store-to-load forwarding, (2) small value loads that return small values (coded with 8 bits or less) and (3) silent loads. We find that 22%, 31% and 24% of all dynamic loads can be classified as forwarded, small value and silent, respectively. We demonstrate that the prevalence of such loads is mostly inherent in applications rather than an artifact of compilers. More importantly, we establish that a hypothetical scheme encompasses all the categories to eliminate as many as 42% of all dynamic loads. Finally, we contribute with a novel architectural technique to implement the unified scheme without compiler support and ISA extension. Our technique provides a geometric mean speedup of 13% with low complexity added. We show that our technique substantially reduces the overall energy dissipation and memory traffic.
silent store
small value load
silent load
small-value locality
forwarded load