Estratto del documento

appuntiDiIngegneria

Architettura delle

Memorie

Sommario

1.1. Architettura delle Memorie ...............................................................................................................2

1.1.1. Memorie Cache .............................................................................................................................7

1.1.2. Memoria RAM ............................................................................................................................. 12

1.1.2.1. Correzione degli Errori nelle RAM ............................................................................................ 19

1.1.3. Memoria Secondaria ................................................................................................................... 22

1.1.3.1. Dischi Magnetici ...................................................................................................................... 22

1.1.3.2. Dischi Magnetici RAID .............................................................................................................. 27

1.1.3.3. Dischi Ottici ............................................................................................................................. 29

1.1.3.4. Memorie Flash......................................................................................................................... 33

1.2. Gestione della Memoria .................................................................................................................. 37

1.2.1. Monoprogrammazione ................................................................................................................ 37

1.2.2. Multiprogrammazione a Partizioni Fisse ...................................................................................... 38

1.2.3. Swapping..................................................................................................................................... 39

1.2.4. Memoria Virtuale ........................................................................................................................ 41

1.2.4.1. Memoria Virtuale con Paginazione .......................................................................................... 41

1.2.4.2. Algoritmi di Sostituzione dei Blocchi ........................................................................................ 46

1.2.4.3. Memoria Virtuale con Segmentazione ..................................................................................... 52

1.2.4.4. Segmentazione con Paginazione .............................................................................................. 53

1

1.1. Architettura delle Memorie

Il Processore porta fuori dal suo chip un certo numero di linee per accedere alla Memoria, ad

32

2

esempio il MIPS essendo un Processore a 32 bit, dispone di 32 linee per indirizzare locazioni in

memoria. In realtà di solito si parla soltanto di “Memoria” e non di “Memoria Fisica” perché i

programmi Assembly non tengono conto di quanta memoria essi hanno a disposizione sulla

macchina, ma solo dello spazio di indirizzamento del programma (ad esempio se il Processore è a

32 bit essi assumono di avere a disposizione 4GB di memoria anche se in realtà la RAM è di 2 GB,

soltanto le parti del programma o del file al momento necessarie vengono memorizzate nella

memoria centrale del computer; il resto è immagazzinato sul disco fisso fino a che non si renda

necessario il suo caricamento sulla RAM), questo è il Principio della Memoria Virtuale. La

tecnologia ha consentito di realizzare CPU sempre più veloci, a partire dal 2006 sono stati messi

sul mercato processori con frequenza di clock superiore ai 3GHz. Purtroppo le memorie non sono

così veloci, cioè non hanno tempi di accesso paragonabili al periodo di clock delle CPU attuali. Le

prestazioni delle CPU non devono essere troppo negativamente influenzate dal tempo di accesso

alle memorie, in aiuto al progettista viene la proprietà di località spaziale e temporale esibita dai

programmi:

 Principio di Località Temporale: se il programma fa riferimento ad un dato in memoria,

probabilmente entro breve tempo farà riferimento allo stesso dato. Per tale motivo

conviene copiare questo dato dalla RAM alle caches.

 Principio di Località Spaziale: se il programma fa riferimento ad un dato in memoria,

probabilmente entro breve tempo farà riferimento anche ad altri dati i cui indirizzi sono

vicini a quello del dato riferito. Per tale motivo conviene copiare dalla RAM alla cache non

solo il dato riferito, ma un intero blocco di dati (cioè anche i dati vicini).

Idealmente si desidera avere una memoria fisica centrale che sia grandissima (almeno quanto

tutto lo spazio di indirizzamento dei programmi), poco costosa, non volatile e velocissima, ed a

questa si vorrebbe collegare direttamente il Processore. Non esiste una tecnologia tale da

realizzare una Memoria Fisica con queste caratteristiche, per tale motivo si costruisce una

Gerarchia di Memorie che comprende tutta una serie di memorie esterne ed interne al

Processore: 2

Per soddisfare i principi di località spaziale e temporale i dati più utilizzati vengono messi nei posti

più facilmente e velocemente accessibili dal Processore, mentre i meno utilizzati vengono messi

nei posti che richiedono un tempo di accesso maggiore, e si utilizza un’allocazione dinamica per

gestire al meglio gli spazi spostando automaticamente i dati tra i vari livelli. Questa politica di

gestione tende a mimare una memoria che abbia:

 i tempi di accesso della più veloce,

 le dimensioni della maggiore,

 i costi della più economica.

