7장 입력과 출력

Standard

입출력 개요



– 컴퓨터 시스템의 모든 입출력 장치(물리적 입출력 장치포함)와 입출력 모듈 즉 입출력 인터페이스 장치를 포함


– 물리적 입출력 장치 : 프린터 콘솔 등 실제로 입출력을 수행하는 장치


– 입출력 모듈 : 메모리나 CPU 레지스터 등 내부 저장장치와 물리적(외부) 입출력 장치 사이의 2진 정보를 정송하기 위한 방법을 제공하며 이러한 장치의 특성으로부터 CPU를 독립시키고 물리적 입출력장치를 제어한다.



입출력 장치에의 연결



1) 입출력 버스


– 입출력 버스를 이용하여 조정


2) 메모리 – 사상 입출력(memory-mapped I/O)


– 입출력 장치들과 버스구조를 메모리에 연결하는 방법이다.


3) 직접 기억장치 접근(DMA; Direct Memory Access)


– CPU의 도움 없이 메인 메모리와 외부 장치 사이에서 직접 데이터 블록이 전송될 수 있도록 특수한 제어 장치를 두는 것이다.



메모리 – 사상 입출력


– 입출력 장치레 기억장치 주소 공간의 특정주소를 부여함으로써 입출력 장치를 기억장치와 구분하여 기억장치에 접근하는 방식. 


입출력 방법



※ 입출력 모듈의 구분


– CPU 제어 입출력


   프로그램 제어 입출력


   다중포트(Multiported) 저장 시스템


   인터럽트 기반 입출력 – 외부 입력 제어


– DMA 입출력


– 채널 입출력



CPU 제어 입출력



1) 프로그램 제어 입출력


– CPU 내부에 있는 입출력 데이터와 주소 레지스터를 입출력 모듈과 연결하는 형태



① CPU는 ‘INPUT 24’ 입력 명령어를 실행


② 주소 24가 입출력 주소 레지스터에 복사


③ 주소 24는 키보드 입출력 모듈에 의해 인식


④ 읽기/쓰기 제어선은 명령어가 입력(INPUT)임을 지시한다.



※ 문제점


① 다수의 프로그램 명령어들을 실행해야 하기 때문에 프로그램 제어 입출력에서는 상당한 오버헤드가 발생


② 데이터 전송은 CPU와는 무관한고정된 주파수를 갖는 클럭에 의해서 제어



※ CPU 이용률을 증가시키는 방법


가. 다중프로그래밍 운영체제


나. 다중포트(Multiported) 저장 시스템


다. 입출력 프로세서



2)다중포트 저장 시스템



※ 메모리 액세스를 승인하려는 입출력 장치 선택 방법


① 장치 번호 고정


② 라운드 로빈(round robin)


③ 다중 송신시간



DMA 입출력


직접 메모리 접근(DMA; Direct-Memory-Access) : 하드웨어 장치가 CPU 도움 없이 메인 메모리로부터 직접적으로 제어하여 데이터 전송이 이루어지는 형태



– 임의의 기계 명령어와 주소 지정 방식이 입출력 장치를 지정하는데 사용될 수 있기 때문에, 기억장치 사상 입출력 방식은 많은 유연성을 제공


– 대부분의 경우, 기억장치 주소공간 중 연속된 일부분을 입출력 장치들에 할당


– CPU는 입출력 전송에 참여하지 않아도 되므로 CPU 성능을 향상


– 고속디스크에서의 데이터 전송에 적합



※ DMA 구현을 위한 조건


– 입출력 인터페이스와 메모리 연결 방법


– 각각 입출력 장치들에 연결된 입출력 모듈은 메모리를 읽고 쓰는 능력 보유


– CPU와 입출력 장치들과의 충돌 방지 방법 제공



※ DMA 제어기와 채널의 연산형태


1 사이클 DMA


– 전송하여는 각각 항목에 대해 버스 사용을 요구


– CPU를 포함한 다른 장치들은 전송하는 동안 버스를 액세스 할 수 있다.



② 버스트(burst) 모드 DMA


– DMA 제어기는 완전한 블록 전송이 끝날 때 까지 버스를 양도하지 않는다.



* DMA 채널


– 사이클-스틸을 사용하여 직접 기억장치 접근을 수행


– 각 입출력 장치는 제어장치를 통해 채널과 연결



1) 채널 프로그램


– 입출력연산을 종료하는 채널 커맨드들의 순서



2) 채널 하드웨어


테이터-주소 레지스터


– 전송될 바이트 또는 워드의 메인 메모리 주소를 보관한다.


카운더


– 채널로 전송될 바이트의 합계, 이미 전송된 바이트의 수 그리고 버퍼들을 보관


채널


– 변환(assemble)하거나 변환하지 않은 데이터를 보관



3) 채널의 종류


셀렉터(selector) 채널 :


– 자기 디스크와 같은 고속 장치들은 고속으로 데이터 전송이 이루어지기 때문에 멀티플렉서 채널을 사용하여 다른 장치들과 다중화가 쉽지 않다. 이런 경우 한번에 하나씩 처리하는 전용 채널로 구성하여 해결할 수 있다.



블록(block) 멀티플렉서 채널 :


– 멀티 플렉서 채널과 셀렉터 채널의 특징을 결합한 것


– 블록 단위에 기초하여 다수의 고속 입출력 작업을 다중화 할 수 있다.


– 버스트 방식에서만 동작하는 고속 멀티플렉서 채널


– 셀렉터 채널 대신에 블록 멀티플렉서 채널을 사용할 때의 이점은 자기 디스크나 테이프와 같은 입출력 장치들의 동작 특성에서 찾아볼 수 있다.



주변기기 처리장치



– 주변기기 처리장치 프로그램은 컴퓨터의 메인 메모리보다는 주변기기 처리장치가 갖고 있는 메모리에 저장


– 주변기기 처리장치 명령어 셋은 좀 더 일반적이고 완전하다


인터럽트



– 입출격 장치나 컴퓨터 내의 프로그램으로 부터 CPU에게 보내는 하드웨어 신호로서 컴퓨터는 이때 실행중인 일을 멈추고 다음에 다른 프로그램의 실행을 시작


– 기본적으로 단일 컴퓨터는 오직 한번에 한 개의 컴퓨터 명령어만을 수행할 수 있으나 인터럽트 신호가 있기 때문에 다른 프로그램이나 명령문을 수행할 수 있는 순서를 가질 수 있다.



인터럽트 처리



1) 인터럽트 요청 회선의 연결


– 단일 회선


– 다중 회선



벡터화된 인터럽트


– 인터럽트를 요청한 장치가 CPU에 직접 자신을 알려 CPU가 즉시 해당 인터럽트 서비스 루틴을 실행할 수 있는 방벙을 ‘벡터화된 인터럽트’라고 부른다.



인터럽트 유형과 사용



1) 외부 인터럽트


– 정전이 발생한 경우 또는 입출력 장치가 데이터 전송을 요청할 때 그리고 프로그램에 할당된 시간의 초과(타이밍장치) 등 외부적 요인에 의해 발생되는 경우



2) 내부 인터럽트


– 불법적인 명령어나 데이터 사용, 또는 존재하지 않는 명령어를 요구하는 경우, 데이터 오류 등 정상적인 처리를 수행할 수 없는 경우와 특권명령어(halt 등)를 사용하는 경우



3) 소프트웨어 인터럽트


– 위 하드웨어적인 인터럽트와 비슷한 역할을 수행하는 CPU 명령어 실행에 의해 발생하는 경우


 


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다