Lezione 20 CPU con pipeline



Documenti analoghi
Hazard sul controllo. Sommario

Università degli Studi di Cassino e del Lazio Meridionale

CPU. Maurizio Palesi

L unità di elaborazione pipeline L unità Pipelining

CALCOLATORI ELETTRONICI 15 aprile 2014

CALCOLATORI ELETTRONICI 31 marzo 2015

Calcolatori Elettronici. La Pipeline Criticità sui dati Criticità sul controllo Cenni sull unità di controllo

CALCOLATORI ELETTRONICI 29 giugno 2011

CALCOLATORI ELETTRONICI 29 giugno 2010

Architettura di tipo registro-registro (load/store)

Lezione n.19 Processori RISC e CISC

Schedulazione dinamica. Elettronica dei Calcolatori 1

Esercitazione sulle CPU pipeline

Calcolatori Elettronici

Esempio: aggiungere j

Architettura del calcolatore

L architettura di riferimento

MODELLO DLX IN UNISIM

Metodi Software per ottenere ILP

CPU pipeline 4: le CPU moderne

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Calcolatori Elettronici

Struttura del calcolatore

L unità di controllo di CPU multi-ciclo

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Calcolatori Elettronici A a.a. 2008/2009

C. P. U. MEMORIA CENTRALE

Calcolatori Elettronici

La macchina programmata Instruction Set Architecture (1)

CPU pipeline 4: le CPU moderne

Tutorato Architettura degli elaboratori

Architettura hardware

Aggiornato il 18 giugno Questa affermazione richiede una precisazione. A parità di altre condizioni, l eliminazione dello stadio ME allunga la

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

Instruction Level Parallelism Andrea Gasparetto

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Architettura di un calcolatore: introduzione

Ciclo di Istruzione. Ciclo di Istruzione. Controllo. Ciclo di Istruzione (diagramma di flusso) Lezione 5 e 6

Aumentare il parallelismo a livello di istruzione (2)

