Perché il PIC Intel 8259A è usato nei sistemi basati su microprocessore
Ruolo del controller di interruttori programmabile 8259A
L'8259A è un gestore di interruttori dedicato posizionato tra i dispositivi periferici e la CPU, consentendo al processore di gestire in modo efficiente molteplici eventi asincroni.
Sei motivi principali
- Multiplexing delle interruzioni: Un pin INTR della CPU ← 8 ingressi IRQ (IRQ0–IRQ7). Il cascading di due 8259A produce 15 IRQ (standard PC/AT).
- Arbitrio di priorità: Modalità fully nested, rotating o specifiche. Le interruzioni critiche (timer, tastiera, disco) preemptono quelle di minore priorità.
- Generazione del vettore: Sul fronte INTA, l'8259A colloca il vettore di interruzione (0–255) sul data bus → la CPU salta alla ISR corretta.
- Maschera e controllo fronte/livello: Registro di maschera per IRQ (IMR); trigger fronte vs livello per canale (ICW1/ICW3).
- Espandibilità: Master + slave in cascata (uscita INT dello slave → IRQ2 del master) scala fino a 64+ IRQ con multiple cascate.
- Legacy e costo: Onnipresente nell'architettura PC/XT/AT; miliardi di unità spedite; economico ($0.50–$1 in volume); firmware ben compreso.
Sequenza di inizializzazione (PC x86)
; Master 8259A a 20h/21h out 20h, 11h ; ICW1: fronte, cascata, ICW4 necessario out 21h, 08h ; ICW2: base vettore 08h (IRQ0→int 08h) out 21h, 04h ; ICW3: slave su IRQ2 (bit 2) out 21h, 01h ; ICW4: modalità 8086, EOI normale ; Slave 8259A a A0h/A1h out A0h, 11h out A1h, 70h ; ICW2: base vettore 70h (IRQ8→int 70h) out A1h, 02h ; ICW3: ID slave = 2 out A1h, 01h ; ICW4: modalità 8086 ; Maschera tutto inizialmente out 21h, FFh out A1h, FFh
Sostituti moderni
- APIC / x2APIC: Integrato nella CPU (da Pentium/P6), 240+ vettori, interrupt signalati via messaggio (MSI/MSI-X).
- IOAPIC: Router di interruttori a livello di sistema (24/120 ingressi).
- MSI/MSI-X: Il dispositivo scrive il vettore direttamente in memoria — nessuna linea IRQ condivisa.
L'8259A è obsoleto nei nuovi progetti, ma rimane nel firmware/supporto legacy e nei curricula embedded come controller di interruttori canonico.