Architetture RISC – Alpha EV8 Francesco Conti Naomi Scagliola Gianluca Papaleo Indice degli argomenti Evoluzione delle architetture Pipelining Tecnologia RISC Multithreading Alpha EV8 Confronto con le precedenti macchine Alpha Hardware per l’imlementazione dell’SMT Register Renaming Algoritmi per la scelta del thread Evoluzione delle architetture Aumento della velocita’ Introduzione memorie cache Introduzione della pipeline Tecnologia RISC Architetture superscalari Aumento della velocita’ Dall’introduzione della prima CPU si puo’ rilevare un continuo aumento della velocita`, che va in due direzioni non antitetiche. Aumento della dimensione dei dati trattati con un’ unica istruzione. Aumento della frequenza del clock. Riduzione del numero di cicli di clock per ogni singola istruzione. Introduzione memorie cache La velocita` delle memorie e` circa triplicata mentre la velocita` delle CPU aumentava di quattrocento volte. La CPU, quindi, si e` trovata costretta a fare delle pause, per attendere i dati dalla memoria. Soluzione: Code di prefetch. Memorie cache di primo e secondo livello. Introduzione della pipeline (1) Alcune delle operazioni che la CPU svolge in sequenza, potrebbero essere in realta` svolte in contemporanea. Il concetto di pipeline e` analogo a quello di catena di montaggio, in cui un pezzo (istruzione) incontra diversi stadi di semilavorazione, per uscire dalla catena completamente lavorato, mentre altri pezzi sono entrati nella catena nel frattempo. Introduzione della pipeline (2) Esempio: Conflitti nella pipeline La pipeline, eseguendo piu` istruzioni contemporaneamente, puo` andare in contro a conflitti di vario tipo, di cui i piu` comuni sono: Conflitti strutturali: quando due fasi della pipeline accedono ad una risorsa in comune. Conflitti di dati: quando un’istruzione dipende dal risultato precedente. Conflitti di controllo: quando istruzioni di salto costringono lo svuotamento della pipeline per caricare un nuovo flusso. Conflitti nella pipeline : esempi (1) Conflitti strutturali Istruzioni Situazione nella pipeline Soluzione: memoria DUAL PORT o cache distinte per dati e istruzioni. Conflitti dati Istruzioni Situazione nella pipeline Soluzione: dimezzamento ID e WB, realizzazione di una rete di bypass o riordino delle istruzioni. Conflitti nella pipeline : esempi (2) Conflitti di controllo Per evitare di svuotare la pipeline e` stato creato un meccanismo in grado di prevedere la destinazione del salto al fetch o decode dell’istruzione in modo da caricare subito la pipeline con le istruzioni corrette. Algoritmo di Branch prediction Tecnologia RISC Caratteristiche dei processori RISC: Set di istruzioni semplice e limitato (due sole istruzioni che coinvolgono la memoria: LOAD e STORE). Elevato numero di registri. Pipeline delle istruzioni particolarmente ottimizzata. RISC vs CISC Caratteristiche CISC Caratteristiche RISC Approccio fondamentale La complessita` si sposta dal codice all’ hardware La complessita` si sposta dall’hardware al software, ovvero al compilatore che deve essere molto efficiente Conseguenze della scelta per il programmatore Il codice e` molto compatto e occorre poca memoria per contenerlo; e` l’hardware che si incarica di decodificare istruzioni anche molto complesse. La dimensione del codice aumenta in favore della semplificazione dell’ hardware -Molti registri -Pochi registri -Presenza di una rom di decodifica Conseguenze della scelta a livello hardware -ISA molto articolato con centinaia di istruzioni -Modalita` di indirizzamento memoria-memoria -Alla memoria si accede solo con load e store -ISA con qualche decina di istruzioni -Esecuzione diretta delle istruzioni -Uso della pipeline per diminuire il ritardo del critical path Architetture superscalari Con l’architettura RISC possiamo eseguire un’istruzione per ciclo di clock. Se si intende superare questo limite si deve introdurre nel processore piu` di una pipeline. Problemi: Aumento della probabilita` di richiesta di un dato attualmente in elaborazione in un altro stadio. Decodifica di un’istruzione di salto. Il Multithreading Il concetto su cui si basa il multithreading e` il seguente: Non tutte le istruzioni che compongono un programma sono tra loro dipendenti. Il programma puo` essere dunque diviso in blocchi, threads, che possono essere maneggiati dalla CPU in totale liberta`. Possono essere individuati anche i thread impliciti (ad es. cicli di elaborazione). On-Chip Multithreading E` a livello del processore quindi esclude il sistema operativo dalla gestione dei singoli threads. Esistono diverse varianti dell’On-Chip Multithreading: On-chip multiprocessing (CMP) Coarse-grained multithreading (CMT) Fine-grained multithreading (FMT) Simultaneous multithreading (SMT) On-Chip Multiprocessing CMP Questa soluzione consiste nell’inserire all’interno del chip due o piu` processori. Anziche` avere ad es. un singolo processore con 4 unita` funzionali e 64 registri, si decide di avere 2 processori ognuno con 2 unita` funzionali e 32 registri. a)Processore superscalare b)CMP con 2 CPU Coarse-Grained Multithreading CMT In questa soluzione detta “coarse-grained”, cioe` a grana grossa, il processore e` uno solo ed esegue un thread alla volta come nel multitasking. Tuttavia quando si verifica un problema che potrebbe far perdere cicli al processore, viene salvato tutto lo stato del thread in appositi registri interni e viene fatto partire il thread successivo, gia` pronto per essere eseguito. Fine-Grained Multithreading FMT Molto simile al CMT, il multithreading “a grana fine” anziche` commutare fra i threads quando si perviene ad un cache miss o ad un esaurimento del codice eseguibile, esegue lo switching ad ogni ciclo di clock. Con l’ FMT vengono evitati intervalli di latenza che manderebbero in stallo la pipeline ( es. istruzioni complesse che richiedono piu` cicli di clock ). Simultaneous Multithreading SMT Quest’ultima soluzione unisce la flessibilita` del FMT all’efficienza nello sfruttamento delle risorse tipica del CMP. Ad ogni ciclo di clock si cerca di fare in modo che tutte le risorse hardware siano impegnate in qualche compito. In ogni momento possono essere eseguiti piu` thread. Alpha EV8 Caratteristiche: Processore superscalare con esecuzione out of order delle istruzioni. 4 unita’ funzionali FP, 6 unita’ funzionali Integer. Ritmo sostenuto di 8 istruzioni per ciclo di clock. Implementazione del simultaneous multithreading. Confronto tra le macchine Alpha 21064 / EV4 21164 / EV5 21264 / EV6 21364 / EV7 21464 / EV8 Transistor Count (million) 1.68 9.3 15.2 130 250 Die Size (mm2) 234 299 314 397 350 Target Clock Frequency 200 MHz 300 MHz 600 MHz 1.5 GHz 2.0 GHz Power / Supply Voltage 30W / 3.3V 50W / 3.3V 72W / 2.2V 125W / 1.5V 250W / 1.2V 2 4 4 Fetch, 6 Issue 4 Fetch, 6 Issue 8 Fetch 10 Issue Instruction Scheduling in-order in-order out-of-order out-of-order out-of-order, SMT Sustained Cache BW 600 MB/s 1 GB/s 4 GB/s 16 GB/s 64 GB/s Sustained Memory BW 150 MB/s 400 MB/s 2 GB/s 10 GB/s 10 GB/s 1992 1995 1998 2001 2003 Feature Instruction /Cycle First Systems Ship Alpha EV8 - IPC Per i dati dell’EV8 e’ stata fatta una stima. L’EV7 non e’ stato incluso (il core e’ lo stesso dell’EV6). Significativo incremento dell’IPC dall’ EV5 all’EV6 grazie all’esecuzione out of order delle istruzioni. Alpha EV8 - Hardware per SMT Sono necessari alcuni cambiamenti hardware per supportare l’SMT: Program Counter multipli e la capacita’ di selezionare uno o piu` di essi per il fetch ad ogni ciclo di clock. Associazione di un thread identifier. Ogni thread deve poter eseguire istruzioni di trap, flush, retire. Uno stack per thread per la predizione di indirizzi di ritorno delle subroutine . Alpha EV8 - Register renaming Il register renaming permette l’esecuzione out of order di istruzioni per procedere anche in presenza di false dipendenze. Permette esecuzioni speculative oltre il salto condizionato (nel caso la condizione non sia verificata lo stato e’ ripristinato). Alpha EV8 - Register renaming (2) Nell’SMT useremo una singola map-table con dimensione dei registri logici espansa a 7 bit. In particolare: avremo bisogno di 4 thread context. I primi 2 bit della map table indirizzano il thread e i restanti 5 indirizzano i registri. Per diminuire il tempo di esecuzione degli stadi REG e WRB, essi sono stati suddivisi in due parti. Alpha EV8 - Scelta del thread Scheme Max. Active Threads per Cycle Max Instr Fetched per Cycle Description RR.1.8 1 8 Round-robin, 1 active thread, 1 x 8 fetch RR.2.8 2 8 Round-robin, 2 active threads, 2 x 8 fetch BRCOUNT.1.8 1 8 Choose thread with fewest unresolved branches, 1 active thread, 1 x 8 fetch BRCOUNT.2.8 2 8 Choose thread with fewest unresolved branches, 2 active threads, 2 x 8 fetch MISSCOUNT.1.8 1 8 Choose thread with fewest outstanding Dcache misses, 1 active thread, 1 x 8 fetch MISSCOUNT.2.8 2 8 Choose thread with fewest outstanding Dcache misses, 2 active thread, 2 x 8 fetch ICOUNT.1.8 1 8 Choose thread with fewest instructions in DEC/REN/QUE pipe stages, 1 active thread, 1 x 8 fetch ICOUNT.2.8 2 8 Choose thread with fewest instructions in DEC/REN/QUE pipe stages, 2 active thread, 2 x 8 fetch Alpha EV8 - Organizzazione CPU Alpha EV8 visto dall’ OS L’EV8 appare al sistema operativo come 4 processori distinti che condividono le cache e l’insieme dei Translation Lookaside Buffers (TLB). Cio` e` ottenuto mediante una astrazione chiamata Thread Processing Unit (TPU). Ciascuna TPU e` essenzialmente un processore virtuale single-threaded. Alpha EV8 - Conclusioni L' uscita del processore prevista nel 2003 non è avvenuta a causa di vicende societarie che hanno fatto crollare la stessa. Cause: scarso utilizzo dei processori Alpha nel settore dell'home computing dovuto alla poca disponibilità software. Conseguenze: vendita del bus dell’ EV7 all'AMD e sfruttamento da parte della INTEL (che indirettamente ha acquisito la ALPHA) delle tecnologie dell’EV8 per l'implementazione dei nuovi PENTIUM 4 e dell' IA64. Articoli di riferimento • Le tecnologie dei processori: CISC vs RISC Autore: Lorenzo Marchetti – Lithium.it •Le tecnologie dei processori: On-Chip Multi-Threading Autore: Lorenzo Marchetti – Lithium.it • Beyond RISC – The Post-RISC Architecture Submitted to: IEEE Micro 3/96 • Simultaneous Multithreading: Multiplying Alpha Performance Autore: Matthew Mattina – Compaq.com • I Processori RISC Autore: M.Sonza Reorda – Politecnico di Torino • Calcolatori elettronici – Processori RISC e Pipeline Universita’ degli studi di Firenze • Alpha EV8: Simultaneous Multi-Threat Paul De Mone – Compaq.com