입출력 수행과 인터럽트
* 인터럽트에 의한 I/O
* 우선순위 인터럽트
인터럽트에 의한 I/O
* 입출력 장치와 CPU간 전송 모드 측면
- 입출력 전송(I/O transfer)구조 상 CPU의 interrupt 활용 모드
* 입출력 장치와 CPU간 전송에 대한 소프트웨어적 고찰
- 컴퓨터는 주변 장치와의 인터페이스를 위한 H/W 못지않게 S/W루틴을 가져야 한다
> 주변 장치 제어
> 프로세서와 주변 장치 사이에 데이터 전송
- I/O routine은 주변장치의 활성화를 위한 제어 커맨드의 발송 및 데이터 전송을 위한 준비 상태(device status)체크 로직을 보유해야 한다
- 입출력 소프트웨어는 시스템에 인터럽트제어를 발할 수 있어야 하며, 이를 실행 할 주변 장치에 커맨드를 발하여야 한다
- DMA(Direct Memory Access)전송 시 I/O 소프트웨어는 DMA채널을 개시 시킬 수 있어야 한다
우선 순위 인터럽트
* 입출력 장치와 CPU간 interrupt 논리
- CPU와 I/O 장치 사이의 데이터 전송은 CPU에 의해 시작된다.
> 각 장치는 통신 준비 여부(제어라인의 상태 or 플랙(flag)에 의해서만 확인 가능하다)에 따라 CPU와 통신이 가능하다
> 시스템 전체의 퍼포먼스를 위해 각 디바이스 인터페이스는 플래그가 인 에이블(enable)되었을 때 비로소 CPU에 인터럽트를 요천한다
- 프로세서가 서비스 루틴으로 분기 주소를 선택하는 방법
> vectored interrupt : 인터럽트를 내는 소스가 프로세서에서 분기에 대한 정보를 제공(인터럽트 벡터, interrupt vector)한다
> Non-vectored interrupt : 분기 주소는 메모리의 고정 위치에 저장 되어 있다
- 수 많은 장치 중 인터럽트를 발생한 장치의 선별, 또한 동시에 발생한 다수개의 인터럽트의 경우 서비스의 우선 순위를 결정해야 하는 문제 발생
- 우선 순위 인터럽트는 동시 다발적으로 발생한 인터럽트에 대한 서비스 순서를 결정하기 위해 각 소스에 우선 순위를 부여한 인터럽트 시스템을 이르는 용어이다
> 우선 순위 결정은 소프트웨어/하드웨어적으로 처리한다
> 소프트웨어 적으로 인터럽트 우선 순위를 결정하는 방법 -> 폴링(polling)
> 모든 인터럽트를 위한 공통의 서비스 프로그램 -> 소요시간이 매우 길 수 있다 -> H/W적으로 해결
* 데이터 체인 우선순위 인터럽트
- 인터럽트를 발생하는 모든 장치를 직렬로 연결 함으로써 이루어진다
* 병렬 우선 순위 인터럽트
- 각 장치의 인터럽트 요청에 따라 각 비트가 개별적으로 세트 될 수 있는 레지스터를 사용한다
- 우선순위 : 자기디스크, 라인 프린터, 카드 리더, 키보드 순(위치 순)
- 마스크 레지스터 - 인터럽트 요청 상태를 조정 할 수 있는 장치
* 우선순위 인코더 & 인터럽트 사이클
- 병렬 우선 순위 인터럽트의 논리 흐름
① 우선 순위 인코더는 벡터 주소(VAD)의 두 비트(x, y) -> CPU
② 마스크 되지 않은 인터럽트 발생 시 (IST)를 세트 시킨다
③ 인터럽트 제어 프로그램에 의해 Value (IEN) 결정
④ IST and IEN -> interrupt to CPU
⑤ INTACK from CPU and IST -> Enable (bus buffer)
- 인터럽트 사이클 (IEN 상태 값)
> IEN <- 0 : 인터럽트 기능 사용 중지 (프로세서가 인터럽트 인지)
> 각 수행 사이클이 종료된 뒤
if CPU <- IEN('1') & IST('1'),
then do interrupt,
else fo fetch
출처 : 제로베이스
'공부 Note > 컴퓨터 구조' 카테고리의 다른 글
Chapter 07 병렬 컴퓨터 구조와 성능 구조 (2) (0) | 2022.02.24 |
---|---|
Chapter 07 병렬 컴퓨터 구조와 성능 구조 (1) (0) | 2022.02.24 |
Chapter 06 입출력 구조 (2) (0) | 2022.02.24 |
Chapter 06 입출력 구조 (1) (0) | 2022.02.24 |
Chapter 05 메모리 구조 (4) (0) | 2022.02.24 |