APIC(Advanced Programmable Interrupt
Controller)
아래글은 제가 국내의 케벤이나 테크노아
등에서 자료를모으고 제가 미리 알고 있던 사항이 짬뽕된 것입니다.
실제로 컴퓨터가 종종 불안한 모습을
보이는 이유 중에는 OS를 잘못 설치했거나, 드라이버가 잘못됐거나 하는
이유가 있다. 하지만 드라이버를 포함한 소프트웨어 설치는 완벽하게
되었지만 하드웨어 충돌에 의한 시스템 불안 중 대부분의 이유는 PCI
장비의 IRQ 공유에 의한 것이다. 자 그럼 IRQ 공유를 막을 수 있는 APIC에
대해서 알아보자.
1. IRQ(Interrupt ReQuest) IRQ는 인터럽트 리퀘스트 (Interrupt ReQuest)의 약자이다. 인터럽트는
시스템에서 발생하는 예외적인 사건을 신속히 처리하기 위한 기법으로
인터럽트가 발생하면 해당 인터럽트 처리 루틴을 먼저 수행한 후 원래의
프로그램으로 돌아오는 방식이다. 인터럽트에는 많은 종류가 있지만
여기서는 우리에게 필요한 외부장치와의 인터럽트만 생각하도록 하자.
우리에게 주변장치(peripherals)라고
알려진 것이 CPU에게 전달사항이 있을 경우 알려주기 위함이다. 예로
프린터 출력이 끝나면 다음에 어떤 일을 할
것인지를 결정하도록 어떠한 신호를 보낼 필요가 있다.
IRQ는 여러 장치에서 오는 신호들이 같은 인터럽트
라인에서 오기 때문에 이를 구별하기 위해서는 주변장치에 고유한 값을
지정해 줄 필요가 있다. 만약 장비들이 PNP를 지원하지 않는다면 사용자가
직접 장비마다 IRQ 번호를 지정해 주어야 합니다.
위의 글이 제가 알고 있는 IRQ에 대한
모든 것이지만 PCI PNP 장비들이 어떻게 해서 IRQ를 공유하는지는 이해가
잘 가지 않는군여...(ㅡ.ㅡ;;)
2. . PCI장비들의 IRQ 공유
일반적으로 PC규격의 메인보드가 지원하는
IRQ번호는 0~15번까지입니다. 참고로 0번은 시스템 타이머, 1번은 키보드,
3,4번은 씨리얼 포트, 6번은 플로피 드라이브, 7번은 패러럴 포트, 8번은
시스템클럭, 12번은 PS/2 마우스, 13번은 수치 연산장치, 14,15번은
IDE 컨트롤러입니다.
물론 키보나 마우스는 USB장치로 없앨
수 있고, 3,4번은 요즘 거의 안쓰는 씨리얼 포트이고 해서 많은 장치들이
사용하지 않는 IRQ를 확보할 수 있지만 이상하게도 일반적인 메인보드는
PCI장비들에 4~5개만 IRQ를 제공합니다. 한마디로 아무리 IRQ가 남아도
PCI장비들에 할당되지가 않고(왜그런지는 잘 모르겠네요...아시는 분은
제발졈 알려주세요...), 그렇기 떄문에 PCI 장비들이 IRQ를 공유하게
됩니다. 물론 남지 않는다면 당연히 공유하겠죠.
기본적으로 제데로만 설계가 되었다면!!!!
PCIPNP 스펙상 절대 IRQ공유로 인한 충돌은 나타나지 않는다고
PNP를 만든 사람들은 애기하지만(누군지는 아시져?) 우리는 다 압니다....항상
문제가 생긴다는걸......많은 장비들을 가진 분들은 이에 애로사항이
많으실 겁니다. 스카시카드, USB 컨트롤러, 티비카드, 사운드 카드,
랜카드 등등.........
그래서 나타난게 APIC입니다. 아래의
바이오스 화면을 보면 APIC 옵션이 있구요, 그 밑에 버전은 1.1은 윈도우
NT 사용자가, 1.4는 2000이나 XP 사용자가 선택하시면 됩니다. 이 APIC는
윈98계열에서는 지원하지 않습니다. NT 계열만 지원을 하죠. 물론 메인보드에서
지원을 해죠야 합니다.
이 기능을 키시면 IRQ가 가상적으로
0~25번까지 늘어나게 됩니다. 물론 IRQ 공유는 생기지 않습니다.
위그림은 APIC를 지원하지 않은 경우입니다.
0~15번 까지뿐이 없고, 5번과 11번에서 많은 장비들의 IRQ 공유가 있습니다.
위 그림은 APIC를 사용하는
경우입니다. 23번까지 사용중이고, 어디하나 공유된 것이 없습니다.
|