Processori superscalari e multicore
In questa pagina 7
La PipelineIdea della catena di montaggio; pipeline a 5 stadi IF, ID, EX, MEM, WB; tempo di ciclo, tempo per n istruzioni in una pipeline a k stadi e speedup con esempi svolti; registri di pipeline; scrittura e lettura dei registri nello stesso ciclo; limiti (stadi sbilanciati, hazard).Pipeline → esegue al massimo un'istruzione per ciclo. Per andare oltre si eseguono più istruzioni in parallelo.
Superscalari
Un processore superscalare preleva, decodifica ed esegue più istruzioni per ciclo (2–8), con più unità funzionali (più ALU, unità load/store, unità in virgola mobile). Il limite teorico è un CPI di con istruzioni lanciate per ciclo.
Esempio: superscalare a 2 vie a 2 GHz → fino a istruzioni al secondo; con dipendenze che in media permettono 1,4 istruzioni per ciclo: .
Esecuzione fuori ordine
Le istruzioni vengono lanciate quando i loro operandi sono pronti, non nell'ordine del programma; i risultati vengono poi ritirati in ordine (con un reorder buffer), così le eccezioni e i salti sbagliati si gestiscono come se l'esecuzione fosse stata sequenziale.
Fuori ordine le dipendenze WAR e WAW (vedi Hazard nella pipelineHazard strutturali, sui dati e sul controllo; dipendenze RAW, WAR e WAW; stalli e bolle con diagrammi; data forwarding (bypass) e caso load-use; riordino delle istruzioni da parte del compilatore e dell'hardware; costo dei salti.Hazard nella pipeline →) diventano un problema. Sono dipendenze "di nome" (riuso dello stesso registro), non di dato: si eliminano con la ridenominazione dei registri, che assegna a ogni nuovo valore un registro fisico diverso (i registri fisici sono molti più di quelli dell'ISA).
1: add r1, r2, r3
2: sub r4, r1, r5 ; RAW su r1: dipendenza vera
3: mul r1, r6, r7 ; WAW con 1, WAR con 2: dipendenze di nomeRidenominando r1 dell'istruzione 3 in un registro fisico p9, l'istruzione 3 può essere eseguita prima di 2 o insieme a 1.
Speculazione
Con la Branch predictionTecniche per gli hazard sul controllo: stallo, flussi multipli, prelievo anticipato del bersaglio, loop buffer, salto ritardato; predizione statica e dinamica con bit di storia, predittore a 1 e a 2 bit con esempio su un ciclo, tabella dei bersagli (BTB); costo di una predizione errata.Branch prediction → il processore esegue speculativamente le istruzioni dopo un salto previsto, prima di sapere se la previsione è giusta. Se è sbagliata i risultati vengono scartati prima del ritiro.
Limiti
- Il parallelismo tra istruzioni di un singolo programma è limitato dalle dipendenze vere e dai salti.
- La complessità (logica di lancio, ridenominazione, reorder buffer) cresce più che linearmente con il numero di vie.
- Dal 2005 circa la frequenza non cresce più come prima: la potenza dinamica è circa e il calore non si riesce a dissipare (power wall).
Multithreading e multicore
- Multithreading simultaneo (SMT, hyper-threading): un core esegue istruzioni di più thread nello stesso ciclo, riempiendo le unità che un solo thread lascerebbe inattive.
- Multicore: più processori completi (core) sullo stesso chip, ciascuno con le sue cache L1/L2 e una L3 condivisa. Le prestazioni crescono solo se il software è scritto in modo parallelo (più thread o processi).
- Coerenza delle cache: se due core hanno in cache lo stesso blocco e uno lo modifica, l'altra copia va invalidata o aggiornata (protocolli come MESI).
Il guadagno massimo è limitato dalla parte sequenziale del programma (legge di Amdahl, vedi Prestazioni di un calcolatoreTempo di risposta e throughput; equazione del tempo di CPU con numero di istruzioni, CPI e clock, esempi svolti; CPI medio per classi di istruzioni; MIPS e MFLOPS e loro limiti; legge di Amdahl con esempi; benchmark e media geometrica; come hardware e software influenzano ciascun fattore.Prestazioni di un calcolatore →).
Acceleratori
Unità specializzate per compiti specifici, molto più efficienti di un core generico: GPU (grafica e calcolo parallelo su molti dati), unità vettoriali (SIMD, in ARM NEON: la stessa operazione su più dati con un'istruzione), unità per crittografia, per reti neurali, DSP. Esempio SIMD: una sola istruzione somma quattro coppie di numeri a 32 bit contenuti in due registri da 128 bit.
Errori tipici
- Confondere superscalare (più istruzioni dello stesso programma per ciclo) e multicore (più programmi o thread su core diversi).
- Pensare che fuori ordine i risultati diventino visibili fuori ordine: il ritiro è in ordine.
Versione ripasso
Oltre la PipelineIdea della catena di montaggio; pipeline a 5 stadi IF, ID, EX, MEM, WB; tempo di ciclo, tempo per n istruzioni in una pipeline a k stadi e speedup con esempi svolti; registri di pipeline; scrittura e lettura dei registri nello stesso ciclo; limiti (stadi sbilanciati, hazard).Pipeline → (al più un'istruzione per ciclo) si eseguono più istruzioni in parallelo.
- Superscalare: 2-8 istruzioni per ciclo, più unità funzionali, CPI limite . A 2 vie e 2 GHz: fino a istruzioni/s; con 1,4 per ciclo .
- Fuori ordine: partenza a operandi pronti, ritiro in ordine (reorder buffer). WAR e WAW (Hazard nella pipelineHazard strutturali, sui dati e sul controllo; dipendenze RAW, WAR e WAW; stalli e bolle con diagrammi; data forwarding (bypass) e caso load-use; riordino delle istruzioni da parte del compilatore e dell'hardware; costo dei salti.Hazard nella pipeline →) sono dipendenze "di nome", eliminate dalla ridenominazione dei registri: in
1: add r1,r2,r3;2: sub r4,r1,r5;3: mul r1,r6,r7la 3 ha WAW con 1 e WAR con 2; rinominandor1inp9può precedere la 2. - Speculazione: si esegue dopo un salto previsto (Branch predictionTecniche per gli hazard sul controllo: stallo, flussi multipli, prelievo anticipato del bersaglio, loop buffer, salto ritardato; predizione statica e dinamica con bit di storia, predittore a 1 e a 2 bit con esempio su un ciclo, tabella dei bersagli (BTB); costo di una predizione errata.Branch prediction →); se errata, i risultati si scartano prima del ritiro.
- Limiti: dipendenze vere e salti; complessità più che lineare con le vie; power wall (, dal 2005 circa la frequenza non cresce).
- SMT (hyper-threading): più thread nello stesso ciclo. Multicore: più core con L1/L2 proprie e L3 condivisa; serve software parallelo; limite di Amdahl (Prestazioni di un calcolatoreTempo di risposta e throughput; equazione del tempo di CPU con numero di istruzioni, CPI e clock, esempi svolti; CPI medio per classi di istruzioni; MIPS e MFLOPS e loro limiti; legge di Amdahl con esempi; benchmark e media geometrica; come hardware e software influenzano ciascun fattore.Prestazioni di un calcolatore →). Coerenza delle cache: la copia modificata invalida o aggiorna le altre (MESI).
- Acceleratori: GPU, SIMD (ARM NEON: una istruzione somma quattro coppie di numeri a 32 bit), crittografia, reti neurali.
Errori tipici: superscalare (stesso programma) confuso con multicore; il ritiro è in ordine.