GR20180200135U - Saving and restoring prediction state - Google Patents

Saving and restoring prediction state Download PDF

Info

Publication number
GR20180200135U
GR20180200135U GR20180200135U GR20180200135U GR20180200135U GR 20180200135 U GR20180200135 U GR 20180200135U GR 20180200135 U GR20180200135 U GR 20180200135U GR 20180200135 U GR20180200135 U GR 20180200135U GR 20180200135 U GR20180200135 U GR 20180200135U
Authority
GR
Greece
Prior art keywords
branch
prediction
state
branch prediction
execution
Prior art date
Application number
GR20180200135U
Other languages
Greek (el)
Inventor
Nikos NIKOLERIS
Andreas Lars SANDBERG
Stephan Diestelhorst
Matthew Jones Horsnell
Ilias Vougioukas
Original Assignee
Arm Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Arm Limited filed Critical Arm Limited
Priority to GR20180200135U priority Critical patent/GR20180200135U/en
Publication of GR20180200135U publication Critical patent/GR20180200135U/en

Links

Landscapes

  • Advance Control (AREA)

Abstract

A branch predictor is provided with a branch state buffer, branch prediction save circuitry responsive to a branch prediction save event associated with a given execution context to save at least a portion of the active branch prediction state associated with the given execution context to a branch state buffer; and branch prediction restore circuitry responsive to a branch prediction restore event associated with the given execution context to restore active branch prediction state based on previously saved branch prediction state stored in the branch state buffer for the given execution context. This is useful for reducing the performance impact of mitigating against speculative side-channel attacks.

Description

ΑΠΟΘΗΚΕΥΣΗ ΚΑΙ ΕΠΑΝΑΦΟΡΑ ΚΑΤΑΣΤΑΣΗΣ ΠΡΟΒΛΕΨΗΣ SAVE AND RESTORE PREDICTION STATE

ΚΛΑΔΟΥ BRANCH

ΥΠΟΒΑΘΡΟ BACKGROUND

Τεχνικό πεδίο Technical field

Η παρούσα τεχνική σχετίζεται με το πεδίο της επεξεργασίας δεδομένων. Πιο συγκεκριμένα σχετίζεται με την πρόβλεψη κλάδου. The present technique relates to the field of data processing. More specifically it relates to industry forecasting.

Τεχνικό υπόβαθρο Technical background

Μια συσκευή επεξεργασίας δεδομένων μπορεί να έχει ένα κύκλωμα πρόβλεψης κλάδου για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης πριν την ουσιαστική εκτέλεσή τους. Με την πρόβλεψη των αποτελεσμάτων κλάδου πριν την ουσιαστική εκτέλεση της εντολής διακλάδωσης, οι επακόλουθες εντολές που ακολουθούν τον κλάδο μπορούν να αρχίσουν να προσκομίζονται και να εκτελούνται υποθετικά προτού ολοκληρωθεί η εκτέλεση της εντολής διακλάδωσης, ώστε εάν η πρόβλεψη είναι σωστή τότε η απόδοση προστατεύεται επειδή οι επακόλουθες εντολές μπορούν να εκτελούνται νωρίτερα από ότι εάν προσκομίζονταν μόνο μόλις γνωστοποιούταν στην πράξη το αποτέλεσμα του κλάδου. A data processing device may have a branch prediction circuit for predicting the results of branch instructions prior to their actual execution. By predicting branch results before the branch instruction actually executes, subsequent instructions that follow the branch can begin to be fetched and hypothetically executed before the branch instruction has finished executing, so if the prediction is correct then performance is protected because the trailing orders can be executed earlier than if they were submitted only as soon as the branch result was actually known.

ΠΕΡΙΛΗΨΗ SUMMARY

Τουλάχιστον ορισμένα παραδείγματα παρέχουν μια συσκευή η οποία περιλαμβάνει: At least some examples provide an apparatus comprising:

ένα στοιχείο επεξεργασίας για την επεξεργασία εντολών από ένα πλήθος πλαισίων εκτέλεσης, a processing element for processing commands from a plurality of execution contexts;

μια διάταξη πρόβλεψης κλάδου για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης που επεξεργάζονται από το στοιχείο επεξεργασίας με βάση την ενεργή κατάσταση πρόβλεψης κλάδου που αποθηκεύεται σε ένα χώρο αποθήκευσης πρόβλεψης κλάδου, a branch prediction means for predicting the results of branch instructions processed by the processing element based on the active branch prediction state stored in a branch prediction store;

ένα κύκλωμα ελέγχου πρόβλεψης κλάδου που αποκρίνεται σε μια μεταγωγή πλαισίου εκτέλεσης από ένα πρώτο πλαίσιο εκτέλεσης σε ένα δεύτερο πλαίσιο εκτέλεσης για να αποτρέπει την πρόβλεψη αποτελεσμάτων των εντολών διακλάδωσης του δεύτερου πλαισίου εκτέλεσης από τη διάταξη πρόβλεψης κλάδου με βάση την εκπαιδευμένη κατάσταση πρόβλεψης κλάδου με βάση τα αποτελέσματα των προηγούμενων εντολών κλάδου του πρώτου πλαισίου εκτέλεσης, a branch prediction control circuit responsive to an execution frame switch from a first execution frame to a second execution frame to prevent the branch predictor from predicting results of branch instructions of the second execution frame based on the trained branch prediction state based on results of previous branch commands of the first execution frame,

ένα κύκλωμα αποθήκευσης πρόβλεψης κλάδου που αποκρίνεται σε ένα συμβάν αποθήκευσης πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης για την αποθήκευση τουλάχιστον ενός τμήματος της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης σε μια προσωρινή μνήμη κατάστασης κλάδου, και branch prediction storage circuitry responsive to a branch prediction storage event associated with a given execution context to store at least a portion of the active branch prediction state associated with the given execution context in a branch state buffer, and

ένα κύκλωμα επαναφοράς πρόβλεψης κλάδου που αποκρίνεται σε ένα συμβάν επαναφοράς πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης για την επαναφορά της ενεργής κατάστασης πρόβλεψης κλάδου με βάση την προηγουμένως αποθηκευμένη κατάσταση πρόβλεψης κλάδου που είναι αποθηκευμένη στην προσωρινή μνήμη κατάστασης κλάδου για το δεδομένο πλαίσιο εκτέλεσης. a branch prediction reset circuit responsive to a branch prediction reset event associated with the given execution context to reset the active branch prediction state based on the previously stored branch prediction state stored in the branch state buffer for the given execution context.

Τουλάχιστον ορισμένα παραδείγματα παρέχουν μια συσκευή που περιλαμβάνει: At least some examples provide an apparatus comprising:

μέσα για την επεξεργασία εντολών από ένα πλήθος πλαισίων εκτέλεσης, μέσα για την πρόβλεψη αποτελεσμάτων εντολών διακλάδωσης οι οποίες επεξεργάζονται από τα μέσα επεξεργασίας με βάση την ενεργή κατάσταση πρόβλεψης κλάδου η οποία αποθηκεύεται σε ένα χώρο αποθήκευσης πρόβλεψης κλάδου, means for processing instructions from a plurality of execution frames, means for predicting results of branch instructions which are processed by the processing means based on the active branch prediction state stored in a branch prediction store;

μέσα για τον έλεγχο της διάταξης πρόβλεψης κλάδου, η οποία σε απόκριση ενός πλαισίου εκτέλεσης μετάγεται από ένα πρώτο πλαίσιο εκτέλεσης σε ένα δεύτερο πλαίσιο εκτέλεσης, διαμορφωμένα ώστε να αποτρέπουν τη διάταξη πρόβλεψης κλάδου από την πρόβλεψη αποτελεσμάτων των εντολών διακλάδωσης του δεύτερου πλαισίου εκτέλεσης με βάση την εκπαιδευμένη κατάσταση πρόβλεψης κλάδου με βάση τα αποτελέσματα των προηγούμενων εντολών διακλάδωσης του πρώτου πλαισίου εκτέλεσης, means for controlling the branch predictor, which in response to an execution frame transitions from a first execution frame to a second execution frame, configured to prevent the branch predictor from predicting results of branch instructions of the second execution frame based on trained branch prediction state based on the results of the previous branch instructions of the first execution frame;

μέσα για την αποθήκευση, σε απόκριση ενός συμβάντος αποθήκευσης πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης, τουλάχιστον ενός τμήματος της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης σε μια προσωρινή μνήμη κατάστασης κλάδου, και μέσα για την επαναφορά, σε απόκριση ενός συμβάντος επαναφοράς πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης, της ενεργής κατάστασης πρόβλεψης κλάδου με βάση την προηγουμένως αποθηκευμένη κατάσταση πρόβλεψης κλάδου η οποία αποθηκεύεται στην προσωρινή μνήμη κατάστασης κλάδου για το δεδομένο πλαίσιο εκτέλεσης. means for storing, in response to a branch prediction save event associated with a given execution context, at least a portion of the active branch prediction state associated with the given execution context in a branch state cache, and means for restoring, in response of a branch prediction reset event associated with the given execution context, the active branch prediction state based on the previously saved branch prediction state stored in the branch state cache for the given execution context.

Τουλάχιστον ορισμένα παραδείγματα παρέχουν μια μέθοδο πρόβλεψης κλάδου για μια συσκευή που περιλαμβάνει ένα στοιχείο επεξεργασίας για την επεξεργασία εντολών από ένα πλήθος πλαισίων εκτέλεσης, με τη μέθοδο να περιλαμβάνει: At least some examples provide a branch prediction method for a device including a processing element for processing instructions from a plurality of execution contexts, the method comprising:

την πρόβλεψη αποτελεσμάτων εντολών διακλάδωσης που επεξεργάζονται από το στοιχείο επεξεργασίας με βάση την ενεργή κατάσταση πρόβλεψης κλάδου που αποθηκεύεται σε ένα χώρο αποθήκευσης πρόβλεψης κλάδου, predicting results of branch instructions processed by the processing element based on the active branch prediction state stored in a branch prediction store;

σε απόκριση μιας μεταγωγής πλαισίου εκτέλεσης από ένα πρώτο πλαίσιο εκτέλεσης σε ένα δεύτερο πλαίσιο εκτέλεσης, την αποτροπή πρόβλεψης των αποτελεσμάτων των εντολών διακλάδωσης από τη διάταξη πρόβλεψης κλάδου του δεύτερου πλαισίου εκτέλεσης με βάση την εκπαιδευμένη κατάσταση πρόβλεψης κλάδου με βάση τα αποτελέσματα των προηγούμενων εντολών διακλάδωσης του πρώτου πλαισίου εκτέλεσης, in response to an execution frame switch from a first execution frame to a second execution frame, preventing the branch predictor of the second execution frame from predicting the results of branch instructions based on the trained branch prediction state based on the results of its previous branch instructions first execution frame,

σε απόκριση ενός συμβάντος αποθήκευσης πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης, την αποθήκευση τουλάχιστον ενός τμήματος της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης σε μια προσωρινή μνήμη κλάδου, και in response to a save branch prediction event associated with a given execution context, storing at least a portion of the active branch prediction state associated with the given execution context in a branch cache, and

σε απόκριση ενός συμβάντος επαναφοράς πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης, την επαναφορά της ενεργής κατάστασης πρόβλεψης κλάδου με βάση την προηγουμένως αποθηκευμένη κατάσταση πρόβλεψης κλάδου που αποθηκεύεται στην προσωρινή μνήμη κατάστασης κλάδου για το δεδομένο πλαίσιο εκτέλεσης. in response to a branch prediction reset event associated with the given execution context, resetting the active branch prediction state based on the previously saved branch prediction state stored in the branch state cache for the given execution context.

ΣΥΝΤΟΜΗ ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΣΧΕΔΙΑΓΡΑΜΜΑΤΩΝ BRIEF DESCRIPTION OF THE DRAWINGS

Περαιτέρω απόψεις, χαρακτηριστικά και πλεονεκτήματα της παρούσας τεχνικής θα διαφανούν από την ακόλουθη περιγραφή των παραδειγμάτων, η οποία θα πρέπει να διαβαστεί σε συνδυασμό με τα συνοδευτικά σχεδιαγράμματα, στα οποία: Further aspects, features and advantages of the present technique will become apparent from the following description of the examples, which should be read in conjunction with the accompanying drawings, in which:

Το Σχήμα 1 απεικονίζει σχηματικά ένα παράδειγμα μιας συσκευής επεξεργασίας δεδομένων που έχει μια διάταξη πρόβλεψης κλάδου, Figure 1 schematically illustrates an example of a data processing device having a branch predictor,

Το Σχήμα 2 απεικονίζει σχηματικά την παροχή μιας προσωρινής μνήμης κατάστασης κλάδου για την αποθήκευση και επαναφορά της κατάστασης πρόβλεψης κλάδου στη διάταξη πρόβλεψης κλάδου, Figure 2 schematically illustrates the provision of a branch state cache for storing and restoring the branch prediction state in the branch predictor,

Τα Σχήματα 3 έως 6 απεικονίζουν έναν αριθμό παραδειγμάτων συμπίεσης και αποσυμπίεσης της κατάστασης πρόβλεψης κλάδου, Figures 3 to 6 illustrate a number of examples of compression and decompression of the branch prediction state,

Το Σχήμα 7 δείχνει ένα παράδειγμα στο οποίο ο χώρος αποθήκευσης πρόβλεψης κλάδου περιλαμβάνει έναν αριθμό περιοχών και η προσωρινή μνήμη κατάστασης κλάδου περιλαμβάνει τουλάχιστον μια από τις περιοχές του χώρου αποθήκευσης πρόβλεψης κλάδου, Figure 7 shows an example in which the branch prediction store includes a number of regions and the branch state cache includes at least one of the regions of the branch prediction store,

Τα Σχήματα 8 έως 10 απεικονίζουν παραδείγματα στα οποία η ενεργή κατάσταση πρόβλεψης κλάδου απενεργοποιείται σε απόκριση μιας μεταγωγής πλαισίου εκτέλεσης, και εάν παραμένει ακόμη όταν μια επακόλουθη μεταγωγή πλαισίου εκτέλεσης επιστρέφει στο προηγούμενο πλαίσιο, στη συνέχεια επανενεργοποιείται, Figures 8 through 10 illustrate examples in which the active branch prediction state is disabled in response to an execution frame switch, and if it still remains when a subsequent execution frame switch returns to the previous frame, is then re-enabled;

Το Σχήμα 11 απεικονίζει ένα παράδειγμα μιας διάταξης πρόβλεψης κλάδου TAGE η οποία χρησιμοποιεί μια διάταξη πρόβλεψης perceptron ως διάταξη πρόβλεψης μετάπτωσης, Figure 11 illustrates an example of a TAGE branch predictor that uses a perceptron predictor as a transition predictor,

Το Σχήμα 12 απεικονίζει ένα παράδειγμα στο οποίο η διάταξη πρόβλεψης κλάδου TAGE του Σχήματος 11 συνδυάζεται με ένα περαιτέρω perceptron σε μια υβριδική διάταξη πρόβλεψης, Figure 12 illustrates an example in which the TAGE branch predictor of Figure 11 is combined with a further perceptron in a hybrid predictor,

Το Σχήμα 13 είναι ένα διάγραμμα που συγκρίνει την απόδοση μιας διάταξης πρόβλεψης παρόμοιας με αυτή του Σχήματος 11 , η οποία αποθηκεύει τη μερική κατάσταση, με συμβατικές διατάξεις πρόβλεψης TAGE και perceptron οι οποίες δε διατηρούν την κατάσταση μέσω διακοπτών πλαισίου, Figure 13 is a diagram comparing the performance of a predictor similar to that of Figure 11, which stores partial state, with conventional TAGE and perceptron predictors which do not maintain state through frame switches,

Το Σχήμα 14 είναι ένα διάγραμμα το οποίο απεικονίζει την επίπτωση στην απόδοση από την εκκίνηση μιας διάταξης πρόβλεψης κλάδου με πλήρως θερμή κατάσταση μετά από μια μεταγωγή πλαισίου σε ένα νέο πυρήνα, Figure 14 is a diagram illustrating the performance impact of starting a fully hot branch predictor after a frame switch to a new core,

Το Σχήμα 15 απεικονίζει μια θεωρητική αναπαράσταση μιας διάταξης πρόβλεψης TAGE χρησιμοποιώντας μια δικόρυφη διάταξη πρόβλεψης ως διάταξη πρόβλεψης μετάπτωσης, Figure 15 illustrates a theoretical representation of a TAGE predictor using a dihedral predictor as a transition predictor,

Το Σχήμα 16 απεικονίζει μια θεωρητική αναπαράσταση μιας διάταξης πρόβλεψης πολλαπλών διαστάσεων perceptron, Figure 16 illustrates a theoretical representation of a multidimensional perceptron prediction device,

Το Σχήμα 17 δείχνει ένα μηχανισμό αποθήκευσης και επαναφοράς κατάστασης πρόβλεψης κλάδου, Figure 17 shows a branch prediction state store and restore mechanism,

Το Σχήμα 18 απεικονίζει ένα παράδειγμα μετανάστευσης κατάστασης πρόβλεψης κλάδου μεταξύ στοιχείων επεξεργασίας, Figure 18 illustrates an example of branch prediction state migration between processing elements,

Το Σχήμα 19 είναι ένα διάγραμμα που συγκρίνει διαφορετικά μεγέθη και τύπους δικόρυφων διατάξεων πρόβλεψης, Figure 19 is a chart comparing different sizes and types of forecasting arrays,

Το Σχήμα 20 είναι ένα διάγραμμα που παρέχει μια σύγκριση μεταξύ του ποσοστού λανθασμένης πρόβλεψης κλάδου για τις διατάξεις πρόβλεψης TAGE και perceptron, Figure 20 is a graph that provides a comparison between the branch misprediction rate for the TAGE and perceptron predictors,

Το Σχήμα 21 είναι ένα διάγραμμα το οποίο απεικονίζει τα αποτελέσματα μιας διερεύνησης των επιπτώσεων στο ποσοστό λανθασμένης πρόβλεψης κλάδου κατά την αποθήκευση διαφορετικών υποσυνόλων κατάστασης πρόβλεψης κλάδου, Το Σχήμα 22 είναι ένα διάγραμμα που συγκρίνει τα σχέδια δικόρυφης διάταξης πρόβλεψης και perceptron, Figure 21 is a diagram illustrating the results of an investigation of the effects on branch misprediction rate when storing different subsets of branch prediction state;

Το Σχήμα 23 απεικονίζει την επίπτωση στο ποσοστό λανθασμένης πρόβλεψης κλάδου κατά τη διακύμανση του μεγέθους και του αριθμού πινάκων χαρακτηριστικών της διάταξης πρόβλεψης perceptron, Figure 23 illustrates the effect on branch misprediction rate when varying the size and number of feature matrices of the perceptron predictor,

Τα Σχήματα 24 και 25 είναι διαγράμματα που απεικονίζουν τις επιπτώσεις στο ποσοστό λανθασμένης πρόβλεψης κλάδου όταν διατηρείται ένα μέγιστο 1,25 kilobyte κατάστασης διάταξης πρόβλεψης κλάδου μετά από μια μεταγωγή πλαισίου, και Το Σχήμα 26 συγκρίνει το σταθερό ποσοστό λανθασμένης πρόβλεψης κλάδου για διαφορετικές μορφές διατάξεων πρόβλεψης κλάδου. Figures 24 and 25 are graphs illustrating the effects on branch misprediction rate when a maximum of 1.25 kilobytes of branch predictor state is maintained after a frame switch, and Figure 26 compares the fixed branch misprediction rate for different types of predictors sector.

ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΠΑΡΑΔΕΙΓΜΑΤΩΝ DESCRIPTION OF EXAMPLES

Αποθήκευση και επαναφορά τnς κατάστασης τnς διάταξης ποόβλεψης κλάδου Μια συσκευή επεξεργασίας δεδομένων μπορεί να έχει ένα μηχανισμό πρόβλεψης κλάδου για την πρόβλεψη ενός αποτελέσματος μιας εντολής διακλάδωσης. Παραδοσιακά ένας μηχανισμός πρόβλεψης κλάδου θα θεωρείτο ως ένας μηχανισμός βελτίωσης της απόδοσης του οποίου οι λανθασμένες προβλέψεις δεν είναι κρίσιμες για την ασφάλεια των δεδομένων που επεξεργάζονται σε μια συσκευή επεξεργασίας δεδομένων, αλλά επηρεάζουν απλά το επίπεδο της απόδοσης που επιτυγχάνεται. Αυτό ισχύει επειδή εάν ένας κλάδος προβλεφθεί λανθασμένα τότε όσο το κύκλωμα επεξεργασίας μπορεί να εκτελεί προσωρινά τις λάθος εντολές, μόλις το πραγματικό αποτέλεσμα κλάδου προσδιοριστεί και συγκριθεί με μια πρόβλεψη, η λανθασμένη πρόβλεψη μπορεί να ανιχνευθεί και στη συνέχεια ένας σωληναγωγός επεξεργασίας μπορεί να αδειάσει από τις επακόλουθες εντολές οι οποίες προσκομίστηκαν με βάση τον λάθος προβλεφθέντα κλάδο, ενώ η αρχιτεκτονική κατάσταση του επεξεργαστή μπορεί να επανέρθει στο σημείο στο οποίο απαντήθηκε ο κλάδος ώστε να ακυρωθούν οι αρχιτεκτονικές επιπτώσεις των επακόλουθα υποτιθέμενων εντολών οι οποίες αποδεικνύονται λανθασμένες. Saving and Restoring Branch Predictor State A data processing device may have a branch predictor mechanism for predicting an outcome of a branch instruction. Traditionally a branch prediction mechanism would be thought of as a performance improvement mechanism whose mispredictions are not critical to the safety of the data being processed on a data processing device, but simply affect the level of performance achieved. This is because if a branch is incorrectly predicted then while processing circuitry may temporarily execute the wrong instructions, once the actual branch result is determined and compared to a prediction, the incorrect prediction can be detected and then a processing pipeline can be emptied of subsequent instructions that were served based on the wrongly predicted branch, while the processor's architectural state can be reverted to the point at which the branch was answered to cancel out the architectural effects of subsequently assumed instructions that turn out to be wrong.

Ωστόσο, πρόσφατα αναγνωρίστηκε ότι ένα κύκλωμα πρόβλεψης κλάδου θα μπορούσε να παρέχει μια διαδρομή την οποία ένας επιτιθέμενος θα μπορούσε να εκμεταλλευθεί ώστε να παρακάμψει τις προστασίες ασφαλείας οι οποίες μπορεί να παρέχονται σε μια συσκευή επεξεργασίας δεδομένων για τον περιορισμό ορισμένων φορτίων εργασίας λογισμικού από την πρόσβαση σε δεδομένα που σχετίζονται με άλλα φορτία εργασίας λογισμικού. Αυτό ισχύει επειδή σε ορισμένες διατάξεις πρόβλεψης κλάδου είναι δυνατή η εκχώρηση μιας καταχώρησης κατάστασης πρόβλεψης κλάδου στη διάταξη πρόβλεψης κλάδου με βάση το γεγονός ότι θα ήταν δυνατή η πρόσβαση στο ιστορικό κλάδου που έχει παρατηρηθεί σε ένα πλαίσιο εκτέλεσης από ένα διαφορετικό φορτίο εργασίας λογισμικού και η χρήση του για την πρόβλεψη του αποτελέσματος των κλάδων αυτού του διαφορετικού πλαισίου λογισμικού. Προηγουμένως, μια τέτοια χρήση της κατάστασης πρόβλεψης κλάδου από ένα πλαίσιο για την πρόβλεψη των αποτελεσμάτων των κλάδων σε ένα άλλο πλαίσιο θα θεωρείτο απλά ως ζήτημα απόδοσης, όπως εάν το δεύτερο πλαίσιο πετύχαινε τη λάθος καταχώρηση της διάταξης πρόβλεψης κλάδου που έχει εκχωρηθεί από ένα πρώτο πλαίσιο και στη συνέχεια κάθε λανθασμένη πρόβλεψη που προκύπτει από αυτό μπορεί να προσδιορίζεται αργότερα και να επιλύεται μόλις γίνεται γνωστό το πραγματικό αποτέλεσμα του κλάδου και αυτό θα αναμενόταν απλά να προκαλέσει μια καθυστέρηση στην επεξεργασία του σωστού αποτελέσματος του κλάδου, αλλά δε θα αναμενόταν να προκαλέσει έναν κίνδυνο ασφάλειας. However, it has recently been recognized that a branch prediction circuit could provide a path that an attacker could exploit to bypass security protections that may be provided on a data processing device to restrict certain software workloads from accessing data related to other software workloads; This is because in some branch predictors it is possible to assign a branch predictor state entry to the branch predictor based on the fact that it would be possible to access the branch history observed in an execution context by a different software workload and use of for predicting the outcome of branches of this different software framework. Previously, such use of the branch prediction state by one frame to predict the results of branches in another frame would simply be considered a performance issue, such as if the second frame succeeded in misregistering the branch predictor assigned by a first frame and then any incorrect prediction resulting from this can be identified later and resolved once the actual branch result is known and this would simply be expected to cause a delay in processing the correct branch result, but would not be expected to cause a risk security.

Ωστόσο, έχει αναγνωριστεί ότι οι εντολές οι οποίες εκτελούνται λανθασμένα υποθετικά λόγω ενός κλάδου που προβλέφθηκε λάθος μπορούν ακόμη να επηρεάζουν τα δεδομένα σε μια κρυφή μνήμη ή κάποια άλλη μη αρχιτεκτονική δομή αποθήκευσης που χρησιμοποιείται από μια συσκευή επεξεργασίας δεδομένων. Αυτό θα μπορούσε να εκμεταλλεύεται από έναν επιτιθέμενο ώστε να προσπαθεί να αποκτήσει κάποιες πληροφορίες για πιθανώς ευαίσθητα δεδομένα τα οποία δεν είναι προσβάσιμα στον επιτιθέμενο, αλλά είναι προσβάσιμα σε ένα άλλο πλαίσιο εκτέλεσης το οποίο μπορεί να εξαπατείται από τον επιτιθέμενο και να εκτελεί εντολές σχεδιασμένες να αποκτούν πρόσβαση σε μυστικά και να προκαλούν αλλαγές στην εκχώρηση της κρυφής μνήμης οι οποίες εκθέτουν κάποιες πληροφορίες για το μυστικό στον επιτιθέμενο. Γ ια παράδειγμα ο επιτιθέμενος θα μπορούσε να εκπαιδεύει τη διάταξη πρόβλεψης κλάδου με ένα σχέδιο προσβάσεων σε κλάδους, ώστε όταν το θύμα πλαίσιο εκτέλεσης αργότερα αποκτά πρόσβαση στην ίδια καταχώρηση τότε θα εκτελέσει λανθασμένα μια εντολή από μια λάθος διεύθυνση προορισμού ή θα ακολουθήσει μια λάθος πρόβλεψη κατά πόσο ένας κλάδος είναι κατειλημμένος ή μη κατειλημμένος, προκαλώντας μια ακατάλληλη πρόσβαση στις μυστικές πληροφορίες. Πλευρικά κανάλια χρονισμού της κρυφής μνήμης μπορούν να χρησιμοποιούνται στη συνέχεια για τη διερεύνηση των επιπτώσεων της λανθασμένης υπόθεσης για τη διαρροή πληροφοριών για το μυστικό. However, it has been recognized that instructions that are hypothetically executed incorrectly due to a mispredicted branch can still affect data in a cache or other unarchitected storage structure used by a data processing device. This could be exploited by an attacker to try to gain some information about potentially sensitive data that is not accessible to the attacker, but is accessible to another execution context that can be tricked by the attacker into executing commands designed to obtain access secrets and cause changes to the cache allocation that expose some information about the secret to the attacker. For example an attacker could train the branch predictor with a pattern of branch accesses so that when the victim execution framework later accesses the same entry it will incorrectly execute an instruction from a wrong destination address or follow a wrong prediction by how much a branch is occupied or unoccupied, causing an inappropriate access to secret information. Cache timing side channels can then be used to investigate the implications of the false hypothesis for leaking information about the secret.

Μια τεχνική αντιμετώπισης για την προφύλαξη από τέτοιες επιθέσεις μπορεί να είναι η παροχή ενός κυκλώματος ελέγχου πρόβλεψης κλάδου το οποίο αποκρίνεται σε μια μεταγωγή πλαισίου εκτέλεσης από ένα πρώτο πλαίσιο εκτέλεσης σε ένα δεύτερο πλαίσιο εκτέλεσης ώστε να αποτρέπεται η πρόβλεψη αποτελεσμάτων εντολών διακλάδωσης του δεύτερου πλαισίου από τη διάταξη κλάδου με βάση την εκπαιδευμένη κατάσταση πρόβλεψης κλάδου με βάση τα προηγούμενα αποτελέσματα των προηγούμενων εντολών διακλάδωσης του πρώτου πλαισίου εκτέλεσης. Αυτό θα μπορούσε να υλοποιηθεί με διάφορους τρόπους, για παράδειγμα εκκενώνοντας την κατάσταση πρόβλεψης κλάδου που σχετίζεται με το πρώτο πλαίσιο εκτέλεσης από το αποθηκευτικό χώρο πρόβλεψης κλάδου σε απόκριση της μεταγωγής πλαισίου εκτέλεσης ή τιτλοφορώντας τις καταχωρήσεις του αποθηκευτικού χώρου πρόβλεψης κλάδου για τον προσδιορισμό του πλαισίου εκτέλεσης με τον οποίο σχετίζονται και εξασφαλίζοντας στη συνέχεια ότι οι αναζητήσεις του αποθηκευτικού χώρου πρόβλεψης κλάδου που πραγματοποιούνται σε ένα πλαίσιο εκτέλεσης δεν μπορούν να εντοπίζουν καταχωρήσεις που εκχωρούνται από ένα άλλο πλαίσιο εκτέλεσης. Ωστόσο, τέτοιες αντιμετωπίσεις μπορεί να έχουν σημαντικές επιπτώσεις στην απόδοση επειδή όταν ξεκινά το δεύτερο πλαίσιο εκτέλεσης τότε μπορεί να απαιτείται η εκκίνηση από μια ψυχρή κατάσταση της διάταξης πρόβλεψης κλάδου, χωρίς να είναι διαθέσιμες κάποιες συμπληρωμένες από πριν προβλέψεις κλάδου για την πρόβλεψη εντολών διακλάδωσης στο επόμενο πλαίσιο. A countermeasure technique to guard against such attacks may be to provide a branch prediction control circuit responsive to an execution frame switch from a first execution frame to a second execution frame to prevent the second frame from predicting results of branch instructions. branch layout based on the trained branch prediction state based on the previous results of the previous branch instructions of the first execution frame. This could be implemented in a number of ways, for example by flushing the branch prediction state associated with the first execution frame from the branch prediction store in response to the execution frame switch, or titling the branch prediction store entries to identify the execution frame with which they are associated and then ensuring that lookups of branch prediction storage performed in one execution context cannot find entries allocated by another execution context. However, such issues can have significant performance implications because when the second execution frame starts then the branch predictor may need to be started from a cold state, with no pre-populated branch predictions available to predict branch instructions in the next frame.

Στις τεχνικές που περιγράφονται παρακάτω, παρέχεται μια προσωρινή μνήμη κατάστασης κλάδου στην οποία είναι δυνατή η αποθήκευση της κατάστασης πρόβλεψης κλάδου από τον αποθηκευτικό χώρο πρόβλεψης κλάδου και από την οποία είναι δυνατή η επαναφορά της κατάστασης πρόβλεψης κλάδου η οποία αποθηκεύτηκε προηγουμένως. Συνεπώς, σε απόκριση της έγερσης ενός συμβάντος αποθήκευσης πρόβλεψης κλάδου για ένα δεδομένο πλαίσιο εκτέλεσης, ένα κύκλωμα αποθήκευσης πρόβλεψης κλάδου αποθηκεύει τουλάχιστον ένα τμήμα της ενεργής κατάστασης πρόβλεψης κλάδου στην προσωρινή μνήμη κατάστασης κλάδου. Σε απόκριση της συσχέτισης ενός συμβάντος επαναφοράς πρόβλεψης κλάδου με το δεδομένο πλαίσιο εκτέλεσης, η ενεργή κατάσταση πρόβλεψης κλάδου επανέρχεται στον αποθηκευτικό χώρο πρόβλεψης κλάδου με βάση την κατάσταση πρόβλεψης κλάδου που αποθηκεύτηκε προηγουμένως στην προσωρινή μνήμη κατάστασης κλάδου για το δεδομένο πλαίσιο εκτέλεσης. Συνεπώς, ακόμη και όταν μετά από μια μεταγωγή πλαισίου εκτέλεσης γίνεται μη διαθέσιμη η προηγουμένως εκπαιδευμένη κατάσταση πρόβλεψης κλάδου με βάση το εξερχόμενο πλαίσιο εκτέλεσης, η επαναφορά της προηγουμένως αποθηκευμένης κατάστασης πρόβλεψης κλάδου για το εισερχόμενο πλαίσιο μπορεί να σημαίνει ότι οι επιθέσεις της μορφής που εξετάστηκαν παραπάνω μπορούν να αντιμετωπίζονται με μικρότερη απώλεια απόδοσης. In the techniques described below, a branch state cache is provided in which the branch prediction state from the branch prediction storage can be stored and from which the previously saved branch prediction state can be restored. Accordingly, in response to the raising of a branch prediction store event for a given execution context, a branch prediction storage circuit stores at least a portion of the active branch prediction state in the branch state buffer. In response to the association of a branch prediction reset event with the given execution context, the active branch prediction state is restored to the branch prediction store based on the branch prediction state previously stored in the branch state cache for the given execution context. Therefore, even when after an execution frame switch the previously trained branch prediction state based on the outgoing execution frame becomes unavailable, restoring the previously stored branch prediction state for the incoming frame may mean that attacks of the form discussed above can be handled with less performance loss.

Σε ορισμένες υλοποιήσεις η προσωρινή μνήμη κατάστασης κλάδου μπορεί να χρησιμοποιείται για την αποθήκευση ολόκληρου του συνόλου ενεργών καταστάσεων πρόβλεψης κλάδου για ένα δεδομένο πλαίσιο εκτέλεσης. Ωστόσο, σε τυπικές υλοποιήσεις διατάξεων πρόβλεψης κλάδου αυτή μπορεί να είναι σχετικά μεγάλη, για παράδειγμα 64 kilobyte, ενώ μπορεί να μην είναι αποδεκτή η παροχή επιπλέον χωρητικότητας αποθήκευσης για την αποθήκευση της προηγούμενης κατάστασης πρόβλεψης κλάδου αυτού του μεγέθους. In some implementations the branch state cache may be used to store the entire set of active branch prediction states for a given execution context. However, in typical implementations of branch prediction arrangements this may be relatively large, for example 64 kilobytes, and it may not be acceptable to provide additional storage capacity to store previous branch prediction state of this size.

Συνεπώς, σε ορισμένα παραδείγματα το κύκλωμα αποθήκευσης πρόβλεψης κλάδου μπορεί να πραγματοποιεί συμπίεση της κατάστασης πρόβλεψης κλάδου για τη συμπίεση τουλάχιστον ενός τμήματος της ενεργής κατάστασης πρόβλεψης κλάδου για τη δημιουργία μιας συμπιεσμένης κατάστασης πρόβλεψης κλάδου προς αποθήκευση στην προσωρινή μνήμη κατάστασης κλάδου. Κατά την επαναφορά της κατάστασης πρόβλεψης κλάδου που αποθηκεύτηκε προηγουμένως, η κατάσταση μπορεί να αποσυμπιέζεται από το κύκλωμα επαναφοράς πρόβλεψης κλάδου για τη δημιουργία της ενεργής κατάστασης πρόβλεψης κλάδου προς επαναφορά. Αυτό μπορεί να μειώσει την ποσότητα των δεδομένων που πρέπει να αποθηκεύονται και επαναφέρονται (π.χ. κατά ένα συντελεστή έως και 64), μειώνοντας τις επιπτώσεις της αντιμετώπισης των υποθετικών επιθέσεων πλευρικού καναλιού της μορφής που εξετάστηκε παραπάνω. Accordingly, in some examples the branch prediction storage circuitry may perform branch prediction state compression to compress at least a portion of the active branch prediction state to create a compressed branch prediction state to be stored in the branch state cache. When restoring the previously saved branch prediction state, the state may be decompressed by the branch prediction reset circuit to create the active branch prediction state to be restored. This can reduce the amount of data that must be stored and retrieved (eg, by a factor of up to 64), reducing the impact of dealing with hypothetical side-channel attacks of the form discussed above.

Η συμπίεση και αποσυμπίεση μπορεί να πραγματοποιείται με έναν αριθμό διαφορετικών τρόπων. Σε ένα παράδειγμα, η διάταξη πρόβλεψης κλάδου μπορεί να έχει έναν αριθμό ξεχωριστών μονάδων διάταξης πρόβλεψης για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης χρησιμοποιώντας διάφορες μεθόδους πρόβλεψης κλάδου και έναν επιλογέα για την επιλογή ανάμεσα στα αποτελέσματα που προβλέφθηκαν από τις διάφορες μονάδες διάταξης πρόβλεψης. Γ ια παράδειγμα, μια από τις μονάδες διάταξης πρόβλεψης θα μπορούσε να είναι μια διάταξη πρόβλεψης TAGE, η οποία χρησιμοποιεί γεωμετρικούς πίνακες ιστορικού με ετικέτες για την παροχή της πρόβλεψης κλάδου, ενώ μια άλλη μονάδα διάταξης πρόβλεψης θα μπορούσε να είναι μια διάταξη πρόβλεψης μετάπτωσης (π.χ. μια δικόρυφη διάταξη πρόβλεψης που χρησιμοποιεί απαριθμητές εμπιστοσύνης δύο bit ή μια διάταξη πρόβλεψης perceptron που αποθηκεύει σύνολα βαρών, για την οποία παράγεται μια πρόβλεψη με βάση ένα άθροισμα όρων, με κάθε όρο να εξαρτάται από ένα αντίστοιχο βάρος που επιλέγεται με βάση ένα αντίστοιχο τμήμα του απαριθμητή προγράμματος και /ή ιστορικές πληροφορίες). Σε ένα παράδειγμα, αντί να συμπεριλαμβάνονται όλες οι καταστάσεις πρόβλεψης κλάδου σύμφωνα με όλους τους διαφορετικούς τύπους μονάδων διάταξης πρόβλεψης, η κατάσταση πρόβλεψης κλάδου που σχετίζεται με τουλάχιστον μια από τις μονάδες διάταξης πρόβλεψης μπορεί να παραλείπεται από τη συμπιεσμένη κατάσταση πρόβλεψης κλάδου. Κατά την επαναφορά της ενεργής κατάστασης πρόβλεψης κλάδου με βάση τα περιεχόμενα της προσωρινής μνήμης κατάστασης κλάδου, μια μονάδα διάταξης πρόβλεψης της οποίας η κατάσταση έχει συμπεριληφθεί στη συμπιεσμένη κατάσταση πρόβλεψης κλάδου μπορεί να επαναφέρεται με βάση αυτή τη συμπιεσμένη κατάσταση πρόβλεψης κλάδου, ενώ η κατάσταση πρόβλεψης κλάδου των μονάδων διάταξης πρόβλεψης για τις οποίες η κατάσταση πρόβλεψης κλάδου παραλήφθηκε από τη συμπιεσμένη κατάσταση πρόβλεψης κλάδου μπορεί να επανέρχεται στις προεπιλεγμένες τιμές για παράδειγμα. Compression and decompression can be done in a number of different ways. In one example, the branch predictor may have a number of separate predictor units for predicting the results of branch instructions using various branch prediction methods and a selector for choosing between the results predicted by the various predictor units. For example, one of the predictor modules could be a TAGE predictor, which uses labeled geometric history matrices to provide the branch prediction, while another predictor module could be a transition predictor (p .eg a binary predictor using two-bit confidence counters or a perceptron predictor storing sets of weights, for which a prediction is produced based on a sum of terms, each term depending on a corresponding weight chosen based on a corresponding part of the program counter and/or historical information). In one example, instead of including all branch prediction states according to all different types of prediction layout units, the branch prediction state associated with at least one of the prediction layout units may be omitted from the compressed branch prediction state. When restoring the active branch prediction state based on the contents of the branch state cache, a prediction device whose state has been included in the compressed branch prediction state may be reset based on that compressed branch prediction state, while the branch prediction state of prediction layout units for which the branch prediction state was received from the compressed branch prediction state may be reset to default values for example.

Όπως εξετάζεται παρακάτω, οι διάφοροι τύποι διατάξεων πρόβλεψης μπορούν να παρέχουν διάφορα επίπεδα αύξησης της απόδοσης ανά bit χωρητικότητας αποθήκευσης που απαιτείται για την αποθήκευση της αντίστοιχης κατάστασης πρόβλεψης κλάδου κι επομένως μπορεί να είναι προτιμότερη η επιλογή, ως η μονάδα διάταξης πρόβλεψης της οποίας η κατάσταση περιλαμβάνεται στη συμπιεσμένη κατάσταση πρόβλεψης κλάδου, ενός ή περισσότερων τύπων διατάξεων πρόβλεψης οι οποίοι παρέχουν το υψηλότερο επίπεδο αύξησης της απόδοσης ανά μονάδα αποθήκευσης δεδομένων. Από την ανάλυση που εξετάζεται παρακάτω, βρέθηκε ότι συνήθως η μονάδα διάταξης πρόβλεψης μετάπτωσης, η οποία παράγει μια πρόβλεψη μετάπτωσης στην περίπτωση στην οποία τουλάχιστον μια άλλη μονάδα πρόβλεψης εξάγει μια πρόβλεψη με εμπιστοσύνη μικρότερη από μια προκαθορισμένη τιμή κατωφλιού, μπορεί να παρέχει το υψηλότερο επίπεδο αύξησης της απόδοσης ανά αποθηκευμένο bit πληροφορίας. Συνεπώς, σε ορισμένες περιπτώσεις η συμπιεσμένη κατάσταση πρόβλεψης κλάδου μπορεί να περιλαμβάνει μια ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με τη μονάδα διάταξης πρόβλεψης μετάπτωσης, αλλά θα μπορούσε να παραλείπει μια κατάσταση πρόβλεψης κλάδου που σχετίζεται με άλλους τύπους μονάδων διάταξης πρόβλεψης κλάδου. Για παράδειγμα, η βασική μονάδα πρόβλεψης είναι συχνά ένας απλούστερος τύπος μονάδας διάταξης πρόβλεψης κλάδου από άλλες πιο σύνθετες μονάδες διάταξης πρόβλεψης κλάδου και ενώ άλλοι τύποι διατάξεων πρόβλεψης μπορεί να παρέχουν μεγαλύτερη απόλυτη βελτίωση της απόδοσης, αυτή μπορεί να κοστίζει περισσότερο όσον αφορά στη χωρητικότητα αποθήκευσης, επομένως μπορεί να είναι πιο αποδοτική η διατήρηση της κατάστασης της διάταξης πρόβλεψης μετάπτωσης στην προσωρινή μνήμη. Σε ορισμένα παραδείγματα, η μονάδα διάταξης πρόβλεψης μετάπτωσης μπορεί να είναι μια δικόρυφη διάταξη πρόβλεψης η οποία περιλαμβάνει, ως την κατάσταση πρόβλεψης κλάδου, έναν πίνακα με απαριθμητές εμπιστοσύνης οι οποίοι υποδηλώνουν κατά πόσο ένας κλάδος προβλέπεται με μεγάλο βαθμό εμπιστοσύνης όταν ακολουθείται, προβλέπεται με μικρό βαθμό εμπιστοσύνης όταν ακολουθείται, προβλέπεται με μικρό βαθμό εμπιστοσύνης όταν δεν ακολουθείται ή προβλέπεται με μεγάλο βαθμό εμπιστοσύνης όταν δεν ακολουθείται. Εναλλακτικά, όπως εξετάζεται παρακάτω η διάταξη πρόβλεψης μετάπτωσης θα μπορούσε να είναι μια διάταξη πρόβλεψης perceptron. As discussed below, different types of predictors can provide different levels of throughput gain per bit of storage capacity required to store the respective branch predictor state, and thus it may be preferable to select, as the predictor unit whose state is included in the compressed state of provisioning sector, one or more types of provisioning that provide the highest level of performance increase per unit of data storage. From the analysis discussed below, it is found that usually the transition prediction module, which produces a transition prediction in the event that at least one other prediction module outputs a prediction with confidence less than a predetermined threshold value, can provide the highest level of enhancement of the throughput per bit of information stored. Therefore, in some cases the compressed branch prediction state may include an active branch prediction state associated with the transition prediction module, but could omit a branch prediction state associated with other types of branch prediction modules. For example, the basic predictor is often a simpler type of branch predictor than other more complex branch predictors, and while other types of predictors may provide greater absolute performance improvement, it may cost more in terms of storage capacity, so it may be more efficient to cache the state of the transition predictor. In some examples, the transition predictor module may be a bi-row predictor that includes, as the branch prediction state, an array of confidence counters indicating whether a branch is predicted with a high degree of confidence when followed, predicted with a low degree confidence when followed, predicted with low confidence when not followed, or predicted with high confidence when not followed. Alternatively, as discussed below the transition predictor could be a perceptron predictor.

Ένας άλλος τρόπος συμπίεσης της κατάστασης πρόβλεψης κλάδου μπορεί να είναι η εφαρμογή συμπίεσης στην κατάσταση πρόβλεψης κλάδου ενός δεδομένου τύπου διάταξης πρόβλεψης κλάδου. Για παράδειγμα, η ενεργή κατάσταση πρόβλεψης κλάδου μπορεί να περιλαμβάνει, για μια δεδομένη μονάδα διάταξης πρόβλεψης κλάδου, έναν αριθμό καταχωρήσεων πρόβλεψης κλάδου με κάθε μια να προσδιορίζει μια τιμή κατάστασης πρόβλεψης για τη δημιουργία μιας πρόβλεψης κλάδου. Οι καταχωρήσεις πρόβλεψης κλάδου μπορούν να δεικτοδοτούνται με βάση ένα δείκτη που προσδιορίζεται ως συνάρτηση τουλάχιστον μιας διεύθυνσης εντολής στόχου για την οποία απαιτείται μια πρόβλεψη κλάδου και τουλάχιστον ενός τμήματος του προηγούμενου ιστορικού εκτέλεσης το οποίο είναι ενδεικτικό ενός σχεδίου συμπεριφοράς εκτέλεσης που προηγείται μιας εντολής στη διεύθυνση εντολής. Για παράδειγμα, εάν η μονάδα διάταξης πρόβλεψης κλάδου είναι μια δικόρυφη διάταξη πρόβλεψης τότε οι τιμές της κατάστασης πρόβλεψης κάθε καταχώρησης θα μπορούσαν να είναι οι απαριθμητές εμπιστοσύνης της δικόρυφης διάταξης πρόβλεψης. Εάν η μονάδα διάταξης πρόβλεψης είναι ένα perceptron τότε οι τιμές της κατάστασης πρόβλεψης σε κάθε καταχώρηση θα μπορούσαν να είναι τιμές βάρους που χρησιμοποιούνται για τη δημιουργία σταθμισμένων αθροισμάτων τμημάτων του δείκτη. Μπορεί να πραγματοποιείται συμπίεση και αποσυμπίεση σε ξεχωριστές καταχωρήσεις ή σε ομάδες καταχωρήσεων. Another way to compress the branch prediction state can be to apply compression to the branch prediction state of a given type of branch prediction layout. For example, the active branch prediction state may include, for a given branch prediction layout unit, a number of branch prediction entries each specifying a prediction state value for generating a branch prediction. Branch prediction entries may be indexed based on an index determined as a function of at least one target instruction address for which a branch prediction is required and at least a portion of past execution history indicative of an execution behavior pattern preceding an instruction at the instruction address . For example, if the branch predictor unit is a bi-root predictor then the prediction state values of each entry could be the confidence counters of the bi-root predictor. If the prediction array unit is a perceptron then the prediction state values in each entry could be weight values used to generate weighted sums of index parts. Compression and decompression can be performed on individual entries or groups of entries.

Για παράδειγμα, ορισμένες υλοποιήσεις μπορεί να εφαρμόζουν συμπίεση σε μια μεμονωμένη καταχώρηση πρόβλεψης κλάδου. Η τιμή της κατάστασης πρόβλεψης μιας δεδομένης καταχώρησης πρόβλεψης κλάδου μπορεί να αντιστοιχείται σε μια συμπιεσμένη τιμή κατάστασης πρόβλεψης που έχει λιγότερα bit από την τιμή της κατάστασης πρόβλεψης, για τη μείωση του συνολικού χώρου αποθήκευσης που απαιτείται στην προσωρινή μνήμη κατάστασης κλάδου όταν αποθηκεύονται τα συμπιεσμένα δεδομένα. Σε αυτή την περίπτωση, κατά την επαναφορά της συμπιεσμένης κατάστασης ως ενεργή κατάσταση, τότε κάθε bit που έχει παραλειφθεί μπορεί είτε να παίρνει τις προεπιλεγμένες τιμές ή θα μπορούσε να παίρνει μεταβλητές τιμές που καθορίζονται με βάση άλλα τμήματα της συμπιεσμένης κατάστασης πρόβλεψης. For example, some implementations may apply compression to a single branch prediction entry. The prediction state value of a given branch prediction entry may be mapped to a compressed prediction state value that has fewer bits than the prediction state value, to reduce the total storage required in the branch state cache when the compressed data is stored. In this case, when resuming the compressed state as the active state, then each omitted bit can either take the default values or could take variable values determined based on other parts of the compressed prediction state.

Σε ένα άλλο παράδειγμα, η συμπίεση μπορεί να εφαρμόζεται με έναν κατακόρυφο τρόπο ανάμεσα σε καταχωρήσεις της ενεργής κατάστασης πρόβλεψης κλάδου. Για παράδειγμα η συμπίεση μπορεί να περιλαμβάνει τη συγχώνευση μιας ομάδας πολλαπλών καταχωρήσεων πρόβλεψης κλάδου οι οποίες αντιστοιχούν σε διαφορετικές τιμές του δείκτη σε μια μόνο καταχώρηση προς αποθήκευση στην προσωρινή μνήμη καταστάσεων κλάδου στα πλαίσια της συμπιεσμένης κατάστασης πρόβλεψης κλάδου. Σε αυτή την περίπτωση, όταν η κατάσταση επαναφέρεται από την προσωρινή μνήμη καταστάσεων κλάδου τότε κάθε μια από τις πολλαπλές καταχωρήσεις από τις οποίες συγχωνεύτηκε μια δεδομένη καταχώρηση της συμπιεσμένης κατάστασης μπορεί να επαναφέρεται με βάση τις τιμές που προκύπτουν από τη μοναδική συγχωνευμένη καταχώρηση. Γ ια παράδειγμα κάθε μια από την ομάδα καταχωρήσεων θα μπορούσε να παίρνει την ίδια τιμή όπως υποδεικνύεται από τη συγχωνευμένη καταχώρηση της συμπιεσμένης κατάστασης. Κατά την αποθήκευση της κατάστασης, η συγχώνευση μιας ομάδας καταχωρήσεων πρόβλεψης κλάδου σε μια μοναδική κοινόχρηστη καταχώρηση θα μπορούσε να πραγματοποιηθεί με διάφορους τρόπους. Σε ορισμένες περιπτώσεις, μπορεί να επιλέγεται οποιαδήποτε καταχώρηση από την ομάδα καταχωρήσεων, ενώ η μοναδική συγχωνευμένη καταχώρηση μπορεί να παίρνει τις τιμές αυτής της επιλεγμένης καταχώρησης. Εναλλακτικά, για ένα δεδομένο τμήμα της συγχωνευμένης καταχώρησης στη συμπιεσμένη κατάσταση πρόβλεψης κλάδου, αυτό το τμήμα θα μπορούσε να πάρει την τιμή την οποία χρησιμοποίησε μια πλειοψηφία της ομάδας καταχωρήσεων για αυτό το τμήμα. In another example, compression may be applied in a vertical fashion between entries of the active branch prediction state. For example, the compression may include merging a group of multiple branch prediction entries corresponding to different index values into a single entry to be stored in the branch state cache within the compressed branch prediction state. In this case, when the state is restored from the branch state cache then each of the multiple entries from which a given entry of the compressed state was merged can be restored based on the values resulting from the single merged entry. For example each of the group entries could take the same value as indicated by the merged entry of the compressed state. When saving state, merging a group of branch prediction entries into a single shared entry could be accomplished in a number of ways. In some cases, any entry from the group of entries may be selected, and the single merged entry may take the values of that selected entry. Alternatively, for a given segment of the merged entry in the compressed branch prediction state, that segment could take the value that a majority of the group of entries used for that segment.

Ορισμένες διατάξεις πρόβλεψης κλάδου μπορεί να μειώνουν το συνολικό αριθμό καταστάσεων πρόβλεψης κλάδου χρησιμοποιώντας από κοινού ορισμένα τμήματα της τιμής της κατάστασης πρόβλεψης ανάμεσα σε πολλαπλές καταχωρήσεις. Για παράδειγμα, για μια ομάδα δύο ή περισσότερων καταχωρήσεων πρόβλεψης κλάδου της ενεργής κατάστασης πρόβλεψης κλάδου, κάθε τιμή κατάστασης πρόβλεψης θα μπορούσε να περιλαμβάνει ένα κρυφό τμήμα που καθορίζεται ξεχωριστά για κάθε μια από τις καταχωρήσεις πρόβλεψης κλάδου της ομάδας και ένα κοινόχρηστο τμήμα το οποίο χρησιμοποιείται από κοινού από κάθε μια από τις καταχωρήσεις πρόβλεψης κλάδου της ομάδας. Αυτό θα απέτρεπε την ανάγκη προσδιορισμού του κοινόχρηστου τμήματος πολλές φορές για κάθε καταχώρηση της ομάδας. Όταν η ενεργή κατάσταση πρόβλεψης κλάδου χρησιμοποιεί από κοινού τμήμα της τιμής της κατάστασης πρόβλεψης ανάμεσα στις καταχωρήσεις με αυτό τον τρόπο, τότε η συμπίεση της κατάστασης πρόβλεψης κλάδου θα μπορούσε να περιλαμβάνει είτε την παράλειψη του κοινόχρηστου τμήματος και τη διατήρηση του κρυφού τμήματος ή την παράλειψη του κρυφού τμήματος και τη διατήρηση του κοινόχρηστου τμήματος. Κατά την επαναφορά, το τμήμα της τιμής της κατάστασης πρόβλεψης που παραλείπεται μπορεί τότε να πάρει μια προεπιλεγμένη τιμή ή μια τιμή που συνάγεται από το τμήμα που διατηρήθηκε το οποίο συμπεριλήφθηκε στη συμπιεσμένη κατάσταση. Some branch prediction layouts may reduce the total number of branch prediction states by sharing some portions of the prediction state value between multiple entries. For example, for a group of two or more branch prediction entries of the active branch prediction state, each prediction state value could include a hidden part specified separately for each of the branch prediction entries in the group and a shared part used by shared by each of the group's industry prediction entries. This would avoid the need to specify the shared section multiple times for each group entry. When the active branch prediction state shares part of the prediction state value between entries in this way, then compressing the branch prediction state could involve either omitting the shared part and keeping the hidden part, or omitting the hidden part and keeping the shared part. On rollback, the part of the predicted state value that is omitted can then take a default value or a value inferred from the preserved part that was included in the compressed state.

Μια άλλη επιλογή μπορεί να είναι μια μορφή συμπίεσης η οποία συγχωνεύει μερικώς μια ομάδα καταχωρήσεων πρόβλεψης κλάδου και διαμορφώνει μια συμπιεσμένη κατάσταση πρόβλεψης κλάδου στην οποία ένα πρώτο τμήμα της τιμής της κατάστασης πρόβλεψης κάθε καταχώρησης πρόβλεψης κλάδου της ομάδας καθορίζεται ξεχωριστά εντός της συμπιεσμένης κατάστασης πρόβλεψης κλάδου ενώ ένα δεύτερο τμήμα της τιμής της κατάστασης πρόβλεψης κάθε καταχώρησης πρόβλεψης κλάδου συγχωνεύεται και διαμορφώνει μια τιμή που αντιπροσωπεύει ένα κοινόχρηστο δεύτερο τμήμα για κάθε καταχώρηση από την ομάδα καταχωρήσεων πρόβλεψης κλάδου. Συνεπώς, ακόμη και εάν η ενεργή κατάσταση πρόβλεψης κλάδου που χρησιμοποιείται από τη διάταξη πρόβλεψης κλάδου δε χρησιμοποιεί από κοινού οποιοδήποτε τμήμα της τιμής της κατάστασης πρόβλεψης μεταξύ των καταχωρήσεων, η συμπίεση θα μπορούσε να εισάγει μια τέτοια κοινή χρήση ώστε να μειώνεται ο όγκος των δεδομένων που απαιτείται να αποθηκευτούν στην προσωρινή μνήμη καταστάσεων κλάδου. Με την επαναφορά της προηγουμένως συμπιεσμένης κατάστασης, η αποσυμπίεση μπορεί τότε να προσδιορίζει τιμές για το δεύτερο τμήμα των καταχωρήσεων της ομάδας με βάση τη συγχωνευμένη τιμή, π.χ. αντιγράφοντας τη συγχωνευμένη τιμή σε κάθε μια από τις καταχωρήσεις για το δεύτερο τμήμα της τιμής της κατάστασης πρόβλεψης κλάδου. Another option may be a form of compression that partially merges a group of branch prediction entries and forms a compressed branch prediction state in which a first part of the prediction state value of each branch prediction entry in the group is specified separately within the compressed branch prediction state while a second portion of the prediction state value of each branch prediction entry is merged to form a value representing a shared second part for each entry from the group of branch prediction entries. Therefore, even if the active branch prediction state used by the branch predictor does not share any part of the prediction state value between entries, compression could introduce such sharing as to reduce the amount of data that required to cache branch states. By restoring the previously compressed state, the decompression can then determine values for the second part of the group entries based on the merged value, e.g. copying the merged value to each of the entries for the second segment of the branch forecast state value.

Το συμβάν αποθήκευσης της πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης θα μπορούσε να περιλαμβάνει οποιοδήποτε ή περισσότερα από τα εξής: The save event of the branch prediction associated with the given execution context could include any or more of the following:

• τη μεταγωγή πλαισίου εκτέλεσης, για την οποία το εν λόγω δεδομένο πλαίσιο εκτέλεσης είναι το πρώτο πλαίσιο εκτέλεσης, • the execution frame switch, for which the given execution frame is the first execution frame;

· τη μετάβαση του δεδομένου πλαισίου εκτέλεσης από το στοιχείο επεξεργασίας σε ένα άλλο στοιχείο επεξεργασίας, · the transition of the given execution context from the processing element to another processing element,

• την παρέλευση μιας προκαθορισμένης περιόδου από ένα προηγούμενο συμβάν αποθήκευσης πρόβλεψης κλάδου, • the passage of a predetermined period since a previous branch forecast storage event;

• την ανίχνευση ή την εκτέλεση μιας εντολής αποθήκευσης πρόβλεψης κλάδου εντός του δεδομένου πλαισίου εκτέλεσης, και • detecting or executing a branch prediction store instruction within the given execution context, and

• μια ενημέρωση της ενεργής κατάστασης πρόβλεψης κλάδου η οποία ικανοποιεί μια προκαθορισμένη συνθήκη η οποία συμβαίνει κατά την εκτέλεση του δεδομένου πλαισίου εκτέλεσης. • an update of the active branch prediction state that satisfies a predetermined condition that occurs during the execution of the given execution context.

Συνεπώς, σε ορισμένες περιπτώσεις η κατάσταση πρόβλεψης μπορεί να αποθηκεύεται στην προσωρινή μνήμη καταστάσεων κλάδου σε απόκριση της ίδιας της μεταγωγής του πλαισίου εκτέλεσης ή σε απόκριση της μετάβασης ενός πλαισίου από το στοιχείο επεξεργασίας σε ένα άλλο στοιχείο επεξεργασίας. Ωστόσο, μπορεί να είναι επίσης δυνατή η αποθήκευση της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης στην προσωρινή μνήμη καταστάσεων κλάδου κατά διαστήματα κατά την επεξεργασία του δεδομένου πλαισίου εκτέλεσης, ώστε να απαιτούνται λιγότερες αποθηκεύσεις καταστάσεων κατά τη μεταγωγή του πλαισίου εκτέλεσης, γεγονός που μπορεί να βελτιώσει την απόδοση. Για παράδειγμα, μια κατάσταση θα μπορούσε να αποθηκεύεται περιοδικά στην προσωρινή μνήμη καταστάσεων κλάδου ή σε απόκριση μιας ενημέρωσης της ενεργής κατάστασης πρόβλεψης κλάδου η οποία ικανοποιεί κάποια προκαθορισμένη συνθήκη (π.χ. μια αλλαγή η οποία οδηγεί σε μεγαλύτερο από ένα επίπεδο κατωφλιού επίπεδο εμπιστοσύνης). Επίσης, σε ορισμένες περιπτώσεις μπορεί να ορίζεται μια εντολή αποθήκευσης πρόβλεψης κατάστασης η οποία όταν περιλαμβάνεται στο λογισμικό του δεδομένου πλαισίου εκτέλεσης μπορεί να διεγείρει το κύκλωμα αποθήκευσης πρόβλεψης κλάδου για την αποθήκευση της ενεργής εκείνη τη στιγμή κατάστασης πρόβλεψης κλάδου (με συμπίεση εάν είναι απαραίτητο) στην προσωρινή μνήμη καταστάσεων κλάδου. Accordingly, in some cases the prediction state may be stored in the branch state buffer in response to the execution frame switching itself or in response to the transition of a frame from the processing element to another processing element. However, it may also be possible to cache the active branch prediction state associated with a given execution context in the branch state cache periodically during the processing of the given execution context so that fewer state saves are required during execution context switching, which which can improve performance. For example, a state could be periodically stored in the branch state cache or in response to an update of the active branch prediction state that satisfies some predefined condition (eg, a change that results in greater than a threshold confidence level). . Also, in some cases a state prediction save instruction may be defined which when included in the software of the given execution framework can trigger the branch prediction storage circuitry to store the currently active branch prediction state (with compression if necessary) to branch state cache.

Παρόμοια, το συμβάν επαναφοράς πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης μπορεί να περιλαμβάνει ένα ή περισσότερα από τα εξής: Similarly, the branch prediction reset event associated with a given execution context may include one or more of the following:

• τη μεταγωγή πλαισίου εκτέλεσης, για την οποία το δεδομένο πλαίσιο εκτέλεσης είναι το δεύτερο πλαίσιο εκτέλεσης, • execution frame switching, for which the given execution frame is the second execution frame,

• τη μετάβαση του δεδομένου πλαισίου εκτέλεσης από ένα άλλο στοιχείο επεξεργασίας στο στοιχείο επεξεργασίας που σχετίζεται με τη διάταξη πρόβλεψης κλάδου για την οποία επαναφέρεται η κατάσταση, • the transition of the given execution context from another processing element to the processing element associated with the branch predictor for which the state is reset;

• την παρέλευση μιας προκαθορισμένης περιόδου από ένα προηγούμενο συμβάν επαναφοράς πρόβλεψης κλάδου, και • the passage of a predetermined period since a previous industry forecast reset event, and

• την ανίχνευση ή την εκτέλεση μιας εντολής επαναφοράς πρόβλεψης κλάδου εντός του δεδομένου πλαισίου εκτέλεσης. • detecting or executing a branch prediction reset command within the given execution context.

Σε ορισμένα παραδείγματα η προσωρινή μνήμη καταστάσεων κλάδου μπορεί να είναι να είναι μια ξεχωριστή περιοχή αποθήκευσης από το χώρο αποθήκευσης προβλέψεων κλάδου. Σε αυτή την περίπτωση, η αποθήκευση και επαναφορά μπορεί να περιλαμβάνει την πραγματική μεταφορά της κατάστασης πρόβλεψης κλάδου ανάμεσα στο χώρο αποθήκευσης προβλέψεων κλάδου και την προσωρινή μνήμη καταστάσεων κλάδου. In some examples the branch state cache may be a separate storage area from the branch prediction store. In this case, the save and restore may involve actually transferring the branch prediction state between the branch prediction store and the branch state cache.

Ωστόσο, σε άλλα παραδείγματα η προσωρινή μνήμη καταστάσεων κλάδου μπορεί να αντιστοιχεί ουσιαστικά σε ένα τμήμα του χώρου αποθήκευσης προβλέψεων κλάδου το οποίο δε χρησιμοποιείται εκείνη τη στιγμή. Γ ια παράδειγμα ο χώρος αποθήκευσης προβλέψεων κλάδου μπορεί να έχει έναν αριθμό περιοχών και σε ένα δεδομένο χρόνο μια από αυτές τις περιοχές μπορεί να αντιστοιχεί στην ενεργή κατάσταση πρόβλεψης κλάδου ενώ άλλες περιοχές μπορεί να αντιστοιχούν σε προηγουμένως αποθηκευμένες καταστάσεις πρόβλεψης κλάδου στην προσωρινή μνήμη καταστάσεων κλάδου. Συνεπώς, η προσωρινή μνήμη καταστάσεων κλάδου μπορεί να περιλαμβάνει τουλάχιστον μια περιοχή του χώρου αποθήκευσης προβλέψεων κλάδου. Σε αυτή την περίπτωση, το κύκλωμα επαναφοράς προβλέψεων κλάδου μπορεί να αποθηκεύει και να επαναφέρει την ενεργή κατάσταση πρόβλεψης κλάδου απλά με μεταγωγή της περιοχής του χώρου αποθήκευσης προβλέψεων κλάδου που χρησιμοποιείται ώστε να αντιπροσωπεύει την ενεργή κατάσταση πρόβλεψης κλάδου. Αυτό μπορεί να βελτιώνει την απόδοση αποτρέποντας την ανάγκη για πραγματική μεταφορά δεδομένων κατά την αποθήκευση ή επαναφορά μιας κατάστασης. However, in other examples the branch state cache may correspond substantially to a portion of the branch prediction store that is not currently in use. For example the branch prediction store may have a number of regions and at a given time one of these regions may correspond to the active branch prediction state while other regions may correspond to previously stored branch prediction states in the branch state cache. Accordingly, the branch state cache may include at least one region of the branch prediction store. In this case, the branch prediction reset circuit can store and restore the active branch prediction state simply by switching the area of the branch prediction storage used to represent the active branch prediction state. This can improve performance by preventing the need to actually transfer data when saving or restoring a state.

Σε προσεγγίσεις οι οποίες εφαρμόζουν συμπίεση ή αποσυμπίεση, ωστόσο, μπορεί να είναι προτιμότερη η χρήση μιας ξεχωριστής προσωρινής μνήμης καταστάσεων κλάδου, εφόσον αυτό μπορεί να μειώσει το συνολικό μέγεθος της αποθήκευσης καταστάσεων κλάδου στο χώρο αποθήκευσης προβλέψεων κλάδου και στην προσωρινή μνήμη καταστάσεων κλάδου ως σύνολο. In approaches that apply compression or decompression, however, it may be preferable to use a separate branch state cache, as this can reduce the overall size of branch state storage in the branch prediction store and the branch state cache as a whole.

Σε ορισμένα παραδείγματα, σε απόκριση της μεταγωγής του πλαισίου εκτέλεσης, η ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με το πρώτο πλαίσιο εκτέλεσης θα μπορούσε απλά να απορρίπτεται ώστε να ακυρώνεται και να μην είναι πια προσβάσιμη (εκτός μέσω επαναφοράς της αποθηκευμένης κατάστασης πρόβλεψης κλάδου από την προσωρινή μνήμη καταστάσεων κλάδου). Ωστόσο, σε άλλα παραδείγματα που ακολουθούν τη μεταγωγή του πλαισίου εκτέλεσης η κατάσταση πρόβλεψης κλάδου που σχετίζεται με το πρώτο πλαίσιο εκτέλεσης θα μπορούσε να απενεργοποιείται ώστε να μην είναι δυνατή η πρόσβαση σε αυτή για την πραγματοποίηση προβλέψεων κλάδου για το εισερχόμενο δεύτερο πλαίσιο εκτέλεσης, αλλά θα μπορούσε να διατηρείται εντός του χώρου αποθήκευσης προβλέψεων κλάδου. Αυτό μπορεί να βοηθήσει στη βελτίωση της απόδοσης επειδή τότε σε μια μεταγενέστερη μεταγωγή πλαισίου εκτέλεσης η προηγουμένως απενεργοποιηθείσα κατάσταση πρόβλεψης κλάδου που σχετίζεται με το εισερχόμενο πλαίσιο εκτέλεσης θα μπορούσε να είναι ακόμη παρούσα στο χώρο αποθήκευσης προβλέψεων κλάδου, ενώ σε αυτή την περίπτωση μπορεί να επανενεργοποιείται ώστε να επιτρέπει στο εισερχόμενο δεύτερο πλαίσιο εκτέλεσης να ξαναρχίζει με θερμή κατάσταση πρόβλεψης κλάδου η οποία έχει ήδη εκπαιδευτεί με βάση ένα προηγούμενο χρόνο κατά τον οποίο εκτελέστηκε το δεύτερο πλαίσιο εκτέλεσης. Αυτό σημαίνει ότι ακόμη και τα τμήματα της κατάστασης πρόβλεψης κλάδου τα οποία χάνονται κατά τη διάρκεια εφαρμογής οποιοσδήποτε συμπίεσης κατά την αποθήκευση στην προσωρινή μνήμη καταστάσεων κλάδου μπορούν να διατηρούνται για κάποιο χρόνο ώστε εάν το σύστημα επιστρέφει σχετικά γρήγορα σε ένα προηγουμένως εκτελεσμένο πλαίσιο τότε είναι δυνατή η βελτίωση της απόδοσης. In some examples, in response to execution context switching, the active branch prediction state associated with the first execution context could simply be discarded so that it is invalidated and no longer accessible (except by restoring the saved branch prediction state from the temporary branch state memory). However, in other examples following execution frame switching the branch prediction state associated with the first execution frame could be disabled so that it cannot be accessed to make branch predictions for the incoming second execution frame, but could be maintained within the industry forecast repository. This can help improve performance because then on a later execution frame switch the previously disabled branch prediction state associated with the incoming execution frame could still be present in the branch prediction store, in which case it can be re-enabled so that allowing the incoming second execution frame to restart with a warm branch prediction state that has already been trained based on a previous time at which the second execution frame was executed. This means that even parts of the branch prediction state that are lost during the application of any compression when caching branch states can be preserved for some time so that if the system returns relatively quickly to a previously executed frame then it is possible to performance improvement.

Μπορούν να χρησιμοποιούνται διάφορες προσεγγίσεις για τον έλεγχο κατά πόσο θα πρέπει ή δε θα πρέπει να διατηρείται η ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με μια εξερχόμενη διαδικασία με έναν απενεργοποιημένο τρόπο μετά τη μεταγωγή πλαισίου εκτέλεσης. Σε ένα παράδειγμα, σε απόκριση της μεταγωγής του πλαισίου εκτέλεσης το κύκλωμα ελέγχου πρόβλεψης κλάδου μπορεί να απενεργοποιεί ένα τμήμα της διάταξης πρόβλεψης κλάδου για μια αρχική περίοδο επεξεργασίας του δεύτερου πλαισίου εκτέλεσης, διατηρώντας ταυτόχρονα στο χώρο αποθήκευσης προβλέψεων κλάδου μια ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με αυτό το τμήμα της διάταξης πρόβλεψης κλάδου το οποίο εκπαιδεύτηκε με βάση τα αποτελέσματα των εντολών διακλάδωσης του πρώτου πλαισίου εκτέλεσης. Για παράδειγμα, το τμήμα που απενεργοποιήθηκε μπορεί να είναι οι μονάδες της διάταξης πρόβλεψης κλάδου των οποίων η κατάσταση δεν περιλαμβάνεται εντός της συμπιεσμένης κατάστασης που αποθηκεύτηκε στην προσωρινή μνήμη καταστάσεων κλάδου. Με την απενεργοποίηση αυτού του τμήματος της διάταξης πρόβλεψης κλάδου για μια αρχική περίοδο και με τη διατήρηση της αντίστοιχης κατάστασης εντός του χώρου αποθήκευσης προβλέψεων κλάδου, αυτό σημαίνει ότι εάν συμβεί ακόμη μια μεταγωγή πλαισίου εκτέλεσης εντός αυτής της αρχικής περιόδου η οποία προκαλεί την επιστροφή της επεξεργασίας στο πρώτο πλαίσιο εκτέλεσης, τότε αυτό το πλαίσιο στην κατάσταση πρόβλεψης κλάδου μπορεί να είναι ακόμη διαθέσιμο εντός του χώρου αποθήκευσης προβλέψεων κλάδου και μπορεί να ενεργοποιείται και πάλι για τη βελτίωση της απόδοσης ακόμη και εάν αυτό το τμήμα της κατάστασης πρόβλεψης κλάδου δεν είχε αποθηκευτεί στην προσωρινή μνήμη καταστάσεων κλάδου. Αφετέρου, εάν η αρχική περίοδος λήξει προτού συμβεί κάποια επακόλουθη μεταγωγή εκτέλεσης τότε η ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με το τμήμα της διάταξης πρόβλεψης κλάδου το οποίο απενεργοποιήθηκε μπορεί να ακυρώνεται, ενώ αυτό το τμήμα της διάταξης πρόβλεψης κλάδου μπορεί να ενεργοποιείται και πάλι για συνέχιση της επεξεργασίας του δεύτερου πλαισίου εκτέλεσης ώστε το δεύτερο πλαίσιο εκτέλεσης μπορεί τότε να αρχίσει να επωφελείται από τη χρήση του τμήματος της διάταξης πρόβλεψης κλάδου που είχε απενεργοποιηθεί προηγουμένως. Συνεπώς, με αυτή την προσέγγιση εάν το δεύτερο πλαίσιο εκτέλεσης έχει διάρκεια μικρότερη από την αρχική περίοδο τότε αυτό μπορεί να παρέχει μια ευκαιρία σε ένα εισερχόμενο πλαίσιο εκτέλεσης να ενεργοποιεί και πάλι τη μη αποθηκευμένη της κατάσταση κλάδου, ενώ εάν το δεύτερο πλαίσιο εκτέλεσης διαρκεί περισσότερο από την αρχική περίοδο τότε η κατάσταση που σχετίζεται με το απενεργοποιημένο τμήμα της διάταξης πρόβλεψης κλάδου μπορεί να απορρίπτεται ώστε το δεύτερο πλαίσιο εκτέλεσης δε θα κάνει προβλέψεις με βάση την κατάσταση πρόβλεψης κλάδου που προκύπτει από ένα διαφορετικό πλαίσιο, ώστε να ελαττώνονται οι επιπτώσεις από την επίθεση στην ασφάλεια που εξετάζεται παραπάνω. Various approaches can be used to control whether or not the active branch prediction state associated with an outgoing process should be maintained in a disabled manner after execution context switching. In one example, in response to execution frame switching the branch prediction control circuitry may disable a portion of the branch prediction arrangement for an initial processing period of the second execution frame while maintaining in the branch prediction store an active branch prediction state associated with that part of the branch predictor which was trained based on the results of the branch instructions of the first execution frame. For example, the disabled segment may be the branch predictor units whose state is not included within the compressed state stored in the branch state cache. By disabling this part of the branch predictor for an initial period and maintaining the corresponding state within the branch prediction store, this means that if one more execution context switch occurs within that initial period which causes processing to roll back on the first execution frame, then that frame in the branch prediction state may still be available within the branch prediction store and may be retriggered to improve performance even if that part of the branch prediction state had not been cached branch state memory. On the other hand, if the initial period expires before any subsequent execution switch occurs then the active branch predictor state associated with the part of the branch predictor that was disabled may be canceled, and that part of the branch predictor may be re-enabled to continue. processing the second execution frame so that the second execution frame can then begin to benefit from the use of the previously disabled portion of the branch predictor. Therefore, with this approach if the second execution frame lasts less than the initial period then this may provide an opportunity for an incoming execution frame to reactivate its unsaved branch state, while if the second execution frame lasts longer than in the initial period then the state associated with the disabled part of the branch predictor may be discarded so that the second execution frame will not make predictions based on the branch prediction state derived from a different frame, so as to reduce the effects of the attack on security discussed above.

Μια εναλλακτική προσέγγιση αυτού μπορεί να είναι η παροχή μια πρόβλεψης της διάρκειας ζωής του δεύτερου πλαισίου εκτέλεσης κατά την απόκριση σε μια μεταγωγή πλαισίου εκτέλεσης, και ανάλογα τη διάρκεια ζωής που προβλέφθηκε, η επιλογή κατά πόσο να (α) απενεργοποιηθεί ένα τμήμα της διάταξης πρόβλεψης κλάδου κατά την επεξεργασία του δεύτερου πλαισίου εκτέλεσης διατηρώντας ταυτόχρονα την ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με το απενεργοποιηθέν τμήμα της διάταξης πρόβλεψης κλάδου το οποίο εκπαιδεύτηκε με βάση το πρώτο πλαίσιο εκτέλεσης ή (b) ακυρωθούν τα δεδομένα της κατάστασης πρόβλεψης κλάδου που σχετίζονται με το τμήμα της διάταξης πρόβλεψης κλάδου το οποίο εκπαιδεύτηκε με βάση το πρώτο πλαίσιο εκτέλεσης και στη συνέχεια να επιτραπεί η χρήση αυτού του τμήματος της διάταξης πρόβλεψης κλάδου κατά την επεξεργασία του δεύτερου πλαισίου εκτέλεσης. Συνεπώς, για πλαίσια εκτέλεσης που αναμένονται να έχουν σχετικά μεγάλη διάρκεια ζωής, μπορεί να είναι πιο αποτελεσματικό να δοθεί η δυνατότητα χρήσης του τμήματος της διάταξης πρόβλεψης κλάδου για το δεύτερο πλαίσιο εκτέλεσης από την αρχή, και συνεπώς σε αυτή την περίπτωση τα δεδομένα κατάστασης πρόβλεψης κλάδου που εκπαιδεύτηκαν με βάση το πρώτο πλαίσιο εκτέλεσης μπορούν να ακυρώνονται κατά το χρόνο χειρισμού της μεταγωγής πλαισίου εκτέλεσης, αντί της αναμονής για τη λήξη μιας αρχικής περιόδου όπως εξετάστηκε παραπάνω. Αφετέρου, εάν προβλεφθεί ότι το δεύτερο πλαίσιο εκτέλεσης έχει μικρότερη διάρκεια ζωής, μπορεί να είναι προτιμότερη η διατήρηση της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται με το πρώτο πλαίσιο εκτέλεσης σε ένα απενεργοποιημένο τμήμα της διάταξης πρόβλεψης κλάδου ώστε να αποτρέπεται η πραγματοποίηση προβλέψεων κλάδου από το δεύτερο πλαίσιο εκτέλεσης με βάση μια κατάσταση που εκπαιδεύτηκε από ένα διαφορετικό πλαίσιο εκτέλεσης. Μολονότι η απενεργοποίηση αυτού του τμήματος της διάταξης πρόβλεψης κλάδου μπορεί να μειώνει κατά λίγο την απόδοση για το δεύτερο πλαίσιο εκτέλεσης, εφόσον το δεύτερο πλαίσιο εκτέλεσης αναμένεται να έχει μικρή διάρκεια ζωής, τότε το όφελος στην απόδοση από την επανενεργοποίηση της διατηρηθείσας κατάστασης για την πρώτη κατάσταση εκτέλεσης όταν εκτελείται και πάλι το πρώτο πλαίσιο εκτέλεσης, μπορεί να υπερτερεί της μικρής μείωσης στην απόδοση για το δεύτερο, μικρής διάρκειας ζωής, πλαίσιο εκτέλεσης. An alternative approach to this may be to provide a prediction of the lifetime of the second execution frame in response to an execution frame switch, and depending on the predicted lifetime, choose whether to (a) disable a portion of the branch predictor; while processing the second execution frame while maintaining the active branch prediction state associated with the disabled portion of the branch predictor that was trained based on the first execution frame, or (b) invalidate the branch prediction state data associated with the portion of branch predictor that was trained on the first execution frame and then allow that portion of the branch predictor to be used when processing the second execution frame. Therefore, for execution frames that are expected to be relatively long-lived, it may be more efficient to enable the second execution frame's portion of the branch prediction arrangement to be used from scratch, and thus in this case the branch prediction state data trained based on the first execution frame can be canceled at the time the execution frame switch is handled, instead of waiting for an initial period to expire as discussed above. On the other hand, if the second execution frame is predicted to have a shorter lifetime, it may be preferable to keep the active branch prediction state associated with the first execution frame in a disabled part of the branch predictor to prevent branch predictions from being made by the second execution framework based on a state trained by a different execution framework. Although disabling this part of the branch predictor may slightly reduce performance for the second execution frame, since the second execution frame is expected to have a short lifetime, then the performance benefit of re-enabling the preserved state for the first frame execution time when the first execution frame is executed again, may outweigh the small performance decrease for the second, short-lived, execution frame.

Συνεπώς, αυτές οι προσεγγίσεις μπορούν να επιτρέπουν μια καλύτερη απόδοση σε περιπτώσεις συχνών μεταγωγών πλαισίου εντός και εκτός πλαισίων με σχετικά μικρή διάρκεια ζωής. Therefore, these approaches can allow a better performance in cases of frequent frame switches in and out of frames with relatively short lifetime.

Τα πλαίσια εκτέλεσης μπορούν για παράδειγμα να είναι διαφορετικές διαδικασίες που εκτελούνται από το στοιχείο επεξεργασίας (όπου κάθε διαδικασία μπορεί για παράδειγμα να είναι μια δεδομένη εφαρμογή, ένα λειτουργικό σύστημα ή ένας επόπτης που εκτελείται στο στοιχείο επεξεργασίας). Σε ορισμένες περιπτώσεις, θα μπορούσε να εξεταστεί η αντιστοίχιση των διαφόρων υπο-τμημάτων μιας δεδομένης διαδικασίας με διαφορετικά πλαίσια εκτέλεσης. Για παράδειγμα, οι διάφορες περιοχές διευθύνσεων εντός ενός δεδομένου προγράμματος θα μπορούσαν να αντιστοιχούνται με διαφορετικά πλαίσια εκτέλεσης ή οι εντολές διαίρεσης πλαισίου εκτέλεσης που περιλαμβάνονται στον κώδικα λογισμικού θα μπορούσε να θεωρηθεί ότι επισημαίνουν τα σημεία στα οποία υπάρχει μια μεταγωγή από ένα πλαίσιο εκτέλεσης σε ένα άλλο. Σε άλλα παραδείγματα, μια ομάδα διαδικασιών λογισμικού που εκτελούνται από το στοιχείο επεξεργασίας θα μπορούσε να θεωρείται ότι αποτελεί στο σύνολό της τμήμα ενός μόνο πλαισίου εκτέλεσης. Επίσης, σε ορισμένες περιπτώσεις, αντίστοιχα νήματα που εκτελούνται από το κύκλωμα επεξεργασίας τα οποία αντιστοιχούν στην ίδια διαδικασία ή μια υπο-ομάδα νημάτων ανάμεσα σε πολλαπλά νήματα, θα μπορούσαν να θεωρούνται ως ένα πλαίσιο εκτέλεσης. Συνεπώς, θα εκτιμηθεί ότι ο ακριβής τρόπος με τον οποίο είναι δυνατή η διαίρεση ενός αριθμού φορτίων εργασίας λογισμικού σε πλαίσια εκτέλεσης μπορεί να διαφέρει από υλοποίηση σε υλοποίηση. Execution contexts can for example be different processes executed by the processing element (where each process can for example be a given application, operating system or supervisor running on the processing element). In some cases, one could consider mapping different sub-parts of a given process to different execution contexts. For example, different address ranges within a given program could correspond to different execution frames, or execution frame split instructions included in software code could be thought of as marking the points at which there is a switch from one execution frame to another . In other examples, a group of software processes executed by the processing element could be considered as a whole to be part of a single execution framework. Also, in some cases, corresponding threads executed by processing circuitry that correspond to the same process, or a subset of threads among multiple threads, could be considered an execution context. Accordingly, it will be appreciated that the exact manner in which a number of software workloads may be divided into execution contexts may vary from implementation to implementation.

Διάταξη πρόβλεψης κλάδου TAGE με διάταξη πρόβλεψης Perceptron ως διάταξη πρόβλεψης μετάπτωσης TAGE branch predictor with Perceptron predictor as transition predictor

Μια διάταξη πρόβλεψης κλάδου TAGE (tagged geometric ή γεωμετρική με ετικέτα) είναι μια κοινή μορφή διάταξης πρόβλεψης κλάδου που χρησιμοποιείται για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης. Είναι διαθέσιμος ένας αριθμός διαφορετικών παραλλαγών μιας διάταξης πρόβλεψης κλάδου TAGE, όμως σε γενικές γραμμές η διάταξη πρόβλεψης κλάδου TAGE μπορεί να έχει έναν αριθμό πινάκων πρόβλεψης TAGE για την παροχή μιας πρόβλεψης TAGE για το αποτέλεσμα μιας εντολής διακλάδωσης, όπου κάθε πίνακας πρόβλεψης TAGE περιλαμβάνει έναν αριθμό καταχωρήσεων πρόβλεψης εκπαιδευμένων με βάση προηγούμενα αποτελέσματα εντολών διακλάδωσης. Η αναζήτηση στους πίνακες πρόβλεψης TAGE πραγματοποιείται με βάση ένα δείκτη που καθορίζεται ως συνάρτηση μιας διεύθυνσης εντολής προορισμού και ένα τμήμα του προηγούμενου ιστορικού εκτέλεσης το οποίο είναι ενδεικτικό της συμπεριφοράς εκτέλεσης της προηγούμενης εντολής στη διεύθυνση εντολής προορισμού. Το τμήμα του προηγούμενου ιστορικού εκτέλεσης που χρησιμοποιείται για τον καθορισμό του δείκτη έχει διαφορετικά μήκη για διάφορους πίνακες πρόβλεψης TAGE της διάταξης πρόβλεψης κλάδου TAGE. Με την ιχνηλάτηση των προβλέψεων για διάφορα μήκη του προηγούμενου ιστορικού εκτέλεσης, δίνεται η δυνατότητα στη διάταξη πρόβλεψης κλάδου TAGE να είναι σχετικά ακριβής εφόσον όταν υπάρχει ταύτιση με ένα μεγαλύτερο σχέδιο του προηγούμενου ιστορικού εκτέλεσης τότε είναι πιθανότερο το αποτέλεσμα της εντολής διακλάδωσης που προβλέφθηκε να είναι σχετικό με την τρέχουσα διεύθυνση εντολής προορισμού, αλλά παρ’ όλα αυτά η διάταξη πρόβλεψης κλάδου TAGE έχει επίσης τη δυνατότητα καταγραφής των προβλέψεων για μικρότερα μήκη του προηγούμενου ιστορικού εκτέλεσης σε περίπτωση που δεν υπάρχει ταύτιση με ένα μεγαλύτερο μήκος του προηγούμενου ιστορικού εκτέλεσης. Συνεπώς, σε γενικές γραμμές αυτό θα μπορούσε να παρέχει μια καλύτερη απόδοση πρόβλεψης κλάδου από τις εναλλακτικές διατάξεις πρόβλεψης κλάδου οι οποίες ταυτίζονται μόνο με ένα μήκος προηγούμενου ιστορικού εκτέλεσης. A TAGE (tagged geometric) branch predictor is a common form of branch predictor used to predict the results of branch instructions. A number of different variations of a TAGE branch predictor are available, but in general the TAGE branch predictor may have a number of TAGE prediction tables to provide a TAGE prediction of the result of a branch instruction, where each TAGE prediction table includes a number prediction entries trained based on previous branch command results. The TAGE prediction tables are searched based on an index determined as a function of a destination instruction address and a portion of the previous execution history that is indicative of the execution behavior of the previous instruction at the destination instruction address. The part of the previous execution history used to define the index has different lengths for different TAGE prediction tables of the TAGE branch prediction array. By tracking predictions for various lengths of past execution history, TAGE branch prediction is enabled to be relatively accurate since when there is a match to a larger pattern of past execution history then the result of the predicted branch instruction is more likely to be relevant with the current target address instruction, but nevertheless the TAGE branch predictor also has the ability to record predictions for shorter lengths of the previous execution history in case there is no match for a longer length of the previous execution history. Therefore, in general this could provide a better branch prediction performance than alternative branch predictors which identify only a length of previous execution history.

Μια διάταξη πρόβλεψης κλάδου TAGE συνήθως περιλαμβάνει και μια διάταξη πρόβλεψης μετάπτωσης η οποία παρέχει μια πρόβλεψη μετάπτωσης για το αποτέλεσμα μιας εντολής διακλάδωσης σε περίπτωση που η αναζήτηση στους πίνακες πρόβλεψης TAGE αποτύχει σε όλους τους πίνακες πρόβλεψης TAGE. Σε ορισμένα παραδείγματα, επιπλέον της χρήσης της πρόβλεψης μετάπτωσης όταν αποτυγχάνει η αναζήτηση, η πρόβλεψη μετάπτωσης θα μπορούσε να χρησιμοποιηθεί και εάν η εμπιστοσύνη στο αποτέλεσμα της πρόβλεψης από έναν από τους πίνακες πρόβλεψης TAGE είναι μικρότερη από ένα δεδομένο όριο κατωφλιού. Σε συμβατικές διατάξεις πρόβλεψης κλάδου TAGE, η διάταξη πρόβλεψης μετάπτωσης υλοποιείται ως μια δικόρυφη διάταξη πρόβλεψης, η οποία παρέχει έναν αριθμό απαριθμητών εμπιστοσύνης 2-bit οι οποίοι παρακολουθούν κατά πόσο ένας κλάδος θα πρέπει να προβλέπεται με μεγάλο βαθμό εμπιστοσύνης όταν ακολουθείται, να προβλέπεται με μικρό βαθμό εμπιστοσύνης όταν ακολουθείται, να προβλέπεται με μικρό βαθμό εμπιστοσύνης όταν δεν ακολουθείται ή να προβλέπεται με μεγάλο βαθμό εμπιστοσύνης όταν δεν ακολουθείται. Μολονότι η δικόρυφη διάταξη πρόβλεψης είναι συνήθως πολύ λιγότερο ακριβής από τους πίνακες πρόβλεψης TAGE αφού εκπαιδευτούν κατάλληλα οι πίνακες πρόβλεψης TAGE, η παροχή της δικόρυφης διάταξης πρόβλεψης ως διάταξη πρόβλεψης μετάπτωσης για το χειρισμό περιπτώσεων στις οποίες οι πίνακες πρόβλεψης TAGE δεν έχουν φτάσει ακόμη ένα επαρκές επίπεδο εμπιστοσύνης, μπορεί να είναι χρήσιμη για τη βελτίωση της απόδοσης. A TAGE branch predictor typically also includes a transition predictor which provides a transition prediction for the result of a branch instruction in the event that the search in the TAGE prediction tables fails in all TAGE prediction tables. In some examples, in addition to using the transition prediction when the search fails, the transition prediction could also be used if the confidence in the prediction result from one of the TAGE prediction tables is less than a given threshold limit. In conventional TAGE branch predictors, the transition predictor is implemented as a binary predictor, which provides a number of 2-bit confidence counters that track whether a branch should be predicted with high confidence when followed, predicted with low degree of confidence when followed, to be predicted with a low degree of confidence when not followed, or to be predicted with a high degree of confidence when not followed. Although the bi-root predictor is usually much less accurate than the TAGE predictors after the TAGE predictors are properly trained, providing the bi-root predictor as a transition predictor to handle cases where the TAGE predictors have not yet reached a sufficient level trust, can be useful for improving performance.

Ωστόσο, οι περισσότερες υφιστάμενες σχεδιάσεις διατάξεων πρόβλεψης κλάδου έχουν σχεδιαστεί για τη βελτιστοποίηση της απόδοσης σε μια συνθήκη σταθερής κατάστασης όταν η διάταξη πρόβλεψης κλάδου έχει ήδη θερμανθεί πλήρως, δηλαδή όταν έχει πραγματοποιηθεί ήδη επαρκής εκπαίδευση της κατάστασης πρόβλεψης με βάση τα αποτελέσματα προηγούμενων εντολών διακλάδωσης, ώστε να εξασφαλίζεται ότι οι διατάξεις πρόβλεψης μπορούν να είναι σχετικά ακριβείς. Ωστόσο, οι εφευρέτες αναγνώρισαν ότι, όλο και περισσότερο, οι μεταγωγές πλαισίου ανάμεσα σε διαφορετικά πλαίσια εκτέλεσης γίνονται πολύ πιο συχνές σε τυπικά συστήματα επεξεργασίας κι επομένως ένα μεγαλύτερο κλάσμα του συνολικού χρόνου επεξεργασίας δαπανάται σε μια μεταβατική κατάσταση στην οποία η διάταξη πρόβλεψης κλάδου ακόμη προσαρμόζεται σε ένα νέο πλαίσιο εκτέλεσης μετά από μια πρόσφατη μεταγωγή πλαισίου. However, most existing branch predictor designs are designed to optimize performance in a steady-state condition when the branch predictor is already fully warmed up, i.e. when sufficient training of the predictor state has already taken place based on the results of previous branch instructions, so that to ensure that forecast provisions can be relatively accurate. However, the inventors recognized that, increasingly, frame switches between different execution frames are becoming much more frequent in typical processing systems and therefore a larger fraction of the total processing time is spent in a transient state in which the branch predictor is still adapting to a new execution context after a recent context switch.

Επίσης, οι πρόσφατες ανακοινώσεις έχουν αναγνωρίσει μια κατηγορία επιθέσεων ασφαλείας με βάση υποθετικά πλευρικά κανάλια, τα οποία σε ορισμένες παραλλαγές μπορούν να χρησιμοποιούν την εκπαίδευση της διάταξης πρόβλεψης κλάδου με βάση ένα πρώτο πλαίσιο εκτέλεσης ως ένα μέσο εξαπάτησης ενός δεύτερου πλαισίου εκτέλεσης στη διαρροή ευαίσθητων πληροφοριών μη προσβάσιμων στο πρώτο πλαίσιο εκτέλεσης. Αυτό συμβαίνει επειδή σε ορισμένες διατάξεις πρόβλεψης κλάδου είναι δυνατή η πρόσβαση σε μια καταχώρηση κατάστασης πρόβλεψης κλάδου εκχωρημένη στη διάταξη πρόβλεψης κλάδου με βάση το ιστορικό κλάδου που έχει παρατηρηθεί σε ένα πλαίσιο εκτέλεσης από ένα διαφορετικό φορτίο εργασίας λογισμικού και η χρήση τους για την πρόβλεψη των αποτελεσμάτων των κλάδων αυτού του διαφορετικού πλαισίου λογισμικού. Προηγουμένως, μια τέτοια χρήση της κατάστασης πρόβλεψης κλάδου από ένα πλαίσιο για την πρόβλεψη των αποτελεσμάτων σε ένα άλλο πλαίσιο θα εκλαμβανόταν απλά ως ένα ζήτημα απόδοσης, όπως στην περίπτωση που το δεύτερο πλαίσιο δοκιμάσει τη λάθος καταχώρηση της διάταξης πρόβλεψης κλάδου η οποία έχει εκχωρηθεί από ένα πρώτο πλαίσιο τότε οποιαδήποτε λανθασμένη πρόβλεψη που προκύπτει από αυτό μπορεί να αναγνωρίζεται αργότερα και να επιλύεται μόλις γίνεται γνωστό το πραγματικό αποτέλεσμα του κλάδου και αυτό θα αναμενόταν απλά να προκαλεί μια καθυστέρηση στην επεξεργασία του σωστού αποτελέσματος του κλάδου, χωρίς όμως να αναμένεται ότι προκαλεί έναν κίνδυνο στην ασφάλεια. Also, recent disclosures have identified a class of security attacks based on hypothetical side channels, which in some variations can use the training of the branch predictor based on a first execution framework as a means of tricking a second execution framework into leaking sensitive non- accessible in the first execution context. This is because in some branch predictors it is possible to access a branch predictor state entry assigned to the branch predictor based on the branch history observed in an execution context by a different software workload and use them to predict the results of the branches of this different software framework. Previously, such use of the branch prediction state by one framework to predict results in another framework would simply be seen as a performance issue, as in the case where the second framework tries the wrong entry of the branch prediction array assigned by a first frame then any misprediction resulting from this can be recognized later and resolved once the true branch result is known and this would simply be expected to cause a delay in processing the correct branch result, but not expected to cause a risk in security.

Ωστόσο, έχει αναγνωριστεί ότι οι εντολές οι οποίες εκτελούνται λανθασμένα υποθετικά λόγω της λανθασμένης πρόβλεψης εντός κλάδου μπορούν εν τούτοις να επηρεάζουν τα δεδομένα σε μια κρυφή μνήμη ή μια άλλη μη αρχιτεκτονική δομή αποθήκευσης που χρησιμοποιείται από μια συσκευή επεξεργασίας δεδομένων. Αυτό θα μπορούσε να εκμεταλλευθεί ένας επιτιθέμενος και να προσπαθήσει να αποκτήσει κάποιες πληροφορίες για πιθανώς ευαίσθητα δεδομένα στα οποία δεν έχει πρόσβαση ο επιτιθέμενος αλλά έχει πρόσβαση ένα άλλο πλαίσιο εκτέλεσης το οποίο μπορεί να εξαπατηθεί από τον επιτιθέμενο και να εκτελέσει εντολές σχεδιασμένες να αποκτούν πρόσβαση στο μυστικό και να προκαλούν αλλαγές στην εκχώρηση της κρυφής μνήμης τα οποία αποκαλύπτουν στον επιτιθέμενο κάποιες πληροφορίες για το μυστικό. Γ ια παράδειγμα, ο επιτιθέμενος θα μπορούσε να εκπαιδεύσει τη διάταξη πρόβλεψης κλάδου με ένα σχέδιο προσβάσεων κλάδου, ώστε όταν το πλαίσιο-θύμα εκτέλεσης αργότερα πραγματοποιεί πρόσβαση στην ίδια καταχώρηση τότε θα εκτελέσει λανθασμένα μια εντολή από μια λανθασμένη διεύθυνση προορισμού ή θα ακολουθήσει μια λανθασμένη πρόβλεψη κατά πόσο ακολουθείται ή όχι ένας κλάδος, προκαλώντας μια ακατάλληλη πρόσβαση στις μυστικές πληροφορίες. Μπορούν τότε να χρησιμοποιούνται πλευρικά κανάλια χρονισμού κρυφής μνήμης για τη διερεύνηση των επιπτώσεων της λανθασμένης υπόθεσης για τη διαρροή πληροφοριών για το μυστικό. However, it has been recognized that instructions that are hypothetically executed incorrectly due to intra-branch misprediction may nevertheless affect data in a cache or other non-architectural storage structure used by a data processing device. This could be exploited by an attacker and try to gain some information about potentially sensitive data that the attacker does not have access to but another execution framework does which can be tricked by the attacker into executing commands designed to access the secret and cause changes to the cache allocation that reveal some information about the secret to the attacker. For example, an attacker could train the branch predictor with a pattern of branch accesses so that when the victim execution context later accesses the same entry then it will incorrectly execute an instruction from an incorrect destination address or follow an incorrect prediction whether or not a branch is followed, causing an inappropriate access to secret information. Cache timing side channels can then be used to investigate the implications of the false assumption for secret information leakage.

Ένα πιθανό μέτρο αντιμετώπισης τέτοιων επιθέσεων μπορεί να είναι η απόρριψη της κατάστασης πρόβλεψης κλάδου με τον εντοπισμό μιας μεταγωγής πλαισίου ώστε το εισερχόμενο πλαίσιο εκτέλεσης να μην μπορεί να κάνει χρήση της προηγουμένως εκπαιδευμένης κατάστασης πρόβλεψης κλάδου που προκύπτει από το εξερχόμενο πλαίσιο εκτέλεσης. Ωστόσο, σε αυτή την περίπτωση η μεταβατική συμπεριφορά της διάταξης πρόβλεψης κλάδου όταν η κατάσταση πρόβλεψης κλάδου έχει μόλις απορριφθεί μπορεί να γίνει πιο σημαντική από τη συμπεριφορά σταθερής κατάστασης. A possible countermeasure for such attacks may be to discard the branch prediction state by detecting a frame switch so that the incoming execution frame cannot make use of the previously trained branch prediction state derived from the outgoing execution frame. However, in this case the transient behavior of the branch prediction device when the branch prediction state has just been rejected may become more important than the steady state behavior.

Στις τεχνικές που εξετάζονται παρακάτω, παρέχεται μια διάταξη πρόβλεψης κλάδου TAGE στην οποία η διάταξη πρόβλεψης μετάπτωσης περιλαμβάνει μια διάταξη πρόβλεψης perceptron. Η διάταξη πρόβλεψης perceptron περιλαμβάνει τουλάχιστον έναν πίνακα βαρών για την αποθήκευση των εκπαιδευμένων βαρών με βάση τα προηγούμενα αποτελέσματα εντολών διακλάδωσης. Η διάταξη πρόβλεψης perceptron προβλέπει το αποτέλεσμα της εντολής διακλάδωσης με βάση ένα άθροισμα όρων, με κάθε όρο να εξαρτάται από ένα αντίστοιχο βάρος που επιλέγεται από τον τουλάχιστον ένα πίνακα βαρών με βάση ένα αντίστοιχο τμήμα τουλάχιστον της διεύθυνσης εντολών προορισμού και του προηγούμενου ιστορικού κλάδου. Μια διάταξη πρόβλεψης perceptron θα αντιμετωπιζόταν κανονικά ως ένας εντελώς διαφορετικός τύπος διάταξης πρόβλεψης κλάδου σε σχέση με τη διάταξη πρόβλεψης κλάδου TAGE, η οποία θα μπορούσε να χρησιμοποιηθεί από μόνη της για την παροχή μιας ολοκληρωμένης πρόβλεψης ενός αποτελέσματος μιας εντολής διακλάδωσης. Κανονικά θα χρησιμοποιούταν ως η διάταξη πρόβλεψης μετάπτωσης σε μια διάταξη πρόβλεψης κλάδου TAGE. Ωστόσο, οι εφευρέτες έχουν αναγνωρίσει ότι χρησιμοποιώντας μια διάταξη πρόβλεψης perceptron ως διάταξη πρόβλεψης μετάπτωσης μιας διάταξης πρόβλεψης κλάδου TAGE, αυτό μπορεί να παρέχει μια διάταξη πρόβλεψης κλάδου η οποία μαθαίνει ταχύτερα στη μεταβατική κατάσταση σύντομα μετά από μια μεταγωγή πλαισίου και μειώνει την ποινή των μεταγωγών πλαισίου και των απορρίψεων κατάστασης πρόβλεψης κλάδου, για τη βελτίωση της απόδοσης και την παροχή μιας διάταξης πρόβλεψης κλάδου η οποία να μπορεί να ανταπεξέρχεται καλύτερα στις απαιτήσεις που επιβάλλονται στις διατάξεις πρόβλεψης κλάδου στα σύγχρονα συστήματα επεξεργασίας. Επίσης, η διάταξη πρόβλεψης perceptron μπορεί να παρέχει καλύτερη ακρίβεια πρόβλεψης ανά byte αποθηκευμένων δεδομένων, γεγονός που την κάνει καταλληλότερη σε συστήματα με περιορισμένο διαθέσιμο χώρο. In the techniques discussed below, a TAGE branch predictor is provided in which the transition predictor includes a perceptron predictor. The perceptron predictor includes at least one weight table for storing the trained weights based on the previous branching command results. The perceptron predictor predicts the result of the branch command based on a sum of terms, each term depending on a corresponding weight selected from the at least one weight matrix based on a corresponding portion of at least the destination command address and the previous branch history. A perceptron predictor would normally be treated as a completely different type of branch predictor than the TAGE branch predictor, which could be used by itself to provide a complete prediction of an outcome of a branch instruction. It would normally be used as the transition predictor in a TAGE branch predictor. However, the inventors have recognized that by using a perceptron predictor as the transition predictor of a TAGE branch predictor, this can provide a branch predictor which learns faster in the transition state soon after a frame switch and reduces the penalty of frame switches and branch predictor status discards, to improve performance and provide a branch predictor that can better cope with the demands placed on branch predictors in modern processing systems. Also, the perceptron predictor can provide better prediction accuracy per byte of stored data, which makes it more suitable for systems with limited available space.

Μπορεί να παρέχεται ένα κύκλωμα επιλογής για την επιλογή ανάμεσα στην πρόβλεψη μετάπτωσης που παρέχεται από τη διάταξη πρόβλεψης μετάπτωσης και την πρόβλεψη TAGE που παρέχεται από τους πίνακες πρόβλεψης TAGE ανάλογα μια τιμή εμπιστοσύνης η οποία υποδηλώνει ένα επίπεδο εμπιστοσύνης στην πρόβλεψη TAGE. Η τιμή εμπιστοσύνης μπορεί να προκύπτει από τους πίνακες πρόβλεψης TAGE από το κύκλωμα αναζήτησης το οποίο πραγματοποιεί την αναζήτηση στους πίνακες πρόβλεψης TAGE. Δηλαδή, κάθε καταχώρηση πρόβλεψης των πινάκων πρόβλεψης TAGE μπορεί να προσδιορίζει, όχι μόνο μια πρόβλεψη λήψης ή μη λήψης, αλλά μπορεί επίσης να προσδιορίζει ένα επίπεδο εμπιστοσύνης για την ορθότητα αυτής της πρόβλεψης (ο ίδιος απαριθμητής μπορεί να υποδηλώνει τόσο το αποτέλεσμα που προβλέφθηκε όσο και την εμπιστοσύνη). Οι ίδιες οι ενδείξεις εμπιστοσύνης από τους πίνακες πρόβλεψης TAGE επηρεάζουν επομένως κατά πόσο χρησιμοποιείται η πρόβλεψη μετάπτωσης από την πρόβλεψη perceptron ή TAGE με βάση τους πίνακες πρόβλεψης TAGE. Σε ορισμένα παραδείγματα, η διάταξη πρόβλεψης perceptron μπορεί επίσης να παράγει μια ένδειξη εμπιστοσύνης (π.χ. η τιμή πριν την εφαρμογή μιας συνάρτησης κατωφλιού) η οποία θα μπορούσε επίσης να συμβάλλει στην απόφαση επιλογής ανάμεσα στις προβλέψεις μετάπτωσης και TAGE. A selection circuit may be provided to select between the transition prediction provided by the transition predictor and the TAGE prediction provided by the TAGE prediction tables depending on a confidence value indicating a level of confidence in the TAGE prediction. The confidence value may be derived from the TAGE prediction tables by the search circuit which searches the TAGE prediction tables. That is, each prediction entry of the TAGE prediction tables may specify, not only a take or no-take prediction, but may also specify a level of confidence in the correctness of that prediction (the same enumerator may indicate both the predicted outcome and the trust). The confidence cues from the TAGE prediction matrices themselves thus influence whether transition prediction from the perceptron or TAGE prediction based on the TAGE prediction matrices is used. In some examples, the perceptron predictor may also produce a confidence indication (eg, the value before applying a threshold function) which could also contribute to the decision to choose between the transition and TAGE predictions.

Το κύκλωμα επιλογής μπορεί να επιλέγει την πρόβλεψη μετάπτωσης όταν η αναζήτηση αποτυγχάνει σε όλους τους πίνακες πρόβλεψης TAGE ή όταν η τιμή εμπιστοσύνης που σχετίζεται με την πρόβλεψη TAGE υποδεικνύει ένα επίπεδο εμπιστοσύνης χαμηλότερο από ένα όριο κατωφλιού. Σε ορισμένες περιπτώσεις αυτά τα συμβάντα μπορούν να συγκρίνονται σε μια σύγκριση, εφόσον η περίπτωση στην οποία η αναζήτηση αποτυγχάνει σε όλους τους πίνακες πρόβλεψης TAGE μπορεί να αντιμετωπίζεται σαν η τιμή εμπιστοσύνης να είναι 0. Συνεπώς, μολονότι η κύρια πρόβλεψη TAGE μπορεί να επιλέγεται κατά προτίμηση στις περισσότερες περιπτώσεις, η διάταξη πρόβλεψης μετάπτωσης παρέχει μια εφεδρική επιλογή σε περίπτωση που η κύρια πρόβλεψη TAGE είναι ακατάλληλη. The selection circuit may select the transition prediction when the search fails in all TAGE prediction tables or when the confidence value associated with the TAGE prediction indicates a confidence level lower than a threshold limit. In some cases these events can be compared in a comparison, since the case where the search fails in all TAGE prediction tables can be treated as if the confidence value is 0. Therefore, although the main TAGE prediction may be preferred in most cases, the transition prediction arrangement provides a backup option in case the primary TAGE prediction is unsuitable.

Εάν η αναζήτηση πετύχει σε έναν τουλάχιστον πίνακα πρόβλεψης TAGE, η πρόβλεψη TAGE μπορεί να περιλαμβάνει μια πρόβλεψη με βάση μια δεικτοδοτούμενη καταχώρηση ενός επιλεγμένου πίνακα πρόβλεψης TAGE, όπου ο επιλεγμένος πίνακας πρόβλεψης TAGE είναι ο πίνακας πρόβλεψης για τον οποίο ο δείκτης καθορίζεται με βάση το μεγαλύτερο τμήμα του προηγούμενου ιστορικού κλάδου ανάμεσα στους πίνακες πρόβλεψης TAGE οι οποίοι πέτυχαν στην αναζήτηση. Συνεπώς, εάν υπάρχει μια επιτυχία σε έναν πρώτο πίνακα πρόβλεψης TAGE που αντιστοιχεί σε ένα δείκτη που προέκυψε από ένα πρώτο μήκος ιστορικού εκτέλεσης και ένα δεύτερο πίνακα πρόβλεψης στον οποίο πραγματοποιήθηκε πρόσβαση με βάση ένα δείκτη που προέκυψε από ένα δεύτερο μήκος του προηγούμενου ιστορικού εκτέλεσης το οποίο είναι μεγαλύτερο από το πρώτο μήκος, τότε ο πίνακας που αντιστοιχεί στο δείκτη που προέκυψε από το δεύτερο μήκος του ιστορικού εκτέλεσης θα χρησιμοποιούταν για την παροχή της πρόβλεψης TAGE. If the search succeeds in at least one TAGE prediction table, the TAGE prediction may include a prediction based on an indexed entry of a selected TAGE prediction table, where the selected TAGE prediction table is the prediction table for which the index is determined based on the largest portion of the previous branch history among the TAGE prediction tables that were successful in the search. Accordingly, if there is a hit on a first TAGE prediction table corresponding to a pointer derived from a first length of execution history and a second prediction table accessed based on a pointer derived from a second length of the previous execution history which is greater than the first length, then the array corresponding to the index derived from the second run history length would be used to provide the TAGE prediction.

Το συνολικό μέγεθος της κατάστασης πρόβλεψης κλάδου που αποθηκεύεται από τη διάταξη πρόβλεψης perceptron είναι μικρότερο από το συνολικό μέγεθος της κατάστασης πρόβλεψης κλάδου που αποθηκεύεται από την πλειοψηφία των πινάκων πρόβλεψης TAGE. Συνεπώς, εφόσον η διάταξη πρόβλεψης perceptron χρησιμοποιείται ως η διάταξη πρόβλεψης μετάπτωσης η οποία παρέχει μια μετάπτωση στην περίπτωση στην οποία οι πίνακες πρόβλεψης TAGE αδυνατούν να παρέχουν ένα κατάλληλο επίπεδο εμπιστοσύνης στην πρόβλεψη, τότε δεν αξίζει η επιβάρυνση με ένα μεγαλύτερο κόστος εμβαδού/ισχύος για την παροχή μιας ιδιαίτερα μεγάλης διάταξης πρόβλεψης perceptron. Μια σχετικά μικρή διάταξη πρόβλεψης perceptron μπορεί να επαρκεί για την παροχή μιας σχετικά σημαντικής βελτίωσης της απόδοσης στη μεταβατική κατάσταση λειτουργίας όπως εξετάστηκε παραπάνω. Η παροχή μιας σχετικά μικρής διάταξης πρόβλεψης perceptron μπορεί επίσης να μειώνει τη χρονική επιβάρυνση από την αποθήκευση και την επαναφορά της κατάστασης πρόβλεψης κλάδου όπως εξετάζεται παρακάτω. The total size of the branch prediction state stored by the perceptron predictor is smaller than the total size of the branch prediction state stored by the majority of TAGE prediction arrays. Therefore, if the perceptron predictor is used as the transition predictor which provides a transition in the event that the TAGE prediction tables fail to provide an appropriate level of confidence in the prediction, then it is not worth the burden of a larger area/power cost for the providing a particularly large perceptron prediction array. A relatively small perceptron prediction array may be sufficient to provide a relatively significant performance improvement in transient operation as discussed above. Providing a relatively small perceptron prediction array can also reduce the time overhead of storing and restoring branch prediction state as discussed below.

Η διάταξη πρόβλεψης κλάδου TAGE μπορεί να έχει ένα κύκλωμα ελέγχου το οποίο αποκρίνεται σε μια μεταγωγή πλαισίου εκτέλεσης ενός στοιχείου επεξεργασίας από ένα πρώτο πλαίσιο εκτέλεσης σε ένα δεύτερο πλαίσιο εκτέλεσης, ώστε να αποτρέπει την παροχή μιας πρόβλεψης κλάδου από τη διάταξη πρόβλεψης κλάδου TAGE για μια εντολή του δεύτερου πλαισίου εκτέλεσης με βάση την κατάσταση πρόβλεψης κλάδου που εκπαιδεύτηκε με βάση τις εντολές του πρώτου πλαισίου εκτέλεσης. Με αυτό τον τρόπο μπορούν να μειώνονται οι επιπτώσεις από υποθετικές επιθέσεις πλευρικού καναλιού της μορφής που εξετάστηκε παραπάνω. The TAGE branch predictor may have control circuitry responsive to an execution frame switch of a processing element from a first execution frame to a second execution frame to prevent the TAGE branch predictor from providing a branch prediction for an instruction of the second execution frame based on the branch prediction state trained based on the commands of the first execution frame. In this way the effects of hypothetical side-channel attacks of the form discussed above can be reduced.

Η διάταξη πρόβλεψης κλάδου TAGE μπορεί να έχει ένα κύκλωμα αποθήκευσης πρόβλεψης κλάδου που αποκρίνεται σε ένα συμβάν αποθήκευσης πρόβλεψης κλάδου για την αποθήκευση πληροφοριών σε μια προσωρινή μνήμη καταστάσεων κλάδου ανάλογα τουλάχιστον ένα τμήμα του ενός τουλάχιστον πίνακα βάρους της διάταξης πρόβλεψης perceptron και ένα κύκλωμα επαναφοράς πρόβλεψης κλάδου που αποκρίνεται σε ένα συμβάν επαναφοράς πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης για την επαναφορά τουλάχιστον ενός τμήματος του ενός τουλάχιστον πίνακα βαρών της διάταξης πρόβλεψης perceptron με βάση τις πληροφορίες που είχαν αποθηκευτεί προηγουμένως στην προσωρινή μνήμη καταστάσεων κλάδου. Η αποθήκευση της ενεργής κατάστασης στην προσωρινή μνήμη καταστάσεων κλάδου και η μετέπειτα επαναφορά της στη διάταξη πρόβλεψης perceptron, μπορεί να εξασφαλίσει ότι ακόμη και εάν η ενεργή κατάσταση απορριφθεί από τη διάταξη πρόβλεψης perceptron σε μια μεταγωγή πλαισίου εκτέλεσης όπως εξετάζεται παραπάνω για την αντιμετώπιση υποθετικών επιθέσεων πλευρικού καναλιού, με την επιστροφή σε ένα δεδομένο πλαίσιο εκτέλεσης κάποιες καταστάσεις διάταξης πρόβλεψης κλάδου μπορούν να επαναφέρονται για αυτό το πλαίσιο, για τη μείωση της απώλειας στην απόδοση που προκαλείται από την αποτροπή χρήσης μιας κατάστασης πρόβλεψης που έχει εκπαιδευτεί από ένα πλαίσιο εκτέλεσης από εντολές από ένα άλλο πλαίσιο εκτέλεσης. Ουσιαστικά οι λειτουργίες αποθήκευσης και επαναφοράς επιτρέπουν στο εισερχόμενο πλαίσιο που ακολουθεί το πλαίσιο εκτέλεσης να ξεκινάει από μια μερικώς θερμή κατάσταση της διάταξης πρόβλεψης κλάδου. The TAGE branch predictor may have a branch prediction store circuit responsive to a branch prediction store event for storing information in a branch state buffer according to at least a portion of the at least one weight table of the perceptron predictor and a branch prediction reset circuit responsive to a branch prediction reset event associated with a given execution context to reset at least a portion of the at least one weight matrix of the perceptron predictor based on information previously stored in the branch state cache. Storing the active state in the branch state buffer and later restoring it to the perceptron predictor can ensure that even if the active state is rejected by the perceptron predictor in an execution frame switch as discussed above to deal with hypothetical side-stepping attacks channel, on returning to a given execution context some branch predictor states can be reset for that context, to reduce the loss in performance caused by preventing a prediction state trained by an execution context from being used by commands from a another execution context. Essentially the save and restore functions allow the incoming frame that follows the execution frame to start from a partially warm state of the branch predictor.

Έχει βρεθεί ότι η αποθήκευση ολόκληρου του συνόλου καταστάσεων πρόβλεψης κλάδου σε όλη τη διάταξη πρόβλεψης κλάδου TAGE ως σύνολο (συμπεριλαμβανομένων των πινάκων πρόβλεψης TAGE) στην προσωρινή μνήμη καταστάσεων κλάδου μπορεί να απαιτεί ένα σχετικά μεγάλο όγκο χώρου αποθήκευσης στην προσωρινή μνήμη καταστάσεων κλάδου, γεγονός που μπορεί να μην είναι αποδεκτό για ορισμένες περιορισμένου εμβαδού σχεδιάσεις επεξεργαστών. Στην πράξη, η διάταξη πρόβλεψης perceptron που παρέχεται ως διάταξη πρόβλεψης μετάπτωσης μπορεί να παρέχει ένα μεγαλύτερο επίπεδο αύξησης της απόδοσης ανά μονάδα αποθηκευμένων δεδομένων και με την αποθήκευση τουλάχιστον ενός τμήματος της κατάστασης της διάταξης πρόβλεψης perceptron στην προσωρινή μνήμη κατάστασης κλάδου σε απόκριση του συμβάντος αποθήκευσης πρόβλεψης κλάδου (αλλά όχι την αποθήκευση της κατάστασης από τους πίνακες πρόβλεψης TAGE), αυτό μπορεί να μειώσει το μέγεθος της χωρητικότητας του αποθηκευτικού χώρου που απαιτείται για την προσωρινή μνήμη καταστάσεων κλάδου, για τον περιορισμό του κόστους εμβαδού παρέχοντας ταυτόχρονα ένα εύλογο επίπεδο απόδοσης στη μεταβατική κατάσταση λειτουργίας μετά από μια μεταγωγή πλαισίου όπως εξετάστηκε παραπάνω. It has been found that storing the entire set of branch prediction states across the entire TAGE branch prediction array as a whole (including the TAGE prediction tables) in the branch state cache can require a relatively large amount of storage space in the branch state cache, which can may not be acceptable for some limited area processor designs. In practice, the perceptron predictor provided as a transition predictor can provide a greater level of performance gain per unit of stored data and by storing at least a portion of the state of the perceptron predictor in the branch state cache in response to the save prediction event branch (but not the state storage from the TAGE prediction tables), this can reduce the amount of storage capacity required for the branch state cache, to limit area costs while still providing a reasonable level of transient state performance operation after a frame switch as discussed above.

Σε ένα σύστημα το οποίο υποστηρίζει την αποθήκευση και την επαναφορά της κατάστασης από τη διάταξη πρόβλεψης perceptron, ορισμένα παραδείγματα μπορεί να εφαρμόζουν συμπίεση και αποσυμπίεση στην αποθήκευση και την επαναφορά αντίστοιχα, ώστε να μην είναι απαραίτητη η αποθήκευση των πινάκων βάρους (ή οποιοσδήποτε άλλης κατάστασης της διάταξης πρόβλεψης perceptron) στην προσωρινή μνήμη καταστάσεων με την ίδια ακριβώς μορφή με την οποία αποθηκεύονται εντός της ίδιας της διάταξης πρόβλεψης perceptron. In a system that supports saving and restoring state from the perceptron predictor, some examples may apply compression and decompression to the store and restore respectively, so that it is not necessary to store the weight tables (or any other state of perceptron) to the state cache in exactly the same form as they are stored within the perceptron itself.

Το συμβάν αποθήκευσης πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης θα μπορούσε να περιλαμβάνει ένα ή περισσότερα από τα εξής: The branch prediction save event associated with the given execution context could include one or more of the following:

• τη μεταγωγή πλαισίου εκτέλεσης, για την οποία το εν λόγω δεδομένο πλαίσιο εκτέλεσης είναι το πρώτο πλαίσιο εκτέλεσης, • the execution frame switch, for which the given execution frame is the first execution frame;

• τη μετάβαση του δεδομένου πλαισίου εκτέλεσης από το στοιχείο επεξεργασίας σε ένα άλλο στοιχείο επεξεργασίας, • the transition of the given execution context from the processing element to another processing element,

• την παρέλευση μιας προκαθορισμένης περιόδου από ένα προηγούμενο συμβάν αποθήκευσης πρόβλεψης κλάδου, • the passage of a predetermined period since a previous branch forecast storage event;

• την ανίχνευση ή την εκτέλεση μιας εντολής αποθήκευσης πρόβλεψης κλάδου εντός του δεδομένου πλαισίου εκτέλεσης, και • detecting or executing a branch prediction store instruction within the given execution context, and

• μια ενημέρωση της ενεργής κατάστασης πρόβλεψης κλάδου η οποία ικανοποιεί μια προκαθορισμένη συνθήκη η οποία συμβαίνει κατά την εκτέλεση του δεδομένου πλαισίου εκτέλεσης. • an update of the active branch prediction state that satisfies a predetermined condition that occurs during the execution of the given execution context.

Συνεπώς, σε ορισμένες περιπτώσεις η κατάσταση πρόβλεψης μπορεί να αποθηκεύεται στην προσωρινή μνήμη καταστάσεων κλάδου σε απόκριση της ίδιας της μεταγωγής του πλαισίου εκτέλεσης ή σε απόκριση της μετάβασης ενός πλαισίου από το στοιχείο επεξεργασίας σε ένα άλλο στοιχείο επεξεργασίας. Ωστόσο, μπορεί να είναι επίσης δυνατή η αποθήκευση της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης στην προσωρινή μνήμη καταστάσεων κλάδου κατά διαστήματα κατά την επεξεργασία του δεδομένου πλαισίου εκτέλεσης, ώστε να απαιτούνται λιγότερες αποθηκεύσεις καταστάσεων κατά τη μεταγωγή του πλαισίου εκτέλεσης, γεγονός που μπορεί να βελτιώσει την απόδοση. Για παράδειγμα, μια κατάσταση θα μπορούσε να αποθηκεύεται περιοδικά στην προσωρινή μνήμη καταστάσεων κλάδου ή σε απόκριση μιας ενημέρωσης της ενεργής κατάστασης πρόβλεψης κλάδου η οποία ικανοποιεί κάποια προκαθορισμένη συνθήκη (π.χ. μια αλλαγή η οποία οδηγεί σε μεγαλύτερο από ένα επίπεδο κατωφλιού επίπεδο εμπιστοσύνης). Επίσης, σε ορισμένες περιπτώσεις μπορεί να ορίζεται μια εντολή αποθήκευσης πρόβλεψης κατάστασης η οποία όταν περιλαμβάνεται στο λογισμικό του δεδομένου πλαισίου εκτέλεσης μπορεί να διεγείρει το κύκλωμα αποθήκευσης πρόβλεψης κλάδου για την αποθήκευση της ενεργής εκείνη τη στιγμή κατάστασης πρόβλεψης κλάδου (με συμπίεση εάν είναι απαραίτητο) στην προσωρινή μνήμη καταστάσεων κλάδου. Therefore, in some cases the prediction state may be stored in the branch state buffer in response to the execution frame switching itself or in response to the transition of a frame from the processing element to another processing element. However, it may also be possible to cache the active branch prediction state associated with a given execution context in the branch state cache periodically during the processing of the given execution context so that fewer state saves are required during execution context switching, which which can improve performance. For example, a state could be periodically stored in the branch state cache or in response to an update of the active branch prediction state that satisfies some predefined condition (eg, a change that results in greater than a threshold confidence level). . Also, in some cases a state prediction save instruction may be defined which when included in the software of the given execution framework can trigger the branch prediction storage circuitry to store the currently active branch prediction state (with compression if necessary) to branch state cache.

Παρόμοια, το συμβάν επαναφοράς πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης μπορεί να περιλαμβάνει ένα ή περισσότερα από τα εξής: Similarly, the branch prediction reset event associated with a given execution context may include one or more of the following:

• τη μεταγωγή πλαισίου εκτέλεσης, για την οποία το δεδομένο πλαίσιο εκτέλεσης είναι το δεύτερο πλαίσιο εκτέλεσης, • execution frame switching, for which the given execution frame is the second execution frame,

· τη μετάβαση του δεδομένου πλαισίου εκτέλεσης από ένα άλλο στοιχείο επεξεργασίας στο στοιχείο επεξεργασίας που σχετίζεται με τη διάταξη πρόβλεψης κλάδου για την οποία επαναφέρεται η κατάσταση, · the transition of the given execution context from another processing element to the processing element associated with the branch predictor for which the state is reset;

• την παρέλευση μιας προκαθορισμένης περιόδου από ένα προηγούμενο συμβάν επαναφοράς πρόβλεψης κλάδου, και • the passage of a predetermined period since a previous industry forecast reset event, and

· την ανίχνευση ή την εκτέλεση μιας εντολής επαναφοράς πρόβλεψης κλάδου εντός του δεδομένου πλαισίου εκτέλεσης. · the detection or execution of a branch prediction reset command within the given execution context.

Τα πλαίσια εκτέλεσης μπορούν για παράδειγμα να είναι διαφορετικές διαδικασίες που εκτελούνται από το στοιχείο επεξεργασίας (όπου κάθε διαδικασία μπορεί για παράδειγμα να είναι μια δεδομένη εφαρμογή, ένα λειτουργικό σύστημα ή ένας επόπτης που εκτελείται στο στοιχείο επεξεργασίας). Σε ορισμένες περιπτώσεις, θα μπορούσε να εξεταστεί η αντιστοίχιση των διαφόρων υπο-τμημάτων μιας δεδομένης διαδικασίας με διαφορετικά πλαίσια εκτέλεσης. Για παράδειγμα, οι διάφορες περιοχές διευθύνσεων εντός ενός δεδομένου προγράμματος θα μπορούσαν να αντιστοιχούνται με διαφορετικά πλαίσια εκτέλεσης ή οι εντολές διαίρεσης πλαισίου εκτέλεσης που περιλαμβάνονται στον κώδικα λογισμικού θα μπορούσε να θεωρηθεί ότι επισημαίνουν τα σημεία στα οποία υπάρχει μια μεταγωγή από ένα πλαίσιο εκτέλεσης σε ένα άλλο. Σε άλλα παραδείγματα, μια ομάδα διαδικασιών λογισμικού που εκτελούνται από το στοιχείο επεξεργασίας θα μπορούσε να θεωρείται ότι αποτελεί στο σύνολό της τμήμα ενός μόνο πλαισίου εκτέλεσης. Επίσης, σε ορισμένες περιπτώσεις, αντίστοιχα νήματα που εκτελούνται από το κύκλωμα επεξεργασίας τα οποία αντιστοιχούν στην ίδια διαδικασία ή μια υπο-ομάδα νημάτων ανάμεσα σε πολλαπλά νήματα, θα μπορούσαν να θεωρούνται ως ένα πλαίσιο εκτέλεσης. Συνεπώς, θα εκτιμηθεί ότι ο ακριβής τρόπος με τον οποίο είναι δυνατή η διαίρεση ενός αριθμού φορτίων εργασίας λογισμικού σε πλαίσια εκτέλεσης μπορεί να διαφέρει από υλοποίηση σε υλοποίηση. Execution contexts can for example be different processes executed by the processing element (where each process can for example be a given application, operating system or supervisor running on the processing element). In some cases, one could consider mapping different sub-parts of a given process to different execution contexts. For example, different address ranges within a given program could correspond to different execution frames, or execution frame split instructions included in software code could be thought of as marking the points at which there is a switch from one execution frame to another . In other examples, a group of software processes executed by the processing element could be considered as a whole to be part of a single execution framework. Also, in some cases, corresponding threads executed by processing circuitry that correspond to the same process, or a subset of threads among multiple threads, could be considered an execution context. Accordingly, it will be appreciated that the exact manner in which a number of software workloads may be divided into execution contexts may vary from implementation to implementation.

Σε περιπτώσεις στις οποίες χρησιμοποιείται αποθήκευση και επαναφορά των καταστάσεων της διάταξης πρόβλεψης perceptron, τότε κατά τη διάρκεια μιας αρχικής περιόδου που ακολουθεί το συμβάν επαναφοράς πρόβλεψης κλάδου, μπορεί να υπάρχει μια φάση κατά την οποία, μολονότι η διάταξη πρόβλεψης perceptron έχει θερμανθεί από την επαναφερθείσα κατάσταση πρόβλεψης κλάδου, οι πίνακες πρόβλεψης TAGE μπορούν ακόμη να παρέχουν προβλέψεις σχετικά χαμηλής εμπιστοσύνης εφόσον προηγουμένως μπορεί να έχουν απενεργοποιηθεί ή απορριφθεί. Συνεπώς, κατά τη διάρκεια μιας αρχικής περιόδου που ακολουθεί το συμβάν επαναφοράς πρόβλεψης κλάδου, το κύκλωμα επιλογής για την επιλογή ανάμεσα στην πρόβλεψη TAGE και την πρόβλεψη μετάπτωσης μπορεί να διαμορφώνεται ώστε να επιλέγει την πρόβλεψη μετάπτωσης η οποία παρέχεται από τη διάταξη πρόβλεψης μετάπτωσης. Κατά τη διάρκεια αυτής της αρχικής περιόδου, οι πίνακες πρόβλεψης TAGE μπορούν ακόμη να ενημερώνονται με βάση τα αποτελέσματα των εντολών διακλάδωσης, παρά το γεγονός ότι αυτές οι καταχωρήσεις δε χρησιμοποιούνται εκείνη τη στιγμή για την πραγματική πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης. Συνεπώς, σταδιακά κατά τη διάρκεια της αρχικής περιόδου η εμπιστοσύνη στην πρόβλεψη TAGE μπορεί να αυξάνεται καθώς εκπαιδεύονται οι πίνακες πρόβλεψης TAGE με βάση τα πραγματικά αποτελέσματα κλάδου. Σε ορισμένα παραδείγματα η αρχική περίοδος μπορεί να αντιστοιχεί σε μια σταθερή διάρκεια ανεξάρτητα από το επίπεδο εμπιστοσύνης που επιτυγχάνεται από τις προβλέψεις TAGE. Για παράδειγμα η αρχική περίοδος θα μπορούσε να είναι ένα από τα εξής: μια προκαθορισμένη διάρκεια χρόνου μετά το συμβάν επαναφοράς πρόβλεψης κλάδου, ένας προκαθορισμένος αριθμός κύκλων επεξεργασίας μετά το συμβάν επαναφοράς πρόβλεψης κλάδου, ένας προκαθορισμένος αριθμός εντολών που επεξεργάζονται μετά το συμβάν επαναφοράς πρόβλεψης κλάδου, ένας προκαθορισμένος αριθμός εντολών διακλάδωσης που επεξεργάζονται μετά το συμβάν επαναφοράς πρόβλεψης κλάδου ή ένας προκαθορισμένος αριθμός αναζητήσεων που πραγματοποιούνται από το κύκλωμα αναζήτησης μετά το συμβάν επαναφοράς πρόβλεψης κλάδου. Εναλλακτικά, το μέγεθος της αρχικής περιόδου θα μπορούσε να κυμαίνεται με βάση το επίπεδο εμπιστοσύνης που επιτυγχάνεται από την πρόβλεψη TAGE. Η αρχική περίοδος μπορεί να τελειώνει μόλις ένα επίπεδο εμπιστοσύνης στην πρόβλεψη TAGE υπερβεί ένα προκαθορισμένο επίπεδο. In cases where saving and restoring perceptron predictor states is used, then during an initial period following the branch prediction reset event, there may be a phase where, although the perceptron predictor has warmed up from the reset state industry prediction, TAGE prediction tables can still provide relatively low confidence predictions as they may previously have been disabled or rejected. Accordingly, during an initial period following the branch prediction reset event, the selection circuit for selecting between the TAGE prediction and the transition prediction may be configured to select the transition prediction provided by the transition prediction device. During this initial period, the TAGE prediction tables may still be updated based on the results of the branch instructions, despite the fact that these entries are not used at that time to actually predict the results of the branch instructions. Therefore, gradually during the initial period confidence in the TAGE forecast may increase as the TAGE forecast tables are trained based on actual industry results. In some examples the initial period may correspond to a fixed duration regardless of the level of confidence achieved by the TAGE predictions. For example the initial period could be one of: a predetermined length of time after the branch prediction reset event, a predetermined number of processing cycles after the branch prediction reset event, a predetermined number of commands processed after the branch prediction reset event, a predetermined number of branch instructions processed after the branch prediction reset event or a predetermined number of searches performed by the seek circuit after the branch prediction reset event. Alternatively, the size of the initial period could be varied based on the confidence level achieved by the TAGE forecast. The initial period may end once a confidence level in the TAGE forecast exceeds a predetermined level.

Η διάταξη πρόβλεψης κλάδου TAGE που εξετάζεται παραπάνω (συμπεριλαμβανόμενων των κύριων πινάκων πρόβλεψης TAGE και της διάταξης πρόβλεψης perceptron που παρέχεται ως μια διάταξη πρόβλεψης μετάπτωσης για τη διάταξη πρόβλεψης κλάδου TAGE) μπορεί να χρησιμοποιείται για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης που επεξεργάζονται από ένα πρώτο στοιχείο επεξεργασίας εντός μιας συσκευής επεξεργασίας δεδομένων. The TAGE branch predictor discussed above (including the main TAGE prediction tables and the perceptron predictor provided as a transition predictor for the TAGE branch predictor) can be used to predict the results of branch instructions processed by a first processing element within a data processing device.

Σε ορισμένα παραδείγματα η συσκευή μπορεί να έχει και ένα δεύτερο στοιχείο επεξεργασίας το οποίο έχει μια δεύτερη διάταξη πρόβλεψης κλάδου για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης που επεξεργάζονται από το δεύτερο στοιχείο επεξεργασίας. Αυτή η δεύτερη διάταξη πρόβλεψης κλάδου θα μπορούσε να έχει διαφορετική σχεδίαση από τη διάταξη πρόβλεψης κλάδου TAGE που χρησιμοποιείται από το πρώτο στοιχείο επεξεργασίας. Για παράδειγμα, σε μια συσκευή η οποία παρέχει ετερογενείς πυρήνες επεξεργαστή με διαφορετικά επίπεδα απόδοσης και ενεργειακής απόδοσης, ένα ενεργειακά αποδοτικότερο (αλλά λιγότερο ισχυρό) στοιχείο επεξεργασίας μπορεί να χρησιμοποιεί μια απλούστερη μορφή διάταξης πρόβλεψης κλάδου από τη διάταξη πρόβλεψης κλάδου TAGE που χρησιμοποιείται από ένα περισσότερο προσανατολισμένο προς την απόδοση, αλλά λιγότερο ενεργειακά αποδοτικό, στοιχείο επεξεργασίας. In some examples the device may also have a second processing element that has a second branch predictor for predicting the results of branch instructions processed by the second processing element. This second branch predictor could have a different design than the TAGE branch predictor used by the first processing element. For example, in a device that provides heterogeneous processor cores with different levels of performance and energy efficiency, a more energy-efficient (but less powerful) processing element may use a simpler form of branch predictor than the TAGE branch predictor used by a more performance oriented, but less energy efficient, processing element.

Σε ορισμένα παραδείγματα, η δεύτερη διάταξη πρόβλεψης κλάδου μπορεί να περιλαμβάνει μια διάταξη πρόβλεψης perception η οποία αντιστοιχεί σε σχεδίαση με τη διάταξη πρόβλεψης μετάπτωσης της διάταξης πρόβλεψης κλάδου TAGE. Για παράδειγμα η δεύτερη διάταξη πρόβλεψης κλάδου θα μπορούσε να έχει ακριβώς την ίδια διαμόρφωση πινάκων βάρους (ίδιος αριθμός πινάκων και ίδιο μέγεθος πινάκων) όπως η διάταξη πρόβλεψης μετάπτωσης της διάταξης πρόβλεψης κλάδου TAGE η οποία χρησιμοποιείται από το πρώτο στοιχείο επεξεργασίας. Αυτό μπορεί να καταστήσει πολύ σαφέστερη τη μετάβαση του πλαισίου εκτέλεσης ανάμεσα στο πρώτο και το δεύτερο στοιχείο επεξεργασίας εφόσον είναι δυνατή η απλή αντιγραφή όλων των καταστάσεων perceptron (συμπεριλαμβανόμενων των πινάκων βάρους) κατά τη μετάβαση ενός πλαισίου εκτέλεσης ανάμεσα στο πρώτο στοιχείο επεξεργασίας και το δεύτερο στοιχείο επεξεργασίας, γεγονός που μπορεί να μειώσει τις επιπτώσεις όσον αφορά στην απόδοση από τη μετάβαση του πλαισίου. Κατά τη μετάβαση ενός πλαισίου εκτέλεσης από το δεύτερο στοιχείο επεξεργασίας στο πρώτο στοιχείο επεξεργασίας, τότε ενώ ο τουλάχιστον ένας πίνακας βάρους μπορεί να μεταφέρεται από τη δεύτερη διάταξη πρόβλεψης κλάδου στη διάταξη πρόβλεψης μετάπτωσης της πρώτης διάταξης πρόβλεψης κλάδου, οι πίνακες πρόβλεψης TAGE μπορούν να αρχικοποιούνται στις αρχικές τιμές οι οποίες είναι ανεξάρτητες από την κατάσταση της δεύτερης διάταξης πρόβλεψης κλάδου. Αυτό μπορεί να είναι παρόμοιο με την περίπτωση κατά την οποία, μετά από ένα συμβάν επαναφοράς κατάστασης, η διάταξη πρόβλεψης κλάδου TAGE αρχικοποιείται στις προεπιλεγμένες τιμές εφόσον η κατάστασή της δεν έχει αποθηκευτεί στην προσωρινή μνήμη καταστάσεων κλάδου. Αφετέρου, όταν ένα πλαίσιο εκτέλεσης μεταβαίνει από το πρώτο στοιχείο επεξεργασίας στο δεύτερο στοιχείο επεξεργασίας, τότε ενώ ο τουλάχιστον ένας πίνακας βάρους μπορεί να μεταφέρεται από τη διάταξη πρόβλεψης μετάπτωσης (διάταξη πρόβλεψης perceptron) της πρώτης διάταξης πρόβλεψης κλάδου TAGE στη δεύτερη διάταξη πρόβλεψης κλάδου, οι πίνακες πρόβλεψης TAGE της διάταξης πρόβλεψης κλάδου TAGE μπορεί να ακυρώνονται ή απενεργοποιούνται . In some examples, the second branch predictor may include a perception predictor that corresponds in design to the transition predictor of the TAGE branch predictor. For example the second branch predictor could have exactly the same configuration of weight tables (same number of tables and same size of tables) as the transition predictor of the TAGE branch predictor used by the first processing element. This can make the execution frame transition between the first and second processing elements much clearer since it is possible to simply copy all perceptron states (including the weight matrices) when transitioning an execution frame between the first processing element and the second element processing, which can reduce the performance impact of frame switching. When transitioning an execution frame from the second processing element to the first processing element, then while the at least one weight table may be transferred from the second branch predictor to the transition predictor of the first branch predictor, the TAGE prediction tables may be initialized in initial values which are independent of the state of the second branch predictor. This can be similar to the case where, after a state reset event, the TAGE branch predictor is initialized to default values since its state has not been cached in the branch state memory. On the other hand, when an execution frame transitions from the first processing element to the second processing element, then while the at least one weight table may be transferred from the transition predictor (perceptron predictor) of the first branch predictor TAGE to the second branch predictor, the TAGE prediction tables of the TAGE industry predictor may be invalidated or disabled.

Παραδείγματα Examples

Το Σχήμα 1 απεικονίζει σχηματικά ένα παράδειγμα μιας συσκευής επεξεργασίας δεδομένων 2 με ένα σωληναγωγό επεξεργασίας που περιλαμβάνει έναν αριθμό σταδίων σωληναγωγού. Ο σωληναγωγός περιλαμβάνει μια διάταξη πρόβλεψης κλάδου 4 για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης και τη δημιουργία μιας σειράς διευθύνσεων προσκόμισης των προς προσκόμιση εντολών. Ένα στάδιο προσκόμισης 6 προσκομίζει τις εντολές που προσδιορίζονται από τις διευθύνσεις προσκόμισης από μια κρυφή μνήμη εντολών 8. Ένα στάδιο αποκωδικοποίησης 10 αποκωδικοποιεί τις εντολές που προσκομίστηκαν για τη δημιουργία πληροφοριών ελέγχου για τον έλεγχο των επακόλουθων σταδίων του σωληναγωγού. Ένα στάδιο μετονομασίας 12 πραγματοποιεί μετονομασία καταχωρητών για την αντιστοίχιση των προσδιοριστών αρχιτεκτονικών καταχωρητών που προσδιορίζονται από τις εντολές σε προσδιοριστές φυσικών καταχωρητών που προσδιορίζουν τους καταχωρητές 14 που παρέχονται στο υλικό. Η μετονομασία των καταχωρητών μπορεί να χρησιμεύει στην υποστήριξη εκτέλεσης εκτός σειράς εφόσον αυτό μπορεί να δίνει τη δυνατότητα εξάλειψης των κινδύνων ανάμεσα στις εντολές που προσδιορίζουν τον ίδιο αρχιτεκτονικό καταχωρητή αντιστοιχώντας τους σε διαφορετικούς φυσικούς καταχωρητές στο αρχείο καταχωρητών υλικού, ώστε να αυξάνεται η πιθανότητα εκτέλεσης των εντολών με διαφορετική σειρά από τη σειρά προγράμματος τους με την οποία προσκομίστηκαν από την κρυφή μνήμη 8, γεγονός που μπορεί να βελτιώνει την απόδοση κάνοντας δυνατή την εκτέλεση μιας μεταγενέστερης εντολής ενώ μια πρότερη εντολή αναμένει για τη διαθεσιμότητα ενός τελεστή. Η δυνατότητα αντιστοίχισης των αρχιτεκτονικών καταχωρητών σε διάφορους φυσικούς καταχωρητές μπορεί επίσης να διευκολύνει την επαναφορά της αρχιτεκτονικής κατάστασης σε περίπτωση μιας λανθασμένης πρόβλεψης κλάδου. Ένα στάδιο έκδοσης 16 τοποθετεί σε σειρά τις εντολές που αναμένουν εκτέλεση μέχρι οι απαιτούμενοι τελεστές για την επεξεργασία αυτών των εντολών γίνουν διαθέσιμοι στους καταχωρητές 14. Ένα στάδιο εκτέλεσης 18 εκτελεί τις εντολές για την εκτέλεση των αντίστοιχων λειτουργιών επεξεργασίας. Ένα στάδιο ετερόχρονης εγγραφής 20 εγγράφει και πάλι τα αποτελέσματα των εκτελεσμένων εντολών στους καταχωρητές 14. Figure 1 schematically illustrates an example of a data processing device 2 with a processing pipeline comprising a number of pipeline stages. The pipeline includes a branch predictor 4 for predicting the results of branch instructions and generating a sequence of present addresses of the instructions to present. A fetch stage 6 fetches the commands identified by the fetch addresses from an instruction cache 8. A decode stage 10 decodes the fetched commands to generate control information to control subsequent pipeline stages. A renaming stage 12 performs register renaming to map the architectural register specifiers specified by the instructions to physical register specifiers that specify the registers 14 provided in the hardware. Renaming registers can be useful to support out-of-order execution as this can enable de-risking between instructions that specify the same architectural register by mapping them to different physical registers in the hardware register file to increase the probability that the instructions will execute in a different order than their program order in which they were fetched from cache 8, which can improve performance by allowing a later instruction to execute while an earlier instruction is waiting for an operand to become available. The ability to map architectural registers to different physical registers can also make it easier to restore the architectural state in the event of an incorrect branch prediction. An issue stage 16 queues the instructions awaiting execution until the required operators to process those instructions become available in the registers 14. An execution stage 18 executes the instructions to perform the corresponding processing operations. An asynchronous write stage 20 again writes the results of the executed instructions into the registers 14.

Το στάδιο εκτέλεσης 18 μπορεί να περιλαμβάνει έναν αριθμό μονάδων εκτέλεσης όπως μια μονάδα κλάδου 21 για την αξιολόγηση κατά πόσο έχουν προβλεφθεί σωστά οι εντολές διακλάδωσης, μια ALU (arithmetic logic unit ή μονάδα αριθμητικής λογικής) 22 για την πραγματοποίηση αριθμητικών ή λογικών λειτουργιών, μια μονάδα κινητής υποδιαστολής 24 για την πραγματοποίηση λειτουργιών με τη χρήση τελεστών κινητής υποδιαστολής και μια μονάδα φόρτωσης/αποθήκευσης 26 για την πραγματοποίηση λειτουργιών φόρτωσης για τη φόρτωση δεδομένων από ένα σύστημα μνήμης στους καταχωρητές 14 ή λειτουργιών αποθήκευσης για την αποθήκευση δεδομένων από τους καταχωρητές 14 στο σύστημα μνήμης. Στο παρόν παράδειγμα το σύστημα μνήμης περιλαμβάνει μια κρυφή μνήμη εντολών επιπέδου ένα 8, μια κρυφή μνήμη δεδομένων επιπέδου ένα 30, μια κρυφή μνήμη επιπέδου δύο 32 η οποία χρησιμοποιείται από κοινού ανάμεσα σε δεδομένα και εντολές και μια κύρια μνήμη 34, όμως θα εκτιμηθεί ότι αυτό είναι απλά ένα παράδειγμα μιας δυνατής ιεραρχίας μνήμης ενώ άλλες υλοποιήσεις μπορούν να έχουν περαιτέρω επίπεδα κρυφής μνήμης ή μια διαφορετική διάταξη. Η πρόσβαση στη μνήμη μπορεί να ελέγχεται με τη χρήση μιας μονάδας διαχείρισης μνήμης (memory management unit ή MMU) 35 για τον έλεγχο μετάφρασης των διευθύνσεων και/ή την προστασία της μνήμης. Η μονάδα φόρτωσης/αποθήκευσης 26 μπορεί να χρησιμοποιεί μια προσωρινή μνήμη translation lookaside buffer (TLB) 36 της MMU 35 για την αντιστοίχιση των εικονικών διευθύνσεων που παράγονται από το σωληναγωγό με φυσικές διευθύνσεις που προσδιορίζουν θέσεις εντός του συστήματος μνήμης. Θα εκτιμηθεί ότι ο σωληναγωγός που δείχνεται στο Σχήμα 1 είναι απλά ένα παράδειγμα ενώ άλλα παραδείγματα μπορούν να έχουν διαφορετικά σύνολα σταδίων σωληναγωγού ή μονάδων εκτέλεσης. Για παράδειγμα, ένας επεξεργαστής εντός σειράς μπορεί να μην έχει στάδιο μετονομασίας 12. The execution stage 18 may include a number of execution units such as a branch unit 21 for evaluating whether branch instructions have been correctly predicted, an ALU (arithmetic logic unit) 22 for performing arithmetic or logic operations, a floating point 24 for performing operations using floating point operators and a load/store unit 26 for performing load operations to load data from a memory system into registers 14 or store operations to store data from registers 14 into the memory system . In the present example the memory system includes a level one instruction cache 8, a level one data cache 30, a level two cache 32 which is shared between data and instructions, and a main memory 34, but it will be appreciated that this is simply an example of a possible memory hierarchy while other implementations may have further cache levels or a different layout. Memory access may be controlled using a memory management unit (MMU) 35 to control address translation and/or memory protection. The load/store unit 26 may use a translation lookaside buffer (TLB) 36 of the MMU 35 to map the virtual addresses produced by the pipeline to physical addresses specifying locations within the memory system. It will be appreciated that the pipeline shown in Figure 1 is simply an example while other examples may have different sets of pipeline stages or execution units. For example, an in-line processor may not have a rename stage of 12.

Η διάταξη πρόβλεψης κλάδου 4 μπορεί να περιλαμβάνει δομές για την πρόβλεψη διάφορων αποτελεσμάτων εντολών διακλάδωσης. Για παράδειγμα η διάταξη πρόβλεψης κλάδου 4 μπορεί να περιλαμβάνει μια διάταξη πρόβλεψης κατεύθυνσης κλάδου η οποία προβλέπει κατά πόσο θα πρέπει να ακολουθούνται ή να μην ακολουθούνται οι υπό συνθήκη κλάδοι. Ένα άλλο στοιχείο των αποτελεσμάτων κλάδου το οποίο μπορεί να προβλέπεται μπορεί να είναι η διεύθυνση στόχου ενός κλάδου. Για παράδειγμα, ορισμένες εντολές διακλάδωσης υπολογίζουν τη διεύθυνση στόχου έμμεσα με βάση τις τιμές που αποθηκεύονται στους καταχωρητές 14 κι επομένως μπορούν να διακλαδώνονται προς διευθύνσεις οι οποίες δεν είναι ντετερμινιστικά γνωστές από τον ίδιο τον κώδικα του προγράμματος. Η προσωρινή μνήμη στόχου κλάδου (branch target buffer ή ΒΤΒ) (γνωστή και ως κρυφή μνήμη διευθύνσεων στόχου κλάδου (branch target address cache ή BTAC)) μπορεί να είναι ένα τμήμα της διάταξης πρόβλεψης κλάδου 4 το οποίο έχει έναν αριθμό καταχωρήσεων κάθε μια από τις οποίες παρέχει μια πρόβλεψη της διεύθυνσης στόχου κάθε διακλάδωσης που παρουσιάζεται εντός μιας δεδομένης ομάδας εντολών. Προαιρετικά η ΒΤΒ ή η BTAC μπορεί επίσης να παρέχει και άλλες πληροφορίες για τους κλάδους, όπως μια πρόβλεψη του συγκεκριμένου τύπου κλάδου (π.χ., κλήση συνάρτησης, επιστροφή συνάρτησης, κλπ.). Και πάλι, οι προβλέψεις που πραγματοποιούνται από την BTB/BTAC μπορούν να βελτιώνονται με βάση τα πραγματικά αποτελέσματα κλάδου 44 που προσδιορίζονται για τις εκτελεσμένες εντολές διακλάδωσης από τη μονάδα κλάδου 21 του σταδίου εκτέλεσης. The branch predictor 4 may include structures for predicting various results of branch instructions. For example the branch predictor 4 may include a branch direction predictor which predicts whether or not the conditional branches should be followed. Another component of branch results that can be predicted can be a branch's target address. For example, some branch instructions calculate the target address indirectly based on values stored in registers 14 and thus may branch to addresses that are not deterministically known by the program code itself. The branch target buffer (BTB) (also known as the branch target address cache (BTAC)) may be a portion of the branch predictor 4 which has a number of entries each of which provide a prediction of the target address of each branch that occurs within a given instruction group. Optionally the BTB or BTAC may also provide other branch information, such as a prediction of the specific branch type (eg, function call, function return, etc.). Again, the predictions made by the BTB/BTAC can be refined based on the actual branch results 44 determined for the executed branch instructions by the execution stage branch unit 21 .

Ο σωληναγωγός επεξεργασίας που δείχνεται στο Σχήμα 1 μπορεί να υποστηρίζει την εκτέλεση ενός αριθμού διαφορετικών φορτίων εργασίας λογισμικού (πλαίσια εκτέλεσης). Τα φορτία εργασίας λογισμικού θα μπορούσαν να περιλαμβάνουν διαφορετικές διαδικασίες που εκτελούνται σύμφωνα με διαφορετικό κώδικα προγράμματος ή θα μπορούσαν να περιλαμβάνουν πολλαπλά νήματα που αντιστοιχούν στην ίδια διαδικασία. Επίσης, σε ορισμένες περιπτώσεις διαφορετικά τμήματα μιας διαδικασίας θα μπορούσαν να θεωρούνται ως διαφορετικά φορτία εργασίας, για παράδειγμα ορισμένες περιοχές διευθύνσεων εντός της διαδικασίας θα μπορούσαν να σημειώνονται ως ένα ξεχωριστό φορτίο εργασίας. The processing pipeline shown in Figure 1 can support the execution of a number of different software workloads (execution contexts). Software workloads could include different processes executing according to different program code, or they could include multiple threads corresponding to the same process. Also, in some cases different parts of a process could be considered as different workloads, for example some address ranges within the process could be marked as a separate workload.

Όταν διαφορετικές διαδικασίες εκτελούνται στον ίδιο σωληναγωγό, συνήθως η διάταξη πρόβλεψης κλάδου 4 χρησιμοποιείται από κοινού ανάμεσα σε αυτές τις διαδικασίες. Εφόσον οι διαφορετικές διαδικασίες μπορεί να έχουν διαφορετική συμπεριφορά κλάδου στην ίδια διεύθυνση εντολής, αυτό μπορεί να σημαίνει ότι η αναζήτηση στις δομές διάταξης πρόβλεψης κλάδου για μια δεδομένη διεύθυνση εντολής θα μπορούσε να παρέχει μια προβλεφθείσα συμπεριφορά η οποία μπορεί να μην είναι σχετική με μια διαδικασία επειδή έχει εκπαιδευτεί με βάση μια άλλη διαδικασία. Συνήθως, οι λανθασμένες προβλέψεις κλάδου που προκαλούνται από την πρόσβαση μιας διαδικασίας σε μια καταχώρηση πρόβλεψης κλάδου η οποία εκπαιδεύτηκε από μια άλλη διαδικασία θα θεωρούνταν απλά ως ένα ζήτημα που επηρεάζει την απόδοση και όχι την ασφάλεια, εφόσον εάν η πρόβλεψη είναι λανθασμένη τότε αυτό θα ανιχνευθεί όταν ο κλάδος εκτελεστεί πραγματικά στη μονάδα κλάδου 21 και τότε η μονάδα κλάδου μπορεί να διεγείρει το σωληναγωγό ώστε να απορρίπτει τις επακόλουθες εντολές που προσκομίζονται λανθασμένα με βάση τη λανθασμένη πρόβλεψη, ενώ η κατάσταση του επεξεργαστή μπορεί να επανέρχεται στην τελευταία σωστή κατάσταση που προκύπτει από την τελευταία σωστά προβλεφθείσα εντολή. When different processes are running on the same pipeline, usually branch predictor 4 is shared between those processes. Since different processes may have different branch behavior at the same instruction address, this may mean that searching the branch predictor structures for a given instruction address could provide a predicted behavior that may not be relevant to a process because it has been trained based on another procedure. Typically, incorrect branch predictions caused by a process accessing a branch prediction entry that was trained by another process would simply be considered a performance-affecting issue rather than a security issue, since if the prediction is incorrect then this will be detected when the branch is actually executed on branch unit 21 and then the branch unit can trigger the pipeline to reject subsequent instructions that are incorrectly served based on the incorrect prediction, while the processor state can be reset to the last correct state resulting from the last correctly predicted command.

Ωστόσο, ενώ οι αρχιτεκτονικές επιπτώσεις μιας λανθασμένης πρόβλεψης μπορούν να αναστρέφονται, η λανθασμένη πρόβλεψη μπορεί να προκαλεί πιο μακροχρόνιες επιπτώσεις στη μικρο-αρχιτεκτονική κατάσταση όπως η κρυφή μνήμη δεδομένων 30 ή η TLB 36. Πρόσφατα αναγνωρίστηκε ότι είναι δυνατόν ένας επιτιθέμενος να εκμεταλλευθεί τη διάταξη πρόβλεψης κλάδου 4 ώστε να επιτύχει την πρόσβαση σε μυστικές πληροφορίες στις οποίες ο επιτιθέμενος δε θα έπρεπε να έχει πρόσβαση. Η μονάδα διαχείρισης μνήμης 35 μπορεί να εφαρμόζει ένα σχήμα προνομίων ώστε να επιτρέπεται μόνο στις διαδικασίες που εκτελούνται σε ορισμένα επίπεδα προνομίων η πρόσβαση σε ορισμένες περιοχές της μνήμης. Για παράδειγμα, ορισμένα μυστικά δεδομένα μπορεί να μην είναι προσβάσιμα στη διαδικασία του επιτιθέμενου (π.χ. επειδή η διαδικασία του επιτιθέμενου εκτελείται σε χαμηλότερο επίπεδο προνομίων), αλλά μπορεί να είναι προσβάσιμα σε μια διαδικασία που λειτουργεί σε ένα υψηλότερο επίπεδο προνομίων όπως ένα λειτουργικό σύστημα ή έναν επόπτη. Τα μυστικά δεδομένα μπορεί να είναι οποιαδήποτε δεδομένα τα οποία θεωρούνται ευαίσθητα, όπως ένας κωδικός πρόσβασης, προσωπικά οικονομικά στοιχεία, κλπ. Η επίθεση μπορεί να βασίζεται στην εκπαίδευση της διάταξης πρόβλεψης κλάδου 4 ώστε ένας κλάδος εντός του κώδικα-θύματος που εκτελείται σε μια πιο προνομιακή κατάσταση του επεξεργαστή να διακλαδώνεται προς κάποιον κώδικα επινόησης τον οποίο ο πιο προνομιακός κώδικας-θύμα δεν πρέπει να εκτελεί, αλλά εκτελείται λανθασμένα λόγω μιας λανθασμένης πρόβλεψης κλάδου σε έναν κλάδο του κώδικα-θύματος ο οποίος δε σχετίζεται με το μυστικό. Ο κώδικας επινόησης μπορεί να έχει σχεδιαστεί από τον επιτιθέμενο ώστε να αποκτά πρόσβαση σε μια διεύθυνση μνήμης η οποία υπολογίζεται με βάση τα μυστικά δεδομένα, ώστε τα δεδομένα (ή άλλες πληροφορίες όπως οι καταχωρήσεις TLB) που σχετίζονται με μια διεύθυνση μνήμης η οποία εξαρτάται από τα μυστικά δεδομένα να φορτώνονται σε μια από τις κρυφές μνήμες 30, 32, 36, 42 του συστήματος επεξεργασίας δεδομένων. Η διεύθυνση η οποία φορτώθηκε μπορεί στη συνέχεια να συνάγεται μέσω ανάλυσης χρονισμού της κρυφής μνήμης και αυτό μπορεί να δίνει τη δυνατότητα συναγωγής των πληροφοριών για το μυστικό. However, while the architectural effects of a misprediction can be reversed, the misprediction can cause longer-lasting effects on micro-architectural state such as the data cache 30 or the TLB 36. It has recently been recognized that it is possible for an attacker to exploit the prediction arrangement. branch 4 to gain access to secret information that the attacker should not have access to. The memory management module 35 may implement a privilege scheme to allow only processes running at certain privilege levels to access certain areas of memory. For example, some secret data may not be accessible to the attacker's process (e.g., because the attacker's process is running at a lower privilege level), but may be accessible to a process running at a higher privilege level such as an operating system or a supervisor. Secret data can be any data that is considered sensitive, such as a password, personal financial information, etc. The attack can be based on training the branch predictor 4 so that a branch within the victim code running on a more privileged state of the processor branching to some contrived code that the most privileged victim code should not be executing, but is executing incorrectly due to an incorrect branch prediction in a branch of the victim code unrelated to the secret. Deception code can be designed by the attacker to access a memory address that is computed based on the secret data, so that the data (or other information such as TLB entries) associated with a memory address that depends on the secret data to be loaded into one of the caches 30, 32, 36, 42 of the data processing system. The loaded address can then be deduced through cache timing analysis, and this can enable the secret information to be deduced.

Μια πιθανή αντιμετώπιση για αυτούς τους τύπους επιθέσεων μπορεί να είναι η απόρριψη της κατάστασης πρόβλεψης κλάδου από τη διάταξη πρόβλεψης κλάδου κάθε φορά που συμβαίνει μια μεταγωγή πλαισίου εκτέλεσης, όμως αυτή η προσέγγιση μπορεί να έχει κόστος, επειδή κάθε φορά που επιστρέφει μια δεδομένη διαδικασία για μια άλλη θυρίδα εκτέλεσης τότε μπορεί να έχει να συνάγει και πάλι την κατάσταση πρόβλεψης κλάδου της από το μηδέν, γεγονός που μπορεί να προκαλεί πολλές επιπλέον λανθασμένες προβλέψεις οι οποίες έχουν επίπτωση στην απόδοση. A possible countermeasure for these types of attacks might be to discard the branch prediction state from the branch predictor every time an execution context switch occurs, but this approach can come at a cost, because every time a given process returns for a another execution slot may then have to infer its branch prediction state from scratch again, which can cause many additional mispredictions that impact performance.

Όπως δείχνεται στο Σχήμα 1, η επιβάρυνση από την αντιμετώπιση των επιθέσεων που εξετάζεται παραπάνω μπορεί να ελαττώνεται παρέχοντας στη διάταξη πρόβλεψης κλάδου 4 μια προσωρινή μνήμη καταστάσεων κλάδου (BSB) 40 στην οποία είναι δυνατή η αποθήκευση της κατάστασης πρόβλεψης κλάδου από το κύριο χώρο αποθήκευσης καταστάσεων πρόβλεψης 42 (χρησιμοποιείται από τη διάταξη πρόβλεψης κλάδου 4 για την αποθήκευση της ενεργής κατάστασης που χρησιμοποιείται για τη δημιουργία των πραγματικών προβλέψεων κλάδου) και από την οποία είναι δυνατή η επαναφορά προηγουμένως αποθηκευμένων καταστάσεων στο χώρο αποθήκευσης καταστάσεων πρόβλεψης 42. Η ενεργή κατάσταση πρόβλεψης κλάδου στο χώρο αποθήκευσης καταστάσεων πρόβλεψης 42 εκπαιδεύεται με βάση τα πραγματικά αποτελέσματα κλάδου 44 που προσδιορίζονται από τη μονάδα κλάδου 21. Σε απόκριση διαφόρων συμβάντων αποθήκευσης ή επαναφοράς κατάστασης, η κατάσταση μπορεί να αποθηκεύεται από το χώρο αποθήκευσης καταστάσεων πρόβλεψης 42 στην BSB 40 ή να επαναφέρεται από την BSB 40 στο χώρο αποθήκευσης καταστάσεων πρόβλεψης 42. Η BSB 40 μπορεί να τοποθετεί ετικέτες στα αποθηκευμένα τμήματα των καταστάσεων με ένα αναγνωριστικό του πλαισίου εκτέλεσης που σχετίζεται με αυτή την κατάσταση ώστε, σε ένα συμβάν επαναφοράς που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης, η κατάσταση η οποία είναι σχετική με αυτό το πλαίσιο να επαναφέρεται, ώστε να αποφεύγεται η πραγματοποίηση προβλέψεων από ένα πλαίσιο εκτέλεσης με βάση την κατάσταση που εκπαιδεύτηκε από ένα άλλο πλαίσιο εκτέλεσης. Κατά τη μεταγωγή ενός πλαισίου εκτέλεσης η οποία υποδηλώνεται από το σήμα 46, η ενεργή κατάσταση πρόβλεψης στην κατάσταση πρόβλεψης 42 που σχετίζεται με το εξερχόμενο πλαίσιο εκτέλεσης μπορεί να απορρίπτεται, ακυρώνεται ή απενεργοποιείται με κάποιο τρόπο ώστε να αποτραπεί η χρήση της για την πραγματοποίηση προβλέψεων για το εισερχόμενο πλαίσιο, ενώ η επαναφορά της κατάστασης από την BSB 40 μπορεί να χρησιμοποιείται για τη μείωση των επιπτώσεων στην απόδοση από αυτή την απόρριψη. As shown in Figure 1, the overhead of dealing with the attacks discussed above can be reduced by providing the branch predictor 4 with a branch state buffer (BSB) 40 in which the branch prediction state from the main state store can be stored forecast 42 (used by the branch forecaster 4 to store the active state used to generate the actual branch forecasts) and from which previously saved states can be restored to the forecast state store 42. The active branch forecast state in prediction state store 42 is trained based on actual branch results 44 determined by branch unit 21. In response to various state save or restore events, state may be stored from the prediction state store 42 in BSB 40 or restored from BSB 40 to prediction state storage 42. BSB 40 may tag the stored portions of the states with an identifier of the execution context associated with that state so that, on a reset event associated with a given execution context, the state that is relevant to that context be reset to avoid making predictions from one execution context based on the state trained by another execution context. When switching an execution frame indicated by signal 46, the active prediction state in the prediction state 42 associated with the outgoing execution frame may be discarded, invalidated, or disabled in some way to prevent it from being used to make predictions for the incoming frame, while state reset by BSB 40 can be used to reduce the performance impact of this discard.

Το Σχήμα 2 δείχνει ένα παράδειγμα της διάταξης πρόβλεψης κλάδου 4 σε μεγαλύτερη λεπτομέρεια. Το παράδειγμα του Σχήματος 2 εφαρμόζεται σε μια διάταξη πρόβλεψης κατεύθυνσης κλάδου για την πρόβλεψη κατά πόσο ακολουθούνται ή δεν ακολουθούνται οι κλάδοι, όμως θα εκτιμηθεί ότι και παρόμοιες τεχνικές θα μπορούσαν να χρησιμοποιηθούν για μια κρυφή μνήμη διευθύνσεων στόχου κλάδων ή ΒΤΒ. Η διάταξη πρόβλεψης κλάδου 4 μπορεί να περιλαμβάνει έναν αριθμό μονάδων διατάξεων πρόβλεψης 50, 51 οι οποίες παρέχουν διαφορετικές προβλέψεις, με βάση διάφορες μεθόδους πρόβλεψης. Για παράδειγμα, οι μονάδες διατάξεων πρόβλεψης μπορούν να περιλαμβάνουν μια κύρια διάταξη πρόβλεψης (για παράδειγμα μια διάταξη πρόβλεψης TAGE 50), όπως και πρόσθετες υποδιατάξεις πρόβλεψης 50 οι οποίες μπορούν να παρέχουν προβλέψεις για συγκεκριμένα σενάρια, όπως η ανίχνευση κλάδων που εμπλέκονται σε βρόχους. Η διάταξη πρόβλεψης TAGE 50 μπορεί η ίδια να περιλαμβάνει πολλαπλές μονάδες πρόβλεψης 51, όπως οι γεωμετρικοί πίνακες ιστορικού με ετικέτα (TAGE) που χρησιμοποιούνται για τη δημιουργία μιας κύριας πρόβλεψης και μια διάταξη πρόβλεψης μετάπτωσης (αναφέρεται και παρακάτω ως βασική διάταξη πρόβλεψης) που χρησιμοποιείται για την παροχή μιας πρόβλεψης μετάπτωσης σε περίπτωση που οι πίνακες TAGE αδυνατούν να παρέχουν μια κατάλληλη πρόβλεψη. Η διάταξη πρόβλεψης μετάπτωσης θα μπορούσε να είναι μια δισταθής διάταξη πρόβλεψης ή μια διάταξη πρόβλεψης perceptron όπως εξετάζεται παρακάτω. Σε γενικές γραμμές, πραγματοποιείται αναζήτηση σε κάθε μια από τις μονάδες διατάξεων πρόβλεψης 50, 51 με βάση τις πληροφορίες αναζήτησης οι οποίες προκύπτουν ως συνάρτηση του απαριθμητή προγράμματος (program counter ή PC) ο οποίος αντιπροσωπεύει μια διεύθυνση εντολής στόχου για την οποία απαιτείται μια πρόβλεψη και /ή του προηγούμενου ιστορικού εκτέλεσης το οποίο αντιπροσωπεύει ένα ιστορικό συμπεριφοράς εκτέλεσης που οδηγεί στην εντολή που σχετίζεται με τη διεύθυνση του απαριθμητή προγράμματος. Για παράδειγμα το ιστορικό εκτέλεσης θα μπορούσε να περιλαμβάνει μια ακολουθία ενδείξεων λήψης/μη λήψης για έναν αριθμό κλάδων οδηγώντας στην εντολή που αντιπροσωπεύεται από τον απαριθμητή προγράμματος ή τμήματα μιας ή περισσότερων διευθύνσεων προηγουμένως εκτελεσθέντων εντολών ή θα μπορούσε να αντιπροσωπεύει ένα ιστορικό κλήσεων στοίβας που αντιπροσωπεύει μια ακολουθία κλήσεων συναρτήσεων οι οποίες οδήγησαν στην εντολή που αντιπροσωπεύεται από τον απαριθμητή προγράμματος. Το ιστορικό εκτέλεσης θα μπορούσε επίσης να περιλαμβάνει μια ένδειξη του πόσο νωρίτερα απαντήθηκε προηγουμένως ο κλάδος (π.χ. αριθμός εντολών που παρεμβάλλονται ή εντολών διακλάδωσης που παρεμβάλλονται). Με την εξέταση ορισμένων απόψεων του ιστορικού που οδηγεί σε μια δεδομένη διεύθυνση απαριθμητή προγράμματος επιπλέον της ίδιας της διεύθυνσης, αυτό μπορεί να παρέχει μια ακριβέστερη πρόβλεψη για τους κλάδους οι οποίοι μπορεί να έχουν διαφορετική συμπεριφορά ανάλογα την ακολουθία προηγούμενης εκτέλεσης. Οι διάφορες μονάδες διατάξεων πρόβλεψης 50, 51 μπορεί να εξετάζουν διαφορετικά τμήματα των πληροφοριών αναζήτησης για τον προσδιορισμό της πρόβλεψης. Ένας επιλογέας 52 μπορεί στη συνέχεια να επιλέγει ανάμεσα στις εναλλακτικές προβλέψεις που παρέχονται από κάθε μονάδα διάταξης πρόβλεψης, ανάλογα από ένα επίπεδο εμπιστοσύνης σε αυτές τις προβλέψεις και/ή άλλους παράγοντες. Για παράδειγμα, η διάταξη πρόβλεψης μετάπτωσης θα μπορούσε να επιλέγεται σε περιπτώσεις στις οποίες η κύρια διάταξη πρόβλεψης TAGE αδυνατεί να παρέχει μια πρόβλεψη επαρκώς υψηλής εμπιστοσύνης. Figure 2 shows an example of the branch predictor 4 in greater detail. The example of Figure 2 applies to a branch direction predictor for predicting whether or not branches are followed, but it will be appreciated that similar techniques could be used for a branch target address cache or BTB. The branch prediction device 4 may comprise a number of prediction device units 50, 51 which provide different predictions, based on different prediction methods. For example, predictor modules can include a main predictor (for example, a TAGE predictor 50 ), as well as additional predictor subarrays 50 which can provide predictions for specific scenarios, such as detecting branches involved in loops. The TAGE predictor 50 may itself include multiple predictor units 51, such as tagged history geometric matrices (TAGE) used to generate a master predictor and a transition predictor (also referred to below as a base predictor) used to providing a transition prediction in case the TAGE tables fail to provide a suitable prediction. The transition predictor could be a bistable predictor or a perceptron predictor as discussed below. In general, each of the prediction arrangement units 50, 51 is searched based on the search information which is derived as a function of the program counter (PC) which represents a target instruction address for which a prediction is required and /or the previous execution history which represents a history of execution behavior leading to the instruction associated with the address of the program counter. For example the execution history could include a sequence of fetch/no fetch pointers for a number of branches leading to the instruction represented by the program counter or portions of one or more addresses of previously executed instructions, or it could represent a stack call history representing a sequence of function calls that resulted in the instruction represented by the program counter. The execution history could also include an indication of how early the branch was previously answered (eg, number of commands interjected or branch commands interjected). By looking at some aspects of the history leading to a given program counter address in addition to the address itself, this can provide a more accurate prediction of branches that may behave differently depending on the sequence of previous execution. The various predictor units 50, 51 may examine different portions of the search information to determine the prediction. A selector 52 may then choose between the alternative forecasts provided by each forecasting unit, depending on a level of confidence in those forecasts and/or other factors. For example, the transition predictor could be selected in cases where the primary TAGE predictor fails to provide a sufficiently high confidence prediction.

Κάθε μια από τις μονάδες διατάξεων πρόβλεψης 50, 51 μπορεί να αποθηκεύει κάποια κατάσταση πρόβλεψης η οποία μπορεί να χρησιμοποιείται για την πραγματοποίηση προβλέψεων για το συγκριμένο πλαίσιο κλάδου που αντιπροσωπεύεται από τις πληροφορίες αναζήτησης. Γ ια παράδειγμα, κάθε μονάδα διάταξης πρόβλεψης μπορεί να περιλαμβάνει έναν πίνακα ο οποίος δεικτοδοτείται με βάση μια συνάρτηση τμημάτων των πληροφοριών αναζήτησης. Η συνάρτηση που χρησιμοποιείται για τη δημιουργία του δείκτη μπορεί να διαφέρει για τις αντίστοιχες μονάδες διατάξεων πρόβλεψης 50, 51. Ολόκληρο το σύνολο των καταστάσεων πρόβλεψης κλάδου που αποθηκεύονται σε κάθε μια από τις μονάδες διατάξεων πρόβλεψης 50, 51 μπορεί συλλογικά να θεωρείται ως ο χώρος αποθήκευσης των προβλέψεων κλάδου 42 της διάταξης πρόβλεψης κλάδου 4. Θα εκτιμηθεί ότι ο επιλογέας που δείχνεται στο Σχήμα 2 απλοποιείται και στην πράξη μπορεί να εξετάζει έναν αριθμό παραγόντων για τον προσδιορισμό της μονάδας διάταξης πρόβλεψης που θα χρησιμοποιηθεί ως βάση για την πρόβλεψη του πραγματικού κλάδου εξόδου. Each of the predictor units 50, 51 may store some prediction state which may be used to make predictions for the compared branch context represented by the search information. For example, each predictor unit may include an array which is indexed based on a function of portions of the lookup information. The function used to generate the index may differ for the respective prediction array units 50, 51. The entire set of branch prediction states stored in each of the prediction array units 50, 51 may collectively be considered as the storage space of branch predictions 42 of branch predictor 4. It will be appreciated that the selector shown in Figure 2 is simplified and in practice may consider a number of factors to determine the predictor unit to be used as a basis for predicting the actual output branch.

Όπως δείχνεται στο Σχήμα 2, μπορεί να παρέχεται ένα κύκλωμα ελέγχου απόρριψης/απενεργοποίησης 54 για τον έλεγχο των διαφόρων μονάδων πρόβλεψης κλάδου 50, 51 για την απόρριψη ή την απενεργοποίηση τμημάτων της ενεργής κατάστασης διατάξεων πρόβλεψης κλάδου όταν ανιχνεύεται μια μεταγωγή πλαισίου εκτέλεσης. Η μεταγωγή πλαισίου θα μπορούσε να ανιχνεύεται με βάση έναν αριθμό σημάτων εντός του σωληναγωγού επεξεργαστή που δείχνεται στο Σχήμα 1. Όταν η επεξεργασία μετάγεται ανάμεσα στα πλαίσια εκτέλεσης τότε παρέχεται ένα σήμα 46 στη διάταξη πρόβλεψης κλάδου 4 από οποιοδήποτε στοιχείο του σωληναγωγού το οποίο έχει δυνατότητα ανίχνευσης της μεταγωγής πλαισίου. Για παράδειγμα το στάδιο προσκόμισης 6 θα μπορούσε να αναγνωρίζει ότι οι διευθύνσεις προσκόμισης εντολών έχουν φτάσει μια διεύθυνση εντολής προγράμματος η οποία επισημαίνει το όριο μεταξύ των διαφόρων πλαισίων ή το στάδιο αποκωδικοποίησης 10 θα μπορούσε να ανιχνεύει ότι απαντήθηκε μια εντολή διαχωρισμού πλαισίων και να ενημερώνει τη διάταξη πρόβλεψης κλάδου για τη μεταγωγή πλαισίου. Επίσης, το στάδιο εκτέλεσης 18 θα μπορούσε να επισημαίνει τη μεταγωγή πλαισίου όταν ανιχνεύεται και να τη σηματοδοτεί στη διάταξη πρόβλεψης κλάδου 4. Επίσης σε ορισμένες περιπτώσεις η μεταγωγή πλαισίου μπορεί να διεγείρεται από μια διακοπή ή μια εξαίρεση και σε αυτή την περίπτωση το σήμα μεταγωγής 46 μπορεί να σηματοδοτείται από έναν ελεγκτή διακοπών. Ανεξάρτητα από την πηγή του σήματος μεταγωγής 46, σε απόκριση του σήματος μεταγωγής 46 ο χώρος αποθήκευσης των προβλέψεων κλάδου 42 μπορεί να ακυρώνει καταχωρήσεις. Συνεπώς, αυτό αποτρέπει τη χρήση οποιουδήποτε περιεχομένου των μονάδων διατάξεων πρόβλεψης 50 οι οποίες εκπαιδεύτηκαν σε ένα προηγουμένως εκτελεσθέν πλαίσιο για το νέο πλαίσιο μετά τη μεταγωγή του πλαισίου εκτέλεσης. As shown in Figure 2, a reject/disable control circuit 54 may be provided to control the various branch predictor units 50, 51 to reject or disable portions of the active state of branch predictors when an execution frame switch is detected. Frame switching could be detected based on a number of signals within the processor pipeline shown in Figure 1. When processing switches between execution frames then a signal 46 is provided to branch predictor 4 from any detectable element of the pipeline. of frame switching. For example presentation stage 6 could recognize that instruction presentation addresses have reached a program instruction address which marks the boundary between different frames, or decoding stage 10 could detect that a frame separation instruction has been answered and inform the layout branch prediction for frame switching. Also, the execution stage 18 could flag the frame switch when detected and signal it to the branch predictor 4. Also in some cases the frame switch may be triggered by an interrupt or an exception and in this case the switch signal 46 can be signaled by an interrupt controller. Regardless of the source of the switching signal 46, in response to the switching signal 46 the branch prediction store 42 may cancel entries. Therefore, this prevents any content of the prediction units 50 which were trained on a previously executed frame from being used for the new frame after the execution frame is switched.

Είτε σε απόκριση της ίδιας της μεταγωγής του πλαισίου εκτέλεσης, είτε κατά διαστήματα κατά την εκτέλεση ενός δεδομένου πλαισίου εκτέλεσης, ένα κύκλωμα αποθήκευσης καταστάσεων 56 μπορεί να συμπιέζει τουλάχιστον ένα τμήμα της κατάστασης πρόβλεψης κλάδου που αποθηκεύεται στο χώρο αποθήκευσης προβλέψεων κλάδου 42 και να εκχωρεί τη συμπιεσμένη κατάσταση σε μια προσωρινή μνήμη καταστάσεων κλάδου 40. Σε απόκριση ενός συμβάντος επαναφοράς κατάστασης, η προηγουμένως αποθηκευμένη κατάσταση πρόβλεψης κλάδου μπορεί να αποσυμπιέζεται από την προσωρινή μνήμη καταστάσεων κλάδου και να επαναφέρεται στο χώρο αποθήκευσης προβλέψεων κλάδου 42 από ένα κύκλωμα επαναφοράς κατάστασης 58. Τα συμβάντα αποθήκευσης και επαναφοράς καταστάσεων θα μπορούσαν να διεγείρονται από ένα εύρος συμβάντων όπως η εκτέλεση συγκεκριμένων εντολών που χρησιμοποιούνται για τη διέγερση της αποθήκευσης ή της επαναφοράς για τη διάταξη πρόβλεψης κλάδου, η παρέλευση ενός δεδομένου χρόνου ή ενός ορισμένου αριθμού κύκλων επεξεργασίας από την τελευταία αποθήκευση ή επαναφορά της κατάστασης ή η πραγματοποίηση μιας συγκεκριμένης ενημέρωσης της κατάστασης πρόβλεψης κλάδου η οποία ικανοποιεί μια συνθήκη (όπως η επίτευξη ενός δεδομένου επιπέδου εμπιστοσύνης) ώστε να είναι επιθυμητή η αποθήκευση ενός τμήματος αυτής της κατάστασης πρόβλεψης κλάδου στην προσωρινή μνήμη καταστάσεων κλάδου 40 ώστε να δίνεται η δυνατότητα επαναφοράς της αργότερα εάν απαιτηθεί όταν εκτελεστεί και πάλι το ίδιο πλαίσιο εκτέλεσης. Αυτό μπορεί να βοηθάει στη βελτίωση της απόδοσης μειώνοντας το κόστος απόρριψης όταν απαντάται μια μεταγωγή πλαισίου εκτέλεσης. Either in response to the execution frame switching itself, or periodically during the execution of a given execution frame, a state storage circuit 56 may compress at least a portion of the branch prediction state stored in branch prediction storage 42 and allocate the compressed state to a branch state cache 40. In response to a state reset event, the previously stored branch prediction state may be unzipped from the branch state cache and restored to the branch prediction store 42 by a state reset circuit 58. The store events and reset states could be triggered by a range of events such as the execution of specific commands used to trigger the save or reset for the branch predictor, the elapse of a given time or a certain number of processing cycles from since the last state save or restore, or making a specific update of the branch prediction state that satisfies a condition (such as reaching a given confidence level) so that it is desirable to store a portion of that branch prediction state in the branch state cache 40 to allow it to be reset later if required when the same execution box is executed again. This can help improve performance by reducing the discard cost when an execution frame switch is answered.

Τα Σχήματα 3 έως 6 δείχνουν έναν αριθμό τρόπων πραγματοποίησης της συμπίεσης μετά την αποθήκευση της κατάστασης και της αποσυμπίεσης μετά την επαναφορά της κατάστασης. Για παράδειγμα, το Σχήμα 3 δείχνει πως μπορεί να εφαρμόζεται μια οριζόντια συμπίεση σε έναν αριθμό καταχωρήσεων πρόβλεψης κλάδου 60 σε μια δεδομένη μονάδα από τις μονάδες διατάξεων πρόβλεψης κλάδου 50, 51 . Σε αυτό το παράδειγμα οι καταχωρήσεις πρόβλεψης κλάδου 60 δείχνονται ως δισταθείς καταχωρήσεις διάταξης πρόβλεψης οι οποίες παρέχουν απαριθμητές εμπιστοσύνης 2-bit για την ιχνηλάτηση της εμπιστοσύνης λήψης/μη λήψης. To bit 1 του απαριθμητή 2 bit μπορεί για παράδειγμα να υποδηλώνει κατά πόσο το αποτέλεσμα θα πρέπει να προβλέπεται ότι έχει ακολουθηθεί ή δεν έχει ακολουθηθεί και το bit 2 μπορεί να υποδηλώνει κατά πόσο η ισχύς της εμπιστοσύνης σε αυτή την πρόβλεψη λήψης ή μη λήψης θα πρέπει να ερμηνεύεται ως ισχυρής πρόβλεψης ή ασθενούς πρόβλεψης (π.χ. το 11 θα μπορούσε να υποδηλώνει ισχυρή ακολουθία, το 10 ασθενή ακολουθία, το 01 ασθενή μη ακολουθία και το 00 ισχυρή μη ακολουθία). Σε ένα παράδειγμα, το κύκλωμα αποθήκευσης καταστάσεων 56 μπορεί να εφαρμόζει μια συμπίεση ώστε ένα από τα bit κάθε απαριθμητή να απορρίπτεται, ώστε να συμπιέζεται η τιμή της κατάστασης πρόβλεψης μιας δεδομένης καταχώρησης 60 σε μια συμπιεσμένη τιμή με λιγότερα bit. Figures 3 through 6 show a number of ways to perform compression after saving state and decompressing after restoring state. For example, Figure 3 shows how a horizontal compression may be applied to a number of branch prediction entries 60 in a given unit of the branch prediction array units 50, 51 . In this example branch predictor registers 60 are shown as binary predictor registers which provide 2-bit confidence counters for tracking receive/no-receive confidence. Bit 1 of the 2-bit counter may for example indicate whether the outcome should be predicted to have followed or not followed and bit 2 may indicate whether the strength of confidence in that prediction of take or no take should be interpreted as strong prediction or weak prediction (eg 11 could indicate strong sequence, 10 weak sequence, 01 weak non-sequence and 00 strong non-sequence). In one example, the state storage circuit 56 may apply a compression so that one of the bits of each counter is discarded to compress the value of the prediction state of a given entry 60 into a compressed value with fewer bits.

Μολονότι το Σχήμα 3 δείχνει ένα παράδειγμα στο οποίο εφαρμόζεται η οριζόντια συμπίεση σε μια καταχώρηση δισταθούς διάταξης πρόβλεψης, θα μπορούσε επίσης να εφαρμόζεται και σε άλλους τύπους καταχωρήσεων πρόβλεψης κλάδου. Για παράδειγμα σε μια διάταξη πρόβλεψης perceptron, μπορεί να παρέχεται τουλάχιστον ένας πίνακας βαρών και με τη συμπίεση θα μπορούσε να μειώνεται ο αριθμός των bit που αναπαριστά το βάρος από ένα μεγαλύτερο αριθμό σε ένα μικρότερο αριθμό ώστε να μειώνεται η ανάλυση με την οποία αναπαρίστανται τα βάρη. Κατά την επαναφορά μιας συμπιεσμένης κατάστασης που είχε αποθηκευτεί προηγουμένως στην προσωρινή μνήμη καταστάσεων κλάδου 40, μπορεί να εφαρμόζεται μια αποσυμπίεση όπου η τιμή που επαναφέρεται επιλέγεται ως συνάρτηση της συμπιεσμένης τιμής. Για παράδειγμα, τα bit που δεν απορρίφθηκαν κατά τη συμπίεση μπορούν να επαναφέρονται με βάση τις τιμές που αποθηκεύονται στην προσωρινή μνήμη καταστάσεων τιμών 40, ενώ οποιαδήποτε άλλα bit κάθε καταχώρησης πρόβλεψης κλάδου τα οποία απορρίφθηκαν κατά τη συμπίεση μπορούν να ορίζονται σε κάποια τιμή X η οποία μπορεί να προσδιορίζεται με βάση τα συμπιεσμένα δεδομένα ή θα μπορούσαν να ορίζονται σε μια προεπιλεγμένη τιμή. Γ ια παράδειγμα, με μια δισταθή διάταξη πρόβλεψης η προεπιλογή θα μπορούσε να είναι ότι το bit 2 ορίζεται σε οποιαδήποτε τιμή υποδηλώνει ότι η πρόβλεψη λήψης/μη λήψης η οποία υποδηλώνεται από το bit 1 προβλέπεται ισχυρά (π.χ. με την παραπάνω κωδικοποίηση, το bit 2 θα μπορούσε να ορίζεται στην ίδια τιμή με το bit 1). Άλλες προσεγγίσεις θα μπορούσαν αντίθετα να αρχικοποιούν κάθε καταχώρηση ως ασθενώς προβλεφθείσα (π.χ. με ορισμό του bit 2 στο αντίθετο του bit 1). Μια άλλη προσέγγιση θα μπορούσε να ορίζει την ίδια τιμή (είτε 1 είτε 0) για το bit 2 σε όλες τις καταχωρήσεις ανεξάρτητα από την πρόβλεψη που υποδηλωνόταν από το bit 1. Συνεπώς, μολονότι η συμπίεση και η αποσυμπίεση μπορεί να έχουν ως αποτέλεσμα η κατάσταση πρόβλεψης από επαναφορά να μην παρουσιάζει το ίδιο επίπεδο εμπιστοσύνης με αυτό που ήταν παρόν πριν τη συμπίεση των δεδομένων κατάστασης, αυτό μπορεί να κάνει δυνατή τη μείωση της χωρητικότητας αποθήκευσης της συνολικής προσωρινής μνήμης καταστάσεων 40 και συνεπώς τη μείωση της επιβάρυνσης από την υλοποίηση της αποθήκευσης και της επαναφοράς πραγματοποιώντας ταυτόχρονα μια βελτίωση στην απόδοση σε σχέση με την περίπτωση στην οποία δεν αποθηκεύτηκε καμία κατάσταση. Although Figure 3 shows an example in which horizontal compression is applied to a bistable prediction array entry, it could also be applied to other types of branch prediction entries. For example in a perceptron prediction device, at least one weight table may be provided and compression could reduce the number of bits representing the weight from a larger number to a smaller number to reduce the resolution at which the weights are represented . When restoring a compressed state previously stored in branch state cache 40, a decompression may be applied where the value being restored is chosen as a function of the compressed value. For example, bits that were not discarded during compression can be reset based on the values stored in value state buffer 40, while any other bits of each branch prediction entry that were discarded during compression can be set to some value X which can be determined based on the compressed data or could be set to a default value. For example, with a bistable prediction arrangement the default could be that bit 2 is set to whatever value indicates that the receive/no-receive prediction denoted by bit 1 is strongly predicted (e.g. with the above encoding, bit 2 could be set to the same value as bit 1). Other approaches could instead initialize each entry as weakly predicted (eg by setting bit 2 to the opposite of bit 1). Another approach could be to set bit 2 to the same value (either 1 or 0) in all entries regardless of the prediction implied by bit 1. Therefore, although compression and decompression may result in the prediction from rollback not having the same level of confidence as was present before the state data was compressed, this may make it possible to reduce the storage capacity of the overall state cache 40 and thus reduce the implementation overhead of the storage and of the rollback while making a performance improvement over the case where no state was saved.

Όπως δείχνεται στο Σχήμα 4 ένα άλλο παράδειγμα συμπίεσης μπορεί να είναι η εφαρμογή μιας κάθετης συμπίεσης ώστε να μειώνεται ο αριθμός των καταχωρήσεων που αποθηκεύονται στην προσωρινή μνήμη καταστάσεων κλάδου σε σύγκριση με τον αριθμό των καταχωρήσεων πρόβλεψης κλάδου 60 οι οποίες παρέχονται στον αρχικό χώρο αποθήκευσης καταστάσεων πρόβλεψης 42. Και πάλι, το Σχήμα 4 δείχνει ένα παράδειγμα για μια δισταθή διάταξη πρόβλεψης όμως θα εκτιμηθεί ότι παρόμοιες τεχνικές θα μπορούσαν επίσης να εφαρμόζονται σε πίνακες που παρέχουν και άλλους τύπους καταστάσεων πρόβλεψης κλάδου. Σε αυτή την περίπτωση, η συμπίεση μπορεί να συγχωνεύει μια ομάδα καταχωρήσεων 62 σε μια μόνο καταχώρηση 64 στη συμπιεσμένη κατάσταση πρόβλεψης κλάδου. Για παράδειγμα, η συγχώνευση θα μπορούσε να πραγματοποιείται επιλέγοντας την τιμή πρόβλεψης κλάδου που αποθηκεύεται σε μια επιλεγμένη καταχώρηση από την ομάδα καταχωρήσεων 62 και καταγράφοντας αυτή την τιμή ως τη συγχωνευμένη καταχώρηση 64. Μια πιο εξελιγμένη προσέγγιση θα μπορούσε να είναι ο έλεγχος των τιμών κάθε καταχώρησης από την ομάδα καταχωρήσεων και ο προσδιορισμός της πλέον κοινής τιμής που αντιπροσωπεύεται από αυτές τις καταχωρήσεις της ομάδας (π.χ. με πλειοψηφική ψηφοφορία) και στη συνέχεια ο ορισμός της συγχωνευμένης καταχώρησης 64 στην τιμή που λαμβάνεται από την πλειοψηφία των μεμονωμένων καταχωρήσεων 60 στην ομάδα 62. Μετά την αποσυμπίεση της κατάστασης που αποθηκεύεται στην προσωρινή μνήμη καταστάσεων κλάδου 40, τότε κάθε μια από τις μεμονωμένες καταχωρήσεις 60 στην ίδια ομάδα 62 θα μπορούσαν να ορίζονται στην ίδια τιμή όπως υποδηλώνεται από τη συγχωνευμένη καταχώρηση 64 της συμπιεσμένης κατάστασης. Και πάλι, μολονότι αυτό μπορεί να παρουσιάσει κάποιο επίπεδο ανακρίβειας σε σχέση με την αρχική κατάσταση, αυτό κάνει ακόμη δυνατή τη βελτιωμένη απόδοση σε σύγκριση με την περίπτωση στην οποία δεν αποθηκεύεται καμία κατάσταση. Αυτή η προσέγγιση αναγνωρίζει ότι συχνά η συμπεριφορά κλάδου μπορεί να είναι σχετικά παρόμοια για έναν αριθμό καταχωρήσεων κι επομένως η απώλεια στην απόδοση που σχετίζεται με τη μη αντιπροσώπευση κάθε μιας από αυτές τις καταχωρήσεις στην προσωρινή μνήμη καταστάσεων κλάδου μπορεί να είναι σχετικά ασήμαντη. Μολονότι το Σχήμα 4 δείχνει ένα παράδειγμα στο οποίο τέσσερις γειτονικές καταχωρήσεις 60 του πίνακα 42 συγχωνεύονται σε μια μόνο συγχωνευμένη καταχώρηση 64, αυτό δεν είναι απαραίτητο και η ομάδα καταχωρήσεων που συγχωνεύεται σε μια μόνο συμπιεσμένη καταχώρηση θα μπορούσε να είναι σε μη συνεχόμενες θέσεις εντός του πίνακα. Αυτό μπορεί να είναι επωφελές επειδή είναι συχνό στις διατάξεις πρόβλεψης κλάδου για τον αλγόριθμο κατατεμαχισμού που χρησιμοποιείται για τη δημιουργία του δείκτη στον πίνακα να αντιστοιχεί τις κοντινές διευθύνσεις κλάδου σε αρκετά διακριτές περιοχές του πίνακα ώστε να μειώνει τα θερμά σημεία (hotspot) κι επομένως οι κλάδοι οι οποίοι μπορεί να αναμένεται να έχουν παρόμοια συμπεριφορά θα μπορούσαν να αντιπροσωπεύονται από καταχωρήσεις σε μη γειτονικές θέσεις στον πίνακα. As shown in Figure 4 another example of compression may be to apply a vertical compression to reduce the number of entries stored in the branch state cache compared to the number of branch prediction entries 60 provided in the original prediction state store 42. Again, Figure 4 shows an example for a bistable prediction array but it will be appreciated that similar techniques could also be applied to tables that provide other types of branch prediction states. In this case, compression may merge a group of entries 62 into a single entry 64 in the compressed branch prediction state. For example, the merge could be performed by selecting the branch prediction value stored in a selected entry from the group of entries 62 and recording that value as the merged entry 64. A more sophisticated approach could be to check the values of each entry from the group of entries and determining the most common value represented by those group entries (eg, by majority vote) and then setting the merged entry 64 to the value obtained from the majority of the individual entries 60 in the group 62. After decompressing the state stored in the branch state buffer 40, then each of the individual entries 60 in the same group 62 could be set to the same value as indicated by the merged entry 64 of the compressed state. Again, while this may introduce some level of inaccuracy relative to the initial state, this still allows for improved performance compared to the case where no state is stored. This approach recognizes that often branch behavior can be relatively similar for a number of entries, and thus the loss in performance associated with not representing each of these entries in the branch state cache can be relatively insignificant. Although Figure 4 shows an example in which four adjacent entries 60 of table 42 are merged into a single merged entry 64, this is not necessary and the group of entries merged into a single compressed entry could be in non-contiguous positions within the table . This can be advantageous because it is common in branch prediction arrangements for the sharding algorithm used to create the table index to map nearby branch addresses to discrete enough areas of the table to reduce hotspots and thus branches which might be expected to behave similarly could be represented by entries in non-adjacent positions in the table.

Το Σχήμα 5 δείχνει ένα άλλο παράδειγμα συμπίεσης και αποσυμπίεσης. Σε ορισμένες μονάδες διατάξεων πρόβλεψης κλάδου είναι πιθανό για κάθε καταχώρηση πρόβλεψης κλάδου 60 να παρέχει μια τιμή κατάστασης πρόβλεψης κλάδου η οποία περιλαμβάνει ένα κρυφό τμήμα 70 το οποίο καθορίζεται ξεχωριστά για κάθε καταχώρηση και ένα κοινόχρηστο τμήμα 72 το οποίο καθορίζεται άπαξ για μια ολόκληρη ομάδα καταχωρήσεων 62 ώστε να χρησιμοποιείται από κοινού ανάμεσα στην ομάδα. Αυτό μπορεί να μειώνει την επιβάρυνση του κύριου χώρου αποθήκευσης προβλέψεων 42. Και πάλι, το Σχήμα 5 δείχνει ένα παράδειγμα που εφαρμόζεται σε μια δισταθή διάταξη πρόβλεψης, όμως με έναν παρόμοιο τρόπο τα βάρη σε έναν πίνακα βαρών μιας διάταξης πρόβλεψης perceptron για παράδειγμα θα μπορούσαν να περιλαμβάνουν τέτοια κρυφά και κοινόχρηστα τμήματα. Σε αυτή την περίπτωση, η συμπίεση θα μπορούσε να περιλαμβάνει την παράλειψη του κοινόχρηστου τμήματος 72 από τη συμπιεσμένη κατάσταση όπως δείχνεται στην περίπτωση του Σχήματος 5. Μετά την αποσυμπίεση, το κοινόχρηστο τμήμα θα μπορούσε να ορίζεται σε κάποια προεπιλεγμένη τιμή X (0 ή 1) ή σε μια τιμή που επιλέγεται με βάση μια συνάρτηση του κρυφού τμήματος ανακατασκευασμένου από τη συμπιεσμένη κατάσταση. Θα ήταν επίσης δυνατή, αντί της παράλειψης του κοινόχρηστου τμήματος, η διατήρηση μόνο του κοινόχρηστου τμήματος και η παράλειψη του κρυφού τμήματος 70. Figure 5 shows another example of compression and decompression. In some branch prediction devices it is possible for each branch prediction entry 60 to provide a branch prediction state value which includes a hidden part 70 which is specified separately for each entry and a shared part 72 which is specified once for an entire group of entries 62 to be shared among the group. This can reduce the overhead of the main prediction store 42. Again, Figure 5 shows an example applied to a bistable predictor, but in a similar way the weights in a weight matrix of a perceptron predictor for example could include such hidden and shared sections. In this case, the compression could include omitting the shared part 72 from the compressed state as shown in the case of Figure 5. After decompression, the shared part could be set to some default value X (0 or 1) or to a value chosen based on a function of the hidden portion reconstructed from the compressed state. It would also be possible, instead of skipping the shared part, to keep only the shared part and skip the hidden part 70.

Επίσης, όπως δείχνεται στο Σχήμα 6, η συμπίεση θα μπορούσε να παρουσιάσει μια τέτοια κοινή χρήση ενός τμήματος μιας τιμής πρόβλεψης ανάμεσα στις καταχωρήσεις που αντιστοιχούν σε ξεχωριστές τιμές δείκτη, το οποίο στη συνέχεια θα μπορούσε να αφαιρείται και πάλι μετά από μια τέτοια συμπίεση. Για παράδειγμα, στο Σχήμα 6 μια ομάδα καταχωρήσεων 62 περιλαμβάνει ξεχωριστές τιμές τόσο για το bit 1 όσο και το bit 2 του δισταθούς απαριθμητή, όμως μετά τη συμπίεση για τη δημιουργία της κατάστασης που αποθηκεύεται στη BSB 40, μολονότι το bit 1 αναπαρίσταται ξεχωριστά για κάθε μια από τις καταχωρήσεις σε ένα κρυφό τμήμα 76 μιας δεδομένης καταχώρησης 78 της συμπιεσμένης κατάστασης, το δεύτερο bit κάθε καταχώρησης 60 στην ομάδα 62 συγχωνεύεται και σχηματίζει μια μόνο τιμή X που αναπαρίσταται ως το κοινόχρηστο τμήμα 79 της συμπιεσμένης κατάστασης πρόβλεψης κλάδου 78. Για παράδειγμα η κοινόχρηστη τιμή X θα μπορούσε να ορίζεται σε οποιαδήποτε από τις τιμές Ε έως Η του bit 2 στην ομάδα καταχωρήσεων 62 της αρχικής κατάστασης ή θα μπορούσε να ορίζεται στην τιμή που λαμβάνεται από την πλειοψηφία του δεύτερου bit Ε έως Η σε αυτή την ομάδα 62. Μετά την αποσυμπίεση η κοινόχρηστη τιμή 79 θα μπορούσε απλά να αντιγράφεται στο αντίστοιχο τμήμα κάθε καταχώρησης 60 στην ομάδα 62 όταν η ενεργή κατάσταση ετταναφέρεται με βάση τη συμπιεσμένη κατάσταση που αποθηκεύεται στην BSB 40. Και πάλι μολονότι το Σχήμα 6 έχει εφαρμογή σε μια δισταθή διάταξη πρόβλεψης, μια παρόμοια προσέγγιση μπορεί να εφαρμόζεται και σε άλλες μορφές πινάκων παρέχοντας διάφορους τύπους καταστάσεων πρόβλεψης κλάδου. Also, as shown in Figure 6, compression could introduce such sharing of a portion of a prediction value between entries corresponding to separate index values, which could then be removed again after such compression. For example, in Figure 6 a group of entries 62 includes separate values for both bit 1 and bit 2 of the bit counter, but after compression to create the state stored in BSB 40, although bit 1 is represented separately for each one of the entries in a hidden portion 76 of a given entry 78 of the compressed state, the second bit of each entry 60 in the group 62 is merged to form a single value X represented as the shared portion 79 of the compressed branch prediction state 78. For example the shared value X could be set to any of the values E to H of bit 2 in the initial state entry group 62 or it could be set to the value obtained from the majority of the second bit E to H in this group 62. Then decompression the shared value 79 could simply be copied to the corresponding part of each entry 60 in the group 62 when the active state n is referred based on the compressed state stored in BSB 40. Again although Figure 6 is applicable to a bistable prediction array, a similar approach can be applied to other array formats providing various types of branch prediction states.

Συνεπώς, σε γενικές γραμμές με την εφαρμογή συμπίεσης και αποσυμπίεσης μετά την αποθήκευση και επαναφορά της κατάστασης, αυτό μπορεί να μειώσει σημαντικά την επιβάρυνση ώστε να κάνει μια τέτοια αποθήκευση και επαναφορά πιο πρακτική. Μια άλλη προσέγγιση για τη συμπίεση και αποσυμπίεση μπορεί να είναι η παράλειψη της κατάστασης για μια δεδομένη μονάδα πρόβλεψης 50 από τη συμπιεσμένη κατάσταση που είναι αποθηκευμένη στην προσωρινή μνήμη καταστάσεων κλάδου 40. Γ ια παράδειγμα η αποθήκευση και επαναφορά μπορεί να εφαρμόζονται μόνο στην κατάσταση που σχετίζεται με τη διάταξη πρόβλεψης μετάπτωσης, ενώ η κατάσταση που σχετίζεται με άλλες διατάξεις πρόβλεψης θα μπορούσαν απλά να απορρίπτονται ή να απενεργοποιούνται σε μια μεταγωγή πλαισίου χωρίς την εφαρμογή κάποιας αποθήκευσης ή επαναφοράς κατάστασης. Αυτό αναγνωρίζει ότι η διάταξη πρόβλεψης μετάπτωσης 50 μπορεί συχνά να παρέχει το μεγαλύτερο επίπεδο βελτίωσης της απόδοσης ανά bit πληροφοριών που αποθηκεύονται ως κατάσταση πρόβλεψης κλάδου, όπως δείχνεται στα γραφήματα που εξετάζονται παρακάτω. So, in general by applying compression and decompression after saving and restoring state, this can significantly reduce the overhead to make such saving and restoring more practical. Another approach to compression and decompression may be to omit the state for a given prediction unit 50 from the compressed state stored in the branch state cache 40. For example the save and restore may only apply to the associated state with the transition predictor, while the state associated with other predictors could simply be discarded or disabled on a frame switch without implementing any saving or restoring state. This recognizes that the transition predictor 50 can often provide the greatest level of performance improvement per bit of information stored as a branch prediction state, as shown in the graphs discussed below.

Σε παραδείγματα τα οποία εφαρμόζουν συμπίεση και αποσυμπίεση οι οποίες καταλήγουν σε μια μορφή μετασχηματισμού στην οποία αναπαρίστανται οι καταχωρήσεις 60 της κατάστασης πρόβλεψης κλάδου, μπορεί να είναι προτιμότερη η παροχή μιας φυσικά διακριτής προσωρινής μνήμης καταστάσεων κλάδου 40, ξεχωριστής από το χώρο αποθήκευσης προβλέψεων κλάδου 42 η οποία παρέχει την ενεργή κατάσταση πρόβλεψης κλάδου, ώστε η BSB να μπορεί να είναι μικρότερη από το χώρο αποθήκευσης προβλέψεων κλάδου. In examples that apply compression and decompression resulting in a transform format in which the branch prediction state entries 60 are represented, it may be preferable to provide a physically distinct branch state cache 40 separate from the branch prediction storage 42 n which provides the active branch prediction state so that BSB can be smaller than the branch prediction store.

Ωστόσο, σε άλλα παραδείγματα η προσωρινή μνήμη καταστάσεων κλάδου 40 μπορεί να υλοποιείται αποδοτικά χρησιμοποιώντας ένα τμήμα μνήμης τυχαίας προσπέλασης (random access memory ή RAM) το οποίο χρησιμοποιείται από κοινού με το χώρο αποθήκευσης προβλέψεων κλάδου 42 ο οποίος παρέχει την ενεργή κατάσταση πρόβλεψης κλάδου. Για παράδειγμα όπως δείχνεται στο Σχήμα 7, μπορεί να παρέχεται μια RAM η οποία να έχει επαρκή χώρο για την αποθήκευση ενός δεδομένου συνόλου ενεργών καταστάσεων πρόβλεψης κλάδου όπως και έναν αριθμό εφεδρικών θυρίδων οι οποίες μπορούν να χρησιμοποιούνται για την παροχή πολλαπλών στιγμιοτύπων της προσωρινής μνήμης καταστάσεων κλάδου 40 τα οποία μπορούν να χρησιμοποιούνται για την αποθήκευση των αποθηκευμένων στοιχείων καταστάσεων πρόβλεψης κλάδου για έναν αριθμό διαφορετικών πλαισίων εκτέλεσης. Σε αυτή την περίπτωση η αποθήκευση και η επαναφορά της κατάστασης πρόβλεψης κλάδου θα μπορούσε να πραγματοποιείται απλά με μεταγωγή των περιοχών 90 της RAM που χρησιμοποιούνται για την παροχή της ενεργής κατάστασης που χρησιμοποιείται ως χώρος αποθήκευσης προβλέψεων κλάδου 42 για τη δημιουργία προβλέψεων κλάδου για το πλαίσιο που εκτελείται εκείνη τη στιγμή και των περιοχών που χρησιμοποιούνται ως BSB 40 για την αποθήκευση της προηγουμένως αποθηκευμένης κατάστασης η οποία δεν ενημερώνεται πια με βάση τα αποτελέσματα των πραγματικά εκτελεσμένων εντολών διακλάδωσης, αλλά διατηρείται ώστε εάν το αντίστοιχο πλαίσιο εκτέλεσης εκτελεστεί και πάλι αργότερα τότε αυτή η κατάσταση μπορεί να επαναφέρεται με μεταγωγή της περιοχής 90 που αντιπροσωπεύει την ενεργή κατάσταση. Αυτό επιτρέπει στο εισερχόμενο πλαίσιο εκτέλεσης να συνεχίζει με μια μερικώς θερμή διάταξη πρόβλεψης κλάδου. Θα εκτιμηθεί ότι η προσέγγιση που δείχνεται στο Σχήμα 7 θα μπορούσε να εφαρμόζεται σε έναν από τους τύπους διατάξεων πρόβλεψης όπως η διάταξη πρόβλεψης μετάπτωσης, όμως δε χρειάζεται να εφαρμόζεται σε άλλους τύπους μονάδων διατάξεων πρόβλεψης 50, 51 . Η προσέγγιση που δείχνεται στο Σχήμα 7 μπορεί να μειώνει τον όγκο της μεταφοράς κατάστασης που απαιτείται, απλά με το χαρακτηρισμό περιοχών της συνολικής χωρητικότητας αποθήκευσης ως ενεργές ή ανενεργές και αυτό μπορεί να επαρκεί για την καταγραφή της περιοχής που θα πρέπει να χρησιμοποιείται για την πραγματοποίηση των υφιστάμενων προβλέψεων. Η κατάσταση που σχετίζεται με ένα προηγουμένως εκτελεσμένο πλαίσιο εκτέλεσης σε μια από τις περιοχές 90 η οποία χρησιμοποιείται εκείνη τη στιγμή ως BSB 40 μπορεί να παραμένει στο συνολικό χώρο αποθήκευσης προβλέψεων κλάδου μέχρι να εκτελεστεί ένα άλλο πλαίσιο εκτέλεσης το οποίο δεν έχει ήδη εκχωρήσει μια από τις περιοχές 90 σε αυτό το πλαίσιο εκτέλεσης κι επομένως αυτό μπορεί να απαιτεί αντικατάσταση της κατάστασης για ένα προηγουμένως εκτελεσμένο πλαίσιο εκτέλεσης. Κάθε περιοχή 90 για παράδειγμα μπορεί να σχετίζεται με ένα αναγνωριστικό του συγκεκριμένου πλαισίου εκτέλεσης που σχετίζεται με την αντίστοιχη κατάσταση διάταξης πρόβλεψης κλάδου, ώστε να επιτρέπει αποφάσεις κατά πόσο ένα εισερχόμενο πλαίσιο εκτέλεσης είχε ήδη αποθηκευμένες καταστάσεις πρόβλεψης κλάδου ή πρέπει να ξεκινήσει και πάλι από την αρχή. However, in other examples the branch state cache 40 may be efficiently implemented using a portion of random access memory (RAM) which is used in conjunction with the branch prediction store 42 which provides the active branch prediction state. For example as shown in Figure 7, a RAM can be provided which has sufficient space to store a given set of active branch state predictions as well as a number of backup slots which can be used to provide multiple snapshots of the branch state cache 40 which can be used to store the saved branch prediction states for a number of different execution contexts. In this case saving and restoring the branch prediction state could be done simply by switching the regions 90 of the RAM used to provide the active state used as the branch prediction store 42 to generate branch predictions for the frame that executed at that time and of the areas used as BSB 40 to store the previously saved state which is no longer updated based on the results of actually executed branch instructions, but is retained so that if the corresponding execution frame is executed again later then this state it can be reset by switching the region 90 which represents the active state. This allows the incoming execution frame to continue with a partially warm branch prediction layout. It will be appreciated that the approach shown in Figure 7 could be applied to one of the types of predictors such as the transition predictor, but need not be applicable to other types of predictors 50, 51 . The approach shown in Figure 7 can reduce the amount of state transfer required, simply by designating areas of the total storage capacity as active or inactive, and this can be sufficient to record the area that should be used to perform the existing provisions. The state associated with a previously executed execution frame in one of the regions 90 which is currently being used as BSB 40 may remain in the global branch prediction store until another execution frame is executed which has not already allocated one of the regions 90 in this execution context and therefore this may require overwriting the state for a previously executed execution context. Each region 90 for example may be associated with an identifier of the particular execution frame associated with the corresponding branch prediction state, to allow decisions as to whether an incoming execution frame already had branch prediction states saved or needs to start over .

Όπως δείχνεται στο Σχήμα 8, όταν ο σωληναγωγός επεξεργασίας μετάγεται ανάμεσα σε διαφορετικά πλαίσια εκτέλεσης, ορισμένες φορές ένα δεδομένο πλαίσιο εκτέλεσης μπορεί να εκτελείται για μεγαλύτερη περίοδο σε σχέση με άλλες φορές. Εάν ένα δεδομένο πλαίσιο εκτέλεσης εκτελείται για σχετικά σύντομο χρόνο και στη συνέχεια ο επεξεργαστής επιστρέφει στο ίδιο πλαίσιο εκτέλεσης το οποίο εκτελούσε πριν το σύντομο πλαίσιο εκτέλεσης, τότε μπορεί να είναι επιθυμητή η επανενεργοποίηση κάθε προηγουμένως ενεργής κατάστασης πρόβλεψης κλάδου για τα πλαίσια εκτέλεσης που συνεχίζουν. Για παράδειγμα, στο Σχήμα 8 το πλαίσιο εκτέλεσης Β εκτελείται για σχετικά μεγάλο χρόνο κι επομένως μπορεί να συσσωρεύσει ένα σύνολο καταστάσεων διατάξεων πρόβλεψης κλάδου το οποίο μπορεί να είναι σχετικά αποδοτικό, αλλά στη συνέχεια για ένα σύντομο χρόνο εκτελείται ένα διαφορετικό πλαίσιο εκτέλεσης Α πριν την επιστροφή στο πλαίσιο εκτέλεσης Β. Για τα τμήματα της διάταξης πρόβλεψης κλάδου για τα οποία υποστηρίζεται η αποθήκευση και επαναφορά κατάστασης 56, 58, μπορεί να είναι σχετικά απλή η επαναφορά της κατάστασης που σχετίζεται με το πλαίσιο εκτέλεσης Β. Ωστόσο, για άλλα τμήματα της διάταξης πρόβλεψης κλάδου, όπως οι μονάδες διατάξεων πρόβλεψης 50 για τις οποίες δεν πραγματοποιείται αποθήκευση ή επαναφορά κατάστασης, εάν αυτή η κατάσταση πρόβλεψης απορριφθεί από τον κύριο χώρο αποθήκευσης προβλέψεων κλάδου 42 σε κάθε πλαίσιο εκτέλεσης, αυτό θα σήμαινε ότι μια τέτοια κατάσταση θα έπρεπε να εκπαιδεύεται και πάλι από την αρχή όταν συνεχίζει το πλαίσιο εκτέλεσης Β. Αυτό μπορεί να είναι ανεπιθύμητο. Τα Σχήματα 9 και 10 δείχνουν διαφορετικές τεχνικές που επιτρέπουν τη διατήρηση του μη αποθηκευμένου τμήματος της κατάστασης πρόβλεψης κλάδου που σχετίζεται με το πλαίσιο εκτέλεσης Β για τουλάχιστον μια περίοδο εκτέλεσης από το πλαίσιο εκτέλεσης Α, σε περίπτωση που το πλαίσιο εκτέλεσης Α διαρκεί για σχετικά σύντομη περίοδο και τότε η κατάσταση που σχετίζεται με το πλαίσιο Β μπορεί ακόμη να είναι διαθέσιμη όταν η επεξεργασία επιστρέφει στο πλαίσιο Β. As shown in Figure 8, when the processing pipeline switches between different execution frames, sometimes a given execution frame may run for a longer period than other times. If a given execution frame runs for a relatively short time, and then the processor returns to the same execution frame it was executing before the short execution frame, then it may be desirable to re-enable any previously active branch prediction state for continuing execution frames. For example, in Figure 8 execution frame B runs for a relatively long time and thus can accumulate a set of branch prediction states which can be relatively efficient, but then for a short time a different execution frame A executes before returning in execution frame B. For the parts of the branch predictor for which state save and restore 56, 58 is supported, it may be relatively simple to restore the state associated with execution frame B. However, for other parts of the predictor branch, such as prediction array units 50 for which no state is saved or restored, if that prediction state is discarded from the main branch prediction store 42 on each execution frame, this would mean that such a state would have to be trained again from the beginning when it resumes execution frame B. This can be if desired. Figures 9 and 10 show different techniques that allow the non-stored part of the branch prediction state associated with execution frame B to be preserved for at least one execution period by execution frame A, in case execution frame A lasts for a relatively short period and then the state associated with frame B may still be available when processing returns to frame B.

Όπως δείχνεται στο Σχήμα 9, σε ορισμένες προσεγγίσεις η διάταξη πρόβλεψης κλάδου μπορεί να μη γνωρίζει κάποια ένδειξη κατά πόσο το πλαίσιο εκτέλεσης Α είναι πιθανό να έχει μεγάλη ή μικρή διάρκεια ζωής. Σε αυτή την περίπτωση, για μια αρχική περίοδο 100 εκτέλεσης στην αρχή της περιόδου που εκχωρείται για το πλαίσιο εκτέλεσης Α, ορισμένα τμήματα της διάταξης πρόβλεψης κλάδου 4 μπορεί να απενεργοποιούνται. Για παράδειγμα αυτά τα απενεργοποιημένα τμήματα μπορεί να είναι οι μονάδες διατάξεων πρόβλεψης 50, 51 των οποίων η κατάσταση δεν αποθηκεύεται στην προσωρινή μνήμη καταστάσεων κλάδου 40 από το κύκλωμα αποθήκευσης κατάστασης 56. Για παράδειγμα, αυτά θα μπορούσαν να είναι τα τμήματα της κύριας διάταξης πρόβλεψης και των υπο-διατάξεων πρόβλεψης εκτός της διάταξης πρόβλεψης μετάπτωσης. Η κατάσταση πρόβλεψης κλάδου που σχετίζεται με αυτά τα απενεργοποιημένα τμήματα της διάταξης πρόβλεψης κλάδου η οποία εκπαιδεύτηκε με βάση τις εντολές του πλαισίου εκτέλεσης Β μπορεί να διατηρείται σε αυτούς τους χώρους αποθήκευσης προβλέψεων κατά την αρχική περίοδο 100 του πλαισίου εκτέλεσης Α. Εφόσον αυτά τα τμήματα της διάταξης πρόβλεψης κλάδου είναι απενεργοποιημένα αυτό σημαίνει ότι δεν είναι δυνατή από τη διάταξη πρόβλεψης κλάδου 4 η πραγματοποίηση προβλέψεων των αποτελεσμάτων των εντολών διακλάδωσης του πλαισίου εκτέλεσης Α με βάση τις προηγούμενες καταστάσεις πρόβλεψης κλάδου που σχετίζονται με το πλαίσιο εκτέλεσης Β, επομένως υπάρχει ακόμη προστασία έναντι επιθέσεων πλευρικού καναλιού όπως εξετάζεται παραπάνω. As shown in Figure 9, in some approaches the branch predictor may have no indication of whether execution frame A is likely to be long or short-lived. In this case, for an initial run period of 100 at the beginning of the period allocated for run frame A, some parts of the branch predictor 4 may be disabled. For example these disabled sections could be the prediction device units 50, 51 whose state is not stored in the branch state buffer 40 by the state storage circuit 56. For example, these could be the main prediction device sections and of the provision sub-provisions other than the transition provision provision. The branch prediction state associated with these disabled portions of the branch predictor that was trained based on execution frame B commands may be retained in these prediction stores during the initial period 100 of execution frame A. As long as these portions of the branch predictor are disabled this means that it is not possible for branch predictor 4 to make predictions of the results of branch instructions of execution frame A based on the previous branch prediction states associated with execution frame B, so there is still protection against attacks side channel as discussed above.

Εάν προκύψει μια επακόλουθη μεταγωγή πλαισίου εκτέλεσης πριν το τέλος της αρχικής περιόδου 100, (π.χ. στην περίπτωση που δείχνεται στο Σχήμα 8), τότε εάν η εκτέλεση μεταβεί και πάλι στο πλαίσιο Β τότε τα προηγουμένως απενεργοποιημένα τμήματα της διάταξης πρόβλεψης κλάδου μπορούν απλά να ενεργοποιούνται και πάλι εφόσον η κατάσταση πρόβλεψης κλάδου που σχετίζεται με το πλαίσιο Β υπάρχει ακόμη σε αυτά τα τμήματα της διάταξης πρόβλεψης κλάδου. Αυτό σημαίνει ότι μόλις συνεχίσει το πλαίσιο Β μπορεί να το κάνει από το σημείο που σταμάτησε με το επίπεδο απόδοσης που σχετίζεται με την προηγουμένως εκπαιδευθείσα κατάστασης διάταξης πρόβλεψης κλάδου. Αυτό μειώνει τις επιπτώσεις στην απόδοση του πλαισίου Β που προκαλούνται από την προσωρινή μεταγωγή στο πλαίσιο Α. If a subsequent execution frame switch occurs before the end of the initial period 100, (eg in the case shown in Figure 8), then if execution switches back to frame B then the previously disabled portions of the branch predictor can simply be activated again as long as the branch prediction state associated with frame B still exists in those parts of the branch prediction arrangement. This means that once box B resumes it can do so from where it left off with the performance level associated with the previously trained branch predictor state. This reduces the performance impacts of frame B caused by temporary switching to frame A.

Αφετέρου, στην περίπτωση που δείχνεται στο Σχήμα 9 όπου η αρχική περίοδος 100 τελειώνει χωρίς να συναντήσει κάποια μετέπειτα μεταγωγή πλαισίου εκτέλεσης, τότε στο τέλος της αρχικής περιόδου, η κατάσταση πρόβλεψης κλάδου που σχετίζεται με αυτά τα απενεργοποιημένα τμήματα της διάταξης πρόβλεψης κλάδου (όπως η κύρια διάταξη πρόβλεψης και οι υπο-διατάξεις πρόβλεψης) μπορούν να απορρίπτονται ή να ακυρώνονται και στη συνέχεια τα προηγουμένως απενεργοποιημένα τμήματα της διάταξης πρόβλεψης κλάδου μπορούν να ενεργοποιούνται και πάλι ώστε το πλαίσιο εκτέλεσης Α να μπορεί να αρχίσει να χρησιμοποιεί αυτά τα τμήματα. Αυτό σημαίνει ότι κατά την αρχική περίοδο 100, οι προβλέψεις για το πλαίσιο εκτέλεσης Α μπορούν να βασίζονται αποκλειστικά στη διάταξη πρόβλεψης μετάπτωσης 51 της οποίας η κατάσταση αποθηκεύτηκε στην προσωρινή μνήμη καταστάσεων κλάδου 40, όμως μόλις τελειώσει η αρχική περίοδος τότε η πλήρης λειτουργία πρόβλεψης κλάδου μπορεί να είναι διαθέσιμη στο πλαίσιο Α. Μολονότι αυτή η προσέγγιση μπορεί αρχικά να μειώνει την απόδοση για ένα εισερχόμενο πλαίσιο μην κάνοντας διαθέσιμη ολόκληρη τη διάταξη πρόβλεψης κλάδου, έχει το πλεονέκτημα ότι όταν ένα συγκεκριμένο πλαίσιο εκτέλεσης έχει μικρή διάρκεια ζωής και η επεξεργασία επιστρέφει στο πλαίσιο το οποίο εκτελέστηκε πριν το πλαίσιο με σύντομη διάρκεια ζωής, το πλαίσιο εκτέλεσης με τη μεγαλύτερη διάρκεια ζωής Β μπορεί να χειρίζεται πιο αποδοτικά, γεγονός το οποίο θα έχει την τάση κατά μέσο όρο να αυξάνει την απόδοση συνολικά. Η αρχική περίοδος 100 θα μπορούσε να έχει σταθερή διάρκεια (ορισμένη σε μονάδες χρόνου, κύκλους επεξεργασίας, εκτελεσθείσες εντολές ή αναζητήσεις διάταξης πρόβλεψης κλάδου, για παράδειγμα) ή θα μπορούσε να έχει μεταβλητή διάρκεια (π.χ. μέχρι η εμπιστοσύνη της πρόβλεψης κλάδου να φτάσει ένα ορισμένο επίπεδο). On the other hand, in the case shown in Figure 9 where the initial period 100 ends without encountering any subsequent execution frame switching, then at the end of the initial period, the branch prediction state associated with those disabled portions of the branch prediction device (such as the main branch predictor and its predictor sub-arrangements) can be dropped or invalidated, and then previously disabled sections of the branch predictor can be re-enabled so that execution context A can start using those sections. This means that during the initial period 100, the predictions for execution frame A may rely solely on the transition predictor 51 whose state has been stored in the branch state buffer 40, but once the initial period is over then the full branch prediction function can to be available in frame A. Although this approach may initially reduce performance for an incoming frame by not making the entire branch predictor available, it has the advantage that when a particular execution frame has a short lifetime and processing returns to frame which was executed before the short-lived frame, the longer-lived execution frame B can be handled more efficiently, which will tend on average to increase performance overall. The initial period 100 could be of fixed duration (defined in units of time, processing cycles, executed orders or branch prediction layout lookups, for example) or could be of variable duration (eg, until the confidence of the branch prediction reaches a certain level).

Εναλλακτικά, όπως δείχνεται στο Σχήμα 10, αντί να περιορίζεται η λειτουργία του πλαισίου εκτέλεσης Α κατά την αρχική περίοδο σε απόκριση της μεταγωγής πλαισίου από το πλαίσιο Β στο πλαίσιο Α, η διάταξη πρόβλεψης κλάδου θα μπορούσε να κάνει μια πρόβλεψη της αναμενόμενης διάρκειας ζωής του πλαισίου Α. Για παράδειγμα θα μπορούσε να τηρείται ένας πίνακας με έναν απαριθμητή εμπιστοσύνης ή μια τιμή πρόβλεψης ο οποίος είχε εκπαιδευτεί με βάση της προηγούμενες μετρήσεις της διάρκειας ζωής του πλαισίου Α και η διάρκεια ζωής (διάρκεια) του πλαισίου Α αναμένεται να είναι μεγαλύτερη από μια ορισμένη τιμή κατωφλιού τότε μπορεί να υποτίθεται ότι δεν αξίζει η διατήρηση της μη αποθηκευμένης κατάστασης πρόβλεψης που σχετίζεται με το πλαίσιο Β (εκτός της κατάστασης πρόβλεψης που είναι αποθηκευμένη στην προσωρινή μνήμη καταστάσεων κλάδου 40). Σε αυτή την περίπτωση, όταν το πλαίσιο Α προβλέπεται να έχει μεγάλη διάρκεια ζωής, το μη αποθηκευμένο τμήμα της κατάστασης πρόβλεψης του πλαισίου Β μπορεί να απορρίπτεται από το χώρο αποθήκευσης προβλέψεων κλάδου 42 και ολόκληρη η διάταξη πρόβλεψης κλάδου μαζί με όλες τις μονάδες διατάξεων πρόβλεψης 50, 51 μπορεί να ενεργοποιείται για την πραγματοποίηση προβλέψεων για το πλαίσιο Α αμέσως από την αρχή της επεξεργασίας από το πλαίσιο Α, αντί να περιμένει για το τέλος της αρχικής περιόδου 100. Alternatively, as shown in Figure 10, instead of limiting the operation of execution frame A during the initial period in response to frame switching from frame B to frame A, the branch predictor could make a prediction of the frame's expected lifetime A. For example a table could be maintained with a confidence counter or prediction value that was trained based on previous measurements of the lifetime of frame A and the lifetime (duration) of frame A is expected to be greater than a certain threshold value then it may be assumed that it is not worth keeping the unstored prediction state associated with frame B (other than the prediction state stored in branch state cache 40). In this case, when frame A is predicted to be long-lived, the unstored portion of frame B's prediction state may be discarded from branch prediction storage 42 and the entire branch prediction array together with all prediction array units 50 , 51 may be triggered to make predictions for frame A immediately from the start of processing by frame A, rather than waiting for the end of the initial period 100.

Εάν αντίθετα το πλαίσιο Α προβλεφθεί ότι έχει μικρή διάρκεια ζωής (με μια διάρκεια μικρότερη από μια τιμή κατωφλιού), τότε σε απόκριση της μεταγωγής πλαισίου από το πλαίσιο Β στο πλαίσιο Α το τμήμα της διάταξης πρόβλεψης κλάδου το οποίο αντιστοιχεί στην κατάσταση η οποία δεν είναι αποθηκευμένη στην προσωρινή μνήμη καταστάσεων κλάδου μπορεί να απενεργοποιείται και η κατάσταση που σχετίζεται με το απενεργοποιημένο τμήμα η οποία εκπαιδεύτηκε με βάση τις εντολές από το πλαίσιο Β μπορεί να διατηρείται σε όλη την επεξεργασία στο πλαίσιο Α. Συνεπώς με αυτή την προσέγγιση τα απενεργοποιημένα τμήματα θα παρέμεναν απενεργοποιημένα μέχρι να συμβεί μια άλλη μεταγωγή πλαισίου και η επεξεργασία επιστρέψει σε ένα διαφορετικό πλαίσιο. If instead frame A is predicted to have a short lifetime (with a duration less than a threshold value), then in response to frame switching from frame B to frame A the portion of the branch predictor corresponding to the state which is not cached branch states can be disabled and the state associated with the disabled part which was trained based on commands from frame B can be maintained throughout processing in frame A. Therefore with this approach the disabled parts would remain disabled until another frame switch occurs and processing returns to a different frame.

Συνεπώς, ανεξάρτητα της προσέγγισης που χρησιμοποιείται στο Σχήμα 9 ή στο Σχήμα 10, σε γενικές γραμμές όπως δείχνεται στο Σχήμα 8, εάν υπάρχει κάποια υπολειπόμενη ενεργή κατάσταση πρόβλεψης κλάδου καταγεγραμμένη στον κύριο χώρο αποθήκευση προβλέψεων κλάδου 42 που σχετίζεται με ένα εισερχόμενο πλαίσιο Β κατά το χρόνο μιας μεταγωγής πλαισίου από ένα εξερχόμενο πλαίσιο Α, τότε αυτή η υπολειπόμενη ενεργή κατάσταση κλάδου μπορεί να ενεργοποιείται και πάλι ώστε να μπορεί να χρησιμοποιείται για την πραγματοποίηση προβλέψεων κλάδου για το εισερχόμενο πλαίσιο Β χωρίς να απαιτείται η επαναφορά κάποιας κατάστασης από την προσωρινή μνήμη καταστάσεων κλάδου. Αυτό μπορεί να είναι ιδιαίτερα χρήσιμο για οποιαδήποτε τμήματα της κατάστασης πρόβλεψης τα οποία δεν περιλαμβάνονται στη συμπιεσμένη εικόνα της κατάστασης πρόβλεψης κλάδου που είναι καταγεγραμμένη στην προσωρινή μνήμη καταστάσεων κλάδου 40. Accordingly, regardless of the approach used in Figure 9 or Figure 10, generally as shown in Figure 8, if there is any residual active branch prediction state recorded in the main branch prediction storage 42 associated with an incoming frame B at time of a frame switch from an outgoing frame A, then this residual active branch state can be reactivated so that it can be used to make branch predictions for the incoming frame B without requiring any state to be restored from the branch state cache. This can be particularly useful for any portions of the prediction state that are not included in the compressed image of the branch prediction state stored in the branch state cache 40 .

Το Σχήμα 11 δείχνει ένα παράδειγμα σχεδίασης της διάταξης πρόβλεψης κλάδου 4 η οποία μπορεί να παρέχει βελτιωμένη απόδοση στη μεταβατική κατάσταση αμέσως μετά την απόρριψη της κατάστασης πρόβλεψης κλάδου σε απόκριση μιας μεταγωγής πλαισίου εκτέλεσης. Η διάταξη πρόβλεψης κλάδου 4 υλοποιείται ως μια διάταξη πρόβλεψης κλάδου TAGE η οποία χρησιμοποιεί μια σχετικά μικρή διάταξη πρόβλεψης perceptron 120 ως διάταξη πρόβλεψης μετάπτωσης η οποία παρέχει μια πρόβλεψη μετάπτωσης σε περίπτωση που οι κύριοι πίνακες πρόβλεψης TAGE 122 δεν μπορούν να παρέχουν ένα επαρκές επίπεδο εμπιστοσύνης. Ο συνολικός όγκος των καταστάσεων πρόβλεψης είναι μικρότερος για τη διάταξη πρόβλεψης perceptron 120 σε σχέση με τους πίνακες TAGE 122. Η διάταξη πρόβλεψης TAGE 4 μπορεί επίσης να περιλαμβάνει επιπλέον δομές όπως μια διάταξη πρόβλεψης βρόχου 140 για την ανίχνευση βρόχων προγράμματος και ένα στατιστικό διορθωτή 142 για τη διόρθωση λανθασμένων προβλέψεων που ανιχνεύθηκαν προηγουμένως στην κύρια διάταξη πρόβλεψης. Figure 11 shows an example design of the branch predictor 4 which can provide improved performance in the transition state immediately after the branch prediction state is discarded in response to an execution frame switch. Branch predictor 4 is implemented as a TAGE branch predictor which uses a relatively small perceptron predictor 120 as a transition predictor which provides a transition prediction in case the main TAGE prediction tables 122 cannot provide a sufficient level of confidence. The total amount of prediction states is smaller for the perceptron predictor 120 than for the TAGE arrays 122. The TAGE 4 predictor may also include additional structures such as a loop predictor 140 for detecting program loops and a statistical corrector 142 for the correction of previously detected incorrect predictions in the main predictor.

Τόσο οι κύριοι πίνακες πρόβλεψης TAGE 122 όσο και η perceptron 120 αναζητούνται με βάση πληροφορίες αναζήτησης που προκύπτουν από τον απαριθμητή προγράμματος (program counter ή PC) και πληροφορίες ιστορικού εκτέλεσης 124 οι οποίες υποδεικνύουν μια ακολουθία συμπεριφοράς η οποία οδήγησε στην εντολή που αναπαρίσταται από τον απαριθμητή προγράμματος. Για παράδειγμα το ιστορικό 124 μπορεί να περιλαμβάνει μια ακολουθία bit που υποδηλώνουν το παλαιό ιστορικό κλάδου, όπως μια ακολουθία ληφθέντων και μη ληφθέντων αποτελεσμάτων για τους προηγουμένως εκτελεσμένους κλάδους. Θα εκτιμηθεί ότι διαφορετικά σχήματα TAGE μπορούν να χρησιμοποιούν διαφορετικές αναπαραστάσεις του ιστορικού 124 και ότι μπορεί να εφαρμόζεται οποιοδήποτε γνωστό σχήμα αναζήτησης TAGE. Σε γενικές γραμμές, το ιστορικό 124 μπορεί να διαιρείται σε έναν αριθμό τμημάτων (για παράδειγμα τα Ρ0 έως Ρ3 στο παράδειγμα που δείχνεται στο Σχήμα 11) ενώ κάθε πίνακας TAGE 122 μπορεί να έχει τις καταχωρήσεις πρόβλεψής του δεικτοδοτημένες με βάση ένα τμήμα διαφορετικού μήκους της τιμής ιστορικού 124. Για παράδειγμα ένας πρώτος πίνακας TAGE 122 θα μπορούσε να δεικτοδοτείται με βάση μια συνάρτηση του απαριθμητή προγράμματος και του τμήματος ΡΟ, ένας δεύτερος πίνακας TAGE 122 θα μπορούσε να δεικτοδοτείται ως συνάρτηση του απαριθμητή προγράμματος και των τμημάτων ΡΟ και Ρ1 , ένας τρίτος πίνακας TAGE θα μπορούσε να δεικτοδοτείται ως συνάρτηση του απαριθμητή προγράμματος και του συνδυασμού των τμημάτων ΡΟ, Ρ1 , Ρ2 και ούτω καθεξής. Κάθε πίνακας TAGE μπορεί να παρέχει έναν αριθμό τιμών κατάστασης πρόβλεψης, για παράδειγμα δισταθείς απαριθμητές εμπιστοσύνης ή μεγαλύτεροι απαριθμητές οι οποίοι καταγράφουν την εμπιστοσύνη με μικρότερη ανάλυση από τον δισταθή απαριθμητή 2-bit. Όταν οι πίνακες TAGE 122 αναζητούνται με βάση τον απαριθμητή προγράμματος και το ιστορικό 124, τότε κάθε πίνακας μπορεί να εξάγει μια ένδειξη κατά πόσο υπήρξε μια επιτυχία, και εάν υπήρξε μια επιτυχία, η πρόβλεψη που προέκυψε από αυτό τον πίνακα και το επίπεδο εμπιστοσύνης που σχετίζεται με αυτή την πρόβλεψη. Ένας επιλογέας 126 μπορεί να επιλέγει ανάμεσα στις διαφορετικές προβλέψεις που εξάγονται από τους πίνακες TAGE ώστε εάν κάθε ένας από πολλούς πίνακες TAGE 122 εξάγει μια πρόβλεψη με ένα επίπεδο εμπιστοσύνης μεγαλύτερο από μια ορισμένη τιμή κατωφλιού, τότε ο επιλογέας 126 μπορεί να επιλέγει, ως την πρόβλεψη TAGE, την πρόβλεψη που εξήγαγε ο πίνακας TAGE 122 η οποία χρησιμοποίησε το μεγαλύτερο τμήμα του ιστορικού 124 για τη δημιουργία του δείκτη σε αυτό τον πίνακα TAGE. Αυτό αναγνωρίζει ότι εάν υπήρχε μια σύμπτωση σε ένα μεγαλύτερο ιστορικό, τότε είναι πιθανότερο αυτή η πρόβλεψη να είναι ακριβής παρά εάν υπήρχε μια σύμπτωση σε ένα μικρότερο ιστορικό, εφόσον για να προκύψει η πρόβλεψη έχουν εξεταστεί περισσότερες πληροφορίες για την παλαιά συμπεριφορά εκτέλεσης οι οποίες οδήγησαν στην τρέχουσα εντολή που αντιπροσωπεύεται από τον απαριθμητή προγράμματος. Both the TAGE master prediction tables 122 and the perceptron 120 are searched based on search information derived from the program counter (PC) and execution history information 124 indicating a sequence of behavior that led to the command represented by the counter program. For example history 124 may include a sequence of bits indicating past branch history, such as a sequence of received and unreceived results for previously executed branches. It will be appreciated that different TAGE schemes may use different representations of history 124 and that any known TAGE search scheme may be implemented. In general, the history 124 may be divided into a number of segments (for example P0 to P3 in the example shown in Figure 11) while each TAGE table 122 may have its prediction entries indexed based on a segment of varying length of the value history 124. For example a first TAGE array 122 could be indexed as a function of the program counter and the PO segment, a second TAGE array 122 could be indexed as a function of the program counter and the PO and P1 segments, a third array TAGE could be indexed as a function of the program counter and the combination of sections PO, P1 , P2 and so on. Each TAGE table can provide a number of prediction state values, for example bistable confidence counters or larger counters that capture confidence at a lower resolution than the 2-bit bistable counter. When the TAGE arrays 122 are searched against the program counter and history 124 , then each array can output an indication of whether there was a hit, and if there was a hit, the prediction derived from that array and the associated confidence level with this prediction. A selector 126 may select among the different predictions output from the TAGE tables such that if each of multiple TAGE tables 122 outputs a prediction with a confidence level greater than a certain threshold value, then the selector 126 may select, as the prediction TAGE, the prediction output by the TAGE array 122 which used the largest portion of the history 124 to create the pointer to that TAGE array. This recognizes that if there was a coincidence in a longer history, then that prediction is more likely to be accurate than if there was a coincidence in a shorter history, since more information about the old execution behavior leading to the prediction has been considered in order to derive the prediction. current command represented by the program counter.

Ωστόσο, ορισμένες φορές οι πίνακες TAGE 122 μπορεί να μην έχουν τη δυνατότητα παροχής μιας κατάλληλης πρόβλεψης για τον τρέχοντα απαριθμητή προγράμματος και το ιστορικό 124, για παράδειγμα όταν απαντάται μια εντολή σε ένα νέο σενάριο η οποία δεν είχε ανιχνευθεί προηγουμένως. Συνεπώς, ορισμένες φορές κάθε ένας από τους πίνακες TAGE 122 μπορεί να εξάγει μια εμπιστοσύνη TAGE η οποία υποδηλώνει μια εμπιστοσύνη χαμηλότερη από μια ορισμένη τιμή κατωφλιού. Επίσης, σε ορισμένες περιπτώσεις η αναζήτηση μπορεί απλά να αποτυγχάνει σε όλους τους πίνακες TAGE (αυτό μπορεί να ερμηνεύεται ως επίπεδο εμπιστοσύνης 0 ή το ελάχιστο επίπεδο εμπιστοσύνης). Η διάταξη πρόβλεψης perceptron 120 παρέχεται ως διάταξη πρόβλεψης μετάπτωσης για την παροχή μιας πρόβλεψης μετάπτωσης σε περίπτωση που οι πίνακες TAGE 122 δεν μπορούν να παρέχουν μια πρόβλεψη με επαρκώς υψηλό επίπεδο εμπιστοσύνης. Συνεπώς, όταν η εμπιστοσύνη TAGE που προκύπτει από τις ενδείξεις εμπιστοσύνης που αποθηκεύονται στους πίνακες TAGE 122 δεν είναι επαρκώς υψηλή, ο επιλογέας 126 μπορεί στη θέση της να επιλέγει την έξοδο πρόβλεψης μετάπτωσης από τη διάταξη πρόβλεψης perceptron 120. However, sometimes the TAGE tables 122 may not be able to provide an appropriate prediction of the current program counter and history 124, for example when an instruction is answered in a new script that was not previously detected. Therefore, sometimes each of the TAGE tables 122 may output a TAGE confidence which indicates a confidence lower than a certain threshold value. Also, in some cases the lookup may simply fail all TAGE tables (this may be interpreted as a confidence level of 0 or the minimum confidence level). The perceptron predictor 120 is provided as a transition predictor to provide a transition prediction in the event that the TAGE arrays 122 cannot provide a prediction with a sufficiently high level of confidence. Accordingly, when the TAGE confidence derived from the confidence indications stored in the TAGE tables 122 is not sufficiently high, the selector 126 may instead select the transition prediction output from the perceptron predictor 120 .

Όπως δείχνεται στο Σχήμα 11 , η διάταξη πρόβλεψης perceptron 120 περιλαμβάνει έναν αριθμό πινάκων βάρους 130 κάθε ένας από τους οποίους αποθηκεύει έναν αριθμό τιμών βάρους οι οποίες μπορούν να χρησιμοποιούνται για τον πολλαπλασιασμό των αντίστοιχων τμημάτων του απαριθμητή προγράμματος και /ή της τιμής ιστορικού 124 (προαιρετικά θα μπορούσαν να εξετάζονται και σύμβολα δίεσης άλλων πληροφοριών) ώστε να δημιουργείται ένα σταθμισμένο άθροισμα χρησιμοποιώντας έναν αθροιστή 132. Και πάλι, ένα μεγάλο εύρος σχημάτων perceptron είναι γνωστά στη βιβλιογραφία η οποία προσδιορίζει διάφορους τρόπους εφαρμογής των βαρών στα διάφορα τμήματα των πληροφοριών αναζήτησης, όμως σε γενικές γραμμές η perceptron είναι ένας τύπος διάταξης πρόβλεψης κλάδου όπου η παραγόμενη εμπιστοσύνη πρόβλεψης εξαρτάται από το άθροισμα ενός αριθμού όρων που εξαρτώνται από βάρη που επιλέγονται από πίνακες δεικτοδοτούμενους με βάση τμήματα του απαριθμητή προγράμματος και/ή του ιστορικού 124. Για παράδειγμα, κάθε πίνακας βαρών μπορεί να δεικτοδοτείται με βάση ένα διαφορετικό τμήμα των πληροφοριών αναζήτησης, ώστε το άθροισμα να παράγεται με βάση όρους κάθε ένας από τους οποίους προκύπτει από ένα βάρος που επιλέγεται από ένα διαφορετικό πίνακα βαρών 130. Σε ορισμένες υλοποιήσεις τα επιλεγμένα βάρη θα μπορούσαν να προστίθενται απευθείας ώστε να παρέχουν μια πρόβλεψη η οποία υποδηλώνει το αποτέλεσμα λήψης/μη λήψης και το προβλεπόμενο επίπεδο εμπιστοσύνης. Σε άλλες υλοποιήσεις τα βάρη θα μπορούσαν να χρησιμοποιούνται για τον πολλαπλασιασμό των αντίστοιχων τμημάτων των πληροφοριών αναζήτησης, ενώ τα γινόμενα των βαρών και των πληροφοριών αναζήτησης μπορούν να αθροίζονται για τη δημιουργία της πρόβλεψης. As shown in Figure 11, the perceptron predictor 120 includes a number of weight tables 130 each of which stores a number of weight values which can be used to multiply corresponding portions of the program counter and/or history value 124 (optionally weighting symbols of other information could also be considered) to produce a weighted sum using an adder 132. Again, a wide range of perceptron schemes are known in the literature which specify various ways of applying the weights to the various parts of the search information, but in generally the perceptron is a type of branch prediction device where the generated prediction confidence depends on the sum of a number of terms dependent on weights selected from matrices indexed by portions of the program enumerator and/or history 124. For example, each weight matrixmay be indexed based on a different portion of the search information so that the sum is produced based on terms each of which results from a weight selected from a different weight table 130. In some implementations the selected weights could be added directly so that provide a prediction indicating the take/no-take outcome and predicted confidence level. In other implementations the weights could be used to multiply corresponding parts of the search information, and the products of the weights and the search information can be summed to generate the prediction.

Μια διάταξη πρόβλεψης perceptron θα αντιμετωπιζόταν κανονικά ως ένας διακριτός τύπος διάταξης πρόβλεψης από μόνη της, αντί να περιλαμβάνεται ως διάταξη πρόβλεψης μετάπτωσης 120 σε μια διάταξη πρόβλεψης TAGE 4 όπως δείχνεται στο Σχήμα 11. Ωστόσο, όπως εξετάζεται στην ανάλυση απόδοσης που περιγράφεται παρακάτω, χρησιμοποιώντας μια perceptron ως τη διάταξη πρόβλεψης μετάπτωσης μιας διάταξης πρόβλεψης TAGE μπορεί να είναι ιδιαίτερα χρήσιμο στα σενάρια που εξετάζονται παραπάνω όπου υπάρχουν συχνές απορρίψεις καταστάσεων πρόβλεψης κλάδου σε μεταγωγές πλαισίου εκτέλεσης. Αυτό οφείλεται στο γεγονός ότι η perceptron μπορεί, σε ένα σχετικά μικρό όγκο μιας κατάστασης πρόβλεψης κλάδου, να παρέχει ένα σχετικά υψηλό ποσοστό ενίσχυσης της απόδοσης όταν η κατάσταση perceptron επαναφέρεται από την προσωρινή μνήμη καταστάσεων κλάδου 40 μετά από μια μεταγωγή πλαισίου εκτέλεσης ή άλλο συμβάν επαναφοράς. Σε σύγκριση με μια διάταξη πρόβλεψης TAGE η οποία χρησιμοποιεί μια δισταθή διάταξη πρόβλεψης μετάπτωσης, αυτό μπορεί να παρέχει πολύ μεγαλύτερη απόδοση στη μεταβατική κατάσταση λειτουργίας. A perceptron predictor would normally be treated as a distinct type of predictor in its own right, rather than being included as a transition predictor 120 in a TAGE 4 predictor as shown in Figure 11. However, as discussed in the performance analysis described below, using a perceptron as the transition predictor of a TAGE predictor can be particularly useful in the scenarios discussed above where there are frequent discards of branch prediction states at execution frame switches. This is because the perceptron can, in a relatively small amount of a branch prediction state, provide a relatively high rate of performance boost when the perceptron state is reset from the branch state cache 40 after an execution frame switch or other reset event . Compared to a TAGE predictor which uses a bistable transition predictor, this can provide much higher performance in transient operation.

Όπως δείχνεται στο Σχήμα 12, η διάταξη πρόβλεψης TAGE 4 του Σχήματος 11 μπορεί από μόνη της να αποτελεί τμήμα μιας μεγαλύτερης υβριδικής διάταξης πρόβλεψης η οποία μπορεί να περιλαμβάνει μια επιπλέον διάταξη πρόβλεψης perceptron 150. Δηλαδή, η διάταξη πρόβλεψης κλάδου TAGE 4 μπορεί ακόμη να περιλαμβάνει τους κύριους πίνακες TAGE 122 και την perceptron 120 η οποία ενεργεί ως η διάταξη πρόβλεψης μετάπτωσης της διάταξης πρόβλεψης κλάδου TAGE 4. Ο επιλογέας 126 εντός της διάταξης πρόβλεψης TAGE 4 μπορεί ακόμη να επιλέγει ανάμεσα στις προβλέψεις μεταξύ των πινάκων TAGE 122 και της διάταξης πρόβλεψης μετάπτωσης 120 με βάση μια ένδειξη εμπιστοσύνης 128 που προκύπτει από την τιμή εμπιστοσύνης που αποθηκεύεται στους ίδιους τους πίνακες TAGE 122 (και σε ορισμένες περιπτώσεις, μπορεί επίσης να εξετάζεται μια ένδειξη εμπιστοσύνης 129 που λαμβάνεται από τη διάταξη πρόβλεψης perceptron 120). As shown in Figure 12, the TAGE 4 predictor of Figure 11 may itself be part of a larger hybrid predictor which may include an additional perceptron predictor 150. That is, the TAGE 4 branch predictor may further include the main TAGE arrays 122 and the perceptron 120 which acts as the transition predictor of the TAGE 4 branch predictor. The selector 126 within the TAGE 4 predictor can still select between the predictions between the TAGE arrays 122 and the transition predictor 120 based on a confidence indication 128 derived from the confidence value stored in the TAGE tables 122 themselves (and in some cases, a confidence indication 129 obtained from the perceptron predictor 120 may also be considered).

Ωστόσο, επιπλέον ένας περαιτέρω επιλογέας 152 μπορεί στη συνέχεια να επιλέγει κατά πόσο να χρησιμοποιεί την έξοδο πρόβλεψης 154 από τη διάταξη πρόβλεψης κλάδου TAGE 4 (η οποία θα μπορούσε να βασίζεται στους πίνακες TAGE 122 ή τη διάταξη πρόβλεψης μετάπτωσης 120) ή μια περαιτέρω πρόβλεψη perceptron 156 που παρέχεται από μια περαιτέρω διάταξη πρόβλεψης perceptron 150 η οποία μπορεί να είναι μια πιο σύνθετη διάταξη πρόβλεψης από την perceptron που χρησιμοποιείται ως διάταξη πρόβλεψης μετάπτωσης 120. Τέτοιες υβριδικές διατάξεις πρόβλεψης οι οποίες παρουσιάζουν πολλαπλές μορφές πρόβλεψης κλάδου μπορούν να είναι χρήσιμες για βελτιωμένη απόδοση σε εφαρμογές όπου η επιβάρυνση χώρου είναι λιγότερο σημαντική. Ωστόσο αντίθετα από τον επιλογέα 126 εντός της διάταξης πρόβλεψης κλάδου TAGE 4, ο επιλογέας 152 ο οποίος επιλέγει ανάμεσα στη διάταξη πρόβλεψης κλάδου TAGE 4 και τη διάταξη πρόβλεψης perceptron 150 μπορεί να επιλέγει μια από τις προβλέψεις 154, 156 με βάση έναν ξεχωριστό πίνακα 160 που υποδεικνύει τον προτιμώμενο τύπο διάταξης πρόβλεψης για ένα δεδομένο συνδυασμό απαριθμητή προγράμματος και ιστορικού εκτέλεσης, γεγονός ανεξάρτητο από τους πίνακες TAGE 122. Για παράδειγμα ο πίνακας TAGE 160 μπορεί να μαθαίνεται από μια παλαιά αξιολόγηση κατά πόσο η πρόβλεψη perceptron 156 ή η πρόβλεψη TAGE 154 είναι πιο ακριβής για ορισμένους κλάδους. However, in addition a further selector 152 may then choose whether to use the prediction output 154 from the TAGE 4 branch predictor (which could be based on the TAGE tables 122 or transition predictor 120) or a further perceptron prediction 156 provided by a further perceptron predictor 150 which may be a more complex predictor than the perceptron used as transition predictor 120. Such hybrid predictors exhibiting multiple forms of branch prediction can be useful for improved performance in applications where space overhead is less important. However unlike the selector 126 within the TAGE 4 branch predictor, the selector 152 which selects between the TAGE 4 branch predictor and the perceptron predictor 150 may select one of the predictions 154, 156 based on a separate table 160 that indicates the preferred type of prediction array for a given combination of program counter and execution history, a fact independent of the TAGE tables 122. For example, the TAGE table 160 may be learned from an old evaluation of whether the perceptron prediction 156 or the TAGE prediction 154 is more accurate for some industries.

Συνεπώς, ο επιλογέας 152 μπορεί να μην εξετάζει τη συγκεκριμένη ένδειξη εμπιστοσύνης 128 η οποία εξάγεται από τους ίδιους τους πίνακες TAGE 122. Therefore, the selector 152 may not consider the particular confidence indication 128 which is derived from the TAGE tables 122 themselves.

Ευελιξία διατάξεων πρόβλεψης κλάδου Flexibility of industry forecast provisions

Οι σύγχρονοι επεξεργαστές χρησιμοποιούν πρόβλεψη κλάδου για τη βελτίωση της απόδοσης του συστήματος. Κατά συνέπεια, οι διατάξεις πρόβλεψης έχουν γίνει μεγαλύτερες και όλο και πιο εξελιγμένες ώστε να επιτυγχάνουν υψηλότερη ακρίβεια. Ωστόσο, λόγω της παρουσίας των μεταγωγών πλαισίου και των κεντρικών μεταβάσεων, οι σχεδιάσεις διατάξεων πρόβλεψης κλάδου δεν καταφέρνουν να φτάσουν την ακρίβεια σταθερής κατάστασης. Επιπλέον, ελαττώνουν την ακρίβειά τους με την αποθήκευση πολλαπλών ιστορικών από διαφορετικές διαδικασίες, γεγονός το οποίο δημιουργεί επίσης ευκαιρίες για επιθέσεις πλευρικού καναλιού σε διατάξεις πρόβλεψης κλάδου. Υπό αυτές τις συνθήκες, προκύπτει η ανάγκη απομόνωσης των διαδικασιών στις διατάξεις πρόβλεψης κλάδου και αποδοτικότητας με μικρότερο χρόνο προθέρμανσης. Modern processors use branch prediction to improve system performance. Consequently, prediction devices have become larger and more sophisticated to achieve higher accuracy. However, due to the presence of frame switches and central transitions, branch prediction layout designs fail to reach steady-state accuracy. Additionally, they reduce their accuracy by storing multiple histories from different processes, which also creates opportunities for side-channel attacks on branch predictors. Under these conditions, there is a need to isolate the processes in the industry prediction and efficiency provisions with a shorter warm-up time.

Στην παρούσα εργασία, (1 ) παρουσιάζουμε τις έννοιες της ακρίβειας διάταξης πρόβλεψης σταθερής κατάστασης και μεταβατικής, (2) δείχνουμε ότι οι τρέχουσες σχεδιάσεις υπο-αποδίδουν σε ρεαλιστικά φορτία εργασίας με συχνές μεταγωγές πλαισίου. Για την επίλυση αυτού, (3) σχεδιάζουμε μια υβριδική διάταξη πρόβλεψης και έναν καινοφανή μηχανισμό ο οποίος μπορεί να αποθηκεύει μια μειωμένη κατάσταση διάταξης πρόβλεψης κλάδου και να διατηρεί την απόδοση, κατά τη μεταγωγή ή τη μετάβαση πλαισίου. Τα αποτελέσματά μας δείχνουν ότι, σε σύγκριση με την αιχμή της τεχνολογίας, τα ποσοστά λανθασμένης πρόβλεψης μειώνονται κατά έναν συντελεστή ίσο με 2 για μεταγωγές υψηλής ανάλυσης χωρίς αύξηση του εμβαδού. Ταυτόχρονα, ο μηχανισμός μας κάνει πρακτική την απομόνωση των νημάτων, εφόσον η επαναφορά της μειωμένης κατάστασης σταματάει την ψυχρή εκτέλεσης της διάταξης πρόβλεψης. In this paper, we (1) introduce the concepts of steady-state and transient prediction layout accuracy, (2) show that current designs underperform on realistic workloads with frequent frame switches. To solve this, (3) we design a hybrid predictor and a novel mechanism that can store a reduced branch predictor state and maintain performance, during frame switching or switching. Our results show that, compared to the state of the art, the misprediction rates are reduced by a factor of 2 for high-resolution switches without increasing the area. At the same time, our mechanism makes thread isolation practical, since resetting the reduced state stops the cold execution of the predictor.

I. ΕΙΣΑΓΩΓΗ I. INTRODUCTION

Η πρόβλεψη κλάδου συμβάλλει στην υψηλή απόδοση στους σύγχρονους επεξεργαστές με βαθείς σωληναγωγούς κάνοντας δυνατή την ακριβή μελέτη. Από τη σύλληψη της ιδέας της υποθετικής εκτέλεσης, η βελτίωση αύξησε σταδιακά τη συνολική απόδοση των επεξεργαστών, καθώς οι σχεδιάσεις Πρόβλεψης Κλάδου (Branch Prediction ή ΒΡ) έχουν γίνει σταθερά πιο εξελιγμένες και σύνθετες. Branch prediction contributes to high performance in modern deep-pipeline processors by enabling accurate design. Since the conception of hypothetical execution, improvement has gradually increased the overall performance of processors as Branch Prediction (BP) designs have become steadily more sophisticated and complex.

Αρχικά, όταν υπήρχε μικρότερη ανησυχία για το εμβαδόν, και οι σωληναγωγοί γίνονταν όλο και πιο βαθείς, η ακρίβεια ήταν ο κυρίαρχος παράγοντας στη σχεδίαση των διατάξεων πρόβλεψης. Ωστόσο, καθώς η ενέργεια έγινε ένας περιοριστικός παράγοντας, οι σχεδιάσεις έπρεπε να λάβουν υπόψη περισσότερους περιορισμούς. Οι διατάξεις πρόβλεψης έπρεπε να βελτιώνουν συνεχώς την ακρίβεια ως τον κύριο στόχο τους, αλλά έπρεπε επίσης να εξετάζουν την ενέργεια και το εμβαδόν. Originally, when area was less of a concern, and pipelines were getting deeper and deeper, accuracy was the dominant factor in the design of predictors. However, as energy became a limiting factor, designs had to take more constraints into account. Predictors had to continually improve accuracy as their primary goal, but they also had to consider energy and area.

Τα συστήματα σε γενικές γραμμές έχουν γίνει σημαντικά πιο σύνθετα σήμερα, διαθέτοντας πολλαπλούς τύπους πυρήνων και επιταχυντών σε ένα μόνο καλούπι. Το λογισμικό, εκμεταλλευόμενο τις προαναφερθείσες βελτιώσεις, άλλαξε επίσης επιτρέποντας την ταυτόχρονη διαχείριση περισσότερων εφαρμογών. Οι εφαρμογές σήμερα είναι συχνά πολλαπλών νημάτων, ενώ τα συστήματα μετάγουν πλαίσιο (context switch ή CS) πιο συχνά ανάμεσα σε διαδικασίες ή ακόμη και μεταβαίνουν ανάμεσα σε πυρήνες. Systems in general have become significantly more complex today, featuring multiple types of cores and accelerators in a single die. The software, taking advantage of the aforementioned improvements, has also changed to allow more applications to be managed simultaneously. Applications today are often multi-threaded, while systems context switch (or CS) more often between processes or even switch between cores.

Αυτή η προσαρμοστικότητα της εκτέλεσης έχει κάποια επίπτωση στην πρόβλεψη κλάδου, εφόσον με κάθε μεταγωγή επιβάλλεται κάποια ποινή και ορισμένες καταστάσεις δεν είναι πια ακριβείς για προβλέψεις. Επιπλέον, οι πρόσφατα ανακαλυφθείσες μικρο-αρχιτεκτονικές τρωτότητες μπορούν να οδηγήσουν σε πιθανώς εκμεταλλεύσιμες επιθέσεις πλευρικού καναλιού, οι οποίες μπορούν να αντιμετωπίζονται με την απόρριψη της κατάστασης διάταξης πρόβλεψης κλάδου κατά τη μεταγωγή πλαισίου. Αυτή η μέθοδος απομονώνει τις διαδικασίες μεταξύ τους εξασφαλίζοντας καμία διαρροή, μολονότι εις βάρος της απόδοσης εφόσον οι διατάξεις πρόβλεψης πρέπει να επανεκκινούνται συστηματικά. This flexibility of execution has some impact on branch prediction, since with each switch some penalty is imposed and some states are no longer accurate for predictions. In addition, newly discovered micro-architectural vulnerabilities can lead to potentially exploitable side-channel attacks, which can be countered by discarding the branch predictor state during frame switching. This method isolates the processes from each other ensuring no leakage, albeit at the expense of performance since provisioning provisions must be restarted systematically.

Οι παραπάνω παρατηρήσεις μας κάνουν να πιστεύουμε ότι οι μελλοντικές σχεδιάσεις συστημάτων θα πρέπει να λαμβάνουν υπόψη τους έναν ακόμη επιπλέον περιορισμό στη σχεδίαση, αυτόν της ικανότητας αντιμετώπισης συχνών διακοπών της λειτουργίας και αποδοτικής προθέρμανσης. Για το μηχανισμό ΒΡ συγκεκριμένα, οι μελλοντικές σχεδιάσεις θα πρέπει να μπορούν να αντιμετωπίζουν συχνές μεταβάσεις μεταξύ των διαφόρων πυρήνων και παρομοίως να εγγυώνται την απομόνωση της υπόθεσης ανάμεσα στις διάφορες εφαρμογές, χωρίς συμβιβασμό στην ακρίβεια. Αυτό μπορεί να περιγράφεται διακρίνοντας ανάμεσα στην ακρίβεια των διατάξεων πρόβλεψης σταθερής κατάστασης και μεταβατικής όπως δείχνεται στο Σχήμα 13. Το Σχήμα 13 παρέχει μια σύγκριση της TAGE και της Perceptron με τη διάταξη πρόβλεψής μας, την ParTAGE (περιγράφεται παρακάτω), η οποία διατηρεί μια ελάχιστη κατάσταση ανάμεσα στις απορρίψεις. Αυτό μπορεί να μειώνει σημαντικά τις λανθασμένες προβλέψεις λόγω μεταγωγών πλαισίου, μεταβάσεων ή απαλοιφή καταστάσεων για λόγους ασφαλείας. The above observations lead us to believe that future system designs should take into account one additional design constraint, that of the ability to handle frequent outages and efficient warm-up. For the BP mechanism in particular, future designs should be able to handle frequent transitions between different cores and similarly guarantee case isolation between different applications without compromising accuracy. This can be described by distinguishing between the accuracy of steady-state and transient predictors as shown in Figure 13. Figure 13 provides a comparison of TAGE and Perceptron with our predictor, ParTAGE (described below), which maintains a minimum status between rejects. This can significantly reduce mispredictions due to frame switches, transitions, or clearing states for security reasons.

Οι συνεισφορές περιλαμβάνουν: Contributions include:

<•>Παρουσιάζουμε την έννοια της μεταβατικής ακρίβειας πρόβλεψης και δείχνουμε ότι διαφέρει από την απόδοση σταθερής κατάστασης, με την οποία αξιολογούνται σήμερα οι σχεδιάσεις. <•>We introduce the concept of transient prediction accuracy and show that it differs from the steady-state performance by which designs are currently evaluated.

· Δείχνουμε ότι οι διατάξεις πρόβλεψης κλάδου τελευταίας τεχνολογίας αποδίδουν ιδιαίτερα άσχημα, εφόσον οι συχνές μεταγωγές πλαισίου και οι μεταβάσεις δεν τους επιτρέπουν να προθερμαίνονται πλήρως. Αμφισβητούμε ότι αυτό το ζήτημα μπορεί να αντιμετωπίζεται με σχεδιάσεις που μπορούν να αντιμετωπίζουν τις συχνές διακοπές. · We show that state-of-the-art branch predictors perform particularly poorly since frequent frame switches and transitions do not allow them to fully warm up. We doubt that this issue can be addressed with designs that can handle frequent outages.

· Προτείνουμε και αξιολογούμε έναν καινοφανή μηχανισμό που μειώνει τις επιπτώσεις από την ψυχρή εκκίνηση, διατηρώντας τη μερική κατάσταση διάταξης πρόβλεψης κλάδου ανά πλαίσιο. Χρησιμοποιούμε τη σχεδίαση της διάταξης πρόβλεψης κλάδου μας, της ParTAGE, η οποία επιτυγχάνει την ίδια υψηλή ακρίβεια σε σταθερή κατάσταση αλλά έχει ανώτερη μεταβατική ακρίβεια. · We propose and evaluate a novel mechanism that mitigates the effects of cold-starting by preserving the partial state of a frame-by-frame branch prediction layout. We use our industry predictor design, ParTAGE, which achieves the same high steady-state accuracy but has superior transient accuracy.

Λόγω της υποθετικής εκτέλεσης, οι διατάξεις πρόβλεψης κλάδου αποτελούν κρίσιμο τμήμα μιας σύγχρονης σχεδίασης πυρήνων, αυξάνοντας δραστικά την απόδοση των επεξεργαστών. Ωστόσο, συμβάντα όπως οι μεταγωγές πλαισίου μπορούν να μειώνουν την ισχύουσα ακρίβεια των διατάξεων πρόβλεψης κλάδου και να έχουν ως αποτέλεσμα τη μείωση της απόδοσης. Επιπλέον, τα παραδείγματα που προσδιορίζονται σε πρόσφατες εργασίες δείχνουν ότι η μεταγωγή πλαισίου και η απώλεια της κατάστασης μιας διάταξης πρόβλεψης κλάδου θα γίνει ένα πιο σημαντικό ζήτημα για τα μελλοντικά συστήματα, επηρεάζοντας ιδιαίτερα την απόδοση λειτουργίας τους. Because of hypothetical execution, branch predictors are a critical part of a modern core design, dramatically increasing processor performance. However, events such as frame switches can reduce the applicable accuracy of branch prediction layouts and result in reduced performance. Moreover, the examples identified in recent works show that frame switching and state loss of a branch predictor will become a more important issue for future systems, particularly affecting their operational performance.

Α. Κινητήρια παραδείγματα A. Motivational examples

Προσδιορίζουμε τρία σενάρια τα οποία εγγυώνται πιο ευέλικτες διατάξεις πρόβλεψης κλάδου, οι οποίες αφομοιώνουν καλύτερα τις πληροφορίες και επιτυγχάνουν τη μέγιστη απόδοσή τους ταχύτερα. We identify three scenarios that guarantee more flexible industry forecasting layouts, which assimilate information better and reach their maximum performance faster.

Μεταβάσεις σε ετερογενή συστήματα: Η έρευνα στα ετερογενή συστήματα έδειξε ότι η δυνατότητα μεταβάσεων, τόσο συχνές όσο οι εντολές 1k, ανάμεσα σε ετερογενείς πυρήνες μπορεί να απελευθερώνει το δυναμικό απόδοσης και την εξοικονόμηση ενέργειας και να επιτρέπει τη λειτουργία σε βελτιωμένα επίπεδα προϊόντων καθυστέρησης της ενέργειας. Ωστόσο, τα πρόσφατα ευρήματα δείχνουν ότι μολονότι οι επιβαρύνσεις των εντός σειράς πυρήνων πηγάζουν κυρίως από αποτυχίες της κρυφής μνήμης και την αδυναμία κάλυψης του λανθάνοντος χρόνου της μνήμης, η ακριβής υποθετική εκτέλεση και συνεπώς η πρόβλεψη κλάδου είναι κρίσιμη για τις σχεδιάσεις των εκτός σειράς (out-of-order ή ΟοΟ) πυρήνων. Transitions in Heterogeneous Systems: Research in heterogeneous systems has shown that the ability to transition as often as 1k instructions between heterogeneous cores can unlock performance potential and power savings and enable operation at improved levels of energy delay products. However, recent findings show that although the overheads of in-line cores mainly stem from cache misses and the inability to cover memory latency, accurate hypothetical execution and thus branch prediction is critical for out-of-line (out -of-order or ОоО) cores.

Ακολουθώντας τις τρέχουσες σχεδιαστικές τάσεις, τα μελλοντικά συστήματα θα ενσωματώνουν μια πληθώρα ετερογενών πυρήνων στοχεύοντας σε συγκεκριμένες εφαρμογές. Η πρόκληση με τα ετερογενή συστήματα είναι ότι θα πρέπει να παρέχουν μια αποδοτική μεταφορά δεδομένων και πλαισίων μεταξύ των πυρήνων. Οι επιπτώσεις της ψυχρής εκκίνησης στις διατάξεις πρόβλεψης κλάδου ελαττώνουν σημαντικά την απόδοση έως και 40% σε σενάρια συχνών μεταβάσεων, όπως δείχνεται στο Σχήμα 14, το οποίο δείχνει ένα προσομοιωμένο σύστημα χρησιμοποιώντας μια σχεδίαση πυρήνων εκτός σειράς η οποία πραγματοποιεί μια μετάβαση στον ίδιο τύπο πυρήνα σε διαφορετικές περιόδους εντολών. Οι συμπαγείς γραμμές χάνουν την κατάσταση ΒΡ, ενώ αυτές με το περίγραμμα τη διατηρούν. Τα αποτελέσματα κανονικοποιούνται σε ένα σύστημα το οποίο συνεχίζει χωρίς μεταβάσεις. Following current design trends, future systems will incorporate a multitude of heterogeneous cores targeting specific applications. The challenge with heterogeneous systems is that they should provide an efficient transfer of data and frames between cores. The effects of cold start on branch predictors significantly degrade performance by up to 40% in frequent transition scenarios, as shown in Figure 14, which shows a simulated system using an out-of-order core design that performs a transition to the same core type in different command periods. Solid lines lose BP status, while outline ones retain it. The results are normalized to a system which continues without transitions.

Η κοινή χρήση των διατάξεων πρόβλεψης κλάδου θα ήταν μια λύση, ωστόσο, αυτό είναι προβληματικό επειδή οι διατάξεις πρόβλεψης κλάδου συνδέονται άμεσα με τους πυρήνες και έχουν πολύ αυστηρούς περιορισμούς όσον αφορά στο λανθάνοντα χρόνο ώστε να είναι δυνατή η έγκαιρη παροχή των προβλέψεων. Επιπλέον, τα ετερογενή συστήματα συνδυάζουν δραστικά διαφορετικές σχεδιάσεις πυρήνων, ώστε να καλύπτουν περισσότερα σημεία ενέργειας/απόδοσης της λειτουργίας. Ως τέτοιος ένας πυρήνας ΙηΟ έχει πολύ μικρότερο μετωπικό άκρο με μια μικρότερη διάταξη πρόβλεψης κλάδου σε σύγκριση με τους επιθετικούς πυρήνες ΟοΟ. Αντί της άμεσης κοινής χρήσης, αναλύουμε τις διατάξεις πρόβλεψης κλάδου για την “ουσιώδη” κατάστασή τους και δείχνουμε πως μπορεί να χρησιμοποιείται (ή να μεταφέρεται) αυτή για τη βελτίωση της συμπεριφοράς κατά την ψυχρή εκκίνηση. Sharing branch predictors would be a solution, however, this is problematic because branch predictors are directly tied to the cores and have very tight latency constraints to be able to provide predictions in time. In addition, heterogeneous systems combine drastically different core designs to cover more energy/performance points of operation. As such an InO core has a much smaller front end with a smaller branch predictor arrangement compared to aggressive CoO cores. Instead of direct sharing, we analyze branch prediction provisions for their "essential" state and show how this can be used (or ported) to improve cold-start behavior.

Ασφάλεια, απομόνωση και υποθετικά πλευρικά κανάλια: Ένα άλλο ζήτημα που απαιτεί προσοχή για τις μελλοντικές σχεδιάσεις διατάξεων πρόβλεψης κλάδου πηγάζει από τα πιθανά μικρο-αρχιτεκτονικά προγράμματα εκμετάλλευσης ατελειών που σχετίζονται με την υποθετική εκτέλεση. Οι πρόσφατες έρευνες έδειξαν ότι στις περισσότερες σύγχρονες σχεδιάσεις CPU είναι δυνατές επιθέσεις πλευρικού καναλιού με τις οποίες διαρρέουν ευαίσθητα δεδομένα. Καθώς αυτά τα προγράμματα εκμετάλλευσης ατελειών εκμεταλλεύονται τις παραλείψεις υλικού κατά το χρόνο της σχεδίασης, οι τεχνικές αντιμετώπισης συχνά είναι δύσκολες, μη πρακτικές λόγω ιδιαίτερων απωλειών στην απόδοση ή πλήρως μη επιδιορθούμενες. Τα προγράμματα εκμετάλλευσης ατελειών Spectre και BranchScope είναι ένα ενδεικτικό παράδειγμα του εύρους αυτών των απειλών, τόσο όσον αφορά στον κίνδυνο που παρουσιάζουν, όσο και στη δυσκολία αντιμετώπισής τους σε ήδη ανεπτυγμένο υλικό. Security, Isolation, and Hypothetical Side-Channels: Another issue requiring attention for future branch prediction device designs stems from potential micro-architectural exploits associated with hypothetical execution. Recent research has shown that side-channel attacks that leak sensitive data are possible in most modern CPU designs. As these exploits exploit design-time hardware omissions, countermeasures are often difficult, impractical due to particular performance losses, or completely unfixable. The Specter and BranchScope exploits are an illustrative example of the scope of these threats, both in terms of the risk they present and the difficulty of addressing them on already developed hardware.

Μολονότι έχουν αναπτυχθεί τεχνικές αντιμετώπισης για τα γνωστά προγράμματα εκμετάλλευσης ατελειών, παραμένει το ερώτημα για τα πιθανά άγνωστα προγράμματα εκμετάλλευσης ατελειών και κατά πόσο οι σημερινές διασφαλίσεις είναι αποτελεσματικές. Η απομόνωση συνήθως γίνεται αποδεκτή ως ένα επαρκές μέτρο εξασφάλισης ότι δε θα υπάρξουν διαρροές, όμως συχνά είναι εις βάρος της απόδοσης. Για την πρόβλεψη κλάδου, η απαλοιφή της διάταξης πρόβλεψης κλάδου από οποιαδήποτε κατάσταση για κάθε μεταγωγή πλαισίου θεωρείται ότι μεριμνά για τέτοια πλευρικά κανάλια, αλλά με μείωση της απόδοσης με κάθε μεταγωγή. Μια πιο ευέλικτή σχεδίαση η οποία μπορεί να εκπαιδεύει αποτελεσματικά και να επιτυγχάνει γρήγορα την απόδοσή της σε σταθερή κατάσταση θα είναι χρήσιμη σε έναν κόσμο μετά το Meltdown και το Spectre. Although countermeasures have been developed for known exploits, the question remains about potential unknown exploits and whether current safeguards are effective. Isolation is usually accepted as a sufficient measure to ensure that there will be no leaks, but it is often at the expense of performance. For branch prediction, removing the branch predictor from any state for each frame switch is assumed to take care of such side channels, but with a reduction in throughput with each switch. A more flexible design that can train efficiently and quickly reach steady-state performance will be useful in a post-Meltdown and Spectre world.

Η αύξηση στις μεταγωγές πλαισίου : Ένας επιπλέον λόγος που μας ωθεί στη βελτίωση της συμπεριφοράς των διατάξεων πρόβλεψης κλάδου κατά την προθέρμανση πηγάζει από την απώλεια στην απόδοση κατά τη μεταγωγή πλαισίου. Ακόμη και για μικρές και απλές σχεδιάσεις, οι μεταγωγές πλαισίου υποβαθμίζουν την απόδοση, ενώ οι επιπτώσεις εντείνονται με την αύξηση της πολυπλοκότητας και του μεγέθους των διατάξεων πρόβλεψης. Για παράδειγμα, η διαφορά στο ποσοστό πρόβλεψης μιας αρχικής διάταξης πρόβλεψης λοξότητας 1k είναι 7%. Παρουσιάζουμε στον Πίνακα I αριθμούς μεταγωγής πλαισίου που εξάγονται από μια σύγχρονη κινητή συσκευή (τηλέφωνο Google Pixel): The increase in frame switches: An additional reason that drives us to improve the behavior of branch predictors during warm-up stems from the performance loss during frame switches. Even for small and simple designs, frame switches degrade performance, and the effects intensify as the complexity and size of prediction devices increase. For example, the difference in prediction rate of an initial 1k skewness prediction array is 7%. We present in Table I frame switching numbers extracted from a modern mobile device (Google Pixel phone):

Πίνακας I: Table I:

Αυτοί δείχνουν ότι οι μεταγωγές πλαισίου για εφαρμογές Android μπορεί να φτάνουν και τις 32k ανά δευτερόλεπτο. Αυτό χονδρικά μεταφράζεται σε 1 μεταγωγή πλαισίου με κάθε 64k εντολές ή κάθε 12k εντολές διακλάδωσης. Μετρήσαμε ότι ένα αδρανές σύστημα έχει 4000CS/S. These show that frame switches for Android apps can reach up to 32k per second. This roughly translates to 1 frame switch every 64k instructions or every 12k branch instructions. We measured an idle system to have 4000CS/S.

Ένα άλλο ενδιαφέρον σημείο είναι ότι παραδοσιακά, οι συσκευές (όπως οι I/O, οι μη πτητικές μνήμες και οι επιταχυντές) είχαν ένα λανθάνοντα χρόνο στην περιοχή των χιλιοστών του δευτερολέπτου ενώ οι μεταγωγές πλαισίου ολοκληρώνονταν σε εκατομμυριοστά του δευτερολέπτου. Αυτό σήμαινε ότι ένα σύστημα θα μπορούσε να πραγματοποιεί μεταγωγές πλαισίου και να παραμένει χρήσιμο αντί να περιμένει. Ωστόσο, αυτές οι επιβαρύνσεις της τάξης των χιλιοστών του δευτερολέπτου αναμένεται να μειωθούν στο μέλλον και να γίνουν συγκρίσιμες με αυτές της μεταγωγής πλαισίου. Τα συστήματα θα βρίσκουν λιγότερες ευκαιρίες κάλυψης του λανθάνοντα χρόνου των συσκευών μέσω των μεταγωγών, καθώς αυτά τα εκμεταλλεύσιμα παράθυρα γίνονται μικρότερα. Για την επίλυση αυτού, οι μεταγωγές πλαισίου θα πρέπει να γίνουν πιο αποδοτικές και να επιτρέπουν την πολυπλεξία των ροών εκτέλεσης σε πιο αναλυτικό επίπεδο. Another interesting point is that traditionally, devices (such as I/O, non-volatile memories, and accelerators) had a latency in the millisecond range while frame switches completed in millionths of a second. This meant that a system could perform frame switches and remain useful instead of waiting. However, these millisecond overheads are expected to decrease in the future and become comparable to those of frame switching. Systems will find fewer opportunities to cover device latency through switches as these exploitable windows become smaller. To solve this, frame switches should be made more efficient and allow execution streams to be multiplexed at a more granular level.

Συνεπώς αμφισβητούμε την επανασχεδίαση εξαρτημάτων όπως οι διατάξεις πρόβλεψης κλάδου ώστε να μπορούν να προσαρμόζονται σε πιο πτητικά περιβάλλοντα, όπου οι μεταγωγές πλαισίου είναι συχνότερες και έχουν μικρή διάρκεια ζωής. We therefore question redesigning components such as branch predictors to accommodate more volatile environments where frame switches are more frequent and short-lived.

Β. Σχεδίαση πρόβλεψης κλάδου B. Industry forecasting design

Η πρόβλεψη κλάδου έχει εξελιχθεί με τα χρόνια από μικρές και απλές σχεδιάσεις σε μεγάλες, σύνθετες δομές που αποθηκεύουν μεγάλα ιστορικά ροής ελέγχου. Στο παρόν, εστιάζουμε σε δύο σχεδιάσεις: τη διάταξη πρόβλεψης TAGE και τη διάταξη πρόβλεψης Multiperspective Perceptron. Branch forecasting has evolved over the years from small and simple designs to large, complex structures that store long histories of control flow. Here, we focus on two designs: the TAGE predictor and the Multiperspective Perceptron predictor.

Βασισμένες σε TAGE διατάξεις πρόβλεψης. Η διάταξη πρόβλεψης TAGE είναι μια από τις πλέον ακριβείς σχεδιάσεις. Χρησιμοποιεί γεωμετρικά μήκη ιστορικού με ετικέτα τα οποία συλλαμβάνουν τη συσχέτιση από απομακρυσμένα αποτελέσματα κλάδου και το πρόσφατο ιστορικό. Εσωτερικά, η TAGE αποτελείται από πίνακες που αποθηκεύουν τις πληροφορίες για διάφορα μήκη ιστορικού. Εν συντομία, όταν απαιτείται μια πρόβλεψη, η TAGE αναζητά την ταύτιση που ανήκει στον πίνακα με το μεγαλύτερο ιστορικό. Εάν δε βρεθεί κάποια ταύτιση χρησιμοποιεί τη διάταξη πρόβλεψης μετάπτωσής της, μια δισταθή σχεδίαση, ως ένα μηχανισμό μετάπτωσης. TAGE-based predictive layouts. The TAGE forecaster is one of the most accurate designs. It uses geometric labeled history lengths that capture correlation from remote branch results and recent history. Internally, TAGE consists of arrays that store the information for various history lengths. Briefly, when a prediction is required, TAGE looks for the match that belongs to the table with the longest history. If no match is found it uses its transition predictor, a bistable design, as a transition mechanism.

Η σχεδίαση TAGE έχει βελτιωθεί με τα χρόνια και ενσωματώνει και άλλα μικρά εξαρτήματα ώστε να βελτιώνει περαιτέρω την απόδοσή της σε περιπτώσεις στις οποίες η αρχική σχεδίαση αποδείχθηκε ότι προέβλεπε συχνά λανθασμένα. Για παράδειγμα, η διάταξη πρόβλεψης TAGE-SC-L ενσωματώνει επίσης ένα στατιστικό διορθωτή και μια διάταξη πρόβλεψης βρόχου όπως δείχνεται στο Σχήμα 15. The TAGE design has been refined over the years and incorporates other small components to further improve its performance in situations where the original design proved to often mispredict. For example, the TAGE-SC-L predictor also incorporates a statistical corrector and a loop predictor as shown in Figure 15.

Διατάξεις πρόβλεψης τύπου Perceptron: Η διάταξη πρόβλεψης Perceptron βασίζεται σε γενικές γραμμές στη θεωρία των νευρωνικών δικτύων. Οι διατάξεις πρόβλεψης τύπου Perceptron επιτυγχάνουν υψηλή ακρίβεια από αποτελεσματικά αποθηκευμένες καταστάσεις. Η αρχή λειτουργίας της Perceptron, όπως δείχνεται στο Σχήμα 16, χρησιμοποιεί έναν πίνακα με σύνολα βαρών τα οποία πολλαπλασιάζονται με τα ιστορικά bit. Η έξοδος και η εμπιστοσύνη της διάταξης πρόβλεψης εξαρτάται από το πρόσημο του αθροίσματος όλων των γινομένων ιστορικού y<x>βάρους. Η εμπιστοσύνη μπορεί να συνάγεται από το εύρος του αθροίσματος των γινομένων. Οι σύγχρονες εκδόσεις της Perceptron έχουν ελαττώσει τον όγκο των υπολογισμών που απαιτούνται για κάθε πρόβλεψη και χρησιμοποιούν πολλαπλούς πίνακες συμβόλων δίεσης με βάρη οι οποίοι δεικτοδοτούνται με τη χρήση τόσο του ιστορικού όσο και της διεύθυνσης κλάδου (PC). Αυτοί οι πίνακες αναφέρονται συνήθως ως πίνακες χαρακτηριστικών. Στις πιο σύγχρονες Perceptron, αντί ουσιαστικά του πολλαπλασιασμού τμημάτων του ιστορικού με τα βάρη, τα τμήματα του ιστορικού χρησιμοποιούνται για τη δεικτοδότηση των πινάκων βαρών, ενώ τα βάρη που επιλέγονται με βάση το ιστορικό και/ή τον PC προστίθενται απευθείας στη συνέχεια για τη διαμόρφωση της πρόβλεψης (χωρίς να απαιτείται ο πολλαπλασιασμός των βαρών με το ιστορικό). Perceptron-type prediction devices: Perceptron prediction devices are broadly based on neural network theory. Perceptron-type predictors achieve high accuracy from efficiently stored states. The working principle of the Perceptron, as shown in Figure 16, uses a table of sets of weights which are multiplied by the historical bits. The output and confidence of the predictor depends on the sign of the sum of all historical y<x>weight products. Confidence can be inferred from the range of the sum of the products. Modern versions of the Perceptron have reduced the amount of computation required for each prediction and use multiple matrixes of weighted die symbols which are indexed using both the history and the sector (PC) address. These tables are commonly referred to as feature tables. In more modern Perceptrons, instead of actually multiplying segments of history by weights, segments of history are used to index the weight matrices, and weights chosen based on history and/or PC are added directly afterwards to form the prediction (without requiring the multiplication of the weights by the history).

IΙI. ΕΥΕΛΙΞΙΑ ΔΙΑΤΑΞΕΩΝ ΠΡΟΒΛΕΨΗΣ III. FLEXIBILITY OF FORECAST PROVISIONS

Οι διατάξεις κλάδου αξιολογούνται με βάση πόσο ακριβείς είναι οι προβλέψεις τους, με δεδομένη μια εύλογη ποσότητα ιστορικού από το οποίο μπορεί να μάθει. Ωστόσο σε πολλές πραγματικές περιπτώσεις λειτουργούν σε χρονικά πλαίσια πολύ συντομότερα από το ιδανικό, προβλέποντας από μια μερικώς θερμή, μερικώς αντικατασταθείσα κατάσταση. Οι μεγάλες διατάξεις πρόβλεψης οι οποίες αποθηκεύουν περισσότερες πληροφορίες έχουν συνήθως τη δυνατότητα παροχής καλύτερων προβλέψεων. Ωστόσο, εάν η κατάσταση χαθεί ή ακυρωθεί προτού η διάταξη πρόβλεψης προλάβει να θερμανθεί, τότε ουσιαστικά δε θα φτάσει την κορυφαία απόδοση. Σε αυτή την περίπτωση, μια μικρότερη διάταξη πρόβλεψης μπορεί να έχει τη δυνατότητα παροχής ισοδύναμης απόδοσης για ένα κλάσμα της κατάστασης. Branch layouts are evaluated based on how accurate their predictions are, given a reasonable amount of history from which to learn. However, in many real-world cases they operate on time frames much shorter than ideal, predicting from a partially warm, partially replaced state. Large predictors that store more information usually have the potential to provide better predictions. However, if the state is lost or aborted before the prediction device has time to warm up, then it will essentially not reach peak performance. In this case, a smaller predictive array may be able to provide equivalent performance for a fraction of the situation.

Α. Ακρίβεια σταθερής κατάστασης και μεταβατική A. Steady-state and transient accuracy

Διακρίνουμε επομένως μεταξύ ακρίβειας σταθερής κατάστασης και μεταβατικής ακρίβειας. Ο όρος ακρίβεια σταθερής κατάστασης αναφέρεται στην απόδοση της διάταξης πρόβλεψης κλάδου όταν έχει κορεστεί πλήρως. Αντίθετα, η μεταβατική ακρίβεια περιγράφει τη συμπεριφορά μιας διάταξης πρόβλεψης κατά τη φάση της προθέρμανσης. Για την ποσοτικοποίηση της μεταβατικής ακρίβειας, προτείνουμε την απόρριψη της κατάστασης διάταξης πρόβλεψης κλάδου σε διάφορες περιόδους εντολών διακλάδωσης και την παρακολούθηση της αλλαγής σε μέσο όρο λανθασμένων προβλέψεων ανά χιλιάδα εντολών (mispredictions per kiloinstruction ή ΜΡΚΙ). We therefore distinguish between steady-state accuracy and transient accuracy. The term steady-state accuracy refers to the performance of the branch predictor when fully saturated. In contrast, transient accuracy describes the behavior of a predictor during the warm-up phase. To quantify the transient accuracy, we propose to discard the state of the branch prediction array at various branch instruction periods and monitor the change in average mispredictions per kiloinstruction (MPKI).

Β. Διατήρηση της υποθετικής κατάστασης B. Preserving the Hypothetical Status

Για τη βελτίωση της μεταβατικής ακρίβειας, προτείνουμε ένα μηχανισμό (Σχήμα 17) ο οποίος επιτρέπει την αποθήκευση της κατάστασης της διάταξης πρόβλεψης κλάδου. Ο μηχανισμός, ο οποίος διεγείρεται μετά από μεταγωγές πλαισίου ή μεταβάσεις, αποθηκεύει την κατάσταση σε μια αποκλειστική προσωρινή μνήμη που ονομάζεται προσωρινή μνήμη καταστάσεων κλάδου (branch state buffer ή BSB). To improve the transient accuracy, we propose a mechanism (Figure 17) which allows the state of the branch predictor to be stored. The mechanism, which is triggered after frame switches or transitions, stores the state in a dedicated buffer called the branch state buffer (BSB).

Η προσωρινή μνήμη καταστάσεων κλάδου συνδέεται στενά με τη διάταξη πρόβλεψης κλάδου και μπορεί να διατηρεί πολλές ξεχωριστές καταχωρήσεις. Ιδανικά, η αποθήκευση ολόκληρης της κατάστασης θα επέτρεπε υψηλή ακρίβεια χωρίς χρόνο προθέρμανσης. Ωστόσο, το μέγεθος των σχεδιάσεων σήμερα είναι πολύ μεγάλο για πλήρη αποθήκευση χωρίς την επιβολή σημαντικών επιβαρύνσεων. Γ ια τη μείωση του επιπλέον κόστους μεταφοράς και αποθήκευσης, σκοπεύουμε να κάνουμε αυτό το εξάρτημα όσο το δυνατόν μικρότερο. Βρίσκουμε ότι τα 10kBit (1 ,25kB) είναι ένα χρήσιμο μέγεθος στα πειράματά μας. Προτείνουμε επομένως τη χρήση μιας μειωμένης κατάστασης η οποία θυσιάζει την ακρίβεια, αλλά μπορεί κι έτσι να παρέχει καλύτερη απόδοση από μια μεγάλη αλλά “ψυχρή” διάταξη πρόβλεψης. The branch state cache is closely related to the branch predictor and can hold many separate entries. Ideally, storing the entire state would allow high accuracy with no warm-up time. However, the size of designs today is too large to fully store without imposing significant overhead. To reduce extra shipping and storage costs, we intend to make this component as small as possible. We find 10kBit (1.25kB) to be a useful size in our experiments. We therefore suggest using a reduced state which sacrifices accuracy but may still provide better performance than a large but “cold” predictor.

Ένα επιπλέον πλεονέκτημα της αποθήκευσης μιας μειωμένης κατάστασης είναι ότι κάνει την απομόνωση των διαδικασιών αποτελεσματική και κατά συνέπεια βελτιώνει την ασφάλεια. Η αποθήκευση της κατάστασης της διάταξης πρόβλεψης κλάδου στην επιπλέον προσωρινή μνήμη στις μεταγωγές πλαισίου, η διατήρηση αυτής της κατάστασης ανά διαδικασία και η επαναφορά της κατά τη συνέχιση του πλαισίου (με μια διαφορετικά καθαρισμένη διάταξη πρόβλεψης) εξασφαλίζει ότι η κατάσταση της διάταξης πρόβλεψης κλάδου δε χρησιμοποιείται ποτέ από κοινού ανάμεσα σε αμοιβαία αναξιόπιστες διαδικασίες και τον πυρήνα. Η μείωση της απόδοσης αμβλύνεται σε αυτή την περίπτωση, εφόσον η διατηρηθείσα κατάσταση διατηρεί ένα τμήμα της απόδοσης. An additional advantage of storing a reduced state is that it makes process isolation effective and thus improves security. Storing the state of the branch predictor in the extra buffer on frame switches, maintaining this state per process, and restoring it during frame resumption (with an otherwise cleared predictor) ensures that the state of the branch predictor is not used never shared between mutually untrusted processes and the kernel. Performance degradation is mitigated in this case, since the preserved state preserves a portion of the performance.

Η μελέτη μας εξετάζει τις διατάξεις πρόβλεψης TAGE και Perceptron οι οποίες είναι ιδιαίτερα δομούμενες. Τις κατατεμαχίζουμε και προσδιορίζουμε τον καλύτερο τρόπο μείωσης της κατάστασής τους ώστε να είναι δυνατή η διατήρηση του μεγαλύτερου ποσοστού της απόδοσης σε καταστάσεις συχνών μεταγωγών. Our study examines TAGE and Perceptron prediction devices which are highly structured. We break them down and determine the best way to reduce their state so that the greatest percentage of performance can be preserved in frequent switching situations.

Η TAGE χρησιμοποιεί μια δισταθή βασική διάταξη πρόβλεψης, έναν αριθμό (π.χ. 12) πινάκων για την κύρια διάταξη πρόβλεψης TAGE, ένα στατιστικό διορθωτή και μια διάταξη πρόβλεψης βρόχου. Αυτά τα εξαρτήματα διαφοροποιούνται σε μέγεθος και πόσο επηρεάζουν τη συνολική ακρίβεια. Αξιολογούμε τη συμβολή τους στην πρόβλεψη καθώς η διάταξη πρόβλεψης προθερμαίνεται για διάφορες συχνότητες απόρριψης καταστάσεων. TAGE uses a bistable core predictor, a number (eg 12) of matrices for the TAGE core predictor, a statistical corrector, and a loop predictor. These components vary in size and how much they affect overall accuracy. We evaluate their contribution to the prediction as the predictor is warmed up for various states rejection frequencies.

Η αξιολογηθείσα σχεδίαση Multiperspective Perceptron χρησιμοποιεί πολλαπλούς πίνακες hash για την παροχή μιας πρόβλεψης. Η σχεδίαση χρησιμοποιεί επίσης ορισμένα βοηθητικά εξαρτήματα για τη βελτίωση της ακρίβειας, για παράδειγμα ο επαναλήπτης εσώτερου βρόχου (inner most loop iterator ή IMLI) καθώς και πολλές εγγραφές που παρακολουθούν όταν απαντήθηκαν ορισμένοι κλάδοι στο παρελθόν. The evaluated Multiperspective Perceptron design uses multiple hash tables to provide a prediction. The design also uses some helpers to improve accuracy, for example the inner most loop iterator (IMLI) as well as several registers that keep track of when certain branches have been answered in the past.

Το ερώτημα, σε αυτή την περίπτωση, είναι ποια μέθοδος χρησιμοποιείται για τη μείωση των δεδομένων με τον πλέον συγκρουσιακό τρόπο. Αυτό το ερώτημα δεν είναι ασήμαντο, εφόσον συνδέεται άμεσα με την υλοποίηση ΒΡ και την ποσότητα των καταστάσεων που μπορούν να αποθηκεύονται αποτελεσματικά όταν λαμβάνονται υπόψη οι περιορισμοί επιβάρυνσης. Εξετάζουμε τεχνικές μείωσης των καταστάσεων και για τις δύο διατάξεις πρόβλεψης οι οποίες συνδέονται στενά με τα συγκεκριμένα στοιχεία κάθε γραμμής βάσης και δείχνουμε τον τρόπο βελτιστοποίησης της μείωσης των δεδομένων έναντι της ακρίβειας της διατηρηθείσας πρόβλεψης. The question, in this case, is which method is used to reduce the data in the most conflicting way. This question is not trivial since it is directly related to BP implementation and the amount of states that can be efficiently stored when overhead constraints are taken into account. We review state reduction techniques for both forecast layouts that are closely related to the specifics of each baseline and show how to optimize data reduction against retained forecast accuracy.

Ένας τρόπος για τη διατήρηση της κατάστασης είναι η επιλογή ορισμένων εξαρτημάτων που παρέχουν μια καλή ισορροπία ανάμεσα στην ποσότητα των δεδομένων που αποθηκεύονται και στην ακρίβεια που επιτυγχάνεται και απορρίπτουν την κατάσταση των υπολειπόμενων εξαρτημάτων. Αυτή η μέθοδος “κάθετης κοπής” μπορεί να χρησιμοποιείται στην περίπτωση της TAGE εφόσον αποτελείται από διάφορα εξαρτήματα τα οποία μπορούν να παρέχουν ακριβείς αυτόνομες προβλέψεις. One way to preserve state is to select some components that provide a good balance between the amount of data stored and the accuracy achieved and discard the state of the remaining components. This "vertical cut" method can be used in the case of TAGE since it consists of several components that can provide accurate stand-alone predictions.

Γ ια παράδειγμα, η βασική διάταξη πρόβλεψης μπορεί να απομονώνεται από τα υπόλοιπα εξαρτήματα και εντούτοις να παρέχει μια εύλογη ακρίβεια. Παρόμοια, μπορούν να διατηρούνται ξεχωριστοί πίνακες TAGE αντί ολόκληρης της σχεδίασης, για τη στόχευση συγκεκριμένων μεγεθών ιστορικού. For example, the basic predictor may be isolated from the rest of the components and still provide reasonable accuracy. Similarly, separate TAGE arrays can be maintained instead of the entire design, to target specific history sizes.

Ορισμένα εξαρτήματα ωστόσο, παρέχουν μόνο συμπληρωματικά πλεονεκτήματα στις προβλέψεις. Επομένως δεν έχει νόημα η εξέταση της διατήρησης της κατάστασης όλων των εξαρτημάτων. Για παράδειγμα, η διάταξη πρόβλεψης βρόχου είναι ένα σχετικά μικρό εξάρτημα το οποίο προσδιορίζει τους τακτικούς βρόχους με ένα σταθερό αριθμό επαναλήψεων. Η συνολική επίδραση αυτού του εξαρτήματος στην ακρίβεια της TAGESCL μετρήθηκε ίση περίπου με βελτίωση 0,3%. Some components, however, only provide additional benefits to predictions. So it doesn't make sense to consider maintaining the state of all components. For example, the loop predictor is a relatively small component that identifies regular loops with a fixed number of iterations. The overall effect of this component on the accuracy of TAGESCL was measured to be approximately 0.3% improvement.

Ένας άλλος τρόπος διατήρησης της κατάστασης είναι η μερική αποθήκευση της κατάστασης σε όλα τα εξαρτήματα της διάταξης πρόβλεψης. Για την TAGE αυτό μπορεί να πραγματοποιηθεί αποθηκεύοντας αφελώς ένα τμήμα κάθε ενός από τους πίνακες TAGE. Η λογική αυτής της “οριζόντιας" προσέγγισης είναι η σύλληψη των πληροφοριών σε όλο το ιστορικό, μολονότι με μικρότερη ακρίβεια από την αποθήκευση ολόκληρης της κατάστασης. Η ίδια μέθοδος μπορεί να χρησιμοποιείται για τη διατήρηση της κατάστασης Multiperspective Perceptron, εφόσον όλοι οι πίνακες συνδυάζονται ώστε να παρέχουν ακριβείς προβλέψεις. Αυτή η περίπτωση μπορεί να αποθηκεύει περισσότερες πληροφορίες εφόσον οι πίνακες perceptron έχουν από τη σχεδίασή τους πολλαπλούς δείκτες οι οποίοι συμπυκνώνουν τον όγκο των δεδομένων που αποθηκεύονται σε κάθε καταχώρηση. Another way to preserve state is to partially store state across all predictor components. For TAGE this can be done by naively storing a section of each of the TAGE arrays. The logic of this "horizontal" approach is to capture the information throughout the history, albeit with less precision than storing the entire state. The same method can be used to maintain the Multiperspective Perceptron state, as long as all arrays are combined to provide accurate predictions.This case can store more information since perceptron arrays are designed to have multiple pointers which condense the amount of data stored in each entry.

C. Perceptron ενισχυμένη / ενδυναμωμένη TAGE C. Perceptron enhanced / empowered TAGE

Προτείνουμε μια υβριδική προσέγγιση για τη διατήρηση της κατάστασης την οποία ονομάζουμε ParTAGE - Perceptron amplified / reinforced TAGE ή Perceptron ενισχυμένη / ενδυναμωμένη TAGE. Αυτή η σχεδίαση χρησιμοποιεί μια διάταξη πρόβλεψης Multiperspective Perception με μικρότερους και λιγότερους πίνακες χαρακτηριστικών ως τη βασική διάταξη πρόβλεψης της σχεδίασης TAGE, αντικαθιστώντας τη δισταθή διάταξη πρόβλεψης. Η Perceptron που χρησιμοποιείται έχει το ίδιο μέγεθος με την αντικατασταθείσα δισταθή καταναλώνοντας έως 10kbit “προϋπολογισμού”. We propose a hybrid approach to state maintenance which we call ParTAGE - Perceptron amplified / reinforced TAGE. This design uses a Multiperspective Perception predictor with smaller and fewer feature matrices as the basic predictor of the TAGE design, replacing the bistable predictor. The Perceptron used is the same size as the replaced bistable consuming up to 10kbit of “budget”.

Η ParTAGE ενσωματώνει επίσης μια προσωρινή μνήμη καταστάσεων κλάδου, η οποία είναι ένα πολλαπλάσιο της βασικής διάταξης πρόβλεψης σε μέγεθος. Αυτή η συμβατότητα μεγέθους επιτρέπει στην ParTAGE να αποθηκεύει την κατάσταση Perceptron στην προσωρινή μνήμη καταστάσεων κλάδου κατά τη διακοπή της εκτέλεσης ενός πλαισίου και να την επαναφέρει όταν συνεχίζει. Αυτό αντιμετωπίζει τα ζητήματα που περιγράφηκαν παραπάνω, εφόσον η κατάσταση μπορεί με αυτό τον τρόπο να διατηρείται καθ’ όλη τη διάρκεια των μεταγωγών πλαισίου. ParTAGE also incorporates a branch state cache, which is a multiple of the basic prediction array in size. This size compatibility allows ParTAGE to store Perceptron state in the branch state buffer when stopping a frame's execution and restore it when it resumes. This addresses the issues described above, as state can thus be maintained throughout frame switches.

Επιπλέον, εφόσον η κατάσταση αποθηκεύεται ανά πλαίσιο στην BSB, η υπόλοιπη σχεδίαση της διάταξης πρόβλεψης κλάδου μπορεί να απαλείφεται ώστε να εξαλείφεται η πιθανότητα διαρροών πλευρικού καναλιού που στοχεύουν στη διάταξη πρόβλεψης κλάδου. Για τις μεταβάσεις ανάμεσα σε πυρήνες, η αντίστοιχη κατάσταση BSB μπορεί επίσης να ωθείται στον πυρήνα-στόχο για τη μείωση των επιβαρύνσεων μεταφοράς. Αυτό μπορεί επίσης να εφαρμόζεται και σε ετερογενείς πολύεπεξεργαστές, όπου η βασική διάταξη πρόβλεψης ενός πυρήνα ΟοΟ ταυτίζεται τέλεια με ολόκληρη τη διάταξη πρόβλεψης του συνδεδεμένου εντός σειράς πυρήνα που χρησιμοποιείται για απόδοση. Αυτό δείχνεται στο Σχήμα 18. Για παράδειγμα, η διάταξη πρόβλεψης κλάδου στον εντός σειράς πυρήνα (δεύτερο στοιχείο επεξεργασίας) μπορεί να έχει ακριβώς την ίδια σχεδίαση με τη βασική διάταξη πρόβλεψης της διάταξης πρόβλεψης κλάδου ParTAGE στον εκτός σειράς πυρήνα (πρώτο στοιχείο επεξεργασίας), ώστε να κάνει σαφή τη μετάβαση των φορτίων εργασίας ανάμεσα στους πυρήνες. Μετά τη μετάβαση ενός φορτίου εργασίας από τον πυρήνα ΟοΟ στον πυρήνα In-Ο, η κατάσταση πρόβλεψης κλάδου που σχετίζεται με άλλα τμήματα της ParTAGE εκτός της βασικής διάταξης πρόβλεψης μπορεί να απορρίπτεται, ενώ μετά τη μετάβαση ενός φορτίου εργασίας από τον πυρήνα Ιη-0 στον πυρήνα ΟοΟ, αυτά τα άλλα τμήματα της ParTAGE μπορούν να αρχικοποιούνται με προεπιλεγμένες τιμές. Additionally, since the state is stored per frame in the BSB, the rest of the branch predictor design can be eliminated to eliminate the possibility of side-channel leaks targeting the branch predictor. For transitions between cores, the corresponding BSB state can also be pushed to the target core to reduce transfer overheads. This can also be applied to heterogeneous multiprocessors, where the basic prediction arrangement of a ccO core is perfectly identical to the entire prediction arrangement of the inline core used for rendering. This is shown in Figure 18. For example, the branch predictor in the in-line core (second processing element) can have exactly the same design as the basic predictor of the ParTAGE branch predictor in the out-of-order core (first processing element), so to make the transition of workloads between cores clear. After a workload transitions from the C0O core to the In-O core, the branch prediction state associated with parts of ParTAGE other than the basic prediction layout may be discarded, while after a workload transitions from the In-0 core to the In-0 core OO kernel, these other parts of ParTAGE can be initialized with default values.

Για τη μείωση του μεγέθους της Perceptron στα πλαίσια του εκχωρημένου προϋπολογισμού, χρησιμοποιούμε μια παρόμοια διαμόρφωση με την 8kB Multiperspective Perceptron με 8 μικρότερους πίνακες χαρακτηριστικών αντί των 16. Το περιορισμένο μέγεθος της Perceptron στην ParTAGE επιτρέπει τη διατήρηση της κατάστασής της κατά τη μεταγωγή πλαισίου ή τη μετάβαση. Στην ενδιάμεση κατάσταση προθέρμανσης, η ParTAGE έχει επιλέξει ανάμεσα στη μεταβατική πρόβλεψη των πινάκων TAGE και την πρόβλεψη σταθερής κατάστασης της διατηρημένης Perceptron. Σχεδιάζουμε δύο εκδόσεις ParTAGE, μια που καλωδιώνει τη διάταξη πρόβλεψης Perceptron ώστε να επιλέγεται πάντα κατά τη μεταβατική φάση της διάταξης πρόβλεψης και μια που αξιολογεί την εμπιστοσύνη της πρόβλεψης της βασικής διάταξης πρόβλεψης perceptron πριν την επιλογή του αποτελέσματος. To reduce the size of the Perceptron within the allocated budget, we use a similar configuration to the 8kB Multiperspective Perceptron with 8 smaller feature matrices instead of 16. The limited size of the Perceptron in ParTAGE allows its state to be preserved during frame switching or transition. In the intermediate warm-up state, ParTAGE has chosen between the transient prediction of the TAGE arrays and the steady-state prediction of the preserved Perceptron. We design two versions of ParTAGE, one that hardwires the perceptron predictor to always be selected during the predictor transition phase, and one that evaluates the confidence of the base perceptron predictor's prediction before the outcome is selected.

IV. ΠΕΙΡΑΜΑΤΙΚΗ ΔΙΑΤΑΞΗ IV. Experimental setup

Τα πειράματα που πραγματοποιήθηκαν χρησιμοποιούν το πλαίσιο CBP5 με τα ίχνη από το 2016 ως μια βάση. Το πλαίσιο χρησιμοποιεί 268 ίχνη, με συνδυασμούς μεγάλων / μικρών φορτίων εργασίας και φορτίων εργασίας κινητών / διακομιστών. Τροποποιούμε κατά λίγο το πλαίσιο CBP ώστε οι διατάξεις πρόβλεψης κλάδου να μπορούν να πραγματοποιούν μια πλήρη ή μερική απόρριψη της κατάστασής τους. Αυτό επιτρέπει τη μελέτη του ιστορικού της συμπεριφοράς των διατάξεων πρόβλεψης κλάδου, δείχνοντας τις επιπτώσεις τις οποίες έχει στη δομή μια πλήρης ή μερική απώλειας της κατάστασης. The experiments performed use the CBP5 framework with traces from 2016 as a base. The framework uses 268 traces, with combinations of large / small workloads and mobile / server workloads. We are modifying the CBP framework slightly so that industry forward provisions can carry out a full or partial rejection of their status. This allows studying the history of the behavior of branch prediction devices, showing the effects that a complete or partial loss of state has on the structure.

Γ ια τα πειράματά μας, χρησιμοποιούμε έναν αριθμό διατάξεων πρόβλεψης οι οποίες χρησιμοποιούνται ευρέως σήμερα. Ως μια βασική σχεδίαση, υλοποιούμε ένα σύνολο διατάξεων πρόβλεψης δισταθούς τύπου, με και χωρίς υστέρηση. Για τη σύγκριση περισσότερων σύγχρονων διατάξεων πρόβλεψης, χρησιμοποιούμε το υποβληθέν TAGE-SC-L [A. Seznec, “TAGE-SC-L branch predictors” (Διατάξεις πρόβλεψης κλάδου TAGE-SC-L), JWAC-4: Championship Branch Prediction (Πρωταθλήτρια πρόβλεψη κλάδου), 2014] και Multiperspective Perceptron without TAGE (Multiperspective Perceptron χωρίς TAGE) [D.A. Jiménez, “Multiperspective Perceptron Predictor” (Διάταξη πρόβλεψης Multiperspective Perceptron)] από το CBP5. Τροποποιούμε λίγο και τις δύο σχεδιάσεις ώστε να είναι δυνατή η απόρριψη των σχεδιάσεών τους μερικώς ή πλήρως όταν απαιτείται, διατηρώντας προσεκτικά την ακριβή τους συμπεριφορά σταθερής κατάστασης. For our experiments, we use a number of predictors that are widely used today. As a basic design, we implement a set of dichotomous type predictors, with and without lag. To compare several state-of-the-art forecasting arrangements, we use the submitted TAGE-SC-L [A. Seznec, “TAGE-SC-L branch predictors”, JWAC-4: Championship Branch Prediction, 2014] and Multiperspective Perceptron without TAGE [D.A. Jiménez, “Multiperspective Perceptron Predictor”] from CBP5. We slightly modify both designs to allow partial or complete rejection of their designs when required, while carefully preserving their exact steady-state behavior.

Επιπλέον, υλοποιούμε δύο παραλλαγές της ParTAGE οι οποίες εκφράζουν διαφορετικές πολιτικές για την επιλογή της βέλτιστης μεταβατικής πρόβλεψης. Η ParTAGE-S παρακάμπτει την πρόβλεψη των πινάκων TAGE κάτω από μια τιμή κατωφλιού περιόδου την οποία έχουμε ορίσει ίση με 200k εντολές διακλάδωσης. Η ParTAGE χρησιμοποιεί μια ενοποιημένη τιμή εμπιστοσύνης η οποία αξιολογείται από την υπόλοιπη σχεδίαση TAGE ώστε να υποδεικνύεται η πλέον ακριβής πρόβλεψη. Furthermore, we implement two variants of ParTAGE which express different policies for selecting the optimal transient prediction. ParTAGE-S bypasses the prediction of TAGE tables below a period threshold value which we have set equal to 200k branch instructions. ParTAGE uses a unified confidence value that is evaluated by the rest of the TAGE design to indicate the most accurate prediction.

Εστιάζουμε σε διατάξεις πρόβλεψης 8kB και 64kB, παρόμοιες με αυτές που αξιολογούνται στο CBP. Μια λεπτομερής λίστα όλων των διατάξεων πρόβλεψης που αξιολογήθηκαν δείχνεται στον Πίνακα II: We focus on 8kB and 64kB forecast layouts, similar to those evaluated in CBP. A detailed list of all forecasting provisions evaluated is shown in Table II:

Πίνακας 2: Table 2:

Αξιολογούμε τη μεταβατική ακρίβεια των διατάξεων πρόβλεψης που αξιολογήθηκαν για τις περιπτώσεις που περιγράφονται στην Ενότητα II. Για την επίτευξη αυτού, καλύπτουμε ένα εύρος περιόδων απόρριψης από 10 έως 60Μ εντολές διακλάδωσης ανά απόρριψη, εξάγοντας τη βέλτιστη σχεδίαση για κάθε περίπτωση χρήσης. We evaluate the transient accuracy of the forecasting arrangements evaluated for the cases described in Section II. To achieve this, we cover a range of discard periods from 10 to 60M branch instructions per discard, deriving the optimal design for each use case.

V. ΑΠΟΤΕΛΕΣΜΑΤΑ V. RESULTS

Πραγματοποιούμε τρεις διαφορετικούς τύπους συγκρίσεων εστιάζοντας σε απλές δισταθείς διατάξεις πρόβλεψης, σύγχρονες σχεδιάσεις TAGE και Perceptron και την πρότασή μας ParTAGE. We perform three different types of comparisons focusing on simple bistable predictors, state-of-the-art TAGE and Perceptron designs, and our ParTAGE proposal.

Α. Αποτελέσματα δισταθούς ακρίβειας A. Results of inconsistent accuracy

Η δισταθής χρησιμοποιείται ως ένα βασικό πείραμα, αποτελούμενη από ένα μόνο πίνακα bit απαριθμητή. Στον Πίνακα III δείχνουμε τον τρόπο με τον οποίο το ΜΡKI διαφόρων δισταθών σχεδιάσεων βελτιώνεται με την αύξηση της περιόδου διατήρησης της κατάστασης: The bistable is used as a basic experiment, consisting of a single array of counter bits. In Table III we show how the MPKI of various bistable designs improves with increasing hold period:

Πίνακας III: (ΜΡΚΙ για διάφορες ΒΡ σε διάφορες περιόδους απόρριψης εντολών διακλάδωσης) Table III: (MPKI for various BPs at various branch rejection periods)

Παρά μια διαφορά 100χ στο μέγεθος, η αύξηση του ΜΡΚΙ σταθερής κατάστασης είναι μόλις 12,28%. Τα αποτελέσματα αποκαλύπτουν ότι, μολονότι το μέγεθος συμβάλει στην ακρίβεια σταθερής κατάστασης, η μεταβατική ακρίβεια δεν επηρεάζεται από το μέγεθος μιας διάταξης πρόβλεψης. Despite a 100x difference in size, the steady-state MPKI increase is only 12.28%. The results reveal that, although size contributes to steady-state accuracy, transient accuracy is not affected by the size of a forecast array.

Αντίθετα, μια παραλλαγή στη σχεδίαση όπως η προσθήκη υστέρησης (κοινή χρήση τμήματος των τιμών κατάστασης πρόβλεψης μεταξύ των καταχωρήσεων -χρησιμοποιείται στις παραλλαγές ΒΙΜΗ που δείχνονται στον Πίνακα III) βελτιώνει τη μεταβατική ακρίβεια, ακόμη και σε μικρότερες διατάξεις πρόβλεψης. Αυτό συμβαίνει καθώς τα bit υστέρησης επηρεάζουν και τους γειτονικούς κλάδους και τελικά προθερμαίνουν τη σχεδίαση ταχύτερα. Αυτό είναι σαφώς ορατό σε μικρότερες περιόδους απόρριψης όπου οι λανθασμένες προβλέψεις είναι κατά μέσο όρο 18% λιγότερες για τις δισταθείς σχεδιάσεις με υστέρηση. Το Σχήμα 19 δείχνει τη διαφορά στην απόδοση για διάφορα δισταθή μεγέθη και σχεδιάσεις. Conversely, a design variation such as adding lag (sharing part of the prediction state values between entries—used in the BIMH variants shown in Table III ) improves transient accuracy, even in smaller prediction layouts. This happens as the lag bits also affect neighboring branches and ultimately warm up the design faster. This is clearly visible at shorter rejection periods where mispredictions are on average 18% less for the lag-steady designs. Figure 19 shows the difference in performance for various bistable sizes and designs.

Β. Μεταβατική ακρίβεια: TAGE έναντι Perception B. Transitional accuracy: TAGE versus Perception

Το δεύτερο σύνολο αποτελεσμάτων μας εστιάζει στη σύγκριση της μεταβατικής συμπεριφοράς των δύο πιο διακεκριμένων σχεδιάσεων στα σύγχρονα συστήματα, την TAGE και την Perceptron. Το Σχήμα 20 δείχνει τις διάφορες μεταβατικές συμπεριφοράς ανάμεσα στις σχεδιάσεις TAGE και Perceptron. Παρατηρούμε ότι η παραλλαγή 8kB της Perceptron έχει τη χειρότερη ψυχρή εκκίνηση, ωστόσο επιτυγχάνει να βελτιώσει γρήγορα και να συνεχίσει παρόμοια την απόδοση σταθερής κατάστασης. Our second set of results focuses on comparing the transient behavior of the two most distinguished designs in modern systems, TAGE and Perceptron. Figure 20 shows the various behavioral transitions between the TAGE and Perceptron designs. We note that the 8kB variant of the Perceptron has the worst cold start, yet it manages to quickly improve and similarly continue steady-state performance.

Το μεταβατικό ΜΡΚΙ για μια περίοδο απόρριψης 20k εντολών διακλάδωσης είναι 7,75 και 6,98 για τις σχεδιάσεις TAGE 8kB και 64kB και 7,57 και 6,93 αντίστοιχα για την Perceptron. Η μεταγωγή κάθε 20k εντολές διακλάδωσης είναι εντός ενός ρεαλιστικού εύρους για εφαρμογές όπως αυτές που παρουσιάζονται στον Πίνακα I και για προτεινόμενα συστήματα που υποστηρίζουν μεταβάσεις υψηλής ανάλυσης ή συχνές μεταγωγές πλαισίου. Αυτό το αποτέλεσμα δείχνει ότι η TAGE μπορεί να παρέχει καλύτερη απόδοση σταθερής κατάστασης. Ωστόσο, για εφαρμογές που πραγματοποιούν συχνές μεταγωγές πλαισίου, η Perceptron παρέχει πιο ακριβείς προβλέψεις. The transient MPKI for a discard period of 20k branch instructions is 7.75 and 6.98 for the TAGE 8kB and 64kB designs and 7.57 and 6.93 respectively for the Perceptron. Switching every 20k branch instructions is within a realistic range for applications such as those presented in Table I and for proposed systems that support high-resolution transitions or frequent frame switches. This result shows that TAGE can provide better steady-state performance. However, for applications that perform frequent frame switches, Perceptron provides more accurate predictions.

Μια ακόμη παρατήρηση μπορεί να εξάγεται κατά τη σύγκριση των παραλλαγών 64kB με τις 8kB σε μικρότερα παράθυρα μη διακοπτόμενης εκτέλεσης. Θεωρώντας για παράδειγμα, μεταγωγή κάθε 20k ή 200k εντολές διακλάδωσης, οι διατάξεις πρόβλεψης 8kB λειτουργούν κατά μέσο όρο 10% και 15% χειρότερα από τις σχεδιάσεις 64kB. Ωστόσο, το κενό απόδοσης αυξάνεται στο 33% κατά την παρατήρηση των ίδιων σχεδιάσεων σε σταθερή κατάσταση. One more observation can be drawn when comparing the 64kB and 8kB variants in smaller non-interrupted execution windows. Considering for example switching every 20k or 200k branch instructions, 8kB prediction designs perform on average 10% and 15% worse than 64kB designs. However, the performance gap increases to 33% when observing the same designs at steady state.

Χρησιμοποιώντας την απόδοση σταθερής κατάστασης ως βασική γραμμή και συγκρίνοντας τη μεταβατική ακρίβεια, σε όλες τις αναλύσεις έως και τις 20k εντολές διακλάδωσης, υπολογίζουμε πόσο χειρότερη μπορεί να είναι η ακρίβεια σε φορτία εργασίας με φόρτο μεταγωγών πλαισίου. Από το Σχήμα 20, η αύξηση του ΜΡΚΙ φτάνει το 90% και 80% για τις TAGE και Perceptron αντίστοιχα. Αυτό ενισχύει την πεποίθησή μας ότι οι διατάξεις πρόβλεψης σήμερα αξιολογούνται χωρίς να λαμβάνονται υπόψη τα προβλήματα που συμβαίνουν κατά τη ρεαλιστική εκτέλεση. Using the steady-state performance as a baseline and comparing the transient accuracy, at all resolutions up to 20k branch instructions, we estimate how much worse the accuracy can be in workloads with frame-switch loads. From Figure 20, MPKI increase reaches 90% and 80% for TAGE and Perceptron respectively. This reinforces our belief that forecast provisions today are evaluated without considering the problems that occur during realistic execution.

C. ParTAGE C. PARTAGE

Για τη βελτίωση της μεταβατικής ακρίβειας της πρόβλεψης κλάδου, παρουσιάζουμε τα αποτελέσματα από την πρότασή μας, η ParTAGE μια σχεδίαση η οποία επηρεάζεται τόσο από την Perceptron όσο και την TAGE. Προτού αναλύσουμε την απόδοσή της σε σύγκριση με τις ανταγωνιστικές σημερινές σχεδιάσεις, αναδεικνύουμε τις σχεδιαστικές της επιλογές. To improve the transient accuracy of branch prediction, we present results from our proposal, ParTAGE, a design that is influenced by both Perceptron and TAGE. Before we analyze its performance compared to today's competitive designs, we highlight its design choices.

TAGE κατατεμαχισμού: Αναλύουμε την απόδοση της TAGE μετρώντας τη μείωση του συνολικού μεταβατικού ΜΡΚΙ που προκαλείται από κάθε εξάρτημα, κατά τη διατήρηση της κατάστασής της ανάμεσα σε απορρίψεις. Στο Σχήμα 21 παρακολουθούμε το μέγεθος που απαιτείται για τη διατήρηση των εξαρτημάτων σε κάθε διαμόρφωση και το σχετικό ΜΡΚΙ, εξομαλυμένο στην απόδοση σταθερής κατάστασης της TAGE. Η ανάλυση στο σχήμα δείχνει τη μεταβατική κατάσταση με περίοδο απόρριψης 20k εντολών διακλάδωσης. Για παράδειγμα, δείχνει ότι, για αυτή την ανάλυση, η διατήρηση κανενός από τα εξαρτήματα αυξάνει το ΜΡΚΙ κατά 90%. Fragmentation TAGE: We analyze the performance of TAGE by measuring the reduction in total transient MPKI caused by each component while maintaining its state between discards. In Figure 21 we observe the size required to maintain the components in each configuration and the relative MPKI, normalized to TAGE's steady-state performance. The analysis in the figure shows the transient state with a rejection period of 20k branch commands. For example, it shows that, for this analysis, keeping none of the components increases MPKI by 90%.

Από το σχήμα, κάνουμε δύο επιπλέον παρατηρήσεις. Πρώτα, η πλειοψηφία της απόδοσης παρέχεται από τους πίνακες TAGE, οι οποίοι είναι πολύ μεγάλοι για διατήρηση, ειδικά λαμβάνοντας υπόψη ότι η συχνότητα απόρριψης ορίζεται στις 20k διακλαδώσεις. Δεύτερο, παρατηρούμε ότι στην άλλη πλευρά του φάσματος, η βασική δισταθής διάταξη πρόβλεψης και ο στατιστικός διορθωτής βελτιώνουν το ΜΡΚΙ κατά 16% και 10% αντίστοιχα. Ωστόσο, καθώς η δισταθής απαιτεί μόλις 1,25kB καταστάσεων για να διατηρηθεί, σε σύγκριση με τα 8kB του στατιστικού διορθωτή, η βελτίωση του ΜΡΚΙ της ανά τιμή kB είναι πολύ υψηλότερη από αυτή του στατιστικού διορθωτή. From the figure, we make two additional observations. First, the majority of the performance is provided by the TAGE arrays, which are too large to maintain, especially considering that the discard frequency is set at 20k branches. Second, we observe that on the other side of the spectrum, the basic bistable predictor and the statistical corrector improve MPKI by 16% and 10% respectively. However, since bistable requires only 1.25kB of states to maintain, compared to the statistical corrector's 8kB, its MPKI improvement per kB value is much higher than that of the statistical corrector.

Εύρεση της κατάλληλης, “μικρής” διάταξης πρόβλεψης: Η ανάλυση της TAGE οδηγεί στη βασική ιδέα για την ParTAGE. Αυτή η ιδέα είναι η σχεδίαση μιας διάταξης πρόβλεψης με ένα επαρκώς μικρό βασικό εξάρτημα προς διατήρηση κατά τη μεταγωγή πλαισίου ή τη μετάβαση, αλλά ταυτόχρονα και με επαρκή ακρίβεια ώστε να δικαιολογεί την επιπλέον επιβάρυνση από την αποθήκευση της κατάστασης. Από το Σχήμα 20 παρατηρήσαμε ότι οι διατάξεις πρόβλεψης Perceptron βελτιώνουν γρήγορα το ΜΡΚΙ τους με το χρόνο προτού φτάσουν την ακρίβεια σταθερής κατάστασης. Αυτό αποκαλύπτει μια ενδιαφέρουσα πτυχή των διατάξεων πρόβλεψης Multiperspective Perceptron. Σε σύγκριση με τις δισταθείς διατάξεις πρόβλεψης, οι τιμές με δίεση και κοινού βάρους στις σύγχρονες σχεδιάσεις Perceptron είναι πιο αποδοτικές σχεδιάσεις και έχουν τη δυνατότητα επιθετικής εκπαίδευσης και αποθήκευσης πληροφοριών σε πιο πυκνή μορφή. Εστιάζουμε στο δεύτερο χαρακτηριστικό, αυτό της πυκνής αποθήκευσης πληροφοριών κλάδου, για τη σχεδίαση της βασικής διάταξης πρόβλεψης εφόσον σκοπεύουμε να την αποθηκεύουμε και να την επαναφέρουμε για κάθε πλαίσιο, μην επιτρέποντάς της να επιστρέφει ποτέ στη μεταβατική της ακρίβεια. Finding the right, “small” prediction layout: The analysis of TAGE leads to the basic idea for ParTAGE. The idea is to design a predictor with a small enough key to maintain during a frame switch or transition, but at the same time with enough precision to justify the overhead of storing the state. From Figure 20 we observed that Perceptron predictors rapidly improve their MPKI with time before reaching steady state accuracy. This reveals an interesting aspect of Multiperspective Perceptron prediction devices. Compared to dichotomous prediction schemes, biased and common-weighted values in modern Perceptron designs are more efficient designs and have the ability to aggressively train and store information in a denser form. We focus on the second feature, that of dense branch information storage, to design the basic predictor since we intend to store and restore it for each frame, never allowing it to return to its transitive accuracy.

Στο Σχήμα 22 συγκρίνουμε τη δισταθή σχεδίαση και τη σχεδίαση Perceptron με μεγέθη τα οποία ταιριάζουν περίπου εντός 1,25kB προϋπολογισμού. Τα αποτελέσματα δείχνουν ότι ενώ η Perceptron έχει υψηλότερο ΜΡΚΙ σε αναλύσεις μέχρι και 200 εντολές διακλάδωσης, η ακρίβεια σταθερής της κατάστασης είναι σημαντικά καλύτερη. In Figure 22 we compare the bistable design and the Perceptron design with sizes that fit roughly within a 1.25kB budget. The results show that while the Perceptron has a higher MPKI in analyzes up to 200 branching orders, its steady-state accuracy is significantly better.

Βελτίωση της μικρής perceptron: Επιλέξαμε να χρησιμοποιήσουμε μια μικρή Perceptron ως τη βασική διάταξη πρόβλεψης για την ParTAGE. Για τη μείωση του μεγέθους της διάταξης πρόβλεψης Perceptron στα 1,25kB και την επίτευξη καλύτερης ακρίβειας, βαθμονομήσαμε τον όγκο των πινάκων χαρακτηριστικών και το μέγεθος της διάταξης πρόβλεψης Perceptron που χρησιμοποιούμε. Αρχικά ορίζουμε το μέγεθος της διάταξης πρόβλεψης στα 1,25kB (τμήμα (a) του Σχήματος 23). Καταλήγουμε ότι οκτώ πίνακες χαρακτηριστικών παρέχουν τη βέλτιστη απόδοση. Improvement of the small perceptron: We chose to use a small perceptron as the basic predictor for ParTAGE. To reduce the size of the Perceptron predictor to 1.25kB and achieve better accuracy, we calibrated the volume of feature matrices and the size of the Perceptron predictor we use. We first set the size of the prediction array to 1.25kB (part (a) of Figure 23). We conclude that eight feature matrices provide optimal performance.

Στη συνέχεια καταλήγουμε στους οκτώ πίνακες χαρακτηριστικών και πραγματοποιούμε μια σάρωση μεγέθους για την περαιτέρω βελτιστοποίηση της σχεδίασης, από 0,25kB σε 2,5kB. Το τμήμα (b) του Σχήματος 23 δείχνει ότι το 1 ,25kB είναι κοντά στη βέλτιστη διαμόρφωση. Παρατηρούμε ότι η αλλαγή των μεγεθών χαρακτηριστικών επηρεάζει την πρόβλεψη περισσότερο από ότι την επηρεάζει η αλλαγή του μεγέθους. Βρίσκουμε ότι για λόγους πληρότητας, ένας γενετικός αλγόριθμος όπως προτείνεται στην Multiperspective Perceptron, μπορεί να παρέχει ακόμη καλύτερα αποτελέσματα. Αφήνουμε τέτοιες βελτιστοποιήσεις της τελικής απόδοσης για το μέλλον. We then arrive at the eight attribute tables and perform a size scan to further optimize the design, from 0.25kB to 2.5kB. Part (b) of Figure 23 shows that 1.25kB is close to the optimal configuration. We observe that changing the feature sizes affects the prediction more than changing the size. We find that for the sake of completeness, a genetic algorithm as proposed in Multiperspective Perceptron can provide even better results. We leave such final performance optimizations for the future.

D. Αποτελέσματα για την ParTAGE D. Results for ParTAGE

Δημιουργήσαμε τη διάταξη πρόβλεψης ParTAGE με βάση τις παρατηρήσεις μας για μικρές διατάξεις πρόβλεψης αντικαθιστώντας τη δισταθή 1 ,25kB με μια perceptron του ίδιου μεγέθους. We created the ParTAGE predictor based on our observations of small predictors by replacing the 1.25kB bistable with a perceptron of the same size.

Σύγκριση των παραλλαγών της ParTAGE: Τα αποτελέσματα στο Σχήμα 24 συγκρίνουν την ParTAGE με μια σχεδίαση TAGE η οποία χάνει ολόκληρη την κατάσταση και την TAGE (Β) η οποία διατηρεί άθικτη τη δισταθή κατάσταση σε όλες τις απορρίψεις. Για την ParTAGE, συγκρίνουμε τις δύο παραλλαγές οι οποίες τροποποιούν την πολιτική επιλογής εξαρτήματος. Η ParTAGE-S στατικά παρακάμπτει τα εξαρτήματα της TAGE για μια σύντομη περίοδο μετά από μια απόρριψη, εξαναγκάζοντας τη διάταξη πρόβλεψης να επιλέξει την πρόβλεψη Perceptron. Η ParTAGE χρησιμοποιεί τα επίπεδα εμπιστοσύνης Perceptron κάθε πρόβλεψης για την απόφαση ποια πρόβλεψη ταιριάζει καλύτερα. Comparison of ParTAGE Variants: The results in Figure 24 compare ParTAGE with a TAGE design that loses the entire state and TAGE (B) that keeps the bistable state intact across discards. For ParTAGE, we compare the two variants which modify the part selection policy. ParTAGE-S statically bypasses the TAGE components for a short period after a discard, forcing the predictor to select the Perceptron prediction. ParTAGE uses the Perceptron confidence levels of each prediction to decide which prediction fits best.

Γενικά, η διατήρηση μιας ελάχιστης κατάστασης μπορεί να έχει μια σημαντική βελτίωση όταν η κατάσταση απορρίπτεται συχνά όμως έχει αμελητέα επίπτωση στο ΜΡΚΙ σταθερής κατάστασης. Αυτό δείχνει ότι για συστήματα με αραιές μεταγωγές πλαισίου, η απόρριψη της κατάστασης διάταξης πρόβλεψης κλάδου, για τη βελτίωση της ασφάλειας για παράδειγμα, δεν έχει αρνητική επίπτωση στην απόδοση. In general, maintaining a minimal state can have a significant improvement when the state is frequently discarded but has a negligible impact on steady-state MPKI. This shows that for systems with sparse frame switching, discarding the branch predictor state, to improve security for example, has no negative impact on performance.

Αφετέρου, για συστήματα τα οποία μεταβαίνουν τόσο γρήγορα όσο κάθε 1k εντολές, η σχεδίασή μας μπορεί να μειώσει στο μισό το ποσοστό λανθασμένων προβλέψεων. Αυτό μπορεί να φανεί όταν η περίοδος απόρριψης είναι 200 εντολές διακλάδωσης, στο Σχήμα 24. Όταν εξετάζουμε τρέχοντα συστήματα με γρήγορη μεταγωγή πλαισίου, βλέπουμε ότι η βέλτιστη απόδοση παρέχεται από την προτεινόμενη επέκτασή μας στην αρχική σχεδίαση της TAGE η οποία διατηρεί τη δισταθή της κατάσταση στην BSB. Το Σχήμα 25 δείχνει ότι η βελτίωση είναι περίπου 15%. On the other hand, for systems that transition as fast as every 1k instructions, our design can cut the misprediction rate in half. This can be seen when the discard period is 200 branch commands, in Figure 24. When we consider current systems with fast frame switching, we see that the best performance is provided by our proposed extension to the original TAGE design which maintains its bistable state in BSB. Figure 25 shows that the improvement is about 15%.

Σύγκριση της ParTAGE με την TAGE και την Perceptron: Συγκρίνοντας τις διάφορες υλοποιήσεις της ParTAGE, παρατηρούμε ότι ενώ η ParTAGE-S λειτουργεί καλά για τις μεταγωγές υψηλής ανάλυσης, η μεταβατική ακρίβεια ελαττώνεται σε μεγαλύτερες περιόδους απόρριψης, εφόσον οι πίνακες TAGE δεν έχουν εκπαιδευτεί επαρκώς. Αντίθετα, η ParTAGE, η οποία απλά την εμπιστοσύνη στην TAGE, δεν επιτυγχάνει την ίδια μεταβατική ακρίβεια όταν η περίοδος είναι μικρότερη από 2k εντολές διακλάδωσης. Αυτό συμβαίνει στην περίπτωση στην οποία οι πίνακες TAGE είναι εντελώς ψυχροί, αλλά η πρόβλεψή τους έχει προτεραιότητα έναντι της πιο ακριβούς από το εξάρτημα perceptron. Αυτός είναι και ο λόγος για τον οποίο η ParTage δε βελτιώνει τη μεταβατική ακρίβεια στις 20k εντολές διακλάδωσης. Αυτό μπορεί να επιλύεται με καλύτερη ρύθμιση της πολιτικής επιλογής στο μέλλον. Comparison of ParTAGE with TAGE and Perceptron: Comparing the different implementations of ParTAGE, we notice that while ParTAGE-S performs well for high-resolution switching, the transient accuracy degrades at longer rejection periods since the TAGE arrays are not sufficiently trained. In contrast, ParTAGE, which simply relies on TAGE, does not achieve the same transient accuracy when the period is less than 2k branch instructions. This is the case where the TAGE arrays are completely cold, but their prediction takes precedence over the more accurate one from the perceptron component. This is also the reason why ParTage does not improve the transient accuracy at 20k branch instructions. This can be solved by better regulation of the selection policy in the future.

Η βελτίωση της απόδοσης σταθερής κατάστασης της βασικής διάταξης πρόβλεψης και η αποτελεσματική διατήρηση της κατάστασής της επιτρέπει την αποδοτική λειτουργία σε υψηλότερες αναλύσεις. Αυτό μπορεί να επιτυγχάνεται είτε αυξάνοντας το μέγεθος της προσωρινής μνήμης καταστάσεων κλάδου ώστε να δέχεται περισσότερες καταστάσεις, είτε με την ανάπτυξη διατάξεων πρόβλεψης 1 kB με καλύτερη ακρίβεια σταθερής κατάστασης. Για παράδειγμα, η επίτευξη της ισοδύναμης απόδοσης μιας 8kB perceptron μπορεί να μειώνει περαιτέρω τις πρόσθετες λανθασμένες προβλέψεις. Improving the steady-state performance of the basic predictor and efficiently maintaining its state allows efficient operation at higher resolutions. This can be achieved either by increasing the size of the branch state cache to accommodate more states, or by developing 1kB predictors with better steady state accuracy. For example, achieving the equivalent performance of an 8kB perceptron can further reduce additional mispredictions.

Μολονότι στοχεύεται η βελτίωση της μεταβατικής ακρίβειας της πρόβλεψης κλάδου, είναι εξίσου σημαντική η διατήρηση μιας ανταγωνιστικής ακρίβειας σταθερής κατάστασης για την προτεινόμενή μας σχεδίαση. Πραγματοποιούμε μια απευθείας σύγκριση ανάμεσα στην TAGE-SC-L, και στις δύο εκδόσεις Multiperspective Perceptron που υποβλήθηκαν στο CBP5 και στη βέλτιστη έκδοση της ParTAGE. Το Σχήμα 26 παρέχει μια λεπτομερή ματιά στο ΜΡΚΙ σταθερής κατάστασης σε σύγκριση με την TAGE και τη βέλτιστη έκδοση της Multiperspective Perceptron. Παρατηρούμε ότι η ParTAGE παρέχει 3.726 ΜΡΚΙ, ανταγωνιστικό της TAGE (3.660 ΜΡΚΙ) και ακόμη καλύτερο από της perceptron (3.826 ΜΡΚΙ). Although it is aimed to improve the transient accuracy of branch prediction, it is equally important to maintain a competitive steady-state accuracy for our proposed design. We perform a direct comparison between TAGE-SC-L, both Multiperspective Perceptron versions submitted to CBP5, and the optimal version of ParTAGE. Figure 26 provides a detailed look at steady-state MPKI compared to TAGE and the optimal version of the Multiperspective Perceptron. We observe that ParTAGE provides 3,726 MPKI, competitive with TAGE (3,660 MPKI) and even better than perceptron (3,826 MPKI).

VII. ΤΕΛΙΚΑ ΣΧΟΛΙΑ VII. FINAL COMMENTS

Στην παρούσα εργασία, έχουμε εστιάσει στα φαινόμενα τα οποία προκαλούν προβλήματα στην απόδοση των διατάξεων πρόβλεψης κλάδου. Αναδεικνύουμε πραγματικές περιπτώσεις στις οποίες προκαλούνται προβλήματα, όπως οι συχνές μεταγωγές πλαισίου ή οι μεταβάσεις, αλλά και τεχνικές αντιμετώπισης επιθέσεων πλευρικού καναλιού οι οποίες στοχεύουν στη μηχανή υπόθεσης. Δείχνουμε ότι αυτά τα προβλήματα δημιουργούν μια αποσύνδεση μεταξύ της αναφερόμενης ονομαστικής απόδοσης των διατάξεων πρόβλεψης κλάδου και της πραγματικής ακρίβειας σε πραγματικές εφαρμογές. Για τη διάκριση μεταξύ των δύο, εισάγουμε τις έννοιες της απόδοσης διάταξης πρόβλεψης κλάδου σταθερής κατάστασης και της μεταβατικής απόδοσης διάταξης πρόβλεψης κλάδου. In the present work, we have focused on the phenomena that cause problems in the performance of industry prediction devices. We highlight real-world cases where problems arise, such as frequent frame switches or transitions, but also techniques to counter side-channel attacks that target the case engine. We show that these problems create a disconnect between the reported nominal performance of branch predictors and the actual accuracy in real applications. To distinguish between the two, we introduce the concepts of steady-state branch predictor performance and transient branch predictor performance.

Προτείνουμε έναν πρωτοποριακό μηχανισμό, την προσωρινή μνήμη καταστάσεων κλάδου, η οποία διατηρεί μια ελάχιστη, απομονωμένη κατάσταση ανά πλαίσιο για τη μείωση του υψηλού αριθμού λανθασμένων προβλέψεων. Προτείνουμε δύο σχεδιάσεις οι οποίες αποθηκεύουν την απαραίτητη κατάσταση πλαισίου στην BSB. Πρώτα μια επέκταση της TAGE, η οποία ονομάζεται TAGE (Β), η οποία διατηρεί την κατάσταση της δισταθούς της διάταξης πρόβλεψης. Δεύτερο, μια νέα σχεδίαση διάταξης πρόβλεψης κλάδου, η ParTAGE, η οποία αντικαθιστά τη δισταθή στην TAGE με μια Perceptron. Αξιολογούμε τη χρήση μιας νέας μεθοδολογίας, η οποία τροποποιεί το πλαίσιο που χρησιμοποιείται στην πρωταθλήτρια πρόβλεψη κλάδου ώστε να είναι δυνατή η απαλοιφή της κατάστασης διάταξης πρόβλεψης κλάδου σε διαφορετικές συχνότητες. We propose a novel mechanism, the branch state cache, which maintains a minimal, isolated state per frame to reduce the high number of mispredictions. We propose two designs which store the necessary frame state in the BSB. First an extension of TAGE, called TAGE(B), which preserves the bistable state of the prediction array. Second, a new branch predictor design, ParTAGE, which replaces the bistable in TAGE with a Perceptron. We evaluate the use of a new methodology, which modifies the framework used in the industry prediction champion to enable the elimination of the industry prediction layout state at different frequencies.

Δείχνουμε ότι οι διατάξεις πρόβλεψης κλάδου σήμερα μπορεί να έχουν έως και 90% περισσότερες λανθασμένες προβλέψεις από τις αναμενόμενες στη σταθερή κατάσταση, κατά τη λειτουργία υπό ορισμένες ρεαλιστικές συνθήκες. Χρησιμοποιώντας την TAGE (Β) επιτυγχάνουμε μια μείωση 15% του ΜΡΚΙ. Επιπλέον, δείχνουμε ότι, χρησιμοποιώντας την ParTAGE, οι μεταβάσεις υψηλής ανάλυσης σε ετερογενή συστήματα, μπορούν να γίνουν πολύ πιο αποδοτικές, εφόσον η σχεδίασή μας μειώνει στο μισό το ποσοστό λανθασμένων προβλέψεων. Επιτυγχάνουμε όλα αυτά εξασφαλίζοντας ότι τα πλαίσια παραμένουν απομονωμένα και προστατευμένα από επιθέσεις πλευρικού καναλιού και διατηρούν σταθερή την απόδοση σταθερής κατάστασης με τις τρέχουσες ανταγωνιστικές σχεδιάσεις. We show that branch predictors today can have up to 90% more mispredictions than expected at steady state when operating under some realistic conditions. Using TAGE (B) we achieve a 15% reduction in MPKI. In addition, we show that, using ParTAGE, high-resolution transitions in heterogeneous systems can be made much more efficient, as our design halves the misprediction rate. We achieve all of this by ensuring that frames remain isolated and protected from side-channel attacks and keep steady-state performance consistent with current competitive designs.

Περισσότερα παραδείγματα διατάξεων παρουσιάζονται στις ακόλουθες παραγράφους: More examples of layouts are presented in the following paragraphs:

(1) Μια διάταξη πρόβλεψης κλάδου TAGE για την πρόβλεψη ενός αποτελέσματος εντολής διακλάδωσης, η οποία περιλαμβάνει: (1) A TAGE branch predictor for predicting a branch command result, which includes:

ένα πλήθος πινάκων πρόβλεψης TAGE για την παροχή μιας πρόβλεψης TAGE για το αποτέλεσμα της εντολής διακλάδωσης, με κάθε πίνακα πρόβλεψης TAGE να περιλαμβάνει ένα πλήθος καταχωρήσεων πρόβλεψης εκπαιδευμένων με βάση τα προηγούμενα αποτελέσματα των εντολών διακλάδωσης, a plurality of TAGE prediction tables for providing a TAGE prediction of the result of the branch instruction, each TAGE prediction table including a plurality of prediction entries trained based on the previous results of the branch instructions;

ένα κύκλωμα αναζήτησης για την αναζήτηση σε κάθε έναν από τους πίνακες πρόβλεψης TAGE με βάση ένα δείκτη που προσδιορίζεται ως συνάρτηση μιας διεύθυνσης εντολής στόχου και ενός τμήματος του προηγούμενου ιστορικού εκτέλεσης το οποίο είναι ενδεικτικό της συμπεριφοράς εκτέλεσης που προηγείται μιας εντολής στη διεύθυνση εντολής στόχου, με το εν λόγω τμήμα του προηγούμενου ιστορικού εκτέλεσης να χρησιμοποιείται για τον προσδιορισμό του δείκτη με διαφορετικά μήκη για διάφορους πίνακες πρόβλεψης TAGE, και a lookup circuit for searching each of the TAGE prediction tables based on an index determined as a function of a target instruction address and a portion of past execution history indicative of execution behavior preceding an instruction at the target instruction address, with that portion of the previous execution history be used to determine the index with different lengths for various TAGE prediction tables, and

μια διάταξη πρόβλεψης μετάπτωσης για την παροχή μιας πρόβλεψης μετάπτωσης για το αποτέλεσμα εντολής διακλάδωσης σε περίπτωση που η αναζήτηση αποτύχει σε όλους τους πίνακες πρόβλεψης TAGE, στην οποία: a transition prediction arrangement for providing a transition prediction for the result of a branch command in case the lookup fails in all TAGE prediction tables, in which:

η διάταξη πρόβλεψης μετάπτωσης περιλαμβάνει μια διάταξη πρόβλεψης perceptron η οποία περιλαμβάνει τουλάχιστον έναν πίνακα βαρών για την αποθήκευση βαρών που εκπαιδεύτηκε με βάση τα προηγούμενα αποτελέσματα εντολών διακλάδωσης και την πρόβλεψη του αποτελέσματος εντολής διακλάδωσης με βάση ένα άθροισμα όρων, με κάθε όρο να εξαρτάται από ένα αντίστοιχο βάρος που επιλέγεται από τον εν λόγω τουλάχιστον ένα πίνακα βαρών με βάση ένα αντίστοιχο τμήμα τουλάχιστον μιας από τις διευθύνσεις εντολών στόχου και το προηγούμενο ιστορικό κλάδων, και the transition predictor includes a perceptron predictor including at least one weight table for storing weights trained based on previous branch command results and predicting the branch command result based on a sum of terms, each term depending on a corresponding weight selected from said at least one weight table based on a corresponding portion of at least one of the target command addresses and past branch history, and

ένα συνολικό μέγεθος μιας κατάστασης πρόβλεψης κλάδου που αποθηκεύεται από τη διάταξη πρόβλεψης perceptron είναι μικρότερο από ένα συνολικό μέγεθος μιας κατάστασης πρόβλεψης κλάδου που αποθηκεύεται από το πλήθος των πινάκων πρόβλεψης TAGE. a total size of a branch prediction state stored by the perceptron predictor is smaller than a total size of a branch prediction state stored by the plurality of TAGE prediction tables.

(2) Η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (1), η οποία περιλαμβάνει ένα κύκλωμα επιλογής για την επιλογή ανάμεσα στην πρόβλεψη μετάπτωσης που παρέχεται από τη διάταξη πρόβλεψης μετάπτωσης και στην πρόβλεψη TAGE που παρέχεται από το πλήθος των πινάκων πρόβλεψης TAGE, ανάλογα μια τιμή εμπιστοσύνης ενδεικτική ενός επιπέδου εμπιστοσύνης στην πρόβλεψη TAGE, με την εν λόγω τιμή εμπιστοσύνης να προέρχεται από τους πίνακες πρόβλεψης TAGE από το κύκλωμα αναζήτησης κατά την αναζήτηση. (2) The TAGE branch prediction device of paragraph (1), which includes a selection circuit for selecting between the transition prediction provided by the transition prediction device and the TAGE prediction provided by the plurality of TAGE prediction tables, depending on a a confidence value indicative of a level of confidence in the TAGE prediction, said confidence value being derived from the TAGE prediction tables from the search circuit during the search.

(3) Η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (2), στην οποία το κύκλωμα επιλογής είναι διαμορφωμένο να επιλέγει την πρόβλεψη μετάπτωσης όταν η αναζήτηση αποτυγχάνει σε όλους τους πίνακες πρόβλεψης TAGE ή η τιμή εμπιστοσύνης υποδεικνύει ένα επίπεδο εμπιστοσύνης μικρότερο από μια τιμή κατωφλιού. (3) The TAGE branch prediction arrangement of paragraph (2), wherein the selection circuit is configured to select the transition prediction when the search fails in all TAGE prediction tables or the confidence value indicates a confidence level less than a threshold value.

(4) Η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (3), στην οποία όταν η αναζήτηση επιτυγχάνει σε έναν τουλάχιστον πίνακα πρόβλεψης TAGE, η πρόβλεψη TAGE περιλαμβάνει μια πρόβλεψη με βάση μια δεικτοδοτούμενη καταχώρηση ενός επιλεγμένου πίνακα πρόβλεψης TAGE, με τον επιλεγμένο πίνακα πρόβλεψης TAGE να περιλαμβάνει τον έναν από τον τουλάχιστον έναν πίνακα πρόβλεψης TAGE για τον οποίο ο δείκτης προσδιορίζεται με βάση το μεγαλύτερο τμήμα του προηγούμενου ιστορικού εκτέλεσης. (4) The TAGE branch prediction arrangement of paragraph (3), wherein when the search succeeds in at least one TAGE prediction table, the TAGE prediction includes a prediction based on an indexed entry of a selected TAGE prediction table, with the selected TAGE prediction table to include the one of at least one TAGE prediction table for which the index is determined based on the largest portion of the previous execution history.

(5) Η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (1), η οποία περιλαμβάνει ένα κύκλωμα ελέγχου που αποκρίνεται σε μια μεταγωγή πλαισίου εκτέλεσης ενός στοιχείου επεξεργασίας από ένα πρώτο πλαίσιο εκτέλεσης σε ένα δεύτερο πλαίσιο εκτέλεσης, για να αποτρέψει τη διάταξη πρόβλεψης κλάδου TAGE από την παροχή μιας πρόβλεψης κλάδου για μια εντολή του δεύτερου πλαισίου εκτέλεσης με βάση την κατάσταση πρόβλεψης κλάδου που εκπαιδεύτηκε με βάση τις εντολές του πρώτου πλαισίου εκτέλεσης. (5) The TAGE branch prediction device of paragraph (1), which includes a control circuit responsive to an execution frame switch of a processing element from a first execution frame to a second execution frame, to prevent the TAGE branch prediction device from providing a branch prediction for an instruction of the second execution frame based on the branch prediction state trained based on the instructions of the first execution frame.

(6) Η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (1), η οποία περιλαμβάνει ένα κύκλωμα αποθήκευσης πρόβλεψης κλάδου που αποκρίνεται σε ένα συμβάν αποθήκευσης πρόβλεψης κλάδου για την αποθήκευση πληροφοριών σε μια προσωρινή μνήμη καταστάσεων κλάδου ανάλογα ενός τουλάχιστον τμήματος του ενός τουλάχιστον πίνακα βαρών της διάταξης πρόβλεψης perceptron, και (6) The branch prediction device TAGE of paragraph (1), which includes a branch prediction storage circuit responsive to a branch prediction storage event to store information in a branch state buffer according to at least one portion of the at least one weight table of perceptron prediction array, and

ένα κύκλωμα επαναφοράς πρόβλεψης κλάδου που αποκρίνεται σε ένα συμβάν επαναφοράς πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης για την επαναφορά τουλάχιστον ενός τμήματος του τουλάχιστον ενός πίνακα βαρών της διάταξης πρόβλεψης perceptron με βάση τις πληροφορίες που ήταν προηγουμένως αποθηκευμένες στην προσωρινή μνήμη καταστάσεων κλάδου. a branch prediction reset circuit responsive to a branch prediction reset event associated with the given execution context to reset at least a portion of the at least one weight matrix of the perceptron predictor based on information previously stored in the branch state cache.

(7) Η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (6), η οποία περιλαμβάνει ένα κύκλωμα επιλογής για την επιλογή ανάμεσα στην πρόβλεψη μετάπτωσης που παρέχεται από τη διάταξη πρόβλεψης μετάπτωσης και μια πρόβλεψη TAGE που παρέχεται από το πλήθος των πινάκων πρόβλεψης TAGE, στην οποία: (7) The TAGE branch prediction device of paragraph (6), which includes a selection circuit for selecting between the transition prediction provided by the transition prediction device and a TAGE prediction provided by the plurality of TAGE prediction tables, in which :

κατά τη διάρκεια μιας αρχικής περιόδου που ακολουθεί το συμβάν επαναφοράς πρόβλεψης κλάδου, το κύκλωμα επιλογής είναι διαμορφωμένο ώστε να επιλέγει την πρόβλεψη μετάπτωσης που παρέχεται από τη διάταξη πρόβλεψης μετάπτωσης. during an initial period following the branch prediction reset event, the selection circuit is configured to select the transition prediction provided by the transition prediction device.

(8) Η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (7), στην οποία κατά τη διάρκεια της αρχικής περιόδου, οι πίνακες πρόβλεψης TAGE είναι διαμορφωμένοι ώστε να ενημερώνουν τις καταχωρήσεις πρόβλεψης με βάση τα αποτελέσματα των εντολών διακλάδωσης. (8) The TAGE branch prediction arrangement of paragraph (7), in which during the initial period, the TAGE prediction tables are configured to update the prediction entries based on the results of the branch commands.

(9) Η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (7), στην οποία η αρχική περίοδος περιλαμβάνει ένα από τα εξής: (9) The TAGE branch provision provision of paragraph (7), in which the initial period includes one of the following:

μια προκαθορισμένη διάρκεια χρόνου μετά το συμβάν επαναφοράς πρόβλεψης κλάδου, a predetermined length of time after the branch prediction reset event;

έναν προκαθορισμένο αριθμό κύκλων επεξεργασίας μετά το συμβάν επαναφοράς πρόβλεψης κλάδου, a predetermined number of processing cycles after the branch prediction reset event;

έναν προκαθορισμένο αριθμό εντολών που επεξεργάζονται μετά το συμβάν επαναφοράς πρόβλεψης κλάδου, a predetermined number of commands processed after the branch prediction reset event;

έναν προκαθορισμένο αριθμό εντολών διακλάδωσης που επεξεργάζονται μετά το συμβάν επαναφοράς πρόβλεψης κλάδου ή a predetermined number of branch commands processed after the branch prediction reset event or

έναν προκαθορισμένο αριθμό αναζητήσεων που πραγματοποιούνται από το κύκλωμα αναζήτησης μετά το συμβάν επαναφοράς πρόβλεψης κλάδου. a predetermined number of searches performed by the search circuit after the branch prediction reset event.

(10) Η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (7), στην οποία η αρχική περίοδος περιλαμβάνει μια περίοδο που διαρκεί μέχρι ένα επίπεδο εμπιστοσύνης στην πρόβλεψη TAGE υπερβεί ένα προκαθορισμένο επίπεδο. (10) The TAGE industry forecast provision of paragraph (7), in which the initial period includes a period that lasts until a confidence level in the TAGE forecast exceeds a predetermined level.

(11) Μια συσκευή η οποία περιλαμβάνει: (11) A device which includes:

ένα πρώτο στοιχείο επεξεργασίας για την επεξεργασία εντολών σε ένα τουλάχιστον πλαίσιο εκτέλεσης, και a first processing element for processing instructions in at least one execution context, and

η διάταξη πρόβλεψης κλάδου TAGE της παραγράφου (1), για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης που επεξεργάζονται από το πρώτο στοιχείο επεξεργασίας. the TAGE branch prediction arrangement of paragraph (1), for predicting the results of branch instructions processed by the first processing element.

(12) Η συσκευή της παραγράφου (11), η οποία περιλαμβάνει ένα δεύτερο στοιχείο επεξεργασίας το οποίο περιλαμβάνει μια δεύτερη διάταξη πρόβλεψης κλάδου για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης που επεξεργάζονται από το δεύτερο στοιχείο επεξεργασίας. (12) The apparatus of paragraph (11), which includes a second processing element that includes a second branch prediction device for predicting the results of branch instructions processed by the second processing element.

(13) Η συσκευή της παραγράφου (12), στην οποία η δεύτερη διάταξη πρόβλεψης κλάδου περιλαμβάνει μια διάταξη πρόβλεψης perceptron που αντιστοιχεί στη διάταξη πρόβλεψης μετάπτωσης της διάταξης πρόβλεψης κλάδου TAGE. (13) The apparatus of paragraph (12), wherein the second branch predictor comprises a perceptron predictor corresponding to the transition predictor of the TAGE branch predictor.

(14) Η συσκευή της παραγράφου (13), η οποία περιλαμβάνει ένα κύκλωμα μεταφοράς κατάστασης πρόβλεψης κλάδου που αποκρίνεται στη μετάβαση ενός πλαισίου εκτέλεσης από το δεύτερο στοιχείο επεξεργασίας στο πρώτο στοιχείο επεξεργασίας για: (14) The device of paragraph (13), which includes a branch prediction state transfer circuit responsive to the transition of an execution frame from the second processing element to the first processing element to:

τη μεταφορά του ενός τουλάχιστον πίνακα βαρών από τη δεύτερη διάταξη πρόβλεψης κλάδου στη διάταξη πρόβλεψης μετάπτωσης της πρώτης διάταξης πρόβλεψης κλάδου, και transferring the at least one weight table from the second branch predictor to the transition predictor of the first branch predictor, and

την αρχικοποίηση των πινάκων πρόβλεψης TAGE της πρώτης διάταξης πρόβλεψης κλάδου με τις αρχικές τιμές ανεξάρτητα από μια κατάσταση της δεύτερης διάταξης πρόβλεψης κλάδου. initializing the TAGE prediction tables of the first branch predictor with the initial values regardless of a state of the second branch predictor.

(15) Η συσκευή της παραγράφου (14), η οποία περιλαμβάνει ένα κύκλωμα μεταφοράς κατάστασης πρόβλεψης κλάδου που αποκρίνεται στη μετάβαση ενός πλαισίου εκτέλεσης από το πρώτο στοιχείο επεξεργασίας στο δεύτερο στοιχείο επεξεργασίας για: (15) The device of paragraph (14), which includes a branch prediction state transfer circuit responsive to the transition of an execution frame from the first processing element to the second processing element to:

τη μεταφορά του ενός τουλάχιστον πίνακα βαρών από τη διάταξη πρόβλεψης μετάπτωσης της διάταξης πρόβλεψης κλάδου TAGE στη δεύτερη διάταξη πρόβλεψης κλάδου, και transferring the at least one weight table from the transition predictor of the TAGE branch predictor to the second branch predictor, and

την ακύρωση ή την απενεργοποίηση των πινάκων πρόβλεψης TAGE της διάταξης πρόβλεψης κλάδου TAGE. canceling or disabling the TAGE prediction tables of the TAGE industry prediction array.

(16) Μια διάταξη πρόβλεψης κλάδου TAGE για την πρόβλεψη ενός αποτελέσματος εντολής διακλάδωσης, η οποία περιλαμβάνει: (16) A TAGE branch prediction arrangement for predicting a branch command result, which includes:

μέσα για την αποθήκευση των πινάκων πρόβλεψης TAGE για την παροχή μιας πρόβλεψης TAGE για το αποτέλεσμα της εντολής διακλάδωσης, με κάθε πίνακα πρόβλεψης TAGE να περιλαμβάνει ένα πλήθος καταχωρήσεων πρόβλεψης εκπαιδευμένων με βάση τα προηγούμενα αποτελέσματα εντολών διακλάδωσης, μέσα για την αναζήτηση σε κάθε έναν από τους πίνακες πρόβλεψης TAGE με βάση ένα δείκτη που προσδιορίζεται ως συνάρτηση μιας διεύθυνσης εντολής στόχου και ενός τμήματος του προηγούμενου ιστορικού εκτέλεσης το οποίο είναι ενδεικτικό της συμπεριφοράς εκτέλεσης που προηγείται μιας εντολής στη διεύθυνση εντολής στόχου, με το εν λόγω τμήμα του προηγούμενου ιστορικού εκτέλεσης να χρησιμοποιείται για τον προσδιορισμό του δείκτη που έχει διαφορετικό μήκος για διάφορους πίνακες πρόβλεψης TAGE, και means for storing TAGE prediction tables for providing a TAGE prediction of the result of the branch instruction, each TAGE prediction table including a plurality of prediction entries trained based on previous branch instruction results, means for searching each of TAGE prediction tables based on an index determined as a function of a target instruction address and a portion of past execution history indicative of execution behavior preceding an instruction at the target instruction address, with said portion of past execution history being used to determining the index to be of different length for various TAGE prediction tables, and

μέσα για την παροχή μιας πρόβλεψης μετάπτωσης για το αποτέλεσμα μιας εντολής διακλάδωσης σε περίπτωση που η αναζήτηση αποτύχει σε όλους τους πίνακες πρόβλεψης TAGE, στα οποία: means for providing a transition prediction for the result of a branch command in case the lookup fails in all TAGE prediction tables, in which:

τα μέσα για την παροχή μιας πρόβλεψης μετάπτωσης περιλαμβάνουν μέσα για την παροχή μιας πρόβλεψης perceptron, τα οποία περιλαμβάνουν μέσα για την αποθήκευση βαρών εκπαιδευμένων με βάση τα προηγούμενα αποτελέσματα εντολών διακλάδωσης και μέσα για την πρόβλεψη του αποτελέσματος εντολής διακλάδωσης με βάση ένα άθροισμα όρων, με κάθε όρο να εξαρτάται από ένα αντίστοιχο βάρος επιλεγμένο από τον εν λόγω τουλάχιστον έναν πίνακα βαρών με βάση ένα αντίστοιχο τμήμα τουλάχιστον ενός από τη διεύθυνση εντολής στόχου και του προηγούμενου ιστορικού κλάδου, και means for providing a transition prediction includes means for providing a perceptron prediction, which includes means for storing weights trained based on previous branch command results and means for predicting the branch command result based on a sum of terms, with each condition depending on a corresponding weight selected from said at least one weight table based on a corresponding portion of at least one of the target command address and the previous history branch, and

το συνολικό μέγεθος της κατάστασης πρόβλεψης κλάδου που αποθηκεύεται από τα μέσα για την παροχή μιας πρόβλεψης perceptron είναι μικρότερο από το συνολικό μέγεθος της κατάστασης πρόβλεψης κλάδου που αποθηκεύεται από τους πίνακες πρόβλεψης TAGE. the total size of the branch prediction state stored by the means for providing a perceptron prediction is less than the total size of the branch prediction state stored by the TAGE prediction tables.

(17) Μια μέθοδος για την πρόβλεψη του αποτελέσματος μιας εντολής διακλάδωσης χρησιμοποιώντας μια διάταξη πρόβλεψης κλάδου TAGE η οποία περιλαμβάνει ένα πλήθος πινάκων πρόβλεψης TAGE για την παροχή μιας πρόβλεψης TAGE για το αποτέλεσμα της εντολής διακλάδωσης, με κάθε πίνακα πρόβλεψης TAGE να περιλαμβάνει ένα πλήθος καταχωρήσεων πρόβλεψης εκπαιδευμένων με βάση τα αποτελέσματα προηγούμενων εντολών διακλάδωσης, με τη μέθοδο να περιλαμβάνει: (17) A method for predicting the result of a branch instruction using a TAGE branch predictor that includes a plurality of TAGE prediction tables for providing a TAGE prediction of the result of the branch instruction, each TAGE prediction table including a plurality of entries trained prediction based on the results of previous branching commands, the method comprising:

την αναζήτηση σε κάθε έναν από τους πίνακες προβλέψεων TAGE με βάση ένα δείκτη που προσδιορίζεται ως συνάρτηση μιας διεύθυνσης εντολής στόχου και ενός τμήματος του προηγούμενου ιστορικού εκτέλεσης ενδεικτικού της συμπεριφοράς εκτέλεσης που προηγείται μιας εντολής στη διεύθυνση εντολής στόχου, με το εν λόγω τμήμα του προηγούμενου ιστορικού εκτέλεσης να χρησιμοποιείται για τον προσδιορισμό του δείκτη που έχει διαφορετικό μήκος για διάφορους πίνακες πρόβλεψης TAGE, και searching each of the TAGE prediction tables based on an index determined as a function of a target instruction address and a portion of past execution history indicative of execution behavior preceding an instruction at the target instruction address, with said portion of past history execution to be used to determine the pointer that has a different length for various TAGE prediction tables, and

την παροχή μιας πρόβλεψης μετάπτωσης για το αποτέλεσμα της εντολής διακλάδωσης σε περίπτωση που η αναζήτηση αποτύχει σε όλους τους πίνακες πρόβλεψης TAGE, χρησιμοποιώντας μια διάταξη πρόβλεψης perceptron η οποία περιλαμβάνει τουλάχιστον έναν πίνακα βαρών για την αποθήκευση των βαρών που έχουν εκπαιδευτεί με βάση τα προηγούμενα αποτελέσματα εντολών διακλάδωσης, με την πρόβλεψη μετάπτωσης να προβλέπεται με βάση ένα άθροισμα όρων, με κάθε όρο να εξαρτάται από ένα αντίστοιχο βάρος που επιλέγεται από τον εν λόγω τουλάχιστον ένα πίνακα βαρών με βάση ένα αντίστοιχο τμήμα τουλάχιστον ενός από τη διεύθυνση εντολής στόχου και του προηγούμενου ιστορικού κλάδου, και providing a transition prediction for the result of the branch command in case the search fails in all TAGE prediction tables, using a perceptron prediction array that includes at least one weight table for storing the weights trained based on the previous command results branching, the transition prediction being predicted based on a sum of terms, each term depending on a corresponding weight selected from said at least one weight table based on a corresponding portion of at least one of the target command address and the previous branch history , and

το συνολικό μέγεθος της κατάστασης πρόβλεψης κλάδου που αποθηκεύεται από τη διάταξη πρόβλεψης perceptron είναι μικρότερο από το συνολικό μέγεθος της κατάστασης πρόβλεψης κλάδου που αποθηκεύεται από το πλήθος των πινάκων πρόβλεψης TAGE. the total size of the branch prediction state stored by the perceptron predictor is smaller than the total size of the branch prediction state stored by the plurality of TAGE prediction tables.

Στην παρούσα εφαρμογή, οι λέξεις “διαμορφωμένο για...” χρησιμοποιούνται με τη σημασία ότι ένα στοιχείο μιας συσκευής έχει μια διαμόρφωση ικανή να εκτελεί την καθορισμένη λειτουργία. Σε αυτά τα πλαίσια, μια “διαμόρφωση” σημαίνει μια διάταξη ή έναν τρόπο διασύνδεσης υλικού ή λογισμικού. Για παράδειγμα, η συσκευή μπορεί να έχει εξειδικευμένο υλικό το οποίο παρέχει την καθορισμένη λειτουργία ή ένας επεξεργαστής ή μια άλλη διάταξη επεξεργασίας μπορεί να προγραμματίζεται ώστε να εκτελεί τη λειτουργία. Οι λέξεις “διαμορφωμένο για” δεν υπονοούν ότι το στοιχείο συσκευής πρέπει να αλλάζεται με κάποιο τρόπο ώστε να παρέχει την καθορισμένη λειτουργία. In the present application, the words "configured for..." are used to mean that an element of a device has a configuration capable of performing the specified function. In these contexts, a “configuration” means an arrangement or way of interconnecting hardware or software. For example, the device may have specialized hardware that provides the specified function, or a processor or other processing device may be programmed to perform the function. The words “configured for” do not imply that the device element must be modified in some way to provide the specified function.

Μολονότι στο παρόν έχουν περιγρ της εφεύρεσης αναφορικά με τα συνοδ κατανοητό ότι η εφεύρεση δεν περιορίζεται οι διάφορες αλλαγές και τροποποιήσεις Although the invention has been described herein with reference to the appendants, it is to be understood that the invention is not limited to various changes and modifications

από άτομα έμπειρα στην τέχνη χωρίς απόκ εφεύρεσης όπως καθορίζονται από τις συν άφει λεπτομερώς ενδεικτικές υλοποιήσεις ευτικά σχεδιαγράμματα, πρέπει να είναι ι σε αυτές ακριβώς τις υλοποιήσεις και ότι μπορούν να πραγματοποιούνται σε αυτή λιση από το αντικείμενο και το πνεύμα της ημμένες αξιώσεις. by persons skilled in the art without invention as determined by the accompanying detailed illustrative embodiments schematic drawings, must be i in those embodiments and that they can be realized in the same from the object and spirit of the claims.

Claims (18)

ΑΞΙΩΣΕΙΣ 1. Μια συσκευή η οποία περιλαμβάνει:1. A device which includes: ένα στοιχείο επεξεργασίας για την επεξεργασία εντολών από ένα πλήθος πλαισίων εκτέλεσης,a processing element for processing commands from a plurality of execution contexts; μια διάταξη πρόβλεψης κλάδου για την πρόβλεψη των αποτελεσμάτων εντολών διακλάδωσης που επεξεργάζονται από το στοιχείο επεξεργασίας με βάση την ενεργή κατάσταση πρόβλεψης κλάδου που αποθηκεύεται σε ένα χώρο αποθήκευσης προβλέψεων κλάδου,a branch predictor for predicting the results of branch instructions processed by the processing element based on the active branch prediction state stored in a branch prediction store; ένα κύκλωμα ελέγχου πρόβλεψης κλάδου που αποκρίνεται σε μια μεταγωγή πλαισίου εκτέλεσης από ένα πρώτο πλαίσιο εκτέλεσης σε ένα δεύτερο πλαίσιο εκτέλεσης και αποτρέπει την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης του δεύτερου πλαισίου εκτέλεσης από τη διάταξη πρόβλεψης κλάδου με βάση την κατάσταση πρόβλεψης κλάδου που εκπαιδεύτηκε με βάση τα αποτελέσματα των προηγούμενων εντολών διακλάδωσης του πρώτου πλαισίου εκτέλεσης,a branch prediction control circuit responsive to an execution frame switch from a first execution frame to a second execution frame and prevents the branch predictor from predicting the results of branch instructions of the second execution frame based on the trained branch prediction state the results of the previous branch instructions of the first execution frame, ένα κύκλωμα αποθήκευσης προβλέψεων κλάδου που αποκρίνεται σε ένα συμβάν αποθήκευσης πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης για την αποθήκευση τουλάχιστον ενός τμήματος της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης σε μια προσωρινή μνήμη καταστάσεων κλάδου, καιbranch prediction storage circuitry responsive to a branch prediction storage event associated with a given execution context to store at least a portion of the active branch prediction state associated with the given execution context in a branch state buffer, and ένα κύκλωμα επαναφοράς προβλέψεων κλάδου που αποκρίνεται σε ένα συμβάν επαναφοράς πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης για την επαναφορά της ενεργής κατάστασης πρόβλεψης κλάδου με βάση την προηγουμένως αποθηκευμένη κατάσταση πρόβλεψης κλάδου που αποθηκεύεται στην προσωρινή μνήμη καταστάσεων κλάδου για το δεδομένο πλαίσιο εκτέλεσης.a branch prediction reset circuit responsive to a branch prediction reset event associated with the given execution context to reset the active branch prediction state based on the previously stored branch prediction state stored in the branch state buffer for the given execution context. 2. Η συσκευή σύμφωνα με την αξίωση 1, στην οποία το κύκλωμα αποθήκευσης προβλέψεων κλάδου διαμορφώνεται ώστε να πραγματοποιεί συμπίεση των καταστάσεων πρόβλεψης κλάδου για τη συμπίεση του εν λόγω τουλάχιστον ενός τμήματος της ενεργής κατάστασης πρόβλεψης κλάδου για τη δημιουργία μιας συμπιεσμένης κατάστασης πρόβλεψης κλάδου προς αποθήκευση στην προσωρινή μνήμη καταστάσεων κλάδου, και2. The apparatus according to claim 1, wherein the branch prediction storage circuit is configured to perform compression of the branch prediction states to compress said at least a portion of the active branch prediction state to create a compressed branch prediction state to be stored in the branch state cache, and το κύκλωμα επαναφοράς προβλέψεων κλάδου διαμορφώνεται ώστε να πραγματοποιεί αποσυμπίεση των καταστάσεων πρόβλεψης κλάδου για την αποσυμπίεση της προηγουμένως αποθηκευμένης κατάστασης πρόβλεψης κλάδου για τη δημιουργία της προς επαναφορά ενεργής κατάστασης πρόβλεψης κλάδου.the branch prediction restore circuit is configured to decompress the branch prediction states to decompress the previously stored branch prediction state to create the active branch prediction state to be restored. 3. Η συσκευή σύμφωνα με την αξίωση 2, στην οποία η διάταξη πρόβλεψης κλάδου περιλαμβάνει ένα πλήθος μονάδων διατάξεων πρόβλεψης για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης χρησιμοποιώντας διάφορες μεθόδους πρόβλεψης κλάδου και έναν επιλογέα για την επιλογή ανάμεσα στα αποτελέσματα που προβλέπονται από το πλήθος των μονάδων διατάξεων πρόβλεψης, και3. The apparatus according to claim 2, wherein the branch predictor comprises a plurality of predictor units for predicting the results of branch instructions using various branch prediction methods and a selector for selecting among the results predicted by the plurality of units of provision provisions, and η συμπίεση της κατάστασης πρόβλεψης κλάδου περιλαμβάνει την παράλειψη της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται με τουλάχιστον μια από το εν λόγω πλήθος μονάδων διατάξεων πρόβλεψης από τη συμπιεσμένη κατάσταση πρόβλεψης κλάδου.compressing the branch prediction state includes omitting the active branch prediction state associated with at least one of said plurality of prediction arrangement units from the compressed branch prediction state. 4. Η συσκευή σύμφωνα με την αξίωση 3, στην οποία το πλήθος των μονάδων διατάξεων πρόβλεψης περιλαμβάνει μια μονάδα διάταξης πρόβλεψης μετάπτωσης για τη δημιουργία μιας πρόβλεψης μετάπτωσης σε περίπτωση που τουλάχιστον μια άλλη μονάδα διάταξης πρόβλεψης εξάγει μια πρόβλεψη με εμπιστοσύνη χαμηλότερη από μια προκαθορισμένη τιμή κατωφλιού και η εν λόγω συμπιεσμένη κατάσταση πρόβλεψης κλάδου περιλαμβάνει την ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με τη μονάδα διάταξης πρόβλεψης μετάπτωσης.4. The apparatus according to claim 3, wherein the plurality of predictor units includes a transition predictor unit for generating a transition prediction in the event that at least one other predictor unit outputs a prediction with confidence lower than a predetermined threshold value and said compressed branch prediction state includes the active branch prediction state associated with the transition prediction arrangement unit. 5. Η συσκευή σύμφωνα με την αξίωση 2, στην οποία η ενεργή κατάσταση πρόβλεψης κλάδου περιλαμβάνει ένα πλήθος καταχωρήσεων πρόβλεψης κλάδου κάθε μια από τις οποίες προσδιορίζει μια τιμή κατάστασης πρόβλεψης για τη δημιουργία μιας πρόβλεψης κλάδου, με τις καταχωρήσεις πρόβλεψης κλάδου να δεικτοδοτούνται με βάση ένα δείκτη που προσδιορίζεται ως συνάρτηση τουλάχιστον ενός από τα εξής: μια διεύθυνση εντολής στόχου για την οποία απαιτείται μια πρόβλεψη κλάδου και τουλάχιστον ένα τμήμα του προηγούμενου ιστορικού εκτέλεσης ενδεικτικού ενός σχεδίου συμπεριφοράς εκτέλεσης που προηγείται μιας εντολής στη διεύθυνση της εντολής.5. The apparatus of claim 2, wherein the active branch prediction state comprises a plurality of branch prediction entries each specifying a prediction state value for generating a branch prediction, the branch prediction entries being indexed based on a pointer determined as a function of at least one of the following: a target instruction address for which a branch prediction is required and at least a portion of past execution history indicative of an execution behavior pattern preceding an instruction at the instruction address. 6. Η συσκευή σύμφωνα με την αξίωση 5, στην οποία η εν λόγω συμπίεση της κατάστασης πρόβλεψης κλάδου περιλαμβάνει την αντιστοίχιση της τιμής της κατάστασης πρόβλεψης μιας δεδομένης καταχώρησης πρόβλεψης κλάδου με μια συμπιεσμένη τιμή της κατάστασης πρόβλεψης η οποία έχει λιγότερα bit από την τιμή της κατάστασης πρόβλεψης κλάδου.6. The apparatus according to claim 5, wherein said branch prediction state compression comprises mapping the prediction state value of a given branch prediction entry to a compressed prediction state value having fewer bits than the state value industry forecast. 7. Η συσκευή σύμφωνα με την αξίωση 5, στην οποία η εν λόγω συμπίεση της κατάστασης πρόβλεψης κλάδου περιλαμβάνει τη συγχώνευση ενός πλήθους καταχωρήσεων πρόβλεψης κλάδου που αντιστοιχούν σε διαφορετικές τιμές του εν λόγω δείκτη σε μια μόνο καταχώρηση προς αποθήκευση στην προσωρινή μνήμη καταστάσεων κλάδου στα πλαίσια της εν λόγω συμπιεσμένης κατάστασης πρόβλεψης κλάδου.7. The apparatus according to claim 5, wherein said branch prediction state compression comprises merging a plurality of branch prediction entries corresponding to different values of said index into a single entry to be stored in the branch state cache in frames of said industry forecast compressed state. 8. Η συσκευή σύμφωνα με την αξίωση 5, στην οποία η ενεργή κατάσταση πρόβλεψης κλάδου περαιτέρω περιλαμβάνει τουλάχιστον μια ομάδα δύο ή περισσότερων καταχωρήσεων πρόβλεψης κλάδου για τις οποίες κάθε τιμή κατάστασης πρόβλεψης περιλαμβάνει ένα κρυφό τμήμα το οποίο προσδιορίζεται ξεχωριστά για κάθε μια καταχώρηση πρόβλεψης κλάδου της ομάδας και ένα κοινόχρηστο τμήμα που χρησιμοποιείται από κοινού ανάμεσα σε κάθε μια από τις καταχωρήσεις πρόβλεψης κλάδου της ομάδας, και8. The apparatus according to claim 5, wherein the active branch prediction state further comprises at least a group of two or more branch prediction entries for which each prediction state value includes a hidden portion which is separately determined for each branch prediction entry of group and a shared segment shared between each of the group's branch prediction entries, and με την εν λόγω κατάσταση πρόβλεψης κλάδου να περιλαμβάνει ένα από τα εξής:with said industry forecast statement including one of the following: την παράλειψη του κοινόχρηστου τμήματος, καιthe omission of the common part, and την παράλειψη του κρυφού τμήματος και τη διατήρηση του κοινόχρηστου τμήματος.omitting the hidden part and keeping the shared part. 9. Η συσκευή σύμφωνα με την αξίωση 5, στην οποία η εν λόγω συμπίεση της κατάσταση πρόβλεψης κλάδου περιλαμβάνει τη μερική συγχώνευση μιας ομάδας καταχωρήσεων πρόβλεψης κλάδου για τη δημιουργία μιας συμπιεσμένης κατάστασης πρόβλεψης κλάδου στην οποία ένα πρώτο τμήμα της τιμής κατάστασης πρόβλεψης κάθε καταχώρησης πρόβλεψης κλάδου της ομάδας προσδιορίζεται ξεχωριστά εντός της συμπιεσμένης κατάστασης πρόβλεψης κλάδου και ένα δεύτερο τμήμα της τιμής κατάστασης πρόβλεψης κάθε καταχώρησης πρόβλεψης κλάδου συγχωνεύεται για τη δημιουργία μιας τιμής που αντιπροσωπεύει ένα κοινόχρηστο δεύτερο τμήμα για κάθε μια από τις καταχωρήσεις πρόβλεψης κλάδου της ομάδας.9. The apparatus according to claim 5, wherein said branch prediction state compression comprises partially merging a group of branch prediction entries to create a compressed branch prediction state in which a first portion of the prediction state value of each branch prediction entry of the group is determined separately within the compressed branch prediction state, and a second part of the prediction state value of each branch prediction entry is merged to create a value representing a shared second part for each of the group's branch prediction entries. 10. Η συσκευή σύμφωνα με την αξίωση 1, στην οποία το συμβάν αποθήκευσης πρόβλεψης κλάδου που σχετίζεται με το εν λόγω δεδομένο πλαίσιο εκτέλεσης περιλαμβάνει τουλάχιστον ένα από τα εξής:10. The apparatus according to claim 1, wherein the branch prediction store event associated with said given execution context comprises at least one of: την εν λόγω μεταγωγή πλαισίου εκτέλεσης, για την οποία το εν λόγω πλαίσιο εκτέλεσης είναι το εν λόγω πρώτο πλαίσιο εκτέλεσης,said execution frame switching, for which said execution frame is said first execution frame; τη μετάβαση του εν λόγω δεδομένου πλαισίου εκτέλεσης από το εν λόγω στοιχείο επεξεργασίας σε ένα άλλο στοιχείο επεξεργασίας,the transition of said given execution context from said processing element to another processing element; την παρέλευση μιας προκαθορισμένης περιόδου από ένα τελευταίο συμβάν αποθήκευσης πρόβλεψης κλάδου,the elapse of a predetermined period since a last branch forecast storage event; την ανίχνευση ή την εκτέλεση μιας εντολής αποθήκευσης πρόβλεψης κλάδου εντός του εν λόγω δεδομένου πλαισίου εκτέλεσης, καιdetecting or executing a branch prediction store instruction within said given execution context, and μια ενημέρωση της ενεργής κατάστασης πρόβλεψης κλάδου η οποία ικανοποιεί μια προκαθορισμένη συνθήκη η οποία συμβαίνει κατά την εκτέλεση του εν λόγω δεδομένου πλαισίου εκτέλεσης.an update of the active branch prediction state that satisfies a predetermined condition that occurs during the execution of said given execution context. 11. Η συσκευή σύμφωνα με την αξίωση 1, στην οποία το κύκλωμα αποθήκευσης πρόβλεψης κλάδου διαμορφώνεται ώστε να αποθηκεύει την ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης στην προσωρινή μνήμη καταστάσεων κλάδου κατά διαστήματα κατά την επεξεργασία του δεδομένου πλαισίου εκτέλεσης.11. The apparatus of claim 1, wherein the branch prediction storage circuit is configured to store the active branch prediction state associated with the given execution frame in the branch state buffer periodically during processing of the given execution frame. 12. Η συσκευή σύμφωνα με την αξίωση 1, στην οποία το συμβάν επαναφοράς πρόβλεψης κλάδου που σχετίζεται με το εν λόγω δεδομένο πλαίσιο εκτέλεσης περιλαμβάνει τουλάχιστον ένα από τα εξής:12. The apparatus of claim 1, wherein the branch prediction reset event associated with said given execution context comprises at least one of: την εν λόγω μεταγωγή πλαισίου εκτέλεσης, για την οποία το εν λόγω πλαίσιο εκτέλεσης είναι το εν λόγω δεύτερο πλαίσιο εκτέλεσης,said execution frame switching, for which said execution frame is said second execution frame; τη μετάβαση του εν λόγω δεδομένου πλαισίου εκτέλεσης από ένα άλλο στοιχείο επεξεργασίας στο εν λόγω στοιχείο επεξεργασίας,the transition of said given execution context from another processing element to said processing element; την παρέλευση μιας προκαθορισμένης περιόδου από ένα τελευταίο συμβάν επαναφοράς πρόβλεψης κλάδου, καιthe elapse of a predetermined period since a last industry prediction reset event, and την ανίχνευση ή την εκτέλεση μιας εντολής επαναφοράς πρόβλεψης κλάδου εντός του εν λόγω δεδομένου πλαισίου εκτέλεσης.detecting or executing a branch prediction reset command within said given execution context. 13. Η συσκευή σύμφωνα με την αξίωση 1, στην οποία ο χώρος αποθήκευσης προβλέψεων κλάδου περιλαμβάνει ένα πλήθος περιοχών, ενώ η προσωρινή μνήμη καταστάσεων κλάδου περιλαμβάνει τουλάχιστον μια από τις περιοχές του χώρου αποθήκευσης προβλέψεων κλάδου.13. The apparatus of claim 1, wherein the branch prediction store includes a plurality of areas, and the branch state cache includes at least one of the areas of the branch prediction store. 14. Η συσκευή σύμφωνα με την αξίωση 13, στην οποία το κύκλωμα επαναφοράς προβλέψεων κλάδου διαμορφώνεται ώστε να επαναφέρει την ενεργή κατάσταση πρόβλεψης κλάδου μετάγοντας την περιοχή του χώρου αποθήκευσης προβλέψεων κλάδου που χρησιμοποιείται για την αναπαράσταση της ενεργής κατάστασης πρόβλεψης κλάδου.14. The apparatus according to claim 13, wherein the branch prediction reset circuit is configured to reset the active branch prediction state by switching the area of the branch prediction storage used to represent the active branch prediction state. 15. Η συσκευή σύμφωνα με την αξίωση 1, στην οποία σε απόκριση της μεταγωγής πλαισίου εκτέλεσης, όταν ο χώρος αποθήκευσης προβλέψεων κλάδου περιέχει ακόμη μια προηγουμένως απενεργοποιημένη κατάσταση πρόβλεψης που σχετίζεται με το δεύτερο πλαίσιο εκτέλεσης, το κύκλωμα ελέγχου πρόβλεψης κλάδου διαμορφώνεται ώστε να ενεργοποιεί και πάλι την προηγουμένως απενεργοποιημένη κατάσταση πρόβλεψης κλάδου που σχετίζεται με το δεύτερο πλαίσιο εκτέλεσης.15. The apparatus of claim 1, wherein in response to execution frame switching, when the branch prediction store still contains a previously disabled prediction state associated with the second execution frame, the branch prediction control circuit is configured to enable and again the previously disabled branch prediction state associated with the second execution frame. 16. Η συσκευή σύμφωνα με την αξίωση 1, στην οποία σε απόκριση της μεταγωγής πλαισίου εκτέλεσης, το κύκλωμα ελέγχου πρόβλεψης κλάδου διαμορφώνεται ώστε να απενεργοποιεί ένα τμήμα της διάταξης πρόβλεψης κλάδου για μια αρχική περίοδο επεξεργασίας του δεύτερου πλαισίου εκτέλεσης, διατηρώντας ταυτόχρονα στο χώρο αποθήκευσης προβλέψεων κλάδου την ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με το εν λόγω τμήμα της διάταξης πρόβλεψης κλάδου που εκπαιδεύτηκε με βάση τα αποτελέσματα των εντολών διακλάδωσης του πρώτου πλαισίου εκτέλεσης, και16. The apparatus of claim 1, wherein in response to execution frame switching, the branch prediction control circuit is configured to disable a portion of the branch predictor for an initial processing period of the second execution frame, while maintaining in the prediction store branch the active branch prediction state associated with that portion of the branch predictor trained on the results of the branch instructions of the first execution frame, and όταν η αρχική περίοδος τελειώνει προτού συμβεί κάποια επακόλουθη μεταγωγή πλαισίου εκτέλεσης, το κύκλωμα ελέγχου πρόβλεψης κλάδου διαμορφώνεται ώστε να ακυρώνει τα δεδομένα της εν λόγω ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζονται με το εν λόγω τμήμα της διάταξης πρόβλεψης κλάδου και να ενεργοποιεί και πάλι το εν λόγω τμήμα της διάταξης πρόβλεψης κλάδου για συνεχή επεξεργασία του δεύτερου πλαισίου εκτέλεσης.when the initial period ends before any subsequent execution frame switching occurs, the branch prediction control circuit is configured to cancel said branch prediction active state data associated with said portion of the branch prediction arrangement and re-enable said branch prediction device part of the branch prediction arrangement for continuous processing of the second execution frame. 17. Η συσκευή σύμφωνα με την αξίωση 1, στην οποία σε απόκριση της μεταγωγής πλαισίου εκτέλεσης, το κύκλωμα ελέγχου πρόβλεψης κλάδου διαμορφώνεται ώστε να προβλέπει τη διάρκεια ζωής του δεύτερου πλαισίου εκτέλεσης και, ανάλογα τη διάρκεια ζωής που προβλέφθηκε, να προσδιορίζει κατά πόσο:17. The apparatus of claim 1, wherein in response to execution frame switching, the branch prediction control circuit is configured to predict the lifetime of the second execution frame and, depending on the predicted lifetime, determine whether: να απενεργοποιεί ένα τμήμα της διάταξης πρόβλεψης κλάδου κατά την επεξεργασία του δεύτερου πλαισίου εκτέλεσης, διατηρώντας ταυτόχρονα την ενεργή κατάσταση πρόβλεψης κλάδου που σχετίζεται με το απενεργοποιημένο τμήμα της διάταξης πρόβλεψης κλάδου που εκπαιδεύτηκε με βάση τα αποτελέσματα των εντολών διακλάδωσης του πρώτου πλαισίου εκτέλεσης ήdisable a portion of the branch predictor during processing of the second execution frame while maintaining the active branch prediction state associated with the disabled portion of the branch predictor trained based on the results of the branch instructions of the first execution frame; or να ακυρώνει τα δεδομένα της κατάστασης πρόβλεψης κλάδου που σχετίζονται με το εν λόγω τμήμα της διάταξης πρόβλεψης κλάδου που εκπαιδεύτηκε με βάση τα αποτελέσματα των εντολών διακλάδωσης του πρώτου πλαισίου εκτέλεσης και να επιτρέπει τη χρήση του εν λόγω τμήματος της διάταξης πρόβλεψης κλάδου κατά την επεξεργασία του δεύτερου πλαισίου εκτέλεσης.to invalidate the branch predictor state data associated with said part of the branch predictor trained on the results of the branching instructions of the first execution frame and to allow said part of the branch predictor to be used when processing the second execution framework. 18. Μια συσκευή που περιλαμβάνει:18. A device comprising: μέσα για την επεξεργασία εντολών από ένα πλήθος πλαισίων εκτέλεσης, μέσα για την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης που επεξεργάζονται από τα μέσα επεξεργασίας με βάση την ενεργή κατάσταση πρόβλεψης κλάδου που αποθηκεύεται σε ένα χώρο αποθήκευσης προβλέψεων κλάδου,means for processing instructions from a plurality of execution frames, means for predicting the results of branch instructions processed by the processing means based on the active branch prediction state stored in a branch prediction store; μέσα για τον έλεγχο της διάταξης πρόβλεψης κλάδου, τα οποία σε απόκριση μιας μεταγωγής πλαισίου εκτέλεσης από ένα πρώτο πλαίσιο εκτέλεσης σε ένα δεύτερο πλαίσιο εκτέλεσης διαμορφώνονται ώστε να αποτρέπουν την πρόβλεψη των αποτελεσμάτων των εντολών διακλάδωσης του δεύτερου πλαισίου εκτέλεσης από τη διάταξη πρόβλεψης κλάδου με βάση την κατάσταση πρόβλεψης κλάδου που εκπαιδεύτηκε με βάση τα αποτελέσματα των προηγούμενων εντολών διακλάδωσης του πρώτου πλαισίου εκτέλεσης,means for controlling the branch predictor, which in response to an execution frame switch from a first execution frame to a second execution frame is configured to prevent the branch predictor from predicting the results of branch instructions of the second execution frame based on branch prediction state trained based on the results of the previous branch instructions of the first execution frame; μέσα για την αποθήκευση, σε απόκριση ενός συμβάντος αποθήκευσης πρόβλεψης κλάδου που σχετίζεται με ένα δεδομένο πλαίσιο εκτέλεσης, τουλάχιστον ενός τμήματος της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης σε μια προσωρινή μνήμη καταστάσεων κλάδου, και μέσα για την επαναφορά, σε απόκριση ενός συμβάντος επαναφοράς πρόβλεψης κλάδου που σχετίζεται με το δεδομένο πλαίσιο εκτέλεσης, της ενεργής κατάστασης πρόβλεψης κλάδου με βάση την προηγουμένως αποθηκευμένη κατάσταση πρόβλεψης κλάδου που αποθηκεύεται στην προσωρινή μνήμη καταστάσεων κλάδου για το δεδομένο πλαίσιο εκτέλεσης.means for storing, in response to a branch prediction save event associated with a given execution context, at least a portion of the active branch prediction state associated with the given execution context in a branch state cache, and means for restoring, in response of a branch prediction reset event associated with the given execution context, the active branch prediction state based on the previously saved branch prediction state stored in the branch state cache for the given execution context. 4&= - Μια μέθηδος πρόβλεψης κΑάδττυ για μια ττκηπ·πή π<»>ι· TirpiAfliiP*<1>"·· — , «miycin ΓΤΤΓ^ργπΓΓίπς γι η τη\/ cTTrfrpynwiw mwnki'.wt nwr Α ·*νη ττλήθΗΐ· w»mrrimw ♦εκτέλεσης, με τη -μέθοδο να περιλαμβάνει:4&= - A cAadtty prediction method for a ttkip·pi p<»>i· TirpiAfliiP*<1>"·· — , "miycin GTTG^rgpGGips for the\/ cTTrfrpynwiw mwnki'.wt nwr A ·*ni ttellithHii; w»mrrimw ♦execution, with the -method including: ■την πρόβλεψη — των — αποτελεσμάτων — των — εντολών — διπκλ<ή>δ<(>ιΐπης TTOU Γπτ^ΓΓ'Ηί-ϊτηιι αττό ΤΓ στοιχείο επεξεργαπίπΐΓ μπ βάση την ενεονή κατάσταση πΓ^Ρ^^ΤίΓ.. Γ ΜΓ'Π Ι ΙΙΓΙΓ ηππΠηΓΓΗΓτηη ΓΤΓ ΓΊΓΓΤ χιίιρπ ππηλήιτηιπης πρ^βλέψ™<»>■ the prediction — of — the — results — of — the — commands — of the TTOU TTOU TP^GG'Hi-itiii atto TG element processed based on the united state of PG^P^^TiG.. C MG'P I IIIG hppPiGGIGtii GTG GIGGT hiiiirp ppiliitipis pr^bleps™<»> ■βε-απόκριση μιας μεταγωγής πλαισίου εκτέλεσης από ένα πρώτο πλαίσιο — -εκτέλεση ι στ £vu δεύτερο πλαίσιο Εκτέλεσης, την αποτροπή πρήβλευηε των — -αποτελεσμάτων των εντολών διακλάδωσης του δεύτερου πλαισίου εκτέλεσης από τη διπτπΡη πρόβλεψης κλάδηιι με βάση την ιτηπάπτπιτηin response to an execution frame switch from a first execution frame to a second execution frame, preventing the branching results of the second execution frame from being affected by the branch prediction algorithm based on the -T<1>'<,T>Tnift<cl>'<ITr>|<l,>T |<IC>β*-η<ψη η>·ττ<η>τπ> *»| ·>ιτ .. irpni |y. in| . .<η>ιτ<η>λιί»! Λιπιτλ^Λι.ΐΓτης του-πρώτου πλαισίου εκτέλεσης,-T<1>'<,T>Tnift<cl>'<ITr>|<l,>T |<IC>β*-η<πση η>·ττ<η>τπ> *»| ·>it .. irpni |y. in| . .<h>it<h>lii»! Lipitl^Li.Igtis of-the first frame of execution, ·<« απόκριση — ενός — συμβάντος αποθήκευσης πρόβλεψης — κλάδου που • σχετίζεται με-ένα δεδομένο πλαίσιο Εκτέλεσης, την αποθήκευση τοιιλπχιπτην τνός —ν.τμήματος της ενεργής κατάστασης πρόβλεψης κλάδου που σχετίζεται- με το δεδομένο — . -πλαίσιο εκτέλεσης σε μια προσωρινή μνήμη 'καταστάσεων κλάδου, και —response to a branch prediction storage event associated with a given Execution context, the storage of a portion of the active branch prediction state associated with the given execution context. - execution context in a branch state buffer, and — ~0ί απόκριση ενός-συμβάντος επαναφοράς πρόβλεψης κλάδου που σχετίζεται , -με— -το δεδομένο πλαίσιο εκτέλεσης, την επαναφορά της ενεργής κατάστασης . πρόβλεψης — κλάδου — με — βά^η την _ πρπηγηι ΐ| ιι^νΐιΐς αππΑηκτι ιμργη — κατάσταση ■ ■πρόβλεψης κλάδου που αποθηκεύεται στην προσωρινή μνήμη καταστάσεων κλάδου — , για το δεδομένο πλαίσιο εκτέλεσης. -~0i response of a branch prediction reset event associated with, -with— -the given execution context, the active state reset. forecast — branch — with — ba^i the _ prpigii 1| ii^niiis apppAkti imrgi — branch ■ ■prediction state stored in the branch state cache — , for the given execution context. -
GR20180200135U 2018-05-24 2018-05-24 Saving and restoring prediction state GR20180200135U (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
GR20180200135U GR20180200135U (en) 2018-05-24 2018-05-24 Saving and restoring prediction state

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GR20180200135U GR20180200135U (en) 2018-05-24 2018-05-24 Saving and restoring prediction state

Publications (1)

Publication Number Publication Date
GR20180200135U true GR20180200135U (en) 2020-01-22

Family

ID=69624640

Family Applications (1)

Application Number Title Priority Date Filing Date
GR20180200135U GR20180200135U (en) 2018-05-24 2018-05-24 Saving and restoring prediction state

Country Status (1)

Country Link
GR (1) GR20180200135U (en)

Similar Documents

Publication Publication Date Title
US10838730B2 (en) Saving and restoring branch prediction state
US11126714B2 (en) Encoding of input to storage circuitry
US10540181B2 (en) Managing branch prediction information for different contexts
US10185731B2 (en) Indexing entries of a storage structure shared between multiple threads
US10819736B2 (en) Encoding of input to branch prediction circuitry
US11347507B2 (en) Secure control flow prediction
US10649782B2 (en) Apparatus and method for controlling branch prediction
US8271750B2 (en) Entry replacement within a data store using entry profile data and runtime performance gain data
Vougioukas et al. BRB: Mitigating branch predictor side-channels
US20090089564A1 (en) Protecting a Branch Instruction from Side Channel Vulnerabilities
US11385899B2 (en) Branch prediction cache for multiple software workloads
US11907369B2 (en) Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception
US10599437B2 (en) Managing obscured branch prediction information
MX2008016116A (en) Methods and apparatus for proactive branch target address cache management.
KR20090009955A (en) Block-based branch target address cache
US11288209B2 (en) Controlling cache entry replacement based on usefulness of cache entry
KR20210019584A (en) Multi-table branch target buffer
GR20180200135U (en) Saving and restoring prediction state
US20220374235A1 (en) Method for secure, simple, and fast speculative execution
CN105279451B (en) Security domain prediction