제 7장 입력/출력
I/O 모듈의 일반적인 모델
외부 장치들
- 외부와 컴퓨터 사이에 데이터를 교환할 수 있는 방법 제공
- I/O 모듈과 연결된 링크를 통하여 컴퓨터와 접속
- 링크(link)는 I/O 모듈과 외부 장치 사이에 제어, 상태 및 데이터를 교환하는데 사용됨
- 주변 장치(peripheral device)
- I/O 모듈에 접속된 외부 장치
외부 장치 블록 다이어그램
키보드/모니터
- 컴퓨터와 사용자 간의 상호작용에 이용되는 가장 보편적인 도구
- 사용자는 키보드를 통하여 입력을 제공
- 모니터는 컴퓨터가 제공한 데이터를 디스플레이
IRA(International Refeerence Alphabet)
- 데이터 교환의 기본 단위는 문자(Character)
- 각 문자는 대응되는 코드를 가지고 있다.
- 코드의 길이는 7 비트 혹은 8 비트(parity or extended)
- $2^7$ 가지의 서로 다른 문자 표현 가능
- 문자의 두 가지 유형
- 프린트 가능한 문자
- 알파벳, 숫자, 특수문자 등등
- 제어 문자(Control characters)
- 프린팅의 제어 혹은 문자의 디스플레이와 관계 있음
- 다른 제어 문자는 통신 절차와 관계됨
- 프린트 가능한 문자
- 데이터 교환의 기본 단위는 문자(Character)
키보드 코드
- 사용자가 키를 누르면 전기적 신호가 발생되며, 이 신호가 변환기(transducer)에 의해 해석되어서 해당 IRA 코드의 비트 패선으로 변환된다.
- 이 비트 패턴은 컴퓨터 내의 I/O 모듈로 전송
- 출력 시엔 IRA 코드 문자들이 I/O 모듈로부터 외부 장치로 전송됨
- 변환기는 이 코드를 해석하고, 해당 문자를 표시하거나 요구된 제어 기능을 수행하기 위해서 출력 장치로 필요한 전자 신호 전송
I/O 모듈의 기능
제어와 타이밍(timing)
: 데이터를 받고 외부로 보낼 때, 시간조정오류 검출
데이터 버퍼링
장치들과의 통신
프로세서와의 통신
: 명령어, 데이터, 상태 보고, 주소 재구성 포함
I/O 모듈의 조직
프로그램 I/O(Programmed I/O)
- I/O 동작에는 세 가지 기술들이 사용될 수 있다.
Programmed I/O
- 프로세서와 I/O 모듈 사이에 데이터가 교환된다.
- 프로세서는 프로그램을 실행함으로써 주변 장치의 상태 감지, 읽기, 혹은 쓰기 명령의 전송, 데이터 전송 같은 I/O 동작들을 직접 제어
- 프로세서가 I/O 모듈에게 명령을 보낸 후에 I/O 동작이 완료될 때까지 기다려야 한다.
- 만약 프로세서가 I/O 모듈보다 속도가 빠를 때는 프로세서 시간이 낭비된다.
인터럽트-구동 I/O(Interrupt-driven I/O)
- 프로세서가 I/O 명령을 보낸 다음에, I/O 모듈이 그 일을 완료하고 인터럽트를 보낼 때까지 다른 명령어들의 수행을 계속할 수 있다.
직접 기억 장치 액세스(Direct Memory Access:DMA)
- I/O 모듈과 메인 메모리가 프로세서의 개입 없이 데이터를 직접 교환
I/O 기술들
No Interrupts | Use of Interrupts | |
---|---|---|
I/O to Memory transfer through processor(CPU 관여) | Programmed I/O | Interrupt-driven I/O |
Direct I/O to Memory transfer(직접) | Direct Memory Access(DMA) |
I/O 명령들
프로세서에 의해 주소가 지정된 I/O 모듈이 받게 되는 네가지 I/O 명령들
제어(Control)
:- 주변 장치를 활성화시키고 무엇을 해야하는지 알리는 데 사용
검사(Test)
:- I/O 모듈과 주변 장치의 여러 가지 상태 조건들을 검사하기 위하여 사용
읽기(Read)
:- I/O 모둘이 주변 장치로부터 데이터를 읽어서 내부 버퍼에 저장하도록 지시하는 내용
쓰기(Write)
:- 이 명령은 I/O 모듈에게 데이터 버스롭터 데이터(byte or word)를 받은 다음에 주변 장치로 전송하도록 하는 명령
데이터 블록의 입력을 위한 세가지 기술들
I/O 명령어들
💡 프로그램 I/O 방식에서 프로세서가 기억장치로부터 인출하는(fetch) I/O 관련 명령어들과 프로세서가 명령어들을 실행하기 위하여 I/O 모듈로 보내는 I/O 명령들 사이에는 밀접한 관계가 있다.
- 각 I/O 장치들은 고유의 번호 또는 주소를 가진다.
기억장치 사상
- 기억 장소들과 I/O 장치들이 하나의 주소 공간(address space)를 가진다.
- 버스에 한 개의 읽기 선(read line)과 한 개의 쓰기 선(write line)만 있으면 된다.
I/O 사상 요약
기억장치-사상 I/O
- 기억 장소들과 I/O 장치들이 하나의 주소 공간(address space)를 가진다.
- I/O 모듈 내의 레지스터들을 기억 장소들과 같이 취급한다.
- 기억 장치와 I/O 장치들을 액세스 할 떄 동일한 기계 명령어를 사용한다.
- 기억 장치 주소와 I/O 주소가 임의의 형태로 조합되어 존재한다.
고립형 I/O(Isolated I/O)
- I/O에 대한 주소 공간이 기억 장치의 주소 공간과 분리된다.
- I/O 혹은 기억 장치 선택 선들이 필요하다.
- I/O를 위한 특별 명령어가 필요하다.
인터럽트-구동 I/O
- 프로그램 I/O의 문제점은 I/O 모듈이 데이터를 수신 or 송신할 준비가 될 떄까지 프로세서가 오래 기다려야한다.
- 다른 방법으로 프로세서가 모듈에게 명령을 보내고 다른 일을 하는것
- I/O 모듈은 프로세서와 데이터 교환이 준비되면 프로세서에게 인터럽트를 보내서 서비스를 요구
- 프로세서는 그에 따른 데이터 전송을 수행하고, 하던 일로 돌아가 다시 수행
인터럽트 처리도
설계 이슈들
- 인터럽트 I/O를 구현하는 데 있어서 발생하는 두 가지 설계상의 문제들
- 많은 수의 I/O 모듈이 있을 때, 인터럽트를 발생한 장치를 어떻게 찾을 것인가
- 여러 개의 인터럽트들이 발생했을 때, 프로세서는 처리할 인터럽트를 어떻게 결정하는가
장치 확인 방법
- 다수 인터럽트 선(Multiple Interrupt Line): 잘안쓰임
- 소프트웨어 폴(Software Poll)
- 데이지 체인(Daisy Chain): 하드웨어 폴, 벡터화
- 버스 중재(Bus Arbitration): 벡터화
프로그램 I/O와 인터럽트-구동 I/O의 결점들
- I/O 전송률은 프로세서가 장치를 검사하고 서비스하는 속도에 의해 제한된다.
- 프로세서가 I/O 전송 관리를 위하여 많은 시간을 소모한다. 각 I/O 전송을 위하여 많은 명령어가 수행되어야 한다.
💡 대량의 데이터가 이동될 떄는 더 효율적인 기법이 요구된다.
직접 기억장치 액세스(DMA)
DMA
직접 기억 장치 액세스
'컴퓨터 구조' 카테고리의 다른 글
제 10장 컴퓨터 산술 (0) | 2024.03.28 |
---|---|
제 8장 운영 체제 지원 (0) | 2024.03.28 |
제 6장 외부 기억장치(I/O 모듈에 연결된 기억장치) (0) | 2024.03.28 |
제 5장 내부 기억장치 (0) | 2024.03.28 |
제 4장 캐시 메모리 (0) | 2024.03.28 |