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