In questo articolo studiamo Le periferiche di I/O e le loro funzioni
architettura-sistemi-di-elaborazione.zip (170 download )
Sommario
Unità di Input/Output (I/O)
L’unità di input/output (I/O) è l’insieme dei dispositivi e dei circuiti elettronici che permettono al sistema di elaborazione di interagire con l’ambiente esterno, ovvero di ricevere dati (input) e fornire risultati (output). Le periferiche – come tastiera, mouse, stampante, monitor, dischi, interfacce di rete – fanno parte dell’I/O e sono essenziali per rendere operativo un computer.
Funzioni principali del sottosistema di I/O
- Traduzione dei segnali: converte i segnali elettrici provenienti dai dispositivi esterni in un formato compatibile con il processore e viceversa.
- Sincronizzazione: coordina la velocità di trasferimento dati tra periferiche (tipicamente lente) e CPU/memoria (molto veloci).
- Gestione del trasferimento: regola le modalità con cui i dati vengono trasferiti (programmazione, polling, interrupt, DMA).
- Identificazione e indirizzamento: associa un indirizzo logico a ciascuna periferica, per renderla accessibile da parte della CPU.
Interfacce di I/O
Poiché le periferiche hanno caratteristiche molto diverse tra loro, è necessario un modulo intermedio che le colleghi al bus di sistema: l’interfaccia di I/O. Questa ha il compito di:
- gestire la comunicazione tra periferica e sistema centrale;
- fornire registri di controllo e di stato;
- segnalare alla CPU la disponibilità di dati;
- eventualmente generare interruzioni (interrupt).
Modalità di comunicazione
-
I/O programmato (Polling):
La CPU controlla periodicamente lo stato della periferica per verificare se è pronta a ricevere o fornire dati. Questo metodo è semplice ma inefficiente, perché la CPU spreca tempo in attesa. -
I/O con interrupt:
La periferica invia un segnale di interruzione alla CPU quando è pronta per lo scambio dati. La CPU sospende temporaneamente l’esecuzione del programma corrente, gestisce l’I/O, poi riprende l’elaborazione. Questo metodo è più efficiente, poiché libera la CPU dall’attesa. -
DMA (Direct Memory Access):
Una unità DMA permette il trasferimento diretto dei dati tra periferica e memoria, senza l’intervento continuo della CPU. È utilizzato in caso di trasferimenti ad alta velocità (es. dischi rigidi, schede di rete).
Mappatura dell’I/O
La comunicazione tra CPU e periferiche può avvenire in due modi:
-
Mappatura in memoria (Memory-mapped I/O):
Le periferiche sono trattate come locazioni di memoria. Le stesse istruzioni usate per leggere/scrivere in memoria sono usate per accedere alle periferiche. -
I/O isolato (Isolated I/O):
Le periferiche sono gestite tramite istruzioni dedicate (es.IN
eOUT
). I registri di I/O hanno uno spazio di indirizzamento separato da quello della memoria.
Esempio di ciclo I/O con interrupt
- Una stampante è collegata a una porta parallela controllata da un’interfaccia di I/O.
- Quando la stampante è pronta a ricevere un carattere, invia un segnale di interrupt alla CPU.
- La CPU sospende temporaneamente il programma in esecuzione e attiva una routine di servizio.
- Il carattere da stampare viene caricato in un registro dell’interfaccia.
- La CPU riprende l’esecuzione del programma originario.
Interfacce di I/O
La comunicazione tra un computer e il mondo esterno avviene tramite interfacce di ingresso/uscita (I/O), che fungono da collegamento tra il data bus del computer e le periferiche. Le periferiche sono dispositivi che consentono lo scambio di informazioni tra il sistema e l’ambiente esterno, e possono essere divise in:
- Periferiche di input: dispositivi che inviano dati dal mondo esterno al computer (ad esempio, tastiere, sensori).
- Periferiche di output: dispositivi che ricevono dati dal computer e li inviano al mondo esterno (ad esempio, monitor, stampanti).
- Periferiche di memorizzazione: dispositivi che immagazzinano dati (come dischi rigidi, SSD, nastri).
Le periferiche possono essere:
- Esterne: collegate al computer tramite cavi e porte di interfaccia.
- Interne: collegate tramite bus interni al case del computer.
Struttura delle interfacce
Un’interfaccia di I/O comprende diversi componenti, che gestiscono l’interscambio di dati tra il computer e le periferiche:
- Porte di ingresso/uscita: consentono lo scambio di segnali tra il sistema e la periferica.
- Registro di controllo: gestisce la funzione delle porte, configurando ogni pin come ingresso o uscita.
- Registro di stato: fornisce informazioni sullo stato della periferica (ad esempio, se è in attesa di dati o se i dati sono già stati ricevuti).
- Registro dati (buffer): immagazzina i dati da trasferire in uscita o in ingresso.
Buffer
Un buffer è una zona di memoria temporanea che viene utilizzata per compensare le differenze di velocità tra il trasmettitore e il ricevitore. Se la velocità di trasmissione è superiore a quella di ricezione, il trasmettitore invia i dati al buffer, da cui il ricevitore li preleva alla propria velocità.
Indirizzamento delle periferiche
L’indirizzamento delle periferiche avviene tramite il bus degli indirizzi. Quando il processore desidera comunicare con una periferica, pone sull’indirizzo del bus l’indirizzo della porta della periferica, anziché una cella di memoria. Il segnale IORQ viene attivato per abilitare l’interfaccia di I/O. La lettura e la scrittura di dati tra la CPU e l’interfaccia di I/O avvengono come segue:
- Lettura: la CPU attiva i segnali IORQ e RD per leggere i dati dalla periferica.
- Scrittura: la CPU attiva i segnali IORQ e WR per scrivere i dati sulla periferica.
Memoria-mapped I/O
Un altro modo per accedere alle interfacce di I/O è trattarle come locazioni di memoria (memory-mapped I/O). In questo caso, vengono riservati indirizzi specifici per le periferiche, e il processore può eseguire operazioni di lettura e scrittura utilizzando le stesse istruzioni di memoria (senza ricorrere alle istruzioni IN e OUT).
Tipi di interfacce

Le interfacce di I/O si dividono in:
- Interfacce seriali: i dati vengono trasmessi un bit alla volta, in sequenza. Esempi includono le interfacce USB e RS-232.
- Interfacce parallele: i dati vengono trasmessi simultaneamente su più linee. Un esempio comune è la porta parallela per la stampa.
Queste interfacce sono essenziali per consentire al computer di interagire con il mondo esterno, gestendo sia il trasferimento di dati da e verso le periferiche sia il controllo e la sincronizzazione delle operazioni.


Lascia un commento