Calcolatori Elettronici Memorieimagelab.ing.unimore.it/didattica/corsi/ce13/materiale/1)...
Transcript of Calcolatori Elettronici Memorieimagelab.ing.unimore.it/didattica/corsi/ce13/materiale/1)...
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Calcolatori Elettronici
Memorie
6.1 CLASSIFICAZIONE DELLE MEMORIE
La Memoria è l’ unità logica di memorizzazione di dati nel calcolatore. Nell’architettura dei
calcolatori si distingue la memoria centrale, in diretto collegamento con la CPU e che contiene
memoria in uso con dati ed istruzioni, dalla memoria di massa che ha il compito come periferica
di I/O di mantenere dati ed istruzioni in modo permanente. I dispositivi di memoria sono le
implementazioni fisiche delle memorie e possono avere struttura e caratteristiche fisiche e
architetturali diverse. Esistono ad esempio dispositivi a semiconduttore, a dischi magnetici etc..
Alcuni dispositivi di memoria compongono la memoria centrale, altri fanno parte dell’I/O (la
cosiddetta “memoria di massa”, come gli hard disk o le memorie nelle schede grafiche), altri
sono interni al microprocessore (le cache) e altri nella stessa CPU (registri).
Esistono diversi tipi di dispositivi di memoria che possono essere classificati in base a:
1. Capacità
2. Caratteristiche fisiche
3. Modalità di Accesso
4. Organizzazione
5. Prestazioni
6.2 CAPACITA’
La capacità si misura come
C= MxN
dove M è il numero di parole, e N in bit la dimensione delle parole. Normalmente N=8 (byte-
wide) o N=1 (bit-wide). Ad esempio una memoria di 512Kbyte è composta da 512K (2^19) byte.
Spesso la dimensione delle parole è maggiore per la presenza di bit di ridondanza ( bit di parità),
che non vengono però conteggiati nella capacità.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
6.3 CARATTERISTICHE FISICHE
Le memorie possono essere classificate in base alle caratteristiche fisiche:
a) Tipo (di tecnologia impiegata):
a semiconduttore
a superficie magnetica
memorie ottiche…
Attualmente nei personal computer le memorie centrali sono realizzate con tipologia a
semiconduttore, la memoria di massa, quale i dischi, a superficie magnetica o di tipo ottico
(come i CD). Le memorie di massa quali le “penne” USB sono invece memorie a semiconduttore.
Nei nuovi calcolatori portatili anche gli hard disk sono ora realizzati in tecnologia a stato solido
ossia a semiconduttore. Nei server invece rimangono in uso le tecnologie a superfici magnetiche
dovendo gestire grandi quantità (TByte, Pbyte) di dati.
b) Consumo: dipende dalla tecnologia e può comportare la necessità di sistemi di
raffreddamento.
c) Affidabilità: come tutti i dispositivi elettronici è di solito misurata dal tempo medio tra 2
guasti . Si usa il termine Mean Time Between Failure –MTBF (o MTTF; in realta’ MTBF=
MTTF+MTTR Mean time to repair che però è spesso trascurabile) soprattutto per dispositivi
esterni come gli hard disk è dell’ordine delle decine di migliaia di ore.
d) Alterabilità: (o funzionalità) indica se la memoria può essere cancellata e quindi sovrascritta
da un sistema diverso da quello di fabbricazione e potenzialmente dall’utente. Si
differenziano con i termini memoria cancellabile/non-cancellabile. Nel primo caso essere
cancellabile significa in realtà essere potenzialmente riscritta, mentre non cancellabile indica
che il contenuto non può essere sovrascritto.
e) Durevolezza: (o volatilità) indica il tempo definito o indefinito in cui i dati permangono in
memoria. Si classifica quindi come memoria volatile/non-volatile. In base alla durevolezza o
volatilità, si possono definire due categorie:
Memorie che perdono le informazioni se non alimentate elettricamente: lo sono la
maggior parte delle memorie elettroniche, come le RAM.
Memorie che mantengono le informazioni anche se non alimentate elettricamente:
come l’hard disk o le flash.
I difetti della volatilità sono i seguenti:
Consumo di energia per conservare le informazioni e necessità di una fonte di
energia che rende meno portabile e maneggevole la memoria.
Perdita della persistenza delle informazioni in caso di malfunzionamento o
manutenzione del computer.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Nonostante i loro difetti, le memorie volatili sono molto utilizzate, anzi costituiscono la massima
parte della memoria centrale in quanto hanno tempi di accesso ossia latenza molto inferiori a
quelli di altre memorie.
Tra le memorie volatili ne esistono diverse categorie.
Vi sono alcune tecnologie particolari, nelle quali l’operazione di lettura causa la cancellazione del
dato memorizzato (Destructive Readout - DRO). In tal caso dopo ogni lettura è necessario
eseguire un’operazione di riscrittura del dato.
In altre tecnologie ( memore statiche) le memorie sono costituite da bistabili sincroni o a
sincroni che mantengono il bit memorizzato fino ad una nuova riscrittura con FF o D Latch.
In altre tecnologie (memorie dinamiche) il bit è memorizzato sotto forma di carica all’interno di
un condensatore, a causa delle correnti di scarica e il valore 1 memorizzato diventa 0. È quindi
necessario che periodicamente si provveda a leggere ogni bit e a riscrivere i bit con valore 1
(Refreshing).
6.4 MODALITÀ DI ACCESSO
L’architettura della memoria definisce la sua modalità di accesso. A seconda della modalità di
accesso si hanno diverse prestazioni e diversi tempi di accesso:
a) Sequenziale: se per accedere ad un dato in una fissata posizione (locazione) della memoria è
necessario accedere a tutti i dati memorizzati in posizioni precedenti . Un tipico esempio di
memorie con accesso sequenziale sono i nastri magnetici ancora usati per il backup.
b) Diretto: se è possibile avere un accesso direttamente alla locazione di memoria voluta senza
dovere accedere alle locazioni precedenti. In molti casi però il tempo di accesso è
dipendente dalla posizione e dalla locazione letta o scritta precedentemente (es. negli hard
disk in cui il seek time (tempo di ricerca) dipende dalla posizione della testina.)
Per le memorie con accesso sequenziale e diretto l’accesso avviene tramite l’interfaccia tra
CPU e controller. Tipicamente le memorie di massa catalogate come I/O sono di questo tipo
come gli hard disk. La CPU manda al controller hardware (vera e propria periferica di I/O) una
configurazione, una richiesta di accesso, un identificatore di partenza (come un “indirizzo”) e
la dimensione del blocco.
Dato= Read_Direct_Mem (id)
Viene acceduta la memoria tramite un identificatore che può essere composto da più
campi; ad esempio negli hard disk è compost da più campi come il disco , la traccia e il
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
settore, il dato letto può avere diverse dimensioni e di solito è di parecchi byte che sono letti
in sequenza a partire dal valore dell’identificatore.
Il dispositivo dopo un tempo iniziale di decodifica della richiesta e di ricerca manda i dati con
un tempo proporzionale alla dimensione dei dati (si veda il capitolo corrispondente)..
Taccesso= Treq +Tstartup + N * Tdato
Fig. 1 memoria ad accesso diretto
c) Casuale: è un accesso diretto in cui il tempo di accesso è costante e non dipende nè
dall’indirizzo nè dalla precedente locazione acceduta. È tipico delle memorie centrali
realizzato in tecnologia RAM,ROM, etc.
MDR<--M[MAR]; ad ogni indirizzo corrisponde un solo dato.
Se nelle memorie casuali vengono letti più byte , se la parola è di dimensione maggiore e il
bus dei dati è di dimensione maggiore allora vengono letti più byte consecutivi a partire da
tale indirizzo.
Per le memorie con accesso casuale -Random access memory -(memorie centrali) c’è una
corrispondenza 1 a 1 tra l’indirizzo mandato dalla CPU e la locazione di memoria. Ogni
indirizzo corrisponde ad una locazione ( o all’inizio del blocco). Non c’e bisogno di un
controller e driver perchè la CPU manda direttamente l’indirizzo che arriva al più tramite
un’interfaccia data dal bus controller alla memoria. La memoria trova in un tempo costante
la locazione di memoria che deve essere letta o scritta.
Taccesso= Taddr+Tdato con Tdato= ritardo della memoria
Fig. 2 memoria casuali
d) Associativo: (o per contenuto): se per accedere ad un dato bisogna cercare un’associazione
(un confronto) tra l’indirizzo e il contenuto. Più precisamente l’indirizzo è a sua volta
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
contenuto nella locazione di memoria; l’indirizzo non è un indice ma è parte del dato. Parte
dell’indirizzo o una funzione dell’indirizzo stesso (chiave hash), contenuta nella locazione di
memoria, viene confrontata con la corrispondente parte dell’indirizzo cercato. Dato che il
dato potrebbe essere contenuto in ogni locazione di memoria bisogna accedere a tutte le
locazioni presenti per verificare la presenza del dato.
Le cache sono esempio di memorie associative; le memorie associative contengono meno
locazioni del numero di indirizzi possibili. Per questo non ci può essere corrispondenza 1 a 1 tra
indirizzo e locazione. Ogni locazione di memoria libera contiene il dato e l’indirizzo (o parte)
chiamato TAG. L’accesso avviene tramite la richiesta di una corrispondenza o associazione tra
indirizzo mandato dalla CPU e TAG. Se la corrispondenza c’è (HIT) allora il dato è presente e può
essere letto o scritto. Se la corrispondenza non c’è (MISS) il dato non è presente.
Fig. 1 memoria associative
Come si vede dalla Fig. 1 la CPU emette l’indirizzo attraverso il MAR, sul bus esterno di indirizzi ( o
all’interno del chip nel caso di cache interne al microprocessore). L’indirizzo o parte di esso
viene confrontato con tutti i tag presenti (tanti quante le locazioni della memoria che nel caso
delle cache si chiamano linee o blocchi). Se una associazione ha buon fine (caso di Hit) allora il
dato è presente e può essere letto o scritto. Nelle cache ogni linea contiene molti byte di indirizzi
consecutivi e per questo il TAG contiene solo la parte più significativa dell’indirizzo, perchèè un
indirizzo allineato alla lunghezza della linea.
Se la linea contiene B byte allora il TAG è composto dal numero di bit na dell’indirizzo meno i
log (B) bit che servono per indirizzare il singolo byte dentro alla parola.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Ad esempio se l’indirizzo è a 32 bit e ogni linea contiene 16 byte l’indirizzo del TAG è composto
solo da 32- log2(16)=32-4=28 bit i più significativi. Gli altri 4 sono considerati offset per cercare
nella linea il byte di interesse.
6.5 TECNOLOGIE PER LA MEMORIA CENTRALE
La memoria centrale è un blocco logico ad accesso casuale tramite indirizzi, che viene letto e
scritto dalla CPU all’atto dell’esecuzione di una istruzione di memoria ld o st. Fornisce dati o
legge dati in base a segnali di controllo:
– Di lettura: RD# o OE#
– Di scrittura: WR#
– Ad abilitazione CS# o CE#
Tutti i segnali sono storicamente in logica negata.
Tecnologicamente la memoria centrale può essere realizzata in molti modi differenti:
RAM:
SRAM
DRAM
ROM:
PROM
EPROM
EEPROM
FLASH
6.5.1 MEMORIE RAM
Le memorie RAM si chiamano random access memory; sono memorie volatili a lettura e
scrittura in cui il tempo di accesso è costante per ogni locazione di memoria indirizzata. Perciò
hanno per definizione modalità di accesso casuale. Sono realizzate in diverse tecnologie e si
dividono in due classi.
SRAM: MEMORIE RAM STATICHE
Come detto nei capitoli precedenti sono memorie molto veloci, realizzate in diverse tecnologie
che permettono al dato di rimanere staticamente memorizzato fino a che il dispositivo è
alimentato. Sono composte da:
– Tanti Flip Flop(FF) quanti i bit da memorizzare.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
– Logica combinatoria di selezione del FF ( o dei FF se la parola ha parallelismo maggiore di
1 bit) a partire dagli indirizzi.
– Logica combinatoria di selezione di lettura e scrittura.
A parità di prezzo, rispetto alle DRAM, le SRAM sono più veloci, a più bassa capacità e a più alti
consumi come dissipazione di potenza. Sono usate nei registri interni, nelle memorie cache o in
applicazioni embedded come memorie centrali.
Tipi di SRAM:
1. Async SRAM: Vecchia versione di memoria asincrona dove i segnali non avevano una
corrispondenza con un clock ma venivano accettati nell'ordine in cui arrivavano ai pin del
chip ( come nello schema del capitolo precedente).
2. Sync SRAM: Tipo di RAM statica sincronizzata con un clock esterno che permette un
funzionamento più affidabile e veloce. I segnali infatti vengono "campionati" sul fronte
del clock.
3. Pipeline Burst SRAM: Evoluzione della normale SRAM sincrona, fa uso di pipeline interne
per i segnali e velocizza il trasferimento di word multiple consecutive tramite accessi
sequenziali a più byte ( o burst). Contiene contatori specifici che si incrementano per
permettere il trasferimento di più parole di seguito
4. Dual Port e Video RAM (VRAM): Le dual port RAM sono delle memorie statiche a doppia
porta di accesso. È possibile leggere e scrivere dalle due porte indipendentemente.
Questo per esempio permette ad un processo elaborativo di accedere in lettura mentre
un'altro processo indipendente esegue operazioni di scrittura. La VRAM è una particolare
Dual Port Ram adatta all'impiego in schede video (da cui il nome) dove un processo
esegue la lettura da una porta (RAMDAC) mentre l'altro (CPU) opera indisturbato delle
elaborazioni. Le dual port RAM sono spesso usate nei piccoli buffer interni ai chip, nelle
cache e nelle FIFO per velocizzare due accessi concorrenti. Si veda ad esempio una VRAM
in http://www.ic72.com/pdf_file/i/14843.pdf. Negli ultimi anni i chip di VRAM negli
acceleratori grafici sono stati sostituiti da DRAM sincrone che sono comunque diventate
talmente veloci da sostituire le VRAM con logica di gestione esterna per permettere
comunque un accesso doppia porta.
Il mercato delle SRAM è in costante espansione per ottenere dispositivi sempre più piccoli e
veloci. Si veda ad es. il sito della Cypress http://www.cypress.com/sync_SRAMs/.
DRAM MEMORIE RAM DINAMICHE
Come detto nei capitoli precedenti, le memorie dinamiche non usano FF ma il bit è memorizzato
in un condensatore che può essere caricato o scaricato e necessita di refresh . La DRAM è stata
creata con l'intenzione di archiviare più memoria possibile anche a discapito della velocità.
Le memorie DRAM sono ottime per costituire la memoria centrale del sistema. Gli sviluppi
recenti delle memorie dinamiche (SDRAM, DDR, Rambus) sono infatti tutti versati alla
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
massimizzazione della banda mentre le latenze di accesso rimangono tipicamente su livelli
medio-alti.
Essendo la DRAM una memoria di grande capacità, i progettisti per risparmiare linee hanno
deciso di spezzare la trasmissione dell'indirizzo in due parti Column Address e Row Address.
Per accedere ad una locazione di memoria è quindi necessario prima specificare il Row Address
(che viene memorizzato dal chip in un buffer interno) quindi, terminata questa operazione,
segue la trasmissione del Column Address usando le stesse linee. Se gli accessi successivi sono
nella stessa "pagina" (ossia hanno lo stesso row address) non è necessario specificare di nuovo il
Row Address ma solo il Column Address.
Fig. 4 esempio di DDR2 e DDR3
Le DRAM sincrone hanno un ritardo (Tacc) sincrono con un clock dato (SDRAM Synchronous
Dynamic RAM). Sono generalmente più lente delle corrispondenti memorie asincrone ma hanno
un ritardo predicibile ( n Tck) in cui la CPU può attendere (con segnale di rdy#) o far partire
un’altra attività.
La CPU definisce quanti cicli di clock sono necessari in un ciclo di bus per
– Trasferimento singolo (1 sola parola larga al massimo come il data bus)
– Trasferimento a BURST (sequenze di parole con indirizzi consecutivi)
Ci sono diversi tipi di DRAM:
FP DRAM, EDO RAM e BEDO RAM: Fast Page DRAM, Extended Data-Out DRAM e Burst
EDO RAM sono moduli DRAM asincroni. I segnali di controllo vengono interpretati
appena arrivano. Queste memorie erano tipicamente presenti nei moduli SIMM di
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
qualche anno fa e sono state del tutto soppiantate dalle memorie DRAM di tipo
sincrono.
Synchronous DRAM (SDRAM): La SDRAM è una memoria dinamica sincrona che utilizza
un segnale di clock esterno per la sincronizzazione delle operazioni di I/O. Permette un
incremento delle prestazioni e una maggiore efficienza. Attualmente I chip di SDRAM in
commercio hanno frequenze di funzionamento dai 66MHz ai 200MHz e più negli ultimi
anni. I moduli di memoria che utilizzano la SDRAM hanno il formato DIMM, la banda
massima teorica delle memorie DIMM PC100 è di 800MB/s e 1064MB/s per le PC133.
Direct Rambus DRAM (RDRAM): Sviluppate da Rambus Inc. e inizialmente patrocinate
da Intel, questo tipo di DRAM utilizza soluzioni originali per ottenere un'elevata banda
di trasferimento dati. L'ampiezza del bus si riduce a 16bit e i dati vengono trasferiti su
entrambi i fronti di una segnale di clock a 400MHz per una banda complessiva di
1600MB/s; il ridotto numero di segnali permette anche la creazione di sistemi multi
canale. Internamente si discostano un pò dal modello tradizionale delle DRAM con
aumento del numero di banchi interni e una diversa gestione del multiplexing.
Double Data Rate SDRAM (DDR-SDRAM) È la naturale evoluzione della memoria
SDRAM. Permette il trasferimento dei dati su entrambi i fronti del clock. Le memorie
DDR si trovano a frequenze anche molto elevate (300MHz x 2) e il loro uso è stato
lanciato più dalle schede grafiche 3D che non dai processori. Attualmente tuttavia
rappresentano lo standard de facto nel campo delle memorie di sistema con frequenze
di 133, 166MHz (x2) e si trovano in moduli DIMM capaci di fornire una banda di 2100-
2700MB/s. ora le DRAM DDR3 ottengono le prestazioni migliori tarsferendo di fatto 8
moduli contemporanemanete
Standard JEDEC DDR3
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Il nome delle memorie DDR dipende dalla frequenza che ne determina la velocità di
trasferimento ( x2 perche’ raddoppia il clock rate e x8 perche’ ci sono 8 banchi di memoria)
standard
name
Memory
clock
(MHz)
Cycle
time
(ns)
I/O bus
clock
(MHz)
Data
rate
(MT/s)
Module
name
Peak
trr rate
(MB/s)
Timings
(CL-tRCD-
tRP)
CAS
latency
(ns)
DDR3-
800D 100 10 400 800 PC3-6400 6400
5-5-5
12 1⁄2
DDR3-
1066E 133⅓ 7
1⁄2 533⅓ 1066⅔ PC3-8500 8533⅓
6-6-6
11 1⁄4
DDR3-
1333F* 166⅔ 6 666⅔ 1333⅓ PC3-10600 10666⅔
7-7-7
10 1⁄2
DDR3-
1600G* 200 5 800 1600 PC3-12800 12800
8-8-8
10
DDR3-
1866J* 233⅓ 4
2⁄7 933⅓ 1866⅔ PC3-14900 14933⅓
10-10-10
10 5⁄7
DDR3-
2133N* 266⅔ 3
3⁄4 1066⅔ 2133⅓ PC3-17000 17066⅔
14-14-14 13
1⁄8
SDRAM ECC (Error Correcting Code): Le SDRAM ECC (con Codice di Correzione di
Errore) sono un particolare tipo di SDRAM che permette il controllo dei dati ed
un'eventuale correzione grazie ad un bit aggiuntivo agli otto tradizionali, il nono bit,
detto anche bit di parità. Questa funzione di controllo e correzione, permette a queste
RAM di avere una maggiore stabilità e sicurezza rispetto alle RAM "tradizionali", infatti
queste memorie sono utilizzate dalla maggior parte dei server, sono un pò più lente
delle memorie "tradizionali", esse hanno infatti tempi d'accesso maggiori.
Fig. 5 scheda di espansione con memorie
Esempio di memoria HP 4GB (1x4GB) DDR3-1600 ECC RAM Memory A2Z48AA
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
In generale le RAM dinamiche sono molto veloci ma malgrado la loro alta bandwidth hanno
ritardi dovuti al refresh
ES A 256 Mb DRAM chip is organized as a 32M 8 memory externally and as a 16K 16K array internally. Rows must be refreshed at least once every 50 ms to forestall data loss; refreshing a row takes 100 ns. What fraction of the total memory bandwidth is lost to refresh cycles?
SOL. Refreshing all 16K rows takes 16 1024 100 ns = 1.64 ms. Loss of 1.64 ms every 50 ms
amounts to 1.64/50 = 3.3% of the total bandwidth.
1990 1980 2000 2010
Nu
mb
er
of
me
mo
ry c
hip
s
Calendar year
1
10
100
1000
Large
PCs
Work-
stations
Servers
Super-
computers
1 MB
4 MB
16 MB
64 MB
256 MB
1 GB
4 GB
16 GB
64 GB
256 GB
1 TB
Computer class
Memory size
Small
PCs
Il trend di crescita delle RAM dinamiche segue la legge di Moore.
Column mux
Row
deco
de
r
/
h
Address
Square or
almost square
memory matrix
Row buffer
Row
Column
g bits data out
/
g
/
h
Write enable
/
g
Data in
Address
Data out
Output enable
Chip select
.
.
.
. . .
. . .
(a) SRAM block diagram (b) SRAM read mechanism
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
6.5.2 MEMORIE ROM
Le memorie ROM (Read only memory) sono memorie di sola lettura, esse non hanno logica
dedicate per la scrittura ma vengono scritte attraverso differenti apparati tecnologici.
Fig. 6 memorie ROM
Le ROM possono essere classificate in:
Masked ROM: ROM in cui le celle di memoria sono state scritte in fase di integrazione
(nella maschera usata per creare l'integrato); le MROM non possono essere cancellate
ma garantiscono bassi costi di produzione per grandi quantità. Le singole celle della ROM
sono come collegamenti elettrici presenti (0) o interrotti (1). Quando si vuole leggere il
contenuto di una cella di memoria gli viene inviato un livello elettrico alto, se il
collegamento è presente, il segnale passa (1) altrimenti la cella vale 0.
Programmable ROM (PROM): programmabili una volta impiegando un pin speciale (ad
elevato voltaggio). È una ROM vuota, ossia non ancora programmata. La ROM nasce
come un insieme di bit a 1, per scrivere uno 0 in uno specifico bit si esegue una procedura
di scrittura una tantum che, bruciando un microscopico fusibile interno, interrompe per
quel bit la conduzione di corrente che viene interpretata in lettura come uno 0.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
B i t l i n e s
Word
lines
Word contents
1 0 1 0
1 0 0 1
0 0 1 0
1 1 0 1
S u p p l y v o l t a g e
Eraseable Programmable ROM (EPROM): cancellabili in toto con luce ultravioletta. È una
ROM di tipo programmabile(PROM) ma realizza l'interruzione di una connessione
elettrica nella cella tramite un fenomeno di intrappolamento delle cariche con segnali di
programmazione di una certa potenza. La memoria può quindi essere scritta con questo
procedimento ma può anche essere "resettata" ossia totalmente cancellata esponendo il
core del chip ad una radiazione ultravioletta (tramite la tipica finestrella trasparente delle
EPROM) che fornisce alle cariche intrappolate l'energia necessaria per liberarsi con
conseguente azzeramento delle celle di memoria.
Electrically Eraseable Programmable ROM (EEPROM): sono cancellabili elettricamente
senza doverle estrarre dalla scheda, tipicamente risultano più lente e di ridotta capacità
di memorizzazione. Questo tipo di ROM è simile all'EPROM ma può essere cancellato
elettricamente. Risulta quindi molto più pratico dell'EPROM, inoltre si può operare la
cancellazione su blocchi limitati oltre che sull'intera memoria. È l’antenato delle Flash
ROM. Le EEPROM sono state utilizzate a lungo nei BIOS.
FLASH: leggibili e scrivibili a blocchi senza estrarle dal circuito. Sono memorie ad alta
capacità ma caratterizzate da un limite finito di scritture. Sono Memorie EEPROM dove
le informazioni vengono registrate in un array di transistors chiamati celle, ognuna delle
quali conserva il valore di un bit. Le nuove flash utilizzano delle celle multilivello che
permettono di registrare il valore di più bit attraverso un solo transistor.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
S o u r c e l i n e s
B i t l i n e s
Word
lines
n+
n
p subs-
trate
Control gate
Floating gate
Source
Drain
Le Flash vengono classificate in base alla rete logica che le realizza in:
NOR FLASH: Le prime flash inventate da Intel nel 1988. Per programmare il valore di una
cella si avvia un flusso di elettroni poi una tensione molto elevata sul Gate che genera un
campo elettrico sufficientemente elevato affinché gli elettroni vengano intrappolati nel
Floating Gate. ("hot-electron injection“). È da qui che prende origine la denominazione di
flash. Per la cancellazione viene applicata una differenza di tensione per far sì che gli
elettroni vengano estratti dal gate. Le memorie NOR moderne raggruppano le celle in
segmenti chiamati blocchi o settori in maniera che le operazioni di cancellazione
avvengano contemporaneamente su tutte le celle appartenenti allo stesso segmento. Le
memorie NOR vengono utilizzate ad esempio per contenere il firmware di un
microcontrollore che viene eseguito direttamente e non viene aggiornato
frequentemente. Sono state usate nelle prime Compact Flash soprattutto per conservare
il firmware delle fotocamere digitali e dei PDA. Ne esiste una recente variante
denominata DINOR che prevede la cancellazione contemporanea di più settori.
NAND FLASH: È stata concepita per la memorizzazione di grandi quantità di dati in
maniera sequenziale, a piccoli blocchi e con un costo contenuto. Il progetto nasce nel
1989 da una collaborazione tra Samsung e Toshiba.Le memorie NAND sono ottimizzate
per l'aggiornamento rapido dei dati. Si consideri che il settore di cancellazione per le
NAND è di 8 Kb contro i 64 Kb delle NOR. Inoltre a parità di capacità risulta meno costoso
produrre una Flash di tipo NAND rispetto ad una di tipo NOR. Grazie a queste migliori
prestazioni, le NAND Flash vengono solitamente utilizzate nelle schede di memoria
Compact Flash, Smart Media, SD, MMC, xD, PC cards, memory stick USB e come
principale Storage di Portatili moderni (2006 Samsung).
Recentemente Hitachi ha introdotto una quarta tipologia di memoria chiamata AND che
sembra sintetizzare i migliori aspetti delle Flash NAND e NOR con alte velocità di
cancellazione, basso consumo, blocchi di lettura e scrittura ridotti.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Vale la pena osservare che l'accesso sia in lettura che in scrittura alle memorie FLASH richiede
molto più tempo rispetto ad una RAM attuale, e che comunque il numero di scritture che una
memoria FLASH può supportare non è illimitato seppur molto alto (oltre 105 cicli di scrittura).i
6.6 ORGANIZZAZIONE DELLA MEMORIA
Per la memoria centrale l’organizzazione della memoria è un’organizzazione piatta (non
gerarchica) con dispositivi in serie ed in parallelo:
e) In parallelo: per aumentare la dimensione di parola.
f) In serie: per aumentare lo spazio di indirizzamento fisico coperto.
Nell’architettura di un calcolatore si cerca di avere il parallelismo delle memorie almeno uguale
al parallelismo del bus dei dati della CPU. Spesso i dispositivi sono di parallelismo minore,
tipicamente di un byte. I dispositivi di memoria sono organizzati in banchi con più dispositivi
inparallelo che a loro volta sono organizzati in serie per creare moduli di dimensioni più grandi.
Dispositivi in parallelo per realizzare un banco di memorie di dimensione N maggiori
della dimensione del singolo dispositivo.
Dispositivi in serie per realizzare un modulo con più locazioni di memoria di quante
presenti in un singolo dispositivo o banco.
Una memoria di capacità C può essere costituita da più dispositivi fisici in serie o in parallelo
(veda il punto di organizzazione). Se la disposizione è in parallelo la dimensione della parola è
multipla di byte ma per convenzione la capacità si misura sempre in byte (o bit). Ad esempio in
figura 1 è indicata una memoria logica implementata con un’architettura in parallelo costituita
da un banco di 4 dispositivi fisici ognuno con parallelismo di un byte. Se ogni dispositivo avesse
la capacità di 512Kbyte, il banco avrebbe la capacità di 512kbyte x 4= 2Mbyte in totale.
ESEMPIO:
Avendo a disposizione dispositivi di memoria di capacità di 1Mbyte con parallelismo 1 byte si
vuole realizzare un modulo di memoria di 8 MByte con parallelismo pari al bus della CPU a 32 bit.
Come devono essere disposti i dispositivi in serie e i parallelo?
Ogni banco da 32 bit deve essere composto da np=4 dispositivi da 8 bit in parallelo.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Fig. 7 memorie in serie e in parallelo
La capacità del banco Cb= C x np quindi Cp=1MB * 4=4MB
La capacità del modulo Cm=8MB. Il numero di banchi in serie ns=Cm/Cb quindi ns=2
Sono necessari 2 banchi in serie ognuno con 4 dispositivi in parallelo. Ogni parola è di 4 byte. Il
numero di parole M=Cm/np quindi uguale a 2M
In questo caso se si volesse leggere o scrivere una parola per volta sarebbero necessari na bit di
indirizzo: Il numero di bit di indirizzo necessari per indirizzare il modulo a livello di parola sono:
log2(Cm/np) * na=21
Con 21 bit si indirizzano 2M parole. Nelle memorie centrali Se NB numero di byte per parola di un
banco con più dispositivi in parallelo ed è nota la capacità C e quindi M si conosce quanto è la
dimensione del bus degli indirizzi necessario per indirizzare le locazioni di memoria:
na=log2(M/NB)
Ad esempio una memoria centrale di capacità 512Mbyte con parallelismo di 64 bit ha da
indirizzare 512/8 = 64M parole con 26 indirizzi diversi. Attenzione che questi sono gli indirizzi per
leggere e scrivere parole intere ma la cpu deve poter indirizzare anche i singoli byte se promette
un metodo di indirizzamento non allineato.
Perciò in totale la CPU necessita di log2(C ) = 29 bit per indirizzare i byte di una memoria a
512Mbyte, di cui 3 bit (i meno significativi) indirizzano i byte nella parola e i 26 più significativi
servono per scegliere la parola.
I banchi di memoria sono composti da dispositivi in parallelo per permettere di leggere o
scrivere parole di dimensioni maggiori. Se il metodo di indirizzamento e’ allineato allora tutte le
parole sono lette e scritte contemporaneamente; se e’ permesso anche un indirizzamento non
allineato allora si possono leggere e scrivere solo alcuni dei dispositivi di memoria tramite
opportuni segnali di controllo detti Byte enable (BE#). I processori sprsso eprmettono entrambi i
metodi di indirizzamento ma se la memoria e’ impiegata in gerarchia ( si veda dopo) il
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
trasferimento avviene solo in modo allineato considerando che sii devono trasferire molti byte
consecutivi.
I banchi comunque sono messi in serie per coprire uno spazio di indirizzamento maggiore. In
questo caso i bit piu’ significativi dell’indirizzo sono utilizzati nella gestione dei chip select.
Se invece di osservare solo la memoria centrale si osserva tutta la memoria del calcolatore ( dai
registri alla memoria di massa) allora si vede che il calcolatore ha un’organizzazione gerarchica
della memoria. Ciò non accade nei sistemi embedded dove l’organizzazione è di solito non
gerarchica.
Organizzazione non gerarchica e’ l’organizzazione che abbiamo visto fino ad ora in cui lo
spazio di indirizzamento è coperto solo da memorie centrali ad accesso casuale con
corrispondenza 1 a 1 tra indirizzi e locazioni disponibili.La CPU indirizza una locazione di
memoria e se e’ presente il chip di memoria che contiene tali locazioni il dato e’ letto e
scritto. Se lo spazio di memoria non e’ completamente coperto da banchi in serie allora
esisteranno alcuni indirizzi vietati che non corrispondono a zone di memoria.
Fig. 8 memorie non gerarchiche
In questo caso la CPU è collegata a memorie diverse magari di velocità diversa ma tutte in
corrispondenza 1 a 1 con gli indirizzi. Unite costituiscono tutto lo spazio di indirizzamento.
Nei sistemi embedded, normalmente l’organizzazione non è gerarchica. Alcune memorie
sono dedicate, ossia sono progettate per contenere specifici tipi di dati ( es. la EPROM o
flash di bootstrap). Altre memorie sono general-purpose e possono essere accedute
mediante specifici metodi di indirizzamento per leggere o scrivere dati di qualsiasi tipo. Il
loro impiego dipende dalle loro caratteristiche e da come il dato viene impiegato durante il
funzionamento del calcolatore. Ad esempio il progettista indicando indirizzi non rilocabili
pone nelle memorie veloci il codice ed i dati più utili e frequenti e sulle memorie più lente i
dati da usare in inizializzazione o in caso di termine delle operazioni quando sono richieste
prestazioni minori.
Organizzazione gerarchica: Il calcolatore contiene memorie di tipi, prestazioni e costi
diverse. Le memorie nella gerarchia hanno copie dei dati che si trovano anche nella
gerarchia inferiore.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
L’organizzazione gerarchica tende ad accedere prima alle memorie più veloci. Il dato può
non essere presente e quindi viene richiesto in una memoria di gerarchia inferiore.
La memoria ideale dovrebbe essere a capacità infinita, tempo di accesso nullo e costo e
consumo nullo. L’organizzazione gerarchica nasce epr permettere alla CPU di accedere il piu’
possibile alle memorie veloci seppur piccole impiegando il meccanismo hardware del
trasferimento gerarchico per piazzare e rimpiazzare i dati nella gerarchia in modo da usare
poche piccole memorie pur mantenedo nelle memorie piu’ lente grandi quantità di dati.
La memoria del calcolatore è organizzata gerarchicamente in modo da comprendere poche
memorie a bassa capacità ed alti costi ma molto veloci e molta memoria più lenta e di
capacità maggiore.
Fig. 9 gerarchia di memorie
La regola base dell'efficienza è quella di “rendere di massima velocità il caso comune”. Si cerca
così di strutturare la località spaziale e temporale.
“Per il Principio di località un programma in ogni istante utilizza una porzione limitata dello
spazio di indirizzamento”
Per la località temporale (accedendo ad un dato è assai probabile che si debba accedere
nuovamente ad esso in un breve intervallo di tempo ossia in un tempo “localmente vicino”). Se è
vero che i programmi hanno una grande località temporale ossia un riuso dei dati conviene
quindi replicare i dati anche in memorie temporanee veloci a cui accedere più velocemente. Ciò
accade per le variabili e per gli operandi ma spesso anche per le istruzioni. Si pensi ai cicli di
istruzioni in cui la stessa istruzione viene utilizzata più volte. Per questo conviene durante il fetch
dell’istruzione copiarla anche in una memoria veloce da cui riprenderla al prossimo accesso.
Questo è ilo primo uso delle cache mantenere dati da riutilizzare nel tempo con un accesso più
veloce della memoria centrale.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Per la località spaziale (accedendo ad un dato è assai probabile che si debba accedere ad un dato
allocato in uno spazio in memoria localmente vicino). Se è vero che i programmi sfruttano la
località spaziale conviene portare nelle memorie veloci non singoli dati ma blocchi di dati
adiacenti perchè si prevede di utilizzarli nel prossimo futuro. Questo caricamento è un’azione
speculativa nel senso che viene eseguita anche se non espressamente richiesto dal programma.
Quindi conviene replicare non singoli dati ma blocchi di dati adiacenti. La dimensione dei blocchi
dipende dal costo del trasferimento, più la memoria è lenta più è conveniente accedervi
raramente e quindi spostare blocchi di grandi dimensioni. Più si pensa che la località spaziale sia
grande più i blocchi dovrebbero essere grandi. Se i blocchi risultassero troppo grandi si
rischierebbe di caricare dati inutili e quindi perdere tempi nei trasferimento.
Il progetto della gerarchia di memoria è molto complesso.
Dati che inizialmente si trovano ad un livello più basso:
– (loc. temporale) conviene spostarli in memorie più veloci
– (loc. spaziale) conviene spostare anche i dati vicini
I programmi NON vedono la gerarchia ma referenziano i dati come se fossero sempre in
memoria centrale (a parte per i registri che sono nominati esplicitamente nel linguaggio
macchina come deciso dal compilatore) perciò bisogna mantenere il più vicino possibile alla CPU
dati utilizzati più recentemente. La gerarchia delle memorie deve prevedere in successione
memorie sempre più capienti e più lente per mantenere i dati nei livelli più alti
proporzionatamente alla previsione della frequenza d’uso.
I principi di località di referenziazione sono stati ben studiati teoricamente e verificati. Il termine
è stato coniato nel 1972 da P.J. Denning, S.C. Schwartz, in un lavoro su Communications of the
ACM, Volume 15 , Issue 3 (1972). Da allora è stato sfruttato nel progetto dei nuovi calcolatori
con gerarchia di memoria. Fino a qualche anno fa però era un problema trascurato dai
programmatori che scrivevano i programmi “naturalmente” con località spaziale e temporale.
Con l’avvento di calcolatori con gerarchie spinte con cache di I, II e III livello e soprattutto dei
sistemi multi-core con cache locali, poter ottimizzare il codice per avere maggiore località può
influire fortemente le prestazioni.
Ad esempio un prodotto di matrici
for i in 0..n
for j in 0..m
for k in 0..p
C[i][j] = C[i][j] + A[i][k] * B[k][j];
Se le matrici sono molto grandi il principio non è sfruttato al meglio. Ad esempio se le matrici
sono memorizzate per righe l’accesso per colonne non sfrutta la località spaziale. E il codice può
essere scritto in modo diverso. Anche per la località temporale può convenire scrivere il codice
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
diversamente: ad esempio la tecnica di blocking che divide le matrici grandi in sotto-blocchi può
migliorare le prestazioni con alti speedup.
for (ii = 0; ii < SIZE; ii += BLOCK_SIZE)
for (kk = 0; kk < SIZE; kk += BLOCK_SIZE)
for (jj = 0; jj < SIZE; jj += BLOCK_SIZE)
for (i = ii; i < ii + BLOCK_SIZE && i < SIZE; i++)
for (k = kk; k < kk + BLOCK_SIZE && k < SIZE; k++)
for (j = jj; j < jj + BLOCK_SIZE && j < SIZE; j++)
C[i][j] = C[i][j] + A[i][k] * B[k][j];
Riscrivendo il codice in questo modo ogni sottoblocco è usato più volte e anche la località
spaziale viene migliorata.
6.7 GERARCHIA DI MEMORIA NEL CALCOLATORE
La memoria interna alla CPU è costituita dai registri ed è caratterizzata da alta velocità
(comparabile con quella del processore) e limitate dimensioni (al più qualche migliaio di
byte). Nei sistemi attuali un livello o più di memorie cache è stato inserito tra CPU e
memorie centrali. Essa è sia interna al microprocessore sia allocata esternamente sulla
mother board. La memoria centrale o principale è caratterizzata da dimensioni molto
maggiori della memoria interna alla CPU (fino a qualche Gbyte) ma tempi di accesso più
elevati. È accessibile in modo diretto tramite indirizzi. Le Memorie secondarie sono di
differenti tipi in un calcolatore. Sono tipicamente memorie di massa ad alta capacità
bassi costi e non volatili.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Fig. 10 gerarchia in un PC
La CPU o lavora esplicitamente con i registri, ossia con la memoria interna, o deve accedere alla
memoria.; nel momento in cui esegue operazioni di memoria (istruzioni ld/st o quando deve
eseguire il fetch di una istruzione) genera l’indirizzo necessario. L’indirizzo esce dalla CPU ed in
un’organizzazione non gerarchica arriva alla memoria eventualmente attraverso il bus controller
che è usato per interfacciare in modo corretto i segnali. In un’organizzazione gerarchica come
quella attuale nei PC, l’indirizzo è catturato dalla MMU (memory management unit) all’interno
del microprocessore e viene impiegato per accedere in modo associativo alla cache di primo
livello. Se il dato (o l’istruzione) viene ritrovato nella cache L1 (hit) l’accesso avviene in un tempo
molto basso , impiegando lo stesso tempo di clock della CPU. In caso contrario (miss), l’indirizzo
passa all’esterno del microprocessore sul bus proprietario e veloce, catturato dal bus controller
che lo impiega per cercare in modo associativo la presenza del dato nella cache L2. In caso di hit
il dato arriva con un tempo di accesso più alto che nelle cache L1 ma minore che per la
memoria centrale e nel frattempo viene spostato in cache L1 anche un blocco (o linea) di dati
adiacenti, tanti quanti contenuti nella linea di L1. In caso di miss il dato viene cercato in memoria
centrale dove il dato sicuramente si trova e viene spostato assieme ai dati adiacenti in L2 ed L1.
Tutto questo processo è gestito dall’hardware e non è visibile nè al programmatore nè al sistema
operativo.
Nei sistemi in cui il sistema operativo lo consente, esiste anche un ulteriore livello di gerarchica
che è la Memoria Virtuale realizzata con parte della memoria di massa. Dato che la memoria
centrale è di dimensione normalmente minore di quanto sia prevista dallo spazio di
indirizzamento della CPU, non tutti i dati ed i programmi possono risiedere
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
contemporaneamente in memoria centrale. Per questo la memoria centrale è considerata come
una “cache” della memoria virtuale, ossia della memoria che virtualmente si avrebbe a
disposizione, grande come tutto lo spazio di indirizzamento, e che viene invece sostituita da una
memoria di massa come l’hard disk.
Se un dato fa riferimento ad un indirizzo in memoria, in questo caso l’indirizzo virtuale viene
trasformato dal bus controller in un indirizzo fisico reale di quelli possibili data la memoria
centrale a disposizione. Se il dato si trova già nella memoria centrale (memoria fisica) si ha un hit
e come nel caso precedente il dato viene acceduto correttamente. Se il dato non si trova in
memoria centrale (miss o Page Fault) il dato e il suo blocco corrispondente che si chiama pagina
viene richiesto tramite il sistema operativo nella memoria di massa che con un meccanismo di
Direct Memory Access(DMA) trasferisce la pagina da memoria di massa a memoria centrale. Il
sistema operativo quindi è chiamato ad eseguire un programma di trasferimento e di correzione
delle tabelle delle pagine. Al termine di questa operazione, molto lunga (decine di ms) il dato
può essere trasferito alla CPU e prima ancora nelle cache.
6.8 PRESTAZIONI
Le prestazioni delle memorie si misurano in tempo: la latenza per le memorie si chiama
tempo di accesso mentre il throughput si calcola come reciproco del tempo di ciclo.
Tempo di accesso (Tacc): il tempo necessario per una operazione di lettura (o
scrittura). Per le memorie ad accesso casuale è il tempo che intercorre da
quando vengono forniti gli indirizzi a quando sono pronti i dati. Per le memorie
sequenziali comprende anche il tempo per raggiungere i dati.
Tempo di ciclo: è il tempo di accesso più il tempo per terminare l’operazione
prima di poter compiere un altro accesso. Di solito si calcola in lettura (Trc); è di
solito più lungo del tempo di accesso. Nelle memorie sincrone determina la
massima frequenza del bus a cui possono essere collegate.
Velocità di trasferimento (bit rate, br): per le memorie ad accesso casuale è il
reciproco del tempo di ciclo (throughput) considerando il numero di bit trasferiti.
Per le memorie di massa ad accesso diretto o sequenziale deve considerare
anche il tempo di interfaccia con il controller.
In generale T= ts+ N/br
Bisogna considerare un tempo di startup ts (per l’accesso al bus, la traduzione degli
indirizzi, l’accesso iniziale..), più un tempo proporzionale al numero di bit trasferiti N
rispetto alla velocità in “bit per second”(bps) br. Di solito i tempi di startup e il bit rate
sono fissati dalla CPU a cui la memoria o si adegua o introduce ritardi. Più la memoria è
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
lenta più il ts è alto ed è per questo che nella gerarchia della memoria è conveniente
trasferire blocchi di grandi dimensioni.
Nella gerarchia di memoria:
Blocco: unità di informazione minima scambiata fra livelli (es: 32 bytes)
Hit: un accesso alla memoria che trova l'informazione cercata nel livello
superiore.
Hit Rate: frequenza di accessi trovati nel livello superiore (h).
Miss Rate: (1 - h).
Hit Time: tempo di accesso al livello superiore Th.
Miss Penalty: tempo per rimpiazzare un blocco nel livello superiore più il tempo
per fornirlo alla CPU. Il "miss penalty“ (Tmp) può anche essere scomposto nei
tempi per reperire il primo dato di un blocco più il tempo per trasferire gli altri.
Comprende certamente un Th e un “overhead” nel caso di miss (Tmiss).
Tacc = h Th + (1-h)Tmp
Tacc = Th + (1-h)Tmiss
Il Tmiss comprende il tempo per reperire il blocco nella gerarchia di livello più basso più
(eventualmente trascurabile) il tempo per rimpiazzare i dati dal livello alto al livello più
basso (se il livello più alto deve essere “svuotato”) .
ESERCIZIO:
Supponiamo un sistema a due livelli in cui per accedere al primo livello (memoria
centrale) il tempo di accesso sia 0.1 microsec (100 ns) per ogni dato e per accedere al
secondo (ad esempio HD) sia di 0.1msec .Quando si accede al secondo livello il dato deve
essere copiato nel primo. Ipotizziamo che le probabilità di trovare il dato al primo livello
siano del 95% (h). Trascuriamo il tempo necessario al processore per capire dove si trova
il dato nell’hard disk (trascurabile rispetto al tempo di accesso) e il tempo di
trasferimento di un intero blocco:
Quanto è il tempo di accesso medio?
Tacc= 0.95 * 0.1 + 0.05 * (0.1 +100)= 0.095+5.5= 5.596 microsec
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Basta un 5% di penalizzazione di miss che tutto l’accesso medio risulta fortemente
rallentato. Nel caso specifico di ben 5 volte. Ipotizzando circa una differenza di 103 per le
dimensioni(es. 10K – 10M) e 103 per il tempo di accesso(es. 10-7s – 10-4s).
Approssimativamente lo speedown calcolato tra il sistema ideale (solo memoria
centrale) e quello reale per quel che riguarda il tempo di accesso risulta:
Sp=0.1/5.596=0.0178 ( 55.96 volte più lento ) .
Fig.11 Cache memory
Come si vede dalla fig. 10 l’indirizzo viene fornito dalla CPU, la parte più alta
dell’indirizzo (tag) viene confrontato ossia associato ai tag memorizzati nella cache. Se il
confronto è positivo allora (hit) il dato si trova sulla cache e viene letto dalla cache
Tag Offset
es(hit) No(miss)
Main memory
Address
=
=
=
Tag
Tag
Tag
Tag =
Data Block
Data Block
Data Block
Data Block
Cache memory
Data bus
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
memory. Se l’associazione non c’è e nessun tag della cache corrisponde al tag
dell’indirizzo allora il dato viene trovato nella memoria di gerarchia più bassa. In caso di
lettura viene anche caricato sulla cache ( con i byte vicini, tanti quanti richiesti dal
blocco) per sfruttare la località spaziale e temporale.
6.9 APPROFONDIMENTI SULLE CACHE
Le memorie cache sono realizzate normalmente con tecnologia SRAM, in parte
all’interno del chip e in parte all’esterno del chip.
La cache è costituita dalla parte chiamata anche cache RAM che contiene i blocchi di
dati o linee e dalla parte (di solito integrata nel cache controller) detta anche cache
directory che contiene i tag ed eventuali bit di stato. Ogni linea ha infatti uno o più bit di
stato per indicare lo stato della linea, ad esempio è sempre presente il bit V (Valid) che
vale 0 se la linea non è valida o è vuota; tale stato invalida l’associazione tra il tag e
l’indirizzo e forza anche ad una miss. Di solito sono presenti più bit 8 come nel protocollo
MESI modified, exclusive, shared e invalid) utilizzati nei sistemi multiprocessore.
La cache viene classificata a seconda del grado di associatività per quel che riguarda il
piazzamento dei dati, in tre categorie
1) cache fully associative: è la cache con maggiore grado di libertà in quanto la linea
che viene scritta a partire dal livello di gerarchia più basso può essere piazzata in
una qualsiasi linea presente. L’indirizzo è quindi composto da una parte di offset di
NB=log2B bit ( B dimensione del blocco) e da NT= na-log2B bit di Tag che vengono
usati per essere associati a tutte le linee della cache come in figura. Questa
architettura è la più efficiente, ha mediamente la miss rate più bassa ma è anche la
più costosa per il costo della logica di controllo dei tag.
Fig.12 Cache fully associative
2) cache direct mapped: come estremo opposto, la cache direct mapped prevede una
sola possibilità di piazzamento per ogni linea . Ogni linea infatti usa parte del tag
come chiave unica di indice ed in particolare la parte meno significativa dell
indirizzo. In questo modo due blocchi adiacenti vengono mappati in due linee
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
consecutive e non si sovrappongono. Ogni linea se è presente sulla cache può
risiedere in una sola posizione data dalla parte di indirizzo chiamata index e quindi
la associazione del tag avviene con un confronto 1:1. L’indirizzo è quindi composto
da una parte di offset di NB=log2B bit ( B dimensione del blocco) da una parte di
index di Ni= log2L ( con L il numero di linee) e da NT= na-Ni-NB bit di Tag che
vengono usati per essere associati al tag memorizzato all’interno. È la cache
potenzialmente con il più alto miss rate ma è anche la meno costosa. Si veda la
figura corrispondente.
Fig.13 cache direct mapped.
3) Cache n-way associative: è la cache più usata, compromesso tra le architetture
precedenti. Le linee della cache sono divise in S set da n vie ognuna (n-way
associative). Ogni linea del livello inferiore della gerarchia può essere piazzata in un
solo set ma in una qualsiasi delle n linee dentro al set. È una cache quindi direct
mapped a livello di set ma totalmente associativa dentro al set; perciò il miss rate è
Address (showing bit positions)
20 10
Byte
offset
Valid Tag DataIndex
0
1
2
1021
1022
1023
Tag
Index
Hit Data
20 32
31 30 13 12 11 2 1 0
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
minore rispetto al caso precedente perchè ci sono più possibilità di mantenere la
linea nella cache senza doverla rimpiazzare. L’indirizzo è composto da una parte di
offset di NB=log2B bit ( B dimensione del blocco) da una parte di index di Ni= log2S
( con S=L/n il numero di set) e da NT= na-Ni-NB bit di Tag che vengono usati per
essere associati al tag memorizzato all’interno.
Le cache attualmente si usano con una associatività variabile da 2,4 8 perchè è stato
verificato sperimentalmente che non serve aumentare ulteriormente la associatività
ma con associatività di 8 o 16 si ottiene mediamente una miss rate molto simile a
quella di una cache totalmente associativa.
Fig. 14 cache a n-way associative.
Nella figura che segue si vede la differenza tra l’accesso diretto e l’accesso 2 way-
associative.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Fig. 15 memory access.
ESERCIZIO
Sia data una cache di capacità ( la capacità si riferisce sempre e solo alla cache RAM) di
128Kbyte a 4 –way associative con blocchi di 16Byte.
Quanti sono i bit di tag, index e offset se lo spazio di indirizzamento è a 4Gbyte?
Essendo na=32, NB=log2 16 =4 , ci sono L= 128KB /16B =2^13= 8K linee e S=L/4=2K set
Ni= log2 S ossia Ni=11. N tag= 32-11-4= 17 bit
Quanto è grande in byte ( arrotondando a un numero intero di byte) la cache directory?
La Cache directory contiene tanti tag quanti le linee. Ogni tag di 17 bit arrotondato a 3
Byte per 8K linee ossia circa 24Kbyte.
RIMPIAZZAMENTO
Quando la cache e’ piena o il set e’ pieno la linea deve essere rimpiazzata. Epr
rimpiazzare la linea si dovrebbe rimpiazzare la linea meno utile. Se e’ possibile si
implementa il protocollo LRU least recently used che sceglie di rimpiazzare la linea che
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
da piu’ tempo non e’ usata. Per far cio’ ogni linea deve avere alcuni bit di contatori
dedicati. Se direct mapped, non c’e’ problema a scegliere, se n-way associativa con n
piccolo la tecnica LRU e’ conveniente, al crescere dell’associatività diventa complesso
sostenere il costo di una rete logica LRU per ogni linea e si preferisce la scelta RANDOM
che pero’ offre risultati non troppo lontani in termini di miss rate
Esempio:
• Miss rates for caches with different size, associativity and replacemnt
algorithm.
Associativity: 2-way 4-way 8-way
Size LRU Random LRU Random LRU Random
16 KB 5.18% 5.69% 4.67% 5.29% 4.39% 4.96%
64 KB 1.88% 2.01% 1.54% 1.66% 1.39% 1.53%
256 KB 1.15% 1.17% 1.13% 1.13% 1.12% 1.12%
For caches with low miss rates, random is almost as good as LRU.
MISS IN LETTURA
Esistono diverse cause che possono provocare una cache miss, che a sua volta crea la
necessità di accesso alla memoria di livello inferiore e riempimento della linea con un
peggioramento delle prestazioni in tempo di accesso di qualche ordine di grandezza. Le
miss possono essere catalogate di tre tipologie a seconda della motivazione che le causa:
Compulsory (obbligatorie) se sono inevitabili; esse si verificano quando la linea
richiesta non è mai stata in cache.
Conflict se sono dovute a un conflitto dovute alla limitata associatività: il dato
viene richiesto nella cache, sarebbe stato presente ma è stato rimpiazzato perchè
una altra linea con lo stesso index è stata richiesta in seguito e a causa della
limitata associatività ha preso il suo posto.
Capacity se sono dovute alla limitata capacità della cache: la linea sarebbe stata
presente ma essendo la cache di capacità limitata essa è stata rimpiazzata da
un’altra.
Cosa fare per aumentare l’hit rate (o ridurre il miss rate )?
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Per ridurre le miss del primo tipo bisognerebbe aumentare la dimensione della linea in
modo da diminuire la probabilità di non avere il dato sulla cache. Se però la dimensione
si aumenta troppo si rischia di prendere troppi dati inutili per la limitata località spaziale,
provocando un initile impiego della memoria ed un inutile lungo tempo di line fill.
Per limitare le miss del secondo tipo converrebbe aumentare la associatività e per le
terze nulla da fare se non aumentare la dimensione della cache.
In realtà i problemi sono molto complessi e negli ultimi dieci anni sono state studiate
molte soluzioni alternative per diminuire il miss rate senza aumentare l’hit time o il miss
time. Si veda per questo il testo di Hennessy Patterson.
ESERCIZIO
Si deve eseguire un programma con un ciclo di 10 iterazioni; in ogni ciclo si devono
leggere le variabili var1,var2, var3 e var4 che sono allocate in memoria agli indirizzi
rispettivamente F000A023, F000A021, A000A022, F000A025.
a) Con uno spazio di indirizzamento a 32 bit ed una cache direct mapped con linee
di 16B di dati e di capacità di 1Mbyte, quante miss e di che tipo si verificano?
b) E se la cache è a 2 vie associative?
c) E se la cache è come a) ma con 32 B di dimensione di Linea?
d) E se è come b) e c)?
Soluzione a) Innanzitutto la cache ha 256 K linee . Quindi ha NB=4, Ni=18 e NT=10.
Perciò
Tag Index Offset
Var1 1111000000 000000101000000010 0011 Miss compulsory
Var2 1111000000 000000101000000010 0001 Hit
Var3 1010000000 000000101000000010 0010 Miss compulsory
E rimpiazza la precedente stesso index
Var4 1111000000 000000101000000010 0011 Miss conflict (sarebbe stata in cache se non fosse stata rimpiazzata da
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
var3)
Dalla tabella si vede che tutte e 4 le variabili hanno lo stesso index ma non lo stesso tag.
Var1,var2 e var4 sono sulla stessa linea ma la linea viene rimpiazzata a causa di var3
Perciò
1° iterazione 3 miss e 1 hit 2 compulsory e 1 conflict
2° alla 10° iterazione 2h (var1 e var2) e 2 miss di conflitto
Totale 21 miss e 19 hit; come cambia negli altri casi?
MISS IN SCRITTURA
Quello che è stato visto fino ad esso riguarda la lettura. Cosa succede invece in caso di
scrittura? Esistono due possibili strategie in caso di hit. Se il dato da scrivere è già
presente sulla cache:
write-back è la strategia per cui la scrittura avviene solo al livello più alto della
gerarchia e viene copiato nei livelli più bassi solo se la linea viene rimpiazzata o al
termine della esecuzione del task ( o quando richiesto dal sistema operativo). È il
metodo più efficiente dal punto di vista del tempo di accesso
write through: è la strategia per cui ad ogni scrittura il dato viene scritto in tutti i
livelli della gerarchia.
La tecnica WB è certamente la più efficiente ma può creare problemi di coerenza dei dati
nella gerarchia perchè per un certo periodo di tempo i dati scritti sulla cache non sono
consistenti con i dati presenti nei livelli inferiori della gerarchia. Ciò crea problemi negli
ambienti multiprocessore o più semplicemente nei sistemi multi master in cui altre unità
logiche possono diventare master del bus (ad esempio il Direct Memory Acess Controller
si veda capitoli successivi) perchè i dati nella memoria non sono gli ultimi. Esistono
strategie per ovviare a questi inconvenienti con protocolli di controllo complessi come il
MESI . Si veda il corso di sistemi di Elaborazione Multimediali.
I quattro stati presentati raffigurano la modalità con cui si trovano i dati in
quello specifico momento ed in quella determinata memoria cache:
• Modified: indica l’avvenuta modifica della linea di cache in una sua parte;
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
•Exclusive: legato al concetto di livelli multipli di memoria cache indica nello specifico la
concordanza tra la linea corrente e quella presente nel livello inferiore (verso la me
moria centrale) che può a sua volta risultare modificata rispetto ad un livello successi
vo;
•Shared: in parte sfruttato nel contesto di livelli multipli di cache ma soprattutto utili
zzato nel caso di processori multipli garantisce la coerenza tra la linea corrente e qu
ella nel livello successivo, e indica che al linea e’ condivisa ma mai modificata.
Fig. 16 protocollo MESI
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Il protocollo mesi si impiega in caso di uso di write back, forzando ogni linea ad essere
vista anche da altri processori (snooping degli indirizzi) e se i l dato a cui si deve accedere
e’ presente anche in una altra cache , il protocollo forza a modificare lo stato della linea
anche degli altri processori ( in shared se e’ uan richiesta in lettura, in invalid se e’ di
scrittura)
.. per dettagli si veda il simulatore
https://www.cs.tcd.ie/Jeremy.Jones/vivio/caches/MESIHelp.htm
Nel caso di miss, ossia se il dato non è presente in memoria i sistemi che adottano la
politica di wT di solito usano una politica chiamata write allocate ossia il dato viene
prima allocato sulla cache e poi si applica il WB. I sistemi che impiegano invece la politica
WT in caso di miss usano una politica write not allocate in cui i dati non vengono scritti
sulla cache.
Si ricorda che I processori hanno tutti ormai cache divise in
cache dati
cache di codice
per avere l’accesso contemporaneo al codice(fetch) e ai dati (ld/st). Ciò che è stato detto
vale per entrambe le cache, anche se la parte di scrittura vale solo epr la cache di dati.
ESERCIZIO :
Un processore a 16 bit di dati e 24 bit di indirizzo ha una cache direct mapped di
16KByte. Ogni linea della cache ha lunghezza 2 PAROLE. Si deve:
1)Scrivere le dimensioni di tag, index e offset.
2)Si supponga che la cache sia inizialmente vuota e che debbano essere letti in
sequenza i dati A,B,C,D,E,F,G,H i cui indirizzi in memoria sono indicati in tabella.
a) Indicare quali dati provocano una sostituzione di un dato in cache e che dato
viene sostituito
b) Indicare (possibilmente con uno schema) quali dati saranno in cache alla fine e
in che posizione della cache.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
c) Indicare quali dati generano una miss (indicando se di tipo obbligatorio)e quali
una hit.
Dato Indirizzo
A 000000H
B 000001H
C 000030H
D 004000H
E 004003H
F 000002H
G FF8033H
H 000031H
6.10 CENNI SULLA MEMORIA VIRTUALE
Come e’ detto la memoria centrale e’ considerata dalla CPU come una memoria non
gerarchica a cui accedere in lettura o in scrittura con un indirizzamento diretto. Nel caso
di architettura gerarchica un modulo hardware si prende cura di utilizzare parte
dell’indirizzo per verificare se il dato si trova in livelli piu’ alti della gerarchia.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
La CPU eseguendo il programma suppone di avere tutto lo spazio di indirizzamento a
disposizione ma si sa che la memoria fisica puo’ essere di dimensioni assai minori.
In assenza di gerarchia come avviene nei sistemi embedded la CPU non puo’ accedere
agli indirizzi dove non c’e’ memoria fisica.
Nei sistemi con gerarchia la memoria centrale fisica e’ usata come “cache” della
memoria virtualmente presente e realizzata con memoria di massa (normalmente l’hard
disk).
Percio’ l’indirizzo che finisce verso la memoria centrale deve invece essere utilizzato
come puntatore per vedere se il dato si trova davvero in memoria centrale o e’ invece
nella memoria virtuale.
Il meccanismo di accesso non avviene in questo modo con una associazione del tag ma
attraverso una funzione di mapping. Ossia l’indirizzo che a questo punto e’ solo
considerato un indirizzo virtuale viene sempre visto come diviso in due parti: la parte
piu’ bassa indica il byte di partenza all’interno del blocco. Il blocco si chiama pagina e
l’allocazione delle pagine e’ fully associative in memoria centrale. Le pagine attualmente
sono di dimensioni variabili dipendenti dai sistemi operativi di 4K a 4Mbyte o piu’. Se ad
esempio la pagina e’ di 4Kbyte i primi 12 bit sono considerati di pagina e i 20 bit rimasti
sono considerati di VPN Virtual Page Number e devono essere trasformati in PPN
Physical Page Number attraverso la traduzione.
Attualmente la traduzione viene attuata attraverso l’accesso ad una Page Table, ossia
ad una tabella che si trova in memoria e che contiene in ogni riga la corrispondenza tra
indirizzo virtuale ed indirizzo fisico con bit di stato che (oltre alla protezione e a altre
informazioni) indicano se la pagina si trova in memoria. Percio’ per accedere ad un dato
con una istruzione assembler di lettura o scrittura, l’indirizzo va in cache di 1° 2° etc
livello in caso di miss l’indirizzo prima di andare in memoria viene usato come puntatore
in una tabella e trasformato in indirizzo fisico per accedere alla memoria. Se la pagina
non e’ in memoria centrale la miss non e’ gestita in hardware ma in software dal sistema
operativo che attraverso una eccezione di page fault va in memoria di massa a prendere
la pagina e la copia in uno spazio libero della memoria centrale oin alternativa decide
quale pagina rimpiazzare con politica LRU.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Fig.17 traduzione nella tabelle delle pagine.
Senza volere entrare troppo nei dettagli si ricorda che questo meccanismo e’ da una
parte assai efficiente perche’ per la località dei programmi la maggior parte dei dati e dei
codici si trovano su poche pagine in memoria, ma dall’altra il meccanismo di traduzione
richiede che per accedere ad un dato in memoria si deve di fatto accedere alla memoria
2 volte, una per la traduzione dell’indirizzo e una per l’accesso vero e proprio. Per questo
le CPU che lavorano con la memoria virtuale possiedono una piccola cache totalmente
associativa chiamata TLB.
Per rendere più veloce l'accesso alle pagine ( anche la tabella delle pagine e' in memoria)
si usa quinidi il TLB Translation lookaside buffer: una cache della tabella delle pagine. Se
il tag e’ nel TLB, viene preso l’indirizzo della pagina direttamente, altrimenti si va alla
tabella delle pagine in memoria che puo’ puntare alla memoria centrale o di massa (se
page fault). Si veda la figura che segue.
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
Fig.17 Pagine e TLB.
Nello schema ( dove manca la cache L3) si vede la gerarchia di memoria come avviene
ora. La CPU scambia i dati tra il register file e la cache di primo livello sempre divisa in I
cache e D cache, se non trova i dati passa alla ceche di livello maggiore e alla memoria;
si usacla cache TLB per trasformare indirizzo virtuale in fisico; se si ha una Miss nel TLB il
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
mapping tar VPN e PPN avviene nella Page table che e’ in memoria; se la pagina non e’ in
memoria si reperisce nella memoria virtuale.
I livelli di gerarchia di cache nel icore7.
Qualche nota sul TLB nel core 7
For many years now, processors have been working not with physical memory
addresses, but with virtual addresses. Among other advantages, this approach lets more memory be allocated to a program than the computer actually has,
keeping only the data necessary at a given moment in actual physical memory with the rest remaining on the hard disk. This means that for each memory access a virtual address has to be translated into a physical address, and to do
that an enormous table is put in charge of keeping track of the correspondences. The problem is that this table gets so large that it can’t be stored on-chip—it’s placed in main memory, and can even be paged (part of the table can be absent
from memory and itself kept on the hard disk). If this translation stage were necessary at each memory access, it would make access much too slow. As a result, engineers returned to the principle of physical
addressing by adding a small cache memory directly on the processor that stored the correspondences for a few recently accessed addresses. This cache memory
is called a Translation Lookaside Buffer (TLB). Intel has completely revamped the operation of the TLB in their new architecture. Up until now, the Core 2 has used a level 1 TLB that is extremely small (16 entries) but also very fast for loads
only, and a larger level 2 TLB (256 entries) that handled loads missed in the level 1 TLB, as well as stores. Nehalem now has a true two-level TLB: the first level of TLB is shared between
data and instructions. The level 1 data TLB now stores 64 entries for small pages
Calcolatori Elettronici
Prof. R. Cucchiara- Calcolatori Elettronici A -Dipartimento di Ingegneria “Enzo Ferrari”
(4K) or 32 for large pages (2M/4M), while the level 1 instruction TLB stores 128
entries for small pages (the same as with Core 2) and seven for large pages. The second level is a unified cache that can store up to 512 entries and operates only with small pages. The purpose of this improvement is to increase the
performance of applications that use large sets of data. As with the introduction of two-level branch predictors, this is further evidence of the architecture’s server orientation.
In questo sito http://www.7-cpu.com/cpu/SandyBridge.html si possono trovare alcuni
dati sui ritardi e le latenze nell’accesso alle cache e al TLB con il core I 5, a seconda delle
dimensioni di pagina, e quindi a seconda delle scelte del Sistema operative.