Aumentare il parallelismo a livello di istruzione (2)

Documenti analoghi
Aumentare il parallelismo a livello di istruzione (2)

Trend di sviluppo delle pipeline

CPU pipeline 4: le CPU moderne

Architetture moderne

Pipeline nel Mondo Reale

ARCHITETTURE AVANZATE DEI CALCOLATORI, A.A. 2007/08 Soluzione esercizi sul pipelining

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit

Trend di sviluppo delle pipeline

Aumentare il parallelismo a livello di istruzione (1)

Esercitazione su Instruction Level Parallelism

Esercitazione su Instruction Level Parallelism Salvatore Orlando

Come aumentare le prestazioni Cenni alle architetture avanzate

Pipelining. Architetture moderne

Trend di sviluppo delle pipeline

Calcolatori Elettronici B a.a. 2008/2009

Calcolatori Elettronici B a.a. 2007/2008

ESERCIZIO 1. Sia dato il seguente ciclo di un programma in linguaggio ad alto livello:

Problemi del ciclo singolo

Come si definisce il concetto di performance? Tempo di esecuzione di un programma. numero di task/transazioni eseguiti per unità di tempo

Il processore Pentium

Estensioni all architettura di Von Neumann

Architettura dei sistemi di elaborazione: La CPU: Architettura (parte 2)

L insieme delle istruzioni (6)

Il pipelining: tecniche di base

INCREMENTO DELLE PRESTAZIONI DI UN PROCESSORE (parte seconda) I PROCESSORI SUPERSCALARI I PROCESSORI VLIW

Formato delle istruzioni Tipi di istruzione Modi di indirizzamento CISC vs RISC Pipeline Note sui RISC

L'architettura del processore MIPS

Calcolatori Elettronici A a.a. 2008/2009

Architettura degli Elaboratori

Sistemi e reti CPU Concetti di base

Instruction Level Parallelism Salvatore Orlando

Instruction Level Parallelism

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Linguaggio Assembly e linguaggio macchina

Cicli di clock e istruzioni

Pipeline Problemi 1. Pipeline Problemi 2

Arch. Elab. - S. Orlando 2. ma aumentiamo il rate di accesso alla memoria (per leggere istruzioni e. leggere/scrivere dati) von Neumann bottleneck

Microelettronica. Note su RISC. Stefano Salvatori. Università degli Studi Roma Tre. Università degli Studi Roma Tre

Instruction Level Parallelism Andrea Gasparetto

