[전자계산기] DMA와 채널
DMA(Direct Memory Access)
CPU의 개입없이 직접 주기억 장치와 DMA 사이에서 일련의 입출력 동작이 이루어지는 방식
- CPU를 경유하지 않는다
- 직접 기억 장치와 입출력 장치 사이에서 전송이 이루어진다
- 하나의 입출력 명령어에 의해 하나의 블록 전체가 전송된다
- 사이클 스틸에 의해 전송이 이루어진다
- 사이클 스틸(
Cycle Steal
) : CPU가 프로그램을 수행하기 위해 계속해서 메이저 사이클(인출/간접/실행/인터럽트 사이클 포스트 이동하기)을 반복하고 있는 상태에서 DMA 제어기가 하나의 워드 전송을 위해서 일시적으로 CPU의 사이클을 훔쳐서 사용하는 경우를 의미
- 사이클 스틸(
- 전송이 끝나면 인터럽트를 발생시켜 CPU에게 알려준다
- 데이터 전송 절차
- 버스 사용 요구
- 버스 사용 허가
- 데이터 전송
- 인터럽트
구성요소
-
데이터 버퍼 레지스터(DBR, Data Buffer Register)
입출력되는 하나의 워드를 기억시키는 레지스터 -
요청 플립플롭(F Flip-Flop)
데이터의 이동 방향(입력/출력)을 나타내는 플래그 -
상태 레지스터(Status Register)
DMA의 상태를 나타내는 레지스터 -
주소 레지스터(Address Register)
입출력시킬 워드의 주소값을 가지고 있는 레지스터 -
단어 계수기(Word Counter)
입출력시킬 블록 전체의 단어 개수를 가지고 있는 계수기
-
DMA 입출력은 CPU나 채널로부터 블록의 첫 번째 워드 주소, 블록의 단어 개수, 입출력 플래그, DMA의 상태 정보, DMA의 시작 명령을 넘겨 받는다
-
사이클 스틸을 통해서 메모리에서 단어(Word)를 입출력하는데 입출력 할 때마다 단어 계수기의 값이 하나씩 감소한다
-
이 단어 계수의 값이 0이 되는 순간 해당 블록의 입출력이 완료된 것으로 이 때 DMA는 CPU에 인터럽트를 요청하여 입출력 완료를 보고한다
사이클 스틸 VS 인터럽트
사이클 스틸 | 인터럽트 |
---|---|
CPU 상태를 보존할 필요가 없다 | CPU 상태를 보존해야 한다 |
CPU가 잠시 쉰다 | 인터럽트를 처리한다 |
아무 사이클이나 상관없이 훔치는 것이 가능 | 항상 실행 사이클 이후에만 인터럽트 인지 |
Channel
주기억 장치와 입출력 장치 사이에서 입출력을 제어하는 입출력 전용 프로세서
- 채널 명령어를 분석하여 직접 주기억 장치에 접근해서 입출력 수행
- CPU와 동시에 동작이 가능하므로 고속으로 입출력 가능한 고속 입출력 제어기
- 여러 개의 블록을 전송할 수 있다
- 전송 시에는 DMA를 이용할 수도 있다
채널의 연결 형태에 따른 구분
-
고정 채널
채널과 I/O 장치들이 고정된 전송 통로를 지닌 형태로 구성은 간단하지만 효율이 낮다 -
가변 채널
채널과 I/O 장치들이 가변적 전송 통로를 지닌 형태로 구성은 복잡하지만 효율이 좋다
입출력 장치의 성질에 따른 채널의 종류
-
셀렉터 채널(Selector Channel)
채널 하나를 하나의 입출력 장치가 독점해서 사용하는 방식으로 고속 전송에 적합 -
바이트 멀티플렉서 채널(Byte Multiplexer Channel)
한 개의 채널에 여러 개의 입출력 장치를 연결하여 시분할 공유 방식으로 입출력하는 저속 입출력 방식 -
블록 멀티플렉서 채널(Block Multiplexer Channel)
셀렉터 채널과 멀티플렉서 채널 방식을 결합한 방식으로 융통성있는 운용을 할 수 있는 방식
채널 입출력 방식
-
채널 프로그램
채널 명령어들이 링크 리스트로 연결되어 있는 집합으로 이 프로그램은 채널 제어기에 의해 수행 -
채널 명령어(
CCW
, Channel Command Word)
주기억 장치에 있는 하나의 블록 입출력 정보를 가지고 있는 명령어로 채널 제어기에 의해 패치되어 수행된다-
Operation Code
입/출력 여부, 분기, 입출력 장치 제어, 채널 동작에 대한 정보를 나타낸다 -
블록 주소
블록의 첫 번째 시작 주소 -
블록의 단어 수
입출력하고자 하는 블록의 워드 개수 -
다음 채널 명령의 주소
채널은 명령어의 실행 순서를 제어하는PC
가 없으므로 다음에 수행해야 할 명령어의 주소는 채널 명령어 자체에 들어 있어야 한다주기억 장치에 있는 하나의 블록을 입출력하기 위한 정보를 가지고 있는 명령어로 채널 제어기에 의해 패치되어 수행된다
-
-
채널 주소 단어(
CAW
, Channel Address Word)
채널 명령어의 시작 주소를 기억하는 레지스터 -
채널 상태 단어(
CSW
, Channel Status Word)
CPU에서 I/O 명령에 따라 채널에 입출력을 지시할 때 사용할 채널 정보와 입출력 장치 정보 등을 전달하게 되는데, 이 정보를 기억하는 레지스터
- 채널이 주기억 장치에 저장되어 있는 채널 프로그램에 접근
- 채널 상태 단어가 지시하는 하나의 채널 명령어를 인출해서 채널 명령어에 넣고 해독
- 해독 결과에 따라 블록을 입출력하고, 채널 명령어 마지막 필드에 있는 다음 채널 명령어를 채널 상태 단어에 넣고
1~2
번 과정 반복적으로 입출력 작업 수행
댓글남기기