데이터 전송 입출력 방식의 종류
① 프로그램에 의한 입출력 방식
② 인터럽트에 의한 입출력 방식
③ Direct Memory Access에 의한 입출력 방식
④ 채널(IOP)에 의한 입출력 방식
프고름애에 의한 입출력 방식은 기억 장치에 저장된 입출력 명령에 의해 이루어집니다. 데이터 전송은 프로그램 명령에 의해 시작되며 누산기와 같은 레지스터와 주변 장치에 의하여 전송됩니다. 프로그램에 의한 데이터 전송은 언제 전송이 가능한지 CPU가 항상 주변 장치의 플래그를 감시해야 합니다. 프로그램에 의한 전송에서 CPU는 입출력 준비 상태가 될 때까지 기다려야 하므로 많은 시간을 낭비합니다. 이와 같은 단점은 인터럽트를 이용하면 개선할 수 있습니다. 인터럽트에 의한 I/O에서 CPU는 다른 프로그램을 실행하고 인터페이스는 계속하여 주변 장치를 감시하여 데이터 전송을 위한 준비가 되면 CPU에게 요청합니다. CPU가 인터럽트를 인식하고 실행하고 있는 작업을 중단한다면 데이터를 전송하기 위한 서비스 루틴으로 분기합니다.
앞의 두 방식은 입출력 버스를 이용하여 CPU와 주변 장치 사이에서 데이터를 전송합니다. DMA에 의한 I/O는 기억 장치 버스를 통해 기억 장치와 직접 데이터를 전송합니다. CPU는 DMA 제어기에 기억 장치의 시작 주소와 전송량을 전달하여 DMA 전송을 개시시킨 후 다른 프로그램을 실행한다. DMA 제어기는 사이클 스틸을 이용하여 데이터를 직접 기억 장치에 전송합니다. 채널은 DMA와 인터럽트를 이용하여 여러 주변 장치를 제어할 수 있는 이출력 프로세서(IOP)입니다. 이와 같은 시스템에서 컴퓨터는 기억 장치, CPU, I/O 프로세서의 3 모듈로 구분합니다.
1) 프로그램에 의한 입출력 방식
프로그램에 의한 입출력 방식에서 입출력 장치가 직접 기억 장치에 접근하지 못하기 때문에 입출력 장치와 기억 장치 사이에 데이터를 전송하려면 입력 또는 저장 명령과 같은 명령을 실행해야 합니다. 또한 외부 장치에 데이터가 준비되어 있는지 검사하거나 전송된 워드 개수를 계산하는 명령도 필요합니다. 입출력 장치에서 데이터 레지스터로 데이터가 전송되었는지 확인하려면 상태 레지스터의 플래그를 검사하는 프로그램이 필요합니다. 이 프로그램은 상태 레지스터를 CPU 레지스터로 읽어온 다음 플래그를 검사하여 플래그가 1이면 데이터 레지스터의 데이터를 읽어옵니다. 그리고 CPU 또는 인터페이스가 플래그를 0으로 합니다. 플래그가 0이 되면 입출력 장치는 다음 데이터를 전송할 수 있습니다. 이 같은 프로그램의 순서도는 그림 6-5와 같고 데이터를 전송하려면 상태 레지스터를 읽는 명령, 플래그를 검사하여 분기하는 명령, 데이터 입력 명령 등이 필요합니다. 데이터는 입력 명령에 의해 CPU 레지스터로 읽힌 다음 기억 장치로 전송됩니다. 프로그램에 의한 입출력 방식은 저속의 소형 컴퓨터나 지속적으로 외부 장치만 감시하도록 설계된 시스템에서 사용할 수 있습니다.
2) 인터럽트에 의한 입출력 방식
인터럽트에 의한 입출력 방식은 CPU가 계속해서 플래그를 검사하지 않고 데이터를 전송할 준비가 되면 인터페이스가 인터럽트를 이용하여 컴퓨터에게 알립니다. 따라서 CPU가 프로그램을 실행하고 있는 동안 플래그를 검사하지 않고 플래그가 세트되어 인터럽트를 요청하면 현재 실행 중인 프로그램이 중단되고 입출력 전송을 실행합니다. 전송이 완료되면 인터럽트 이전에 실행 중이던 프로그램으로 되돌아가 실행을 재개합니다.
CPU가 인터럽트 신호를 받으면 프로그램 카운터에 있는 복귀 주소를 스택에 저장한 다음 입출력 전송을 위한 서비스 루틴으로 분기합니다. 서비스 루틴의 분기 주소를 판단하는 방법은 벡터 인터럽트와 비벡터 인터럽트 방식으로 분류됩니다. 비벡터 인터럽트에서는 분기 주소가 기억 장치의 일정 위치로 고정되어 있고 벡터 인터럽트에서는 원인에 의해 분기 정보를 얻습니다. 이러한 정보를 인터럽트 벡터라고 하며 입출력 서비스 루틴의 시작 주소 또는 서비스 루틴이 저장된 위치를 지시하는 포인터가 됩니다.
3) Direct Memory Access
프로그램에 의한 입출력 방식과 인터럽트에 의한 입출력 방식은 CPU가 장치를 검사하고 서비스하는 속도에 의해 전송이 제한되며 CPU가 입출력을 위해 많은 시간을 낭비하는 단점이 있습니다. 따라서 데이터 전송 경로에서 CPU를 제거하고 입출력 장치가 직접 기억 장치 버스를 관리하도록 하면 전송 속도를 개선할 수 있으며 또한 CPU 시간을 보다 효율적으로 이용할 수 있습니다. 이와 같은 전송 방식을 DMA라 합니다. DMA 전송이 행해지는 동안 CPU는 기억 장치 버스를 제어하지 못하고 정지하고 있는 상태가 됩니다. 제어기는 버스 요청 신호로 CPU에게 버스 제어권을 요청하며 요청된 경우 CPU는 현재 명령의 실행을 끝낸 다음 주소 버스, 데이터 버스와 읽기 및 쓰기 제어선을 활성화 상태를 만들고 버스 승인 신호로 응답하여 정지 상태가 됩니다. 그러면 버스를 요청한 DMA가 버스를 제어하여 CPU의 개입 없이 기억 장치와 직접 전송합니다. DMA 전송이 완료되면 버스 요청을 오프하고 CPU가 버스 승인을 오프 하여 정상 상태로 돌아옵니다.
4) 입출력 프로세서(IOP)에 의한 입출력 방식
IOP는 입출력을 전담하는 프로세서로 DMA 제어기와는 달리 기억 장치에 저장된 입출력 프로그램(채널 프로그램)을 실행할 수 있는 기능이 있습니다. 그러나 입출력 프로그램의 실행은 CPU의 명령에 의해 시작해야 하며 이 명령은 IOP 번호, I/O 장치 번호, 입출력 프로그램의 주소 등을 지정합니다. 일단 입출력 프로그램의 실행이 개시되면 IOP는 CPU와 독립적으로 DMA 방식을 이용하여 기억 장치에 직접 접근하여 입출력합니다. 입출력 과정이 완료되면 IOP는 CPU에게 인터럽트로 완료되었음을 알립니다.
'컴퓨터정보' 카테고리의 다른 글
인터럽트에 대해 알아보자 (0) | 2022.01.10 |
---|---|
DMA(Direct Memory Access) 란? (0) | 2022.01.09 |
데이터 전송 개념과 방식 (0) | 2022.01.08 |
입출력 장치를 알아보자 (0) | 2022.01.08 |
가상 기억 장치 (0) | 2022.01.07 |