UNIVERSITÀ DEGLI STUDI DI BOLOGNA

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

Gestione della Memoria
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
La struttura fisica e logica di un elaboratore
Università degli Studi di Napoli Federico II Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni –
Ottimizzazione statica del codice per processori pipelined Canella Matteo & Miglioli Filippo.
Introduzione alla programmazione
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Iterazione enumerativa (for)
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Criticità sui dati (1° esempio)
Criticità sul controllo
Criticità sui dati (esempio da fare on line)
Criticità sul controllo
Criticità sul controllo
Introduzione alla programmazione lll
L. Servoli - Corso Fisica dei Dispositivi Elettronici 1 Uno scheduler deve avere implementate almeno le seguenti funzionalità: 1) Inizializzatore: preparazione.
Il Linguaggio Macchina
Xscale Nicola Rebagliati 2001s135. Cose Xscale Xscale è una microarchitettura per processori che fornisce ottime prestazioni con bassi consumi energetici.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
Strutture di controllo in C -- Flow Chart --
UNIVERSITA' DEGLI STUDI DI BOLOGNA FACOLTA' DI INGEGNERIA Corso di Laurea Magistrale in Ingegneria Informatica Progetto di Calcolatori Elettronici M: Estensione.
Rete Sincrona Una rete sequenziale sincrona, è dotata di un ingresso E, di un segnale di Clock e uno di reset. Ad ogni fronte del Clock, deve essere campionato.
TIRO AL BERSAGLIO Di Ilaria Bertoletti Progetto Sincrono esame Reti logiche 30/01/13.
I vettore interruzioni
PREFAZIONE Per poter eseguire il progetto Schematico occorre installare la libreria libreria.cat e i relativi file Sch e Sym presenti nella cartella librerie,
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
La gerarchia di memoria Ing. Rosa Senatore Università degli Studi di Salerno Corso di Calcolatori Elettronici Anno 2013/14.
Esame Orale Di Reti Logiche
Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.
Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.
Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.
Progetto di una memoria cache per il processore DLX
Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.
Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.
Unità centrale di processo
Linguaggi algoritmici
Arch. Elab. - S. Orlando 1 Esercitazione su Instruction Level Parallelism Salvatore Orlando.
Architettura di una CPU
Arch. Elab. - S. Orlando 1 Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
Migliorare le prestazioni delle cache
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
Rappresentazione degli algoritmi
Calcolatori Elettronici Il Processore
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
Sistema operativo Il Sistema Operativo gestisce le risorse hw e sw del sistema di elaborazione Facilita l'interazione tra utente e sistema Esistono diversi.
L’esecuzione dei programmi
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
UNIVERSITÀ DI BERGAMO FACOLTÀ DI INGEGNERIA UNIVERSITÀ DI BERGAMO FACOLTÀ DI INGEGNERIA UNIVERSITÀ DI BERGAMO FACOLTÀ DI INGEGNERIA Dispositivi per il.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Fasi di sviluppo di un software
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Implementazioni di un analizzatore di protocollo Esistono quattro fondamentali tradeoff per la realizzazione di un analizzatore di protocollo:  Analisi.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Aprile 2015Architettura degli Elaboratori - Mod. B - 2. Macchina di Mano1 Logica di controllo “hardwired”
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

UNIVERSITÀ DEGLI STUDI DI BOLOGNA FACOLTÀ DI INGEGNERIA Corso di Laurea Magistrale in Ingegneria Informatica Calcolatori Elettronici M – Prof. Giovanni Neri, Prof. Stefano Mattoccia Progetto di Calcolatori Elettronici M “Progettazione di un branch target buffer per processore DLX Pipelined nel linguaggio VHDL” Realizzato da: Enrico Baioni Raffaele Luca Iannario Simone Tallevi Diotallevi

Architettura Il BTB è stato realizzato mediante una cache set-associative a due vie da 64 slot. TAG: 24 bit (30 del PC meno 6 per l’INDEX) SLOT o INDEX a 6 bit, 64 slot (log2 64 = 6) DESTINAZIONE: 30 bit PREDIZIONE: 2 bit RIMPIAZZAMENTO: 1 bit STATO: 1 bit che indica la validità della linea TAG DESTINAZIONE PREDIZIONE RIMPIAZZAMENTO STATO Linea di cache Quindi ogni via è composta da 58 bit e di conseguenza ogni slot da 116 bit. La dimensione totale della cache è di 116*64/8 = 928 Byte.

