Luca Orrù 1 Input/Output. 2 SOMMARIO Organizzazione di sistema Trasferimento dati; Gestione I/O.

Post on 02-May-2015

215 views 0 download

Transcript of Luca Orrù 1 Input/Output. 2 SOMMARIO Organizzazione di sistema Trasferimento dati; Gestione I/O.

Luca Orrù 1

Input/OutputInput/Output

2Luca Orrù

SOMMARIOSOMMARIO

Organizzazione di sistema Trasferimento dati; Gestione I/O.

3Luca Orrù

Organizzazione di Organizzazione di sistemasistema

4Luca Orrù

Tipi di busTipi 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.

5Luca Orrù

ComunicazioneComunicazione

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.

6Luca Orrù

Comunicazione (cont)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

7Luca Orrù

Comunicazione (cont)Comunicazione (cont)

8Luca Orrù

Ciclo di lettura da Ciclo di lettura da memoriamemoria

9Luca Orrù

Ciclo di lettura da Ciclo di lettura da Input/OutputInput/Output

10Luca Orrù

Spazio d’indirizzamentoSpazio 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.

11Luca Orrù

I/O non Memory MappedI/O non Memory Mapped

I/O non memory mappedI/O non memory mapped

Gli spazi d’indirizzamento per la memoria e Gli spazi d’indirizzamento per la memoria e per le porte di I/O sono separati, e sono per le porte di I/O sono separati, e sono attivati alternativamente da appositi segnali attivati alternativamente da appositi segnali (ad esempio IO/M)(ad esempio IO/M)

Si aggiunge un bit agli n bit Si aggiunge un bit agli n bit dell’indirizzamentodell’indirizzamento

Per accedere all’I/O si devono utilizzare Per accedere all’I/O si devono utilizzare apposite istruzioni ( IN e OUT) dove si apposite istruzioni ( IN e OUT) dove si specifica l’indirizzo del perifericospecifica l’indirizzo del periferico OUT 070h, ALOUT 070h, AL IN AL, 070hIN AL, 070h

12Luca Orrù

13Luca Orrù

I/O Memory MappedI/O Memory Mapped

14Luca Orrù

