본문 바로가기
Computer Science/Computer Architecture

I/O : Interrupt (+ Atomic)

by Gofo 2021. 3. 27.

I/O device

I/O device의 수는 매우 많고, 접근 속도는 매우 느리다.

또한 사용/통신이 지속적으로 이루어지지 않고, 간혈적으로 이루어진다.

 

I/O device와 통신하는 방식에는 크게 두 가지가 있다.

  • Programmed I/O
  • Interrupt

 


Programmed I/O

프로세서가 주기적으로 I/O 발생 여부를 체크하는 것(periodic polling)이다.

 

데이터 wirte의 경우, 프로세서가 지정된 위치에 데이터를 넣고 write flag를 변경한다. 그 후 I/O device가 알아서 데이터를 가져간다.

데이터 read의 경우, I/O device가 정해진 위치에 데이터를 넣고 read flag를 변경한다. 프로세서는 이를 주기적으로 체크하여 read flag가 1이면 데이터를 읽는다.

 

아래 그림에서 오른쪽은 instruction이 동작하는 모습이다.

Instruction 수행 중간중간에 I/O device를 체크한다.

Programmed I/O

 

문제점

Write는 크게 문제가 되지 않지만, read는 문제가 된다.

 

모든 I/O를 device를 주기적으로 체크하는 것은 CPU에 매우 부담스럽다.

만약 response time에 제한이 있다면, 시간이 흐름에 따라 데이터가 소실될 수 있으므로 문제가 발생한다.

특히 멀티미디어 데이터의 경우에서는 데이터 소실은 민감한 부분이기 때문에 polling을 더욱 자주 해야한다.

 


 

Interrupt

프로세서가 I/O device하고 효율적으로 데이터를 주고받기 위해 고안된 메커니즘이다.

I/O device와 데이터를 주고받기 위해서 IRQ(Interrupt Request Line)이라는 하드웨어를 추가하는 것이다.

하나의 IRQ에 여러 개의 I/O device가 달릴 수 있다.

 

 

참고 : Interrupt vs Exception

  • Interrupt : 주로 프로세서 외부 요인에 의해서 발생한다.
  • Exception : 주로 실행 중인 프로그램의 오류로 인해서 발생한다.

 

Interrupt Processing and Instruction Execute

  • enable INT, disable INT
    • I/O 처리를 위해 추가되는 special instruction으로, 필수적인 것은 아니다.
    • privileged machine instruction으로, 커널 모드에서 사용이 가능하다.
    • disable INT는 interrupt가 발생해도 처리하지 않는 것이다.
  • IRET
    • interrupt 처리 연산이 끝남을 의미한다.

 

INT enable 상태에서 인터럽트가 발생하면 아래 그림과 같은 flow가 발생한다.

  1. 실제로 누군가가 interrupt 발생했는가?
  2. PC(Program Counter) register 값을 저장하고, disable INT 수행한다.
  3. ISR jump하고 발생한 인터럽트에 해당하는 instruction으로 넘어간다.
  4. interrupt instruction fetch-decode하고, 해석한 instruction IRET인지 확인한다.
  5. IRET 아니라면 instruction 수행한다.
  6. 만약 IRET라면, 저장했던 PC register 값을 복구하고 enable INT 수행한다.
  7. IRET instruction execute하고 원래의 자리로 돌아가 이후 instruction들을 수행한다.

 

컴퓨터는 instruction 수행이 끝난 후(다음 instruction fetch 전)에 INT를 확인함으로써 machine instruction이 atomic하게 수행됨을 보장한다.

Atomic이란 all or nothing으로, 실행을 완전히 하거나 그렇지 않으면 아예 실행을 하지 않는 것을 말한다.

만약 instruction을 수행하고 있었다면 fetch, decode, execute의 단계가 지켜질 수 있도록 보장하는 것이다.

 

Interrupt processing
Interrupt processing을 간단하게 나타낸 것

 

Multiple Interrupt

Interrupt의 종류는 많으며 각 interrupt마다 우선순위가 있다.

