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