6.1 외부 장치들(External Devices)

Download Report

Transcript 6.1 외부 장치들(External Devices)

컴퓨터시스템구조론
제6장
입력/출력(Input/Output : I/O)
6.1 외부 장치들(External Devices)
종류
• 인간이 읽을 수 있는 장치 : 비디오 단말기, 프린터, 등
• 기계가 읽을 수 있는 장치 : 자기 디스크, 자기 테이프,
센서(sensor), 구동장치(actuator), 등
• 통신 장치 : 모뎀(modem), 네트워크 인터페이스 카드
(NIC), 등
I/O 모듈 : 주변장치와 시스템 버스의 연결
외부장치 구성도 (교재 p.199 내용참조)
데이터 신호
제어신호
상태신호
변환기(Transducer)
버퍼
6.2 I/O 모듈
I/O 모듈(I/O Module)의 필요성
 주변장치(peripheral device)의 종류가 다양하다.




주변장치의 종류가 다양하며 운용방식도 제각각이다
전송되는 데이터 단위(단어 길이)가 서로 다르다
전송 속도가 서로 다르다
데이터의 형식(format)이 서로 다르다
 주변장치들이 CPU와 RAM에 비하여 훨씬 더 느리다
 결과적으로, 프로세서 및 주기억장치가 접속되는 시스템
버스와 주변장치 사이의 직접적인 통신은 불가능하며,
인터페이스를 위한 I/O 모듈이 필요하다.
I/O 모듈의 기능




제어(control)와 타이밍(timing)
프로세서와의 통신
장치들과의 통신 : 상태정보, 데이터 전송
데이터 버퍼링(data buffering) 주기억장치나
프로세서에 비해 주변장치의 전송률은 매우 낮아
모듈내에 일시적으로 데이터를 저장하는 기능
 오류 검출(error detection)
 I/O 모듈 : I/O 채널(channel), I/O 프로세서, I/O
제어기(controller), 혹은 장치 제어기(device
controller) 라고도 함
I/O 동작의 처리순서
1. 프로세서가 I/O 모듈에게 장치의 상태를 검사하도록
요청한다
2. I/O 모듈이 상태를 알려준다
3. 만약 장치가 준비된 상태라면, 프로세서가 장치에게
데이터 전송을 요청한다
4. I/O 모듈이 외부장치로부터 데이터를 받는다
5. I/O 모듈이 프로세서로 데이터를 보내준다
I/O 모듈 기능
명령해석(Command Decoding) : 제어버스를
통해 프로세서로부터 데이터를 주고 받음
데이터 : 데이터 버스 이용
상태보고(Status Reporting)
 주변장치는 매우 느려 I/O 모듈의 상태 확인 필요
 예) BUSY , READY
주소 인식 : I/O 장치도 주소를 가짐
I/O 모듈의 내부 조직도
(교재 p.205-206 참조)
I/O 동작의 처리 기법
 프로그램 I/O (Programmed I/O)
 인터럽트-구동 I/O (Interrupt-driven I/O)
 직접 기억장치 액세스 (Direct Memory Access : DMA)
6.3 프로그램 I/O
프로세서가 I/O를 직접 제어하는 방식
동작 순서
• 프로세서가 I/O 장치의 상태를 검사하고,
• Read/write 명령 및 데이터를 전송한 후,
• I/O 모듈이 동작을 완료할 때까지 (상태 검사를
반복하면서) 기다린다.
[단점] 프로세서 시간이 낭비된다 (I/O 동작을 처리
하는 동안에 프로세서가 다른 일을 하지 못한다)
I/O 명령(I/O command)
 프로세서는 I/O 모듈로 외부장치의 주소와 I/O 명령을
보낸다
 I/O 명령의 종류
 제어(control) : 모듈이 해야 할 동작을 지정
 검사(test) : I/O 모듈과 주변장치의 상태 검사
[예] I/O 동작의 완료 여부, 오류 발생 여부
 읽기(read) : I/O 모듈에게 주변장치로부터 데이터를 읽어서
내부 버퍼에 저장하도록 명령
 쓰기(write) : 데이터 버스로부터 데이터를 받아서 주변장치로
보내도록 명령
I/O 주소지정(I/O addressing)
 기억장치-사상 I/O (memory-mapped I/O)
 I/O 장치와 기억장치가 주소 공간을 공유한다.
 기억장치 주소 공간의 감소
 기억장치에 대한 읽기/쓰기와 같은 방법으로 I/O를 액세스한다.
 I/O를 위한 별도의 명령어가 필요하지 않다.
사용할 수 있는 명령어가 다양하므로 프로그래밍이 용이하다.
 고립형 I/O 혹은 I/O-사상 I/O (Isolated I/O 혹은
I/O-mapped I/O )
 I/O 장치와 기억장치가 별도의 주소 공간을 가진다.
 I/O와 기억장치는 별도의 선택 신호를 가져야 한다
[예] I/ORD 신호, I/OWR 신호
 I/O를 위한 별도의 명령어가 필요하다.
 사용할 수 있는 명령어 종류가 제한된다.
 I/O 주소지정 방식의 사용 예
6.4 인터럽트-구동 I/O
 프로세서로부터 I/O 명령을 받은 I/O 모듈이 동작을
수행하는 동안, 프로세서가 다른 프로그램을 처리할 수
있도록 하는 방식