I/O Memory Mapped I/O Memory Mapped (cont)(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.

15Luca Orrù

I/O Memory Mapped I/O Memory Mapped (cont)(cont)

16Luca Orrù

Trasferimento datiTrasferimento 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

17Luca Orrù

OsservazioneOsservazione

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

18Luca Orrù

Circuiteria DMACircuiteria DMA

19Luca Orrù

DMA: funzionamentoDMA: funzionamento

Inizializzazione: Inizializzazione: La CPU carica nei registri IOAR e DC La CPU carica nei registri IOAR e DC

l’indirizzo dell’area di memoria ed il l’indirizzo dell’area di memoria ed il numero di parole da trasferirenumero di parole da trasferire

La CPU informa inoltre il DMA La CPU informa inoltre il DMA controller della direzione del controller della direzione del trasferimento (da memoria a periferica trasferimento (da memoria a periferica o viceversa )o viceversa )

20Luca Orrù

DMA : funzionamento DMA : funzionamento (cont)(cont) Esecuzione del trasferimento:Esecuzione del trasferimento:

il DMA Controller riceve una richiesta di il DMA Controller riceve una richiesta di trasferimento da parte di una periferica trasferimento da parte di una periferica

Il DMA Controller invia un segnale di Il DMA Controller invia un segnale di DMA Req alla CPU.DMA Req alla CPU.

Quando la CPU giunge ad un punto di Quando la CPU giunge ad un punto di rilevamento del segnale di DMA Req, rilevamento del segnale di DMA Req, rilascia il bus e attiva il segnale di DMA rilascia il bus e attiva il segnale di DMA Ack.Ack.

Il DMA Controller inizia il trasferimento. Il DMA Controller inizia il trasferimento. Dopo il trasferimento di ciascuna parola, Dopo il trasferimento di ciascuna parola,

IOAR e DC vengono aggiornati (IOAR++, IOAR e DC vengono aggiornati (IOAR++, DC--). DC--).

21Luca Orrù

DMA funzionamento DMA funzionamento (cont)(cont)

Il DMA Controller può sospendere Il DMA Controller può sospendere temporaneamente il trasferimento temporaneamente il trasferimento disattivando DMA Request; disattivando DMA Request;

la CPU disattiva DMA Acknowledge, e la CPU disattiva DMA Acknowledge, e riprende il controllo del busriprende il controllo del bus

Quando DC giunge a zero, il Quando DC giunge a zero, il trasferimento termina.trasferimento termina.

Il DMA Controller segnala il termine del Il DMA Controller segnala il termine del trasferimento alla CPU (invia un Interrupt trasferimento alla CPU (invia un Interrupt allaCPU) allaCPU)

22Luca Orrù

DMADMA

Modalità di trasferimento possibiliModalità di trasferimento possibili Burst transferBurst transfer Cycle stealingCycle stealing Transparent DMATransparent DMA

23Luca Orrù

Burst modeBurst mode

Il DMA acquisisce il controllo del busIl DMA acquisisce il controllo del bus Il DMA rilascia il bus solo quando ha Il DMA rilascia il bus solo quando ha

terminato il trasferimentoterminato il trasferimento Vantaggio: Vantaggio:

Il trasferimento avviene alla massima Il trasferimento avviene alla massima velocità possibilevelocità possibile

Svantaggio: Svantaggio: La CPU non può accedere al bus durante La CPU non può accedere al bus durante

il trasferimento. il trasferimento.

24Luca Orrù

Cycle stealingCycle stealing

Il dati sono trasferiti in piccoli blocchiIl dati sono trasferiti in piccoli blocchi Il DMA controller diventa padrone del Il DMA controller diventa padrone del

bus per brevi istanti di tempobus per brevi istanti di tempo Vantaggio: Vantaggio:

la CPU non è bloccata per lunghi istanti la CPU non è bloccata per lunghi istanti di tempodi tempo

Svantaggi:Svantaggi: il trasferimento richiede più tempo. il trasferimento richiede più tempo.

25Luca Orrù

Transparent DMATransparent DMA

Il DMA rileva quando la CPU non Il DMA rileva quando la CPU non usa il bususa il bus

I trasferimenti hanno luogo solo I trasferimenti hanno luogo solo quando la CPU non sta usando il busquando la CPU non sta usando il bus

Vantaggi: Vantaggi: il DMA non rallenta mai la CPUil DMA non rallenta mai la CPU

Svantaggi:Svantaggi: è in media il metodo più lento. è in media il metodo più lento.

26Luca Orrù

Gestione I/OGestione I/O

Un dispositivo può richiamare Un dispositivo può richiamare l’attenzione della CPU in due modi:l’attenzione della CPU in due modi: PollingPolling InterruptInterrupt

27Luca Orrù

PollingPolling

La CPU interroga periodicamente i La CPU interroga periodicamente i dispositividispositivi

Se il dispositivo interrogato ha Se il dispositivo interrogato ha richiesto servizio viene servitorichiesto servizio viene servito

VantaggioVantaggio semplice da realizzaresemplice da realizzare

Svantaggio:Svantaggio: un dispositivo deve attendere il suo turno un dispositivo deve attendere il suo turno

prima di essere servito: elevata latenza prima di essere servito: elevata latenza

28Luca Orrù

InterruptInterrupt

La CPU non interroga i dispositivi di I/OLa CPU non interroga i dispositivi di I/O Quando un dispositivo ha necessità di Quando un dispositivo ha necessità di

essere servito attiva la richiesta di essere servito attiva la richiesta di interruptinterrupt

Al termine dell’esecuzione della istruzione Al termine dell’esecuzione della istruzione corrente, la CPU riconosce la richiesta di corrente, la CPU riconosce la richiesta di interrupt e la serveinterrupt e la serve

Il servizio dell’interrupt avviene iniziando �Il servizio dell’interrupt avviene iniziando �ad eseguire la procedura di servizio ad eseguire la procedura di servizio dell’interrupt: Interrupt Service Routine. dell’interrupt: Interrupt Service Routine.

29Luca Orrù

Identificazione del Identificazione del dispositivodispositivo

Più dispositivi possono richiedere un Più dispositivi possono richiedere un interruptinterrupt

„„Per riconoscere il richiedente è Per riconoscere il richiedente è possibile utilizzare:possibile utilizzare: Linee di interrupt multipleLinee di interrupt multiple PollingPolling Interrupt vettorizzato Interrupt vettorizzato

30Luca Orrù

Linee multipleLinee multiple

La CPU possiede diversi piedini per La CPU possiede diversi piedini per le richieste di Interruptle richieste di Interrupt

Ogni periferica è collegata ad un Ogni periferica è collegata ad un diverso piedino„diverso piedino„

È una soluzione impraticabile, È una soluzione impraticabile, poiché il numero di periferiche è poiché il numero di periferiche è quasi sempre superiore a quello dei quasi sempre superiore a quello dei piedini disponibilipiedini disponibili

31Luca Orrù

PollingPolling

Esiste un solo piedino per le Esiste un solo piedino per le richieste di Interruptrichieste di Interrupt

„„Quando la CPU percepisce la Quando la CPU percepisce la richiesta, inizia a scandire le parole richiesta, inizia a scandire le parole di stato di tutte le periferiche per di stato di tutte le periferiche per individuare quella che ha fatto la individuare quella che ha fatto la richiesta. richiesta.

32Luca Orrù

Interrupt vettorizzatoInterrupt vettorizzato Esiste un solo piedino per le richieste di Interrupt �Esiste un solo piedino per le richieste di Interrupt � Un apposito circuito, Interrupt Controller, riceve Un apposito circuito, Interrupt Controller, riceve

le richieste di interrupt, IRQle richieste di interrupt, IRQ Quando la CPU è pronta a servire la richiesta di Quando la CPU è pronta a servire la richiesta di

interrupt proveniente dall’ Interrupt interrupt proveniente dall’ Interrupt Controller( INTREQ), invia un segnale di INTACKController( INTREQ), invia un segnale di INTACK

L’Interrupt Controller pone sul bus un codice di L’Interrupt Controller pone sul bus un codice di identificazione del dispositivo che ha richiesto l’ identificazione del dispositivo che ha richiesto l’ Interrupt�Interrupt�

La CPU usa il codice per determinare l’indirizzo La CPU usa il codice per determinare l’indirizzo della procedura di servizio, usandolo come indice della procedura di servizio, usandolo come indice per un vettore degli indirizzi delle procedure di per un vettore degli indirizzi delle procedure di servizio (Interrupt Vector Table) servizio (Interrupt Vector Table)

33Luca Orrù

ArchitetturaArchitettura

34Luca Orrù

Interrupt vector tableInterrupt vector table

È una tabella esistente nella È una tabella esistente nella memoria principale (spesso a partire memoria principale (spesso a partire dall’indirizzo 00000)dall’indirizzo 00000)

Contiene, per ogni codice di Contiene, per ogni codice di Interrupt, l’indirizzo della relativa Interrupt, l’indirizzo della relativa Interrupt Service Routine. Interrupt Service Routine.

35Luca Orrù

PrioritàPriorità

Nei sistemi complessi a ciascun Nei sistemi complessi a ciascun dispositivo di I/O è associata una dispositivo di I/O è associata una prioritàpriorità

A fronte di richieste simultanee A fronte di richieste simultanee viene eseguita la Interrupt Service viene eseguita la Interrupt Service Routine dell’I/O con priorità Routine dell’I/O con priorità maggiore. maggiore.

Priorità (cont)Priorità (cont)

Se si usa il meccanismo delle linee di Se si usa il meccanismo delle linee di interrupt multiple, è la CPU che interrupt multiple, è la CPU che riconosce l’I/O con priorità più altariconosce l’I/O con priorità più alta

Nel caso del polling, la CPU serve Nel caso del polling, la CPU serve prima il dispositivo che compare prima il dispositivo che compare prima nella sequenza con cui i prima nella sequenza con cui i dispositivi vengono interrogatidispositivi vengono interrogati

Nel caso dell’interrupt vettorizzato, si Nel caso dell’interrupt vettorizzato, si usa il meccanismo del Daisy Chainingusa il meccanismo del Daisy Chaining

36Luca Orrù

Daisy ChainingDaisy Chaining

Ciascun I/O possiede una circuiteria Ciascun I/O possiede una circuiteria che riceve il segnale di INTACK e che riceve il segnale di INTACK e che può propagarlo in uscitache può propagarlo in uscita

Quando questo viene attivato, se il Quando questo viene attivato, se il dispositivo ha fatto richiesta di dispositivo ha fatto richiesta di interrupt mette sul bus il suo codice interrupt mette sul bus il suo codice identificativoidentificativo

Se non ha fatto richiesta, attiva il Se non ha fatto richiesta, attiva il segnale di INTACK in uscitasegnale di INTACK in uscita

37Luca Orrù

Daisy ChainingDaisy Chaining

38Luca Orrù

Architettura estesa della Architettura estesa della CPUCPU

39Luca Orrù