Architetture dei processori/Unità predizione salti: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Hellisp (discussione | contributi)
Nessun oggetto della modifica
 
Hellisp (discussione | contributi)
Nessun oggetto della modifica
Riga 2:
*Predizione elementare
I primi esemplari di [[w:SPARC|SPARC]] e [[w:MIPS (microprocessori)|MIPS]] (due delle prime architetture RISC commerciali) facevano una specie di predizione, molto elementare: non consideravano mai il salto accettato, e decodificavano l'istruzione seguente. L'operazione di salto veniva effettutata solo dopo che la condizione veniva valutata.
 
Entrambe le CPU effettuavano questa "predizione" in fase di decodifica e dedicavano al ''fetch'' delle istruzioni un solo ciclo di clock. In questo modo per effettuare un salto servivano due cicli di clock, ma dopo il primo la CPU aveva già effettuato il ''fetch'' dell'istruzione subito successiva al salto; piuttosto che sprecare questo lavoro, entrambi i microprocessori eseguivano anche queste istruzioni, avvantaggiandosi magari per fasi successive del lavoro.
Riga 12:
 
Predizione della linea successiva
Alcuni processori superscalari (es.: MIPS R8000 e [[w:DEC Alpha|DEC Alpha EV6/EV8]] eseguivano col ''fetch'' di una linea di istruzioni, quello di un puntatore alla successiva. Questo metodo è piuttosto diverso dagli altri trattati qui perché esegue la previsione sia della scelta della diramazione che dell'obiettivo del salto.
 
Quando un puntatore indica un gruppo di 2, 4 o 8 istruzioni, solitamente l'istruzione ricercata non è la prima (per un fatto statistico), così la scansione delle prime istruzioni è tempo perso. Generalizzando, vengono scartate rispettivamente 0,5, 1,5 e 3,5 istruzioni decodificate. Lo stesso discorso vale per le istruzioni successive all'istruzione di salto, che devono essere scartate con identica distribuzione media.