입출력 제어 방식은 크게 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)
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 |