State of the art microprocessors achieve high performance by executing multiple instructions per cycle. In an out-oforder engine, the instruction scheduler is responsible for dispatching instructions to execution units based on dependencies, latencies, and resource availability. Most existing instruction schedulers are doing a less than optimal job of scheduling memory accesses and instructions dependent on them, for the following reasons: . Memory dependencies cannot be resolved prior to execution, so loads are not advanced ahead of preceding stores. . The dynamic latencies of load instructions are unknown, so scheduling dependent instructions is based on either optimistic load-use delay (may cause re-scheduling and re-execution) or pessimistic delay (creating unnecessary delays). . Memory pipelines are more expensive than other execution units, and as such, are a scarce resource. Currently, an increase in the memory execution bandwidth is usually achieved through multi-banked cach...
No takes yet. Share an insight, caveat, or question.
Yoaz et al. (1999) studied this question.
Synapse has enriched 4 closely related papers on similar clinical questions. Consider them for comparative context: