Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori.

Slides:



Advertisements
Presentazioni simili
Gestione della Memoria
Advertisements

Fondamenti di Informatica1 Gestione della memoria I sistemi di memoria possono essere suddivisi in: –memoria interna al processore –memoria principale.
Gestione della memoria
Realizzazione del file system
Memoria virtuale Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica. Solo alcune parti di un programma devono trovarsi.
La memoria cache Tecniche di rimpiazzo.
Schema di principio del SCA di una MMU Memory Management Unit
Gerarchie di Memoria e Cache
Puntatori - Cenni Nicola Fanizzi Corso di Programmazione C.d.L. in Informatica DIB - Università degli Studi di Bari.
Reti di Calcolatori IL LIVELLO RETE.
MEMORIA. Organizzazione fisica della Memoria Decodi ficatore degli indirizzi … Sense/ Write Sense/ Write Sense/ Write Sense/
Progetto di Calcolatori Elettronici M
La gerarchia di memoria Ing. Rosa Senatore Università degli Studi di Salerno Corso di Calcolatori Elettronici Anno 2013/14.
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 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.
Metodologia Sperimentale Agronomica / Metodi Statistici per la Ricerca Ambientale Marco Acutis a.a CdS.
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
La gerarchia di memorie (1) Calcolatori Elettronici Valeria Cardellini Rielaborate da Salvatore Tucci.
UNIVERSITÀ DEGLI STUDI DI BOLOGNA
Gestione della Memoria
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
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.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
La gerarchia di memorie
IL GOLD STANDARD: INTRODUZIONE
Il problema dello zaino
Regole associative Gianluca Amato
Natura e origini della attuale crisi europea
Stato di COMPASS Franco Bradamante CSN1 Roma, 16 luglio 2012.
ESSERE HOMELESS: PERCORSI DI VITA E FATTORI DETERMINANTI
Introduzione a VPN Ing. Gianpiero Ciacci.
“BLAISE PASCAL”- Voghera-
REDDITO DI CITTADINANZA E OPPORTUNITA’ ECONOMICA: UN CONFRONTO TRA ITALIA E RESTO D’EUROPA Pasquale Tridico Dipartimento di Economia, Università Roma Tre.
UN NUOVO MODO DI GUARDARE IL MONDO
LA PREVENZIONE INCENDI NELLE STRUTTURE RELIGIOSE APERTE AL PUBBLICO
LE NOVITÀ DEL BILANCIO 2016 …………………………………………………………………………………………………………..
Pompe di calore a integrazione geotermica
Convegno europeo sui minori
CALENDARIO LEZIONI AGGIORNATO
RAEE è l’acronimo di Rifiuti da Apparecchiature Elettriche ed Elettroniche; ogni elettrodomestico ha un ciclo di vita terminato il quale, sia per malfunzionamento.
Ricerca e innovazione:
Comunicazioni Assemblea nazionale TTA 1-2 dicembre 2016
Maria Antonietta Volonté Dipartimento di Neurologia
Piano di formazione Docenti neoassunti a.s. 2016/2017
PROGETTO RELAZIONI PREPOTENTI
La misurazione e la valutazione della performance
1.2 Nuovi prodotti alimentari
L’evoluzione del Diritto delle Assicurazioni Continuità o rottura con il passato? Avv. Giuseppe Ranieri Studio Legale Tributario Ranieri Comitato Esecutivo.
Esame delle modifiche apportate al precedente ordinamento
Profilo biografico e opere
L’Imposta sul reddito delle società (IRES)
UROLOGIA - RIMINI VISITE UROLOGICHE AMBULATORIALI REGIME RICOVERO
Endometriosi profonda: quando la chirurgia
UNIVERSITÀ DEGLI STUDI DI ROMA TOR VERGATA
Il fenomeno dei flussi migratori dal mondiale al locale
Pietro Cecchinato LA Politica Agricola Comunitaria
Analisi di Raggruppamento
Corso di Astronomia avanzato 2014/15
Con gli occhi di Maxwell
Biblioteca Interdipartimentale di Chimica
BIOLOGIA IL CORPO UMANO
Materiali. Logica: tutorials e slides power point in rete.
Transcript della presentazione:

