<aside>
😳 Questi processori sono detti anche superscalari.
</aside>
<aside>
💡 Ordine delle istruzioni deciso execution-time dalla CPU. Corrisponde alla suddivisione del lavoro tra SW(scheduler) e HW, cioè tra il compilatore e il processore.
</aside>
Speculazione errata
- La CPU mantiene i risultati in un buffer (Commit Unit) fino a quando la speculazione è stata risolta. Il risultato viene scritto nel register file o in memoria oppure viene semplicemente scartato.
Ciclo di esecuzione di un'istruzione MIPS
- Fetch + Decodifica = Fetch and Decode (scheduling)
- Calcolo + Lettura Memoria = Esecuzione
- Write back + Scrittura Memoria = Commit
<aside>
👌🏿 Ha cammini interi e Floating Point. Diverso cammino critico (static ha cammini critici quasi uguali).
</aside>
Principi della schedulazione dinamica
- Reservation station
- le istruzioni vengono bufferizzate qua.
- gestisce la coda delle istruzioni che hanno bisogno della stessa unità funzionale.
- Commit unit
- provvede a riordinare i risultati delle istruzioni nella sequenza con la quale devono essere restituiti. (out of order execution, in order commit)
- contiene un reorder buffer.
- Condizioni necessaria per esecuzione di una istruzione:
- dato pronto nella reservation station
- dato pronto nel reorder buffer
- le istruzioni non sono eseguite sequenzialmente
Register renaming
- t0 → t00, t01, t02, t03. Registri interni della pipeline. Tutti vanno in t0 al termine del ciclo.