2015-07-26 22 views
11

Nel volume 3 dei manuali Intel che contiene la descrizione di un contatore di eventi hardware:Coda istruzioni CPU Intel fornisce la previsione del ramo statico?

BACLEAR_FORCE_IQ

conta il numero di volte che un BACLEAR è stato costretto dalla coda di istruzioni. Il QI è anche responsabile della previsione di ramo condizionale in direzione in base a uno schema statico e dati dinamici forniti dall'unità di previsione ramo L2 . Se la destinazione della diramazione condizionale non viene trovata nell'array di destinazione e l'IQ prevede che il ramo è occupato, quindi l'IQ forza il Branch Address Calculator a emettere un BACLEAR. Ogni BACLEAR asserito dal BAC genera una bolla di circa 8 cicli nella pipeline di istruzioni.

Ho sempre pensato che il Branch Address Calculator esegua l'algoritmo di predizione statica (quando il Branch Target Buffer non contiene alcuna voce di diramazione)?

Qualcuno può confermare quale dei due precedenti è corretto? Non riesco a trovare nulla.

+1

Ho cancellato la mia risposta poiché non era utile. Ma ho notato che il manuale di riferimento di Intel Optimization dice: "La microarchitettura Intel Core non utilizza l'euristica di predizione statica.Tuttavia, per mantenere la coerenza tra i processori Intel 64 e IA-32, il software dovrebbe mantenere l'euristica di previsione statica come predefinita. " –

risposta

0

Se la destinazione del ramo condizionale non si trova nella matrice di destinazione

Come può non essere trovato? lo mascherate con una maschera di bit per trovare l'indice nella tabella e ottenere il prossimo obiettivo di diramazione.

Beh, se dopo aver letto il risultato verifica che l'indirizzo di chiamata non corrisponda al tag sul risultato si ottiene un risultato "non preso".

A questo punto arriviamo alla seconda parte della dichiarazione.

e il QI predice che il ramo è preso

obiettivo Così ramo dice "non presa" e il QI predice che sarà preso abbiamo una contraddizione.

Per risolvere la contraddizione il QI vince come obiettivo del ramo è solo "se saltiamo, saltiamo qui", ma l'IQ prevede se saltiamo o meno in base a molta più logica.

Quindi

poi il quoziente intellettivo forzerà la calcolatrice Filiale di emettere un BACLEAR . Ogni BACLEAR asserito dal BAC genera approssimativamente una bolla di ciclo di 8 nella pipeline di istruzioni di recupero.

Quale è buono in una pipeline di fase 14-19. Gli 8 cicli sono se l'IQ può leggere l'indirizzo target effettivo dall'istruzione (combinata con PC), se il valore deve essere letto in un registro (che è possibile non ancora ritirato) potrebbe richiedere più tempo.