La macchina di Von Neumann. Archite(ura di un calcolatore. L unità di elaborazione (CPU) Sequenza di le(ura. Il bus di sistema

Valutazione delle Prestazioni

Università degli Studi di Cassino

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Testi di Esercizi e Quesiti 1

Tecniche di parallelismo, processori RISC

Architettura hw. La memoria e la cpu

Università degli Studi di Cassino

Calcolatori Elettronici

Fondamenti di informatica: un po di storia

Università degli Studi di Cassino e del Lazio Meridionale

Architettura di un computer

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Architettura di un calcolatore

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Università degli Studi di Cassino e del Lazio Meridionale

CALCOLATORI ELETTRONICI

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella prof@quarella.

Il memory manager. Gestione della memoria centrale

In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad

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

Laboratorio di Informatica

Calcolatori Elettronici B a.a. 2008/2009

Von Neumann. John Von Neumann ( )

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Lezione 7 Sommatori e Moltiplicatori

ARCHITETTURA DELL ELABORATORE

Lezione 3: Architettura del calcolatore

Calcolatori Elettronici B a.a. 2006/2007

La memoria centrale (RAM)

INCREMENTO DELLE PRESTAZIONI DI UN PROCESSORE

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Architettura degli elaboratori (A)

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Calcolo numerico e programmazione Architettura dei calcolatori

Uniamo VM e CACHE. Physically addressed. Physically Addressed. Prestazioni. Ci sono varie alternative architetturali. Sono quelle piu semplici

UNITÀ DI ELABORAZIONE (CPU) UNITÀ DI ELABORAZIONE (CPU) Opcode OpCode Operazione

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Il Processore: i registri

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Laboratorio di Informatica

DMA Accesso Diretto alla Memoria

Lezione n.9. Introduzione al linguaggio macchina

Architettura del Set di Istruzioni (ISA)

La memoria - generalità

Gestione della memoria centrale

Le virtual machine e la memoria virtuale

Aumentare il parallelismo a livello di istruzione (1)

Le virtual machine e la memoria virtuale

Calcolatori Elettronici T Ingegneria Informatica. ISA DLX: implementazione pipelined

Introduzione all'architettura dei Calcolatori

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Il processore: unità di elaborazione

Transcript:

Lezione 20 CPU con pipeline http://www.dii.unisi.it/~giorgi/didattica/calel All figures from Computer Organization and Design: The Hardware/Software Approach, Second Edition, by David Patterson and John Hennessy, are copyrighted material. (COPYRIGHT 1998 ORGAN KAUFANN PUBLISHERS, INC. ALL RIGHTS RESERVED.) Figures may be reproduced only for classroom or personal educational use in conjunction with the book and only when the above copyright line is included. They may not be otherwise reproduced, distributed, or incorporated into other works without the prior written consent of the publisher. Roberto Giorgi, Universita di Siena, C107L20, Slide 1 Other material is adapted from CS152 Copyright (C) 2000 UCB Il Pipelining e Naturale! Esempio della Lavanderia Ann, Brian, Cathy, Dave devono: A B C D Lavare Asciugare Stirare ettere a posto Supponiamo che ognuna di queste operazioni richieda 30 minuti e che ci sia una sola lavatrice, una asciugatrice, un ferro da stiro, un banco Roberto Giorgi, Universita di Siena, C107L20, Slide 2

Lavanderia Sequenziale 6 P 7 8 9 10 11 12 1 2 A T a s k O r d e r 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 Tempo A B C D Lavanderia sequenziale: 8 ore per 4 carichi Se utilizzassero il pipelining, quanto impiegherebbero? Roberto Giorgi, Universita di Siena, C107L20, Slide 3 T a s k O r d e r Lavanderia a Pipeline: Start work ASAP 12 2 A 6 P 7 8 9 10 11 1 A B C D 30 30 30 30 30 30 30 Tempo Lavanderia a pipeline: 3.5 ore per 4 carichi! Roberto Giorgi, Universita di Siena, C107L20, Slide 4

Le lezioni di pipelining T a s k O r d e r A B C D 6 P 7 8 9 30 30 30 30 30 30 30 Roberto Giorgi, Universita di Siena, C107L20, Slide 5 Tempo Il pipelining non riduce il tempo di esecuzione di ogni singola istruzione, bensi aumenta il loro throughput Tutti gli stadi lavorano in contemporanea utilizzando risorse separate Incremento potenziale di velocita = numero di stadi della pipeline La velocita della pipeline e limitata dallo stadio piu lento Gli stadi della pipeline non bilanciati riducono l incremento di velocita Il tempo per riempire la pipeline ed il tempo per svuotarla riducono l incremento di velocita Stallo per dipendenze Idea di base: suddivisione in stadi della CPU F: Instruction fetch D: Instruction decode/ register file read ux 0 X: Execute/ address calculation : ory access W : Write back 1 Add 4 Shift left 2 Add Add result PC Address Instruction memory Instruction Read register 1 Read data 1 Read register 2 Registers Read data 2 Write register Write data 0 u x 1 Zero result Address Data memory Write data Read data ux 1 0 16 Sign extend 32 Cosa dobbiamo aggiungere per suddividere il datapath in stadi? Roberto Giorgi, Universita di Siena, C107L20, Slide 6

I cinque passi per eseguire un istruzione F = Prelievo dell istruzione (Instruction Fetch) D = Decodifica dell istruzione (Instruction Decode) e lettura dei registri (Register Fetch) X = Esecuzione, calcolo dell indirizzo di memoria, completamento del salto (Branch Completion) = Accesso alla memoria o completamento di istruzione di tipo R W = Scrittura del risultato in un registro (Write-Back) LE ISTRUZIONI RICHIEDONO 3-5 CICLI! Roberto Giorgi, Universita di Siena, C107L20, Slide 7 Passo 1: Instruction Fetch Viene letta dalla memoria l istruzione puntata dal Program Counter (PC) L istruzione viene posta nell Instruction Register (IR) PC viene incrementato di 4 e riscritto nuovamente in PC Tali operazioni si possono descrivere utilizzando un linguaggio RTL (Register-Transfer Language) IR = ory[pc]; PC = PC + 4; Da IR si determinano i valori dei segnali di controllo Qual e il vantaggio di aggiornare il PC in questo passo? Roberto Giorgi, Universita di Siena, C107L20, Slide 8

Passo 2: Instruction Decode e Register Fetch I contenuti dei registri indicati nei campi rs e rt vengono letti e trasferiti nei registri di appoggio A e B Non e detto che siano successivamente utilizzati Calcolo dell indirizzo target del salto, nel caso in cui l istruzione sia un salto RTL: A = Reg[IR[25-21]]; B = Reg[IR[20-16]]; Out = PC + (sign-extend(ir[15-0]) << 2); Le linee di controllo non assumono alcun valore in dipendenza dal tipo di istruzione (per il momento, dato che la decodifica e ancora in corso) Roberto Giorgi, Universita di Siena, C107L20, Slide 9 Sign-extend effettua l estensione da 16 a 32 bit con segno Passo 3 (dipendente dall istruzione) La esegue una delle seguenti tre funzioni, in base al tipo di istruzione: Accesso alla memoria: Out = A + sign-extend(ir[15-0]); Istruzione di tipo R relativa ad una operazione op: Out = A op B; Salto: if (A = = B) PC = Out; Roberto Giorgi, Universita di Siena, C107L20, Slide 10

Passo 4 (R-type o accesso alla memoria) Le istruzioni load e store accedono alla memoria DR = ory[out]; (load) ory[out] = B; (store) Le istruzioni di tipo R possono scrivere il risultato Reg[IR[15-11]] = Out; La scrittura avviene alla fine del ciclo, sul fronte in discesa Roberto Giorgi, Universita di Siena, C107L20, Slide 11 Passo 5: Write-Back Reg[IR[20-16]]= DR; Cosa succede alle altre istruzioni? Roberto Giorgi, Universita di Siena, C107L20, Slide 12

Riassumendo Nome del passo Prelievo dell'istruzione Decodifica dell'istruzione /lettura dei registri Operazioni per le istruzioni di tipo R Operazioni per le istruzioni che Operazioni accedono alla memoria per branch IR = ory[pc] PC = PC + 4 A = Reg [IR[25-21]] B = Reg [IR[20-16]] Out = PC + (sign-extend (IR[15-0]) << 2) Operazioni per jump Esecuzione, calcolo del Out = A op B Out = A + sign-extend(ir[15-0]) if (A ==B) then PC = PC [31-28] II inidirizzo, completamento PC = Out (IR[25-0]<<2) di branch/jump Accesso alla memoria o Reg [IR[15-11]] = Load: DR = ory[out] completamento Out oppure dell'istruzione di tipo R Store: ory [Out] = B Completamento della lettura Load: Reg[IR[20-16]] = DR della memoria Roberto Giorgi, Universita di Siena, C107L20, Slide 13 Ciclo ultiplo: i cinque stadi della load Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Load F D X W F: Instruction Fetch Prelievo dell istruzione dalla memoria istruzioni D: Registers Fetch, Instruction Decode Lettura dei registri e decodifica delle istruzioni X: Calcolo dell indirizzo di memoria : Lettura dei dati dalla memoria dati W: Scrittura dei dati nel register file Roberto Giorgi, Universita di Siena, C107L20, Slide 14

Ciclo ultiplo: i quattro stadi della store Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Store F D X W F: Instruction Fetch Prelievo dell istruzione dalla memoria istruzioni D: Registers Fetch, Instruction Decode X: Calcolo dell indirizzo di memoria : Scrittura dei dati in memoria dati Roberto Giorgi, Universita di Siena, C107L20, Slide 15 Ciclo ultiplo: i quattro stadi dell istruzione di tipo R Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 R-type F D X W F: Instruction Fetch Prelievo dell istruzione dalla memoria istruzioni D: Registers Fetch, Instruction Decode X: opera su due operandi in registri Aggiornamento del PC W: Scrittura del risultato dall nel register file Roberto Giorgi, Universita di Siena, C107L20, Slide 16

Ciclo ultiplo: i tre stadi della Beq Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Beq F D X W F: Instruction Fetch D: X: Prelievo dell istruzione dalla memoria istruzioni Registers Fetch, Instruction Decode confronto dei due operandi in registri, selezione dell indirizzo di salto corretto memorizzazione dell indirizzo in PC Roberto Giorgi, Universita di Siena, C107L20, Slide 17 odelli a singolo ciclo e multiplo ciclo vs. pipeline Ciclo 1 Ciclo 2 Clk Implementazione a singolo ciclo: Load Store Waste Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9 Ciclo 10 Clk Implementazione a multiplo ciclo: Load F D X W Store F D X R-type F Implementazione a pipeline: Load F D X W Store F D X W R-type F D X W Roberto Giorgi, Universita di Siena, C107L20, Slide 18

Esercizio: verificare la bonta del pipelining Supponiamo che si eseguano 100 instruzioni acchina a singolo ciclo 45 ns/ciclo x 1 CPI x 100 inst = 4500 ns acchina a multiplo ciclo 10 ns/ciclo x 4.6 CPI (dovuto al mix di istruzioni) x 100 inst = 4600 ns acchina con pipeline ideale 10 ns/ciclo x (1 CPI x 100 inst + 4 cicli per svuotamento) = 1040 ns Roberto Giorgi, Universita di Siena, C107L20, Slide 19 Il Pipelining igliora le prestazioni aumentando il throughput delle istruzioni Program execution order Time (in instructions) lw $1, 100($0) Instruction fetch 2 4 6 8 10 12 14 16 18 Reg Data access Reg lw $2, 200($0) 8ns Instruction fetch Reg Data access Reg lw $3, 300($0) Program execution Time order (in instructions) lw $1, 100($0) Instruction fetch 8ns 2 4 6 8 10 12 14 Reg Data access Reg Instruction fetch 8ns... lw $2, 200($0) 2ns Instruction fetch Reg Data access Reg lw $3, 300($0) 2ns Instruction fetch Reg Data access Reg L aumento di velocita ideale e pari al numero di stadi della pipeline. Riusciamo ad ottenerlo? Roberto Giorgi, Universita di Siena, C107L20, Slide 20 2ns 2ns 2ns 2ns 2ns

Rappresentazione grafica delle pipeline Program execution order (in instructions) lw $10, 20($1) Time (in clock cycles) CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 I Reg D Reg sub $11, $2, $3 I Reg D Reg L uso della rappresentazione grafica aiuta a capire il datapath: quanti cicli utilizza l esecuzione di questo codice? cosa fa l durante il ciclo 4? Roberto Giorgi, Universita di Siena, C107L20, Slide 21 Rappresentazione convenzionale dell esecuzione a pipeline Tempo F D X W F D X W F D X W F D X W F D X W Flusso di programma F D X W Roberto Giorgi, Universita di Siena, C107L20, Slide 22

Perche la pipeline? Utilizzo ottimale delle risorse! Tempo (cicli di clock) I n s t r. O r d e r Inst 0 Inst 1 Inst 2 Inst 3 Inst 4 Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Roberto Giorgi, Universita di Siena, C107L20, Slide 23 Datapath semplificato IR <- [PC]; PC < PC+4; A <- R[rs]; B< R[rt] S < A + B; S < A or ZX; S < A + SX; S < A + SX; If Cond PC < PC+SX; < S < S < [S] [S] <- B R[rd] < S; R[rt] < S; R[rd] < ; Equal Next PC PC Inst. IR Reg File A B Exec S D Access Data Reg. File Roberto Giorgi, Universita di Siena, C107L20, Slide 24

Datapath + Data Stationary Control Inst. IR fun rt rs op Decode rs rt v rw wb me ex im v rw wb me Ctrl v rw wb Reg File A B Exec S Reg. File Access Data Next PC PC WB Ctrl D Roberto Giorgi, Universita di Siena, C107L20, Slide 25 Proviamolo! 10 lw r1, r2(35) 14 addi r2, r2, 3 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 34 add r10, r11, r12 100 and r13, r14, 15 Roberto Giorgi, Universita di Siena, C107L20, Slide 26

Start: Fetch 10 n n n n Inst. IR Decode rs rt im Ctrl WB Ctrl Reg File A B Exec S Reg. File D Access Data 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 10 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 27 100 and r13, r14, 15 Fetch 14, Decode 10 Inst. lw r1, r2(35) IR Decode 2 rt n n n im Ctrl WB Ctrl Reg File A B Exec S Reg. File D Access Data 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 14 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 28 100 and r13, r14, 15

Fetch 20, Decode 14, Exec 10 Inst. addi r2, r2, 3 IR Decode 2 rt lw r1 35 n Ctrl n WB Ctrl Reg File r2 B Exec S Reg. File D Access Data 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 20 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 29 100 and r13, r14, 15 Fetch 24, Decode 20, Exec 14, 10 Inst. sub r3, r4, r5 IR Decode 4 5 addi r2 3 lw r1 Ctrl n WB Ctrl Reg File r2 B Exec r2+35 Reg. File D Access Data 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 24 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 30 100 and r13, r14, 15

Fetch 30, Dcd 24, Ex 20, 14, WB 10 Inst. beq r6, r7 100 IR Decode 6 7 sub r3 addi r2 Ctrl lw r1 WB Ctrl Reg File r4 r5 Exec r2+3 [r2+35] Reg. File D Access Data 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 30 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 31 100 and r13, r14, 15 Fetch 34, Dcd 30, Ex 24, 20, WB 14 Inst. ori r8, r9 17 IR Decode 9 xx Reg File 100 beq r6 r7 Exec sub r3 r4-r5 Ctrl addi r2 r2+3 WB Ctrl Reg. File r1=[r2+35] D Access Data 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 34 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 32 100 and r13, r14, 15

Fetch 100, Dcd 34, Ex 30, 24, WB 20 Inst. add r10, r11, r12 Decode 11 12 17 ori r8 beq Ctrl sub r3 WB Ctrl IR Reg File r9 x Exec xxx r4-r5 Reg. File r1=[r2+35] r2 = r2+3 D Access Data 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 100 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 33 100 and r13, r14, 15 Fetch 104, Dcd 100, Ex 34, 30, WB 24 Inst. and r13, r14, r15 Decode 14 15 n add r10 xx ori r8 Ctrl beq WB Ctrl IR Reg File r11 r12 Exec r9 17 xxx Reg. File r1=[r2+35] r2 = r2+3 r3 = r4-r5 D Access Data 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 104 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 34 100 and r13, r14, 15

Fetch 108, Dcd 104, Ex 100, 34, WB 30 n Inst. Decode and r13 add r10 Ctrl ori r8 WB Ctrl xx IR Reg File r14 r15 Exec r11+r12 r9 17 Reg. File r1=[r2+35] r2 = r2+3 r3 = r4-r5 D Access Data 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 110 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 35 100 and r13, r14, 15 Fetch 114, Dcd 110, Ex 104, 100, WB 34 Inst. Decode and r13 Ctrl n add r10 WB Ctrl NO WB NO Ovflow IR Reg File Exec r14 & R15 D Access r11+r12 Data Reg. File r1=[r2+35] r2 = r2+3 r3 = r4-r5 r8 = r9 17 10 lw r1, r2(35) 14 addi r2, r2, 3 Next PC 114 20 sub r3, r4, r5 24 beq r6, r7, 100 30 ori r8, r9, 17 PC 34 add r10, r11, r12 Roberto Giorgi, Universita di Siena, C107L20, Slide 36 100 and r13, r14, 15

Il pipelining puo provocare problemi? Si : Criticita nelle pipeline criticita strutturali: tentativo di utilizzare le stesse risorse due volte allo stesso tempo - Esempio: utilizzo di un unica macchina lavatrice/asciugatrice anziche due macchine separate, oppure risorsa impegnata in qualche altro compito criticita sui dati: tentativo di utilizzare un dato prima che sia prodotto - Esempio: cerco di effettuare la stiratura prima di avere effettuato l asciugatura criticita sul controllo: tentativo di saltare pur avendo caricato istruzioni del ramo non-preso - Esempio: cerco di fare l asciugatura a 100 gradi invece che a 30 gradi perche non ho verificato che tipo di capo sto asciugando Le criticita si possono sempre risolvere aspettando, il controllo della pipeline deve: 1) rilevare la criticita 2) gestirla (o rimandare l operazione) per risolverla Roberto Giorgi, Universita di Siena, C107L20, Slide 37 Profondita delle pipeline La pipeline non puo essere troppo profonda Criticita sono frequenti molti stalli nelle pipeline profonde Too Deep! Prestazioni Relativi 2.5 2.0 1.5 1.0 0.5 Superpipelined Roberto Giorgi, Universita di Siena, C107L20, Slide 38 1 2 4 8 16 Profondita della pipeline

