Esempio (con simulatore) di
realizzazione di Input/Output con interruzioni
Questa è una delle tante possibilità di avere I/O gestito
da interruzioni nel livello ISA didattico del testo, IJVM.
Ovviamente le cose non sono esattamente come nella realtà
per ragioni di semplicità.
Alla macchina del nostro livello ISA supponiamo
dipoter connettere fino a 8 "devices"(dispositivi, periferiche).
In questo esempio abbiamo una tastiera e una stampante
Supponiamo di utilizzare una politica di Memory Mapped I/O,
cioè i registri relativi a dispositivi di I/O si possono leggere
e scrivere con normali operazioni di lettura e scrittura in memoria
(v. 3.7.2 del testo).Nel nostro esempio supponiamo che
l'elettronica di ogni device disponga di due registri di 16 bit (un Buffer
Register (BR) ed un Control Status Register (CSR)). Questi, siccome abbiamo
memory mapped I/O, pur appartenendo fisicamente al device, sono visti dalla
macchina come due parole di memoria e come tali possono essere utilizzate dalla
CPU.

Quando un device necessita di "attenzione" da parte della CPU (vuoi per
segnalare semplicemente un evento, vuoi perché desidera che la CPU svolga per
conto del device alcune operazioni) questo pone ad uno il bit 0 del suo CSR
(detto IP, Interrupt Pending), fa richiesta cioè di un'interruzione. L'hardware
copierà il bit IP in OPC
E' compito dell'interprete del linguaggio macchina accorgersi della presenza di richieste da parte
dei vari devices. Se il linguaggio macchina (IJVM o un altro) è realizzato via software
sopra Mic-1, sarà il codice del microinterprete Mic-1 a realizzare le operazioni
da fare in presenza di segnali di interruzione.
Vediamo come
avviene la gestione delle interruzioni
La gestione delle interruzioni ---->