Progetto di una memoria cache per il processore DLX Andrea Grandi Filippo Malaguti Massimiliano Mattetti Gabriele Morlini Thomas Ricci Progetto di Calcolatori Elettronici M

Obiettivi del progetto 1.Progettazione e implementazione di una memoria cache 2.Integrazione nel processore DLX 3.Realizzazione dei testbench 4.Studio della Block RAM

Caratteristiche della cache Cache di tipo Set-Associative – Realizzazione di un componente VHDL indipendente – Dimensione e numero di vie parametrizzabili Comportamento in caso di write miss: write-allocate Coerenza garantita dal protocollo MESI Cache TagDati

Algoritmo di rimpiazzamento Politica LRU (Least Recently Used) Un contatore associato ad ogni linea della cache – Meccanismo di aggiornamento dei contatori HIT: – Resetto contatore della via in cui cè stato lHIT – Incremento I contatori di valore più basso INV – Contatore della via invalidata portato al massimo – Decremento I contatori con valore più elevato MISS – Si scarta la via con contatore più elevato cache_hit_on cache_inv_on cache_replace

Strutture dati VHDL: Cache_lib.vhdl CONSTANT OFFSET_BIT : natural := 5; CONSTANT INDEX_BIT : natural := 2; CONSTANT TAG_BIT : natural := PARALLELISM INDEX_BIT OFFSET_BIT; CONSTANT NWAY : natural := 2; TYPE data_line IS ARRAY (0 to 2 OFFSET_BIT 1) of STD_LOGIC_VECTOR (7 downto 0); TYPE cache_line IS RECORD data : data_line; status : natural; tag : STD_LOGIC_VECTOR (TAGBIT1 downto 0); lrucounter : natural; END RECORD; TYPE set_ways IS ARRAY (0 to NWAY 1) of cache_line; TYPE cache_type IS ARRAY (0 to 2 INDEX_BIT 1) of set_ways ; TYPE RAM IS ARRAY (integer range <>)of data_line; ???????? <<<

Schema delle strutture dati Cache con 4 vie Numero di set_ways dipende dal numero di bit di index cache_type

Interfacciamento del componente Controllo stato interno della cache Scambio di dati con la RAM Scambio di dati con il DLX Modifica dello stato delle linee

Interfacciamento con RAM Inizialmente si utilizza il componente Ram_cmp La RAM è realizzata come un array di data_line Successivamente sarà sostituita dalla Block RAM.

Interfacciamento con controllore Operazioni supportate: Snoop dei dati presenti in cache Invalidazione di una linea Caricamento linea in stato E o S

Implementazione La cache è internamente suddivisa in quattro processi principali che interagiscono tra loro. cache_dlx cache_replace cache_snoop cache_ram RAM Controllore di memoria DLX Cache

Processo cache_dlx I compiti di questo processo riguardano i seguenti aspetti: gestione della lettura di dati dalla cache; gestione della scrittura dei dati provenienti dal DLX nella cache; attivazione del meccanismo di rimpiazzamento di una linea; generazione del segnale di ready per il DLX; Riceve dal DLX i segnali: ch_memrd: segnale per una richiesta di letture; ch_memwr: segnale per una richiesta di scrittura;

Processo cache_ram Questo processo si occupa dellintefacciamento con la RAM. Viene attivato dagli altri processi interni alla cache, tramite l'attivazione dei segnali: write_line: per iniziare una scrittura sulla memoria RAM read_line: per iniziare una lettura sulla memoria RAM Segnala al processo chiamante il termine dell'operazione richiesta tramite il segnale rdwr_ready.

Processo cache_replace Si occupa di gestire i meccasmi per il rimpiazzamento delle linee. In particolare questo processo implementa la politica di rimpiazzamento basata sui contatori. È attivato dal segnale replace_line.

