서 버
이기사는 IBM 호환 기종 피시에서 IRQ, DMA, Base Address 의
할당 및 기능에 관한 것이다. IBM 호환 피시 및 주변기기에서 제공하는 문서는 그 장치가 사용하는 이들 자원에 대한 사항을 설명해 주고 있으나 표준 자원할당에 관한 사항은 알려주고 있지 않다.
이기사가 이 골치아픈 분야에 대한 안내자가 되길 바란다.
1. IRQ - Interrupt Request
IRQ는 Interrupt ReQuest를 말한다. 이는 ISA 슬롯(EISA 및 MCA에서도 같다)에 꼽힌 주변기기 카드가 CPU에게 뭔가 할 말이 있다며 어깨를 툭툭 치는 행동이다. 흔한 주변기기 카드는 내장모뎀, 랜카드(NIC : network interface cards), 사운드카드, SCSI 어뎁터, HDD 콘트롤러, FDD 콘트롤러, COM 포트 및 프린터 포트 등이다.
IRQ는 하드웨어 인터럽트이다. 이는 마더보드의 ISA 슬롯으로 물리적인 라인이 연결된다는 의미이다. ISA 슬롯에는 두가지 형태가 있다. 8비트와 16비트이다. 16비트는 8비트 슬롯에 16비트 익스텐션 슬롯이 추가된 형태이다.
8비트 ISA 슬롯으로는 8개의(IRQ 0~7) IRQ 라인이 연결된다. 16비트 익스텐션 슬롯으로는 추가로 8개의(IRQ 8~15) IRQ 라인이 더 연결된다. 일반적인 ISA 버스에는 총 16개의 IRQ가 있다. IRQ 0가 우선 순위가 가장 높고 IRQ7이 가장 낮다. IRQ8-15는 나중에 설명하는 것 처럼 특별한 우선권을 갖는다.
IBM이 AT 피시를 소개했을 때 IRQ8-15를 추가했다. 그러나 AT 피시를 8비트 XT와 후방 호환성을 갖도록 하기위해, 그리고 새로운 IRQ라인의 우선순위를 올리기 위해, 두 인터럽트 콘트롤러를 연결했다. 결과로 IRQ8-15는 IRQ2와 같은 우선권을 갖는다. 우선권이란 두 IRQ 라인이 동시에 서비스를 요청시 높은 우선권을 갖는쪽이 우선 서비스를 받는다는 뜻이다.
■ 중요
IRQ는 어느 한 순간에 한 개의 활성화된 장치에 대해서만 할당된다. 만약 2개의장치가 같은 IRQ를 가지면 이를 충돌이라 부른다. 이 경우는 IRQ 라인이 활성화될 때 CPU는 어느 장치와 접촉해야 되는지를 알 수 없다. 예를들어 모뎀과 랜카드가 동시에 IRQ5를 쓴다고 하자. 모뎀이 CPU에게 보낼 데이터가 있다면 IRQ5를 활성화할 것이다. 그러나 CPU는 모뎀과 대화를 해야할지 랜카드와 대화를 해야할지 알 수가 없다. 컴퓨터는 먹통이 되거나 아무 일도 일어나지 않거나 이다.
▷ IRQ 충돌이 피시 오작동의 가장 주요한 원천이다.
여기에 피시에서 IRQ를 선택하는 기준을 제시한다. IRQ는 우선 순위에 따라 나열했다.(위에서 나는 모든 IRQ 라인이 카드 슬롯으로 연결된다고 거짓말을 했다.)
|
IRQ |
기능 |
물리적 라인 |
ISA 버스 |
|
IRQ0 IRQ1 IRQ2 IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 |
System Timer Keyboard Controller Cascaded to IRQ8-15 Real-time clock *-Available(IRQ2) 랜카드 SCSI adapter PS2 마우스 Math coprocessor Primary IDE controller Secondary IDE controller Com2/Com4 Com1/Com3 LPT2/ 사운드 카드 Floppy drive controller Parallel port LPTI |
No No No No Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes Yes |
- - - - 8/16 bit 16 bit 16 bit 16 bit - 16 bit 16 bit 8 bit 8 bit 8 bit 8 bit 8 bit |
*. IRQ9는 IRQ2인 것처럼 보인다. 보통은 잘 사용되지 않는다. 미묘한 문제를 야기하기 때문이다. IRQ9인가 아니면 9에 연결된 2인가.
위는 IRQ 선택에 대한 가이드라인이다. 대부분의 오토디텍트 소프트웨어나 리눅스 운영체제는 위와 같이 IRQ가 할당되는 것으로 기대한다.
역자 주 ▶
위의 IRQ 중 10번 11번 두개만 특정 장치에 할당되어 있지 않고 모든 장치에서 사용이 가능하며, 2, 3, 4, 5, 7, 9, 12번 은 제한적으로 사용할 수 있다. 그 외의 IRQ는 피시의 기본 장치에서 사용하므로 추가적인 주변기기 카드에서 사용할 수 없다.
2번과 9번은 둘 중 하나만 사용이 가능하나 일부 피시에서 문제를 야기한다.
3,4,5,7,12번을 다른 장치에서 사용하려면 CMOS 셋업에서 해당 주변기기를 disable 해주어야한다.
▷ COM 포트 충돌
com1과 com3는 IRQ4를 공유한다. 때문에 한 순간에는 한 개의 장치만 사용이 가능하다. 만약 com1에 마우스를 쓴다면 com3에 연결된 내장모뎀을 사용할 수 없다. 몇몇 통신프로그램에서 이것을 가능하게 하기도 하나 이상한 결과를 가져온다. 흔한 증상은 마우스를 움직이면 터미널프로그램에 쓰레기 문자가 나타난다.
com2와 com4도 IRQ3을 공유한다. 그러나 대부분은 com2를 사용하지 않으므로 내장모뎀을 com4로 셋팅하는건 별 문제가 없다. com2는 보통 외장형 모뎀이나 플로터에 많이 사용되고 있다.
|
Port |
IRQ |
기능 |
|
COM1 COM2 COM3 COM4 |
4 3 4 3 |
마우스 플로터/외장모뎀 사용않음(마우스와 충돌) 내장모뎀(비사용) |
2. DMA - Direct Memory Access
이는 주변기기가 CPU를 거치지 않고 직접 메모리와 읽기/쓰기를 할 수 있는 통로를 연결하는 것이다. 이는 CPU가 다른 작업을 할 수 있도록 부담을 덜어준다.
피시에는 8개의 DMA 채널이 있다 : DMA0-7
이들은 8비트와 16비트 채널로 나뉘는데 8비트 슬롯과 16비트 슬롯에 대응한다.
아래는 DMA 채널을 선택하는 기준이다.
|
DMA |
기능 |
Physical Line |
ISA Bus |
Channel |
|
DMA0 |
Available |
Yes |
16 bit |
8 bit |
|
DMA1 |
Sound |
Yes |
8 bit |
8 bit |
|
DMA2 |
Floppy Disk controller |
Yes |
8 bit |
8 bit |
|
DMA3 |
ECP Parallel Port |
Yes |
8 bit |
8 bit |
|
DMA4 |
*-Not used |
No |
- |
16 bit |
|
DMA5 |
Sound |
Yes |
16 bit |
16 bit |
|
DMA6 |
SCSI |
Yes |
16 bit |
16 bit |
|
DMA7 |
Available |
Yes |
16 bit |
16 bit |
주 ▶
DMA0은 16비트 ISA 버스에 있으나 8비트 폭을 갖는다.
DMA4는 첫번째 8비트 DMA 콘트롤러에 연결되므로 사용되지 않는다.
▷ DMA 충돌이 피시 오작동의 2번째 원천이다.
IRQ와 같이 한 순간에 활성화된 장치에 한 개의 DMA 채널만을 할당할 수 있다. 활성화란 단어를 주목하라. 이는 그 장치가 켜있고 소프트웨어에서 그 장치를 접속하고 있음을 의미한다.
한 순간에 한 장치만 활성화된다면 2개의 장치에 1개의 DMA 채널을 할당할 수 있다. 위험하기는 하나 가능하다.
3. Base Address
베이스 어드레스는 I/O ports, I/O address, base ports라고도 불린다. 이들은 운영체제와 IO 장치사이의 가교역할을 하는 메모리 장소이다. 주변기기는 운영체제와 베이스어드레스를 통해 대화한다. 각 주변기기는 독자작인 베이스어드레스를 갖고 있어야 한다.
표준 베이스 어드레스 할당 (16진법)
|
060h + 064h |
Keyboard controller |
|
170h + 376h |
Secondary IDE Hard-drive controller |
|
1F0h + 3F6h |
Primary IDE Hard-drive controller |
|
220h |
사운드카드 |
|
300h |
랜카드 |
|
330h |
SCSI adapter |
|
3F2h |
Floppy Drive Controller |
|
3F8h |
COM1 |
|
2F8h |
COM2 |
|
3E8h |
COM3 |
|
2E8h |
COM4 |
|
378h |
LPT1 |
|
278h |
LPT2 |
▷ 베이스 어드레스 충돌이 피시 오작동의 세번째 주요 요인이다.
위는 베이스 어드레스의 일부분의 사용 내역이다.
그 외의 사용내역은 피시에 무엇이 장착돼 있느냐에 좌우된다.
4. 리눅스에서의 자원배분에대한 정보
리눅스에서 위의 자원에 대한 구성을 보려면 /proc 디렉토리에서 아래 명령을 주라.
cat /proc/interrupts 사용중인 IRQ 명세 [출처] IRQ, DMA, Base Address에 대한 이해 |작성자 포비
cat /proc/ioports 사용중인 base addresses 명세
cat /proc/dma 사용중인 DMA 명세

잘 배우고 갑니다.