Questa politica prende anche il nome di regola 90-10: il programma trascorre il 90% del suo tempo

nello stesso spazio di indirizzamento usando gli stessi dati (si pensino ad esempio a cicli e chiamate

a sottoprogrammi) che rappresentano soltanto il 10% dell’intero programma. Più il livello è vicino

al processore, più è piccolo e più è veloce; contiene un sottoinsieme dei dati del livello sottostante

(di solito quelli usati più recentemente), e contiene tutti i dati contenuti nei livelli soprastanti. Il

livello più basso (il disco) contiene tutti i dati. I parametri che classificano le prestazioni di una

memoria sono i seguenti:

Tempo di accesso ta: indica quanto tempo occorre al Processore per leggere/scrivere un

dato in memoria;

Capacità di Memoria s: indica quanto è capiente la memoria;

Costo per byte c: indica il costo della memoria in funzione dello spazio utilizzato sul chip;

Banda di trasferimento b: indica quanti dati la memoria è in grado di trasferire al

Processore in una unità di tempo;

Larghezza Bus Dati p: indica quanti dati il processore riesce a leggere

contemporaneamente (è il livello di Parallelismo della memoria);

Volatilità: indica la possibilità di mantenere i dati in memoria anche in assenza di

alimentazione. Una Memoria Volatile necessita dell'alimentazione elettrica continua al fine

di mantenere memorizzate le informazioni (vuol dire che spegnendo il computer si

perdono i dati).

Il livello più alto della gerarchia è costituito dai Registri della CPU, che sono molto piccoli (pochi

bit), volatili, ma estremamente costosi e veloci, in quanto essi sono integrati direttamente nella

CPU: qui dentro vengono memorizzati i dati utilizzati per processare una certa istruzione

(operandi, indirizzi, istruzioni, flags, etc). Dal punto di vista tecnologico i registri sono delle

aggregazioni di flip-flop. 3

Scendendo di livello ci sono le Memorie Cache, che sono delle memorie più piccole (pochi MB) e

veloci della RAM, volatili, ma molto più costose, che negli ultimi anni sono in forte sviluppo (infatti

la grandezza delle caches è diventato un importante parametro di prestazione di un elaboratore).

Si utilizzano le caches per aumentare le prestazioni in termini di velocità del Processore, in quanto

qui dentro vengono memorizzati i blocchi di dati della RAM che sono più frequentemente e

recentemente utilizzati dai programmi in esecuzione. Dal punto di vista tecnologico le caches

utilizzano delle celle di memoria statiche elettronicamente, vuol dire che a differenza della RAM

non hanno bisogno di fare un Refresh continuo per mantenere scritta l’informazione, ma il costo

tecnologico di tale vantaggio è che invece di utilizzare un singolo transistor per cella (come per le

RAM) occorrono ben 6 transistor per cella. Ciò vuol dire che a parità di spazio sul silicio (cioè sul

chip), con le caches si riescono a realizzare memorie più piccole. Anche le RAM sui microcontrollori

PIC e Atmel di Arduino sono realizzare con questa tecnologia. Possono esistere diversi livelli di

caches, alcuni dei quali potrebbero essere integrati direttamente nella CPU, altri esterni ad essa.

Scendendo ancora di livello è possibile trovare la RAM, che è una memoria volatile abbastanza

grande (fino a decine di GB) rispetto alle caches (anche se non necessariamente quanto lo spazio

di indirizzamento dei programmi, ma in tal caso viene in aiuto il Principio della Memoria Virtuale),

ma non molto veloce. Dal punto di vista tecnologico la RAM utilizza delle celle di memoria

dinamiche elettronicamente, cioè che hanno bisogno di un un Refresh continuo per mantenere

scritta l’informazione in essa: la cella elementare della RAM è composta da un transistor ed un

condensatore, e scrivere nella RAM vuol dire semplicemente caricare questo condensatore, il

quale però tenderà con il tempo a scaricarsi, allora periodicamente la RAM deve riscrivere il bit in

memoria ricaricando il condensatore per evitare che i dati si perdano. Durante questi continui

refresh il processore non può utilizzare la RAM, e quindi viene rallentato ancora di più: vuol dire

che l’esecuzione di istruzioni load e store rallenterebbe notevolmente il Processore, per questo

motivo esso sfrutta la caches per evitare di perdere la maggior parte del tempo in attesa di dati

dalla memoria.

