Le periferiche
Una periferica è un qualsiasi dispositivo hardware che fa parte di
un sistema informatico e/o di elaborazione (come ad esempio un
PC) e che funziona sotto il controllo di un'unità centrale (CU) e
del sistema operativo SO, alla quale è collegata.
Si dividono in:
- Periferiche di Input: mandano un segnale di ingresso al nostro
PC (es. la tastiera, Mouse, Scanner, ... )
- Periferiche di Output: ricevono un segnare di uscita dal nostro
PC (es. Monitor, Stampante, cuffie, ... )
- Memorie di Massa: Hard Disk, Lettori, CD, DVD, ...
Introduzione all'interfaccia
Ogni periferica necessita di un'interfaccia più o meno complessa che
le consenta di comunicare (cioè scambiare dati) con il processore
centrale
L'interfaccia di un calcolatore
L'interfaccia di un calcolatore è composto da:
- dispositivi di Input/Output (periferiche), contenente un insieme di registri
detti I/O Port
- Un'unità per il controllo, costituito da un circuito stampato posizionato a
bordo della periferica, che comunica con il Modulo di Interfaccia
attraverso un apposito bus esterno e che controlla il funzionamento della
periferica
- software per la loro gestione, detti Device Driver, contenenti le istruzioni
per la corretta gestione dello scambio di dati
Bus Interno di Sistema
CPU
Periferica
Main Board
Modulo di
Interfaccia
Controller
Bus Esterno
Indirizzamento dei dispositivi di I/O
A ciascun
dispositivo di I/O è di solito associata
un'interfaccia, che lo collega al bus del sistema.
Bus
Indirizzi
+ Dati
Controllo
Decodificatore
degli indirizzi
Circuiti di
controllo
Registri di dato
e di stato
Interfaccia
Dispositivo di I/O
IO Port
La comunicazione tra il processore
e il
dispositivo avviene attraverso dei registri di IO (o porte), detti
IO PORT, della dimensione, tipicamente, di 1 byte
La CPU (o la memoria) può comunicare con una sola periferica
alla volta.
IO Port: Registri
I registri di IO sono concettualmente simili alle celle della
memoria, con le differenze che:
- Non sono concentrati su una singola scheda, ma sono sparsi
su tutta la main board
- I Registri di IO, oltre ad essere collegati con il Bus di Sistema,
che funge da interfacciamento verso la CPU, sono collegati
anche con un secondo Bus Esterno che funge da
interfacciamento verso la periferica
IO Port: Tipi di Registri
I Registri di IO sono di solito almeno 3, aventi il seguente significato:
- Registro di Comando: a sola scrittura, in cui la CPU scrive i comandi
relativi alle azioni che la periferica deve eseguire, ...
- Registro di Stato: a sola lettura, il cui valore rappresenta lo stato della
periferica (ad esempio stampante accesa / spenta, assenza / presenza carta,
- Registro Dati: di lettura o scrittura a seconda che la periferica associata sia
una periferica di Input oppure di Output. È il registro di appoggio per lo
scambio dati con la periferica.
IO Port: Accesso e Connessione
I registri IO sono accessibili tramite il bus di sistema, al pari
delle celle di memoria, in quanto a ciascuno di essi è associato
un indirizzo FISICO (ASSOLUTO).
La loro connessione al bus può avvenire secondo 2 modalità:
- memory-mapped I/O
- isolated I/O (o I/O-mapped I/O).
Memory-Mapped I/O
I registri dei dispositivi di I/O sono contenuti all'interno della
memoria centrale in un'apposita area
Quindi lo spazio di indirizzamento totale per la memoria è
risulta ridotto del numero di registri per le periferiche
Si può fare accesso ai registri delle periferiche utilizzando
tutte le istruzioni ed i modi di indirizzamento utilizzabili per
accedere alla memoria
Memory-Mapped I/O: Architettura
Memory
I/O
Address Bus
Data Bus
Control Bus
Esempio Memory-Mapped I/O
Da
A
Periferica
0000
00OF
DMA Controller 8237
0020
0040
0021
Interrupt Controller PIC 8259
0043
Timer 8253
0060
0063
Tastiera (interfaccia parallela 8255)
00A0
00A1
Interrupt Controller PIC #2 8259
OOFO
OOFF
Coprocessore Matematico 80287
01F0
01FF
Hard Disk (AT)
0278
027F
LPT2
02E8
02EF
COM1
02F8
02FF
COM2
0320
032F
Hard Disk (XT)
0378
037F
LPT1
03FO
03F7
Floppy Disk
041E
043E
Buffer di Input della Tastiera
Isolated I/O
Gli spazi di indirizzamento per la memoria e per le porte di I/O
sono separati, e sono attivati alternativamente da appositi
segnali.
Ad esempio nel 8086 si usa il segnale M/IO.
Per accedere alle porte di I/O si devono utilizzare apposite
istruzioni ASSEMBLER (IN e OUT).
Isolated I/O: Architettura
Address Bus
Data Bus
Memory
I/O
Memory control line
I/O control line
15
Memory-Mapped I/O: Vantaggi e Svantaggi
Vantaggi del Memory-Mapped I/O
- Operazioni I/O veloci: la CPU accede ai dispositivi I/O con alla stessa
velocità con cui accede alla memoria
- Programmazione semplificata: poiché le stesse istruzioni possono
essere utilizzate per accedere alla memoria e ai dispositivi I/O. Ciò
significa che gli sviluppatori software non devono utilizzare istruzioni
I/O specifiche
- Utilizzo efficiente dello spazio di memoria: lo stesso spazio di indirizzi
di memoria può essere utilizzato per accedere sia alla memoria che ai
dispositivi I/O
Svantaggi del Memory-Mapped I/O
- Spazio di indirizzamento limitato, i dispositivi I/O condividono lo stesso spazio
di indirizzi della memoria. Ciò significa che potrebbe non esserci spazio
sufficiente per indirizzare tutti i dispositivi I/O
- Tempo di risposta potrebbe essere più lento: se un dispositivo I/O è lento a
rispondere, può ritardare l'accesso della CPU alla memoria. Ciò può
comportare un rallentamento delle prestazioni complessive del sistema
Isolated I/O: Vantaggi e Svantaggi
Vantaggi dell'Isolated I/O
- Ampio spazio di indirizzi I/O: l' i dispositivi di I/O hanno il proprio spazio
di indirizzamento separato dalla memoria
- Maggiore flessibilità: fornisce una maggiore flessibilità poiché i
dispositivi I/O possono essere aggiunti o rimossi dal sistema senza
influire sullo spazio della memoria
- Affidabilità migliorata: fornisce una migliore affidabilità poiché i
dispositivi I/O non condividono lo stesso spazio di indirizzi della
memoria. Ciò significa che se un dispositivo I/O si guasta, ciò non
influisce sulla memoria o su altri dispositivi I/O.
Svantaggi dell'Isolated I/O
- Operazioni di I/O più lente: si richiede l'uso di istruzioni I/O
specializzate che rallentano l'operazione di lettura o scrittura del
dato sulla periferica
- Programmazione più complessa:
richiede istruzioni I/O
specializzate, che possono portare a una programmazione più
complessa.