390 likes | 630 Views
Input/Output. SOMMARIO. Organizzazione di sistema Trasferimento dati; Gestione I/O. Organizzazione di sistema. Tipi di bus. ABUS, Address Bus : insieme di linee su cui la CPU scrive l’indirizzo del dispositivo a cui intende accedere
E N D
Input/Output Luca Orrù
SOMMARIO • Organizzazione di sistema • Trasferimento dati; • Gestione I/O. Luca Orrù
Organizzazione di sistema Luca 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. Luca 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. Luca 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 Luca Orrù
Comunicazione (cont) Luca Orrù
Ciclo di lettura da memoria Luca Orrù
Ciclo di lettura da Input/Output Luca Orrù
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ù
I/O non Memory Mapped Luca Orrù
I/O non memorymapped Luca Orrù • 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
I/O Memory Mapped Luca 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. Luca Orrù
I/O Memory Mapped (cont) Luca 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 Luca 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 Luca Orrù
Circuiteria DMA Luca Orrù
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ù
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ù
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ù
DMA • Modalità di trasferimento possibili • Burst transfer • Cycle stealing • Transparent DMA Luca Orrù
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ù
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ù
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ù
Gestione I/O • Un dispositivo può richiamare l’attenzione della CPU in due modi: • Polling • Interrupt Luca Orrù
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ù
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ù
Identificazione del dispositivo • Più dispositivi possono richiedere un interrupt • Per riconoscere il richiedente è possibile utilizzare: • Linee di interrupt multiple • Polling • Interrupt vettorizzato Luca Orrù
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ù
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ù
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 VectorTable) Luca Orrù
Architettura Luca Orrù
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ù
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ù
Priorità (cont) Luca Orrù 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
Daisy Chaining Luca Orrù 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
Daisy Chaining Luca Orrù
Architettura estesa della CPU Luca Orrù