Microprocessori general purpose integrati

Transcript

Microprocessori general purpose integrati
Architetture dei sistemi integrati digitali
© Alessandro Bogliolo
Parte 2.a
Elaborazione:
Microprocessori general purpose
integrati
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
1
Architetture dei sistemi integrati digitali
© Alessandro Bogliolo
Introduzione
1.1
Specifica
•
•
1.2
•
•
Eseguibile (algoritmo)
• Es: massimo comun divisore (GCD)
int GCD(int x, int y) {
while(x != y) {
if (x>y) x = x-y;
else y = y-x;
}
return x;
}
Componenti del sistema:
• ALU
• Controller
• Memoria per dati e istruzioni
• Input
• Output
Funzionamento:
• Instruction fetch
• Instruction decode
• Execute
Von Neuman bottleneck
Instruction set
•
•
•
•
1.4
resto( x / z ) = 0 ∧ resto( y / z ) = 0

GCD( x, y ) = z ∈ N | 
 z '∈ N , z ' > z ⇒ resto( x / z ' ) > 0 ∨ resto( y / z ' ) > 0
Macchina di Von Neuman
•
1.3
Dichiarativa (enunciazione di proprietà)
• Es: massimo comun divisore (GCD) di due numeri interi positivi x ed y:
Formato
Ricchezza (CISC vs RISC)
Caratteristiche:
• Operandi
• Stack architectures
• Accumulator architectures
• General purpose architectures
• Modalità di indirizzamento
• Operazioni
Compilazione
• Ottimizzazione algoritmica
• Ottimizzazione orientata all'architettura
Prestazioni di un microprcessore
[HP-c1.6]
• Peak performance VS Common-case performance
• CPU time (CPUT)
[seconds/program]
• CPU clock cycles (CPUC)
[clock cycles/program]
• Clock cycle time (CLK)
[seconds/clock]
• Clock cycles per instruction (CPI) [clock cycles/instruction]
• Instruction count (IC)
[instructions/program]
• Milioni di istruzioni al secondo (MIPS)
• Relazioni:
• CPUT = CPUC * CLK
• CPI = CPUC/IC
• CPUT = IC * CPI * CLK
[instructions/program * clock cycles/instruction * seconds/clock]
• CLK dipende da tecnologia e organizzazione
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
2
Architetture dei sistemi integrati digitali
•
•
•
•
© Alessandro Bogliolo
• CPI dipende da architettura e organizzazione
• IC dipende da architettura, algoritmo e compilazione
6
6
MIPS = IC/CPUT /10 = CLK/CPI/10
6
CPUT = IC/MIPS/10
MIPS
• Dipendono dall'instruction set
• Dipendono dal programma
• Può essere fuorviante come misura di prestazioni perché può dare indicazioni opposte a quelle
del CPUT se le istruzioni non hanno tutte lo stesso CPI
CPUC = ∑ CPI i ICi
i
•
CPI = ∑ CPI i ICi / IC
i
•
•
•
1.5
Relative MIPS (RMIPS)
Figura di merito dimensionalmente uguale al MIPS definita per essere consistente con un'altra
misura di performance, quale il CPUT.
RMIPS(M) = Performance(M)/Performance(Ref) * MIPS(Ref)
Dove M e Ref sono due microprocessori.
Figure di merito assolute:
• Numero di byte di programma
(S)
• Numero di byte trasferiti tra memoria e microprocessore durante l'esecuzione (M)
• Numero di byte trasferiti tra i registri interni
(R)
Speedup (Amdahl's Law)
• Il vantaggio prodotto da un accorgimento per l'aumento delle prestazioni è legato alla frequenza
con cui lo si può applicare
• Speedupenh = CPUToriginal/CPUTenhanced
• CPUT = CPUToriginal(1 - Fractionenh + Fractionenh/Speedupenh)
• Es: Speedup 2X, Fraction 50% produce maggior vantaggio di Speedup 10X, Fraction 20%
Benchmarks - Profiling
•
•
General-purpose processors
• Prestazioni medie valutate su un insieme di applicazioni eterogenee scelte come benchmark
Embedded processor cores
• Prestazioni valutate sull'applicazione specifica
2 Architetture parallele (overcoming the Von Neuman Bottleneck)
2.1
Parallelismo
•
•
•
Classificazione delle architetture [SFK-c3.3]
• Flynn’s:
• Single-Instruction stream (SI) vs Multiple-Instruction stream (MI)
• Single-Data stream (SD) vs Multiple-Data stream (MD)
• Architetture parallele:
• Data-Parallel
• Function-Parallel
• Process-Level
• Thread-Level
• Instruction-Level (ILP)
• Microprocessori pipelined
• Microprocessori VLIW
• Microprocessori superscalari
Tecniche per il parallelismo [SFK-c3.4]
• Pipelining
• Replication (Multiple-issue processing)
Evoluzione dei processori ILP [SFK-c4.1]
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
3
Architetture dei sistemi integrati digitali
2.2
© Alessandro Bogliolo
Speed-up potential of ILP processors
•
Problema della consistenza della specifica sequenziale [SFK-c4.4]
• Dipendenza tra istruzioni [SFK-c4.2]
• Dipendenza dei dati
load r1 a
add r2 r1 r1
• Dipendenza del controllo di flusso
mul r1 r2 r3
jz label
• Dipendenza delle risorse
mul r1 r2 r3
mul r4 r2 r5
• Instruction scheduling [SFK-c4.3]
• Statistiche [SFK-c4.5]
3 Processori pipelined
3.1
Introduzione
•
•
•
•
Principio di funzionamento [HP-c3.1]
Es: Pipeline a 5 stadi del DLX [HP-c3.2]
1. Instruction fetch
2. Instruction decode / Register fetch
3. Execute / Address computation
4. Memory access
5. Write back to registers
Hazards:
• Structural hazards: resource conflicts
• Data hazards: un'istruzione usa i risultati di un'istruzione precedente
• Control hazards: branches
• Gli hazards possono stallare la pipeline
Prestazioni:
• Limitazioni al periodo di clock:
CLK >= latch setup and propagation time + longest propagation time + clock skew
= Tlatch + Tpropmax + Tskew
• Speedup = AvgCPI / AvgCPIpipe * CLK / CLKpipe
• Ipotesi: stesso CLK, stessa architettura, nessuno stallo
Speedup = Nstages
• Ipotesi: stesso CPI, stadi bilanciati
Speedup = (Tprop + Tlatch + Tskew)/(Tprop/Nstages + Tlatch +Tskew)
• Ipotesi: nessun overhead, stadi bilanciati
Speedup = Nstages / (1+AvgStalls per instruction)
• Lo speedup non aumenta indefinitamente all’aumentare del numero di stadi, per effetto di:
• sbilanciamento degli stadi
• overhead dei latch
• complessità della logica di controllo e gestione delle eccezioni
• condizioni di stallo
• limite fisico al numero di stadi
• Parametri:
• Latenza (latency): numero minimo di cicli di clock tra l'inizio dell'esecuzione di un'istruzione che
produce dati e l'inizio di una che li usa
• Intervallo di ripetizione (repetition interval o throughput): numero minimo di cicli di clock tra
l'inizio dell'esecuzione di due istruzioni dello stesso tipo
• Esempi: [HP-p189, SFK-p131]
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
4
Architetture dei sistemi integrati digitali
3.2
© Alessandro Bogliolo
Structural hazards
[HP-c3.3]
• Ipotesi: istruzioni e dati sulla stessa memoria
• Esempio:
Load
Mem
Reg
ALU
Mem
Reg
Instr1
Mem
Reg
ALU
Mem
Instr2
Mem
Reg
ALU
Instr3
Mem
Reg
Instr4
Mem
Load
Instr1
Instr2
Stall
Instr3
Mem
Reg
Mem
ALU
Reg
Mem
Mem
ALU
Reg
---
Reg
Mem
ALU
--Mem
Reg
Mem
ALU
Reg
Reg
Mem
ALU
Reg
Mem
Reg
Reg
Mem
--Reg
Reg
--ALU
--Mem
Reg
In pratica un Load richiede 2 clock cycles.
Se L/W=40% delle istruzioni di un programma, risulta Avg CPI = 1 + 0.4*1 = 1.4
•
•
3.3
Soluzione: architettura Harvard - memorie (e BUS) indipendenti per dati (DM) e istruzioni (IM)
Esempio:
Load
IM
Reg
ALU
DM
Reg
Instr1
IM
Reg
ALU
DM
Reg
Instr2
IM
Reg
ALU
DM
Reg
Instr3
IM
Reg
ALU
DM
Reg
Instr4
IM
Reg
ALU
DM
Reg
Data hazards
[HP-c3.4]
• Esempio (define and use):
ADD
r1 r2 r3
IM
SUB
r4 r5 r1
AND
r6 r1 r7
OR
r8 r1 r9
ZOR
r10 r1 r11
reg
IM
ALU
reg
IM
DM
ALU
reg
IM
reg
DM
ALU
reg
IM
reg
DM
ALU
reg
reg
DM
ALU
reg
DM
reg
Soluzioni:
• Forward dagli output agli input della ALU
(vedi istruzione SUB nell'esempio)
• Forward da DM agli input della ALU
(vedi istruzione AND nell'esempio)
• Scrittura e lettura su registri eseguite nella prima e nella seconda metà del ciclo di clock
(vedi istruzione OR nell'esempio)
ADD
r1 r2 r3
IM
reg
ALU
DM
reg
SUB
r4 r5 r1
IM
reg
ALU
DM
reg
AND
r6 r1 r7
IM
reg
ALU
DM
reg
OR
r8 r1 r9
IM
reg
ALU
DM
reg
ZOR
r10 r1 r11
IM
reg
ALU
DM
reg
•
Esempio (load and use):
LW
r1 0 (r2)
SUB
r4 r1 r5
AND
r6 r1 r7
OR
r8 r1 r9
IM
reg
IM
ALU
reg
IM
DM
ALU
reg
IM
reg
DM
ALU
reg
reg
DM
ALU
reg
DM
reg
Soluzioni:
• Stadi di pipeline idle in attesa dell'accesso a DM
• Forward da DM agli ingressi della ALU
(vedi istruzione SUB nell'esempio)
• Scrittura e lettura su registri eseguite nella prima e nella seconda metà del ciclo di clock
(vedi istruzione AND nell'esempio)
LW
r1 0 (r2)
IM
reg
ALU
DM
reg
SUB
r4 r1 r5
IM
reg
--ALU
DM
reg
AND
r6 r1 r7
IM
--reg
ALU
DM
reg
OR
r8 r1 r9
--IM
reg
ALU
DM
reg
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
5
Architetture dei sistemi integrati digitali
3.4
© Alessandro Bogliolo
Control hazards
[HP-c3.5]
•
Ipotesi: salto riconosciuto durante ID, test e calcolo del target effettuati durante EX, PC aggiornato
durante MEM
IF del target possibile solo durante WB
Esempio:
branch
IF
ID
EX
MEM
WB
target
IF
----IF
ID
EX
MEM
WB
target+1
IF
ID
EX
MEM
WB
•
Soluzioni:
• Anticipare la decodifica delle istruzioni di salto
• Anticipare il calcolo del target e l'aggiornamento del program counter
•
Ipotesi: PC aggiornato durante ID
branch
IF
ID
target
IF
target+1
•
Predict untaken:
UTBranch
+1
+2
TBranch
+1
target
•
Delayed branch:
UTBranch
+1 (delay)
+2
TBranch
+1 (delay)
target
IF
IF
IF
IF
ID
IF
ID
IF
ID
IF
ID
IF
EX
IF
MEM
ID
IF
WB
EX
ID
MEM
EX
WB
MEM
EX
ID
IF
MEM
EX
ID
WB
MEM
EX
WB
MEM
WB
EX
-IF
MEM
-ID
WB
-EX
-MEM
WB
EX
ID
IF
MEM
EX
ID
WB
MEM
EX
WB
MEM
WB
EX
ID
IF
MEM
EX
ID
WB
MEM
EX
WB
MEM
WB
WB
La tecnica parte dall’osservazione che all’istruzione +1, di cui viene fatto il fetch prima di conoscere la
destinazione del branch, è dedicata un’intera riga della tabella (cioè un’intero flusso attraverso la
pipeline). Quindi la si potrebbe eseguire (oltre che caricare) per non sprecare CPU time. Il delayed
branch prevede quindi che l’istruzione +1 venga comunque eseguita. Dal punto di vista semantico tale
istruzione non va vista come la prima che segue il branch, ma come l’ultima di quelle che lo
precedono, in quanto il target del branch sarà eseguito dopo l’istruzione +1.
Dal punto di vista operativo, l’istruzione +1 è l’ultima di quelle interne al branch (se indipendente dal
branch), altrimenti deve essere un nop se non ci sono istruzioni utili indipendenti dal branch.
3.5
Istruzioni a multipli cicli di esecuzione
[HP-c3.7]
• Diverse unità di elaborazione in parallelo per eseguire diverse istruzioni
• Cicli di esecuzione ripetuti per particolari istruzioni
• Numero variabile di cicli di clock (e stadi di pipeline) dedicati all'esecuzione di diversi tipi di istruzioni
• Istruzioni di tipo diverso (Es: load, addizioni intere, addizioni FP, divisioni, …) impegnano unità
funzionali diverse per un numero diverso di cicli di clock
• Latenza e intervallo di ripetizione vanno valutati per ogni tipo di istruzione
3.6
Stima delle prestazioni orientata all'applicazione
•
Specifiche del microprocessore:
• Instruction Set
• Prestazioni:
• CLK
• Per ogni istruzione:
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
6
Architetture dei sistemi integrati digitali
© Alessandro Bogliolo
•
•
3.7
CPI: numero di cicli di clock dedicati esclusivamente all’istruzione indipendentemente dal
contesto in cui è inserita e dai dati su cui opera
• Latenza: numero di cicli di clock (oltre al CPI) che devono intercorrere tra il fetch
dell’istruzione e il fetch di un’istruzione che ne usi i risultati
• Intervallo di ripetizione: numero di cicli di clock (oltre al CPI) che devono intercorrere tra il
fetch dell’istruzione e il fetch di un’istruzione dello stesso tipo
• Energia:
• Per ogni istruzione:
• EBi: Base energy (energia spesa ogni volta che si esegue l'istruzione)
L'energia di base può dipendere dal valore di dati e indirizzi, ma la dipendenza è difficile da
caratterizzare e pertanto la si assume costante
• Per ogni coppia di istruzioni:
• EOij: Overhead energy (energia dovuta alla transizione dall'istruzione precedente)
Analisi del codice compilato:
• Determinazione di:
• IC totale, ICi per ogni istruzione, ICij per ogni coppia di istruzioni in sequenza
• AvgCPI, basato sulle specifiche sul CPI delle istruzioni e sul conteggio della frequenza di ogni
istruzione
AvgCPI = Sumi (CPIi * ICi)/IC
• Numero di cicli di stallo SC, basato sulle specifiche su latenza e ripetizione
Si noti che se latenza e ripetizione sono definite come eccessi rispetto al CPI, il calcolo del
numero di cicli di stallo è indipendente dal calcolo di AvgCPI. Si noti inoltre che le specifiche su
latenza e ripetizione spesso ammettono soluzioni comuni e non possono essere valutate
indipendentemente.
• Calcolo del CPUT:
• CPUT = (AvgCPI * IC + SC) * CLK
• Calcolo del consumo di energia e potenza:
• Energy = Sumi (ICi * EBi) + Sumij(ICij * EOij)
• Power = Energy/CPUT
Esempi di ottimizzazioni statiche del codice
[HP-c4.1, Dispensa Lab1.pdf]
•
Nei seguenti esempi consideriamo:
operazioni intere:
latenza 0,
accessi in memoria: latenza 1,
FP Add
latenza 2,
FP Mult
latenza 6,
Divisioni
latenza 24,
Branch
delayed
repetition time 1
repetition time 1
repetition time 1
repetition time 1
repetition time 24
Es:
for (i=1000; i>0; i--)
x[i] = x[i] + s;
Loop:
LD
stall
ADDD
stall
stall
SD
SUBI
stall
BNEZ
nop
F0, 0(R1)
F4, F0, F2
0(R1), F4
R1, R1, #8
R1, Loop
IF
ID
EX
...
IF
stall ID
EX
...
Il primo ciclo stallo è dovuto al LD.
Il secondo e il terzo sono dovuti all’ADD FP.
Il quarto è dovuto all’aggiornamento di R1 (sottrazione intera). Si noti che viene introdotto uno stallo
benchè le operazioni intere abiano latenza zero. La ragione è da ricercarsi nel fatto che l’istruzione che
segue è un branch condizionato all’esito della sottrazione. Se il risultato della sottrazione dovesse
essere usato come operando di un’altra operazione non sarebbero necessari stalli grazie al forward
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
7
Architetture dei sistemi integrati digitali
© Alessandro Bogliolo
diretto dall’uscita all’ingresso dell’unità di esecuzione. I branch invece calcolano la destinazione
durante la fase di ID, che risulta sovrapposta alla fase di EX dell’istruzione precedente. Se il risultato è
necessario al calcolo del target occorre quindi ritardarlo di un ciclo di clock. Questo indica anche che
per una stima accurata dei tempi di esecuzione latenza e repetition time non bastano, ma
occorrerebbe specificare una latenza per ogni coppia di istruzioni in sequenza.
Il nop finale rende conto della perdita di un ciclo di clock per il salto condizionato che chiude il ciclo. Si
noti che il nop viene eseguito ad ogni ciclo, non solo in uscita dal ciclo, per via della politica di salto
ritardato.
•
Riordinamento di istruzioni indipendenti
Loop:
LD
F0, 0(R1)
SUBI R1, R1, #8
ADDD F4, F0, F2
BNEZ R1, Loop
stall
SD
8(R1), F4
delayed branch
istruzione appartenente al corpo del ciclo
Il riordinamento delle istruzioni e lo sfruttamento del delayed branch riducono da 4 a 1 il numero di cicli
di stallo. Si noti che l’aggiornamento di R1 viene anticipato, rendendo necessario l’uso di un offset 8
per l’indirizzamento in scrittura. L’unico stallo rimasto è dovuto alla latenza 2 della somma floating
point.
•
Loop unrolling
for (i=4; i>0; i--) {
x[i] = x[i] + s;
}
x[0]=x[0]+y[0];
x[1]=x[1]+y[1];
x[2]=x[2]+y[2];
x[3]=x[3]+y[3];
•
Partial loop unrolling
for (i=N; i>0; i--) {
x[i] = x[i] + s;
}
for (i=N; i>4; i-=4) {
x[i]=x[i] + s;
x[i-1]=x[i-1] + s;
x[i-2]=x[i-2] + s;
x[i-3]=x[i-3] + s;
}
for (j=i; j>0; j--) {
x[j] = x[j] + s;
}
Il loop unrolling a livello algoritmico aumenta l’efficienza riducendo il numero di aggiornamenti della
variabile di conteggio e il numero di salti condizionati. In presenza di parallelismo il loop unrolling in
fase di compilazione offre ulteriori opportunità di ottimizzazione permettendo di sfruttare l’indipendenza
tra successive iterazioni dello stesso ciclo.
Loop:
LD
F0, 0(R1)
LD
F6, -8(R1)
LD
F10, -16(R1)
LD
F14, -24(R1)
SUBI R1, R1, #32
ADDD F4, F0, F2
ADDD F8, F6, F2
ADDD F12, F10, F2
ADDD F16, F14, F2
SD
32(R1), F4
SD
24(R1), F8
SD
16(R1), F12
BNEZ R1, Loop
delayed branch
SD
8(R1), F16
istruzione appartenente al corpo del ciclo
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
8
Architetture dei sistemi integrati digitali
•
•
•
© Alessandro Bogliolo
Uso di informazioni statistiche sui branch
Eliminazione di false dipendenze con register renaming
L’ottimizzazione di performance va a scapito del numero di registri interi impiegati (o è limitata dalla
limitata disponibilità di registri)
4 Multiple-issue processors
4.1
Introduzione
•
•
•
•
4.2
per ottenere CPI < 1 occorre mandare in esecuzione più di un’istruzione per clock cycle
multiple execution units
• microprocessori superscalari
• microprocessori VLIW
instruction scheduling
ordinamento delle istruzioni
• statico: deciso dal compilatore
• dinamico: deciso dal microprocessore
instruction issuing
avvio dell’esecuzione delle istruzioni
• statico: deciso dal compilatore
• dinamico: deciso dal microprocessore
Microprocessori superscalari
[SFK-c7.1, HP-c4.4]
• Codice convenzionale: concepito per processori sequenziali
• Il microprocessore manda in esecuzione fino a N istruzioni per ciclo di clock
• Le istruzioni eseguite nello stesso clock cycle devono:
1. essere indipendenti
2. rispettare determinati requisiti legati alla disponibilità di risorse (es: contenere un solo riferimento
alla memoria dei dati)
• Se un’istruzione non rispetta i requisiti per essere eseguita parallelamente alle precedenti, solo le
precedenti vengono eseguite in parallelo e l’istruzione in esame viene mandata in esecuzione al ciclo
successivo
• L’issuing rate, frequenza di esecuzione, è variabile
• Issuing dinamico, scheduling statico o dinamico
• Task caratteristici di un microprocessore superscalare:
1. parallel decoding
Pre-decoding: le istruzioni sono decodificate al momento del caricamento in cache
2. superscalar instruction issue
3. parallel instruction execution
4. preserving sequential consistency
• Le unità funzionali in parallelo possono non essere tutte uguali. In questo caso il vincolo sul conflitto di
risorse impone di eseguire in parallelo istruzioni di tipo diverso
• Il repetition time delle istruzioni deve essere uguale
• La latenza delle istruzioni può essere diversa (in questo caso per garantire lo stesso repetition time
l’unità d’esecuzione con latenza maggiore deve essere pipelined o essere replicata)
• Per sfruttare al meglio il parallelismo i diversi tipi di istruzioni devono comparire con frequenza
simile nel codice
• Lo scheduling statico o dinamico può rendere il codice più adatto all’esecuzione parallela
• Es: [HP-c4.4]
Versione superscalare del DLX con supporto per l’esecuzione parallela di due istruzioni (N=2):
• Istruzioni Floating Point (FP)
• Istruzioni intere, load, store, logiche (Int)
Poiché FP ed Int non condividono registri, le dipendenze sono limitate al caso di istruzioni di Load. In
tutti gli altri casi la decisione sull’esecuzione parallela si può basare solo sull’instruction code
Esempio di loop unrolling [HP-p281]
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
9
Architetture dei sistemi integrati digitali
Loop:
Integer
LD
F0, 0(R1)
LD
F6, -8(R1)
LD
F10, -16(R1)
LD
F14, -24(R1)
LD
F18, -32(R1)
SD
0(R1), F4
SD
-8(R1), F8
SD
-16(R1), F12
SD
-24(R1), F16
SUBI R1, R1, #40
stall
BNEZ R1, Loop
SD
8(R1), F20
© Alessandro Bogliolo
Floating Point
ADDD
ADDD
ADDD
ADDD
ADDD
F4, F0, F2
F8, F6, F2
F12, F10, F2
F16, F14, F2
F20, F18, F2
delayed branch
istruzione appartenente al corpo del ciclo
La granularità dell’unrolling (5) è dettata dalla latenza dell’addizione FP. Tra ogni istruzione ADDD e
l’istruzione SD che ne memorizza il risultato devono intercorrere tre cicli di clock.
L’unico stallo è dovuto all’aggiornamento di R1. Anticipando tale aggiornamento si elimina lo stallo.
Loop:
Integer
LD
F0, 0(R1)
LD
F6, -8(R1)
LD
F10, -16(R1)
LD
F14, -24(R1)
LD
F18, -32(R1)
SUBI R1, R1, #40
SD
40(R1), F4
SD
32(R1), F8
SD
24(R1), F12
SD
16(R1), F16
BNEZ R1, Loop
SD
8(R1), F20
Floating Point
ADDD
ADDD
ADDD
ADDD
ADDD
F4, F0, F2
F8, F6, F2
F12, F10, F2
F16, F14, F2
F20, F18, F2
delayed branch
istruzione appartenente al corpo del ciclo
L’anticipazione dell’aggiornamento di R1 consente anche di ridurre la granularità dell’unrolling da 5 a 4,
poichè l’istruzione SUBI concorre a creare la necessaria distanza tra ADDD e SD.
Loop:
•
4.3
Integer
LD
F0, 0(R1)
LD
F6, -8(R1)
LD
F10, -16(R1)
LD
F14, -24(R1)
SUBI R1, R1, #32
SD
32(R1), F4
SD
24(R1), F8
SD
16(R1), F12
BNEZ R1, Loop
SD
8(R1), F18
Floating Point
ADDD
ADDD
ADDD
ADDD
F4, F0, F2
F8, F6, F2
F12, F10, F2
F16, F14, F2
delayed branch
istruzione appartenente al corpo del ciclo
Es: PowerPC (RISC), Pentium (CISC)
Stima delle prestazioni di microprocessori superscalari
•
•
•
•
Ipotesi: scheduling statico, codice già compilato
Esame delle N-ple di istruzioni eseguibili in parallelo
• Se l’n-esima istruzione di una N-pla non si presta all’esecuzione in parallelo si eseguono in
parallelo le prime n-1 istruzioni e l’n-esima diventa la prima della N-pla successiva
• Indichiamo con PIC (parallel instruction count) il numero di gruppi di istruzioni successive eseguibili
in parallelo
Determinazione dei cicli di stallo
• La latenza delle istruzioni può determinare l’introduzione di cicli di stallo della pipeline che ritardano
l’esecuzione dell’intera N-pla di istruzioni
• Indichiamo con SC il numero di cicli di stallo
Assumendo che tutte le istruzioni abbiano CPI=1:
CPUT = (PIC + SC) * CLK > IC/N * CLK
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
10
Architetture dei sistemi integrati digitali
4.4
© Alessandro Bogliolo
VLIW processors
[SFK-c6.1, HP-c4.4]
• N (da 5 a 30) unità di elaborazione indipendenti, non necessariamente equivalenti
• Codice parallelo
• Very long instruction words (VLIW)
• istruzioni composte (segmenti di istruzione destinati ad ogni unità di elaborazione)
• da 100 a 1000 bit
• la lunghezza delle istruzioni dipende da:
• numero di unità di elaborazione
• lunghezza della word di controllo di ogni unità
• Issuing statico, scheduling statico (at compile time)
• Es: [HP-c4.4]
supporto hardware per l’esecuzione parallela di 5 istruzioni:
• 2 FP
• 2 riferimenti in memoria
• 1 operazione su interi o un branch
Esempio di loop unrolling [HP-p286]
•
•
4.5
MEM1
LD F0,0(r1)
LD F10,-16(r1)
LD F18,-32(r1)
LD F26,-48(r1)
MEM2
LD F6,-8(r1)
LD F14,-24(r1)
LD F22,-40(r1)
SD
SD
SD
SD
SD 48(r1),F8
SD 32(r1),F16
SD 16(r1),F24
56(r1),F4
40(r1),F12
24(r1),F20
8(r1),F28
FP1
ADDD
ADDD
ADDD
ADDD
FP2
F4,F0,F2
F12,F10,F2
F20,F18,F2
F28,F26,F2
INT/BRANCH
ADDD F8,F6,F2
ADDD F16,F14,F2
ADDD F24,F22,F2
SUBI R1,R1,#56
BNEZ R1, LOOP
La granularità dell’unrolling è determinata dalla distanza minima tra le istruzioni di LD e ADDD e tra le
istruzioni di ADDD e SD. Al tempo stesso è limitata dalla disponibilità di registri interni.
E’ compito del compilatore mappare il codice su istruzioni VLIW ottenute componendo istruzioni che
possano essere eseguite in parallelo (indipendenti e di tipi compatibili)
Hardware più semplice di quello dei uP superscalari
Stima delle prestazioni di microprocessori VLIW
•
•
•
•
A partire da codice sequenziale
Esame delle N-ple di istruzioni eseguibili in parallelo (compito del compilatore)
• L’analisi è complessa poiché il compilatore può effettuare staticamente molte trasformazioni e
riordinamenti di istruzioni sequenziali per massimizzare il parallelismo
• Indichiamo con VLIWC (VLIW count) il numero di istruzioni VLIW prodotte dal compilatore
Determinazione dei cicli di stallo
• La latenza delle singole istruzioni che compongono l’istruzione VLIW può determinare
l’introduzione di cicli di stallo della pipeline che ritardano l’esecuzione dell’intera VLIW successiva
• Indichiamo con SC il numero di cicli di stallo
Assumendo che tutte le istruzioni abbiano CPI=1:
CPUT = (VLIWC + SC) * CLK > IC/N * CLK
5 Data-Parallel processors
5.1
Concetti generali
[FSK-c10.1]
• Elaborazione parallela di strutture dati complesse (Es: Array, Data-Base Record, Immagini, …)
• Le istruzioni operano sull'intera struttura dati
• L'esecuzione procede eseguendo in sequenza istruzioni con parallelismo a livello di dati
6 Metriche indipendenti dall'implementazione
6.1
Requisiti di memoria
•
Numero di byte di programma
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
11
Architetture dei sistemi integrati digitali
6.2
Requisiti di comunicazione
•
6.3
© Alessandro Bogliolo
•
Numero di byte di instruzioni scambiati tra microprocessore e memoria (per ciclo di clock o per
esecuzione)
Numero di byte di dati scambiati tra microprocessore e memoria (per ciclo di clock o per esecuzione)
•
Numero massimo di byte contemporaneamente memorizzati in registri interni
Requisiti di memoria interna
Facoltà di Ingegneria – Università di Ferrara – A.A. 2000/01
12