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

Documenti analoghi
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 AVANZATE DEI CALCOLATORI, A.A. 2007/08 Soluzione esercizi sul pipelining

Esercitazione su Instruction Level Parallelism

Instruction Level Parallelism Andrea Gasparetto

Esercitazione su Instruction Level Parallelism Salvatore Orlando

CALCOLATORI ELETTRONICI 15 luglio 2014

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

Instruction Level Parallelism Salvatore Orlando

Instruction Level Parallelism

Problemi del ciclo singolo

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

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

Trend di sviluppo delle pipeline

PRESTAZIONI. senza e con memoria cache

Instruction Level Parallelism Salvatore Orlando

Il pipelining: tecniche di base

Il pipelining: tecniche di base

Caching Andrea Gasparetto

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

Cicli di clock e istruzioni

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

L'architettura del processore MIPS

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

Esercitazione su Gerarchie di Memoria

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit

CPU pipeline hazards

Pipeline Problemi 1. Pipeline Problemi 2

Il processore Pentium

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

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

Controllo a ciclo singolo

CALCOLATORI ELETTRONICI 29 giugno 2010

Calcolatori Elettronici A a.a. 2008/2009

CPU pipeline 4: le CPU moderne

Comparazione fra vari processori

CPU a ciclo multiplo

Architettura degli Elaboratori (modulo II e B) (Compito 24 Giugno 2009)

L unità di controllo di CPU a singolo ciclo

CPU a singolo ciclo: l unità di controllo, istruzioni tipo J

Calcolatori Elettronici T. ISA DLX: Implementazione Tramite Struttura Pipelined

8 bit per la parola nel blocco 10 bit per l insieme (gruppo) nella cache 12 bit di etichetta. Esercizio 3 Memoria Cache

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

Hazard sul controllo. Sommario

Laboratorio di Architettura degli Elaboratori

CALCOLATORI ELETTRONICI 31 marzo 2015

Istruzioni di trasferimento dati

Calcolatori Elettronici B a.a. 2007/2008

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 2006

Il Processore: l Unità di Controllo Principale Barbara Masucci

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Architettura degli Elaboratori

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

CPU a ciclo multiplo

Il linguaggio macchina

Linguaggio Assembly e linguaggio macchina

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

ISA (Instruction Set Architecture) della CPU MIPS

Trend di sviluppo delle pipeline

L unità di elaborazione pipeline L unità Pipelining

Linguaggio Assembly e linguaggio macchina

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

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Linguaggio Assembly e linguaggio macchina

ARCHITETTURE DEI CALCOLATORI L architettura della CPU

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

CALCOLATORI ELETTRONICI 29 giugno 2011

21 March : ESERCITAZIONE 01 GESTIONE DELLA MEMORIA VETTORI CONTROLLOO O DI FLUSSO DI UN PROGRAMMA. I. Frosio

Università degli Studi di Cassino e del Lazio Meridionale

Architettura di tipo registro-registro (load/store)

Esercitazione del 12/05/ Soluzioni

Università degli Studi di Cassino

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Concetti di base del PIPELINING

Concetti di base del PIPELINING. L architettura MIPS pipelined. L architettura MIPS pipelined

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Architettura degli Elaboratori

La CPU pipeline. Principio intuitivo della pipe-line. Architettura degli Elaboratori e delle Reti. A. Borghese, F. Pedersini

Gestione degli hazard

Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri 1

Formalismi per la descrizione di algoritmi

Calcolatori Elettronici B a.a. 2008/2009

Int - 1 Fadd - 2 Fmolt - 4 Fdiv - 5

Aumentare il parallelismo a livello di istruzione (2)

La gerarchia di memorie (2)

Sistemi e Tecnologie per l'automazione LS. HW per elaborazione digitale in automazione: Microcontrollori e DSP

Introduzione. Caratteristiche generali. Sistemi e Tecnologie per l'automazione LS. HW per elaborazione digitale in automazione: Microcontrollori e DSP

Lezione 15 Il Set di Istruzioni (1)

ISA e linguaggio macchina

Cache associativa. Possibili alternative per il trasferimento di un blocco dalla memoria inferiore alla memoria superiore:

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.

Corso di Architettura (Prof. Scarano) 09/04/2002

Il processore: unità di controllo

Esercizio 1.A Aritmetica binaria (nel presentare le soluzione mostrare, almeno nei passaggi piú significativi, i calcoli eseguiti) (3 punti)

Architettura degli elaboratori Tema d esame del 20/01/2016

Architettura di una CPU moderna

Pipeline nel Mondo Reale

Implementazione semplificata

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

Sistemi a Microprocessore

Transcript:

ESERIZIO 1 Sia dato il seguente ciclo di un programma in linguaggio ad alto livello: do { BASE[i] = BASEA[i] + BASEB[i] + IN1 + IN2; i++; } while (i!= N) Il programma sia stato compilato nel seguente codice assembly MIPS. Si supponga che i registri $4, e $7 siano stati inizializzati rispettivamente ai valori 0 e 4N. I simboli BASEA, BASEB e BASE sono costanti a 16 bit, prefissate. Il ciclo di clock del processore vale 2 ns. L1: lw $2, BASEA ($4) addi $2, $2, IN1 lw $3, BASEB ($4) addi $3, $3, IN2 add $5, $2, $3 sw $5, BASE ($4) bne $4, $7, L1 Si consideri una generica iterazione del ciclo eseguita dal processore MIPS in modalità pipeline a 5 stadi. Si supponga che non siano presenti ottimizzazioni nella pipeline. Disegnare lo schema della pipeline e individuare i conflitti sui dati (in rosso) di tipo RAW (Read After Write) e i conflitti sul controllo (in blu) presenti nel programma. Istruzione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 L1: lw$2,basea($4) ID EX M WB addi $2,$2,IN1 ID EX M WB lw $3,BASEB($4) ID EX M WB addi $3,$3,IN2 ID EX M WB add $5,$2,$3 ID EX M WB sw $5,BASE($4) ID EX M WB bne $4,$7,L1 ID EX M WB

Inserire gli stalli necessari a risolvere i conflitti presenti nel programma: Istruzione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 L1:lw$2,BASEA($4) ID EX M WB addi $2,$2,IN1 S S S ID EX M WB lw $3,BASEB($4) ID EX M WB addi $3,$3,IN2 S S S ID EX M WB add $5,$2,$3 S S S ID EX M WB sw $5,BASE($4) S S S ID EX M WB bne $4,$7,L1 S S S ID EX M WB S S S Indicare sinteticamente nella prima colonna il numero di stalli da inserire prima di ciascuna istruzione in modo da risolvere i conflitti presenti nel programma. Num. Stalli Istruzione 3 L1:lw$2,BASEA($4) 3 addi $2,$2,IN1 lw $3,BASEB($4) 3 addi $3,$3,IN2 3 add $5,$2,$3 3 sw $5,BASE($4) 3 bne $4,$7,L1

Scrivere il numero totale di stalli inseriti nel programma: 18 alcolare il PI ottenuto: PI = (I + stalli + 4) /I = 30 / 8 = 3,75 Asintoticamente (N cicli) : PI AS = (I + stalli) / I = (8 + 18) / 8 = 3,25 alcolare il Throughput (espresso in MIPS) del programma corrispondente: MIPS = f LOK / PI * 10 6 = (500 * 10 6 ) / (3,75 * 10 6 ) = 133, 3 Asintoticamente (N cicli): MIPS AS = f LOK / PI AS * 10 6 = (500 * 10 6 ) / (3,25 * 10 6 ) = 153,8

Si supponga nella pipeline siano state introdotte le seguenti ottimizzazioni: - nel Register File è possibile la lettura e la scrittura allo stesso indirizzo nello stesso ciclo di clock; - introduzione del forwarding - calcolo del P nelle branch sia stato anticipato nello stadio ID. Disegnare lo schema della pipeline e individuare i conflitti sui dati (in rosso) di tipo RAW (Read After Write) e i conflitti sul controllo (in blu) rimasti nel programma. Istruzione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 L1: lw$2,basea($4) ID EX M WB addi $2,$2,IN1 ID EX M WB lw $3,BASEB($4) ID EX M WB addi $3,$3,IN2 ID EX M WB add $5,$2,$3 ID EX M WB sw $5,BASE($4) ID EX M WB bne $4,$7,L1 ID EX M WB Inserire gli stalli necessari a risolvere i conflitti presenti nel programma e indicare in verde i percorsi di forwarding utilizzati Istruzione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Percorso di forwarding usato L1: lw$2,basea($4) ID EX M WB addi $2,$2,IN1 ID S EX M WB MEM-EX lw $3,BASEB($4) S ID EX M WB addi $3,$3,IN2 ID S EX M WB MEM-EX add $5,$2,$3 S ID EX M WB EX-EX sw $5,BASE($4) ID EX M WB MEM-MEM bne $4,$7, L1 S ID EX M WB EX-ID S

Indicare sinteticamente nella prima colonna il numero di stalli da inserire prima di ciascuna istruzione in modo da risolvere i conflitti presenti nel programma. Num. Stalli Istruzione 1 L1:lw$2,BASEA($4) 1 addi $2,$2,IN1 lw $3,BASEB($4) 1 addi $3,$3,IN2 0 add $5,$2,$3 0 sw $5,BASE($4) 1 bne $4,$7,L1 Scrivere il numero totale di stalli inseriti nel programma: 4 alcolare il PI ottenuto: PI = (I + stalli + 4) /I = 16 / 8 = 2 Asintoticamente (N cicli) : PI AS = (I + stalli) / I = (8 + 4) / 8 = 1,5 alcolare il Throughput (espresso in MIPS) del programma corrispondente: MIPS = f LOK / PI * 10 6 = (500 * 10 6 ) / (2 * 10 6 ) = 250 Asintoticamente (N cicli): MIPS AS = f LOK / PI AS * 10 6 = (500 * 10 6 ) / (1,5 * 10 6 ) = 333,33

