x86, x64, IA64 인터럽트 컨트롤러

By 01/11/2018Windows Internal

x86, x64, IA64 인터럽트 컨트롤러

  • Windows Server 2008

 

[x86 인터럽트 컨트롤러]

대부분의 x86 시스템은 i8259A Pic(Programmable Interrupt Controller)나 i82489 APIC(Advanced Programmable Interrupt Controller)의 변형 중 하나를 사용한다.

 

인텔과 그 밖의 여러 회사는 APIC를 주로 사용하는 x86 멀티프로세서 시스템을 위한 설계 표준인 멀티프로세서 규약을 정의 했다. 유니프로세서 운영체제와의 호환성과, 유니프로세서 모드에서 멀티프로세서 시스템을 시작하는 부트 코드와의 호환성을 지원하기 위해 APIC는 PIC 호환성 모드를 지원한다. PIC 호환성 모드는 15개의 인터럽트를 가지며 주 프로세서에만 인터럽트를 전달한다.

 

APIC는 실제로 다음과 같은 여러 구성 요소 즉 디바이스로부터 인터럽트를 받는 I/O APIC와 버스에 있는 I/O APIC로부터 인터럽트를 받고 자신들과 연관된 CPU를 인터럽트 하는 로컬 APIC, APIC 입력을 PIC에 대응하는 신호로 변환하는 i8259-A 호환 인터럽트 컨트롤러로 이루어져 있다.

 

한 시스템에 다수의 I/O APIC가 존재할 수 있으므로 메인보드에서는 일반적으로 자신들과 프로세서 사이에 존재하는 코어로직이 있다. 이 로직은 프로세서 간의 디바이스 인터럽트 부하를 조절하고 지역성을 이용하는 인터럽트 라우팅 알고리즘을 구현한다. 소프트웨어 프로그램은 이러한 칩셋 로직을 우회하는 고정 라우팅 알고리즘으로서 I/O APIC를 재프로그래밍할 수 있다.

 

[x64 인터럽트 컨트롤러]

x64 아키텍처는 x86 운영체제와 호환되므로 x64 시스템은 x86이 제공하는 것과 동일한 인터럽트 컨트롤러를 제공해야 한다. 차이점은 윈도우 x64 버전은 인터럽트 제어에 APIC를 사용하기 때문에 APIC가 없는 시스템에서는 실행하지 않는다는 점이다.

 

[IA64 인트럽트 컨트롤러]

IA64 아키텍처는 APIC의 향상된 모델인 SAPIC를 사용한다. SAPIC에 부하 조절과 라우팅 기능이 있더라도 윈도우는 현재 그 기능을 사용하지 않는다. 윈도우는 라운드로빈 방식으로 인터럽트 프로세서에 정적으로 할당한다.

 

 

 

[참고자료]

Windows Internals

 

OS, Windows, 윈도우아키텍처, Windowsinternals, OS아키텍처, 윈도우서버, WindowsServer, APIC, sqlmvp, SQL Angeles