Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
La memoria
Organizzazione della memoria:
- Anche se la capacità è maggiore rispetto al flip-flop ottale, richiede meno pin
- Questa organizzazione è facilmente estendibile a memorie di dimensioni maggiori
- Il numero delle parole è sempre una potenza di 2
Chip di memoria:
- 512K parole x 8 bit - 4096k parole x 1 bit
- RAS = selezione riga (Row Address Strobe)
- CAS = selezione colonna (Column Address Strobe)
- WE = write enabled
- CS = chip select
- OE = output enabled
I parametri che caratterizzano la memoria sono:
- Dimensione
- Velocità
- Costo
Questi parametri sono ovviamente in contrasto tra loro; ad esempio, ottenere un tempo di accesso più breve porta inevitabilmente ad innalzare il costo per bit.
Per ovviare a questo problema, all'interno di un calcolatore vengono utilizzati più tipi di memoria, ognuno con il proprio compito.
Le memorie formano quindi una gerarchia, illustrata
nella piramide:- Scendendo nella gerarchia:
- Diminuiscono i costi
- Aumenta la capacità
- Aumenta il tempo d'accesso
- Diminuisce la frequenza di accesso del processore
Tipologie di memoria
Memoria Cache
Storicamente le CPU sono sempre state più veloci delle memorie; al contrario lo squilibrio è nel tempo aumentato.
Questo significa che quando la CPU lancia una richiesta ad alla memoria, essa non otterrà la parola richiesta se non molti cicli di CPU dopo.
Una soluzione è quella di richiedere i dati alla memoria ancor prima che debbano essere utilizzati dalla CPU. Se la CPU prova ad utilizzare delle parole non ancora disponibili però, l'esecuzione deve essere bloccata.
La soluzione utilizzata maggiormente oggi è quella di combinare la "grande" e "lenta" memoria RAM con una più piccola e veloce memoria, detta cache.
L'idea base consiste nel mantenere le parole di memoria utilizzate
è altamente probabile che in istanti immediatamente successivi possa venire referenziato lo stesso indirizzo.è altamenteprobabile che in istanti immediatamente successivi lo stesso indirizzo possa essere nuovamente referenziato.
Quando una parola viene referenziata; la parola stessa e alcune parole vicine sono portate dalla RAM alla cache.
Se durante un piccolo intervallo una parola viene letta o scritta k volte, verrà effettuata una sola lettura dalla lenta RAMe k-1 riferimenti alla veloce cache.
Per formalizzare questo ragionamento si impiegano:
- Tempo di accesso alla cache (c)
- Tempo di accesso alla memoria centrale (m)
- Frequenza di successi (hit ratio) (h)
- [frequenza di fallimento – missa ratio: 1-h
Si calcola quindi il tempo medio di accesso come:
tempo medio di accesso = c + (1-h)m
Le memorie centrali e le cache sono divise in blocchi di grandezza fissa per trarre vantaggio dal principio di località (all’interno della cache si parla di linea di cache); così se avviene un miss l’interna linea viene caricata all’interno
dellacache.Un problema circa l'organizzazione della cache riguarda quello di avere una cache unificata (dati e istruzioni usano la stessa cache, implementazione più semplice) o specializzata (chiamata architettura Harvard; favorisce il prelievo contemporaneo di dati e istruzioni quando si utilizza la pipeline).
Oggi è comune avere più cache, detti livelli (anche 3-4): quelli più vicini alla CPU sono più veloci ma più piccoli.
Per quanto riguarda la gestione della memoria cache ci sono tre aspetti principali da considerare:
- Il posizionamento di un blocco nella cache:
- Indirizzamento diretto
- Fully associative
- Set associative
- Algoritmo di rimpiazzo (gestire la scelta del blocco da rimpiazzare):
- Politica di Belady o ottimale
- Politica LRU
- Random
- Politica di scrittura (write policy): in caso i dati di un blocco siano stati modificati, bisogna riscriverlo in memoria centrale prima di rimpiazzarlo:
- Write through
- Write
ALGORITMI DI POSIZIONAMENTO
Indirizzamento diretto:
Un blocco può essere inserito solo in un punto specifico della cache, il cui indirizzo è ottenuto eseguendo:
(indirizzo del blocco) % (numero di blocchi nella cache)
La regola del modulo (% = resto della divisione tra numeri interi) è una tecnica che permette di mappare una parte di memoria grande in una memoria più piccola. Linea 1 (byte 32-63), Linea 2049 (Byte 65568-65599)
Linea 0 (byte 0-31), Linea 2048 (Byte 65536-65567)
cache da 2048 elementi (*32Byte = 64KB)
Gli elementi della cache sono composti da 3 parti:
- Il bit Valid, che indica se il dato nell'elemento è valido o meno (all'inizio vengono tutti marcati come non validi)
- Il campo Tag, che è un valore univoco a 16bit corrispondente alla linea di memoria da cui vengono i dati
- Il campo Data, che contiene una copia del dato di memoria
Gli indirizzi di memoria di N bit hanno la seguente struttura:
Etichetta Indice Sp.
Parola Sp. ByteEtichetta (tag): corrisponde al tag memorizzato all'interno della cache; identifica una linea di memoria Indice (LINE): identifica un blocco della cache (es. 4K blocchi -> LINE 12bit) Word (Offset parola): identifica la parola all'interno del blocco (blocchi di 4 parole -> WORD 2 bit) Byte (Offset byte - poco usato): identifica il byte della parola (parole di 4 byte -> BYTE 2 bit) Fully Associative (Completamente associativo) In una cache fully associative, un blocco di memoria può essere messo in qualsiasi blocco della memoria cache. Questo significa che per ricercare un blocco, tutta la memoria deve essere esaminata. (non esiste il campo line) Set-Associative Un buon compromesso tra le due soluzioni è la cache set-associative. Con la cache set-associative, ogni elemento della cache può contenere n linee di cache (associativa a n linee). Ovvero, una linea di cache viene prima messa in corrispondenza di un insieme (set), e poiPuò essere messa in unaqualsiasi di esse. L'insieme viene scelto con la regola del modulo. Esempio: indirizzamento con i tre metodi di un blocco di indirizzo 12:
ALGORITMI DI RIMPIAZZO
EAS RECENTLY USED (LRU)
Con questo algoritmo, si sostituiscono i blocchi meno utilizzati, ipotizzando che il blocco utilizzato meno recentemente è quello che ha la minore possibilità di essere referenziato in futuro. (si approssima il futuro al passato recente)
RANDOMICO
I blocchi da sostituire vengono scelti randomicamente. Algoritmi di questo tipo sono estremamente più facili da realizzare, ed è dimostrato che al crescere della dimensione della cache lo scarto di performance con l'algoritmo LRU in termini di miss rate è minimo o nullo.
POLITICA DI SCRITTURA
Eventualmente i dati nella cache verranno modificati dalla CPU. Si pone quindi il problema di decidere quando aggiornarli in memoria centrale.
WRITE THROUGH
L'aggiornamento nella memoria cache comporta
Un immediato aggiornamento anche nella memoria centrale. Questo permette a più CPU di avere sempre i dati aggiornati nelle cache locali. Allo stesso tempo però comporta una grande mole di traffico verso la memoria che può rallentare il sistema.
WRITE BACK: l'aggiornamento avviene quando il blocco di cache sta per essere sostituito e solo se un bit di aggiornamento (che indica se il blocco è stato modificato da quando è stato caricato) è settato. Questo evita di eseguire molte richieste alla memoria centrale, ma in un sistema con più CPU, esse non dispongono di dati aggiornati.
Pentium 4 Intel Core i7
TIPOLOGIE DI MEMORIA
Volatile:
- RAM = Random Access Memory; può essere sia scritta che letta
- SRAM (Static) = costruite con circuiti simili ai flip-flop D. Sono molto veloci
- DRAM (Dynamic) = array di celle ognuna con transistor e condensatore (carico/scarico). Hanno bisogno di refresh. Sono più complesse delle SRAM
ma offrono maggiore capacità:
- SDRAM (Synchronous) = ibrida, in parte statica in parte dinamica. È guidata dal clock principale del sistema, eliminando il bisogno di segnali aggiuntivi. Non volatile.
- ROM = Read Only Memory; non possono essere riscritte; mantengono i dati senza alimentazione (giochi, elettrodomestici).
- PROM = (Programmable) può essere riscritta (una volta); contiene fusibili in corrispondenza di ogni cella. Usata dalle aziende per la progettazione.
- EPROM = (Erasable) Possono essere cancellate.
- EEPROM = (Elettricamente)ROM.
La memoria ROM (Read Only Memory) è una memoria permanente di sola lettura scritta in fase di fabbricazione dal costruttore. Contiene:
- Informazioni di base (la cui modifica comprometterebbe il funzionamento della macchina).
- Le istruzioni del programma di avviamento (fase di bootstrap) che si attiva all'accensione della macchina.
Il BIOS (Basic Input/Output System) è la sequenza di
istruzioni di avvio eseguita automaticamente all'accensione del computer. Si compone di 3 fasi:- Attivazione dell'HW installato e test di funzionamento del sistema (verifica dell'HW)
- Verifica della presenza del sistema operativo e suo caricamento
- Avvio del primo processo