Esercitazione su Instruction Level Parallelism

Documenti analoghi
Esercitazione su Instruction Level Parallelism Salvatore Orlando

Instruction Level Parallelism Andrea Gasparetto

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

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

Instruction Level Parallelism Salvatore Orlando

Instruction Level Parallelism

Esercitazione su Gerarchie di Memoria

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

Problemi del ciclo singolo

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

Caching Andrea Gasparetto

Lezione di Tutorato Di Architettura degli Elaboratori B 29/04/2005. SOLUZIONI: Cache

Esercizi vari Salvatore Orlando

Instruction Level Parallelism Salvatore Orlando

Cicli di clock e istruzioni

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

Instruction Level Parallelism Salvatore Orlando

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

CALCOLATORI ELETTRONICI 30 agosto 2010

Esame di Architetture Canale AL Prof. Sterbini 8/7/13 Compito A

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

Architettura degli Elaboratori Gestione dei control-hazard nella pipeline. Prof. Andrea Sterbini

ESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET:

Architetture moderne

Calcolatori Elettronici

CALCOLATORI ELETTRONICI 27 giugno 2017

CPU pipeline 3 criticità di dati e di controllo

CALCOLATORI ELETTRONICI 25 giugno 2018

CALCOLATORI ELETTRONICI 15 giugno 2015

Esame di Architetture Canale AL Prof. Sterbini 17/6/13 Compito A

Il pipelining: criticità sul controllo ed eccezioni

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

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

CALCOLATORI ELETTRONICI 20 gennaio 2012

Pipeline e prestazioni

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 20 Giugno Attenzione:

CALCOLATORI ELETTRONICI 9 gennaio 2013

CALCOLATORI ELETTRONICI 14 giugno 2010

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 8 novembre Attenzione:

31!30!29!28!27!26!25!24!23!22!21!20!19!18!17!16!15!14!13!12!11!10! 9! 8! 7! 6! 5! 4! 3! 2! 1! 0! !

Trend di sviluppo delle pipeline

Aumentare il parallelismo a livello di istruzione (2)

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 19 Febbraio Attenzione:

CALCOLATORI ELETTRONICI 29 giugno 2015

Esame di Architetture Canale AL Prof. Sterbini 10/6/16 Compito A Cognome e Nome: Matricola:

CALCOLATORI ELETTRONICI 9 settembre 2011

Calcolatori Elettronici B a.a. 2006/2007

CALCOLATORI ELETTRONICI 15 luglio 2014

Stall on load e Hazard sul controllo

Il pipelining: tecniche di base

Il pipelining: tecniche di base

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

Esame di Architetture Canale MZ Prof. Sterbini 21/7/14

PRESTAZIONI. senza e con memoria cache

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

Hazard sul controllo. Sommario

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

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 25 Febbraio Attenzione:

Stall on load e Hazard sul controllo

Esame di Architetture Canale AL Prof. Sterbini 1/7/16 Compito A Cognome e Nome: Matricola:

Architettura degli Elaboratori A.A Seconda Verifica Intermedia

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

Calcolatori Elettronici

CALCOLATORI ELETTRONICI 27 marzo 2018

Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 12 Gennaio Attenzione:

Pipeline criticità e forwarding

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

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

CPU pipeline hazards

Nome Cognome, Numero Matricola: Durata Esame: 30 min

Pipelining: Unità di Elaborazione e di Controllo Barbara Masucci

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

Fasi (MIPS) Dove NPC è un registro temporaneo PC (program counter) è il registro IP (instruction pointer)

Architettura degli Elaboratori

Trend di sviluppo delle pipeline

Calcolatori Elettronici B a.a. 2007/2008

La pipeline. Luigi Palopoli

Calcolatori Elettronici A a.a. 2008/2009

Classificazione dipendenze

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

Sommario. Gestione delle criticità sui dati nella pipeline. CPU con pipeline. Criticità nei dati. Hazard nei dati: soluzione tramite compilatore

Esercizio. Si consideri una cache con 64 blocchi di 16 byte ciascuno. A quale numero di blocco corrisponde l indirizzo 1200 espresso in byte?

Stall on load e Hazard sul controllo. Sommario

Blocchi di più parole

Esercizi vari. CPI e influenza cache

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

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

Hazard sul controllo. Sommario

Architettura degli Elaboratori

Esame di Architetture Canale AL Prof. Sterbini 8/11/16 Cognome e Nome: Matricola:

AXO Architettura dei Calcolatori e Sistemi Operativi

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

Esame di Architetture Canale MZ Prof. Sterbini 8/6/15

Pipelining. Architetture moderne

Richiami sull architettura del processore MIPS a 32 bit

Transcript:

Esercitazione su Instruction Level Parallelism Salvatore Orlando Arch. Elab. - S. Orlando 1 Pipeline con e senza forwarding Si considerino due processori MIPS (processore A e B) entrambi con pipeline a 5 stadi il processore A adotta il forwarding, e quello B no entrambi scrivono sul register file durante la prima parte del ciclo di clock, e leggono durante la seconda parte dello stesso ciclo entrambi sono dotati di hazard detection unit per bloccare la pipeline Rispetto alla seguente porzione di codice add $5, $6, $7 and $2, $5, $8 lw $3, a($0) or $2, $3, $4 sub $10, $11, $12 determinare quali sono le dipendenza RAW i relativi diagrammi temporali di esecuzione, indicando con una freccia gli eventuali forwarding Cosa succede al ciclo 6 di clock rispetto nei due processori? Arch. Elab. - S. Orlando 2

Pipeline con forwarding (A) add $5, $6, $7 and $2, $5, $8 lw $3, a($0) or $2, $3, $4 sub $10, $11, $12 CC 6 add $5, $6, $7 and $2, $5, $8 lw $3, a($0) or $2, $3, $4 sub $10, $11, $12 Tempo IF ID <ID> EXE MEM WB IF <IF> ID EXE MEM WB Al ciclo 6: IF in stallo (ripete sub), ID in stallo (ripete or), in EXE passa bolla (), MEM esegue lw, WB esegue and Arch. Elab. - S. Orlando 3 Pipeline senza forwarding (B) add $5, $6, $7 and $2, $5, $8 lw $3, a($0) or $2, $3, $4 sub $10, $11, $12 CC 6 add and lw or sub Tempo IF ID <ID> <ID> EXE MEM WB IF <IF> <IF> ID EXE MEM WB IF ID <ID> <ID> EXE MEM WB IF <IF> <IF> ID EXE MEM WB Al ciclo 6: IF esegue or, ID esegue lw, EXE esegue and, in MEM passa bolla (), in WB passa bolla () Arch. Elab. - S. Orlando 4

Pipeline, CPI, e stalli di accesso alla memoria Considerando che $s3 = 1024, $t0 = 0, e $s0 contiene un indirizzo di memoria, stabilire cosa calcola questa porzione di codice MIPS Start: add $t1, $s0, $t0 lw $t2, 0($t1) add $t2, $t2, $t3 sw $t2, 0($t1) addi $t0, $t0, 4 bne $t0, $s3, start Il loop viene eseguito per 1024/4 = 256 volte Il programma incrementa di $t3 tutti gli elementi di un vettore di 256 interi (puntato da $s0) Arch. Elab. - S. Orlando 5 Pipeline, CPI, e stalli di accesso alla memoria Determinare le dipendenze sui dati tra le istruzioni del loop Start: add $t1, $s0, $t0 lw $t2, 0($t1) add $t2, $t2, $t3 sw $t2, 0($t1) addi $t0, $t0, 4 bne $t0, $s3, start Le dipendenze in rosso sono di tipo RAW Le dipendenze in verde sono di tipo WAR Arch. Elab. - S. Orlando 6

Pipeline, CPI, e stalli di accesso alla memoria Considerando che la pipeline a 5 stadi è fornita di forwarding, mentre la tecnica per risolvere le criticità sul controllo è il salto ritardato (delay slot = 1) inserire il nel branch delay slot inserire i per forzare gli stalli dovuti alle dipendenze sui dati calcolare il CPI senza considerare i tempi di riempimento/svuotamento della pipeline Start: add $t1, $s0, $t0 lw $t2, 0($t1) add $t2, $t2, $t3 sw $t2, 0($t1) addi $t0, $t0, 4 bne $t0, $s3, start 8 cicli di clock per ogni ciclo del loop, costituito da 6 istruzioni loop eseguito per 256 volte CPI = num_cicli / IC = (8 * 256) / (6 * 256) = 8/6 = 1.33 Arch. Elab. - S. Orlando 7 Pipeline, CPI, e stalli di accesso alla memoria Spostare istruzioni significative al posto delle, ovvero nel load delay slot, e nel branch delay slot per il load delay slot, scegliere un istruzione indipendente e successiva nel corpo del loop per il branch delay slot, scegliere un istruzione indipendente e precedente nel corpo del loop Start: add $t1, $s0, $t0 lw $t2, 0($t1) addi $t0, $t0, 4 add $t2, $t2, $t3 bne $t0, $s3, start sw $t2, 0($t1) Qual è il numero di cicli totali per eseguire il loop? E il nuovo CPI? Cicli totali = 6 * 256 = 1536 CPI = 1 Arch. Elab. - S. Orlando 8