CISC e pipeline Anche i processori CISC ad alta velocita sono a pipeline Sovrapposizione degli stadi F, X Ostacoli lunghezza variabile delle istruzioni tempo di esecuzione variabile (numero dei cicli di microcodice) - sbilanciamento della pipeline - backup degli stadi di pipe - difficolta del rilevamento delle criticita modi di indirizzamento complessi auto-increment aggiorna address register numerosi accessi alla memoria richiesti Un flusso senza stalli nella pipeline e molto difficile! Roberto Giorgi, Universita di Siena, C107L20, Slide 39 Ricapitolando Il pipelining e un concetto fondamentale Si cerca di non lasciare inutilizzate risorse distinte, schedulando oppurtunamente le operazioni ad ogni passo Per un corretto funzionamento occorre limitare la lunghezza dello stadio piu lungo rilevare e risolvere criticita Roberto Giorgi, Universita di Siena, C107L20, Slide 40

Criticita di tipo strutturale Supponiamo di avere istruzioni di tipo R a 4 cicli Cio puo comportare la seguente situazione: Clock Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9 R-type F D X W Abbiamo un problema! R-type F D X W Load F D X W R-type F D X W Due istruzioni stanno tentando di scrivere nel register file contemporaneamente! La porta di scrittura e unica Abbiamo una criticita strutturale Roberto Giorgi, Universita di Siena, C107L20, Slide 41 R-type F D X W Osservazione importante Ogni unita di elaborazione puo essere utilizzata una volta sola per istruzione Ogni unita di elaborazione deve essere utilizzata nello stesso stadio per tutte le instruzioni: La Load utilizza la porta di scrittura del Register File nel suo quinto stadio Load 1 2 3 4 5 F D X W L istruzione R-type utilizza la porta di scrittura del Register File nel suo quarto stadio 1 2 3 4 R-type F D X W Esistono due modi per risolvere questa criticita della pipeline. Roberto Giorgi, Universita di Siena, C107L20, Slide 42

