· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/IRQ_DMA-TRANS

IRQ, DMA, 베이스 주소에 대한 안내서

IRQ, DMA, 베이스 주소에 대한 안내서

원자: Eugene Blanchard mailto:blanchas@cadvision.com

March 1999 Linux Gazette 38 번역: 장범수 mailto:bschang@kldp.org 2000년 6월 5일
IBM 호환 기종의 컴퓨터들이 쓰는 IRQ, DMA, 베이스 주소 (입출력 포트: IOPorts)가 이 문서의 주제이다. 호환 기종 컴퓨터와 주변 기기의 설명서를 읽다가 보면 기계들이 쓸 수 있는 자원의 목록을 열거해 놓기는 하지만, 정작 자원 배정 방법 그 자체는 설명을 하지 않는 것이 일반적이다. 이 문서가 이러한 불편한 것을 좀 더 쉽게 이해하도록 함과 동시에 IRQ, DMA, 베이스 주소 등의 설정을 할 때 이해와 도움을 줄 수 있다면 하는 것이 저자의 바램이다.

1. IRQ - 인터럽트 리퀘스트

IRQ는 인터럽트 리퀘스트 (Interrupt ReQuest)의 약자이다. [인터럽트 리퀘스트 -프로그램 중단 요청]. 이것은 ISA 슬롯에 연결되어 있는 주변 기기나 카드가 CPU에게 무엇인가 전할 말이 있을 때 마치 CPU의 "어깨를 툭 쳐서 주의를 끄는 것"과 동일한 역할을 한다 (EISA와 MCA 슬롯에서도 같은 역할을 한다). 주변 기기라는 것의 예를 들자면, 모뎀, 네트워크 카드, 사운드 카드, 스커지 어뎁터 카드, 하드 드라이브 콘트롤러, 플로피 드라이브 콘트롤러, COM 포트와 프린터 포트 등이 있다.

IRQ는 하드웨어적 인터럽트인데, 이 것은 머더보드에서 ISA 슬롯으로 연결되는 선 (線 -실제적으로는 기판의 회로선)이 물질적으로 존재하고 있다는 말이기도 하다. ISA 슬롯에는 8 비트와 16 비트 두 종류가 있다. 16 비트용 슬롯은 기본 8 비트 슬롯에 16 비트 연장 슬롯 (Extension slot)이 연장 연결되어 있는 형식이다.

8 비트 슬롯에는 여덟 개까지의 IRQ (IRQ0 - IRQ7) 선 (線)이 하나씩 각각 연결되도록 되어 있다. 16 비트 슬롯용에는 또 다른 여덟 개의 IRQ (IRQ8 - IRQ15)가 하나씩 추가로 붙게 된다. 그러므로 ISA 버스를 쓰는 PC에는 전부 열 여섯 개의 IRQ가 존재한다. IRQ0이 (인터럽트의) 우선적 사용권을 행사하며, IRQ7이 제일 마지막 우선권을 가지고 있다. IRQ8에서 IRQ15는 좀 "특별한" 우선권이 있다.

IRQ8에서 15는 IBM이 AT 컴퓨터를 만들었을 때 처음 소개된 사양이다. 그 당시에 나와 있던 8 비트 XT (8088) 컴퓨터와 AT (286) 컴퓨터와의 호환성을 유지하기 위해서, 또한 이 새로운 IRQ의 우선권을 "높이기" 위한 방법의 하나로 두 개의 인터럽트 콘트롤러를 직렬 연결해서 만들었다. 이런 이유로, IRQ8에서 15 번까지는 IRQ2와 동급의 우선권을 가지게 된다. 여기에서 우선권이라 하는 것은 두 개의 인터럽트가 동시에 작동되었을 때, 높은 우선권을 가진 것이 먼저 처리됨을 뜻한다.

