Sei sulla pagina 1di 4

PERIFERICHE

1
Von Neumann con Interfacce

Nel modello di Von Neumann, c'erano le periferiche collegate direttamente al bus, elettricamente, e in
parallelo. La periferica è collegata direttamente al bus perché è dedicata a quel bus, nasce per essere
collegata solo a quel bus; se si fosse trattato invece di una periferica generica, non sarebbe stato possibile
un collegamento diretto; in questo caso, si ovvia mettendo tra bus e periferica un dispositivo di interfaccia.
L’interfaccia non è prevista dal modello di Von Neumann che deve essere modificato, come nella figura
sopra, per tenerne conto.

Conversione parallelo-seriale
Una interfaccia è un dispositivo che si mette tra il BUS e la periferica e risolve alcuni problemi tra cui
adattare il BUS proprietario della scheda a microprocessore con il BUS standard della periferica.
Nel mondo esterno la comunicazione è seriale, ma nella scheda interna col BUS di sistema è parallela:
occorre quindi una conversione da seriale a parallelo e viceversa.
In generale una interfaccia, sul lato periferica, può essere di tipo seriale (se i bit sono trasmessi uno alla
volta) o di tipo parallelo (se i bit sono trasmessi in parole).
Sul lato BUS invece la comunicazione è sempre parallela.
Un esempio di interfaccia è l'interfaccia USB (Universal Seria! Bus). Una interfaccia deve contenere almeno
questi elementi:

Rete di decodifica
La CPU prima di comunicare, deve selezionare la periferica; come la seleziona?
Con un indirizzo, che deve essere inviato nel bus indirizzi; la periferica legge l'indirizzo e capisce che è il suo
(lo riconosce). E' la rete di decodifica che ha la funzione di riconoscimento dell'indirizzo da parte della
periferica; quest'ultima, se riconosce il proprio indirizzo, metterà sul pin di uscita della rete di decodifica
'true', mentre metterà 'false' se non lo riconosce. La rete di decodifica, tramite il BUS indirizzi, comunica col
registro MAR della CPU.

La rete di decodifica è quindi il componente che decodifica gli indirizzi e riconosce gli indirizzi delle
periferiche sul bus, si tratta di indirizzi che ogni periferica ha l’obbligo di controllare. Questi particolari
indirizzi si chiamano indirizzi di "porta".

Registro dati.
Tutti i dati scambiati fra la cpu e il dispositivo di I/0 passano per il registro dati, quindi la cpu per scrivere un
dato su una periferica di output non deve far altro che indirizzare il dato all'indirizzo (porta) giusto e
scriverlo nel registro dati; sarà l'interfaccia a preoccuparsi del trasferimento del dato alla periferica. In una
interfaccia di sola uscita il registro dati si può solo scrivere, in una interfaccia di sola entrata invece si può
solo leggere, mentre se l'interfaccia è sia di entrata che di uscita allora si può sia leggere che scrivere, a
seconda dei casi.
2
Il registro dati, tramite il BUS indirizzi, comunica col registro MDR della CPU.

Registro di stato

Il registro di stato, di sola lettura per la cpu, fornisce lo stato attuale della periferica. Lo stato, quando
richiesto, in genere viene posto sull'LSB (il bit meno significativo) del bus dati (se si tratta di un solo bit).

In genere per una periferica di solo input lo stato indica alla CPU che è disponibile un nuovo dato da
acquisire (ad esempio premendo un tasto sulla tastiera lo stato diventa HIGH e la codifica del dato viene
posta nel registro dati), mentre per una periferica di solo output in genere lo stato HIGH indica che la
periferica è pronta per ricevere un nuovo dato da trasferire (ad esempio un nuovo carattere da stampare,
se si tratta di una stampante. Il registro di stato si può solo leggere.

Quindi lo stato ha un significato diverso per le periferiche di input e di output (esistono anche periferiche di
input/output):
 Input. Lo stato asserito (alto, attivo, enabled) segnala che dall’esterno è arrivato un nuovo dato
(che ha sovrascritto quello vecchio) che è pronto per la lettura. Viceversa il livello basso segnala che
il dato presente è ancora quello già letto.
 Output. Lo stato asserito (alto, attivo, enabled) segnala che dall’esterno è stato letto il vecchio dato
(che era stato scritto in precedenza dalla CPU) e quindi l’interfaccia è pronta per ricevere (scrittura
sul buffer) un nuovo dato. Viceversa il livello basso segnala che il dato già presente ancora non è
stato letto e che quindi la CPU deve aspettare che dall’esterno qualcuno lo legga.

Registro controlli

Il registro controlli serve a impostare il funzionamento generale del colloquio processore-interfaccia,


tramite dei bit che indicano, ad esempio, la velocità di trasferimento dei dati oppure la modalità di
funzionamento (a controllo di programma o basata sulle interruzioni). Il registro controlli in genere si può
solo scrivere. Il registro controlli, tramite il BUS indirizzi, comunica con la UC della CPU.

Porte

Inizialmente possiamo pensare di associare ogni registro ad una porta diversa. Questo però porterebbe ad
uno spreco di porte, per il fatto che non tutti i registri hanno la necessità di essere sia letti che scritti. Nel
caso dello schema sopra possono bastare due sole porte: una per il registro dati (che deve essere sia letto
che scritto) ed un'altra per i controlli e per lo stato (uno deve essere solo letto e l'altro solo scritto, per cui
basta una sola porta: si interviene su un registro o sull'altro a seconda del fatto che si richieda la lettura o la
scrittura del registro). In genere gli indirizzi di porta sono consecutivi.