주로 고장/오작동인 경우가 최우선이고, disk I/O 등의 우선순위가 제일 낮다.

 

 

Interrupt Nesting

만약 한 interrupt를 처리 중인데 그보다 더 높은 우선순위의 다른 interrupt가 발생한다면 컴퓨터는 현재 진행 중인 interrupt 처리를 중단하고 더 높은 interrupt를 처리한다.

이를 Nested Interrupt라 한다.

Interrupt nesting

 


참고 : Atomic Operation

Atomic

All or nothing으로 수행을 끝까지 완료하거나, 그렇지 않으면 수행을 아예 하지 않는 것을 의미한다.

OS에서의 critical section과 데이터베이스에서의 transaction이 포함된다.

 

Squence of machine instruction은 atomic하게 수행되어야 한다.

 

Atomicity & Recoverability

모든 모듈들이 전혀 오류가 없으면 좋겠지만 현실적으로 불가능하다.

때문에 문제가 생겼을 때 recoverability(회복)를 해야 하는 것이 중요하다.

 

시스템이 atomicity을 보장한다면 고장이 났을 때 회복하기가 쉽다.

문제가 발생하면 과거의 request가 완료되었는지 확인하고, 완료되지 않았으면 다시 수행하면 되기 때문이다.

 

In Small embedded system

Atomic 보장을 위해 소형 embedded system에서는 enable INT와 disable INT을 이용한다.

소형 임베디드 시스템은 주로 하나의 프로그램만 동작하기에 이러한 방법이 가능하다.

small embedded system에서의 atomic

 

In General-purpose system

범용 시스템에서는 enable/disable INT 방식이 불가능하다.

  • enable/disable INT는 privileged instruction이기 때문에 일반 프로그램에서는 사용할 수 없다.
  • 많은 프로세스가 동작하고 있기에 enable/disable INT를 이용하면 unrelated process가 영향을 받는다.
    • critical section이나 transaction의 문제는 주로 소수의 프로세스들이 shared resource를 사용할 때 발생한다.
    • 대부분의 프로세스는 사용되는 shared resource에 연관이 되어있지 않다. → 일부 프로세스들의 문제이다.
    • 예시 : disable INT을 사용한다면 timer interrupt가 영향을 받음 → OS는 process scheduling을 하지 못함

 

Atomic operation을 구현하기 위해 synchronization instruction이라는 special instruction과, 이를 이용한 lock library을 이용한다.

 

HW-SW Interaction

하드웨어는 소프트웨어를 실행하기 위한 기계이다.

때문에 하드웨어 개발자들은 어떻게 하면 프로그램을 빠르게 실행할 수 있고, 소프트웨어를 만들기 쉬운지를 고민한다.

Synchronization instruction, enable/disable INT 등은 이러한 고민의 산물이다.

 


참고 : RTS(Real-time system)

RTS

Response time(deadline)을 가지고 있는 시스템을 real-time system이라 한다.

 

RTS는 크게 두 가지 부류로 구분할 수 있다.

  • Hard RTS
    • deadline을 넘기면 큰 문제가 발생한다.
    • 에 : 원자력 발전소가 일정 온도를 넘으면 일정 시간 안에 냉각기를 가동시켜야 한다.
  • Soft RTS
    • deadline을 넘겨도 큰 문제가 발생하지 않고, 사용자가 불편해 한다.
    • 예 : 웹 로딩이 매우 느린 경우

 

RTOS(Real-time OS, Real-time kernel)

Response time의 제한을 갖는 임베디드 시스템을 만들 때는 특수한 OS를 탑재해야 한다.

 

RTOS와 범용 OS의 가장 큰 특징은 scheduling이다.

  • RTOS
    • Priority-based preemptive scheduling
    • 지금 처리하고 있는 일보다 더 중요한(우선순위가 높은) 일이 들어오면 현재 하고 있는 일을 즉시 중단하고 급한 일로 넘어간다.
  • 범용 OS
    • fairness을 강조
    • 각 응용 프로그램에게 정해진 time quantum을 제공한다.

 

 

댓글