Soluzione 1: Inserire una bolla nella pipeline Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9 Clock F D X W Load F D X W R-type F D X W R-type F D Pipeline X W R-type F Bubble D X W F D X Inserire una bolla nella pipeline per impedire due scritture in stesso ciclo La logica di controllo puo essere complessa. Nessuna instruzione comincia nel ciclo 6! Roberto Giorgi, Universita di Siena, C107L20, Slide 43 Soluzione 2: Rimandare la scrittura del registro per un ciclo (istruzioni di tipo R) Ora le istruzioni di tipo R possono utilizzare la porta di scrittura del Register File nello stadio 5 Lo stadio non fa niente R-type 1 2 3 4 5 F D X W Ciclo 1 Ciclo 2 Ciclo 3 Ciclo 4 Ciclo 5 Ciclo 6 Ciclo 7 Ciclo 8 Ciclo 9 Clock R-type F D X W R-type F D X W Load F D X W R-type F D X W R-type F D X W Roberto Giorgi, Universita di Siena, C107L20, Slide 44

Criticita sui dati criticita sui dati: tentativo di utilizzare un unita prima che sia pronta un istruzione dipende dal risultato di un istruzione precedente, anch essa in pipeline add r1,r2,r3 sub r4, r1,r3 Data Hazard on r1 and r6, r1,r7 or r8, r1,r9 xor r10, r1,r11 Roberto Giorgi, Universita di Siena, C107L20, Slide 45 Classificazione di criticita sui dati RAW Un istruzione successiva cerca di LEGGERE un registro prima che l istruzione precedente lo abbia scritto WAR WAW un istruzione successiva cerca di SCRIVERE un registro prima che l istruzione precedente lo abbia letto Un istruzione cerca di SCRIVERE un registro prima che l istruzione precedente lo abbia scritto (quando questo avviene, il valore non sara piu associato all istruzione piu recente) Roberto Giorgi, Universita di Siena, C107L20, Slide 46