Algoritmo di predizione Nel progetto è stato implementato un algoritmo di predizione che prevede l’utilizzo di quattro stati al fine di memorizzare la storia relativa ad un’istruzione. Basandosi sulla correttezza della predizione, comunicata dal mondo esterno al BTB, è possibile eseguire una transizione di stato seguendo la logica rappresentata in figura. In caso di MISS in scrittura lo stato iniziale è determinato staticamente e quindi portato in uno stato forte (“11” o “00”) in base alla predizione iniziale, la quale, in caso di MISS in lettura, è sempre UNTAKEN.

Politica di rimpiazzamento Come politica di rimpiazzamento è stata scelta una di tipo Least Recently Used (LRU), la quale prevede la sostituzione della linea di cache utilizzata meno recentemente. Le situazioni che portano all’applicazione della politica LRU sono essenzialmente due: HIT in lettura: occorre marcare la linea trovata come più giovane, portando il bit di rimpiazzamento al valore logico zero e settando il bit relativo all’altra via MISS in scrittura: sono possibili due situazioni Una delle due vie (o entrambe) dello slot corrente sia invalida. Entrambe le linee siano valide e quindi occorra rimpiazzare la via più vecchia; dopo la scrittura si agisce su tale linea come se ci fosse stato un HIT in lettura

Scenario Lettura Flusso principale Lo stato IF invia al BTB il PC corrente attivando il segnale RD Il BTB ricerca il PC al suo interno Il PC è presente e la linea è valida Il BTB aggiorna i bit di rimpiazzamento Il BTB emette i 30 bit relativi all’indirizzo di destinazione del branch e contemporaneamente emette il valore determinato dall’algoritmo di predizione sulla relativa uscita. Lo stadio di IF, al clock successivo, esegue il fetch dell’istruzione successiva in base alla predizione Flusso alternativo 3a. Il PC non è presente (o la corrispondente linea è invalida) 4a. Il BTB emette sempre come predizione UNTAKEN 5a. Lo stadio di IF considera l’indirizzo di destinazione ricevuto dal BTB come non significativo ed esegue il fetch all’indirizzo PC+1 (idealmente +4)

Scenario Scrittura Flusso principale Lo stadio di EX invia al BTB il proprio PC (se esso è associato ad un’istruzione di branch), l’indirizzo di destinazione calcolato e la correttezza della predizione Il BTB ricerca il PC al suo interno Il PC è presente Il BTB aggiorna i bit di predizione della via identificata dal PC Il BTB sovrascrive l’indirizzo di destinazione Flusso alternativo 3a. Il PC non è presente 4a. Il BTB applica la politica di rimpiazzamento per lo slot identificato dal PC 5a. Il BTB sovrascrive l’indirizzo di destinazione 6a. Il BTB inizializza lo stato della predizione

Implementazione del componente

Pin in/out logico BTB RD: settato dallo stadio di IF per la lettura del BTB WR: settato dallo stadio di EX per la scrittura sul BTB PC_IF: PC dell’istruzione, inviato dallo stadio di IF PC_EX: PC dell’istruzione, inviato dallo stadio di EX, di cui si vuole aggiornare o aggiungere il record sul BTB PC_DEST_EX: PC di destinazione relativo all’istruzione di branch che si trova all’indirizzo PC EX PRED_OK_EX: indica se la predizione effettuata è corretta RESET: resetta il BTB invalidando tutte le linee TKN_IF: predizione relativa all’istruzione che si trova all’indirizzo PC_IF PC_DEST_IF: PC di destinazione dell’istruzione all’indirizzo PC_IF

Pin in/out logico BTB in VHDL Definizione del componente BTB in VHDL, contenente tutti i segnali in ingresso e in uscita. I segnali sono definiti utilizzando i tipi di dato forniti dalla libreria IEEE: STD_LOGIC e STD_LOGIC_VECTOR. PC_BITS costante con valore pari a 30 Definizione della struttura dati WAY_TYPE, contenente tutte le informazioni relative ad un linea di cache. Inoltre definizione del tipo di dato BTB_CACHE

BTB Implementazione VHDL Fase di lettura. Durante la prima fase abbiamo l’estrazione dei dati dal PC inviato dallo stadio di IF. Durante la seconda fase abbiamo la ricerca della corrispondente linea di cache In caso di HIT vengono emessi i bit di predizione e il PC di destinazione Come ultima operazione abbiamo l’aggiornamento dei bit di rimpiazzamento

