IRQ는 왜 16개 뿐인가?

K군은 언제나 바쁘다.

K-BENCH에서 많은 기사와 풍부한 커뮤니티 등을 두루 섭렵한 탓인지 주변에서는 K군에게 많은 조립문의와 그 후로도 이어지는 잦은 A/S 전화에 시달리고 있다. (아마 주변의 PC를 많이 조립해주었던 유저라면 동감할 듯.. 또한 조립 중에 시켜 먹는 자장면은 정말 맛있다!!)

또 다시 울린 전화벨..

문의 내용은 네트워크 공유를 위해 새로 장착한 랜카드 (NIC : Network Interface Card)를 인식하지 못하고 제어판의 장치관리자에 노란 느낌표가 떠 있다는 내용이었다. 문제의 원인을 쉽사리 알아챈 K군은 마침 집과 가까워서 출장A/S를 나간다.  â€˜ì´ì œëŠ” ê·¸ 녀석과 인연을 끊으리...’ 라는 생각을 하며..

도착한 K군은 슬롯 바꿔끼기라는 방법으로 쉽게 문제를 해결한다. 하지만 "왜 IRQ는 16개 밖에 없는거지? 수십 개로 늘리면 이런 일은 없을 거 아냐?” 라는 질문에 머뭇거리다 “그거야 뭐..” 말끝을 흐리다 “엇.. 약속 있는데 담에 보자”라며 다시 발걸음을 집으로 향한다.

왜 IRQ는 16개 밖에 없을까?

IRQ(interrupt request)란 장비를 식별하기 위한 식별번호. PC에 있어 IRQ란 컴퓨터 부품 (키보드나 사운드카드 등)에서 나오는 신호를 말한다. IRQ 신호는 IRQ 라인을 따라서 인터럽트 제어기까지 보내진다. 인터럽트 제어기는 들어오는 IRQ에 우선권을 지명에 명령을 CPU에 옮겨놓는다.

CPU는 자기의 우선순위에 따라 연산, 제어업무를 하는 중에 각 장치에서 필요한 요청에 잠시 자기의 일을 중단하고 신호를 처리하고 또 자신의 본연의 임무를 수행하는 것이라 1초에 수 천번의 인터럽트를 처리해도 이미 GHZ급의 CPU에게는 일도 아니리라..

간단히 어떤 부품이 주어진 일을 하기 위해 CPU에 신호를 보내는 것이라 생각하면 되겠다.

현재 필자의 IRQ상태는 이렇게 구성되어 있다.

▲IRQ

현재의 시스템은 16개의 인터럽트 요청 레벨 신호를 가지고 있다. 이것은 16개의 다른 장치들이 프로세서를 인터럽트 한다는 말과 같다. 이전 시스템에서는 8개의 IRQ만 존재했다.

그 인터럽트 회로는 단 8개의 인터럽트만을 다룰 수 있었던 INTEL 8259 칩에 내장되었기 때문이다. 1982년 이후의 시스템은 더 많은 IRQ가 필요했으므로 PC 디자이너들은 또 다른 8259를 추가했다.

그렇지만 이 디자이너들은 새로워진 마더보드가 너무 급작스럽게 변하는 것은 원하지 않았으므로 이 별도의 IRQ를 PC 디자인에 추가하는 방법을 찾기 시작했다. 그렇게 하려면 CPU가 두 번째 8259를 예약하려면 첫 번째 8259에 대한 예약을 마치고 난 후에 하도록 설계하였다.

첫 번째 8259는 인터럽트를 받을 때마다 곧바로 CPU와 통신하게 되어 버린다.

즉 IRQ 0부터 7번까지는 언제라도 활성화 되어 있는 것이다. 두 번째 8259 IRQ(8-15번까지)중 하나가 활성화 되면 두 번째 8259는 CPU에게 통신을 하는 것이 아니라 첫 번째 8259에게 먼저 신호를 보내는 것이다.

그러면 어떤 장치가 IRQ 8~15번 중 하나를 활성화 시키면 두 번째 8259는 첫 번째 8259에 있는 IRQ2를 활성화 시킴으로서 응답하게 되는데 이로서 CPU에게 인터럽트가 있음을 알리게 된다.

