APIC(Advanced Programmable Interrupt
Controller)
아래글은 제가 국내의 케벤이나 테크노아
등에서 자료를모으고 제가 미리 알고 있던 사항이 짬뽕된 것입니다.
실제로 컴퓨터가 종종 불안한 모습을
보이는 이유 중에는 OS를 잘못 설치했거나, 드라이버가 잘못됐거나 하는
이유가 있다. 하지만 드라이버를 포함한 소프트웨어 설치는 완벽하게
되었지만 하드웨어 충돌에 의한 시스템 불안 중 대부분의 이유는 PCI
장비의 IRQ 공유에 의한 것이다. 자 그럼 IRQ 공유를 막을 수 있는 APIC에
대해서 알아보자.
1. IRQ(Interrupt ReQuest) IRQ는 인터럽트 리퀘스트 (IRQ:Interrupt Request Queue)의 약자이다. 인터럽트는
시스템에서 발생하는 예외적인 사건을 신속히 처리하기 위한 기법으로
인터럽트가 발생하면 해당 인터럽트 처리 루틴을 먼저 수행한 후 원래의
프로그램으로 돌아오는 방식이다. 인터럽트에는 많은 종류가 있지만
여기서는 우리에게 필요한 외부장치와의 인터럽트만 생각하도록 하자.
우리에게 주변장치(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 계열만 지원을 하죠. 물론 메인보드에서
지원을 해죠야 합니다.
-그림은 EPOX의 4BDA2+ 의 바이오스입니다-
이 기능을 키시면 IRQ가 가상적으로
0~25번까지 늘어나게 됩니다. 물론 IRQ 공유는 생기지 않습니다.
위그림은 APIC를 지원하지 않은 경우입니다.
0~15번 까지뿐이 없고, 5번과 11번에서 많은 장비들의 IRQ 공유가 있습니다.
위 그림은 APIC를 사용하는
경우입니다. 23번까지 사용중이고, 어디하나 공유된 것이 없습니다.
*참조* 아래 글은 MSD 하드웨어 클럽 게시판에 제가 올린 질문과 명유재라는 분이 올리신 답변입니다. 저는 더 공부를 해야겠습니다. 제가 이 글을 쓰고도 잘 모르겠군요...
질문 : 질문은 메인보드에서 아무리 장비들을 DISABLE시켜도 IRQ는 PCI에 어느 이상 할당되지 않습니다. 예로 1번과 4번이 공유하도록 설계되었다면....이넘들은 떨어지지를 않죠
질문은 왜 이런가 이고요.....PCI에 할당될 수 있는IRQ가 제한되어 있기 때문인가요?
답변 : PCI에는 사용할 수 있는 IRQ가 한정되어 있답니다.
왜냐?
호환성 문제 때문입니다.
IRQ를 마구섞을 수 있다면 호환성에 심각한 영향을 받습니다.
시스템 타이머와 보조프로세서의 IRQ가 고정되어 있고 바꿀 수 없듯 PCI IRQ는 정해진 범위 내에서만 움직입니다.
그리고 APIC라는 기능은 하드웨어적으로 이미 한정된 IRQ를 소프트웨어적으로 서로 다르게 보이도록 해주는 기능을 하지만 실질적으로 하드웨어적인 충돌을 피할 수 있도록 제작된 것이 아니기 때문에 실제 사용을 한다고 해도 그리 큰 이득은 없습니다. 보기 좋아지는 기능을 하겠지만, 그렇다고 그 기능이 없는 것이 그리 큰 문제가 되지는 않습니다.
|