IRQ, DMA, Base Address에 대한 이해

Copyright (c) 1999, Eugene Blanchard
Published in Issue 38 of Linux Gazette, March 1999

번역 : 배 철수 [리눅스 월드 발행인]

 

 

    이기사는 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 명세
    cat  /proc/ioports        사용중인 base addresses  명세
    cat  /proc/dma            사용중인 DMA 명세




▲ top

home으로...