Criticita sui dati - classificazione Read after Write (RAW) L istruzione 1 deve scrivere prima che l instruzione 2 legga Write after Read (WAR) L istruzione 1 legge L istruzione 2 scrive (riscrive) L istruzione 2 non deve scrivere prima che la 1 legga Write after Write (WAW) Entrambe le istruzioni 1 e 2 scrivono L istruzione 2 deve scrivere dopo la 1 Gli algorithmi di riordinamento del codice devono considerare tutti e tre i casi! Roberto Giorgi, Universita di Siena, C107L20, Slide 47 Riassumendo Criticita sui dati RAW i piu comuni WAW WAR Il compilatore cerca le dipendenze funzionali poi riordina il codice Hardware Rete di controllo delle criticita - Sorveglia le dipendenze Rete di propagazione del valore - propaga i risultati dallo stadio X o a stadi precedenti Roberto Giorgi, Universita di Siena, C107L20, Slide 48

I n s t r. O r d e r Data Hazard su r1: Le dipendenze indietro nel tempo sono criticita di tipo RAW Tempo (cicli di clock) F D X W add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Roberto Giorgi, Universita di Siena, C107L20, Slide 49 Soluzione per la criticita sui dati Propagare il risultato da uno stadio all altro ( forwarding ) I n s t r. O r d e r Tempo (cicli di clock) F D X W add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 or OK se definisco read/write in un modo appropriato Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Roberto Giorgi, Universita di Siena, C107L20, Slide 50

Rete per la propagazione e rete di rilevamento criticita Hazard detection unit D/ X.Read D/ X F/ DWrite F/ D Control 0 u x WB EX X/ WB /W WB PCWrite PC Instruction memory Instruction Registers u x u x Data memory u x F/ D.RegisterRs F/ D.RegisterRt F/ D.RegisterRt F/ D.RegisterRd D/ X.RegisterRt Rt Rd Rs Rt u x Forwarding unit X/. RegisterRd /W.RegisterRd Roberto Giorgi, Universita di Siena, C107L20, Slide 51 Interlock: Cosa si fa con criticita su load Le dipendenze indietro nel tempo sono criticita Time (clock cycles) F D X W lw r1,0(r2) Im Reg Dm Reg sub r4,r1,r3 Im Reg Dm Reg Non si puo risolvere con propagazione Le istruzioni che dipendono da una load devono essere ritardate/mandate in stallo ad hardware Questo si chiama interlock Roberto Giorgi, Universita di Siena, C107L20, Slide 52

Criticita sul controllo: Branching (1/6) Supponiamo che la logica di decisione dei salti sia nello stadio di Allora due istruzioni in piu dopo il salto saranno sempre prelevate Funzionalita desiderata del salto se il salto non viene effettuato, non perdere tempo e continuare con la normale esecuzione se il salto viene effettuato, non eseguire istruzioni dopo il salto, ma saltare sulla etichetta desiderata Roberto Giorgi, Universita di Siena, C107L20, Slide 53 Criticita sul controllo: Branching (2/6) Soluzione iniziale: sospendere l esecuzione fino a quando non si prende la decisione Inserire istruzioni nop : non fanno nulla, solo consumano tempo Svantaggio: ogni salto consuma 3 cicli (anziche 1) (a patto che il comparatore sia stato messo nello stadio di ) Roberto Giorgi, Universita di Siena, C107L20, Slide 54

Criticita sul controllo: Branching (3/6) Ottimizzazione #1: Spostare il comparatore (e calcolo branch target) nello stadio 2 Non appena l istruzione viene decodificata (opcode identifica un salto), prendere la decisione e impostare il valore di PC (se necessario) Beneficio: poiche il salto e completo nello stadio 2, solo una istruzione del ramo sbagliato viene prelevata, e solo una nop e richiesta Nota: in questo caso, i salti non fanno nulla negli stadi 3, 4 e 5 Roberto Giorgi, Universita di Siena, C107L20, Slide 55 Criticita sul controllo: Branching (4/6) I n s t r. O r d e r Inserire una singola nop (bolla o bubble ) Add Beq Load Time (clock cycles) I$ Reg D$ Reg I$ Reg D$ Reg bub ble I$ Reg D$ Reg Impatto: 2 cicli di clock per istruzione di salto lento Roberto Giorgi, Universita di Siena, C107L20, Slide 56

u x Propagazione e spostamento di decisione del salto La propagazione/bypassing attualmente influisce sullo stadio di esecuzione: Invece di utilizzare il valore letto nei registri nello stadio di Decode, utilizzare il valore risultante dalla o dalla memoria Lo spostamento della decisione di salto dallo stadio di esecuzione allo stadio di decodifica significa che la propagazione/bypassing deve arrivare fino allo stadio di decodifica Cioe, il seguente codice deve comunque funzionare: addiu $s1, $s1, -4 beq $s1, $s2, Exit Roberto Giorgi, Universita di Siena, C107L20, Slide 57 Rete di propagazione con branch anticipato nello stadio D F.Flush Hazard detection unit u x D/ X WB X/ Control 0 u x WB /W F/ D EX WB PC 4 Instruction memory Shift left 2 Registers = u x u x Data memory u x Sign extend Forwarding unit Roberto Giorgi, Universita di Siena, C107L20, Slide 58

Criticita sul controllo: Branching (5/6) Ottimizazione #2: Ridefinire i salti Definizione vecchia: se il salto viene effettuato, nessuna istruzione dopo il salto viene eseguita Definizione nuova: sia che si faccia il salto, sia che non si faccia, viene eseguita l istruzione che segue immediatamente il salto (detto branch-delay slot) Roberto Giorgi, Universita di Siena, C107L20, Slide 59 Criticita sul controllo: Branching (6/6) Osservazioni sul Branch-Delay Slot Caso peggiore: si puo sempre inserire una nop nel branch-delay slot Caso migliore: si puo trovare un istruzione prima del salto che puo essere messa nel branch-delay slot senza influenzare il flusso di programma - il riordinamento delle istruzioni e un metodo comunemente utilizzato per velocizzare i programmi - il compilatore deve essere molto furbo per trovare le istruzioni appropriate - tipicamente i compilatori sono in grado di riempire circa il 50% di tali posizioni Roberto Giorgi, Universita di Siena, C107L20, Slide 60

