Papel do 8259A Controlador de Interrupções Programável
O 8259A é um gestor de interrupções dedicado que fica entre dispositivos periféricos e a CPU, permitindo ao processador lidar com múltiplos eventos assíncronos eficientemente.
Seis Razões Principais
- Multiplexação de Interrupções: Um pino CPU INTR ← 8 entradas IRQ (IRQ0–IRQ7). Cascata de dois 8259As rende 15 IRQs (padrão PC/AT).
- Arbitragem de Prioridade: Modos fully nested, rotating, ou prioridade específica. Interrupções críticas (timer, teclado, disco) preemptam as inferiores.
- Geração de Vetor: No pulso INTA, 8259A coloca vetor de interrupção (0–255) no bus de dados → CPU salta para ISR correta.
- Máscara e Controlo Edge/Level: Registo máscara por IRQ (IMR); edge vs. level trigger por canal (ICW1/ICW3).
- Expansibilidade: Master + slave cascade (INT output do slave → IRQ2 do master) escala para 64+ IRQs com múltiplas cascatas.
- Legado e Custo: Ubíquo na arquitetura PC/XT/AT; biliões enviados; barato ($0.50–$1 em volume); firmware bem conhecido.
Sequência de Inicialização (x86 PC)
; Master 8259A em 20h/21h out 20h, 11h ; ICW1: edge, cascade, ICW4 needed out 21h, 08h ; ICW2: vector base 08h (IRQ0→int 08h) out 21h, 04h ; ICW3: slave em IRQ2 (bit 2) out 21h, 01h ; ICW4: modo 8086, EOI normal ; Slave 8259A em A0h/A1h out A0h, 11h out A1h, 70h ; ICW2: vector base 70h (IRQ8→int 70h) out A1h, 02h ; ICW3: slave ID = 2 out A1h, 01h ; ICW4: modo 8086 ; Mascarar todos inicialmente out 21h, FFh out A1h, FFh
Substitutos Modernos
- APIC / x2APIC: Integrado na CPU (desde Pentium/P6), 240+ vetores, message-signaled interrupts (MSI/MSI-X).
- IOAPIC: Router de interrupções a nível sistema (24/120 entradas).
- MSI/MSI-X: Dispositivo escreve vetor diretamente na memória — sem linhas IRQ partilhadas.
O 8259A é obsoleto em novos designs mas permanece em firmware/suporte legado e curricula embedded como controlador de interrupções canónico.