입출력 제어 방식은 크게 4가지가 있습니다.

 

1. 프로그램에 의한 I/O (CPU 개입 O)

2. 인터럽트에 의한 I/O (CPU 개입 O)

3. DMA에 의한 I/O      (CPU 개입 X)

4. 채널에 의한 I/O      (CPU 개입 X)

 

이제 DMA에 대해서 알아보겠습니다.

 

DMA(Direct Memory Access) 직접 메모리 접근

 

DMA는 주변장치(하드디스크, 그래픽 카드 등)들이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능입니다. 

 

중요한 건 CPU의 개입 없이 I/O 장치와 기억장치 사이의 데이터를 전송하는 접근 방식이라는 거죠.

 

PIO(Programmed Input/Output)은 CPU가 주변장치와 데이터를 주고받는 방식으로 효율이 떨어지는 방식입니다.

 

이를 극복하기 위해 DMA가 개발되었습니다.(IBM)

https://www.quora.com/What-is-the-function-of-DMA-in-a-computer

CPU 개입 없이라는 부분이 중요한 포인트입니다.

 

다른 관점으로 보면 CPU가 해야할 주변장치와의 데이터 전송을 DMA장치가 해주는 것이죠.

 

그만큼의 CPU 효율을 늘릴 수 있습니다.

 

고속의 I/O 장치의 경우 빈번한 인터럽트가 발생하는데 DMA를 사용함으로써

 

프로그램 수행 중 인터럽트의 발생 횟수를 최소화합니다.

 

DMA가 없다면 Data I/O 처리가 끝날 때까지 CPU는 대기해야 합니다.

 

 

동작 절차 : CPU 명령 - 버스 사용 요구(Bus Request) - 버스 사용 허가(Bus Grant) - 데이터 전송 - 인터럽트

 

동작모드 

 

1. 사이클 스틸링 : CPU가 DMA에 우선순위를 양보, 1 Cycle 정지, 빠른 입출력 가능, 한 번에 한 워드 전송

 

사이클 스틸링은 인터럽트와 많이 비교됨, 인터럽트는 1Cycle이 아니라 처리 기간 동안 정지

 

사이클 스틸링은 프로그램 상태 보존 필요 X, 반면에 인터럽트는 필요함

 

2. 버스트 모드 : DMA가 버스 사용권 획득 시 데이터 전송 완료까지 버스 사이클 독점, 블록 단위 데이터 전송

 

 

 

채널 제어 방식 - 여러 장치가 채널 제어기에 입출력 명령을 전달하여 CPU 개입 없이 입출력을 수행합니다.

 

DMA와 다르게 한 개의 명령에 여러 블럭 입출력 가능합니다.

 

DMA - PC, 채널 제어 - 대형서버

 

 

 

 

 

'전자공학 > 임베디드' 카테고리의 다른 글

Working Set 이란? (+스레싱)  (0) 2019.10.21
시스템 콜(System Call)이란?  (0) 2019.10.21
MMU란?(+TLB)  (0) 2019.10.20
CISC, RISC  (0) 2019.10.20
반가산기, 전가산기, 반감산기, 전감산기  (0) 2019.10.20

+ Recent posts