반면에 8개의 IRQ를 얻었지만 동시에 하나를 잃게 되는 일이 발생하는데 IRQ2가 그 별도의 여덟 개의 IRQ용으로 전용되었기 때문이다. 그리고 IRQ2는 더 이상 확장보드에서는 사용할 수 없게 되었다. 그 이유는 엄청난 위력을 가지고 있던 IBM에서 그 라인을 IRQ9번으로 재할당하기로 결정했기 때문이다. (1984년에 IBM에서는 16비트 호환기종을 발표되면서 변칙적으로 “끼워넣기!”의 방법을 선택했다.)

▲IBM AT 상의 8259

사실 IRQ2는 IRQ9를 의미한다.

하나의 8259가(IRQ 0~7까지)가 또 다른 8259를 위해 작동하도록 만드는 이러한 프로세스를 IRQ 캐스케이딩(Cascading)이라 한다.

IRQ

장  ì¹˜

설 명

0

타이머

변경불가

1

키보드

변경불가

2

IRQ9 캐스케이드

변경불가

3

COM2, 4

둘 중 하나만 사용가능

4

COM1, 3

둘 중 하나만 사용가능

5

 

자유롭게 사용가능

6

플로피디스크콘트롤러

 

7

LPT1

 

8

실시간 클럭

변경불가

9

 

 

10

 

 

11

 

 

12

PS/2 포트

 

13

코프로세서

변경불가

14

주IDE

 

15

ë³´ì¡° IDE

 

▲일반적인 IRQ

IRQ 우선순위

시스템에서의 IRQ는 우선 순위대로 응답한다. 한꺼번에 16개의 인터럽트 신호를 발생시킨다면 CPU는 IRQ0에 먼저 응답하고 그 다음부터 1,2,3등의 순서대로 응답한다. IRQ8번부터 IRQ15번 까지는 IRQ에 캐스케이딩 되므로 이 IRQ들은 IRQ2번의 우선순위를 따르게 된다.

즉 IRQ의 우선 순위는 0, 1, 2(8, 9, 10, 11, 12, 13, 14, 15), 3, 4, 5, 6, 7이 되는 것이다.

가장 높은 우선 순위에 타이머가 있다. 이것은 시스템 타이머로서 전체 시스템을 작동시키도록 하는것이다. 이 장치가 지시하는 일을 시스템의 나머지 부분도 가장 빨리 알아야 한다. 그 다음이 키보드 이다. 키를 누르는 순간 바로 시스템이 응답하도록 하기 위해서며 IRQ 8~15번 까지로 캐스케이딩 해주는 IRQ2가 그 다음이다. 그 다음으로 실시간 클럭이 있다.

IRQ 충돌

▲강제설정이 가능하다

대부분의 보드들은 IRQ강제할당 기능을 지원한다. PCI슬롯마다 IRQ를 지정할 수 있고 바이오스에서 조정가능하지만 이런 기능이 없는 경우 필살 기술인 “슬롯 이리저리 바꿔끼기”란 방법으로 따라다니는 IRQ 충돌 문제를 멀찌감치 해결할 수 있다.

보드 내에 프라미스나 HPT의 레이드 컨트롤러를 보드에 내장하고 있다면 컨트롤러들이 IRQ를 하나씩 점유하고 있으므로 공유하고 있는 슬롯은 먼저 비워 놓고 운영체제를 설치 하는 것이 충돌로 인한 시간낭비를 줄일 수 있는 방법일 것이다.. 보드 제조사에서도 비워놓기를 권장한다.

현재는 운영체제에서 대부분 완벽하게 충돌 없이 IRQ를 분배, 공유하고 있고 USB장비가 많아지는 관계로 스트레스 받을 일이 거의  ì—†ì§€ë§Œ  ëª‡ 년 전만해도 COM포트에 모뎀설치로 “이미 포트가 열려있습니다.” 라는 문구를 접하신 유저도 많으리라..


케이벤치 많이 본 뉴스