FONDAMENTI DI INFORMATICA
Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria
Università degli Studi di Udine
Memoria cache, interrupt e DMA
Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà dell’autore prof. Pier Luca Montessoro, Università degli Studi di Udine.
Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione.
Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte degli autori.
L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L’autore non assume alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell’informazione).
In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste
slide.
Memoria cache
Memoria cache
• L’idea risale agli anni ’60
• Dagli anni ’90 le memorie cache risiedono sul chip del microprocessore
Memoria centrale
CACHE
20-1000 volte più piccola
della RAM 5-20 volte più veloce
CPU
Miss e Hit
• La CPU genera l’indirizzo I e il comando di lettura
• Se il dato non è nella cache: MISS
– leggere il dato dalla memoria centrale – copiarlo in cache tenendo traccia
dell’indirizzo I, per i riferimenti futuri
• Se il dato è nella cache: HIT
Problemi
• Directory dei dati contenuti in base agli indirizzi di memoria
• Dimensione della cache e gestione in base al principio di località spaziale dei programmi
• Criterio di mappatura tra la posizione in
memoria centrale delle parole in memoria
centrale e in cache (cache completamente
associativa, a mappatura diretta, associativa
a più vie)
Mappatura diretta
• Capacità della cache: L = 2 l linee
• Linee di W = 2 w parole
(C = LxW parole nella cache)
• Memoria centrale di B = 2 b blocchi (ogni blocco delle stesse dimensioni della
cache)
• Indirizzo: IB b IL l IW w
Mappatura diretta
linea k
cache
memoria
linea k
linea k
linea k
blocco 0
blocco 1
blocco 2
Mappatura diretta
IB IL IW
TAG RAM DATA RAM
Linea per linea,
contiene il numero del blocco da cui
provengono
Linea per linea,
contiene copia delle parole di memoria
compar. hit/miss
alla CPU
OE SEL
Cache completamente associativa
• Ogni linea di memoria può essere copiata in qualsiasi posizione della cache
• CAM: Content Addressable Memory
• Ogni linea di memoria ha un proprio univoco indirizzo
– la TAG RAM ha L posizioni di b+l bit
• Nota: a seguito di un cache miss, bisogna
individuare la linea da riscrivere nella cache
Cache parzialmente associativa
• Detta anche associativa a più vie
• Prevede un funzionamento analogo alla
mappatura diretta, ma con più banchi di
cache in cui può trovarsi il dato
IB IL IW
TAG RAM DATA RAM
compar.
OE SELOE SEL
compar.
• Fortunatamente le scritture sono meno
frequenti delle letture (si pensi all’instruction fetch, alle scritture nei registri, ecc.)
• Due approcci
– scrittura immediata
si aggiorna la memoria centrale immediatamente (o quasi)
riduzione delle prestazioni – scrittura differita
si tiene traccia delle modifiche effettuate sul
contenuto della cache mediante un “dirty bit” per
ogni linea
Il problema del rimpiazzamento
• Analogie con la paginazione (v. sistemi operativi)
• Principali strategie:
– LRU (Least Recently Used) – FIFO (First-In First-Out)
– RAND (a caso)
Interrupt e DMA
Il problema della gestionde dell’I/O
• Le operazioni di input/output sono asincrone rispetto alla CPU
• Due approcci:
– polling
– interrupt
LOOP: INB R1, 0001 TSTI 0001
JMPNZ LOOP
Polling
• Il programma esegue un ciclo di attesa:
• Limitata efficienza
• Incompatibile con il multitasking
• Si basa su:
– segnale hardware che permette ai
dispositivi esterni di segnalare eventi alla CPU
– routine di servizio dell’interrupt attivata quando la CPU riceve la segnalazione
Address bus CPU
Control Unit
Arithmetic and Logic Unit PC
IR R0
R1
R15
Memoria Dispositivi di I/O
0000 0001 0002 0003 0004 0005 0006 0007.
..
.. SP . flags