정보처리기사 필기 - 2과목 전자계산기 구조
5장 입력 및 출력
1. 입·출력장치의 구성
· 입·출력 제어 장치
- 입·출력 장치의 인터페이스와 컴퓨터 시스템 사이에 데이터의 전송을 제어하는 장치
· 입·출력 인터페이스
- 주변장치와 CPU나 메모리의 동작 방식의 차이, 전송 속도의 차이, 데이터 형식 등의 차이점을 해결하는 것이 목적
- 기억장치는 빠르고 입·출력 장치는 느림
- 입·출력장치에 포함되어야 하는 하드웨어
= 데이터 레지스터, 장치의 동작 상태를 나타내는 플래그, 장치 번호 디코더(단어 계수기X)
· 입출력 제어 방식 중 프로그램에 의한 I/O
- 상태 레지스터 읽기 → 값이 set 상태이면 단계 3
- 그렇지 않으면 단계 1 → 데이터 레지스터 읽기
버퍼링 |
스풀링 |
|
목적 |
고속의 CPU와 저속의 입·출력 장치의 속도 차이를 해결 |
|
저장 위치 |
주기억장치 |
보조기억장치(=디스크) |
운영 방식 |
단일작업 |
다중작업 |
입·출력 방식 |
큐 |
큐 |
2. 입출력 제어 방식
· Interrupt I/O
- 인터페이스가 CPU에 입·출력을 요구하고 입·출력 전송이 완료되면 CPU는 수행중이던 프로그램으로 돌아가서 수행을 재개
- CPU의 상태 보존 필요
- 인터럽트 제어 방식 : 비동기 제어 방식
· DMA(Direct Memory Access)에 의한 I/O
- 주기억장치와 I/O 장치 간의 정보 교환 때, CPU의 개입 없이 직접 정보 교환이 이루어지는 방식(CPU의 부하 증가X)
- CPU가 어떤 명령과 다음 명령을 수행하는 사이 하나의 데이터 워드를 직접 전송
- DMA의 구성
= 인터페이스 회로, 주소 레지스터, 워드 카운트 레지스터, 제어 레지스터, 데이터 레지스터
- DMA의 전송 절차
① CPU가 DMA에게 명령
② CPU에게 버스 사용 요구
③ CPU가 버스 사용 허가
④ 데이터 전송
⑤ DMA 제어기가 자료 전송을 종료했을 때 CPU에게 인터럽트 신호 발생
- 사이클 스틸(Cycle Steal) 이용
= 중앙처리장치와 입출력장치가 동시에 주기억장치를 접근하려고 할 때, 주기억장치가 입출력장치에 우선순위를 부여하여 중앙처리장치는 주기억장치에 접근 불가
사이클 스틸과 인터럽트의 차이점
#DMA의 사이클스틸은 CPU의 상태 보존 필요 없고, CPU는 메모리 참조가 필요없는 오퍼레이션을 계속 수행
#인터럽트가 발생하면 CPU는 인터럽트를 처리하지만 사이클 스틸은 instruction 수행 도중 사이클스틸이 발생하면 CPU는 그 사이클 스틸동안 정지상태가 됨
- 인터럽트와 비교하여 DMA 방식에 의한 사이클 스틸의 가장 특징적인 차이점 : 주기억장치 사이클의 한 주기만 정지
· Channel에 의한 I/O
-입출력을 위한 명령어를 입출력 프로세서에게 수행토록 하여 CPU 관여 없이 입출력 수행
- 채널은 CPU외 별도의 하드웨어적인 장치라서 CPU와 독립적 처리가 이루어짐
- 자체적으로 자료 수정 또는 코드 변환 가능
- 채널의 종류
= Selector Channel : 고속 입출력장치 / 어느 한 입·출력 장치의 전용인 것처럼 운용
= Multiplexer Channel : 저속 입출력장치 여러개를 동작시킬 수 있으
= block multiplexer channel : 위의 두 개를 결합
- 채널 명령어(CCW)의 구성 요소
=Data Address, Flag, Op-code(처리속도X, 전송속도X)
- 채널 명령어로 알 수 있는 내용
= 명령코드, 데이터 주소, 데이터 크기
· 프로그램 제어 방식은 CPU가 상태 플래그를 계속 조사하여 I/O가 완료되었으면 MBR과 AC사이의 자료 전송도 CPU가 직접 처리
· 데이터 버스는 CPU와 메모리 또는 입출력기기 사이에서 데이터를 전송하는 전송선으로 입출력 제어장치에 포함될 뿐 따로 분류되지는 않음
· 고립형 I/O
- 고립형 I/O는 기억장치의 주소공간과 전혀 다른 입·출력 포트를 갖는 형태
· 스루풋(중앙처리장치의 데이터 처리 능력) : 채널>DMA>인터럽트
※ 디멀티플렉서(demultiplexer) : 1개의 input line과 n개의 selection line을 갖음
3. 인터럽트
· 인터럽트
- 예기치 않은 상황이 발생할 경우 먼저 처리하고 실행중이던 작업으로 복귀
- 이때 복귀주소, PC의 값은 스택에 저장
- 인터럽트의 실질적인 조치를 하는 서비스 루틴을 실행할 때 인터럽트 플래그를 0으로 하면 인터럽트 발생 방지 가능
- 페이지폴트-CPU가 액세스한 가상 페이지가 주기억장치에 없는 경우에도 인터럽트 발생
- 인터럽트 종류
= 외부 인터럽트
# 컴퓨커 자체 내의 기계적인 장애
# 타이머(주어진 CPU사용시간을 해당 프로세스가 모두 소진할 경우)
# 오퍼레이터가 콘솔상의 인터럽트
# 정전
= 내부 인터럽트(=트랩)
# 불법적인 명령
# 0으로 나누기
# overflow / underflow 발생한 경우
# 보호 영역 내의 기억장소 참조
# 인터럽트의 우선순위결정과 관련 없음
= SVC 시스템 호출 인터럽트
# 사용자가 의도적으로 호출한 경우
※ 프린터에 용지 부족 : PC 하드웨어 인터럽트
- 인터럽트 발생 시 CPU가 확인할 사항
= 프로그램 카운터의 내용
= 사용한 모든 레지스터의 내용
= PSW(상태 조건의 내용)
- 인터럽트 동작 순서
① 인터럽트 요청 신호 발생
② 현재 실행중이던 명령어는 끝까지 실행
③ 현재의 프로그램 상태 보존 : 다음 실행할 명령의 번지는 PC가 가지고 있음, 스택에 기억
처리루틴 |
서비스(취급)루틴 |
④ 인터럽트를 요청한 장치를 식별, 인지 |
⑤ 인터럽트의 실질적인 조치 |
⑥ 상태 복구 : 보존 시켰던 PC의 값을 복구 |
|
인터럽트 실행 중에 우선순위가 높은 인터럽트(정전이 우선순위가 가장 높음)를 발생하면 그거 먼저 처리 |
- 인터럽트 서비스 루틴의 기능 : 상대적으로 낮은 레벨의 마스크 레지스터 클리어
· 인터럽트 백터 Vectored
- 인터럽트를 발생한 장치가 프로세서에게 분기할 곳의 정보를 제공
- 인터럽트가 발생했을 때 특정 장소로 점프하도록 분기번지가 기억, 특정 번지의 서브루틴을 수행하는 것
- 분기 번지가 필수
· 인터럽트 체제의 기본 요소
- 인터럽트 요청, 인터럽트 처리 루틴, 인터럽트 취급 루틴
· 인터럽트 우선순위 판별 방법
- 소프트웨어적인 방법
= 폴링 Polling(인터럽트 요청 신호 플래그를 차례로 검사하여 인터럽트 원인 판별)
= 반응 속도 : 저속
= 회로 복잡도 : 간단
= 경제적임
= 우선 순위 변경이 쉬움
- 하드웨어적인 방법
= 데이지체인(인터럽트가 발생하는 모든 장치를 직렬로 연결), 벡터, 병렬(Parallel)우선순위 부여 방식
= 반응 속도 : 고속
= 회로 복잡도 : 복잡
= 비경제적임
= 융통성 없음
· 인터럽트 우선순위 운영 방식
- LCFS, FCFS, Masking Scheme