Just do IT
article thumbnail

입출력 수행과 인터럽트

   * 인터럽트에 의한 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

 

출처 : 제로베이스

profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!