포털:고등학교/정보·통신 계열 전문 교과(2015)/컴퓨터 구조/입출력 방식
입출력 방식
입출력 방식에는 2가지가 있다.직접 입출력 방식과 간접 입출력 방식이 있다.직접 입출력 방식은 CPU가 직접 입출력을 담당하는 반면에 간접 입출력 방식은 다중 프로그램을 구현하기 위해 이용하는 방식이다.직접 입출력 방식은 보통은 초기의 컴퓨터나 엣날에 사용되어진 방식이고 간접 입출력 방식이 요즘에 사용되어지는 방식이다.간접 입출력 방식에는 전용 입출력 프로세서인이나 DMA, 채널을 이용하는 방식이 있다.
입출력 제어
중앙 처리 장치에서 생성한 자료를 각종 입출력 장치에 보내기 위해선 통신 제어 기법이 필요하다.컴퓨턱 사용하는 입출력 제어 기법에는 중앙 처리 장치가 직접적으로 입출력 장치를 제어하는 방식이 있고, 주기억 장치와 입출력 장치가 직접적으로 데이터로 교환하는 직접 기억 장치 엑세스 방식[DMA(Direct Memory Access)], 그리고 별도의 Channel을 이용하여 입출력 방식을 제어하는 방식이 있다.
중앙 처리 장치가 직접 제어하는 입출력
중앙 처리 장치가 직접 제어하는 방식은 입력 장치 및 출력 장치응 직접 제어하는 방법으로, 데이터 전송뿐만 아니라 데이터 상태 검사 등의 모든 것을 중앙 처리 장치가 직접 명령을 수행한다. 주앙 처리 장치 내에 존재하는 레지스터가 저장된 내용이 직접 출력 장치에 전송되거나 반대로 입력 장치에서 내부 레지스터에 전송되고, 최종적으로 주기억 장치에 저장되도록 하는 방법이 중앙 처리 장치가 제어하는 방식이다. 처리 장치중앙가 직접 입출력을 제어하는 방식에는 프로그램 방식(Programmed I/O)과 인터럽트(Interrupt I/O)방식, 2가지 방식이 있다.
프로그램에 의한 제어 방법(Programmed I/O)
프로그램에 의한 제어 방식은 데이터를 입출력 할 때 중앙 처리 장치는 입출력 장치를 결정하고, 입출력 개시를 위한 신호를 해당 장치 인터페이스로 전송 후 인터페이스는 입출력 장치의 중앙 처리 장치 간에 동작 속도의 차이를 하드웨어적으로 보안한다.
프로그램에 의한 제어 순서 1)CPU가 입출력 장치를 동작시켜야 하므로 입출력 장치의 현재 상태를 레지스터에 나타낸다 2)중앙 처리 장치로부터 입출력 신호를 받은 장치는 입출력 작업을 하고 있을 때는 레지스터에 BUSY 상태인
'I'을 기록하고 작업이 완료되면 레지스터에 DONE 상태인 'O'이 기록된다
3)중앙 처리 장치는 장치의 상태 레지스터를 계속 확인하고 있다가 입력 장치에서 자료를 모두 받았다는 신
호, 즉 DONE을 확인하면 장치에서 읽은 자료를 사용한다.
4)출력도 입려과 같은 방식으로 진행된다.
프로그램에 의한 제어는 중앙 처리 장치가 모든 제어가 이루어지도록 지시하며, 입출력 장치의 동작 상태를 계속 확인한다.또한 입출력이 시작되면 그 동작이 완료될 때까지 중앙 처리 장치는 다음 명령을 수행하지 않기에 효융이 떨어지는 단점이 존재한다.
인터럽트 방법(Interrupted I/O)
인터럽트 방법은 일단 입출력 자료를 보내면 중앙 처리 장치는 더 이상 간섭하지 않는다. 중앙 처리 장치는 입출력이 진행되는 동안에 다른 명령을 수행하는 대신에 인터럽트 루틴(Interrupt routine)을 이용하여 인터페이스를 통하여 입력이나 출력이 일어나도록 하며, BUSY나 DONE의 상태를 점검한다.입력 명령을 수행할 때는 인터럽트 신호가 발생된 뒤 인터페이스가 입력 매체로부터 입력한 데이터를 데이를 버퍼에 기억시키면 인터럽트가 완료되고, 동시에 중앙처리 장치는 버퍼의 내용을 가져와 이용한다. 반대로 출력 때는 주기억 장치에서 출력할 데이터를 출력 버퍼에 기억시킨 후 인터럽트 루틴이 인터페이스를 통해 출력 장치에 자료를 출력하도록 한다. 인터럽트 방법은 중앙 처리 장치가 데이터 버퍼 내용이 이동될 수 있는 상태가 될 때까지 기다리지 않는다.그러므로 프로그램을 이용한 것보다 훨씬 효율적이다. 인터럽트 루틴에 의해 인터럽트가 발생하면 CPU가 이를 처리해야 하는데, 인터럽트 종류가 아래와 같다.
인터럽트 종류 1)하드웨어 인터럽트:CPU 주변에 있는 하드웨어 장치들이 CPU에게 신호를 보내면 발생하는 인터럽트다. -마스크 가능한 인터럽트:CPU가 인터럽트를 처리하거나 거부할 수 있는 인터럽트이다. -마스크 불가능한 인터럽트:무시할 수 없는 RAM 패리티 오류나 전력 이상 등의 치명적인 인터럽트이다. 2)소프트웨어 인터럽트:CPU가 현재 하던 작업을 강제로 중단하고 다른 작업을 하도록 보내는 인터럽트이
다.
3)발생 위치에 따른 종류 3-1)내부에서 발생하는 인터럽트
-CPU 내에서 잘못된 명령어 처리 과정에서 발생하는 인터럽트 -오버플로와 언더플로가 발생하였을 때 일어나는 인터럽트 -나눗셈에서 0으로 나누는 것과 같은 잘못된 연산을 수행하였을 때 발생하는 인터럽트 -가상 기억 장치에서 페이지 상실 등과 같은 이유로 발생하는 인터럽트
3-2)외무에서 발생하는 인터럽트
-CPU에 연결되어 있는 주변 장치에 의해 발생하는 인터업트 -사용자가 키보드를 눌렀을 때 발생하는 인터럽트 -전원 공급이 중단되었을 때 발생하는 인터럽트 -입출력 장치의 데이터 전송 요구가 끝났을 때 발생하는 인터럽트
인터럽트 순위 결정
두 개 이상의 인터럽트가 거의 동시의 발생하는 경우 인터럽트를 처리하는 순서를 정하는 규칙을 만들어 두어야 한다.인터럽트 우선순위 체계를 적용하려면 기본적으로 아래와 같은 3가지 기능이 구현되어야 한다.
1)각 장치에 우선순위를 정하는 기능 2)인터럽트를 요청한 장치의 우선순위를 판단하는 기능 3)우선순위가 높은 것을 처리할 수 있는 기능
모든 장치가 하나의 인터럽트 요청 신호 선을 사용하는 단일 회선 인터럽트 체제에서는 우선순위를 정할 때 소프트웨어에 의한 방식과 하드웨어에 의한 방식이 사용된다. 소프트 웨어에 의한 방식을 폴링(Polling) 방식이라고도 한다.이 방식은 여러 장치가 동시에 인터럽트를 요청할 경우 미리 정해진 장치 순서에 따라 하나씩 인터럽트 요청 상태를 확인하여 인터럽트를 요청한 장치를 만나면 그 장치의 인터럽트 요청를 처리하는 방식이다. 하드웨어에 의한 방식은 데이지 체인(Daisy Chain)방식으로도 불리며, 두 대 이상의 장치에서 인터럽트가 발생하면 중앙 처리 장치에서 가까운 장치의 인터럽트가 먼저 처리한다.
DMA방식
DMA(direct memory access) 방식은 자료를 입출력해야 할 때 중앙 처리 장치가 DMA제어기에 입출력 신호를 보내면 DMA제어기가 자료가 저장되어 있는 주기억 장치에 접근하여 데이터를 꺼내어 출력하거나 입력할 데이터를 저장한다.따라서 중앙 처리 장치는 입출력 신호만 보내고 입출력 동장에 대해서는 간섭하지 않는다.
DMA 제어기
중앙 처리 장치와 입출력 장치 간의 통신을 위해 DMA 제어기에는 인터페이스 회로가 필요하다.DMA는 주소 레지스터, 데이터 레지스터, 계수 레지스터 및 각종 제어 회로를 필요로 한다.DMA 베어를 통해서 입력 장치와 메모리 사이의 데이터 전송을 직접 수행 할 수 있다.
- 주소 레지스터:기억 장치와 통신하기 위한 주소를 저장한다.
- 계수 레지스터:전송이 되어야 하는 워드이 수를 알려준다.
DMA 처리 순서
CPU는 DMA장치로 한 번의 입출력 명령의 전달을 통해서 더 이상 관여하지 않지만, DMA장치는 독자적인 동작으로 일련의 데이터를 기억장치와 직접 입출력한다.
1단계:CPU가 DMA 제어기로 다음 정보를 포함한 명령을 전송한다
-입출력 장치의 주소 -연산(쓰기 혹은 읽기) 지정자 -데이터가 읽혀지거나 쓰여질 주기억 장치 영역의 시작 주소 -전송될 데이터 단어들의 수
2단계:DMA 제어기는 CPU로 버스 요구(BUS REQ)신호를 전송한다. 3단계:CPU는 DMA 제어기로 버스 승인(BUS GRANT)신호를 전송한다. 4단계:CPU의 개입 없이 DMA 제어기가 주기억 장치에 데이터를 읽거나 쓴다 5단계:전송할 데이터가 남아 있으면, 2단계부터 4단계까지 다시 반복한다. 6단계:모든 데이터의 전송이 완료되면 CPU로 INTR 신호를 전송한다.
CPU는 DMA에 명령을 보낸 후에 다른 일을 계속 할 수 있고 DMA 제어기가 모든 입출력 동작을 전달하므로 중앙 처리 장치는 전송의 시작과 마지막에만 입출력 동작에 관여한다.
채널에 의한 방식(Channel I/O)
채널에 의한 방식은 특별한 명령어를 가진 I/O 전용 프로세서에게 작업을 수행하도록 하여 CPU와 관계없이 주기억 장치와 입출력 장치 사이에 자료가 전송되며 입출력이 이루어지는 방식이다.이 방식은 DMA 제어기응 발전시킨 방식이기도 한다. 채널 제어기는 채널 명령어로 작성된 채널 프로그램을 해석하고 실행한다.채널은 중앙 처리 장치로부터 입출력 전송을 위한 명령을 받으면 중앙 처리 장치와 관계없이 입출력을 완수하고, 채널이 CPU와 통신을 할 때는 인터럽트를 이용한다.
채널 명령어(Channel command)
채널을 사용하여 입출력이 이루어지도록 하기 위해서 채널 명령어는 다음과 같은 요소를 가진다.
1)동작을 나타내는 명령으로 입출력 명령을 한다. 2)주기억 장치에 접근할 블록의 시작 주소를 표시한다. 3)입출력해야 할 블록의 크기를 제시한다.