Si supponga nella pipeline siano state introdotte le ottimizzazioni precedentemente esaminate più la seguente: - Predizione statica dei salti all indietro (backward) di tipo branch always taken Disegnare lo schema della pipeline e individuare i conflitti sui dati (in rosso) di tipo RAW (Read After Write) e i conflitti sul controllo (in blu) rimasti nel programma. Istruzione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 L1: lw$2,basea($4) ID EX M WB addi $2,$2,IN1 ID EX M WB lw $3,BASEB($4) ID EX M WB addi $3,$3,IN2 ID EX M WB add $5,$2,$3 ID EX M WB sw $5,BASE($4) ID EX M WB bne $4,$7,L1 ID EX M WB Inserire gli stalli necessari a risolvere i conflitti presenti nel programma e indicare in verde i percorsi di forwarding utilizzati Istruzione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Percorso di forwarding usato L1: lw$2,basea($4) ID EX M WB addi $2,$2,IN1 ID S EX M WB MEM-EX lw $3,BASEB($4) S ID EX M WB addi $3,$3,IN2 ID S EX M WB MEM-EX add $5,$2,$3 S ID EX M WB EX-EX sw $5,BASE($4) ID EX M WB MEM-MEM bne $4,$7, L1 S ID EX M WB EX-ID

Indicare sinteticamente nella prima colonna il numero di stalli da inserire prima di ciascuna istruzione in modo da risolvere i conflitti presenti nel programma. Num. Stalli Istruzione 1 L1:lw$2,BASEA($4) 1 addi $2,$2,IN1 lw $3,BASEB($4) 1 addi $3,$3,IN2 0 add $5,$2,$3 0 sw $5,BASE($4) bne $4,$7,L1 Scrivere il numero totale di stalli inseriti nel programma: 3 alcolare il PI ottenuto: Asintoticamente (N cicli) : PI AS = (I + stalli) / I = (8 + 3) / 8 = 1,375 alcolare il Throughput (espresso in MIPS) del programma corrispondente: Asintoticamente (N cicli): MIPS AS = f LOK / PI AS * 10 6 = (500 * 10 6 ) / (1,375 * 10 6 ) = 363,6

Si supponga che, oltre alle ottimizzazioni hardware finora introdotte, sia stato ottimizzato anche lo scheduling del programma assembly come segue: L1: lw $2, BASEA ($4) lw $3, BASEB ($4) addi $2, $2, IN1 addi $3, $3, IN2 add $5, $2, $3 bne $4, $7, L1 sw $5, (BASE-4) ($4) # branch delay slot Disegnare lo schema della pipeline e individuare i conflitti sui dati (in rosso) di tipo RAW (Read After Write) e i conflitti sul controllo (in blu) eventualmente rimasti nel programma e indicare in verde i percorsi di forwarding utilizzati Istruzione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 L1: lw$2,basea($4) ID EX M WB lw $3,BASEB($4) ID EX M WB addi $2,$2,IN1 ID EX M WB addi $3,$3,IN2 ID EX M WB add $5,$2,$3 ID EX M WB bne $4,$7,L1 ID EX M WB sw $5,BASE-4($4) ID EX M WB Non è necessario intodurre stalli alcolare il PI ottenuto: Asintoticamente (N cicli) : PI AS = PI ideale = 1 alcolare il Throughput (espresso in MIPS) del programma corrispondente: Asintoticamente (N cicli): MIPS AS = MIPS ideale = f LOK / PI ideale * 10 6 = (500 * 10 6 ) / (1 * 10 6 ) = 500

Si supponga che, nel programma precedentemente ottimizzato, ogni accesso in lettura nella fase MEM alla cache dati generi un MISS che richieda 2 stalli: L1: lw $2, BASEA ($4) lw $3, BASEB ($4) addi $2, $2, IN1 addi $3, $3, IN2 add $5, $2, $3 bne $4, $7, L1 sw $5, (BASE-4) ($4) # branch delay slot Disegnare lo schema della pipeline corrispondente e indicare in verde i percorsi di forwarding utilizzati Istruzione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 L1:lw $2,BASEA($4) ID EX M S S WB lw $3,BASEB($4) ID EX S S M S S WB ID S S EX S S M WB addi $2,$2,IN1 S S ID S S EX M WB addi $3,$3,IN2 S S ID EX M WB add $5,$2,$3 ID EX M WB bne $4,$7,L1 ID EX M WB sw $5,BASE-4($4) ID EX M WB 17 18 19 20 21 E necessario introdurre 4 stalli alcolare il PI ottenuto: Asintoticamente (N cicli) : PI AS = (I + stalli) / I = (8 + 4) / 8 = 1,5 alcolare il Throughput (espresso in MIPS) del programma corrispondente: Asintoticamente (N cicli): MIPS AS = f LOK / PI AS * 10 6 = (500 * 10 6 ) / (1,5 * 10 6 ) = 333,33