• Non ci sono risultati.

Università degli Studi di Udine

N/A
N/A
Protected

Academic year: 2021

Condividi "Università degli Studi di Udine"

Copied!
25
0
0

Testo completo

(1)

FONDAMENTI DI INFORMATICA

Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria

Università degli Studi di Udine

Memoria cache, interrupt e DMA

(2)

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.

(3)

Memoria cache

(4)

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

(5)

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

(6)

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)

(7)

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

(8)

Mappatura diretta

linea k

cache

memoria

linea k

linea k

linea k

blocco 0

blocco 1

blocco 2

(9)

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

(10)

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

(11)

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

(12)

IB IL IW

TAG RAM DATA RAM

compar.

OE SEL

OE SEL

compar.

(13)

• 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

(14)

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)

(15)

Interrupt e DMA

(16)

Il problema della gestionde dell’I/O

• Le operazioni di input/output sono asincrone rispetto alla CPU

• Due approcci:

– polling

– interrupt

(17)

LOOP: INB R1, 0001 TSTI 0001

JMPNZ LOOP

Polling

• Il programma esegue un ciclo di attesa:

• Limitata efficienza

• Incompatibile con il multitasking

(18)

• 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

segnale di interrupt

(19)

Esempio

t

CPU

stampante

programma principale

programma principale

programma principale

routine di servizio

(invio di 1 carattere alla stampante)

stampa stampa stampa stampa

La stampante segnala alla CPU di essere

pronta a ricevere un nuovo carattere

(20)

Gestione dell’interrupt

• Salvare il program counter nello stack

• Salto alla routine di servizio

• Salvataggio dei registri e dello stato del

processore (la cosiddetta PSW - Processor Status Word)

• Eseguire l’operazione di I/O

• Ripristinare lo stato dei registri e del processore

• Ripristinare il valore del program counter

(21)

Mascheramento dell’interrupt

• La chiamata ad una routine di interrupt normalmente attiva un flip-flop che

disabilita la ricezione dell’interrupt mentre si sta ancora servendo il precedente

• Esiste però quasi sempre almeno una linea di interrupt “non mascherabile” per le emergenze (es. caduta di

alimentazione)

(22)

Vettori di interrupt

• Permettono di gestire più periferiche

• Due approcci:

– linee di richieste indipendenti

– controller esterno

(23)

Linee di richieste indipendenti

CPU

...

INT 0 INT 1

arbi tr o di priorità

address register

CALL ROUTINE 0 CALL ROUTINE 1 CALL ROUTINE 2

CALL ROUTINE i

... INT N

INT 2

(24)

Controller esterno

• I dispositivi vengono gestiti da un sistema esterno:

– La CPU riceve il segnale di interrupt

– La CPU segnala al controller esterno che sta eseguendo un ciclo di interruzione

– Il controller seleziona la periferica da

servire e trasmette alla CPU, mediante il bus dati, il “selettore di interruzione”

(l’informazione di quale periferica è stata

(25)

Direct Memory Access (DMA)

• Tecnica adatta per periferiche veloci

• Prevede il trasferimento diretto di dati (eventualmente a blocchi) tra la

periferica e la memoria, senza eseguire routine di interrupt

• Richiede un DMA controller esterno

Riferimenti

Documenti correlati

Inoltre, quando l’unità centrale richiede l’accesso a una locazione di memoria virtuale non presente in una cella di memoria reale, si rende necessario effettuare

Il sistema operativo tiene traccia sull’uso dei blocchi di memoria (libero, occupato e a chi assegnato) mediante una tabella dei blocchi Quando un nuovo processo richiede

Le memorie di massa servono per immagazzinare dati e programmi e si dividono in hard disk (dischi rigidi o fissi), floppy disk (dischi flessibili e rimovibili), CD ROM (compact

 Numero di pagina (p) – usato come indice nella tabella delle pagine che contiene l’indirizzo di base di ogni frame nella memoria fisica.  Spiazzamento nella pagina (d) –

O., individua una area della memoria centrale che può contenere in locazioni consecutive la sequenza di istruzioni e dati del programma da caricare e fissa in K il primo indirizzo

• Quando si legge nella page table l'indirizzo della pagina, questo può essere marcato invalido (bit aggiuntivi oltra all’indirizzo di pagina in memoria fisica). • Ciò significa

3. il microprogramma di una unità cache completamente associativa controlla che il blocco di memoria principale riferito sia attualmente allocato nel blocco di cache il

– Write-non-allocate: la linea non viene portata in cache (viene solo aggiornata la memoria centrale). Ha senso in considerazione del