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