듀얼 프로세서 시스템에서는 인터럽트를 어떻게 처리합니까?
-
11-09-2019 - |
문제
듀얼 코어 CPU가 인터럽트를 처리하는 방법에 대한 아이디어가 있습니다.둘 이상의 물리적 프로세서가 있는 보드에서 인터럽트 처리가 어떻게 구현되는지 궁금합니다.
물리적 보드의 구성에 따라 인터럽트 책임이 결정됩니까?각 프로세서는 디스크 I/O와 같은 일부 유형의 인터럽트를 처리할 수 있어야 합니다.적절한 프로세서에 인터럽트를 관리하고 전달하는 회로가 없다면?내 생각에는 모든 프로세서와 코어가 인터럽트 핸들러를 실행할 수 있도록 구성표가 프로세서 중립적이어야 한다는 것입니다.
코어가 디스크 읽기를 기다리고 있는 경우 디스크가 준비되면 해당 코어가 인터럽트 핸들러를 실행하는 코어가 될까요?
해결책
x86 시스템에서 각 CPU는 서로 연결되어 있는 자체 로컬 APIC(Advanced Programmable Interrupt Controller)를 가지며 로컬 APIC에 대한 라우팅 장치 인터럽트를 처리하는 I/O APIC에도 연결됩니다.
OS는 APIC를 프로그래밍하여 어떤 인터럽트가 어떤 CPU로 라우팅되는지 결정하거나 APIC가 결정을 내리도록 할 수 있습니다.
나는 멀티 코어 CPU가 각 코어에 대해 로컬 APIC를 가질 것이라고 상상하지만 솔직히 그것에 대해 확신할 수 없습니다.
자세한 내용은 다음 링크를 참조하세요.
다른 팁
여러분이 관심을 갖고 있는 것은 SMP 프로세서 선호도입니다. 여기 Linux에서 처리하는 방법에 대한 훌륭한 기사입니다.그만큼 APIC(고급 프로그래밍 가능 인터럽트 컨트롤러) 현대 시스템에서 이를 관리하는 방법입니다.기본적으로 이 인터페이스를 활용하여 올바르게 설정하는 OS가 없는 한 기본값은 모두 프로세서 0으로 이동하는 것입니다.또한 명령을 실행한 코어가 특정 인터럽트를 기다리기를 반드시 원하는 것은 아닙니다.부하가 적은 코어가 이를 수신하기를 원합니다.
나는 이미 얼마 전에 이 질문을 했습니다.아마도 그것은 당신에게 통찰력을 제공할 수 있을 것입니다 :)