Processo cache_snoop Il processo cache snoop è attivato dal segnale esterno ch_eads, proveniente dal controllore di memoria e consente a questultimo di operare sullo stato delle linee. In seguito allattivazione di ch_eads, il processo ha il seguente comportamento: ch_hit viene portato al valore 1 se la linea oggetto dello snoop è presente in cache con stato diverso da MESI_I; ch_hitm viene portato al valore 1 se la linea è presente in stato MESI_M; in questo caso viene anche forzata la scrittura della linea in RAM; se il segnale ch_inv è al valore '0' la linea viene portato allo stato MESI_S; se è al valore 1 allo stato MESI_I.

I quattro processi si scambiano segnali che consentono la sincronizzazione delle operazioni da svolgere. Ogni processo notifica il completamento delloperazione richiesta attivando un opportuno segnale di ready. Comunicazione tra processi Attiva il rimpiazzamento di una linea, in seguito ad un miss. Attiva la scrittura in RAM di una linea in stato MESI_M, prima che sia rimpiazzata. Attiva la propagazione della modifica di una linea in stato MESI_S in memoria RAM; Attiva la scrittura di una linea in stato MESI_M in memoria RAM in seguito ad uno snoop. Richiede la lettura di una nuova linea dalla RAM.

Integrazione Modifica dello stadio di MEMORY: doppio bus dati per input ed output dalla cache bus indirizzi verso la cache segnali di controllo verso la cache (memwr/memrd) segnale di sincronizzazione con la cache (ready)

Modifiche al codice dello stadio di MEM Operazione di Load: case a_opcode_high is when I_LW | IF_LF => memory_address_register <= alu_exit_buffer; memrd <= '1'; wait until ready = '1' and ready'event; memrd <= '0' after TIME_UNIT/3; dest_register <= a_rd_i; dest_register_data <= load_memory_data_register; data_out <= load_memory_data_register;

Modifiche al codice dello stadio di MEM Operazione di Store: when I_SW | IF_SF => dest_register '0'); dest_register_data '0'); data_out <= alu_exit_buffer; store_memory_data_register <= memory_data_register_buffer; memory_address_register <= alu_exit_buffer; memwr <= '1'; wait until ready = '1' and ready'event; memwr <= '0' after TIME_UNIT/3;

Stadio di Memory

Testbench Testbench del componente : 1.Cache_test_ReadAndReplacement.vhd 2.Cache_test_ReadAndWrite.vhd 3.Cache_test_Snoop.vhd Testbench integrazione con processore DLX: 1.ProvaReplacement123 : verifica comunicazione tra cache e DLX e del meccanismo di rimpiazzamento. 2.ProvaFU: Forwarding Unit e Alee di Dato.

Cache_test_ReadAndReplacement.vhd TagIndexReplacement Linea invalidata (MESI_I) Fase 1: inizializzazione. Fase 2: invalidazione di una linea. Fase 3: Verifica funzionamento meccanismo Replacement, mediante contatori:

Cache_test_ReadAndWrite.vhd Fase 1: inizializzazione: una linea in MESI_S. Fase 2: scritture: MESI_SMESI_E

Cache_test_Snoop.vhd Dopo aver inizializzato la cache…

ProvaReplacement123 Obiettivo: Testare la corretta comunicazione tra lo stadio di MEM e la CACHE e il meccanismo di rimpiazzamento, Codice Assembler: X" ", --l1: addi r1,r0,0 ; X" ", --l2: addi r2,r0,1 ; X"AC220000", --l3: sw 0(r1),r2 ; X" ", --l4: addi r2,r2,1 ; X"AC220100", --l5: sw 16#100(r1),r2 ; X" ", --l6: addi r2,r2,1 ; X"AC220080", --l7: sw 16#80(r1),r2 ; X"8C220000", --l8: lw r2,0(r1) ; X" ", --l9: addi r1,r1,4 ; X"0BFFFFE0", --l10: j l3 ; X"FFFFFFFF", --NOP l3: 0+0= l5: 100+0= l7: 80+0= l8: 0+0=