Prefazione Unit`a di misura xiii La memoria cache

Università degli Studi di Milano - Corso Architettura II Prof. Borghese Appello del

ISA e linguaggio assembler

Parallelismo a livello di istruzioni

Architettura hardware

Trend di sviluppo delle pipeline

Argomenti. Processori microprogrammati. Architetture CISC Architetture RISC. » Pipeline» Architetture superscalari

CPU pipeline 3 criticità di dati e di controllo

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Architettura degli Elaboratori

Il pipelining: criticità sul controllo ed eccezioni

Evoluzione delle architetture Evoluzione strutturale

La gerarchia di memorie (2)

Schema base di CPU. Interfacce esterne: Memoria I/O ... Architetture Parallele e Distribuite, Bus I/O MINF MMU I MMU D.

Si ricorda il primo schema elementare della pipeline. che verrà indicato in modo sommario come

Lezione di Tutorato Di Architettura degli Elaboratori B 18/05/2005 SOLUZIONI: PIPELINE

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Rappresentazione dell informazione

Linguaggio Assembly e linguaggio macchina

Sia per la II prova intercorso che per le prove di esame è necessaria la PRENOTAZIONE

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Calcolatori Elettronici

Linguaggio Assembly e linguaggio macchina

Calcolatori Elettronici II parte (CdL Ingegneria Informatica) Esame del 22 settembre 2011 tempo a disposizione: 1 ora e 30 minuti

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (3) Dove siamo nel corso. Organizzazione della lezione. Cosa abbiamo fatto

Instruction Level Parallelism statico

Architettura dei Calcolatori. Macchina di von Neumann /2. Macchina di von Neumann /1. Architettura dei Calcolatori

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 22 giugno Attenzione:

Il processore: unità di controllo

Istruzioni e linguaggio macchina

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello dell 11 Settembre Attenzione:

Hazard sul controllo. Sommario

Un quadro della situazione. Cosa abbiamo fatto. Lezione 30 Valutazione delle Prestazioni. Dove stiamo andando.. Perché:

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Valutazione delle prestazioni dei. Calcolatori Elettronici. Calcolatori Elettronici

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Il pipelining: tecniche di base

CPU pipeline 4: le CPU moderne

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Architettura dei calcolatori e sistemi operativi. Pipelining e Hazard Capitolo 4 P&H

CALCOLATORI ELETTRONICI 14 giugno 2010

1) Un calcolatore con processore R3000 avente frequenza di clock pari a 2GHz esegue il seguente programma:

Stall on load e Hazard sul controllo

Architettura del processore e esecuzione delle istruzioni

ALU e Control Unit. ALU e Control Unit

Stall on load e Hazard sul controllo

Trend di sviluppo delle pipeline. Prof. Alberto Borghese Dipartimento di Informatica Università degli Studi di Milano

Hazard sul controllo. Sommario

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Pre-appello del 12 Gennaio Attenzione:

La pipeline. Sommario

ESERCITAZIONE SULLA VALUTAZIONE DELLE PRESTAZIONI (5 giugno 2006) Esercizio 1 (Tratto dai lucidi sulla Valutazione delle prestazioni)

CPU pipeline hazards

Transcript:

Aumentare il parallelismo a livello di istruzione (2) Architetture Avanzate dei Calcolatori Valeria Cardellini Processori multiple-issue issue Nei processori multiple-issue vengono lanciate più istruzioni in parallelo per ciclo di clock L hardware determina il massimo numero di istruzioni (tipicamente da 2 a 6) Due tipi di processori multiple-issue: dinamici e statici Processori multiple-issue dinamici (superscalari) Il numero di istruzioni lanciate per ciclo di clock (dimensione della finestra di issue) è variabile Scheduling dinamico (eseguito dall hardware) o statico (eseguito dal compilatore) I processori superscalari con scheduling dinamico eseguono le istruzioni fuori ordine Esempi: IBM Power4, Intel Pentium 3,4 I processori superscalari con scheduling statico eseguono le istruzioni in ordine Esempi: SUN UltraSPARC AAC - Valeria Cardellini, A.A. 2007/08 1

Processori multiple-issue issue statici Il numero di istruzioni lanciate insieme in un ciclo di clock è tipicamente fisso Il compilatore identifica le istruzioni eseguibili in parallelo Istruzioni assemblate in pacchetti (pacchetto di issue), che sono poi decodificati ed eseguiti dal processore Il compilatore gestisce le criticità Motivazione: Nei processori multiple-issue dinamici il controllo occupa il 30-50% di tempo del processore Affidando al compilatore l ottimizzazione della sequenza di istruzioni: Si riduce la complessità del processore Si libera spazio sul chip AAC - Valeria Cardellini, A.A. 2007/08 2 Processori multiple-issue issue statici (2) Processori VLIW (Very Long Instruction Word) Istruzione lunga in cui si impacchettano più istruzioni elementari Istruzioni lunghe eseguite in ordine strettamente sequenziale Esempi: Philips Trimedia (processore embedded per media processing, 5 operazioni per ciclo di clock) Transmeta Crusoe (istruzione lunga di 128 bit, max 4 istruzioni per ciclo di clock) Approccio VLIW puro: rigidità eccessiva EPIC Processori EPIC (Explicitly Parallel Instruction Computer) Intel Itanium, Itanium 2 AAC - Valeria Cardellini, A.A. 2007/08 3

VLIW: concetti base Il pacchetto di issue rappresenta un istruzione lunga (ad es. 128 bit) Nell istruzione lunga (detta bundle) si impacchettano più operazioni (dette sillabe), con i relativi operandi, che saranno eseguite in parallelo da altrettante unità funzionali Ad ogni operazione viene associato un percorso nell unità di elaborazione, da cui viene eseguita l operazione Esempio di bundle con 4 sillabe: sillaba Operazione 1 Operazione 2 Operazione 3 Operazione 4 bundle AAC - Valeria Cardellini, A.A. 2007/08 4 VLIW: schema di funzionamento Ipotesi: istruzione lunga composta da 4 operazioni Il compilatore identifica 4 operazioni mutuamente indipendenti, che possono essere impacchettate nello stesso bundle ed eseguite simultaneamente Criticità sui dati e strutturali: risolte dal compilatore selezionando opportunamente diversi slot temporali per svolgere le operazioni Predizione dei salta di tipo statico (usando anche informazioni di tipo statistico) ad opera del compilatore Al più una operazione che modifica il flusso di controllo per bundle Predizione errata: viene interrotta l esecuzione delle operazioni coinvolte AAC - Valeria Cardellini, A.A. 2007/08 5

VLIW: pro e contro Vantaggio: architettura più semplice rispetto a quella di un processore superscalare Più veloce (ciclo di clock più breve) Riduzione dell area del chip Minori costi e minor consumo di potenza Svantaggi: complessità del compilatore e riduzione della portabilità Il compilatore deve conoscere non solo l architettura del processore, ma anche parametri tecnologici Si riduce la portabilità del codice oggetto, anche tra successive generazioni della stessa famiglia (manca la compatibilità binaria) Soluzione possibile per il problema della compatibilità binaria: emulazione Traduzione del codice oggetto da parte dell architettura obiettivo Es.: Code Morphing nel Transmeta Crusoe AAC - Valeria Cardellini, A.A. 2007/08 6 Esempio: MIPS con two-issue Il pacchetto di issue è composto da 2 istruzioni (dimensione complessiva pari a 64 bit) Nel pacchetto: un istruzione è di tipo ALU su interi o un branch, l altra istruzione è una load o store Istruzione Stadi della pipeline ALU o branch IF ID EX MEM WB Load o store IF ID EX MEM WB ALU o branch IF ID EX MEM WB Load o store IF ID EX MEM WB ALU o branch IF ID EX MEM WB Load o store IF ID EX MEM WB ALU o branch IF ID EX MEM WB Load o store IF ID EX MEM WB AAC - Valeria Cardellini, A.A. 2007/08 7

Esempio: MIPS con two-issue (2) Quattro letture e due scritture per il banco dei registri Caricamento di due istruzioni dalla memoria Calcolo indirizzo per trasferimento dati AAC - Valeria Cardellini, A.A. 2007/08 8 Processori VLIW e criticità Criticità sui dati di tipo RAW Il compilatore inserisce staticamente istruzioni nop o altre istruzioni Criticità sui dati di tipo WAR e WAW Generalmente risolte dal compilatore selezionando opportunamente gli slot temporali per le operazioni Criticità strutturali Risolte dal compilatore selezionando opportunamente gli slot temporali per le operazioni Operazioni nello stesso bundle devono utilizzare risorse distinte Criticità sul controllo Predizione statica dei salti ad opera del compilatore Risolte dall hardware annullando l esecuzione di salti predetti erroneamente AAC - Valeria Cardellini, A.A. 2007/08 9

Esempio di scheduling per VLIW Sia dato il seguente codice scalare Loop: sw $t0, 0($s1) addi $s1, $s1, -4 Potenziale WAR su $t0 Potenziale WAW su $t0 In rosso criticità RAW Indicare il possibile scheduling sulla pipeline MIPS di tipo statica two-issue Assunzione: predizione dei salti AAC - Valeria Cardellini, A.A. 2007/08 10 Esempio di scheduling per VLIW (2) Assumendo che la prima operazione dell istruzione lunga è relativa ad un istruzione ALU o branch, mentre la seconda è per istruzioni di accesso in memoria: Istruzione ALU o branch Istruzione load o store Ciclo di clock Loop: nop 1 addi $s1, $s1, -4 nop 2 nop 3 sw $t0, 4($s1) 4 Si ha CPI ideale =1/2 = 0.5 CPI two-issue = 4/5 = 0.8 CPI scalare = 7/5 = 1.4 Necessari due stalli per criticità RAW (tra lw e add, tra addi e bne) AAC - Valeria Cardellini, A.A. 2007/08 11

Inserimento di istruzioni nop Se il parallelismo non è elevato, le istruzioni lunghe contengono un numero elevato di sillabe nop Problema: esplosione della memoria Per superare il problema dell esplosione della memoria: in memoria i bundle sono impacchettati Contengono solo le sillabe significativa (nessuna nop) Codici separatori indicano quali sillabe appartengono ad un bundle e quali al bundle successivo AAC - Valeria Cardellini, A.A. 2007/08 12 Scheduling del codice Obiettivo: riordinare le istruzioni del codice oggetto in modo tale che siano eseguite nell ordine ottimo e semanticamente corretto Eseguire le operazioni critiche in modo efficiente Aumentare il numero di istruzioni significative (no nop) lanciate simultaneamente Con lo scopo di minimizzare il tempo di esecuzione del programma Tecniche di scheduling locale Lavorano su una sequenza di istruzioni appartenenti ad un singolo blocco di base Il blocco di base non contiene salti e destinazioni di salti Esempi: loop unrolling, software pipelining Tecniche di scheduling globale Lavorano su una sequenza di istruzioni appartenenti a multipli blocchi di base Esempi (non trattati): trace scheduling, superblock scheduling AAC - Valeria Cardellini, A.A. 2007/08 13

Srotolamento del ciclo Lo srotolamento del ciclo (loop unrolling) modifica la struttura del ciclo Il corpo del ciclo è replicato più volte (per un numero di volte pari al fattore di srotolamento), modificando il codice di terminazione del ciclo Il compilatore deve verificare se le iterazioni del ciclo sono tra loro indipendenti Vantaggi Aumenta il grado di ILP Riduce l overhead del ciclo Numero di incrementi del contatore e di salti Aumenta la lunghezza di un blocco di base Più istruzioni disponibili per lo scheduling diminuisce il numero di stalli da inserire Svantaggi Aumenta il numero di registri necessari Aumenta la lunghezza del codice AAC - Valeria Cardellini, A.A. 2007/08 14 Srotolamento del ciclo: esempio for (i=1000; i>0; i=i-1) x[i] = x[i] + s; Le iterazioni del ciclo sono indipendenti Consideriamo il codice con una singola iterazione x è un vettore di interi, s è un intero $s2 contiene s, $t0 è inizializzato con l indirizzo più alto degli elementi del vettore Loop: sw $t0, 0($s1) addi $s1, $s1, -4 AAC - Valeria Cardellini, A.A. 2007/08 15

Srotolamento del ciclo: esempio (2) Senza riordinamento (scheduling), il ciclo è eseguito dal processore MIPS con pipeline così: Loop: nop sw $t0, 0($s1) addi $s1, $s1, -4 nop nop Confronto nello stadio ID Prestazioni: 8 cicli di clock per iterazione AAC - Valeria Cardellini, A.A. 2007/08 16 Srotolamento del ciclo: esempio (3) Riordinamento (scheduling) sulla singola iterazione Loop: addi $s1, $s1, -4 sw $t0, 4($s1) Prestazioni: 5 cicli di clock per iterazione - 3 cicli di clock per operazioni su vettore (lw, add, sw) - 2 cicli di clock per overhead del loop (addi, bne) AAC - Valeria Cardellini, A.A. 2007/08 17

Srotolamento del ciclo: esempio (4) Srotolando il ciclo per 4 volte Fattore di srotolamento = 4 for (i=1000; i>0: i=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; Loop: Fusione della parte di controllo del ciclo it. i sw $t0, 0($s1) lw $t0, -4($s1) it. i-1 sw $t0, -4($s1) lw $t0, -8($s1) it. i-2 sw $t0, -8($s1) lw $t0, -12($s1) it. i-3 sw $t0, -12($s1) addi $s1, $s1, -16 AAC - Valeria Cardellini, A.A. 2007/08 18 Srotolamento del ciclo: esempio (5) Per evitare dipendenze sui nomi il compilatore ridenomina i registri Loop: sw $t0, 0($s1) lw $t1, -4($s1) add $t1, $t1, $s2 sw $t1, -4($s1) lw $t2, -8($s1) add $t2, $t2, $s2 sw $t2, -8($s1) lw $t3, -12($s1) add $t3, $t3, $s2 sw $t3, -12($s1) addi $s1, $s1, -16 AAC - Valeria Cardellini, A.A. 2007/08 19

Srotolamento del ciclo: esempio (6) Riordinamento (scheduling) per evitare criticità sui dati e sul controllo Prestazioni: - 14 cicli di clock per 4 iterazioni - 12/4 = 3 cicli di clock per operazioni su vettore per 1 iterazione - 2 cicli di clock per overhead del loop per 4 iterazioni - CPI = 14/14 = 1 Loop: lw $t1, -4($s1) lw $t2, -8($s1) lw $t3, -12($s1) add $t1, $t1, $s2 add $t2, $t2, $s2 add $t3, $t3, $s2 sw $t0, 0($s1) sw $t1, -4($s1) addi $s1, $s1, -16 sw $t2, 8($s1) sw $t3, 4($s1) AAC - Valeria Cardellini, A.A. 2007/08 20 Srotolamento del ciclo: esempio (7) Scheduling su pipeline MIPS di tipo statico two-issue Loop: Istruzione ALU o branch addi $s1, $s1, -16 nop add $t1, $t1, $s2 add $t2, $t2, $s2 add $t3, $t3, $s2 nop Prestazioni: - 8 cicli per 4 iterazioni - 8/4 = 2 cicli per iterazione - CPI = 8/14 = 0.57 Istruzione load o store lw $t1, 12($s1) lw $t2, 8($s1) lw $t3, 4($s1) sw $t0, 16($s1) sw $t1, 12($s1) sw $t2, 8($s1) sw $t3, 4($s1) Ciclo di clock AAC - Valeria Cardellini, A.A. 2007/08 21 1 2 3 4 5 6 7 8

Software pipelining Assumiamo che un ciclo presenti delle istruzioni indipendenti in diverse iterazioni (evidenziate in rosso) Iteration 0 Iteration 1 Iteration 2 Iteration 3 Iteration 4 Softwarepipelined iteration E possibile riorganizzare il ciclo in un nuovo ciclo tale che ciascuna nuova iterazione esegua istruzioni appartenenti ad iterazioni diverse del ciclo originale AAC - Valeria Cardellini, A.A. 2007/08 22 Software pipelining: esempio Loop: add $t4, $t0, $s2 sw $t4, 0($s1) addi $s1, $s1, -4 it. i it. i+1 it. i+2 add $t4, $t0, $s2 sw $t4, 0($s1) add $t4, $t0, $s2 sw $t4, 0($s1) add $t4, $t0, $s2 sw $t4, 0($s1) Loop: sw $t4, 8($s1) add $t4, $t0, $s2 addi $s1, $s1, -4 AAC - Valeria Cardellini, A.A. 2007/08 23

Software pipelining: esempio (2) Analogia con il pipelining nel processore: prologo L A S L A S L A S L A S L A S L: istruzione lw A: istruzione add S: istruzione sw epilogo Prologo (prima del loop): add $t4, $t0, $s2 lw $t0, -4($s1) addi $s1, $s1, -8 Epilogo (dopo il loop): sw $t0, 4($s1) add $t4, $t0, $s2 sw $t0, 0($s1) AAC - Valeria Cardellini, A.A. 2007/08 24 Speculazione del compilatore Tecniche come il loop unrolling ed il software pipelining possono essere usate per aumentare l ILP quando il comportamento dei salti è facilmente predicibile a tempo di compilazione Per evitare che le dipendenze sul controllo limitino l ILP, è possibile estendere l insieme di istruzioni per includere istruzioni predicate o condizionali Esecuzione predicata o condizionale L esecuzione predicata è un insieme di tecniche che convertono le dipendenze di controllo in dipendenze di dati Il compilatore ha un alternativa ai salti condizionati L esecuzione predicata implica una forma di esecuzione condizionale di istruzioni basata su una guardia booleana AAC - Valeria Cardellini, A.A. 2007/08 25

Esecuzione predicata L istruzione fa riferimento ad una condizione, che viene valutata come parte dell esecuzione dell istruzione Condizione vera: l istruzione viene eseguita normalmente Condizione falsa: l istruzione continua come se fosse nop Istruzione predicata: (p) op rd, r1, r2 Esempio: conversione if bnez r4 p = cmp(r4,0) add r1, r2, r3 lw r6, 0(r5) (p) add r1, r2, r3 (p) lw r6, 0(r5) AAC - Valeria Cardellini, A.A. 2007/08 26 VLIW vs EPIC Approccio VLIW (Very Long Instruction Word) Formato fisso dei campi delle operazioni nel bundle Parallelismo implicito tra operazioni nel bundle Approccio EPIC (Explicitly Parallel instruction Computer) Variante dell approccio VLIW Seconda generazione VLIW? Maggiore flessibilità nel formato dell istruzione Il compilatore indica quando un istruzione non può essere eseguita in parallelo con i suoi successori AAC - Valeria Cardellini, A.A. 2007/08 27

Esempi di architetture multiple-issue issue La soluzione Itanium Obiettivo: spostare la complessità fuori dalla logica del processore e portarla dentro il compilatore L Itanium (Itanium I e II) è il primo processore Intel a 64 bit (IA-64); basato sull approccio EPIC Incompatibile con IA-32 Soluzione: nei chip Itanium un emulatore hardware che traduce le istruzioni IA-32 in istruzioni VLIW Elevato numero di registri 128 registri interi a 64 bit, 128 registri in virgola mobile a 82 bit, 8 registri speciali per branch, 64 registri di condizione ad 1 bit Pipeline di larghezza 6, con profondità 10 Risorse funzionali 4 unità su interi, 4 unità su interi multimediali (MMX), 2 unità load/store, 3 unità di salto, 4 unità floating point AAC - Valeria Cardellini, A.A. 2007/08 29

La soluzione Itanium (2) Il compilatore ottimizza a livello globale Supporto hw per ottimizzazioni dinamiche a run time, così da garantire massimo throughput Ampio uso di speculazione ed esecuzione predicata Es.: istruzione di load avanzata, con un supporto per controllare la presenza di alias che possono invalidare la load speculativa Gruppo di istruzioni Sequenza di istruzioni consecutive senza dipendenze sui dati nei registri Istruzioni nel gruppo eseguibili in parallelo Se esistono sufficienti risorse funzionali e se sono preservate le dipendenze in memoria Lunghezza arbitraria del gruppo di istruzioni Il compilatore deve indicare il confine tra due gruppi consecutivi (stop) Le istruzioni IA-64 sono raggruppate in bundle di 128 bit Ciascun bundle contiene un campo template (di 5 bit) e 3 istruzioni (da 41 bit ciascuna) Il template specifica le risorse funzionali necessarie all esecuzione delle istruzioni nel bundle AAC - Valeria Cardellini, A.A. 2007/08 30 La soluzione Pentium 4 Nella micro-architettura del Pentium 4 (NetBurst) le istruzioni IA-32 vengono tradotte in microistruzioni (simili ad istruzioni RISC), dette micro-operazioni nella terminologia Intel Uso di trace cache (una cache istruzioni) per mantenere memorizzate le micro-operazioni che implementano una data istruzione IA-32 Una volta decodificata l istruzione IA-32, non sarà più necessario ritradurla in micro-operazioni, ma si potranno ottenere le microoperazioni ad essa corrispondenti direttamente dalla trace cache Nel caso in cui di istruzioni IA-32 complesse (che richiedono più di 3 micro-operazioni), viene usata una ROM Le micro-operazioni sono eseguite da una pipeline sofisticata, con scheduling dinamico e speculazione Esecuzione di 3 micro-operazioni per ciclo di clock Soluzioni adottate per massimizzare le prestazioni: Multiple issue dinamico e superpipelining AAC - Valeria Cardellini, A.A. 2007/08 31

Micro-architettura del Pentium 4 Front end Out-of-order control 7 unità funzionali AAC - Valeria Cardellini, A.A. 2007/08 32 Pipeline del Pentium 4 Circa 20 cicli di clock per un istruzioni tipica Il numero di cicli di clock può variare in base allo scheduling dinamico e al tipo di micro-operazione Pipeline molto profonda 20 stadi nei primi core Con il core Prescott (commercializzato dal 2004 fino a fine 2005, frequenza di clock fino a 3,8 GHz) ulteriore aumento del numero di stadi della pipeline (da 20 a 31) AAC - Valeria Cardellini, A.A. 2007/08 33

Speculazione nel Pentium 4 Esecuzione fuori ordine speculativa In grado di vedere nella pipeline fino a 126 istruzioni, di cui 48 load e 24 store Predizione dei salti Avviene in due livelli Prima del prefetch e decodifica dell istruzione IA-32 Branch Target Buffer da 4K entry (L1 BTB) Durante l uso della trace cache (Trace BTB) Branch Target Buffer da 512 entry Predizione con tecniche sia statiche che dinamiche AAC - Valeria Cardellini, A.A. 2007/08 34 La soluzione Pentium M Processore Intel usato nella tecnologia Centrino Perché ha prestazioni confrontabili con quelle del Pentium 4, sebbene operi ad una frequenza di clock inferiore? Per quanto riguarda il pipelining Riduzione del numero di stadi della pipeline Tecniche di predizione dei salti più sofisticate L Intel Core (la micro-architettura multi-core di Intel) estende il Pentium M NetBurst sostituita per problemi di sovrariscaldamento e impossibilità di aumentare ulteriormente la frequenza di clock AAC - Valeria Cardellini, A.A. 2007/08 35