반응형

#1. Programmed I/O

- 원하는 I/O가 완료되었는지 여부를 검사하기 위해 CPU가 상태 플래그를 계속 조사하여 I/O가 완료된 경우 MDR(MBR)과 AC 사이의 자료 전송을 CPU가 직접 처리하는 방식

- I/O 작업 시 CPU는 계속 I/O 작업에 관여해야 하기 때문에 다른 작업을 할 수 없음

- 입력의 완료를 알리기 위해 인터럽트가 필요 없는 대신 CPU가 지속적으로 입출력 완료 여부를 확인해야함



#2. Interrupt I/O

- 데이터를 전송할 준비가 되면 I/O 인터페이스가 컴퓨터에게 알려 입출력이 이루어짐

- I/O 인터페이스는 CPU에게 인터럽트 신호를 보내 입출력이 있음을 알림

- CPU가 지속적으로 Flag를 검사하지 않아도 되기 때문에 Pragrammed I/O보다 효율적

- CPU가 입력을 지시한 후 워드의 입력이 이루어지는 사이 다른 작업(타 프로그램 실행)이 이루어짐



#3. DMA(Directed Memory Access)

- 입출력 기기들이 CPU의 레지스터를 거치지 않고 직접 메모리를 엑세스하여 입출력 데이터 전송

- CPU는 I/O에 필요한 정보를 DMA 제어기에 알려 I/O 동작을 개시시킨 후, 다른 작업을 수행

- 입출력 자료 전송 시 CPU를 거치지 않기 때문에 CPU의 부담 없이 빠른 데이터 전송 가능

- DMA의 우선순위는 메노리 참조의 경우 중앙처리장치보다 상대적으로 높음

- 인터럽트 신호를 발생시켜 CPU에게 입출력 종료를 알림

- Cycle Steal 방식을 이용하여 데이터 전송

  (CPU와 DMA 방식의 입출력 장치가 공통된 버스를 통해 주기억장치에 연결된 경우, 우선순위가 높은 입출력 채널이 접근 사이클을 먼저 사용하여 주기억장치에 접근하는 것 >> 작업 효율성 UP, CPU의 양보)

- CPU가 DMA 제어기로 보내는 정보

a. I/O 장치의 주소

b. 데이터가 있는 주기억장치의 시작주소

c. DMA를 시작시키는 명령

d. 입출력하고자 하는 자료의 양

e. 입력 또는 출력을 결정하는 명령


- DMA 구성요소

a. 인터페이스 회로 : CPU와 입출력장치 통신 담당

b. 주소 레지스터 및 주소라인 : 기억장치의 위치 지정을 위한 번지 기억 및 전송

c. 워드 카운트 레지스터 : 전송되어야 할 워드의 수 기억

d. 제어 레지스터 : 전송방식 결정

e. 데이터 레지스터 : 전송에 사용할 자료나 주소를 임시로 기억하는 버퍼 역할


- DMA 전송 절차

1. CPU가 DMA 제어기에 명령을 내림

2. DMA제어기가 CPU에게 버스 사용 요구 (= Bus Request)

3. CPU가 DMA 제어기에게 버스 사용 허가 (= Bus Grant)

4. DMA 제어기가 주기억장치에서 데이터를 읽어 디스크로 전송 (= Data Transfer)

5. 2~4번을 반복하다가 데이터 전송이 완료되면 인터럽트 신호 보냄



#4. Channel I/O

- I/O를 위한 특별 명령어를 I/O 프로세스에게 수행토록 하여 CPU 관여없이 주기억장치와 입출력장치 사이에서 입출력을 제어하는 입출력 전용 프로세서(IOP)

- 채널을 DMA 방법으로 입출력 수행 (= DMA 확장 개념)

- 채널 제어기는 채널 명령어로 작성된 채널 프로그램을 해독하고 실행하여 입출력 동작 처리

- CPU로부터 입출력 전송을 위한 명령어를 받으면 CPU와는 독립적으로 동작하여 입출력 완료

- 채널을 주기억장치에 기억되어 있는 채널 프로그램의 수행과 자료 전송을 위해 주기억장치 직접 접근

- I/O 장치는 제어장치를 통해 채널과 연결

- I/O 채널을 CPU의 I/O명령을 수행하지 않고 I/O 채널 내의 특수목적 명령을 수행함

- CPU와 인터럽트로 통신

- 채널의 종류

a. Selector Channel : 고속 입출력장치(자기디스크, 자기테이프, 자기드럼) 1개와 입출력하기위해 사용

b. Multiplexer Channel : 저속 입출력장치(카드리더, 프린터) 여러개를 동시에 제어하는 채널

c. Block Multiplexer Channel : 동식에 여러 개의 고속 입출력 장치 제어



#5. Isolated I/O

- 입출력 장치들이 입출력 버스를 통해 CPU와 연결되어 있는 경우

- 메모리는 따로 메모리 버스를 통해 연결

- 입출력은 입출력을 담당하는 명령어를 통해 실행/입출력버스를 통해 해당 장치의 지정, 데이터, 입출력 구분 제어값 전달

- 입출력 명령어가 명령어 집합에 추가되어 제어로직 복잡

- 입출력 버스를 장착하는데 추가비용



#6. Memory-mapped I/O

- CPU가 입출력 장치를 엑세스할 때, 입출력과 메모리의 주소공간을 공동 데이터버스, 주소버스, 제어버스 등으로 구분하지 않고 하나의 메모리 공간에 취급하여 배치하는 방식

- 입출력을 위한 명령어를 따로 사용않고, 메모리에 대한 명령어를 활용하여 입출력 수행

- 입출력 장치들은 각각 메모리의 한 번지를 할당받아 입출력 수행 > 메모리를 동적으로 사용 불가


반응형

+ Recent posts