Scendendo ancora di livello è possibile trovare le Memorie Secondarie (Disco), che sono delle

memorie molto capienti (da centinaia di GB fino a qualche TB), non volatili, molto meno costose

rispetto alle RAM, ma anche molto più lente: il programma in esecuzione tende ad essere caricato

interamente nella RAM, qualora blocchi di esso non entrassero nella RAM il programma dovrà

effettuare una lettura sul disco. Siccome l’obiettivo è mantenere in maniera permanente le

informazioni, le tecnologie utilizzate sono basate sul magnetismo e sui raggi laser (dischi ottici).

Siccome esse raccolgono una quantità di dati enorme rispetto alla RAM vengono anche chiamate

Memorie di Massa, ed esse possono essere di diversi tipi: Dischi Magnetici (Hard Disk), Floppy

Disk, Dischi Ottici (CD-ROM e DVD-ROM) e Memorie Flash (Chiavi USB, Micro SD, Hard Disk SSD).

Il livello più basso della gerarchia è costituito dai Nastri Magnetici, che sono delle memorie enormi

(oltre i TB) utilizzate in genere per memorizzare interi archivi, ma estremamente lente. 4

Più genericamente, si distinguono due memorie negli elaboratori:

 Memoria Primaria: lavora a più diretto contatto con il processore, costituita

fondamentalmente da memoria RAM, memoria ROM, memoria Cache, e registri.

 Memoria Secondaria: non lavora a diretto contatto con il processore, costituita

fondamentalmente dagli hard disks, ma anche supporti rimovibili come floppy disk, CD,

DVD, nastri magnetici, memorie flash di ogni tipo ed altro ancora.

Oltre alla RAM, che può essere di diversi tipi (SRAM, DRAM, SDRAM, DDR-SDRAM), ci sono anche

le Memorie ROM, che si differenziano per diversi punti rispetto alle RAM:

La ROM (Read Only Memory) è una memoria elettronica a sola lettura non volatile, a

differenza della RAM che è accessibile in lettura e in scrittura;

La ROM è non volatile, deve mantenere i dati anche quando si spegne il Processore perché

al suo interno contiene il software necessario all’avviamento del Sistema Operativo (fase di

bootstrap) dell’elaboratore, che prende il nome di BIOS (Basic Input-Output System), che a

partire dal 2010 è stato progressivamente sostituito da UEFI (Unified Extensible Firmware

Interface). In genere nelle ROM i dati sono inseriti dal produttore e non sono modificabili

dall’utente.

Dato che le ROM sono molto più lente rispetto alle memorie di tipo RAM (una ROM ha un

tempo di accesso di circa 150 ns mentre una memoria di tipo SDRAM ha un tempo di

accesso di circa 10 ns), le istruzioni contenute nella ROM sono talvolta copiate nella RAM

all'avvio, si parla allora di shadowing.

Il contenuto di una ROM può essere però modificato con diverse tecniche, in fase di

progettazione, prototipazione o costruzione. Oppure, per talune applicazioni, il contenuto

della memoria può essere aggiornato anche quando il componente è in esercizio.

La ROM è più precisamente un dispositivo logico programmabile, poiché dato il suo

elevatissimo costo di costruzione, conviene dare la possibilità agli utilizzatori di

programmare la ROM attraverso una serie di segnali elettrici, che andranno a

“programmare” il dispositivo bruciando una serie di fusibili in modo da realizzare una

5

funzione booleana desiderata (i fusibili così bruciati corrispondono a degli 0, gli altri a degli

1). Si parla in tal caso di PROM (Programmable ROM).

Una evoluzione delle PROM è la EPROM (Erasable Programmable Read Only Memory), che

permette di cancellare totalmente il contenuto della memoria tramite raggi ultravioletti

per un numero limitato ma consistente di volte in modo tale da riprogrammare il

contenuto. Tale evoluzione ha permesso di superare la limitazione delle PROM che non

permetteva di modificare il contenuto di una PROM una volta che essa era stata

programmata. Ovviamente, qualsiasi modifica operata determina sostanziali modifiche nel

funzionamento del computer, per cui la stessa non può essere oggetto di improvvisazione

e deve essere affidata soltanto ad utenti esperti.

Tuttavia nelle EPROM non era molto semplice cancellare il contenuto di una ROM da parte

di “normali utenti informatici” in quanto tale operazione necessitava di una rimozione del

chip dalla scheda su cui era assemblato per poter esporre esso a radiazioni UV. Per tale