BTB Implementazione VHDL Fase di Scrittura. Una prima fase di estrazione dei dati e di ricerca della linea di cache non riportata. In caso di HIT andiamo ad aggiornare i bit di predizione, secondo le modalità precedentemente citate In caso di MISS in scrittura e se non ci sono linee invalide, occorrerà rimpiazzare una linea di cache secondo le modalità descritte dall’algoritmo di rimpiazzamento LRU

Integrazione con DLX Pipeline Segnali aggiunti al progetto del DLX necessari per il collegamento del nuovo componente Port map del BTB con i segnali del DLX, necessario per l’effettivo collegamento del componente al DLX

Visione schematica dell’integrazione con il sistema DLX Pipeline

Test e simulazione

Test Bench 1/2 In questa fase si è verificato il corretto comportamento del componente, sono stati eseguiti numerosi test per verificare, tutte le possibili casistiche e testare il BTB isolato dal resto del sistema DLX. Come prima cosa si è verificata la fase di reset, in cui il componente deve portare tutte le sue linee di cache allo stato logico invalid Inoltre si è deciso di azzerare tutti i valori contenuti nel BTB, per facilitare la lettura dei successivi test.

Test Bench 2/2 Una secondo fase del test si compone di una sezione legata all’ inizializzazione del BTB, realizzata grazie al codice qui riportato. In tale fase si assegnano dei valori determinati alle varie linee di cache, validando ogni linea e assegnando una predizione iniziale alle stesse. L’ulteriore fase di test mira a verificare sia la corretta scrittura e lettura dei dati contenuti nel BTB ma anche il corretto aggiornamento del suo stato interno. Il test in particolare mira a verificare la modifica dei bit di predizione. Vengono eseguite due scritture consecutive all’indirizzo alla linea contente il PC pari a 64, specificando una predizione non corretta. Successivamente una lettura verifica l’effettivo cambiamento della predizione.

Simulazione Test Bench Fino a che il segnale di reset è alto tutti i valori sono portati a zero Segue la fase d’inizializzazione che è eseguita interamente in un unico ciclo di CLK. Dopo due successive scritture con PC_EX pari a ’64’ con PRED_OK uguale a ‘0’ possiamo notare che il segnale TKN_IF passa dalla condizione Untaken Forte alla condizione Taken Debole. Durante la simulazione il segnale RD effettua numerose letture, in cui e possibile verificare la predizione per ogni singola istruzione (ipotizzando che siano tutte istruzioni di Branch), TKN_IF infatti diviene valido quando il segnale RD va a livello logico ‘1’ e in questa fase specifica le predizioni per ogni istruzione.

Risultati sperimentali Le simulazioni sono state effettuate eseguendo programmi che presentano loop innestati in modo da testare l’effettiva efficacia del componente aggiunto. Al fine di raccogliere dati statistici sono stati inseriti nella simulazione due contatori che indicano il numero di predizioni corrette ed errate (BTB_EXE_NUM_BRANCH_PRED_OK e BTB_EXE_NUM_BRANCH_PRED_NOT_OK). Questi due contatori hanno evidenziato un comportamento previsto: maggiore è il numero d’iterazioni del loop e maggiore è il guadagno in periodi di clock. l1: addi r2, r0, 8 --R2 <= 0 + 8 l2: addi r1, r0, 8 --R1 <= 0 + 8 l3: subi r2, r2, 1 --R2 <= R2 - 1 l4: addi r3, r0, 1 --R3 <= 0 + 1 l5: addi r1, r1, 0 --R1 <= R1 + 0 l6: bnez r2, l2 --salta a L2 se R2 /= 0 l7: addi r2, r2, 1 --R2 <= R2 + 1 l8: subi r1, r1, 1 --R1 <= R1 - 1 l9: addi r3, r0, 1 --R3 <= 0 + 1 l10: bnez r1, l3 --salta a L3 se R1 /= 0

Simulazione

Conclusioni Analizzando i dati delle simulazioni è emerso un incremento delle prestazioni, in termini di tempo medio di esecuzione, del 12% circa. Dato che il sistema DLX è dotato di un’unità J&B, siamo in grado di guadagnare un solo un clock per Branch predetta TAKEN in modo corretto e di perderne uno in caso di predizione errata. Dati statistici, confermano che l’algoritmo di predizione garantisce predizioni corrette in più dell’80% dei casi.