채널과 DMA방식의 차이점..
다시말해서 채널(여기에서는 IOP를 뜻함)은 i/o 관련 프로세스를 직접처리하게되
고 DMA는 해당 프로세스는 CPU에서 처리하고 단지 i/o 작업만을 DMA가 담당하게됩니다.
쉽게 말하자면 채널의 방법은 I/O에 관련된 프로세스를 CPU에서 처리하는게 아닌
일종의 i/o전담 프로세서에서 직접처리하고(DMA를 IOP에서 컨트롤하게됨) 프로세스의 처리 결과를 cpu와 전달하는 형태로 하게되고, 단순히 DMA를 사용하는 경우는 I/O에 관련된 프로세스를 CPU에서 직접처리하게 됩니다.(DMA의 컨트롤을 CPU에서 하게됨,단순하게 채널은 i/o 작업(DMA) + 프로세스, DMA는 i/o 작업 이죠)
두가지 방식은 CPU의 프로세스처리에서 큰 차이점을 나타내는데
DMA를 CPU가 직접 컨트롤할 경우 CPU에서 전에 답변해드렸듯이 i/o 작업동안 프로세스를 대기시키고
다른 프로세스를 처리하기 위하여 i/o가 필요한 프로세스를 저장하게 됩니다.
채널의 경우는 CPU에서 I/O 가 필요한경우 해당 프로세스를 IOP에 넘겨주고
자신은 다른 프로세스를 처리하게됩니다(즉 채널의 경우 중간단계에서 CPU가 중단
중인 프로세스를 저장할 필요가 없습니다.)
채널을 사용하는 쪽이 CPU의 효율성면에서 불필요한 단계가 없어짐으로 훨씬 나은
성능을 보여주게 되는 것입니다.
IOP는 일종의 프로세서이기 때문에 자체적으로 프로세스 처리를 위한 로컬 메모리를 따로 가지고 있으며 DMA에 대한 컨트롤 및 각 인터럽트 처리를 도맡아서 하게 됩니다.
즉 DMA와 DMA채널은 서로 다른것이 아니라 중간단계에 I/O 처리용으로 특화된 프로세서가 있어서 DMA를 컨트롤할것인가 아니면 CPU에서 DMA를 직접 컨트롤할 것인가라는 차이점을 말하는 것이라고도 볼수 있습니다.
단순히 예를 들어서 그래픽카드에 GPU(GRAPHIC PROCESS UNIT)가 IOP의 역활을 보여준다고 볼수 있겠네요(물론 IOP라고 말할수는 없는것이지만 단순히 역활상으로 본다면)
화면출력에 관련된 프로세스를 CPU에서 직접 계산해서 보여주는 것과 GPU란 녀석이 CPU와 통신하면서 해당 프로세스를 계산해주고 보여주기까지 하는것과는 CPU에
서 처리하는 업무량이 확연히 다르게 되는것이 일맥상통이라고 할까요..^^;;
자료 펌) http://kin.naver.com/db/detail.php?d1id=1&dir_id=104&eid=wW89ejJ3OAsBJMwLf8+r9bp+nmhZjiRs&qb=waS6uMOzuK6x4rTJu+cgZG1h
DMA에 관한 자세한 설명
우선 왜 DMA필요한지 부터 말씀드리죠.
이유는 아주 간단한데. CPU의 프로세스 처리속도보다 I/O장치의 입출력 속도가
느리기 때문에 CPU가 직접 I/O처리를 하게 되면 처리속도차 때문에 CPU의 작업
대기 시간이 늘어나기 때문입니다.
그래서 DMA(DIRECT MEMORY ACCESS)를 사용하는 것입니다.
그럼 DMA가 어떻게 동작하는지 간략히 설명드리죠.
프로세스가 어떤 I/O작업이 필요한 경우(쉽게 말해서 해당 프로세스가 키보드 입력이 필요하다 거나 렌을 통하여 데이터을 주고 받아야 된다거나 하는 경우) CPU는 일단 처리하고 있던 작업을 중단하고 해당 I/O 장치의 DMA를 활성화 시킴니다. 그리고는 다른 프로세스를 처리하게 됩니다.(중단된 프로세스는 대기상태로 유지됨)
해당 I/O 장치의 DMA는 자신이 활성화 되면 자신이 맡은 I/O 장치에 따라서
메모리상의 테이터를 출력으로 보내던지, 입력된 데이터를 메모리상에 저장하는
역활을 수행합니다.
DMA가 작업이 완료되면 인터럽트를 발생시켜서 CPU에 해당 작업이 끝났다는 신호를 보내주고 DMA는 비활성 상태로 들어갑니다. 그러면 CPU는 현재 처리 프로세스를 대기상태로 만들고 중단되어 있던 프로세스를 처리하게 됩니다.
(여기서 인터럽트 처리, JOB 스케쥴링 등등의 복잡한 것들이 많은데 간단하게만 설명하죠 ^^;;)
I/O작업시 CPU가 하는 일이 단지 DMA를 활성화 시키고 I/O작업이 끝났다는것을
인지하는 것 밖에는 없는것 입니다(물론 입력된 데이터를 가져다 쓰기도 하지만 그것은 I/O작업이 아닌 프로세스의 처리 작업이니 상관없는것 이죠 ^^;).
즉 CPU는 입출력 작업 자체는 수행하지 않고 해당 작업을 모두 DMA에 전담시키게 되는 것입니다. DMA가 해당 입출력 작업의 통제를 떠맡아 처리하기 때문에 입출력 작업 자체에 대한 CPU의 통제가 필요 없는것입니다.(단지 입출력 작업을 시작 시키고 끝나면 가져다 쓰는 것 밖에는)
자료 펌) http://kin.naver.com/db/detail.php?d1id=1&dir_id=104&eid=Tk27a/kc1pnP9fMYOHtG7Nx4r86SSoPX&qb=waS6uMOzuK6x4rTJu+cgZG1h
반응형
'Computing..' 카테고리의 다른 글
하드디스크 관련 이미지 및 기능 상세 설명 (0) | 2007.07.21 |
---|---|
화면 캡처 프로그램 Snagit 8 강좌 소개 (0) | 2007.07.17 |
네이버 카페에 자동 로그인하기.. (0) | 2007.07.10 |