Input/Output
Luca Orrù
1
SOMMARIO



Organizzazione di sistema
Trasferimento dati;
Gestione I/O.
Luca Orrù
2
Organizzazione di sistema
Luca Orrù
3
Tipi di bus



ABUS, Address Bus : insieme di linee su cui
la CPU scrive l’indirizzo del dispositivo a cui
intende accedere
DBUS, Data Bus : insieme di linee su cui
viene scritto il dato che deve essere trasferito
CBUS, Control Bus : insieme di linee che
controllano la comunicazione tra la CPU ed
i dispositivi periferici.
Luca Orrù
4
Comunicazione

Quando la CPU intende comunicare con un
dispositivo:
invia sull’ABUS l’indirizzo del dispositivo a cui
si intende accedere
 attiva i segnali opportuni sul CBUS
 legge/scrive dal/sul DBUS i dati trasferiti.

Luca Orrù
5
Comunicazione (cont)

L’instruction set contiene generalmente
istruzioni per trasferimento dati tra CPU e:
Memoria : MOV AC, [0x25]
 Dispositivi di Input/Output : OUT [0x25]


Il CBUS è composto da:
linee di controllo per la Memoria
 linee di controllo per l’Input/Output

Luca Orrù
6
Comunicazione (cont)
Luca Orrù
7
Ciclo di lettura da memoria
Luca Orrù
8
Ciclo di lettura da Input/Output
Luca Orrù
9
Spazio d’indirizzamento

Una CPU con n linee di indirizzo è in grado
di indirizzare 2n locazioni differenti: spazio
di indirizzamento

Lo spazio di indirizzamento può essere:

separato tra Memoria e I/O : I/O non memory
mapped o isolated I/O

condiviso tra Memoria e I/O : I/O memory
mapped.
Luca Orrù
10
I/O non Memory Mapped
Luca Orrù
11
I/O non memory mapped



Gli spazi d’indirizzamento per la memoria e per
le porte di I/O sono separati, e sono attivati
alternativamente da appositi segnali (ad esempio
IO/M)
Si aggiunge un bit agli n bit dell’indirizzamento
Per accedere all’I/O si devono utilizzare
apposite istruzioni ( IN e OUT) dove si specifica
l’indirizzo del periferico
OUT 070h, AL
 IN AL, 070h

Luca Orrù
12
I/O Memory Mapped
Luca Orrù
13
I/O Memory Mapped (cont)

La CPU usa l’istruzione MOV:
per trasferimenti con la Memoria;
 per trasferimenti col l’I/O;


È necessario avere un circuito che riconosca
l’indirizzo e abiliti Memoria o I/O.
Luca Orrù
14
I/O Memory Mapped (cont)
Luca Orrù
15
Trasferimento dati

La CPU deve trasferire N=10 word;
mov AC, #0x8E ; sorgente
loop: ldr AC ; DR<=AC; AR<=DR; DR<=M[AR]
out 0x2B
; {0x2B}<=DR
add AC, 0x01
; AC<=AC+1
cmp AC, 0xA2 ; AC==0xA2 ?
jne loop
; vai a loop se AC!=0xA2
Luca Orrù
16
Osservazione

Problema:
Si deve effettuare in modo ripetitivo la stessa
operazione;
 Il tempo speso per il fetch cycle è sprecato;


Soluzione:

adottare un circuito specializzato per trasferire
dati: DMA
Luca Orrù
17
Circuiteria DMA
Luca Orrù
18
DMA: funzionamento

Inizializzazione:
La CPU carica nei registri IOAR e DC l’indirizzo
dell’area di memoria ed il numero di parole da
trasferire
 La CPU informa inoltre il DMA controller della
direzione del trasferimento (da memoria a periferica
o viceversa )

Luca Orrù
19
DMA : funzionamento (cont)

Esecuzione del trasferimento:
il DMA Controller riceve una richiesta di
trasferimento da parte di una periferica
 Il DMA Controller invia un segnale di DMA Req
alla CPU.
 Quando la CPU giunge ad un punto di rilevamento
del segnale di DMA Req, rilascia il bus e attiva il
segnale di DMA Ack.
 Il DMA Controller inizia il trasferimento.
 Dopo il trasferimento di ciascuna parola, IOAR e
DC vengono aggiornati (IOAR++, DC--).

Luca Orrù
20
DMA funzionamento (cont)




Il DMA Controller può sospendere temporaneamente il
trasferimento disattivando DMA Request;
la CPU disattiva DMA Acknowledge, e riprende il
controllo del bus
Quando DC giunge a zero, il trasferimento termina.
Il DMA Controller segnala il termine del trasferimento
alla CPU (invia un Interrupt allaCPU)
Luca Orrù
21
DMA