중요 사항: IRQ는 사용되고 있는 (Active) 디바이스에 한 개씩 만 지정되어야 한다. 만약 두 개의 디바이스가 하나의 IRQ를 공유하고 있는 경우에는 이러한 상황을 콘플릭트가 일어났다고 한다. 만약 이 공유되고 있는 IRQ 선 (線)이 가동된 경우에 CPU는 둘 중의 어느 디바이스에 "통신을 해야 하는 지" 모를 것이다. 모뎀이 이미 IRQ5를 지정해 서 사용하고 있고, 네트워크 카드가 같은 IRQ5를 사용하고 있는 상황을 예로 들어 보자. 만약 모뎀 이 CPU에 전달해 주어야 하는 정보가 있을 때면 이것이 IRQ5를 켜올 것이다. 하지만 CPU는 모뎀 에 응답을 해야 할지, 아니면 NIC에 응답을 해야 할지 알 방법이 없다. 그 상황에서 컴퓨터는 멈춰 버리거나 아니면 아무런 일도 아닌 것이 될 수 있다.

***IRQ 충돌은 PC에서 가장 많이 발생되는 문제이다. ***

아래에 일반적으로 구성된 IRQ 세팅을 적어 놓았다. 우선권을 가진 IRQ 순서대로 적은 것이다. (위에서 모든 IRQ 선 (線)이 카드 슬롯으로 간다고 한 것은 엄밀히 따지만 거짓말인 셈이라...)

IRQ    기능                            연결선 (線)     ISA 버스
------------------------------------------------------------
IRQ0   System Timer                     No               -                       
        시스템 타이머                    존재하지 않음

IRQ1   Keyboard Controller              No               -
        키보드                           존재하지 않음

IRQ2   Cascaded to IRQ8-15              No               -
        IRQ8-15로 직렬 연결              존재하지 않음

IRQ8   Real-time clock                  No               -
        시계                             존재하지 않음

IRQ9   *-Available(IRQ2)                Yes              8/16 비트
        *-빈 공간 (IRQ2)                 존재

IRQ10  NIC                              Yes              16 비트
        네트워크 카드                    존재

IRQ11  SCSI adapter                     Yes              16 비트
        스카시 어뎁터 카드               존재

IRQ12  Motherboard mouse/available      Yes              16 비트
        머더보드 마우스 / 빈 공간        존재

IRQ13  Math coprocessor                 No               -
        부동 연산기                      존재하지 않음

IRQ14  Primary IDE controller           Yes              16 비트
        첫 번째 IDE 콘트롤러             존재

IRQ15  Secondary IDE controller         Yes              16 비트
        두 번째 IDE 콘트롤러             존재

IRQ3   Com2/Com4                        Yes               8 비트
        COM2 / Com4                      존재

IRQ4   Com1/Com3                        Yes               8 비트
        COM1 / Com3                      존재 

IRQ5   Sound card/LPT2                  Yes               8 비트
        사운드 카드 / LPT2               존재

IRQ6   Floppy drive controller          Yes               8 비트
        플로피 드라이브 콘트롤러         존재

IRQ7   Parallel port LPT1               Yes               8 비트
        패러렐 포트 LPT1                 존재 
*- IRQ9는 마치 IRQ2인 것처럼 보인다. 이는 문제가 발생하는 경우가 많기 때문에 사용하지 않는 경우가 많다. 진짜 IRQ9인가? 아니면 IRQ2가 IRQ9로 직렬 연결 (Cascade)된 것인가? 어떤 상황으 로 맞추어 쓸 것인가? 만약 16 비트 버스 ISA 슬롯에 8 비트 ISA 모뎀을 사용한다면? 문제가 발 생될 수 있는 상황이 되는 것이다.

위의 표는 여러분이 IRQ를 골라서 쓸 때 도움이 되도록 적어놓은 것일 뿐이다. 예로서 여러분이 스커지를 쓰지 않는 상황이라면 IRQ11은 빈자리가 되니까 다른 네트워크 카드나 다른 디바이스를 쓸 수 있을 것이다.

