Luca Orrù 1 Input/Output
2 SOMMARIO Organizzazione di sistema Trasferimento dati; Gestione I/O.
3Luca Orrù Organizzazione di sistema
4Luca Orrù 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.
5Luca Orrù 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.
6Luca Orrù 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)
8Luca Orrù Ciclo di lettura da memoria
9Luca Orrù Ciclo di lettura da Input/Output
10Luca Orrù Spazio d’indirizzamento Una CPU con n linee di indirizzo è in grado di indirizzare 2 n 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 Mapped
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) 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 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 Per accedere all’I/O si devono utilizzare apposite istruzioni ( IN e OUT) dove si specifica l’indirizzo del periferico OUT 070h, AL OUT 070h, AL IN AL, 070h IN AL, 070h 12Luca Orrù
13Luca Orrù I/O Memory Mapped
14Luca Orrù 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.
15Luca Orrù I/O Memory Mapped (cont)
16Luca Orrù 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
17Luca Orrù 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
18Luca Orrù Circuiteria DMA
19Luca Orrù DMA: funzionamento Inizializzazione: Inizializzazione: La CPU carica nei registri IOAR e DC l’indirizzo dell’area di memoria ed il numero di parole da trasferire 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 ) La CPU informa inoltre il DMA controller della direzione del trasferimento (da memoria a periferica o viceversa )
20Luca Orrù DMA : funzionamento (cont) Esecuzione del trasferimento: Esecuzione del trasferimento: il DMA Controller riceve una richiesta di trasferimento da parte di una periferica il DMA Controller riceve una richiesta di trasferimento da parte di una periferica Il DMA Controller invia un segnale di DMA Req alla CPU. 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. 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. Il DMA Controller inizia il trasferimento. Dopo il trasferimento di ciascuna parola, IOAR e DC vengono aggiornati (IOAR++, DC--). Dopo il trasferimento di ciascuna parola, IOAR e DC vengono aggiornati (IOAR++, DC--).
21Luca Orrù DMA funzionamento (cont) Il DMA Controller può sospendere temporaneamente il trasferimento disattivando DMA Request; Il DMA Controller può sospendere temporaneamente il trasferimento disattivando DMA Request; la CPU disattiva DMA Acknowledge, e riprende il controllo del bus la CPU disattiva DMA Acknowledge, e riprende il controllo del bus Quando DC giunge a zero, il trasferimento termina. Quando DC giunge a zero, il trasferimento termina. Il DMA Controller segnala il termine del trasferimento alla CPU (invia un Interrupt allaCPU) Il DMA Controller segnala il termine del trasferimento alla CPU (invia un Interrupt allaCPU)
22Luca Orrù DMA Modalità di trasferimento possibili Modalità di trasferimento possibili Burst transfer Burst transfer Cycle stealing Cycle stealing Transparent DMA Transparent DMA
23Luca Orrù Burst mode Il DMA acquisisce il controllo del bus Il DMA acquisisce il controllo del bus Il DMA rilascia il bus solo quando ha terminato il trasferimento Il DMA rilascia il bus solo quando ha terminato il trasferimento Vantaggio: Vantaggio: Il trasferimento avviene alla massima velocità possibile Il trasferimento avviene alla massima velocità possibile Svantaggio: Svantaggio: La CPU non può accedere al bus durante il trasferimento. La CPU non può accedere al bus durante il trasferimento.
24Luca Orrù Cycle stealing Il dati sono trasferiti in piccoli blocchi Il dati sono trasferiti in piccoli blocchi Il DMA controller diventa padrone del bus per brevi istanti di tempo Il DMA controller diventa padrone del bus per brevi istanti di tempo Vantaggio: Vantaggio: la CPU non è bloccata per lunghi istanti di tempo la CPU non è bloccata per lunghi istanti di tempo Svantaggi: Svantaggi: il trasferimento richiede più tempo. il trasferimento richiede più tempo.
25Luca Orrù Transparent DMA Il DMA rileva quando la CPU non usa il bus Il DMA rileva quando la CPU non usa il bus I trasferimenti hanno luogo solo quando la CPU non sta usando il bus I trasferimenti hanno luogo solo quando la CPU non sta usando il bus Vantaggi: Vantaggi: il DMA non rallenta mai la CPU il DMA non rallenta mai la CPU Svantaggi: Svantaggi: è in media il metodo più lento. è in media il metodo più lento.
26Luca Orrù Gestione I/O Un dispositivo può richiamare l’attenzione della CPU in due modi: Un dispositivo può richiamare l’attenzione della CPU in due modi: Polling Polling Interrupt Interrupt
27Luca Orrù Polling La CPU interroga periodicamente i dispositivi La CPU interroga periodicamente i dispositivi Se il dispositivo interrogato ha richiesto servizio viene servito Se il dispositivo interrogato ha richiesto servizio viene servito Vantaggio Vantaggio semplice da realizzare semplice da realizzare Svantaggio: Svantaggio: un dispositivo deve attendere il suo turno prima di essere servito: elevata latenza un dispositivo deve attendere il suo turno prima di essere servito: elevata latenza
28Luca Orrù Interrupt La CPU non interroga i dispositivi di I/O La CPU non interroga i dispositivi di I/O Quando un dispositivo ha necessità di essere servito attiva la richiesta di interrupt 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 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. Il servizio dell’interrupt avviene iniziando ad eseguire la procedura di servizio dell’interrupt: Interrupt Service Routine.
29Luca Orrù Identificazione del dispositivo Più dispositivi possono richiedere un interrupt Più dispositivi possono richiedere un interrupt Per riconoscere il richiedente è possibile utilizzare: Per riconoscere il richiedente è possibile utilizzare: Linee di interrupt multiple Linee di interrupt multiple Polling Polling Interrupt vettorizzato Interrupt vettorizzato
30Luca Orrù Linee multiple La CPU possiede diversi piedini per le richieste di Interrupt La CPU possiede diversi piedini per le richieste di Interrupt Ogni periferica è collegata ad un diverso piedino Ogni periferica è collegata ad un diverso piedino È una soluzione impraticabile, poiché il numero di periferiche è quasi sempre superiore a quello dei piedini disponibili È una soluzione impraticabile, poiché il numero di periferiche è quasi sempre superiore a quello dei piedini disponibili
31Luca Orrù Polling Esiste un solo piedino per le richieste di Interrupt 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. 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.
32Luca Orrù Interrupt 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 le richieste di interrupt, IRQ 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 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 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) 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)
33Luca Orrù Architettura
34Luca Orrù Interrupt vector table È una tabella esistente nella memoria principale (spesso a partire dall’indirizzo 00000) È 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. Contiene, per ogni codice di Interrupt, l’indirizzo della relativa Interrupt Service Routine.
35Luca Orrù Priorità Nei sistemi complessi a ciascun dispositivo di I/O è associata una 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. A fronte di richieste simultanee viene eseguita la Interrupt Service Routine dell’I/O con priorità maggiore.
Priorità (cont) Se si usa il meccanismo delle linee di interrupt multiple, è la CPU che riconosce l’I/O con priorità più alta 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 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 Nel caso dell’interrupt vettorizzato, si usa il meccanismo del Daisy Chaining 36Luca Orrù
Daisy Chaining Ciascun I/O possiede una circuiteria che riceve il segnale di INTACK e che può propagarlo in uscita 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 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 Se non ha fatto richiesta, attiva il segnale di INTACK in uscita 37Luca Orrù
Daisy Chaining 38Luca Orrù
Architettura estesa della CPU 39Luca Orrù