Esempio: Nondelayed vs. Delayed Branch Nondelayed Branch or $8, $9,$10 add $1,$2,$3 sub $4, $5,$6 beq $1, $4, Exit xor $10, $1,$11 Delayed Branch add $1,$2,$3 sub $4, $5,$6 beq $1, $4, Exit or $8, $9,$10 xor $10, $1,$11 Exit: Exit: Roberto Giorgi, Universita di Siena, C107L20, Slide 61 Quanto dura l esecuzione? Assumiamo: delayed branch, pipeline di 5 stadi, propagazione/bypassing, interlock sulle criticita di load non risolte Loop: lw $t0, 0($s1) addiu $t0, $t0, $s2 sw $t0, 0($s1) addiu $s1, $s1, -4 bne $s1, $zero, Loop nop Quanti cicli di clock sono necessari per eseguire questo codice per un iterazione di loop? a)<= 5 b) 6 c) 7 d) 8 e) >=9 (dopo 1000 iterazioni, quando la pipeline e piena) Roberto Giorgi, Universita di Siena, C107L20, Slide 62

Quanto dura l esecuzione? Assumere delayed branch, la pipeline di 5 stadi, propagazione/bypassing, interlock sulle criticita di load non risolte Diamo un occhiata a questo codice: Loop: 1. lw $t0, 0($s1) addiu $t0, $t0, $s2 3. sw $t0, 0($s1) 4. addiu $s1, $s1, -4 5. bne $s1, $zero, Loop 6. nop (delayed branch so execute nop) 2. (data hazard so stall) 7. Quanti cicli di clock sono necessari per eseguire questo codice per un iterazione di loop? a)<= 5 b) 6 c) 7 d) 8 e) >=9 Roberto Giorgi, Universita di Siena, C107L20, Slide 63 Riscrivere il ciclo per migliorare le prestazioni Riscrivere questo codice per ridurre al minimo i cicli di clock del loop : Loop: lw $t0, 0($s1) addu $t0, $t0, $s2 sw $t0, 0($s1) addiu $s1, $s1, -4 bne $s1, $zero, Loop nop Quanti cicli di clock sono necessari per eseguire il codice riscritto per un iterazione di loop? a) 4 b) 5 c) 6 d) 7 Roberto Giorgi, Universita di Siena, C107L20, Slide 64

Riscrivere il ciclo per migliorare le prestazioni Riscrivere questo codice per ridurre il numero dei cicli di clock al minimo per un iterazione del loop : Loop: 1. lw $t0, 0($s1) (no hazard since extra cycle) 2. addiu $s1, $s1, -4 3. addu $t0, $t0, $s2 4. bne $s1, $zero, Loop 5. sw $t0, +4($s1) (modified sw to put past addiu) Quanti cicli di clock sono necessari per eseguire il codice riscritto per un iterazione di loop? a) 4 b) 5 c) 6 d) 7 Roberto Giorgi, Universita di Siena, C107L20, Slide 65 Ricapitolando: Le criticita nelle pipeline I-Fet ch DCD OpFetch OpFetch Exec Store Structural Hazard IFetch DCD I-Fet ch DCD OpFetch Jump Control Hazard IFetch DCD IF DCD EX WB IF DCD EX WB Roberto Giorgi, Universita di Siena, C107L20, Slide 66 IF DCD EX WB RAW (read after write) Data Hazard WAW Data Hazard (write after write) IF DCD OF Ex IF DCD OF Ex WAR Data Hazard (write after read)

Punti principali del pipelining Le pipeline fanno passare informazioni di controllo al loro interno nello stesso modo in cui fanno passare i dati Propagazione e stalli sono gestiti dal controllo locale Le criticita limitano le prestazioni Strutturali: richiedono piu risorse HW Dati: richiedono propagazione, schedulazione dal compilatore Controllo: valutazione preliminare, delayed branch, predizione Aumentando la lunghezza della pipe aumenta l impatto delle criticita ; pipelining migliora il throughput delle istruzioni, e non la loro latenza Interruzioni, Instruction Set, FP rendono il pipelining piu difficile I compilatori riducono il costo delle criticita sui dati e sul controllo Load delay slots Branch delay slots Branch prediction Roberto Giorgi, Universita di Siena, C107L20, Slide 67 Ricapitolando: Criticita sui dati Evitare alcune durante la progettazione eliminare WAR prelevando presto gli operandi (DCD) in pipe eleminare WAW eseguendo tutti i WB in ordine (nell ultimo stadio) Rivelare e risolvere quelli rimasti andare in stallo o propagare (se possibile) IF DCD EX WB RAW Data Hazard IF DCD EX WB IF DCD EX WB WAW Data Hazard IF DCD OF Ex IF DCD OF Ex WAR Data Hazard Roberto Giorgi, Universita di Siena, C107L20, Slide 68

Rivelamento delle criticita Supponiamo che l istruzione j stia per essere elaborata e l istruzione precedente i si trovi ancora nella pipeline. Una criticita RAW esiste su registro ρ se ρ Wregs( i ) Rregs( j ) Tenere traccia delle scritture in attesa (per le istruzioni nella pipe) e confrontare con i registri di operandi della istruzione corrente. Quando l istruzione viene elaborata, prenotare il suo registro del risultato. Quando l istruzione e completa, rimuovere la sua prenotazione di scrittura. Una criticita WAW esiste su registro ρ se ρ Wregs( i ) Wregs( j ) Una criticita WAR esiste su registro ρ se ρ Rregs( i ) Wregs( j ) Roberto Giorgi, Universita di Siena, C107L20, Slide 69 Traccia delle scritture in attesa IAU Regs B alu S D mem Regs npc I mem A im n op rd n n op rd rs rt op op rd rd PC Attuali registri operand Letture in attesa criticita <= ((rs == rd ex ) & regwrite ex ) OR ((rs == rd mem ) & regwrite mem ) OR ((rs == rd wb ) & regwrite wb ) OR ((rt == rd ex ) & regwrite ex ) OR ((rt == rd mem ) & regwrite mem ) OR ((rt == rd wb ) & regwrite wb ) Roberto Giorgi, Universita di Siena, C107L20, Slide 70 RegWrite segnala una istruz. che scrive nei registri

