La memoria cache - Dipartimento di Informatica

La memoria cache
• Nello schema di funzionamento di un calcolatore
il processore continuamente preleva informazioni
ed istruzioni dalla memoria centrale e scrive in
essa informazioni
• La memoria centrale, il bus ed il processore
lavorano a velocità diverse
• La velocità complessiva è determinata dal
componente più lento
Informatica generale
La memoria cache
• Per accelerare questa interazione si impiega una memoria
ad alta velocità localizzata tra processore e memoria
centrale detta CACHE
• Se il processore ha bisogno di leggere un dato o
un’istruzione dalla memoria centrale la cerca prima nella
cache che è molto più veloce
• Se il dato o l`istruzione non si trovano memorizzati nella
cache allora il processore chiede alla memoria centrale di
fornire l’elemento richiesto
• Ci sono alcune tecniche per decidere cosa memorizzare
nella cache
Informatica generale
La memoria cache
• Le memoria cache sono realizzate con SRAM
(molto più veloci delle DRAM e molto più
costose)
• Si distinguono due livelli di memoria cache:
• Cache di livello 1 (L1) che è integrata nel chip del
microprocessore; capacità media di 256-512 KB
• Cache di livello 2 (L2) che di solito è esterna al chip
del microprocessore ma su circuiti molto veloci;
capacità fino ad 1MB
Informatica generale
Interazione tra processore, cache,
memorie e dispositivi di I/O
PROCESSORE
ALU
UC
CLOCK
L1
HARD DISK
MONITOR
L2
BUS
MEMORIA CENTRALE
LETTORE
CD_ROM
TASTIERA
Il Software
• L’hardware da solo non è sufficiente
funzionamento dell’elaboratore
• È necessario introdurre il software:
per
il
• un insieme di programmi che permettono di trasformare tanti
circuiti elettronici in un oggetto in grado di svolgere delle
funzioni di natura diversa
• Un programma è un insieme di istruzioni che il processore può
eseguire
• La proprietà fondamentale dei computer è il fatto di essere
programmabili
Informatica generale
Il Software
• Una programmazione diretta della macchina
hardware da parte degli utenti creerebbe delle
serie difficoltà
• l’utente dovrebbe conoscere l’organizzazione fisica
dell'elaboratore e il suo linguaggio macchina (il tipo di
istruzioni che il processore può eseguire);
• ogni programma dovrebbe essere scritto utilizzando
delle sequenze di bit (le istruzioni) ed ogni piccola
differenza hardware comporterebbe una riscrittura del
programma stesso
Informatica generale
• programmi molto complessi
(milioni di istruzioni)
Il Software
• Questo non è accettabile ed è necessario fornire
all’utente un meccanismo per:
• astrarre dall’organizzazione fisica della macchina;
• usare nello stesso modo, o comunque in modo molto
simile, macchine leggermente diverse dal punto di
vista hardware o, al limite, macchine con hardware
profondamente differente;
• avere un semplice linguaggio di interazione con la
macchina;
• avere un linguaggio semplice e ad alto livello per programmare la macchina;
• avere un insieme di programmi applicativi per
svolgere diversi compiti (elaborazione testi, grafica,
calcoli statistici, navigazione
in Internet, ecc.)
Informatica generale
Il Software
• Nei moderni sistemi di elaborazione questi obiettivi
vengono raggiunti grazie alla definizione di macchine
virtuali che vengono realizzate al di sopra della
macchina hardware reale
• Al di sopra della macchina hardware si crea un livello
software che realizza una macchina virtuale astratta con
le funzionalità desiderate e facile da utilizzare
• Questa macchina si dice virtuale in quanto essa non esiste
fisicamente ma viene realizzata mediante il software
(software di base)
Il Software di base
• L’utente interagisce solo con la macchina virtuale grazie
ad un opportuno linguaggio di comandi ad alto livello.
• Il termine “alto livello” si riferisce al fatto che
l’interazione avviene con comandi ad alto livello di
astrazione (semplificazione), ovvero, che sono
indipendenti dai dettagli della macchina hardware
• La macchina virtuale si preoccuperà della traduzione dei
comandi ad alto livello negli opportuni comandi che
realizzano la stessa funzione e che sono riconosciuti dalla
macchina hardware
Informatica generale
Il Software di base
• Possiamo vedere il software di base come ad
un insieme di programmi in linguaggio
macchina la cui esecuzione permette di creare
l'ambiente virtuale con cui l'utente si trova ad
interagire
• Il software di base fornisce un insieme finito di
comandi che la macchina è in grado di
eseguire
Informatica generale
Il Software di base: esempio
Esempio: supponiamo che l'utente voglia stampare un
file. A livello hardware questa operazione è complessa
e richiede operazioni di trasferimento dati dal disco alla
stampante (via memoria centrale)
La macchina virtuale creata dal software di base fornisce
all'utente un semplice comando di stampa:
> print file1
mediante il quale si può richiedere la stampa delle
informazioni contenute nel file di nome file1
Informatica generale
Il Software di base: esempio
• La macchina virtuale deve innanzitutto verificare
se si tratta di un comando valido
• Poi tradurlo nell’opportuna sequenza di comandi
a basso livello per la macchina fisica
• Una volta eseguito il comando, la macchina
virtuale si pone in attesa di un nuovo comando da
parte dell'utente
• Grazie a questo livello software si può astrarre
dalle caratteristiche fisiche della macchina
Informatica generale
Il Software di base
• Si può anche fare in modo che macchine differenti
siano usabili in modo simile: si tratta, infatti, di
costruire al di sopra delle diverse macchine fisiche
la stessa macchina virtuale
• Per ogni comando della macchina virtuale si
dovranno però avere diversi programmi di
traduzione, uno per ogni tipo di hardware
Informatica generale
Tipi di funzioni fornite dal
Software di base
• Configurazione e accensione macchina
• Gestione di informazione su memoria
secondaria
=> FILE SYSTEM
• Strumenti per accesso a tali informazioni
• Gestione delle risorse
• uso semplificato e astratto risorse per
utente, es. stampanti, dischi, nastri ...
• uso ottimale per sistema
Informatica generale
Tipi di funzioni fornite dal
Software di base
• Linguaggio di comandi astratto (semplice) per
l’interazione con il sistema
• Supporto per la comunicazione tra utenti e tra
elaboratori
• Supporto per programmi applicativi
• Linguaggi e ambienti di programmazione ad alto livello
Informatica generale
Il Sistema Operativo
L'insieme di programmi che realizza le funzionalità viste
in precedenza prende il nome di
SISTEMA OPERATIVO
• Il sistema operativo è la componente software
fondamentale di un computer
• È formato da un insieme di programmi che interagiscono
e cooperano tra di loro per realizzare due obiettivi
fondamentali:
• gestire efficientemente l'elaboratore e le sue periferiche,
cercando di sfruttare al massimo tutte le componenti hardware
• creare un ambiente virtuale per facilitare l'interazione uomoInformatica generale
macchina
Il Sistema Operativo: Esempio
Il Sistema Operativo: Esempio
Il Sistema Operativo: Esempio
Il Sistema Operativo: Esempio
• Le operazioni effettuate sembrano abbastanza semplici
ma …
• Provocano una serie di eventi in cui vengono coinvolte sia
risorse hardware che risorse software
• Il coordinamento e la gestione delle varie risorse viene
effettuato dal Sistema Operativo
• Il Sistema Operativo fornisce i servizi che sono necessari
a tutti gli altri programmi in esecuzione
Informatica generale
Il Sistema Operativo: Esempio
1. Per ogni carattere immesso tramite la tastiera
viene calcolato il codice ASCII corrispondente
2. Il codice viene memorizzato in un’area di
memoria riservata (buffer) e viene inviato un
segnale alla CPU (interrupt)
3. Quando la CPU riceve un interrupt dalla tastiera
attiva un programma chiamato terminal driver
4. Il terminal driver invia al controller del monitor
una copia del codice per visualizzare il carattere
corrispondente
Informatica generale
Il Sistema Operativo: Esempio
5. Il codice corrispondente al carattere “Enter” indica che
il comando immesso (date) è completo
6. Il terminal driver attiva un altro modulo chiamato
listener (perché attende le richieste provenienti dagli
utenti)
7. Il listener legge i caratteri dal buffer della tastiera,
riconosce quale comando viene richiesto, ricerca un
programma chiamato date, lo carica in memoria centrale
e lo attiva
Informatica generale
Il Sistema Operativo: Esempio
8. Il programma date “va a leggere” un “orologio”
(un contatore che tiene conto dello scorrere del
tempo) e passa l’informazione letta al terminal
driver attivandolo
9. Il terminal driver trasmette la data al monitor che
la visualizza
Informatica generale
Il Sistema Operativo: Esempio
Ognuno di questi eventi può essere descritto in
dettaglio, per esempio vediamo la fase 7:
• prima che il programma listener carichi il programma
date in memoria deve localizzare la “cartella” dove tale
comando si trova, ecc.
• La fase di caricamento del programma comprende una
fase di lettura dal disco rigido
Informatica generale
Esempio
dat
BUFFER
MEMORIA
CENTRALE
listener
directory manager
file manager
terminal driver
disk driver
Monitor
dat
BUFFER
Disco rigido
148.608.043.200.010
timer
Tastiera
Ogni carattere dato in input dalla tastiera viene
ricevuto dal terminal driver che lo invia al monitor per
la visualizzazione
Esempio
date<cr>
BUFFER
MEMORIA
CENTRALE
listener
directory manager
file manager
terminal driver
disk driver
Monitor
date<cr>
BUFFER
Disco rigido
148.608.043.200.020
timer
Tastiera
Quando viene immesso il carattere Enter <cr> il
terminal driver passa la stringa date al programma
listener che interpreta il comando
Esempio
BUFFER
MEMORIA
CENTRALE
listener
directory manager
file manager
terminal driver
disk driver
Monitor
BUFFER
Disco rigido
148.608.043.200.032
timer
Tastiera
Il listener richiede al directory manager di cercare (nella
directory dei comandi) date. Il programma directory manager
richiede al programma file manager, che a sua volta si avvale
del programma disk driver, di localizzare sul disco rigido il
programma date
Esempio
BUFFER
Monitor
BUFFER
Tastiera
MEMORIA
CENTRALE
date
listener
directory manager
file manager
terminal driver
disk driver
Disco rigido
148.608.043.200.045
timer
Quando il comando date è stato localizzato (è un file
eseguibile) il listener (mediante il file manager) lo
carica in memoria. Per fare questa operazione il file
manager utilizza il disk driver
Esempio
BUFFER
Monitor
BUFFER
Tastiera
MEMORIA
CENTRALE
date
listener
directory manager
file manager
terminal driver
disk driver
Disco rigido
timer
148.608.043.200.101
Il listener manda in esecuzione il programma date
che legge il timer ed effettua delle operazioni di
conversione per trasformare il valore letto nella data
del giorno
Esempio
11/02/99
BUFFER
Monitor
BUFFER
Tastiera
MEMORIA
CENTRALE
date
listener
directory manager
file manager
terminal driver
disk driver
Disco rigido
timer
148.608.043.200.104
Il programma date tramite il terminal driver visualizza
sul monitor la data
Il Sistema Operativo: esempio
Sebbene le operazioni che abbiamo preso in
esame “sembrino abbastanza semplici” e di uso
frequente esse provocano una serie di eventi e
azioni molto complesse e articolate
L’immissione di un semplice carattere (tramite
tastiera) può provocare l’esecuzione di una decina
(o anche più) di funzionalità del S.O.
Informatica generale