대부분의 자동 인식을 하는 소프트웨어나 리눅스 등의 운영 체계는 IRQ가 위와 같이 맞추어 있기를 원할 것이다.

2. COM Port Conflicts

우선 볼 것은 (PC 뒤에 있는 DB9 포트를 쓰는) COM1과 COM3이 IRQ4를 공유한다는 것이다. 이 것은 둘 중 하나의 디바이스가 사용되는 동안 다른 디바이스가 인터럽트의 사용을 하지 않는 경 우에 만 써야 한다. 만약 COM1에 마우스를 연결해서 사용하는 경우에는 COM3을 써서 내장 모뎀 을 연결하는 등으로 쓰면 안된다는 뜻이다. 만약 그대로 쓰면 콘플릭트가 발생된다. 어떤 통신 풀 그림은 이러한 조합을 지원해 주기도 하지만, 대부분의 경우는 그냥 죽어 버리거나 운영이 제대로 되 지 않는 상황이 되게 된다. 만약 마우스를 움직이면 통신 프로그램이 쓰레기 문자를 받아오는 등의 경우가 될 것이다.

(PC 뒤의 DB25 포트를 쓰는) COM2와 COM4도 비슷한 문제를 가지고 있지만, 대부분의 사람들은 COM4를 쓰지 않는다. 일반적으로 COM2에 모뎀을 연결해서 쓰는 경우가 많다. 만약 COM4가 사용되는 경우에는 외장형 모뎀이나 플로터에 연결되는 경우가 많다. 일반적으로 (COM2와 COM4) 둘 다 동시에 사용되는 경우는 없다.

일반적인 컴 포트 배정

포트  IRQ     기능
-------------------------------------------
COM1  4       마우스
COM2  3       플로터 / 외장 모뎀 / 사용 안함
COM3  4       사용 안함 (마우스와 충돌)
COM4  3       내장 모뎀 / 사용 안함

3. DMA - 디렉트 메모리 엑세스

DMA는 Direct Memory Access의 약자이다. 이 것은 디바이스가 CPU를 거치지 않고 직접 메모리를 읽고 쓸 수 있는 방법으로 쓰이고 있다. 이 방법을 쓰면 CPU가 작업을 할 일의 수고를 어느 정도 덜어 주는 역할을 한다.

PC에는 DMA0에서 DMA7까지의 여덟 개 DMA 채널이 있다. 이는 8 비트 ISA 슬롯과 16 비트 ISA 슬롯에 따라서 8 비트 채널과 16 비트 채널로 나뉘어 진다.

DMA 채널을 고르는 데 도움이 되도록 예를 적어 보았다.

DMA   기능                    선 (線)         ISA 버스        채널 폭
----------------------------------------------------------------
DMA0 Available                존재           16 비트          8 비트
        빈자리

DMA1 Sound                    존재            8 비트          8 비트
        사운드

DMA2 Floppy Disk controller   존재            8 비트          8 비트
        플로피 디스크 콘트롤러

DMA3 ECP Parallel Port        존재            8 비트          8 비트
        ECP 패러렐 포트

DMA4 * - Not used             존재하지 않음   -              16 비트
        *- 사용하지 않음

DMA5 Sound                    존재           16 비트         16 비트
        사운드

DMA6 SCSI                     존재           16 비트         16 비트
        스

DMA7 Available                존재           16 비트         16 비트
        빈자리

주의: DMA0은 16 비트 ISA 버스에 연결되어 있지만 폭은 8 비트에 불과하다. DMA4는 첫 번째 8 비트 DMA 콘트롤러에 직렬 연결 (Cascade) 되어 있기 때문에 마음대로 골라서 쓸 수 없다.

***DMA 충돌은 PC에서 발생되는 두 번째로 많은 문제일 것이다. ***

IRQ와 마찬가지로, DMA도 각각의 사용되고 있는 디바이스에 각 하나씩 배정되어야 한다. 그렇지 않으면 충돌이 발생한다. 위의 문장에서 주의를 둘 것은 "사용되고 있는" 이라는 말이다. 한 개의 DMA를 두 개의 디바이스에 연결할 수 있지만, 이 경우에는 연결된 디바이스가 교대로 "사용되고 있는" 상황이어야 한다.