Risolvere RAW con la propagazione Regs Forward mux B alu S IAU npc I mem A im n op rd n op rd rs rt op rd PC Trovare l operazione di scrittura (indicata dal registro corrispondente nell istruzione) piu vicina e valida. Propagarla all op-latch dello stadio che richiede quel valore Si aggiungeranno piu mux per path provenienti dai registri di pipeline D mem n op rd Regs Roberto Giorgi, Universita di Siena, C107L20, Slide 71 Data Forwarding = Data Bypassing Cosa si fa con operazioni di memoria? Se istruzioni sono cominciate in ordine e le operazioni avvengono sempre nello stesso stadio, non possono esistere criticita sulle operazioni di memoria! op Rd Ra Rb Qual e il prezzo del ritardo dello writeback per operazioni aritmetiche? cicli? hardware? op Rd Ra Rb A B Dipendenza dei dati per le load? R1 <- R4 + R5 R2 <- [ R2 + I ] R3 <- R2 + R1 => "Delayed Loads" Rd Rd R T to reg file Roberto Giorgi, Universita di Siena, C107L20, Slide 72

Interruzioni, Trap, Fault? Interruzioni: Permettono lo svuotamento della pipeline Scrivono l indirizzo dell interruzione in PC Fault (dentro l istruzione, restartable) forzare l istruzione di trap in IF impedire le scritture fino a quando trap raggiunge WB memorizzare piu PC o PC + stato Roberto Giorgi, Universita di Siena, C107L20, Slide 73 Refer to IPS solution Gestione delle eccezioni IAU npc I mem rivelare indirizzo sbagliato dell istruzione Regs B alu S lw $2,20($5) A im n op rd PC rivelare istruzione sbagliata rivelare overflow D mem rivelare indirizzo sbagliato dei dati Regs Permettere l eccezione Roberto Giorgi, Universita di Siena, C107L20, Slide 74

Problema delle eccezioni Eccezioni/Interruzioni: 5 istruzioni si eseguono nella pipeline di 5 stadi Come bloccare la pipeline? Come riprendere l esecuzione? Stadio Problema per cui si verifica l interruzione IF page fault on instruction fetch; misaligned memory access; memory-protection violation ID opcode non definito EX eccezione aritmetica E page fault on data fetch; misaligned memory access; memory-protection violation; memory error Load con data page fault, Add con instruction page fault? Soluzione 1: vettore di interruzione (come un istruzione) Solution 2: interrompere ASAP, riprendere le parti non completate Roberto Giorgi, Universita di Siena, C107L20, Slide 75 Soluzione: Congelare la parte superiore e inserire bolle nella parte inferiore IAU npc I mem freeze Regs op rw rs rt PC bubble B A im n op rw alu S n op rw D mem m n op rw Regs Roberto Giorgi, Universita di Siena, C107L20, Slide 76

Clocking nel IPS R3000 phi1 phi2 Clock di 2-fasi, non-overlapping Lo stadio della pipeline comprende due latch (sensibili al livello) Edge-triggered phi1 phi2 phi1 Roberto Giorgi, Universita di Siena, C107L20, Slide 77 Visione dettagliata della Instruction Pipeline nell R3000 Inst Fetch Decode Reg. Read / E.A ory Write Reg TLB I-Cache RF Operation WB Utilizzo delle risorse E.A. TLB D-Cache TLB TLB I-cache RF WB D-Cache Scrittura in fase 1, lettura in fase 2 => elimina bypassing da WB Roberto Giorgi, Universita di Siena, C107L20, Slide 78

Percentuale di stalli su load tex spice no forwarding forwarding gcc 0 10 20 30 40 50 60 70 Roberto Giorgi, Universita di Siena, C107L20, Slide 79 Criticita sui dati su r1 I n s t r. O r d e r Tempo (cicli di clock) IF ID/RF EX E WB add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg Im Reg Dm Reg In alcuni casi, con le pipeline del IPS R3000, non e necessario il propagamento dallo stadio WB Roberto Giorgi, Universita di Siena, C107L20, Slide 80

Riepilogo (1/2) Pipeline ottimale Ogni stadio esegue una parte dell istruzione in ogni ciclo di clock. Un istruzione finisce durante ogni ciclo di clock. In media, l esecuzione e molto piu veloce. Come funziona? Le similarita delle istruzioni permettono di utilizzare gli stessi stadi per tutte le istruzioni (in generale). Ogni stadio consuma circa lo stesso tempo: il tempo perso e poco. Roberto Giorgi, Universita di Siena, C107L20, Slide 81 Riepilogo (2/2) Il pipelining e una grande idea: e un concetto utilizzato comunemente Perche non e perfetto? Criticita strutturali: se avessimo solo una cache? Sono necessari piu risorse HW Criticita sul controllo: dobbiamo occuparci delle istruzioni di salto? Delayed branch Criticita sui dati: un istruzione dipende dall istruzione precedente Roberto Giorgi, Universita di Siena, C107L20, Slide 82

Il pipelining nei processori Pipelining Super-pipeline - Issue one instruction per (fast) cycle - takes multiple cycles IF D Ex W IF D Ex W IF D Ex W IF D Ex W IF D Ex W IF D Ex W IF D Ex W IF D Ex W Limitation Issue rate, FU stalls, FU depth Clock skew, FU stalls, FU depth Super-scalar - Issue multiple scalar instructions per cycle IF D Ex W IF D Ex W IF D Ex W IF D Ex W Hazard resolution VLIW ( EPIC ) - Each instruction specifies multiple scalar operations - Compiler determines parallelism IF D Ex W Ex W Ex W Ex W Packing Vector operations - Each instruction specifies series of identical operations IF D Ex W Ex W Ex W Ex W Applicability Roberto Giorgi, Universita di Siena, C107L20, Slide 83 Limiti dell Instruction Level Parallelism (ILP) Weiss and Smith [1984] Sohi and Vajapeyam [1987] Tjaden and Flynn [1970] Tjaden and Flynn [1973] Uht [1986] Smith et al. [1989] Jouppi and Wall [1988] Johnson [1991] Acosta et al. [1986] Wedig [1982] Butler et al. [1991] elvin and Patt [1991] Wall [1991] Kuck et al. [1972] Riseman and Foster [1972] Nicolau and Fisher [1984] 1.58 1.81 1.86 (Flynn s bottleneck) 1.96 2.00 2.00 2.40 2.50 2.79 3.00 5.8 6 7 (Jouppi disagreed) 8 51 (no control dependences) 90 (Fisher s optimism) Roberto Giorgi, Universita di Siena, C107L20, Slide 84

