Salta al contenuto
Note per Studenti Processori superscalari e multicore

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 1/n1/n con nn istruzioni lanciate per ciclo.

Esempio: superscalare a 2 vie a 2 GHz → fino a 4⋅1094 \cdot 10^9 istruzioni al secondo; con dipendenze che in media permettono 1,4 istruzioni per ciclo: 2,8⋅1092{,}8 \cdot 10^9.

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 nome

Ridenominando 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 P∝C V2fP \propto C\,V^2 f 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.

Errori tipici: superscalare (stesso programma) confuso con multicore; il ritiro è in ordine.

Lezioni in cui compare

Teoria collegata