Instead, it uses the interrupt cycle, and expects an interrupt identifier on the data bus. If it is an 8 bit data bus, there is 256 interrupt levels (i.e 2^8). (Why is this?)
A alternativa para fazer isso é ter um pino na CPU para cada tipo ou nível de IRQ que você deseja suportar. O 68000 fez isso, eles tinham 3 pinos de interrupção permitindo que você expressasse o IRQ nível 0 (NMI) até 7. Os processadores Intel só têm 1 pino IRQ e esperam que um endereço no barramento (fornecido por um dispositivo intermediário chamado PIC) forneça tipo (acho que na Intel este "endereço", na verdade um índice, vai diretamente para um registrador. Alguns PICs podem realmente dizer à CPU qual endereço ir diretamente).
Eu acredito que eles têm um pino NMI separado (e há outras interrupções com seus próprios pinos, como SMI, IPI, e um reset é um tipo de interrupção).
So an Interrupt Service Routine (ISR) is written for every possible interrupt level and stored in a table at a fixed location (interrupt vector) which is standardized by the processor.
Você não precisa escrever 256 ISRs, você pode criar um "stub" que simplesmente "retorna da interrupção", efetivamente ignorando-o.
In my notes is says "Location must be known before getting the address" (What does this mean?)
É um pouco ambíguo - não sei se isso significa que você precisa saber o endereço base da tabela de vetores ou simplesmente dizer que não pode saber o endereço do ISR se não souber o número de IRQ envolvido .
The interrupt level identifier received as part of the interrupt cycle is used as an index into the interrupt vector (Can someone break this down a little please?).
O PIC recebe um IRQ de um dispositivo. Este dispositivo está configurado para acionar o IRQ # 3.
A CPU, ao receber o IRQ do PIC, vê 3 no barramento e pula para o endereço em sua tabela vetorial de IRQ local, índice 3.
Meu entendimento é que um valor, o identificador de nível de interrupção, é passado para a CPU e usado para apontar o vetor de interrupção.
Certo.
Also, what does it mean when an interrupt is said to be "serviced"?
Normalmente, você não quer que a CPU seja interrompida enquanto está entregando uma interrupção. As combinações de CPUs e CPU + PIC fazem várias coisas para desabilitar as interrupções após o recebimento de um IRQ. Então você tem que "anunciar" quando você terminar de lidar com isso. Na Intel, você precisa reativar o bit de habilitação de interrupção do sistema e informar ao PIC que você está fazendo a manutenção do IRQ. O PIC "retém" mais IRQs até que a CPU diga que está pronto.
Eu deixei de fora alguns detalhes do acima para simplificar e também porque já faz muito tempo desde que estudei qualquer um dos itens acima, mas espero que seja útil.