4. 베이스 주소

베이스 주소는 종종 I/O 포트, I/O 주소, I/O 포트 주소, 또는 베이스 포트라고도 불린다. 베이스 주 소는 운영 체계와 (주변 기기적인) I/O 디바이스 사이에서 인터페이스를 마련해 주는 메모리의 장소 이다. 주변 기기는 이 베이스 주소를 써서 운영 체계와 통신을 하게 된다. (슬롯이나 포트로 연결 된) 각 주변 기기는 고유의 베이스 주소를 가지고 있어야 한다.

일반적 베이스 주소 배정의 경우 (h- 16 진수)
------------------------------------------------------
060h + 064h             Keyboard controller
                        키보드 콘트롤러

170h + 376h             Secondary IDE Hard-drive controller
                        두 번째 IDE 콘트롤러

1F0h + 3F6h             Primary IDE Hard-drive controller
                        첫 번째 IDE 콘트롤러

220h                    Sound Card
                        사운드 카드

300h                    NIC card
                        네트워크 카드

330h                    SCSI adapter
                        스커지 어뎁터

3F2h                    Floppy Drive Controller
                        플로피 드라이브 콘트롤러

3F8h                    COM1

2F8h                    COM2

3E8h                    COM3

2E8h                    COM4

378h                    LPT1

278h                    LPT2

***베이스 주소 충돌은 PC에서 세 번째로 많이 발생되는 문제이다. ***

위의 표는 사용되는 베이스 주소의 일부 영역에 불과하다. 또한 사용되는 베이스 주소는 PC에 무엇 이 설치되어 있는 가에 따라서 달라진다.

5. 리눅스용 자원 정보

여러분이 쓰고 있는 리눅스 구성을 보려면 /proc 디렉토리에서 다음의 문자 파일을 살펴보면 된다.

cat  /proc/interrupts             사용되고 있는 인터럽트 목록
cat  /proc/ioports                사용되고 있는 ioports (베이스 주소) 목록
cat  /proc/dma                  사용되고 있는 DMA 목록 

6. 번역자의 말

플러그-앤드-플레이 하우투를 번역하다가 이 문서를 번역하게 되었습니다. 플플하우투는 문서가 길 고 문장이 지루한 것에 비하면 이 문서는 내용이 짧고 있는 그대로 만 설명을 한 것이 마음에 들어 서 번역을 하기로 하였습니다. 아무래도 급히 번역을 한 것이고 원저자에 비하면 제가 그렇게 문장 실력이 있는 편이 아닌지라, 제 번역은 조금 문장이 이상하게 표현된 부분이 많이 있을 겁니다. 이해 바랍니다.

문서가 짧은 만큼 자세한 설명은 하지 않고 있습니다. 좀 더 자세한 설명을 원하신다면 플러그-앤드-플레이 하우투를 읽어 보시거나 저자의 URL에서 보다 많은 정보를 보실 수 있습니다. 원자의 또 다른 문서인 "Introduction to Data Communications"를 보시면 데이터 통신에 대한 전반적인 문서가 잘 정리되어 있습니다. http://www.cadvision.com/blanchas/intro_to_data_com/intro.html

6.1 감사의 말 (Acknowledgements)

  • Eugine Blanchard: 번역을 흔쾌히 허락해 주신 유진 블랜챠드 님에게 감사드립니다. Thank you very much for giving me a permission to translate this wonderful document!







유진 블랜챠드 저작권 소유 1999년.
리눅스 가제트 38호 (1999년 3월판)에 기재되었음.

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

원문 URL: http://www.linuxgazette.com/issue38/blanchard.html

저자 홈 페이지: http://www.cadvision.com/blanchas/




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-11-25 18:13:15
Processing time 0.0257 sec