Speculation techniques for improving load related instruction scheduling

  • Authors:
  • Adi Yoaz;Mattan Erez;Ronny Ronen;Stephan Jourdan

  • Affiliations:
  • Intel Corporation, Intel Israel (74) Ltd., BMD Architecture Dept., MS: IDC-3C, P.O. Box 1659, Haifa 31015, Israel;Intel Corporation, Intel Israel (74) Ltd., BMD Architecture Dept., MS: IDC-3C, P.O. Box 1659, Haifa 31015, Israel;Intel Corporation, Intel Israel (74) Ltd., BMD Architecture Dept., MS: IDC-3C, P.O. Box 1659, Haifa 31015, Israel;Intel Corporation, Intel Israel (74) Ltd., BMD Architecture Dept., MS: IDC-3C, P.O. Box 1659, Haifa 31015, Israel

  • Venue:
  • ISCA '99 Proceedings of the 26th annual international symposium on Computer architecture
  • Year:
  • 1999

Quantified Score

Hi-index 0.01

Visualization

Abstract

State of the art microprocessors achieve high performance by executing multiple instructions per cycle. In an out-of-order 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 caches where bank conflicts limit efficiency.In this paper we present three techniques to address these scheduler limitations. One is to improve the scheduling of load instructions by using a simple memory disambiguation mechanism. The second is to improve the scheduling of load dependent instructions by employing a Data Cache Hit-Miss Predictor to predict the dynamic load latencies. And the third is to improve the efficiency of load scheduling in a multi-banked cache through Cache-Bank Prediction.