Branch target predictor

De la Viquipèdia, l'enciclopèdia lliure
Branch target predictor

A l'arquitectura d'ordinadors, un predictor d'objectiu de salt/branca és la part d'un processador que prediu l'objectiu, és a dir, l'adreça de la instrucció que s'executa a continuació, d'un salt condicional presa o una instrucció de salt incondicional abans de calcular l'objectiu de la instrucció de salt. [1]

La predicció de l'objectiu del salt no és el mateix que la predicció del salt que intenta endevinar si es prendrà o no un salt condicional (és a dir, binària).[2]

En dissenys de processadors més paral·lels, a mesura que la latència de la memòria cau d'instruccions s'allarga i l'amplada de recuperació augmenta, l'extracció d'objectius de branca es converteix en un coll d'ampolla. La recurrència és:

  • La memòria cau d'instruccions recupera el bloc d'instruccions
  • Les instruccions en bloc s'escanegen per identificar les branques
  • S'identifica la primera branca presa prevista
  • Es calcula l'objectiu d'aquesta branca
  • La recuperació d'instruccions es reinicia a l'objectiu de la branca

A les màquines on aquesta recurrència triga dos cicles, la màquina perd un cicle complet de recuperació després de cada branca presa prevista. Com que les ramificacions previstes es produeixen cada 10 instruccions aproximadament, això pot forçar una caiguda substancial de l'ample de banda de recuperació. Algunes màquines amb latències de memòria cau d'instruccions més llargues tindrien una pèrdua encara més gran. Per millorar la pèrdua, algunes màquines implementen la predicció de l'objectiu de la branca: donada l'adreça d'una sucursal, prediuen l'objectiu d'aquesta branca. Un perfeccionament de la idea prediu l'inici d'una sèrie seqüencial d'instruccions donada l'adreça de l'inici de l'execució seqüencial d'instruccions anterior.[3]

Aquest predictor redueix la recurrència anterior a:

  • Hash l'adreça de la primera instrucció d'una execució
  • Obteniu la predicció per a les adreces dels objectius de les sucursals en aquesta sèrie d'instruccions
  • Seleccioneu l'adreça corresponent a la branca prevista presa

Com que la memòria RAM del predictor pot ser del 5 al 10% de la mida de la memòria cau d'instruccions, la recuperació es fa molt més ràpid que la recuperació de la memòria cau d'instruccions i, per tant, aquesta recurrència és molt més ràpida. Si no fos prou ràpid, es podria paral·lelitzar, predint les adreces de destinació de les branques de destinació.[4]

Referències[modifica]

  1. «How branch predictor and branch target buffer co-exist?» (en anglès). [Consulta: 28 novembre 2023].
  2. «Dynamic Branch Prediction – Computer Architecture» (en anglès). [Consulta: 28 novembre 2023].
  3. «Branch Prediction» (en anglès). [Consulta: 28 novembre 2023].
  4. «[https://arxiv.org/pdf/2106.04205.pdf Micro BTB: A High Performance and Lightweight Last-Level Branch Target Buffer for Servers]» (en anglès). [Consulta: 28 novembre 2023].