Modalità di trasferimento possibili
 Burst transfer
 Cycle stealing
 Transparent DMA
Luca Orrù
22
Burst mode



Il DMA acquisisce il controllo del bus
Il DMA rilascia il bus solo quando ha terminato
il trasferimento
Vantaggio:


Il trasferimento avviene alla massima velocità
possibile
Svantaggio:

La CPU non può accedere al bus durante il
trasferimento.
Luca Orrù
23
Cycle stealing



Il dati sono trasferiti in piccoli blocchi
Il DMA controller diventa padrone del bus per
brevi istanti di tempo
Vantaggio:


la CPU non è bloccata per lunghi istanti di tempo
Svantaggi:

il trasferimento richiede più tempo.
Luca Orrù
24
Transparent DMA



Il DMA rileva quando la CPU non usa il bus
I trasferimenti hanno luogo solo quando la CPU
non sta usando il bus
Vantaggi:


il DMA non rallenta mai la CPU
Svantaggi:

è in media il metodo più lento.
Luca Orrù
25
Gestione I/O

Un dispositivo può richiamare l’attenzione della
CPU in due modi:
 Polling
 Interrupt
Luca Orrù
26
Polling



La CPU interroga periodicamente i dispositivi
Se il dispositivo interrogato ha richiesto servizio
viene servito
Vantaggio


semplice da realizzare
Svantaggio:

un dispositivo deve attendere il suo turno prima di
essere servito: elevata latenza
Luca Orrù
27
Interrupt




La CPU non interroga i dispositivi di I/O
Quando un dispositivo ha necessità di essere
servito attiva la richiesta di interrupt
Al termine dell’esecuzione della istruzione
corrente, la CPU riconosce la richiesta di
interrupt e la serve
Il servizio dell’interrupt avviene iniziando ad
„
eseguire la procedura di servizio dell’interrupt:
Interrupt Service Routine.
Luca Orrù
28
Identificazione del dispositivo


Più dispositivi possono richiedere un interrupt
„Per riconoscere il richiedente è possibile
utilizzare:
Linee di interrupt multiple
 Polling
 Interrupt vettorizzato

Luca Orrù
29
Linee multiple



La CPU possiede diversi piedini per le richieste
di Interrupt
Ogni periferica è collegata ad un diverso piedino„
È una soluzione impraticabile, poiché il numero
di periferiche è quasi sempre superiore a quello
dei piedini disponibili
Luca Orrù
30
Polling


Esiste un solo piedino per le richieste di
Interrupt
„Quando la CPU percepisce la richiesta, inizia a
scandire le parole di stato di tutte le periferiche
per individuare quella che ha fatto la richiesta.
Luca Orrù
31
Interrupt vettorizzato





Esiste un solo piedino per le richieste di Interrupt„
Un apposito circuito, Interrupt Controller, riceve le
richieste di interrupt, IRQ
Quando la CPU è pronta a servire la richiesta di interrupt
proveniente dall’ Interrupt Controller( INTREQ), invia un
segnale di INTACK
L’Interrupt Controller pone sul bus un codice di
identificazione del dispositivo che ha richiesto l’ Interrupt„
La CPU usa il codice per determinare l’indirizzo della
procedura di servizio, usandolo come indice per un
vettore degli indirizzi delle procedure di servizio (Interrupt
Vector Table)
Luca Orrù
32
Architettura
Luca Orrù
33
Interrupt vector table


È una tabella esistente nella memoria principale
(spesso a partire dall’indirizzo 00000)
Contiene, per ogni codice di Interrupt,
l’indirizzo della relativa Interrupt Service
Routine.
Luca Orrù
34
Priorità


Nei sistemi complessi a ciascun dispositivo di
I/O è associata una priorità
A fronte di richieste simultanee viene eseguita la
Interrupt Service Routine dell’I/O con priorità
maggiore.
Luca Orrù
35
Priorità (cont)



Se si usa il meccanismo delle linee di interrupt
multiple, è la CPU che riconosce l’I/O con
priorità più alta
Nel caso del polling, la CPU serve prima il
dispositivo che compare prima nella sequenza
con cui i dispositivi vengono interrogati
Nel caso dell’interrupt vettorizzato, si usa il
meccanismo del Daisy Chaining
Luca Orrù
36
Daisy Chaining



Ciascun I/O possiede una circuiteria che riceve
il segnale di INTACK e che può propagarlo in
uscita
Quando questo viene attivato, se il dispositivo
ha fatto richiesta di interrupt mette sul bus il suo
codice identificativo
Se non ha fatto richiesta, attiva il segnale di
INTACK in uscita
Luca Orrù
37
Daisy Chaining
Luca Orrù
38
Architettura estesa della CPU
Luca Orrù
39
Scarica

Input/Output