Pipeline, CPI, e stalli di accesso alla memoria Abbiamo finora considerato una memoria dati il cui accesso costa 1 ciclo di clock (stadio MEM) Se in presenza di miss la pipeline andasse in stallo, poiché l accesso costa 4 cicli, come cambierebbe il diagramma temporale di esecuzione di un ciclo del loop? (si noti che il miss si può avere solo sulla lw, mentre la successiva sw provoca un hit) add lw addi add bne sw Tempo IF ID EXE MEM <ME> <ME> <ME> WB IF ID EXE <EX> <EX> <EX> MEM WB IF ID <ID> <ID> <ID> EXE MEM WB IF <IF> <IF> <IF> ID EXE MEM WB 9 cicli Cicli totali per eseguire il loop in presenza di miss = 6 cicli normali + 3 cicli di stallo = 9 cicli Arch. Elab. - S. Orlando 9 Pipeline, CPI, e stalli di accesso alla memoria Consideriamo una cache ad accesso diretto con blocchi da 16 B, che all inizio del loop non contiene nessuna word del vettore acceduto Calcolare il CPI totale del loop precedente (ottimizzato) Soluzione: Poiché i blocchi si accedono in sequenza in word da 4 B, abbiamo sempre un miss e 3 hit Cicli totali per eseguire il loop in presenza di miss = 9 Cicli totali per eseguire il loop in presenta di hit = 6 Cicli totali per le 256 iterazioni = 0.25 * 256 * 9 + 0.75 * 256 * 6 = 64*9 + 192*6 = 1728 CPI = cicli totali / IC = 1728 / (256 * 6) = 1.125 La risposta sarebbe stata diversa se la cache avesse un organizzazione differente rispetto all associatività? Soluzione: La risposta è indipendente dal grado di associatività della cache! Solo località spaziale, influenzata dalla dimensione del blocco. Arch. Elab. - S. Orlando 10

Loop unrolling Si assuma la semplice pipeline a 5 stadi, con delay branch, forwarding e hazard detection unit Si consideri il loop seguente: addi $s1, $s1, -4 Senza considerare gli stalli dovuti alla memoria, e quelli di riempimento della pipeline, determinare il numero di cicli totali per l esecuzione del loop se all inizio: $s1 = 8X Verificare se sono possibili ottimizzazioni ri-schedulando le istruzioni Arch. Elab. - S. Orlando 11 Loop unrolling Inseriamo le opportune (nel branch delay slot, e per forzare gli eventuali stalli dovuti alle lw): addi $s1, $s1, -4 Le dipendenze in rosso sono di tipo RAW Le dipendenze in verde sono di tipo WAR 7 cicli per ogni iterazione del loop Poiché $s1 viene decrementato di 4 in 4 ad ogni ciclo, fino a diventare uguale a zero all uscita del loop 2X iterazioni, per un totale di 7*2X = 14X cicli totali A causa delle dipendenze sopra illustrate, l ordine di esecuzione delle istruzioni non può essere modificato, e quindi non è possibile ottimizzare il codice Arch. Elab. - S. Orlando 12

Loop unrolling Consideriamo la seguente ottimizzazione, nota come loop unrolling: poiché il ciclo viene eseguito per un numero pari di volte (2X), possiamo srotolare il loop originale il corpo del nuovo loop dovrà eseguire 2 iterazioni del vecchio loop verranno usati registri temporanei diversi per accedere gli elementi del vettore puntati da $s1 lw $t1, -4($s1) add $t1, $t1, $s2 sw $t1, -4($s1) addi $s1, $s1, -8 Arch. Elab. - S. Orlando 13 Loop unrolling Consideriamo dipendenze le data flow tra le istruzioni del body del loop, e vediamo quali sono gli ordinamenti imposte da tali dipendenze: lw $t1, -4($s1) add $t1, $t1, $s2 sw $t1, -4($s1) Le dipendenze in rosso sono di tipo RAW Le dipendenze in verde sono di tipo WAR addi $s1, $s1, -8 Arch. Elab. - S. Orlando 14

Loop unrolling Considerando le dipendenze, effettuare il ri-schedulazione delle istruzioni per tentare di riempire i delay slot dovuti alle istruzioni bne e lw Ricalcolare il numero di cicli totali per ogni iterazione del loop, e lo speedup rispetto al caso senza loop unrolling lw $t1, -4($s1) lw $t1, -4($s1) add $t1, $t1, $s2 add $t1, $t1, $s2 sw $t1, -4($s1) sw $t1, -4($s1) addi $s1, $s1, -8 addi $s1, $s1, -8 Vecchio loop eseguito per 2X volte - Nuovo loop eseguito per X volte Ogni iterazione del nuovo loop eseguita in 9 cicli, per un totale di 9X cicli Speedup = cicli senza loop unrolling / cicli con loop unrolling = 14X / 9X 1.56 Arch. Elab. - S. Orlando 15