Superscalar Proposal Go beyond single instruction pipeline, achieve IPC > 1 Dispatch multiple instructions per cycle Provide more generally applicable form of concurrency (not just vectors) Geared for sequential code that is hard to parallelize otherwise Exploit fine-grained or instruction-level parallelism (ILP) Roberto Giorgi, Universita di Siena, C107L20, Slide 85 Classifying ILP achines [Jouppi, DECWRL 1991] Baseline scalar RISC Issue parallelism = IP = 1 Operation latency = OP = 1 Peak IPC = 1 SUCCESSIVE INSTRUCTIONS 1 2 3 4 5 6 IF DE EX WB 0 1 2 3 4 5 6 7 8 9 Roberto Giorgi, Universita di Siena, C107L20, Slide 86 TIE IN CYCLES (OF BASELINE ACHINE)

Classifying ILP achines [Jouppi, DECWRL 1991] Superpipelined: cycle time = 1/m of baseline Issue parallelism = IP = 1 inst / minor cycle Operation latency = OP = m minor cycles Peak IPC = m instr / major cycle (m x speedup?) 1 2 3 4 5 6 IF DE EX WB Roberto Giorgi, Universita di Siena, C107L20, Slide 87 1 2 3 4 5 6 Classifying ILP achines [Jouppi, DECWRL 1991] Superscalar: Issue parallelism = IP = n inst / cycle Operation latency = OP = 1 cycle Peak IPC = n instr / cycle (n x speedup?) 1 2 3 4 5 6 7 8 9 IF DE EX WB Roberto Giorgi, Universita di Siena, C107L20, Slide 88

Classifying ILP achines [Jouppi, DECWRL 1991] VLIW: Very Long Instruction Word Issue parallelism = IP = n inst / cycle Operation latency = OP = 1 cycle Peak IPC = n instr / cycle = 1 VLIW / cycle IF DE WB EX Roberto Giorgi, Universita di Siena, C107L20, Slide 89 Classifying ILP achines [Jouppi, DECWRL 1991] Superpipelined-Superscalar Issue parallelism = IP = n inst / minor cycle Operation latency = OP = m minor cycles Peak IPC = n x m instr / major cycle 1 2 3 4 5 6 7 8 9 IF DE EX WB Roberto Giorgi, Universita di Siena, C107L20, Slide 90

Superscalar vs. Superpipelined Roughly equivalent performance If n = m then both have about the same IPC Parallelism exposed in space vs. time SUPERSCALAR Key: SUPERPIPELINED IFetch Dcode Execute Writeback 0 1 2 3 4 5 6 7 8 9 Time in Cycles (of Base achine) 10 11 12 13 Roberto Giorgi, Universita di Siena, C107L20, Slide 91 Superpipelining Superpipelining is a new and special term meaning pipelining. The prefix is attached to increase the probability of funding for research proposals. There is no theoretical basis distinguishing superpipelining from pipelining. Etymology of the term is probably similar to the derivation of the now-common terms, methodology and functionality as pompous substitutes for method and function. The novelty of the term superpipelining lies in its reliance on a prefix rather than a suffix for the pompous extension of the root word. - Nick Tredennick, 1991 Roberto Giorgi, Universita di Siena, C107L20, Slide 92

Superpipelining: Hype vs. Reality Superpipelining - Jouppi, 1989 essentially describes a pipelined execution stage Jouppií s base m achine Underpipelined machines cannot issue instructions as fast as they are executed Underpipelined machine Superpipelined machine Note - key characteristic of Superpipelined machines is that results are not available to -1 successive instructions Roberto Giorgi, Universita di Siena, C107L20, Slide 93 Prefetch Buffer Vital performance determinant Rate of instruction fetch High Performance processors Fetch multiple instructions in each cycle - 2-4 common Use wide datapath to memory - PowerPC 604 128 bits = 4 instructions Dispatch unit - Examine dependencies - Determine which instructions can be dispatched Roberto Giorgi, Universita di Siena, C107L20, Slide 94

Instruction Queues Q matches fetch/dispatch rates General Strategy for matching Producers - Consumers Use of FIFO-style Queues Absorb Asynchronous Delivery / Consumption Rates Provides Elasticity in pipelines Differing Instantaneous Rates Producer FIFO Consumer Roberto Giorgi, Universita di Siena, C107L20, Slide 95 Superscalar Processors ultiple Functional Units PowerPC 604 6-way superscalar Branch Unit LoadStore Unit 3 Integer Units Floating Point Unit Dispatch Unit Sends ready instructions to all free units PowerPC 604: - potential 4 instructions/cycle (pipeline lengths are different!) - reality: 2-3 instructions/cycle? (program dependent!) Roberto Giorgi, Universita di Siena, C107L20, Slide 96

Summary Pipelining is a fundamental concept multiple steps using distinct resources Utilize capabilities of the Datapath by pipelined instruction processing start next instruction while working on the current one limited by length of longest stage (plus fill/flush) detect and resolve hazards Roberto Giorgi, Universita di Siena, C107L20, Slide 97 Summary: Pipelining What makes it easy all instructions are the same length just a few instruction formats memory operands appear only in loads and stores What makes it hard? structural hazards: suppose we had only one memory control hazards: need to worry about branch instructions data hazards: an instruction depends on a previous instruction We ll talk about modern processors and what really makes it hard: exception handling trying to improve performance with out-of-order execution, etc. Roberto Giorgi, Universita di Siena, C107L20, Slide 98