IRQ 및 인터럽트 벡터 테이블

IRQ 및 인터럽트 벡터 테이블

IRQ에 대해 많이 읽어봤는데, 상충되고 오래된 정보가 있는 것 같습니다. 그 중 일부는 Windows 95로 거슬러 올라갑니다. 제가 혼란스러워하는 부분은 다음과 같습니다.

  1. 소프트웨어 인터럽트와 하드웨어 인터럽트는 모두 인터럽트 벡터 테이블에 의해 관리되고 발송됩니다. 그렇지 않은 경우 어떻게 다르게 제어됩니다.

  2. PCI 모드 IRQ와 ISA 모드 IRQ 사이에 차이점이 있다고 읽었는데, 이것이 사실입니까? 그렇다면 모드를 어떻게 설정하고 어떻게 다르게 작동합니까?

  3. 이제 PCI Express가 있으므로 PCI 모드 IRQ를 사용합니까(존재하는 경우), 어떻게 작동합니까(인터럽트 방식).

편집 4. 이 그림을 보면 많은 IRQ가 메모리에 매핑되어 있는 것으로 보입니다. 이것이 의미하는 바는 무엇입니까? IRQ는 16개가 넘습니다. APIC가 더 많은 것을 허용한다는 것을 알고 있지만, 이 정도로 많습니까?

여기에 이미지 설명을 입력하세요

미리 감사드립니다 :-)

답변1

다른 모드는 없으며 기존 ISA 버스와 PCI 버스에는 다른 하드웨어가 있습니다. ISA 버스는 장치가 주의 신호를 보내는 데 사용할 수 있는 버스에 16개의 IRQ 라인을 제공했습니다. 프로그래밍 가능한 인터럽트 컨트롤러(실제로 계단식으로 연결된 8259A 칩 쌍)는 이러한 라인에 우선 순위를 지정하고 CPU가 활성화되면 신호를 보내는 방식으로 응답합니다. 이로 인해 CPU가 인터럽트 서비스 루틴을 호출하게 되었습니다. IRQ 0-7은 int 8-F를 트리거하고 IRQ 8-15는 int 70-77을 트리거했습니다. 인터럽트는 소프트웨어 int 명령을 통해 트리거될 수도 있으며, CPU가 인터럽트 벡터 테이블의 해당 슬롯이 가리키는 루틴을 호출하도록 만들었습니다.

버스의 모든 장치가 공유하는 16개의 IRQ 라인 대신 PCI는 INTA-INTD라는 버스의 각 슬롯에 4개의 서로 다른 IRQ 라인을 제공하여 각 장치가 자체 용도로 최대 4개의 서로 다른 IRQ를 가질 수 있도록 했습니다. 실제로 장치는 하드웨어가 특정 IRQ로 라우팅하는 INTA만 사용합니다.

이미지에 보이는 숫자는 메모리 주소가 아니며 단순히 IRQ 번호를 16진수로 표현한 것입니다.

APIC는 256개의 인터럽트 벡터를 지원합니다.

관련 정보