Como são interrupções tratadas por máquinas com dois processadores?
-
11-09-2019 - |
Pergunta
Eu tenho uma idéia de como as interrupções são tratadas por um CPU dual core. Eu estava pensando sobre como manipulação de interrupção é implementado em uma placa com mais de um processador físico.
é qualquer parte da responsabilidade de interrupção determinada pela configuração da placa de física? Cada processador deve ser capaz de lidar com alguns tipos de interrupções, como disco I / O. A menos que haja alguns circuitos para gerir e interrupções de despacho para o processador apropriado? Meu palpite é que o regime deve ser processador neutro, de modo que qualquer processador e núcleo pode executar o manipulador de interrupção.
Se um núcleo está à espera de uma leitura de disco, será que o núcleo ser o único a executar o manipulador de interrupção quando o disco está pronto?
Solução
Em sistemas x86 cada CPU obtém seu próprio APIC local (Advanced Programmable Interrupt Controller), que também são ligados uns aos outros e para um O APIC I / que manipula o roteamento de interrupções do dispositivo para os APICs locais.
O sistema operacional pode programar os APICs para determinar quais interrupções são roteados para o qual CPUs (ou para deixar os APICs tomar essa decisão).
Eu imagino que uma CPU multi-core teria um APIC local para cada núcleo, mas eu não sou honesta certo sobre isso.
Veja esses links para mais detalhes:
Outras dicas
O que você está interessado é SMP Processor Affinity. Aqui é um excelente artigo sobre como ele é tratado em Linux. A Advanced Programmable Interrupt Controller (APIC) é como você gerencia isso em um sistema moderno. Basicamente, o padrão seria a de ir todos para o processador 0, a menos que você tivesse um sistema operacional que utilizou esta interface para coisas configurado corretamente. Além disso, você não necessariamente quer o núcleo que emitiu uma ordem para esperar em uma interrupção particular. Você quer que os núcleos menos carregados para recebê-lo.
Eu já fiz esta pergunta um tempo atrás. Talvez ele pode oferecer-lhe algumas dicas:)
como é que as interrupções no multicore / multicpu máquinas trabalho
Eu diria que ele iria depender do fabricante do hardware ...
No entanto este link me faz acreditar a maioria são provavelmente manipulados pelo processador primário e / ou primeiro núcleo.