Terzo stato

Le periferiche di ingresso presentano ai loro morsetti di ingresso una alta impedenza per cui se collegata in
parallelo a quella di un BUS non la “caricano”, cioè non la modificano e non assorbono corrente dal BUS.

Le periferiche di uscita presentano ai loro morsetti di ingresso una bassa impedenza per cui se collegata in
parallelo a quella di un BUS la “caricano”, cioè la modificano e assorbono corrente dal BUS.

3
Se collego molte periferiche di uscita sul BUS queste possono assorbire una corrente maggiore di quella
massima erogabile dal BUS e possono non funzionare correttamente. La soluzione per collegare molte
periferiche di uscita al BUS è cambiare dinamicamente (grazie a un comando) il loro tipo di collegamento
da collegamento a bassa impedenza a collegamento ad alta impedenza detto in gergo terzo stato o stato
disconnesso.

Una periferica di uscita permane nel terzo stato solo quando non deve comunicare nulla sul BUS. Quando
una periferica ha qualcosa da dire la sua impedenza di uscita si mette in bassa impedenza tornando a
caricare il BUS, ma questa situazione non è permanente ma si protrae per la sola durata della
comunicazione (periferica attiva). Quando una periferica viene disattivata viene rimessa con la sua uscita in
terzo stato, cioè in alta impedenza.

Ma chi attiva o disattiva la periferica mettendo le sue uscite a bassa o alta impedenza? La rete di decodifica.
Quando la rete di decodifica “vede” sul BUS indirizzi l’indirizzo della propria scheda allora l’uscita della rete
si mette asserita (HIGH) e comanda lo stato connesso (bassa impedenza) dell’uscita, se non lo vede allora
l’uscita della rete si mette disasserita cioè in LOW, valore che comanda lo stato disconnesso (alta
impedenza) dell’uscita

Indirizzamento delle periferiche

Il computer può far vedere le porte di una periferica o come se fossero delle locazioni di una periferica
(I/O) oppure come se fossero delle locazioni di memoria.

 separate I/O Address Space: gli indirizzi si dividono in due gruppi separati: indirizzi di celle di
memoria, indirizzi di periferiche. Per accedere al registro di una periferica bisogna dire al BUS che si
sta accedendo ad una periferica di I/O e specificarne l’identificativo. Esistono istruzioni diverse (per
periferiche e memoria RAM) ma possono comunque condividere lo stesso indirizzo.
o Si utilizzano delle particolari istruzioni del livello ISA, dette IN (per leggere un valore di un
registro) ed OUT (per mettere sul registro un valore.
o Tali istruzioni terminano solo dopo che i valori sono stati effettivamente collocati nella
destinazione specificata. Sono quindi operazioni lente (come le periferiche) ma assicurano
che quando la CPU vede il termine dell’operazione il registro sia stato acceduto
fisicamente.

 Memory Mapped I/O : si tratta il registro della periferica come se fosse una qualunque locazione di
memoria. Al registro viene fatto corrispondere un indirizzo di memoria. Quando si cerca di accedere
a quella locazione in realtà si accede al registro. A periferiche e memoria RAM si accede con la
stessa istruzione ma deve essere usata su indirizzi diversi.

o L’accesso viene effettuato utilizzando la normale istruzione di accesso a memoria MOV,


specificando l’indirizzo di memoria a cui corrisponde il registro.
o Poiché tale istruzione mette in moto il meccanismo della cache, l’accesso memory mapped
è più veloce dell’accesso I/O vero e proprio, ma l’istruzione MOV per scrivere su un registro
può terminare senza che il registro sia stato effettivamente modificato, e la modifica
avverrà successivamente.

Potrebbero piacerti anche