motivo un ulteriore evoluzione delle EPROM sono state le EEPROM (Electrically Erasable

and Programmable Read Only Memory) che prevedono di cancellare il contenuto della

ROM elettricamente (cioè mediante segnali elettrici, allo stesso modo di come esse

vengono programmate/scritte), senza quindi dover smontare il chip dalla scheda (cioè

possono essere cancellate anche quando sono poste nel computer), addirittura spesso è

possibile cancellare e riprogrammare solamente alcuni settori della EEPROM, cosa che non

era fattibile con la EPROM.

Ulteriore variante delle EEPROM sono le memorie Flash, che sono sempre cancellabili e

riscrivibili elettricamente, ma per blocco. Esse sono molto simili alle DRAM perché

utilizzano un solo transistor per cella.

La tabella seguente effettua una comparazione fra queste tecnologie:

La memoria è semplicemente un grande vettore unidimensionale di “parole” o “celle”

(tipicamente bytes) in sequenza, dove ogni parola di memoria ha un indirizzo, (simile all’indice di

un vettore); ci sono tre diversi modi per accedere alla memoria, che differenzia le varie tipologie di

memoria indicate prima:

Memoria ad Accesso Casuale: è quello della RAM, il cui acronimo significa appunto

“Random Access Memory”. Tali memorie consentono di leggere e scrivere informazioni con

un tempo di accesso che risulta indipendente dalla locazione di memoria effettivamente

indirizzata. Anche la ROM è ad accesso casuale. 6

Memorie ad Accesso Semicasuale: possiedono come caratteristica il fatto che il tempo di

accesso è indipendente sia dalla locazione fisica dell’informazione sia dal particolare istante

in cui viene effettuato l’accesso. Alcuni esempi di memorie di questo tipo sono gli Hard

Disk e i CD-ROM.

Memorie ad Accesso Sequenziale: possiedono come caratteristica il fatto che i dati

vengono memorizzati in modo sequenziale nelle locazioni di memoria, quindi il tempo di

accesso dipende dalla locazione fisica. I Nastri sono degli esempi.

1.1.1. Memorie Cache

La cache è una memoria veloce e di piccole dimensioni posta fra la CPU e la memoria principale. Le

prestazioni della memoria cache dipendono anche dalla sua posizione rispetto alla CPU: è possibile

avere infatti le caches su scheda e le caches su chip. La presenza di una memoria cache sullo

stesso chip del processore rappresenta la soluzione che garantisce la maggiore efficienza, ma nei

sistemi più recenti sono presenti entrambe le soluzioni.

Il funzionamento è il seguente: un indirizzo fisico viene inviato dalla CPU, e la cache confronta la

parte rilevante dell'indirizzo: in caso di successo (cache hit) viene eseguita l’istruzione con il dato

letto dalla cache, mentre in caso di insuccesso (cache miss) la cache inizia la lettura da memoria

principale di dati che comprendono quello richiesto. Si analizzano i parametri che caratterizzano le

memorie caches:

 Block Size: per il principio di località spaziale i dati vengono trasferiti in blocco. Se il blocco

è troppo grande occorre un tempo maggiore per spostarlo dalla RAM alla Cache, mentre se

è troppo piccolo si rischia di non prendere tutto ciò che occorre per le elaborazioni

successive perdendo più tempo in seguito per ulteriori accessi (venendo meno al principio

di località temporale), per cui la scelta di questo parametro è fondamentale.

 Hit Time: tempo per leggere il dato nella Cache nel momento in cui è stato accertato che

esso è presente (cioè che una copia di esso è stata portata dalla RAM in precedenza).

Questo parametro si misura in tempi di clock, e l’ideale è che venga impiegato un singolo

colpo di clock ogni volta in maniera tale che questa lettura coincida con la fase di

Anteprima
Vedrai una selezione di 12 pagine su 54
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 1 Architettura delle Memorie (Parte 3 della Raccolta) Pag. 2
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 6
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 11
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 16
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 21
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 26
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 31
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 36
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 41
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 46
Anteprima di 12 pagg. su 54.
Scarica il documento per vederlo tutto.
Architettura delle Memorie (Parte 3 della Raccolta) Pag. 51
1 su 54
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher appuntiDiIngegneria94 di informazioni apprese con la frequenza delle lezioni di Architettura dei calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Campania "Luigi Vanvitelli" o del prof Venticinque Salvatore.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community