ProvaReplacement123 l3: 0+0= l5: 100+0= l7: 80+0= l8: 0+0=

Obiettivo: Testare il funzionamento della Forwarding Unit in caso di Alea di dato, Codice Assembler: X" ", --l1: addi r2,r2,1 ; X"AC220000", --l2: sw 0(r1),r2 ; X"8C230000", --l3: lw r3,0(r1) ; X" ", --l4: addi r2,r3,1 ; X"0BFFFFF0", --l5: j l2 ; X"FFFFFFFF", --NOP ProvaFU (Forwarding Unit) Alea di Dato!!

ProvaFU (Forwarding Unit) l4: addi r2,r3,1 l3: lw r3,0(r1)

Block Ram Una scheda FPGA Spartan-3 Xilix offre una serie di Block Ram il cui numero dipende dalle caratteristiche tecniche della scheda Caratteristiche implementative: Capacità di memorizzazione: 18,432 celle di memoria SRAM 2 porte daccesso configurabili: 16 Kbits di dato 18 Kbits + 2 Kbits per bit di parità Single-Port Dual-Port

Block Ram Caratteristiche implementative: Configurazioni interne dei dati: 512x36 : accesso a dati a 36 bit di cui 32 di dato e 4 bit di parità. Ram Depth = 512 … 2Kx9 : accesso a dati a 9 bit di cui 8 di dato e 1 bit di parità. Ram Depth = 2K … 16Kx1 : accesso a dati di 1 solo bit alla volta. Ram Depth = 16K Realizzazione di un progetto desempio Scopi: 1. Come utilizzare la Block Ram in un progetto VHDL 2. Come configurarla e inizializzarne il contenuto e le modalità di funzionamento 3. Verificarne il funzionamento Realizzazione di un progetto desempio Scopi: 1. Come utilizzare la Block Ram in un progetto VHDL 2. Come configurarla e inizializzarne il contenuto e le modalità di funzionamento 3. Verificarne il funzionamento

BlockRam_cmp: progetto desempio BlockRam_cmp: Ram integrabile con Cache_cmp col compito di scambiare con essa delle data_line. Block RAM in Single-Port con organizzazione 2Kx9. Gestione temporizzazioni in accesso alla Block RAM! Come si utilizza la Block Ram in un progetto VHDL? 1.Xilix Core Generator 2.Utilizzo di componenti Block Ram della libreria UNISIM package Vcoponets sulla base dellorganizzazione interna voluta.

BlockRam_cmp: Implementazione Riceve le richieste di lettura e scrittura di una linea di memoria da e verso la Block Ram Gestione dellaccesso sequenziale alla Block Ram tramite una serie di letture o scritture di singoli byte Completamento del trasferimento in Block Ram e asserzione del segnale di ready

Configurazione RAMB16_S9 Attributi di configurazione nella sezione generic di un component VHDL: WRITE_MODE INIT SRVAL INIT_xx Inizializzazione del contenuto:

Testbench: WRITE_FIRST Scopo: Verificare il corretto funzionamento del componente. Verificare le diverse WRITE_MODE in scrittura. WRITE_MODE = WRITE_FIRST

Testbench: READ_FIRST WRITE_MODE = READ_FIRST Politica Read-before-Write : la scrittura su Block Ram comporta prima la lettura del dato presente in memoria che andrà sovrascritto dalla scrittura corrente

Testbench: NO_CHANGE WRITE_MODE = NO_CHANGE La scrittura non comporta alcun cambiamento delluscita. Il valore nullo che si legge dopo la scrittura sul bdata_out è il valore inizializzato sul registro duscita con lattributo INIT.

Sviluppi Futuri Integrazione del componente BlockRam_cmp nel progetto Cache_cmp + DLX Necessità di introdurre un contatore per gli stati di wait e che deve inviare il ready al DLX al termine di un accesso in memoria. Modifica interna al DLX per stallare la pipeline in caso di assenza del ready.

Conclusioni... Non so se sia il caso di metterle…