Parte 5 Memoria e I/O - Istituto di Scienze e Tecnologie dell
Transcript
Parte 5 Memoria e I/O - Istituto di Scienze e Tecnologie dell
Informatica Applicata - Architetture degli elaboratori © Alessandro Bogliolo Parte 5 Memoria e I/O Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 1 Informatica Applicata - Architetture degli elaboratori © Alessandro Bogliolo 1 Memoria [Bucci c3.1] 1.1 Classificazione • • 1.2 Memorie volatili (che perdono il contenuto quando si spegne l’alimentazione) e non-volatili (che mantengono il loro contenuto anche in assenza di alimentazione) Memorie a semiconduttore: o ROM (read only memory), o PROM (programmable read only memory) o RAM (random access memory) SRAM (static random access memory) DRAM (dynamic random access memory) Parametri • • • • • Capacità: numero di parole Parallelismo: numero di bit per parola Consumo di potenza o energia per cliclo di lettura/scrittura o potenza media in condizioni di stand-by Costo per bit Grado di integrazione 2 Dispositivi di Memoria RAM 2.1 Dispositivi SRAM [Bucci c3.2] • • • • • • • 2.2 La cella di memoria è un bistabile realizzato con due invertitori in retroazione. Le due uscite dei due invertitori hanno sempre valore opposto e rappresentano il dato memorizzato e il suo complemento L’uscita che rappresenta il dato in forma vera è collegata (attraverso un interruttore) ad una linea detta bitline (vedi organizzazione interna), l’altra uscita è collegata ad una linea parallela alla precedente detta bitline negata Gli interruttori che collegano la cella alle bit line sono pilotati da un segnale di controllo detto word line (vedi organizzazione interna) Quando la word line vale 0 la cella mantiene il suo contenuto. La cella è detta statica poichè il meccanismo di memorizzazione è basato sulla presenza di un collegamento stabile tra il segnale d’uscita e una linea di alimentazione (alta o bassa a seconda che il dato memorizzato sia 1 o 0). Quando la word line vale 1 la cella è collegata alle bit line. o In lettura le bit line sono pilotate dalla cella, che impone loro i valori in essa memorizzati o In scrittura le bit line sono collegate a linee di alimentazione che rappresentano in forma era e in forma negata il valore da scrivere nella cella. Quando l’interruttore pilotato dalle word line si chiude il valore delle bit line viene imposto alla cella sbilanciando il bistabile interno. Le memorie RAM statiche realizzte in tecnologia CMOS richiedono 6 transistori per bit: 4 per i due invertitori e due per i due interruttori di controllo Dispositivi DRAM [Bucci c3.3] • • • • La cella di memoria è un condensatore, la cui tensione rappresenta il dato memorizzato Una delle due armature del condensatore è collegata a massa, l’altra è collegata alla bit line attraverso un interruttore pilotato dal segnale di controllo detto word line Quando la word line vale 0, il condensatore è isolato e mantiene la tensione ai suoi capi, e quindi il dato memorizzato Quando la word line vale 1 il condensatore è collegato alla bit line o In scrittura la bit-line è collegata ad un segnale di alimentazione (0 o 1) e impone il suo valore alla cella o In lettura la bit line è dapprima precaricata ad un valore di tensione di riferimento (Vref) intermedio tra 0 e 1, poi scollegata dall’alimentazione e collegata alla cella. Il valore di tensione della cella influenza il valore di tensione della bit-line sbilanciandolo verso 1 o verso 0. Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 2 Informatica Applicata - Architetture degli elaboratori • • • © Alessandro Bogliolo Il meccanismo di memorizzazione è dinamico poichè è affidato ad un fenomeno dinamico: la conservazione della carica sulle armature del condensatore. Se condensatori e interruttori fossero ideali, la carica verrebbe mantenuta per un tempo indefinito, ma poichè ideali non sono la carica viene progressivamente persa, facendo calare lentamente il valore della tensione ai capi del condensatore. Supponiamo che il valore logico 1 sia associato a tensioni comprese tra 1 e 2 Volt e il valore logico 0 a tensioni tra 0 e 1 Volt. Se la tensione che memorizza un 1 cala al di sotto di 1 Volt il valore logico memorizzato s trasforma in 0. Questo è inaccettabile. Per questo è necessario rinfrescare periodicamente i dati contenuti nelle celle di memoria dinamiche. Questa operazione prende il nome di refresh e consiste nella lettura del dato prima del suo definitivo degrado e nella riscrittura del dato sulla cella stessa. La lettura di una cella DRAM avviene per ridistribuzione di carica tra la capacità interna alla cella e la capacità associata all bit line. Per spiegare il fenomeno si può pensare ad un’analogia idrostatica: il condensatore è come una cisterna la cui area di base rappresenta la capacità. Il volume del liquido la quantità di carica sulle armature del condensatore, il livello del liquido è il valore di tensione. Tanto maggiore è la capacità tanto maggiore è la quantità di carica necessaria a sostenere un certo livello di tensione. L’interruttore che collega la cella di memoria alla bit line è come un tubo che mette in comunicazione due cisterne. La cisterna che rappresenta il condensatore associato alla bit line ha area di base (capacità) Cbl molto maggiore dell’area di base (capacità) Cc di quella che rappresenta il condensatore associato alla cella. Alla chiusura dell’interruttore, per vasi comunicanti il livello del liquido nelle due cisterne diviene lo stesso. Il livello a cui si porta il liquido è la media pesata dei due livelli originali. Questo meccanismo porta a due considerazioni: 1. lo sbilanciamento che la cella di RAM dinamica impone alla bit line è minimo, e quindi occorrono circuiti di sensing che lo amplifichino per poter effettuare la lettura del dato 2. il meccanismo di ridistribuzione di carica è lento e pertanto la memoria RAM dinamica non ha prestazioni ottimali La dimensione di una cella di DRAM è quella di un solo transistore, poichè nelle attuali tecnologie il condensatore viene sovrapposto al transistore e non occupa ulteriore area sul chip. 3 Organizzazione interna 3.1 Indirizzamento • • • • • • • • 3.2 Per semplicità facciamo riferimento ad una memoria a parallelismo 1, i cui elementi sono parole di un solo bit Dal punto di vista logico una memoria contiene un array di elementi individuati univocamente da un indice progressivo che ne rappresenta l’indirizzo Dal punto di vista implementativo gli elementi di memoria sono disposti su una matrice quadrata e sono individuati dall’intersezione tra righe e colonne Lungo le righe corrono le word line che propagano i segnali di controllo Lungo le colonne corrono le bit line che propagano i dati Ogni cella è individuata da un indirizzo di riga (che attiva la corrispondente word line) e da un indirizzo di colonna (che seleziona la corrispondente bit line) Per passare dall’indirizzo di una cella ai suoi indirizzi di riga e colonna è sufficiente dividere i bit di indirizzo in due parti uguali: i bit più significativi costituiscono l’indirizzo di riga, i meno significativi quello di colonna. Ad esempio, una memoria da 1Mbit ha indirizzi a 20 bit, di cui i 10 più significativi individuano univocamente una delle 1024 righe, quelli meno significativi una delle 1024 colonne. Gli indirizzi di riga e colonna sono decodificati da decoder di riga e di colonna per generare segnali di selezione in codice 1-su-n. Il decodificatore di colonna si comporta come un multiplexer che seleziona quale della bit-line collegare alla porta di input/output. Parallelismo • 3.3 Per generalizzare la trattazione del paragrafo precedente si può pensare che una memoria a parallelismo interno p sia composta da p matrici concettualmente sovrapposte che condividono gli stessi indirizzi e le stesse word line, mentre hanno bit-line distinte, collegate ad altrettante porte di input/output. Cicli di lettura • Un ciclo di lettura consiste in o Acquisizione dell’indirizzo o Decodifica dell’indirizzo di riga o Pilotaggio della word line o Pilotaggio della bit line da parte della cella o Sensing del dato letto Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 3 Informatica Applicata - Architetture degli elaboratori • • • © Alessandro Bogliolo o Decodifica dell’indirizzo di colonna e selezione della bit line o Pilotaggio della porta d’uscita Tempo di accesso (access time): intervallo di tempo tra l’asserzione degli indirizzi e la stabilizzazione dei dati in uscita Tempo di ciclo di lettura (read cycle time): intervallo di tempo minimo tra due letture indipendenti Data la sequenza di operazioni che compongono un ciclo di lettura è possibile realizzare memorie alle quali l’indirizzo di riga e l’indirizzo di colonna vengono forniti in sequenza al fine di dimezzare la dimensione del BUS indirizzi. In particolare questo ha senso farlo per memorie DRAM che hanno tempi di accesso molto più lunghi. 4 Organizzazione esterna [Bucci c3.5] 4.1 Introduzione • 4.2 Le dimensioni e il parallelismo dei dispositivi di memoria utilizzati da un sistema non necessariamente coincidono con le dimensioni e il parallelismo della memoria del sistema. Le dimensione della memoria di un sistema sono legate al numero di bit che compongono il BUS di indirizzi. Il parallelismo della memoria di un sistema è legato al parallelismo del suo BUS dati. Dimensione • 4.3 N dispositivi di memoria di capacità C e parallelismo P possono essere utilizzati per realizzare un’unica memoria di capaictà NC e parallelismo C. A tal fine tutti i dispositivi vengono collegati al bus dati e ai primi c=log2(C) bit del bus indirizzi. I restanti bit del bus indirizzi (gli n=log2(N) bit più ingnificativi) vengono utilizzati per individuare e abilitare (attraverso il semplice logica di decodifica che genera i seganli di chip select) i singoli dispositivi. Parallelismo • N dispositivi di memoria di capacità C e parallelismo P possono essere utilizzati per realizzare un’unica memoria di capacità C e parallelismo NC. A tal fine tutti i dispositivi vengono collegati al bus indirizzi e ciascuno di essi viene collegato esclusivamente ad una porzione di P bit del bus dati (che complessivamente ha parallelismo NP). Tutti i dispositivi vengono selezionati contemporaneamente durante le operazioni di lettura e scrittura. 5 Organizzazione gerarchica [Bucci c3.7] 5.1 Introduzione • • • • • 5.2 Le prestazioni dei dispositivi di memoria peggiorano all’aumentare delle dimensioni (bit line e word line più lunghe, capacità di carico più grandi, circuiti di decodifica più complessi, maggiore distanza dal microprocessore) A parità di generazione tecnologica, le SRAM sono molto più veloci delle DRAM, ma meno capaci e più costose Le DRAM raggiungono capacità molto più elevate delle SRAM a costi contenuti, ma sono più lente L’obiettivo è la realizzazione di memorie con capacità e costo delle DRAM e prestazioni delle SRAM Tale obiettivo può essere raggiunto mediante un’organizzazione gerarchica della memoria principale, sfruttando il principio di località e la modalità di funzionamento in page mode delle memorie Principio di località • • • 5.3 Osservazione empirica della distribuzione statistica degli accesi in memoria Località spaziale: è molto probabile che nell’immediato futuro il microprocessore acceda a locazioni di memoria contigue a quelle appena utilizzate Località temporale: è molto probabile che nell’immediato futuro il microprocessore acceda nuovamente a locazioni di memoria appena utilizzate Page mode • • Molte memorie consentono di trasferire il contenuto di blocchi di locazioni contigue con prestazioni molto superiori a quelle ottenibili mediante una sequenza di accessi singoli In particolare, se si pensa che ogni accesso ad una memoria DRAM richiede la decodifica di riga, l’attivazione della WL, la stabilizzazione delle BL, il sensing dei dati, la decodifica di colonna e la selezione Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 4 Informatica Applicata - Architetture degli elaboratori © Alessandro Bogliolo delle bit-line, per accedere a celle disposte sulla stessa riga è sufficiente cambiare l’indirizzo di colonna, riducendo sensibilmente i tempi di accesso ai dati successivi al primo. 5.4 Gerarchia di memoria • • • • La memoria principale ha un’orgnizzazione piramidale. Al vertice stanno memorie piccole, veloci e costose, alla base memorie capienti, lente ed economiche: o registri interni o cache interna o cache esterna o RAM o memoria virtuale Le celle di memoria alle quali si prevede che il microprocessore debba accedere vengono trasferite nei livelli di memoria più alti. Fintanto che il microprocessore trova i dati di cui ha bisogno nei livelli di memoria più alti percepisce la memoria principale come una memoria ad alte prestazioni In base al principio di località, le celle di memorie che vengono spostate ai livelli di memoria più alti sono quelle contigue a quella indirizzata dal microprocessore 6 Cache [Bucci c7.1-4] 6.1 Principio di funzionamento • • • • • • • • • • • • 6.2 Immaginiamo che le locazioni (word) di memoria principale siano disposte su righe di W elementi. Immaginiamo inoltre che L righe formino un blocco e che vi siano B blocchi. La memoria risulta quindi composta da B blocchi di L righe di W parole. Questa organizzazione logica (da non confondere con l’organizzazione matriciale dei dispositivi di memoria) si riflette sull’indirizzo delle celle di memoria, che viene suddiviso in tre parti: b o i b bit più significativi individuano il blocco (B=2 ) l o gli l bit successivi individuano la riga (L=2 ) w o i w bit meno significativi individuano la parola (W=2 ) Supponiamo di disporre di una memoria cache grande quanto un blocco, idealmente organizzata in L righe di W parole ciascuna Una parola in cache è individuata dagli l+w bit meno significativi dell’indirizzo La parola rappresenta la minima unità di memoria indirizzabile La riga è la zona di memoria trasferita tra unitariamente da memoria RAM a cache Il blocco è la dimensione della cache Quando il microprocessore accede alla parola di indirizzo (IB,Ll,IW), l’intera riga in cui si trova la parola indirizzata viene trasferito in cache. La posizione che la riga occuperà in cache dipende dalla modalità di gestione della cache Se la locazione di memoria indirizzata è presente in cache, si parla di cache hit, altrimenti di cache miss In caso di cache hit i tempi di accesso sono quelli tipici della cache (tls), molto brevi In caso di cache miss si paga una penalità dovuta all’accesso ad una memoria di più basso livello e al trasferimento dell’intera riga in cache (tp) Il tempo di accesso medio è tavg=h tls + m tp, con h e m probabilità di hit e miss Cache a mappatura diretta (direct mapped cache) • • • • • • La parola di indirizzo (BI,LI,WI) viene mappata in cache in posizione (LI,WI) La posizione in cache è univocamente determinata dall’indirizzo Poichè tutte le righe omologhe di blocchi diversi verrebbero mappate nella stessa posizione in cache (poichè condividono i bit meno significativi dell’indirizzo), ogni volta che una riga viene portata in cache occorre annotare a quale blocco appartiene. A tal fine ad ogni riga di cache è associato un tag di b bit in cui vengono trascritti i bit più significativi dell’indirizzo che individuano il blocco (BI). Quando il microprocessore indirizza la locazione (BI,LI,WI), si verifica che il dato non sia già presente in cache in posizione (LI,WI), confrontando il tag associato alla riga LI con l’indirizzo di blocco BI Vantaggio: semplicità Svantaggio: nessuna libertà di scelta nel piazzamento delle righe. Righe omologhe di blocchi di memoria diversi si sovrascrivono a vicenda in cache, anche se il resto della cache è inutilizzato. Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 5 Informatica Applicata - Architetture degli elaboratori 6.3 © Alessandro Bogliolo Cache associativa (fully assciative cache) • • • 6.4 Le linee di memoria possono essere mappate in qualsiasi posizione in cache, indipendentemente dal loro indirizzo. Questo ha due conseguenze: o poichè la posizione della linea in cache non è più legata all’indirizzo di linea, il tag associato alla linea deve contenere sia l’indirizzo di blocco che l’indirizzo di linea (BI,LI) o dovendo cercare in cache la locazione di memoria indirizzata occorre confrontare i bit più significativi dell’indirizzo (BI,LI) con i tag di tutte le linee di cache. Se uno dei tag coincide, la linea corrispondente contiene la parola indirizzata, altrimenti si è verificato un cache miss Vantaggio: piena libertà di scelta nel piazzamento delle linee in cache, che permette di sfruttare al meglio la cache disponibile. Le prestazioni dipendono dalle politiche di rimpiazzamento, che decidono dinamicamente quale delle linee di memoria già presenti in cache sacrificare per far posto ad altre Svantaggio: complessità (in particolare, l’esigenza di prestazioni elevate impone di effettuare parallelamente il confronto di tutti i tag) Cache parzialmente associativa (set associative cache) • • • • 6.5 Compromesso tra cache diretta e associativa: la cache è divisa in insieme di linee (detti vie) L’indirizzo di memoria individua univocamente l’insieme di linee di cache in cui la cella va mappata, ma lascia libertà di scelta della posizione all’interno di ogni insieme. Per indirizzare la cache si utilizza l’indirizzo di memoria per individuare l’insieme di linee, e poi si confrontano i tag delle linee dell’insieme per cercare l’elemento desiderato. Il numero di righe in ogni insieme viene detto numero di vie o grado di associatività della cache Prestazioni • • Il tempo di accesso medio è tavg=h tls + m tp, con h e m probabilità di hit e miss Per aumentare le prestazioni occorre: o ridurre il tempo di accesso alla cache tls scegliendo dispositivi cache ad alte prestazioni o ridurre il miss penalty tp scegliendo dispositivi a prestazioni più alte utilizzando multipli livelli di cache consentendo il bypass della cache in caso di miss o aumentare la probabilità di hit, che dipende da: dimensione della cache dimensione delle linee di cache grado di associatività politica di rimpiazzamento 7 Memoria virtuale [Bucci c8.1-2, c8.4] 7.1 Principio di funzionamento • • • • • 7.2 Esigenza: eseguire programmi che richiedono più memoria di quella fisica disponibile (per le istruzioni o per i dati), gestire più processi contemporaneamente, le cui esigenze di memoria complessive eccedono le dimensioni della RAM Soluzione: spazio di indirizzamento logico più grande di quello fisico e suddiviso in pagine (zone di memoria di dimensioni prefissate, generalmente potenze di 2, gestite automaticamente dal sisteam indipendentemente dal contenuto della memoria) o in segmenti (zone di memoria di dimensioni arbitrarie decise dal programmatore in base al contenuto; ad esempio stack, programma e dati) In base al principio di località, i segmenti o le pagine di memoria logica vengono mappate sulla memoria fisica (RAM) quando utilizzate, e riposte in memoria di massa se non utilizzate e superiori alle dimensioni della RAM La funzione che trasforma indirizzi logici in indirizzi fisici dipende dal tempo (poichè il mapping della memoria logica su quella fisica è dinamico) ed è implementata dalla Memory Management Unit (MMU) La MMU può trovarsi a monte della cache (se questa fa il caching della memoria fisica, cache fisica) o in parallelo alla cache (se questa fa il caching della memoria logica, cache virtuale) Page-Map Table (PMT) • La funzione di traduzione di indirizzi logici in fisici è rappresentata da una tabella delle pagine (page-map table, PMT). Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 6 Informatica Applicata - Architetture degli elaboratori • • • • • 7.3 © Alessandro Bogliolo Un indirizzo logico è composto da due parti: o i bit più significativi formano il Virtual Page Number (VPN) o i bit meno significativi l’Offset interno alla pagina Un indirizzo fisico è analogamente composto da due parti: o i bit più significativi formano il Real Page Number (RPN) o i bit meno significativi l’Offset interno alla pagina La tabella delle pagine viene indirizzata dal VPN e restituisce il RPN Chiamiamo root pointer il puntatore al primo elemento della tabella delle pagine Ogni elemento della tabella delle pagine contiene: o RPN o PROT, serie di flag tra cui: P (a 1 se la pagina è presente in memoria fisica), A (a 1 se la pagina è stata indirizzata dall’ultimo reset), M (a 1 se la pagina è stata modificata, nel qual caso dovrà essere trascritta in memoria di massa prima di essere sovrascritta da un’altra pagina), ACC (diritti di accesso) PMT gerarchica • • • • • • • 7.4 Dimensione della tabella delle pagine (esempio): o indirizzi logici a 32 bit o pagine di 4Kbyte (offset di 12 bit, VPN a 20 bit) o PTE di 4 byte 20 o Numero di elementi della PMT: 2 =1M o Dimensione della PMT = 4Mbyte Per ridurre l’occupazione di memoria della PMT vengono utilizzate tabelle delle pagine paginate a loro volta, ovvero tabelle delle pagine gerarchiche Il VPN dell’indirizzo logico è suddiviso in due pari: o VPN.Liv1, bit più significativi o VPN.Liv2, bit meno significativi Il VPN.Liv1 viene utilizzato per indirizzare una PMT di primo livello, il cui primo elemento è pntato dal root pointer La PMT di primo livello restituisce il root pointer di una delle PMT di secondo livello, in cui cercare il RPN associato al VPN.liv2 Il vantaggio è che le PMT di secondo livello vengono portate in RAM solo se utilizzate Esempio di PMT gerarchica: o VPN.liv1 a 10 bit o VPN.liv2 a 10 bit o PMT di primo livello di 4Kbyte (1 pagina) o PMT di secondo livello di 4Kbyte (1 pagina) Parametri di progetto • 7.5 Pagine di dimensioni maggiori o miglior ammortizzamento della latenza per il piazzamento della testina dell’hard disk all’inizio della pagina o PMT di dimensioni minore o maggiore frammentazione Translation Lookaside Buffer (TLB) • • • • 7.6 Prestazioni o Se la tabella delle pagine è memorizzata in RAM, ogni accesso in memoria richiede 2 accessi alla RAM: uno per recuperare il RPN dalla PMT, uno per accedere all’indirizzo fisico richiesto o Se la tabella è gerarchica, gli accessi alla RAM necessari a realizzare un accesso alla memoria logica sono 3 o più Per migliorare le performance si utilizza una cache associativa per i RPN, detta translation lookaside buffer (TLB) Si noti che il TLB contiene gli ultimi RPN utilizzati e i relativi VPN (usati come tag di una cache associativa) Poichè RPN e VPN restano immutati fintanto che il microprocessore indirizza celle di memoria appartenenti alla stessa pagina, il principio di località degli accessi alla PMT è particolarmente valido, rendendo molto efficace il caching anche se il TLB è molto piccolo (ad esempio di soli 16 elementi) Multitasking • Processo: coppia (programma, stato di esecuzione) Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 7 Informatica Applicata - Architetture degli elaboratori • • • • • © Alessandro Bogliolo Lo stato di esecuzione di un programma è rappresentato dal valore corrente di tutte le variabili e dal contenuto di tutti i registri interni al microprocessore, tra cui ovviamente il program counter (PC) In sistemi multitasking è possibile sospendere l’esecuzione di un processo per dedicare la CPU ad un altro processo. Questo richiede un cambiamento di contesto che comporta il salvataggio dello stato del processo da sospendere e il ripristino dello stato del processo di cui riprendere l’esecuzione. L’esecuzione di processi concorrenti (multitasking) può essere gestita in due modi diversi: o time sharing: ad ogni processo è dedicato uno slot temporale di lunghezza prefissata al termine del quale si rimette in discussione l’assegnazione delle risorse di calcolo o sospensione: l’esecuzione di un processo è interrotta solo quando il processo incontra una condizione di blocco in attesa di un evento Tabella delle pagine condivisa da tutti i processi: o Spazio di indirizzamento logico unico o I processi concorrenti devono utilizzare zone dello spazio di indirizzamento logico non sovrapposte Tabella delle pagine dedicata ad ogni processo: o Ogni processo ha il proprio spazio di indirizzo logico o Se due processi usano lo stesso indirizzo logico non si creano conflitti o La tabella delle pagine fa parte del contesto di ogni processo e deve essere salvata e ricaricata ad ogni cambio di contesto 8 Input output 8.1 Introduzione [Bucci c4.1] • • 8.2 I/O a controllo di programma [Bucci c4.2] • • • 8.3 Chiamata a procedura Stack Ritorno da procedura I/O a controllo di interruzione (interrupt) [Bucci c4.3-7] • 8.4 Memory-mapped I/O Sincronizzazione Interruzioni ed eccezioni o esterne (asincrone e impreviste) o interne (sincrone, ma impreviste) o trappole (sincrone e previste) Accesso diretto alla memoria [Bucci c4.10] Facoltà di Scienze MM FF NN – Università di Urbino – A.A. 2001/2002 8