입출력장치
- 입력: CPU가 외부에서 정보를 받아들이는 과정
- 출력: CPU가 외부로 정보를 내보내는 과정
- 입출력 처리: CPU가 입출력장치와 정보를 주고받는 과정
입력장치
- 문자, 기호, 소리, 동영상 정보를 컴퓨터가 이해할 수 있는 2진 코드로 변환시켜, 주기억장치에 저장하거나 CPU에 전달하는 역할을 하는 것
- 키보드, 지시장치, 원시 데이터 입력장치
키보드
- 문자, 숫자, 특수문자 키들을 통해서 입력을 발생시키고 방향키와 기능키를 통해서 수정과 편집을 쉽게 할 수 있는 가장 널리 이용되는 입력장치
- 기계식 키보드(스프링 방식), 멤브레인 키보드(비스프링 방식) 등
- 1975년부터 PC에 사용되기 시작
- 101 키보드가 가장 기본
지시장치
- 마우스: 커서의 이동이나 영역을 지정할 수 있고 아이콘을 선택하고 메뉴를 실행할 수 있는 입력장치
- 2차원 평면에서의 움직임을 컴퓨터에 전송해 주는 입력장치
- 위치센서에 3개의 마우스버튼, 스크롤 휠을 갖춘 모델이 기본
- 1968년 발명, GUI의 보편화로 필수품이 됨
- 트랙볼: 고정된 판 위에서 손이나 손바닥으로 회전시킬 수 있는 볼을 통해 커서의 영역을 지정, 단추를 이용하여 클릭 동작 수행
- 그래픽 정보 입력에 주로 사용
- 마우스 패드가 필요 없고, 마우스보다 공간을 적게 사용하는 장점이 있음
- 볼의 크기와 무게가 사용감에 직결되기 때문에 소형화, 경량화가 어려워 이동용으로 사용하기 힘든 단점이 있음
- 터치패드: 패드 범위 안에서 손가락을 움직여 화면의 포인터를 이동하는 장치
- 노트북에서 마우스 대용으로 사용, 아이콘의 선택과 더블 클릭 동작 수행
- 선택을 오래 지속하면 마우스 오른쪽 버튼을 클릭했을 때의 기능과 동일한 동작 수행
- 포인팅 스틱: 주로 노트북에서 마우스 대용으로 사용 (Thinkpad 빨콩)
- 조이스틱: 주로 게임 및 컴퓨터 시뮬레이션에서 캐릭터와 도구의 동작을 제어하기 위해 사용하는 입력장치
- 디지타이저(태블릿): 스타일러스 펜과 이미지를 복사하는 퍽이라는 도구를 이용하여 그림이나 도형의 위치 관계를 부호화하여 입력하는 장치
원시 데이터 입력장치
- 광학 마크 판독기(OMR): 특별히 제작된 용지나 카드에 컴퓨터용 연필이나 사인펜을 사용하여 표시하고 광선을 비추어 반사되는 유무에 따라 기록여부를 판독하는 장치
- 광학 문자 판독기(OCR): 설계된 광학 문자를 장치를 이용해 직접 읽기 때문에 데이터 입력이 간단한 장점을 가짐
- 스캐너: 반사되는 광 신호흘 전기 신호로 만들고, 다시 디지털 데이터로 만드는 장치
- 문자 스캐너: 상표, 서류, 마크 등의 문자 정보를 광학적으로 인식시키는 장치
- 바코드: 대형 마트에서 판매하는 상품에 부착시켜 상품의 정보 제공
- 이미지 스캐너: 촬영된 사진, 그려진 도면 등의 아날로그 영상을 컴퓨터에 직접 입력시키는 장치
출력장치
- 처리된 결과 또는 저장 내용을 확인할 수 있는 형태로 나타내는 장치
- 모니터의 소프트 카피와 프린터의 하드 카피로 분류
소프트 카피 출력 장치
- CRT 모니터
- 브라운관을 사용하여 색 정보를 표현하므로 LCD 모니터에 비해 크기가 크며 무거운 단점이 있음
- 반응 속도가 매우 빠르며, 색상 왜곡이 적고 명암비가 뛰어나고, 시야각이 뛰어나다는 장점이 있음
- 2010년대 생산 중단
- LCD 모니터
- 두 장의 유리판 사이에 액체를 넣어 색 정보를 표현하기 때문에 CRT 모니터에 비해 가볍고 얇은 장점을 가짐
- 보다 선명하고 떨림이 적은 화면 제공
하드 카피 출력 장치
- 도트 프린터
- 프린터 헤드가 이동하면서 잉크 리본을 두드려 인쇄
- 속도가 느리고 소음이 큼
- 잉크젯 프린터
- 프린터 노즐을 통해 잉크를 분사하여 인쇄하는 프린터
- 저렴한 비용으로 컬러 인쇄를 할 수 있고 고품질을 제공하지만 속도가 느림
- 레이저 프린터
- 레이저 빔을 사용하여 토너를 종이에 묻혀 인쇄
- 짧은 시간에 많은 양의 문서를 인쇄할 수 있으며 인쇄 품질도 우수한 편
입출력 겸용 장치
- 사운드 카드: 외부에서 녹음되거나 마이크에서 입력되는 음성과 소리 신호를 디지털 데이터로 변환하여 컴퓨터에 입력하고 저장된 소리 데이터나 CPU에서 처리된 소리 데이터를 아날로그 신호로 변환하여 출력하는 장치
- 영상 카드: 촬영된 영상이나 캠코더에서 입력되는 영상 신호를 디지털 데이터로 변환해서 컴퓨터에 입력하고 저장되거나 처리된 영상 디지털 데이터를 아날로그 신호로 변환하여 시각적으로 확인할 수 있도록 출력하는 장치
- 통신접속장치
- 모뎀: 컴퓨터의 디지털 데이터를 전화망에서 전송될 수 있도록 아날로그 신호로 변환해 주고, 전화망을 통해서 전달되어 온 아날로그 신호를 컴퓨터의 디지털 데이터 신호로 변환시켜 주는 장치
- 네트워크 인터페이스 카드: 컴퓨터와 근거리 통신망(LAN)을 연결해 주는 역할을 수행하는 장치로, 컴퓨터에 있는 데이터를 네트워크에 보내고, 컴퓨터로 들어오는 데이터를 수집하는 기능을 수행
입출력장치의 연결
- 컴퓨터의 후면부에는 여러 가지 입력장치와 출력장치의 연결을 지원하는 단자가 존재
- 시리얼 단자: 직렬포트, RS-232C 단자(9핀)
- 프린터 단자(병렬포트): 주로 프린터용으로 사용되며 연결선이 굵어 잘 안 씀
- 키보드, 마우스용 PS/2 단자 (주로 2010년대 이전에 사용)
- 비디오 단자: 영상신호(아날로그) 전송용, 15핀, D-SUB이라고도 함
- HDMI 단자: 최근 주로 사용하는 영상 단자, 디지털로 신호(영상, 음성) 전달 가능
- USB 단자: 각종 장치를 연결하는 용도로 가장 보편적인 단자
- LAN 단자: 네트워크를 위한 RJ-45 단자
- 사운드 카드와 그래픽 카드는 주회로기판의 슬롯에 별도로 장착해야만 연결 단자들을 확인 가능한 겨우도 있음
- 경우에 따라 주회로기판에 사운드 카드와 그래픽 카드가 내장되어 있어 그 단자들도 주회로기판에 포함되어 있을 수 있음
- 고품질 사운드와 빠른 그래픽 처리를 위해 별도로 하드웨어 설치 추천
입출력장치의 동작
- 입출력장치는 CPU 또는 주기억장치와 외부의 입출력 매체 사이에 정보를 전송하는 역할 담당
- 입출력장치들은 CPU는 물론이고 주기억장치에 비하여 동작 속도가 많이 느리며, 정보를 처리하는 단위도 다름
- 오류가 발생할 확률은 높으나 각각의 동작에 대하여 자율성을 보장 가능한 장점도 존재
동작 과정
- 입력장치에서 CPU까지 전달되는 과정
- 입력된 데이터가 어느 장치에서 입력된 것인지를 판단하고 적절한 방법을 사용해서 표준 신호로 변환
- CPU에서는 데이터를 원하는 형태로 가공해 주기억장치에 저장
- 각종 입력장치를 통해서 입력되는 데이터들은 입력장치 고유의 데이터이므로 컴퓨터에서 바로 처리 불가능
- 컴퓨터가 처리할 수 있는 디지털 데이터의 표준 신호로 변환 과정이 필요
- CPU에서 데이터가 출력되는 과정
- 표준 신호의 CPU의 결과 신호는 출력 장치에서 표준 신호로 수신하고 장치의 특성에 맞게 신호를 변화시켜 표현
- 입력과 출력의 인터페이스 모듈
- 입출력장치는 CPU와 주기억장치에 비하여 동작 속도가 현저하게 느려서 직접적으로 컴퓨터에 연결하지 않고 중간에 별도의 장치인 입출력 인터페이스 모듈을 둠
입출력 모듈
- I/O Module
- 입출력 모듈: 종류가 매우 다양해 전송 데이터 길이, 전송 속도, 전송 데이터의 형식 등이 서로 다른 입출력 장치들을 제어할 수 있는 장치
- 입출력장치는 주변장치(Peripheral Device)라고도 함, CPU와 컴퓨터 사용자 사이에서 자료와 정보를 교환하는 장치로 컴퓨터 외부에 존재하기 때문
- 주변장치들은 CPU와 주기억장치 RAM에 비하여 속도가 매우 느리기 때문에 CPU와 주기억장치와의 직접적인 통신이 불가능하고, 이 경우에도 입출력 모듈이 중간에서 제어를 통해서 통신이 가능하게 함
- 입출력 인터페이스, 입출력 채널, 입출력 프로세서, 입출력 제어기, 장치 제어기 등의 여러 가지 이름으로 불림
입출력 모듈의 기능
- 입출력장치의 제어와 타이밍 조정
- CPU(프로세서)와의 통신
- 입출력장치들과의 통신
- 데이터 버퍼링 기능
- 오류 검출
입출력 장치의 제어와 타이밍 조정
- 입출력 모듈은 내부 장치들과 외부 장치들 사이의 데이터 흐름을 조정하기 위한 기능을 포함함
- 외부 장치에서 CPU로 데이터가 전송되는 것을 제어하는 순서
- CPU가 입출력 모듈에게 I/O 장치의 상태를 검사하도록 요청
- 입출력 모듈이 상태 보고
- 만약 입출력 장치가 준비상태라면 CPU가 데이터 전소 요청
- 입출력 모듈이 입출력장치로부터 데이터 수신
- 입출력 모듈이 CPU로 데이터 전송
- 위의 5단계 과정에서 입출력 모듈은 입출력장치에 대하여 제어 기능을 수행하고 적절한 시기에 데이터를 전송할 수 있도록 타이밍 조정기능을 수행함
CPU(프로세서)와의 통신을 수행하기 위한 기능
- 명령 해석 (Command Decoding)
- 입출력 모듈은 CPU에서 받은 명령을 해석하고, 제어 버스를 통해서 제어 신호로 명령을 보냄
- CPU에서 하드디스크나 CD-ROM으로 전달되는 명령은 데이터의 저장이나 인출을 위한 것으로 READ SECTOR, WRITE SECTOR, SEEK track number, SCAN record ID와 같은 명령들임
- 데이터 교환
- 입출력 모듈의 가장 기본적인 기능으로 데이터 교환은 데이터 버스를 통하여 이루어짐
- 상태 보고
- 주변장치들은 저속으로 동작하기 때문에 입출력 모듈의 상태를 확인하는 것은 중요함
- 입출력 모듈은 상태를 확인하여 BUSY, READY, 결함상태 등의 상태 보고를 수행함
- 주소 인식
- 여러 종류의 입출력장치들을 구별하기 위해서는 주소가 필요함
- 따라서 모든 입출력 모듈은 제어하는 여러 주변장치의 주소를 인식하고 있어야 함
입출력장치들과의 통신 기능
- 입출력 모듈은 입출력 장치 간 통신 기능이 가능해야 함
- 입출력장치 간 통신에서도 명령들과 상태정보 및 데이터가 포함됨
데이터 버퍼링
- 입출력 모듈의 필수적인 기능
- 컴퓨터 내부에서 입출력 모듈로 전달되는 데이터 전송속도는 고속, 이렇게 전달된 데이터는 입출력 모듈 내의 버퍼에 일시적으로 저장되었다가 적절한 전송속도로 주변장치로 보내지는 버퍼링 기능을 수행
- 입출력장치에서 컴퓨터 내부로 전달되는 저속의 데이터는 주기억장치 또는 CPU의 동작에 영향을 주지 않도록 입출력 모듈의 버퍼에 고속의 데이터가 전송될 수 있도록 저장되었다가 전송됨
- 입출력 모듈은 전송률과 상관없이 항상 동작할 수 있어야 함
오류 검출
- 입출력장치들의 오류를 검사하고 오류가 발생하면 CPU로 보고할 수 있어야 함
- 입출력장치에서 발생하는 오류는 기계 및 전기적 오류와 데이터 전송 중에 발생하는 비트 오류 등이 있음
- 기계 및 전기적 오류에는 프린터의 종이 걸림, 하드디스크의 불량 디스크 트랙 등이 대표적
- 전송오류를 검출하는 데 사용되는 오류-검출 코드는 일반적으로 패리티 비트를 사용
입출력 모듈의 조직
- 입출력 모듈은 연결된 입출력장치를 제어하는데 필요한 세부적인 사항들을 모두 처리해 주기 때문에 CPU의 부담을 덜어줌
- 데이터 레지스터: 입출력 모듈로 들어오거나 나가는 데이터들은 버퍼링 기능을 위해서 일시적으로 데이터 레지스터에 저장됨
- 상태/제어 레지스터: 현재의 상태와 오류를 저장하기 위한 레지스터로, CPU에서 보낸 제어정보를 저장하기 위한 제어 레지스터로도 동작함
- 제어 선: CPU가 입출력 모듈로 명령을 보내는 데 사용됨
- 주소 선: 입출력모듈은 주소선을 통해서 입력된 여러 입출력 모듈의 주소 중에서 자신만의 주소를 인식 가능해야 하고, 연결된 입출력장치들의 주소도 알 수 있어야 함
- 입출력 모듈은 연결된 입출력장치를 제어하기 위한 데이터, 상태 신호, 제어 신호를 가지고 있음
상태 레지스터
- CPU는 자율적으로 동작하는 입출력장치와 동작 시간이 다르기 때문에, 현재 사용하려는 입출력장치의 상태를 알아야 함
- 각 장치의 상태는 1비트로 상태 레지스터에 나타내며, 장치가 동작 중이면 1(BUSY)로, 그렇지 않으면 0(READY)으로 표시하여 CPU에 알려줌 (이 비트의 역할로 자율적인 동작과 시간차의 문제를 해결할 수 있음)
- 상태 레지스터의 패리티 비트
- 입출력장치는 원시 데이터와 직접 접촉하고 복잡한 회로를 통하여 CPU의 제어를 받고 있으므로 CPU에 비하여 오류가 더 많이 발생함
- 데이터는 정확하게 입출력이 이루어져야 하므로 입출력 모듈에서 오류 여부를 검사하는데, 전송 도중이나 기억장치에서 발생한 에러를 검사하기 위해 상태 레지스터의 패리티 비트를 사용함
프린터 모듈의 동작
- CPU가 프린터 입출력 모듈에게 프린터의 상태 검사 요청
- 입출력 모듈은 상태/제어 레지스터를 통해 요청을 수신하고, 프린터 제어회로를 통해 프린터의 상태 검사
- 프린터 상태 검사를 통해 프린트할 준비가 되었는지, 혹은 다른 데이터를 프린트하는 중인지의 결과를 상태 신호를 통해 CPU로 전달
- 프린터가 데이터 수신(가능) 상태면, CPU는 입출력 모듈에게 출력 명령과 데이터를 전송 (만약 다른 데이터를 프린트하는 중이라면 CPU는 대기)
- 입출력 모듈은 프린트 동작을 수행하기 위한 제어 신호와 함께 출력될 데이터를 프린터로 전송
입출력장치의 연결과 데이터 전송
컴퓨터 시스템 구성 방법
- 컴퓨터와 입출력장치가 연결되는 방법에 따라 컴퓨터의 동작 특성이 달라짐
- 중앙 버스에 CPU, 주기억장치, 입출력장치가 연결된 형태
- 입출력장치는 입출력 모듈을 통해서 연결됨
- 이 연결은 제어동작에 의해 각 장치가 독립적으로 원활한 데이터 전송이 가능
- CPU가 중앙이고 좌우에 주기억장치와 입출력장치가 연결되는 형태
- 주기억장치에서 외부 입출력장치로 직접 데이터를 전송할 수 없고 CPU에 의해서 전송이 결정
- CPU, 주기억장치, 입출력장치 순의 직렬연결 형태
- 입출력장치가 직접 CPU에 데이터를 전송할 수 없고 주기억장치를 꼭 경유해야만 함
입출력 모듈의 연결
- 컴퓨터에서 각 장치 간의 연결은 계층적 구조를 이룸
- 입출력장치도 별도의 입출력 버스가 존재하며 다시 시스템 버스에 연결됨
- 계층적으로 연결된 입출력 모듈
- 버스 어댑터: 입출력 버스와 시스템 버스를 연결해서 입출력 데이터들에 대한 입출력 제어를 함
- 입출력 모듈: 속도 및 동작 특성이 유사한 입출력 장치들을 제어하고 관리함
- 입출력 버스: 시스템 버스와 동일하게 데이터 버스, 주소 버스, 제어 버스로 구성됨
입출력장치의 주소지정
- 입출력 모듈에는 여러 개의 입출력 장치가 연결되어 있으므로, 각 장치들을 구분할 수 있도록 고유의 번호 또는 주소가 지정돼 있음
- CPU가 보내는 입출력 명령에는 원하는 장치의 주소가 포함돼 있고, 각 입출력 모듈은 주소를 해석하여 그 명령이 자신에게 해당하는지를 판단함
- 입출력의 주소 지정 방식
- 기억장치-사상 방식
- 분리형 입출력 방식
기억장치-사상 방식
- Memory-mapped
- 입출력장치와 주기억장치는 하나의 주소 공간을 공유, 기억장치 주소 영역의 일부분을 입출력장치 주소 영역으로 할당하는 방식
- 기억장치 읽기/쓰기 신호를 입출력장치의 읽기/쓰기 신호로 사용 가능
- 프로그램에서 기억장치 관련 명령어들을 입출력장치 제어에도 사용 가능
- 입출력장치가 기억장치 주소영역을 사용하므로 기억장치의 주소 공간이 감소하는 단점이 있음
- 예시: 10비트의 주소영역 사용
- 0~511번지까지의 상위 512개 주소는 기억장치의 주소 공간을 위해서 할당
- 나머지 512~1023번지까지의 하위 512개 주소는 입출력장치들의 주소 공간을 위해서 할당
분리형 입출력 방식
- Isolated I/O, I/O Mapped
- 입출력장치의 주소 공간을 기억장치 주소 공간과는 별도의 기억장치에 할당하는 방식
- 입출력 제어를 위해서 별도의 입출력 명령어를 사용하기 때문에, 별도의 입출력장치에 대한 읽기 쓰기 신호가 필요함
- 입출력 주소 공간은 기억장치 주소 공간과는 별도로 지정이 가능하지만, 입출력 제어를 위해 입출력장치 명령어들만 이용할 수 있기 때문에 프로그래밍이 복잡해져서 불편함
- 예시: 주소 비트가 각각 10비트일 때 기억장치 주소와 입출력 주소는 각각 1024개씩 할당이 가능
입출력 데이터 전송
- 독립된 2개 이상의 입력장치 및 출력장치가 비동기적으로 데이터를 전송하는 경우에는 데이터의 전송을 알리는 방법이 필요함
- 컴퓨터에서는 데이터 전송을 알리는 방법으로 스트로브 신호를 이용하는 방법과 제어 신호를 이용하는 핸드셰이킹 방법이 있음
스트로브 신호
- Strobe
- 송신 측에서 데이터를 전송하는 경우 전송되는 것을 수신 측에 알려주기 위해 사용하는 별도의 신호를 스트로브 신호라고 함
- 이 신호를 전달하기 위해서는 별도의 회선이 필요하므로 데이터 버스 외에 추가적인 회선을 설치해야 함
- 스트로브 신호를 보내는 방법은 송신 측에서 수신 측으로 보내는 방법과 수신 측에서 송신 측으로 보내는 2가지 방법이 필요함
- 송신 측에서 수신 측으로 스트로브 신호를 보내는 방법
- 송신 측의 CPU에서 스트로브 신호를 수신 측에 해당하는 출력장치에 보냄
- 출력장치는 스트로브 신호와 데이터 버스에서 데이터를 수신
- 수신 측에서 송신 측으로 스트로브 신호를 보내는 방법
- 수신 측에서 스트로브 신호를 송신 측에 전달하여 데이터에 대한 전송을 요청
- 송신 측에서는 데이터 버스에 전송할 데이터를 보내고 수신 측에서는 이 데이터를 수신하게 됨
핸드셰이킹
- 송신 측과 수신 측 양쪽에서 상대편에게 제어 신호를 보내서 데이터의 전송을 알려주는 방법
- 데이터 버스 외에 양쪽에서 제어 신호를 보내주는 별도의 회선을 각각 가지고 있어야 함
- 제어 버스를 통해서 제어 신호를 송신하는 구조
- 시간도에서 데이터 전송이 시작되면 주기억장치는 송신 신호를 전송하고, 출력장치는 송신 신호를 확인하여 데이터를 수신함
- 수신이 완료되면 출력장치는 주기억장치에 수신 신호를 전송하여 송신 측에 수신이 완료된 것을 알려줌
- 목적지 개시 전송 방법: 수신 측이 데이터 전송을 먼저 요구하는 것
- 수신 측 출력장치는 준비 신호 RD(Ready) 신호를 송신 측 CPU에 전달
- CPU는 데이터를 데이터 버스에 싣고 송신 신호 DV(Data Valid)를 전달
- DV를 수신하고 데이터를 수신한 출력장치는 RD 신호를 제거
- 마지막으로 CPU는 송신 신호 DV를 제거하고 초기 상태가 됨
- 송신 측과 수신 측이 동시에 동작하는 방식으로 어느 한쪽의 장치가 잘못되면 데이터의 전송이 이루어지지 않기 때문에 높은 신뢰성을 가짐
- 이 방법은 하나의 송신 장치에서 여러 개의 수신 장치에 데이터를 전송할 수도 있음
- 송신장치에서 모든 수신장치가 데이터를 수신할 준비가 되었는지 검사하고 데이터를 전송한 후, 다시 송신장치는 모든 수신장치에서 데이터를 완전히 수신하였는지 확인함
입출력 제어 기법
- 입출력 장치가 컴퓨터의 내부 장치와 원활한 통신을 수행하려면 통신을 제어할 수 있는 제어 기법이 필요함
- 입출력 제어 기법 3가지
- CPU가 직접 입출력장치를 제어하는 방식
- 주기억장치와 입출력 장치가 직접적으로 데이터를 교환하는 직접 기억장치 액세스(DMA. Direct Memory Access) 방식
- 별도의 입출력 프로세서가 입출력 장치를 제어하는 방법
CPU가 직접 제어하는 방법
- 입력장치 및 출력장치를 직접 제어하는 방법으로, 데이터 전송 뿐만 아니라 데이터 상태 검사 등의 모든 명령을 CPU가 직접 수행하는 방법
- CPU 내에 존재하는 레지스터에 저장된 내용이 직접 출력장치에 전송되거나 반대로 입력장치에서 내부 레지스터에 전송되고 최종적으로 주기억장치에 저장되도록 하는 방법
프로그램 입출력 방식
- CPU가 프로그램을 수행하는 도중에 입출력과 관련된 명령을 만나면 해당 입출력 모듈에 명령을 보냄으로써 그 명령을 실행하는 방식
- CPU가 입출력 모듈의 상태 레지스터를 검사해서 출력장치의 상태(RDY 비트)를 판단함
- 만약, 사용 가능한 상태이면 read/write 명령 중에서 write 명령어를 전송하고 입출력 모듈의 데이터 레지스터에 데이터를 저장
- 이 과정이 완료될 때까지 상태 검사를 반복하면서 기다리게 되는데, CPU는 다른 작업을 수행할 수 없기 때문에 시간이 낭비됨
- 마지막으로 CPU는 입출력 모듈에 출력 명령을 레지스터에 기록하여 출력 동작을 수행하도록 함
- 프로그램 입출력 방식에서 사용하는 입출력 명령
- 제어 명령어: 주변장치를 활성화시키고 무엇을 해야 하는지 알리는 데 사용하는 명령어
- 검사 명령어: 입출력 모듈과 주변장치들의 상태를 검사하는 명령어, 검사의 예로 입출력 동작의 완료 여부와 오류 발생 여부 검사하는 명령어
- 읽기 명령어: 입출력 모듈이 주변장치에서 데이터를 읽고 내부 레지스터에 저장
- 쓰기 명령어: 입출력 모듈이 데이터 버스에서 데이터를 받아 주변장치로 보내는 명령
인터럽트-구동 입출력 방식
- 프로그램 입출력은 입출력 모듈이 데이터를 수신 또는 송신할 준비가 될 때까지 CPU가 기다려야 한다는 단점 존재
- 이 단점을 개선하기 위해서 CPU에서 입출력 명령을 받은 입출력 모듈이 동작을 수행하는 동안, CPU는 다른 프로그램을 처리할 수 있도록 한 것이 인터럽트-구동 입출력 방식
- 인터럽트: 일시 중단이라는 의미, CPU가 프로그램을 실행하고 있는 도중에 다른 프로그램을 처리하기 위해 실행 중인 프로그램을 중단 상태로 만들고 다른 프로그램을 처리하는 것을 말함
- CPU가 프로그램 명령어를 실행하는 중이라도 입출력 명령이 있으면 인터럽트를 발생시켜 입출력 동작의 개시를 지시하고 다시 CPU는 계속해서 원래의 프로그램 명령을 수행하게 됨
- 결과적으로 CPU는 입출력이 진행되는 동안 다른 유용한 일을 할 수 있게 되어 CPU 처리 효율이 높아지게 됨
- 인터럽트-구동 입출력 방식의 읽기 동작
- CPU가 입출력 모듈로 읽기 명령을 보냄
- 입출력 모듈은 주변장치에서 데이터를 읽음 (이 과정 동안 CPU는 다른 일을 수행)
- 입출력 모듈이 CPU로 인터럽트 신호를 보냄
- CPU가 입력된 데이터를 요구
- 입출력 모듈이 CPU로 데이터 전송
- 읽기 동작의 3단계에서 입출력 모듈이 인터럽트를 요구했을 때 인터럽트 처리 과정
- CPU는 인터럽트에 응답하기 전에 현재 실행 중인 명령어의 실행을 완료함
- CPU는 인터럽트를 검사하고 인터럽트 요구가 있다면 인터럽트를 발생한 장치에 확인 신호를 보냄
- 확인 신호를 받은 장치는 인터럽트를 요구한 요구 신호를 제거함
- CPU는 프로그램 상태 단어(PSW)와 프로그램 카운터(PC) 내용을 스택에 저장
- 새로운 프로그램(인터럽트 서비스 루틴)의 시작 주소를 PC에 적재하여 인터럽트 서비스를 시작
- 인터럽트-구동 입출력을 구현하기 위해서는 인터럽트를 요구한 장치를 찾는 방법과 인터럽트를 동시 요구 했을 때 어떤 것을 우선 처리할 지 결정되어야 함
- 인터럽트를 요구한 장치를 찾는 방법
- 다수 인터럽트 선 (Multiple Interrupt Lines)
- 각 입출력 모듈과 CPU 사이에 별도의 인터럽트 요구(INTR, interrupt request) 선과 인터럽트 확인(INTA, interrupt acknowledge) 선을 접속하는 방법
- 장점: CPU가 인터럽트를 요구한 장치를 쉽게 찾아낼 수 있음
- 단점: 하드웨어가 복잡하고 접속 가능한 입출력장치들의 수가 CPU의 인터럽트 요구 선의 입력 핀 수에 의해 제한됨
- 소프트웨어 폴 방식
- 임의의 입출력 모듈에서 인터럽트 요구가 INTR로 수신되면 CPU는 특정 명령 선 TEST I/O를 활성화 시키고 입출력 모듈들의 주소를 순서대로 주소 선으로 내보내어 해당 주소의 입출력 모듈에게 인터럽트 요청 여부를 파악함
- 정해진 순서대로 보내진 주소에 의해서 검사하는 입출력 모듈의 우선순위가 결정됨
- 인터럽트 처리가 중요한 입출력 모듈의 주소는 앞의 순위로 정하고 그렇지 않은 입출력 모듈의 주소는 뒤의 순서에 위치하게 하는 것
- 우선순위의 변경이 용이하고 별도의 하드웨어가 필요하지 않은 장점이 있지만 처리 시간이 오래 걸리는 단점 또한 있음
- 데이지 체인 (Daisy Chain)
- 모든 입출력 모듈이 하나의 인터럽트 요구 선을 공유함
- 입출력 모듈들의 인터럽트 확인 신호 선은 데이지 체인 형태로 연결
- 인터럽트 요구 선이 하나이며 이 하나의 선에 입출력 모듈들이 직렬로 연결되어 있는 구조
- CPU와 가까운 입출력 모듈의 우선순위가 높음
- 데이지 체인의 동작 원리
- 한 개 또는 그 이상의 입출력 모듈이 인터럽트를 요구
- 인터럽트 요구를 수신한 CPU는 이에 대한 확인 신호를 보냄
- 확인 신호를 수신한 입출력 모듈 중에서 인터럽트를 요구하지 않은 모듈은 다음 모듈로 확인 신호를 전달함
- 확인 신호를 수신한 인터럽트를 요구한 모듈은 데이터 버스를 통하여 인터럽트 벡터를 보냄
- CPU는 4단계에서 전달된 벡터를 이용하여 입출력 모듈을 구분함
- 장점: 하드웨어가 간단함
- 단점: 우선순위가 낮은 장치들이 서비스를 받지 못하거나, 매우 오랫동안 기다려야 하는 경우가 발생할 수 있음
- 버스 중재 (Bus Arbitration)
- 버스 중재 방식에서는 입출력 모듈이 인터럽트를 요구하기 전에 먼저 버스에 대한 사용권을 얻어야 함
- 따라서 매 순간 하나의 모듈만이 인터럽트를 보낼 수 있음
- CPU는 버스 중재를 통해서 전달된 인터럽트를 인지할 수 있으며, 인터럽트 확인 신호를 활성화해 응답함
- 다음으로 인터럽트 확인 신호가 활성화되면 입출력 모듈은 데이터 선을 통하여 데이터를 전송할 수 있게 됨
- 다수 인터럽트 선 (Multiple Interrupt Lines)
- 여러 장치의 인터럽트가 요구되었을 때 우선순위를 결정하는 방법
- 다수 인터럽트 선: CPU는 우선순위가 높은 인터럽트 선을 선택하면 됨
- 소프트웨어 폴: 검사하는 순서가 곧 우선순위가 됨
- 데이지 체인: 입출력 모듈이 연결된 순서가 우선순위가 됨
DMA를 이용한 입출력 제어 방식
- 대용량의 데이터를 이동시킬 때 효과적인 기술
- 기억장치와 입출력 모듈 간의 데이터 전송을 별도의 하드웨어인 DMA 제어기가 처리하고, CPU는 개입하지 않도록 하는 방식
DMA 제어기의 내부 구조
- 주소 레지스터는 주기억장치의 위치를 지정하는 주기억장치의 주소를 저장함
- 데이터 레지스터는 전송될 데이터를 저장
- 계수 레지스터는 전송되는 데이터 단어의 수를 저장하는 역할
- 제어회로에는 버스 요구 신호(BUS REQ)와 버스 승인 신호(BUS GRANT), 인터럽트(INTR), 그리고 읽기(RD)와 쓰기(RW)를 위한 연결 단자가 존재함
DMA 처리 순서
- CPU는 DMA 자잋로 한 번의 입출력 명령의 전달을 통해서 더 이상 관여를 하지 않지만 DMA 장치는 독자적인 동작으로 일련의 데이터를 기억장치와 직접 입출력할 수 있는 방식
- CPU가 DMA 제어기로 다음 정보를 포함한 명령을 전송
- 입출력 장치의 주소 / 연산 지정자
- 데이터가 읽혀지거나 쓰여질 주기억장치 영역의 시작 주소
- 전송될 데이터 단어들의 수
- DMA 제어기는 CPU로 버스 요구(BUS REQ) 신호 전송
- CPU는 DMA 제어기로 버스 승인(BUS GRANT) 신호를 전송
- CPU 개입 없이 DMA 제어기가 주기억장치에 데이터를 읽거나 씀
- 전송할 데이터가 남아있으면, 2단계부터 4단계까지 다시 반복
- 모든 데이터의 전송이 완료되면 CPU로 INTR 신호를 전송
- CPU가 DMA 제어기로 다음 정보를 포함한 명령을 전송
- CPU는 DMA에 입출력 명령을 보낸 후에 다른 일을 계속할 수 있게 되며, DMA 제어기가 모든 입출력 동작을 전담
- DMA 제어기는 CPU를 거치치 않고 한번에 한 단어씩 모든 데이터를 기억장치로 전송함
- 모든 전송이 완료되면 DMA는 인터럽트를 CPU에 보냄
- CPU는 전송의 시작과 마지막에만 입출력 동작에 관여함
DMA 제어기의 버스 연결 방식
- DMA 제어기는 시스템 버스에 연결되어 있고 버스 연결 방식에 따라서 분류됨
- ① 단일버스 분리식: DMA 제어기와 입출력 모듈이 분리됨
- DMA 제어기가 CPU, 주기억장치, 입출력 모듈과 함께 시스템 버스에 직접 연결된 형태
- CPU에서 명령을 수신한 DMA 제어기는 명령에 따라 주기억장치에서 데이터를 읽거나 쓰는 동작을 수행
- 따라서 데이터 전송은 시스템 버스를 두 번씩 사용하게 되므로 버스 사용량의 증가로 인한 시스템의 성능 저하가 발생하는 단점
- ② 단일버스 통합형: DMA 제어기 밑에 입출력 모듈이 연결됨
- 데이터 전송을 위해 시스템 버스를 두 번씩 사용하는 단일 버스 분리식 DMA 방식의 단점을 해결하기 위해서 버스 연결 방식을 개선한 것
- 이 방식은 데이터를 전송하기 위해서 시스템 버스를 한번만 사용
- ③ 입출력 버스형: DMA 제어기 밑에 입출력 버스를 별도로 연결한 형태
- 단일버스 분리식 DMA 방식의 단점을 해결하기 위한 방법으로 입출력 버스를 활용한 방식
- 입출력 버스에 여러 입출력 모듈이 접속된 형태로 데이터 전송과정에서 시스템 버스를 한 번만 사용
- 입출력장치는 종류와 속도가 다양하고 제어방법도 복잡하기 때문에, 간단한 구조를 가진 DMA 제어기로 데이터 전송을 지원하는 데 한계가 있음
입출력 프로세서를 이용한 입출력 제어 방식
- 입출력 처리를 전담하는 별도의 입출력 프로세서를 두어 CPU의 효율을 높이는 입출력 제어 방식
- DMA 제어기의 기능을 향상시킨 것으로 입출력 명령어들을 실행할 수 있는 프로세서이며, 데이터 블록을 임시 저장할 수 있는 지역 기억장치(local memory)를 포함
- 시스템 버스에 대한 인터페이스 및 버스 마스터 회로와 입출력 버스 중재 회로를 포함하고 있음
- CPU는 계산 업무에 필요한 데이터만을 처리하고, 입출력 프로세서는 여러 주변장치와 주기억장치 사이의 데이터 전송을 위한 통로를 제공
- 처음에는 CPU가 입출력 프로세서의 입출력 전송을 시작하도록 하지만, 그 이후에는 CPU와 독립적으로 입출력 프로세서가 동작
- 입출력 프로세서는 주변장치의 입출력 모듈을 제어해서 독립적으로 데이터를 송신 가능
- 입출력 방식은 정도의 차이는 있으나 CPU의 간섭을 받게 되지만, 입출력 프로세서를 이용해 간섭을 최소화하여 CPU의 이용 효율은 증가함
- 별도의 입출력 프로세서로 인한 하드웨어 비용이 증가하는 단점
입출력 채널
- DMA의 개념을 확장한 입출력 전담 프로세서를 입출력 채널(I/O Channel)이라고 함
- 입출력 채널과 DMA는 모두 주기억장치에 접근하여 자율적인 입출력이 되도록하므로 역할만 보면 거의 같음
- DMA: 하나의 블록을 입출력할 수 있음
- 입출력 채널: 블록을 여러 개 입출력할 수 있음
- 입출력 채널은 여러 개의 블록을 입출력할 수 있으므로 입출력되는 모든 정보를 알려주어야 하지만, 입출력 명령 하나로 여러 블록에 대한 정보를 알려주는 것은 어려움
- 이를 해결하기 위해 입출력 채널 제어기 내에 입출력되는 모든 정보를 기억할 수 있도록 장비를 갖춰야 함
- 하드웨어 비용이 증가하게 되는 단점 존재
입출력 채널 명령어
- 입출력 채널의 하드웨어 비용을 감소시키기 위한 방법으로 입출력될 여러 블록의 정보를 주기억장치에 기억시켜 두고 입출력 채널 제어기가 하나씩 가져가도록 하는 방법이 있음
- 주기억장치 내에 기억된 각 블록들의 정보를 입출력 채널 명령어(CCW, Channel Command Word)라고 함
- 채널 명령어는 입출력 채널이 동작할 명령어와 같으며, n개의 블록을 입출력하려면 n개의 채널 명령어를 수행해야 함
- 채널 명령어의 필수 요소
- 동작을 나타내는 명령으로 입력이나 출력을 지시
- 주기억장치에 접근할 블록의 위치를 표시
- 블록의 크기를 제시
- 다음 채널 명령어의 위치를 연결시키는 표시 비트
채널 프로그램
- 입출력 채널이 여러 개의 블록을 입출력할 때, 각 블록에 대한 채널 명령어의 모임을 채널 프로그램이라고 함
- 채널 프로그램은 채널 명령이 반드시 연속되어 모여있지 않아도 되므로 연결된 형식으로 별도의 장소에 기억되는데, 이를 체인이라 함
- 체인은 연결 표시 비트를 이용하여 다음에 수행할 채널 명령어의 위치를 알려줌
- 따라서 데이터 체인은 여러 블록을 입출력할 때와 여러 곳에 나누어진 블록을 하나로 모으는 작업을 편리하게 함
입출력 채널의 종류
- 채널 선택기 (Selector Channel)
- 여러 개의 소속 장치를 제어하고 접속된 여러 장치들 중의 하나를 선택하여 데이터 전송을 지원하는 방식
- 어느 한 시점에서 볼 때 입출력 동작이 하나가 전용 채널을 사용하는 것과 같은 개념으로 사용되는 채널
- 어떤 장치에서 데이터 입출력이 이루어지고 있으면 논리적인 정지가 있을 때까지는 다른 장치에서 사용할 수 없음
- 멀티플렉서 채널 (Multiplexer Channel)
- 동시에 여러 장치가 입출력 가능한 방식으로, 스위치 장치를 통해서 각 서브 채널들이 순차적으로 연결되는 것이 멀티플렉서 채널의 원리임
- 속도가 느린 장치에 대해서는 바이트 멀티플렉서가 여러 장치와의 문자 입출력을 가능하게 해 줌
- 속도가 빠른, 고속의 장치에 대해서는 블록 멀티플렉서가 여러 장치에서 들어오는 데이터 블록을 동시에 전송함