I/O 모듈은 I/O 명령 처리를 완료하였을 때 프로세서
에게 인터럽트 신호를 보내어 알리며, 그때 프로세서는
다시 원래의 프로그램 수행을 계속한다.
인터럽트-구동 I/O의 순서
(읽기 동작의 경우)
1. 프로세서가 I/O 모듈로 읽기(read) 명령을 보낸다
2. I/O 모듈은 주변장치로부터 데이터를 읽는다. 그 동안
프로세서는 다른 일을 수행한다
3. I/O 모듈이 프로세서로 인터럽트 신호를 보낸다
4. 프로세서가 데이터를 요구한다
5. I/O 모듈이 데이터를 전송한다
인터럽트 처리 과정
I/O 모듈이 인터럽트를 요구했을 때, 프로세서는
1. 프로세서는 현재 실행중인 명령어의 실행을 완료한다
2. 인터럽트를 검사하고, 요구가 있다면 그 장치에게 확인
신호를 보낸다
3. 프로그램 상태 단어(PSW)와 프로그램 카운터(PC)
내용을 스택(stack)에 저장한다
4. 인터럽트 처리 프로그램의 시작 주소를 프로그램
카운터에 적재한다 (인터럽트 서비스를 시작한다)
인터럽트 처리 과정의 흐름도
설계 요소들
인터럽트를 요구한 장치를 어떻게 찾을 것인가?
여러 장치들이 인터럽트를 요구했다면 어떤 것을
먼저 처리할 것인가?
방법
 다수 인터럽트 선(multiple interrupt lines)
 소프트웨어 폴(software poll)
 데이지 체인(daisy chain)
 버스 중재(bus arbitration)
다수 인터럽트 선을 이용하는 방법

I/O 모듈들이 각각 별도의 인터럽트 요구 선과 확인 선으로
접속되며, 각 요구 선은 우선 순위를 가진다
[장점] 하드웨어가 간단하다
[단점] 접속할 수 있는 장치의 수에 한계가 있다
소프트웨어 폴(software poll) 방식
 프로세서가 어떤 모듈이 인터럽트를 요구했는지 순서대로
검사하며, 우선 순위는 검사 순서에 의해 결정된다
[장점] 별도의 하드웨어가 필요하지 않다
[단점] 시간이 오래 걸린다
데이지 체인(Daisy Chain) 방식
 시스템 구성


모든 I/O 모듈들이 하나의 인터럽트 요구 선을 공유한다
I/O 모듈들은 인터럽트 확인 신호를 이용하여 데이지 체인
형태로 연결된다 (프로세서와 가까운 모듈의 우선순위가 높다)
 동작 원리
1.
2.
3.
4.
한 개(혹은 그 이상)의 모듈이 인터럽트를 요구한다
프로세서가 확인 신호를 보낸다
인터럽트를 요구하지 않은 모듈은 다음 모듈로 통과시킨다
인터럽트를 요구한 모듈은 데이터 버스를 통하여 인터럽트
벡터(interrupt vector)를 보낸다
 프로세서는 벡터를 이용하여 I/O 모듈을 구분한다
데이지 체인의 구성도
버스 중재(bus arbitration)을 이용하는 방식
1. I/O 모듈은 먼저 버스 사용권을 얻은 다음에
인터럽트를 요구한다
2. 프로세서는 확인 신호를 보내어 응답한다
3. I/O 모듈은 벡터를 보낸다
6.5 직접 기억장치 액세스
(Direct Memory Access)
 인터럽트-구동 방식과 프로그램 I/O 방식의
문제점
1. I/O 전송률이 제한된다
2. 프로세서가 I/O 전송을 위하여 많은 시간을 소모
한다.
 이유 : 프로세서가 I/O 데이터 전송에 직접 개입
해야 하고, 전송되는 모든 데이터들이 프로세서를
경유해야 하기 때문.
DMA의 기능
기억장치와 I/O 모듈 간의 데이터 전송을 별도의
하드웨어인 DMA 모듈(DMA 제어기)이
처리하며, 프로세서는 개입하지 않도록 하는
방식.
DMA의 동작 원리
 데이터 전송이 필요할 때, 프로세서는 다음과 같은 정보가
포함된 명령을 DMA 모듈로 보낸다:
• 동작의 종류(Read/Write) 지정
• I/O 장치의 주소
• 데이터가 읽혀지거나 쓰여질 기억장치의 시작 주소
• 전송될 데이터의 수
 DMA 모듈이 데이터 전송을 수행하며, 프로세서는 다른
일을 처리한다.
 DMA 모듈은 데이터 전송을 완료한 다음에, 프로세서로
인터럽트를 보낸다.
DMA 구성 방법
특징
a. 단일-버스, 분리식 DMA : 한 번의 데이터 전송을 위하여
버스를 두 번 사용
b. 단일-버스, 통합 DMA-I/O : 한 번의 데이터 전송을
위하여 버스를 한 번만 사용
c. I/O 버스 : DMA 모듈에 여러 I/O 장치들이 별도의
I/O 버스를 통하여 접속.
6.6 I/O 채널과 프로세서
 I/O 장치들이 점차 더 복잡하고 정교해지고 있다.
[예] 3D graphics cards
 프로세서가 I/O 모듈에게 전송을 명령하고, I/O 모듈이
전체 전송 동작을 담당한다.
 I/O 성능을 향상시키기 위하여 전용 프로세서를 사용
하게 되었다  I/O 채널(I/O channel) 혹은 I/O
프로세서(I/O 프로세서).
 이 프로세서는 별도의 지역 기억장치(local memory)를 가진다.
I/O 채널의 특성
 선택기 채널(Selector channel) : 접속된 여러 장치들
중의 하나를 선택하여 데이터 전송을 지원
(그림 6.15. (a))
 멀티플렉서 채널(Multiplexor channel) : 동시에 여러
장치들의 전송을 지원 (그림 6.15 (b))
 바이트 멀티플렉서 : 전송률이 서로 다른 여러 개의 문자
I/O 장치들에 대한 바이트 단위의 동시 전송을 지원
 블럭 멀티플렉서 : 고속 I/O 장치들의 블록 단위의 동시
전송을 지원