1 input/output elementi periferici: testiera monitor stampanti memorie di massa........... cpu...
TRANSCRIPT
1
Input/Output
• Elementi periferici:TestieraMonitorStampantiMemorie di massa...........
CPU memoria controllervideo
controllertastiera
controllerdisk
monitor
floppy diskhard disk
tastiera
2
Input/Output
• Colloquio tra unità centrale e periferiche:
Controllo da programma
Interrupt
DMA
Canale di I/O
3
Controllo da programma
• E' da programma che si decide quando interrogare la periferica per un colloquio es: lettura di un tasto premuto
• E' usato nei processori di bassa fascia e in vecchi sistemi
circuito di selezione
interfaccia parte meccanica_bus
parte meccanicadella periferica
bus
4
Controllo da programma
• Ogni periferica è individuata da un unico indirizzo (I/O a mappa di memoria)
Esistono istruzioni dedicate all' I/O:es: PDP 8
C.O. n. periferica comando3 6 3
110: operazione di I/O
5
Controllo da programma
• Funzionamento:Nel programma vengono inserite delle istruzioni il cui C.O. è una operazione di I/O. Con queste ultime vengono specificate: La periferica L'operazione da svolgere sulla periferica
6
Controllo da programma
• Operazioni principali svolte:a) test su flag
la periferica possiede un flag che rappresenta la sua disponibilità ad operare.Fino a che la periferica non è disponibile si resta in attesa:
Test su flag
b) lettura (scrittura) con reset (set) del flag si legge un dato e si attiva il flag per segnalare alla periferica che
che l'operazione è stata svolta. La periferica si attiva nuovamente. Quando un nuovo dato è pronto la periferica disattiva il flag.
test sul flag
7
Controllo da programma
• esempio:
carattere ricevuto carattere da visualizzare
flag: carattere disponibile flag: pronto per il prossimo carattere
buffer di tastiera buffer di monitor
Il flag è posto a 1 dal trasmettitore ed azzerato dal ricevente
8
Controllo da programma
• Svantaggio:
La CPU spende la maggior parte del tempo in un ciclo di attesa.Questo è negativo se la CPU ha del lavoro da svolgere.
9
Interrupt
• Soluzione:
Attivare il dispositivo di I/O chiedendogli di comunicare la fine del suo lavoro:
Interrupt ( oppure Interruzione di programma )
10
Interrupt
• L'interrupt è un cambiamento nel flusso di controllo non provocato dall'esecuzione del programma.
• Due tipi di cambiamenti nel flusso: TRAP
Interruzioni SINCRONE con il programma overflow o underflow durante una operazione aritmetica. codici operativi non definiti tentativo di azionare un dispositivo di I/O inesistente ...........
INTERRUPT Interruzioni ASINCRONE con il programma
11
Interrupt
• Esempio di funzionamento delle interruzioni:Emissione a video di una stringa di caratteriTutti i caratteri sono raccolti in una zona di
memoria individuata da 2 variabili globali: puntatore al primo carattere numero di caratteri (variabile contatore)
Richiesta del terminale da parte della CPU. Quando il terminale è pronto la CPU, che è rimasta in attesa, manda il primo carattere.
L'operazione di I/O è iniziata. La CPU torna ad eseguire il programma utente.
(segue)
12
Interrupt
Visualizzato il primo carattere, il controller video lancia un interrupt:
Azioni HARDWARE: Il controller attiva la linea di interrupt Non appena possibile la CPU attiva il segnale di
acknowledge (la CPU ha accettato l'interruzione) Ricevuto il segnale di acknowledge, il dispositivo di I/O
identifica se stesso mediante il vettore di interrupt (identificatore del dispositivo o del gruppo di dispositivi)
La CPU salva in un registro il vettore di interrupt La CPU salva nello stack il PC e il registro di STATO
(segue)
13
Interrupt
Viene caricato in PC l'indirizzo relativo alla routine di I/O. L'indirizzo è individuato attraverso il vettore di interrupt.
Es: 8088: la tabella degli indirizzi delle routine di interrupt inizia all'indirizzo assoluto 0000. Ogni indirizzo è costituito da 4 byte.
es: vettore di interrupt = 3indirizzo primo byte del PCrelativo alla sua routine di gestione = 3 * 4 = 12
PC0 primo byte
PC0 secondo byte
PC0 terzo byte
PC0 quarto byte
PC1 primo byte
PC1 secondo byte
PC1 terzo byte
PC1 quarto byte
routine di servizio
dell'interrupt
. . . . . . .
000000010002000300040005.........
VettInt * 4
NOTA:in 80286 e 80386, i vettori di interruptindividuano PC disposti su 8 bytein un punto qualunque della memoria(è usato il registro segmento extra)
14
Interrupt
Azioni SOFTWARE (routine di I/O): Salvataggio dei registri di lavoro nello stack (o in una
tabella di sistema); Ricerca del dispositivo che ha richiesto l'interrupt
all'interno del gruppo individuato dal vettore di interrupt (solitamente più dispositivi condividono lo stesso vettore di interrupt);
Si aggiornano le variabili globali Puntatore, Contatore; Ripristino dello stato; Esegue l'istruzione IRET (ritorno da interrupt) che
ripristina i valori dei registri PC e STATO.
(fine esempio)
15
Interrupt
• Il ripristino dello stato della CPU rende le interruzioni TRASPARENTI cioè, la CPU continua a lavorare come se non ci fosse stata nessuna interruzione.
• Per multi_interruzioni due strategiea) Senza interruzione degli interrupt;b) Con interruzione (a priorità) degli interrupt.
16
Interrupt
a) La routine di gestione dell'interruzione
svolge, come prima operazione, la
disabilitazione del segnale di interruzione e
come ultima operazione la riabilitazione.
Interrupt strettamente sequenziali
17
Interrupt
• Esempio di routine per la gestione dell'I/OIOFF
Salvataggio dellostato della macchina
Riconoscimento dellaperiferica da cui
proviene l'interruzione
Operazioni di I/O
IONSalto indiretto alla
cella contenente il PCdel programma utente
disattiva l'interrupt
riattiva l'interrupt
inizioricerca periferica
gestione di P1gestione di P2
.........gestione di Pn
fine
PC
...........
...........
PC
18
Interrupt
b) La disabilitazione degli interrupt può andar bene se non vengono trattati dispositi critici. Es: Nella trasmissione seriale a 9600 bps i caratteri arrivano ogni 1042 sec, pronto o non pronto che sia il calcolatore!!
Viene associata una priorità ai dispositivi di I/O:Una routine a priorità n è interrotta solo
da interrupt a priorità k > n. Gli altri sono ignorati (MASCHERATI).
19
Interrupt
Le routine di interrupt sono trasparenti ( lo stato della macchina viene riportato a quello che precede l'interrupt).
Disco (4)
RS 232 (6)
Stampa (2)
utente stampa RS 232 disco stampa utente
tempo
utente utente utente utente
stampa stampa
stack
20
Interrupt
• 8088/8086, 80286 e 80386 hanno due pin per le interruzioni (prevedono solo 2 livelli di priorità):INTR: interrupt mascherabileNMI: interrupt non mascherabile
• NMI Usato per segnalare catastrofi imminenti quali
ERRORE DI PARITA' DELLA MEMORIA
• INTR Usato per i dispositivi di I/O
21
Interrupt
• In generale, due tipi di gestori delle priorità:A priorità cablata. es: encoder priority
A priorità programmata.
P1P2P3
da programma
22
Interrupt
• Tra INTR e le periferiche viene interposto un dispositivo aggiuntivo che ha come compito quello di inibire le interruzioni di dispositivi a più bassa priorità rispetto a quello corrente:
controllore di interrupt 8259A (Intel)
Quando una routine di gestione è conclusa, viene trasmesso all'8259A un segnale che permette a un interrupt di minore priorità di verificarsi.
23
Interrupt
• connessione tra CPU e 8259A
CPU
8259 Acontrollore
diinterruzioni
D0-D7
CS
A0
WR
RD
INTA
INTRIR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
orologio
tastiera
disco
stampa
24
Interrupt
• Quando uno (o più degli) IRq è attivato, l'8259A attiva INTR.Alla fine della istruzione corrente, la CPU attiva INTA (INTerrupt Acknowledge).L' 8259A spedisce alla CPU il vettore di interrupt (D0 - D7) identificando il dispositivo che ha lanciato l'interrupt.Il vettore di interrupt è usato dalla CPU come indice in una tabella di indirizzi che individuano l'indirizzo della procedura da eseguire.
• RD, WR, A0, CS sono usati per svolgere diverse operazioni. Es: per comunicare all'8259A che il corrente interrupt è stato soddisfatto, oppure per mascherare un gruppo di interruzioni.
25
Interrupt
• Problema:Il trasferimento di grosse quantità di dati è oneroso dato che è richiesto un interrupt per ogni carattere trasmesso e l'elaborazione associata ad una interruzione è costosa. per ogni dato trasmesso:
interruzione del programma in corso esecuzione della routine di servizio ripristino dello stato per il proseguimento del
programma.
..................................ci vuole TEMPO!!!!!!!!
26
DMA
• Si supponga di voler leggere un blocco di dati da disco.......dopo il primo dato il tempo di accesso è praticamente nullo. La periferica è troppo veloce per poter essere gestita a interrupt.....
• Il DMA (Accesso Diretto alla Memoria) consiste in un trasferimento diretto dal dispositivo di I/O alla memoria (o viceversa).
27
DMA
• L'operazione di DMA è comandata dalla CPU ed è controllata da un controllore DMA che,programmato dalla CPUaccede direttamente al bus trasferendo dati dal
dispositivo di I/O alla memoria (o viceversa) eavverte la CPU, mediante interrupt, la fine
dell'operazione.
28
DMA
• Il controllore di DMA possiede almeno 4 registri programmabili software dalla CPU
indirizzo di partenza del blocco dati (da mettere o prelevare dalla memoria)
contatore delle parole da trasferire
Identificatore del dispositivo di I/Oo l'indirizzo dello spazio di I/O da usare
indica se l'operazione è di scrittura o lettura
NOTA: Il DMA è un ritorno al controllo da programma fatto, non dalla CPU bensì da un dispositivo dedicato!
29
DMA
• Anche se la CPU ha meno lavoro da svolgere, il sistema di comunicazione non è perfetto:Durante un trasferimento in DMA di dati da un
dispositivo particolarmente veloce, saranno necessari molti cicli di bus sia per
accessi alla memoria che accessi al dispositivo di I/O
CPU DMA Memoria UART RS 232 terminale
30
DMA
• La CPU ha priorità minore nella gestione del bus poiché spesso, i dispositivi di I/O non tollerano ritardi ......la CPU deve aspettare.
Il DMA è comunque più vantaggioso delle interruzioni. E' il metodo normalmente usato per la gestione dell'I/O su tutti i Personal Computer e Mini Computer.
31
Bus PC IBM
32
Bus PC IBM
• Bus PC IBM 62 lineeClock a 14.31818 MHz da cui è ricavato il clock
4.77 MHz per l'8088 (max frequenza dell'8088 è 5 MHz)
Per demultiplexare le linee dati da quelle indirizzo si usano dei latch:
74LS373 (per gli indirizzi: i segnali di indirizzo sono prodotti per primi in un ciclo di bus)
74LS245 (latch bidirezionale)
NOTA: Poichè la CPU è MOS sono necessari dei buffer TTL per pilotare il bus.
33
Bus PC IBM
AEN:(Address ENable) usato per estromettere la CPU dal bus
ALE: (Address Latch Enable) Attivo quando è la CPU a pilotare li bus indirizzi e quando gli indirizzi sono validi.
MEMR, MEMW: Lettura e scrittura a memoria. Quando sono attivi individuano non solo l'operazione ma anche che l'indirizzo si riferisce alla memoria.
IOR, IOW: Lettura e scrittura su un dispositivo di I/O. Quando sono attivi individuano, oltre alla operazione, anche lo spazio di indirizzamento di I/O.
34
Bus PC IBM
MEMR, MEMW, IOR e IOW sono generati decodificando i segnali S0_S2 mediante il decoder 8288 Intel
IOCHCHK:(I/O CHannel CHecK) Attivo quando è presente un segnale di errore di parità della memoria. Genera un interrupt non mascherabile.
IOCHRDY: (I/O CHannel ReaDY) E' usato dalle memorie lente per introdurre cicli di attesa.
IRQ2-IRQ7: Interruzioni
IRQ0: usato per i timer (non usa il bus)
IRQ1: usato per la tastiera (non usa il bus)
35
Bus PC IBM
• DMA:Gestito dall' 8237A. E' una piccola CPU con un
programma cablato.La CPU ordina un trasferimento caricando nell'8237A:Il numero del dispositivoindirizzo di memoriacontatore di bytedirezione di trasferimento
Quando il dispositivo di I/O ha raggiunto il primo dei byte da trasferire, il suo controller attiva uno dei DRQx (Device ReQuest) in ingresso al 8237A . . . . .
36
Bus PC IBM
Ricevuto il DRQx, l'8237A richiede il bus e lo prepara al trasferimento attivando uno dei DACKx (Device ACKnowledge). Quest'ultimo segnala al controllore di scrivere o leggere il dato.Durante questa fase il controller è master.
Nota:L'8237A usa alcuni latch per generare l'indirizzo (per
indirizzare la memoria)La linea DRQ0 è usata per il refresh di memorie dinamiche.
Il segnale T/C è attivato quando il contatore è a ZERO avvisando così il controller che l'operazione è conclusa e deve lanciare l'interrupt.
37
Bus PC/AT IBM
• E' il bus PC IBM ampliato di 36 linee (estensione di indirizzi, dati, interrupt, DMA)
38
CANALE
• Su mainframe, le operazioni di I/O sono così frequenti che potrebbero saturare il bus. Si aggiungono dei processori di I/O dedicati detti CANALI.
• I Canali sono veri e propri processori che posseggono un linguaggio specializzato rivolto alle operazioni di I/O e svolgono programmi sofisticati.
39
CANALE
• I canali hanno struttura simile ad un processore (PC, Unità di Controllo, Registro Istruzione ........) ma, non sono dotati di memoria propria non sono in grado di attivarsi autonomamente
• Il canale ha essenzialmente lo scopo di eseguire in modo autonomo tutte le operazioni di I/O ripetitive in modo da impegnare al minimo il calcolatore durante la fase di trasferimento dati cioè.........
40
CANALE
Controllo integrità dei dati Controllo checksum, parità,.......
Conversione dati Es: da ASCII a Integer (su 16 bit)
• Trasferimento tra canale e calcolatore esclusivamente in DMA
• I mainframe IBM posseggono uno o più canali di due tipi:Canale Selettore: gestisce una sola unità di I/O veloce
(dischi)Canale Multiplexer: gestisce più di una unità di I/O
lento (es: terminali).
41
CANALE
I/O buffer
Programma di
canale
istruzione inizio I/O
indirizzo programma di canale
passo 1
passo 2: PC per il canale
passo 3: il canale esegue il programma e trasferiscei dati nella memoria centrale
42
Sistemi di Comunicazione
• Un sistema di comunicazione permette di realizzare un trasferimento di informazioni tra diverse unità.I chip di I/O: comunicazione con il mondo
esterno
• Le unità che comunicano sono da considerarsi ASINCRONE tra loro.
43
Sistemi di Comunicazione
• Problemi da risolvere:Tecnologici : caratteristiche fisiche dei canali usati per la
trasmissione.Arbitraggio : assegnare l'utilizzazione di un sistema di
comunicazione a un particolare modulo tra quelli che ne fanno richiesta.
Trasferimento: trasferire dati tra un modulo e l'altro superando la difficoltà costituita dal fatto che i due moduli sono asincroni tra loro
44
Problemi Tecnologici
• Mezzo trasmissivo e sue caratteristiche(consideriamo solo conduttori elettrici)Velocità di propagazione
Un segnale elettrico (anche ottico) ha velocità pari a circa la metà della velocità della luca nel vuoto.
dalla velocità di propagazione e dalla lunghezza del conduttore dipende il ritardo di propagazione
Velocità di trasmissione: numero di bit trasmessi. Si misura in bps.
La velocità di trasmissione dipende dalla larghezza di banda del canale trasmissivo che, a sua volta, dipende dalle caratteristiche elettriche e magnetiche del mezzo trasmissivo
Attenuazione: perdita di energia del segnale RIPETITORI
45
Mezzi Trasmissivi
• Mezzi trasmissivi più diffusi:Doppino telefonico (velocità massima 10Mbps)
è formato da due cavi elettrici intrecciati
Flat cables usato per trasmissioni parallele. Sono costituiti da molti conduttori
immersi in materiale isolante.Usato per distanze di pochi metri.
problemi : interferenza (disturbi esterni)Crosstalk (interferenza reciproca tra
segnali)
Coassiali e fibre ottiche si stanno affermando per la trasmissione a grandi distanze poiché
hanno bande passanti elevate (di gran lunga superiori al doppino telefonico). Le fibre ottiche sono pressoché immuni da interferenze.
problema: costo elevato.
46
Trasferimento Dati
• Il trasferimento dati su brevi distanze può essere parallelo.Sincrono
Esiste una linea dedicata al segnale globale di sincronismo: CLOCK GLOBALE
Asincrono La sincronizzazione si basa su opportune regole e
linee di sincronizzazione
47
Trasferimento DatiParallelo Asincrono
• Il problema è:Assicurarsi che il ricevente abbia effettivamente
ricevuto il dato prima che il trasmittente lo tolga dal bus
e che il ricevente non lo legga due volte !
• Si usa il metodo interlocking:Tenere alti i segnali fino a che non si riceve una
risposta da parte dell'altro modulo. Due segnali: READY: Segnala al ricevente la presenza dal dato ACCEPT: Segnala la trasmittente che il dato è stato
ricevuto
48
Trasferimento DatiParallelo Asincrono
• Per la gestione del bus si usano delle tecniche di arbitraggio:
un solo master che seleziona il ricevente.
Trasmittente Ricevente
BUS
READY
ACCEPT
49
Trasferimento DatiParallelo Asincrono
• HALF-INTERLOCKED:Possibile errore:
Il trasmittente perde il segnale di ACCEPTa) Il trasmittente rimane bloccato in attesa di un
segnale di ACCEPT che non arriverà mai.
b) Il ricevente vede READY alto e campiona gli lo stesso dato una seconda volta!!!
READY
ACCEPT
50
Trasferimento DatiParallelo Asincrono
• FULLY-INTERLOCKED:
READY
ACCEPT
51
Trasferimento DatiParallelo Sincrono
• La velocità di trasferimento deve adeguarsi alla unità più lenta.
Trasmittente Ricevente
BUS
CLOCK
52
Trasferimento Dati Parallelo
PIO (Parallel Input/Output) 8255A Intel• E' un dispositivo programmabile con 24 linee di
I/O. Nel modo più semplice può essere programmato per avere 3 porte indipendenti di I/O da 8 bit ciascuna. La CPU può leggere o scrivere su na qualunque delle 3 porte (bit di selezione A0-A1, solitamente i più significativi del bus indirizzi)
L'8255A prevede dei pin per il trasferimento asincrono.
PIO8255 A
CSA0-A1
WRRD
RESETD0:D7
8 bit
8 bit
8 bit
porta A
porta B
porta C
53
Trasferimento Dati Seriale
CPU mem
scheda di I/O
UART
modem
RS 232 C
modemTerminale
54
Trasferimento Dati Seriale
Elementi di comunicazione:• UART (Universal Asynchronous Receiver Transmitter)
L'intervallo di tempo tra due caratteri non è fissato sebbene l'intervallo di tempo tra due bit che formano il carattere lo siano
es: battitura da tastiera: la distanza tra due caratteri non è uniforme
p i s t dtempo
55
Trasferimento Dati Seriale
• USART (U Synchronous ART)
E' una unità predisposta per funzionare con modi di trasmissione seriale sia sincrona che asincrona.
• Sia le UART che le USART sono programmabili cioè richiedono una fase di inizializzazioneI due tipi di interfaccia altro non sono che sofisticati
convertitori PARALLELO-SERIALE (e viceversa)
p i s t d tempo
Sincrona
56
Trasferimento Dati Seriale
• Trasmissione asincrona:problema: come può il ricevitore riconoscere il primo bit
del carattere?
Formato del dato trasmesso:
. . . .
bit di start 1 bit di stop1 e 1/2 bit di stop
2 bit di stop
tempo
start 1 1 0 1 0 0 1 stop1 stop2
esempio: dato=110100, bit parità pari, 2 bit di stop
57
Trasferimento Dati Seriale
formato del dato trasmesso:Un bit di start (0): la linea è mantenuta
normalmente a 1Dato: formato dal codice del carattere seguito
eventualmente dal bit di parità.Uno, uno e mezzo, due bit di stop (1):
separazione minima tra due dati. Due bit di stop migliorano l'affidabilità della trasmissione.
• velocità di trasmissione:110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
57600, 115200 bit per secondo (bps o baud)
58
Trasferimento Dati Seriale
• ipotetico registro di programmazione di una unità di trasmissione seriale asincrona:
dimensione dato trasmesso:0 8 bit1 9 bit
parità:00 parità pari01 nessuna parità10 nessuna parità11 parità dispari
bit di stop00 uno01 uno e mezzo10 due
velocità di trasmissione
59
Trasferimento Dati Seriale
• ricezione:Sia il ricevitore che il trasmettitore devono
essere configurati nello stesso modo......Il ricevitore campiona la linea ad una frequenza molto superiore a quella di trasmissione. Riconosciuto il bit di start (fronte di discesa) posiziona il campionamento a metà dei successivi bit; in questo modo la ricezione è insensibile ad eventuali piccole variazioni tra la frequenza di lavoro del trasmettitore e quella del ricevitore.
60
Trasferimento Dati Seriale
• esempio:
linea
ricevitore
start 1 1 0 0 0 stop stop
parità pari
1 1 0 0 0
61
Trasferimento Dati Seriale
• Trasmissione sincrona:E' molto complessa ed utilizza, in generale, un codice
autosincronizzante oppure protocolli che permettono la sincronizzazione a inizio trasmissione.Nella trasmissione sincrona la necessità di un bit di inizio e fine viene eliminata.
codice auto-sincronizzante Manchester
0: identificato da una transizione da 0 a 11: identificato da una transizione da 1 a 0
0 0 0 01 1 1
62
Trasferimento Dati Seriale
• Trasmissione di dati tra due modem:SIMPLEX
la linea permette la trasmissione solo in una direzione
HALF-DUPLEX Una linea di questo tipo permette la trasmissione in
entrambe le direzioni ma a ogni istante la direzione è unica.
FULL-DUPLEX E' equivalente ad una coppia di linee simplex:
trasmissione simultanea in entrambe le direzioni.
63
Trasferimento Dati Seriale
INTERFACCIA RS 232-CLo standard RS 232-C definisce tutti gli aspetti
relativi alla realizzazione fisica, cioè gli aspetti che permettono di connettere materialmente due dispositivi e che permettono loro di scambiare dati.
4 caratteristiche devono essere definite in uno standard di comunicazione fisica:
a) caratteristiche elettriche dei segnali
b) caratteristiche funzionali (dati, controllo, sincronizzazione)
c) caratteristiche meccaniche
d) protocollo di comunicazione
64
Trasferimento Dati Seriale
a) caratteristiche elettriche1 logico: +3 V - +12V 0 logico: -3 V - -12V
b) caratteristiche funzionali25 pin:
2 linee di terra (uno di segnale, l'altro di macchina) 2 linee di trasferimento dati: una per direzione controllo modem 5 non usate
linee di terra: AA: terra di protezione AB: terra di segnale (di riferimento)
linee di trasferimento dati: BA: Trasmissione BB: Ricezione
65
Trasferimento Dati Seriale
Linee controllo modem: CA: Request to Send. Comunica l'intenzione di trasmettere
un dato. Viene tenuta a 1 durante la trasmissione CB: Clear to Send. Comunica la trasmittente che può
iniziare la trasmissione dati. CE: Ring Indicator. Comunica il segnale di chiamata
AA BA BB AB
1
25
CA CB
66
Trasferimento Dati Seriale
Collegamento diretto tra due calcolatori
AA
AB
BB
BA
AA
AB
BB
BA
Protocollo usato: XON/XOFF
67
Trasferimento Dati Seriale
• Protocollo di comunicazione (elementare)a) Protocollo RST/CTS (Request To Send/ Clear To Send)
La trasmissione viene richiesta ed effetuata solo quando il ricevente l'accetta (usa CA e CB della RS 232-C)
b) Protocollo XON/XOFFNon sono usate le linee RST e CTS. Vengono usati due caratteri speciali, XON e XOFF. Il ricevente blocca la trasmissione spedendo un XOFF e la riattiva con un XON.