WIPIVERSE

프로세서 간 인터럽트

프로세서 간 인터럽트

정의
프로세서 간 인터럽트(Inter‑Processor Interrupt, IPI)는 다중 프로세서 시스템(멀티코어·멀티프로세서 아키텍처)에서 하나의 프로세서가 다른 프로세서에게 특정 작업을 수행하도록 요청하기 위해 발생시키는 하드웨어 수준의 신호이다.

주요 목적

목적 설명
작업 동기화 특정 캐시 라인 무효화, TLB(Translation Lookaside Buffer) 플러시 등 전체 시스템의 일관성을 유지하기 위해 사용
스케줄링 다른 프로세서에 대기 중인 작업을 깨우거나, 현재 실행 중인 작업을 중단하도록 지시
시스템 관리 전원 관리, 부트·리부팅, 오류 복구 등 시스템 전반에 걸친 제어 신호 전달
통신 특정 서비스(예: I/O 완료 알림)를 다른 프로세서에 알리는 데 활용

동작 방식

  1. 신호 생성

    • 요청 프로세서는 메모리 매핑된 레지스터 혹은 특수 명령어를 통해 대상 프로세서의 인터럽트 라인에 신호를 기록한다.
  2. 전달 경로

    • 현대의 고성능 버스(예: Intel QPI, AMD Infinity Fabric) 또는 클러스터 내 로컬 인터커넥트가 신호를 전달한다.
  3. 핸들러 실행

    • 대상 프로세서는 해당 인터럽트를 수신하면 사전에 정의된 인터럽트 핸들러를 실행한다. 핸들러는 요청된 작업을 수행하고, 필요에 따라 응답 신호를 원발 프로세서에 되돌려 보낸다.

사용 예시

  • 멀티코어 운영체제
    • Linux 커널은 smp_call_function() 계열 API를 통해 IPI를 발행한다. 예를 들어, 커널 모듈 업데이트 시 모든 CPU에서 TLB를 플러시해야 할 경우 IPI가 사용된다.
  • 하이퍼바이저
    • 가상화 환경에서 하이퍼바이저가 가상 CPU(VCPU) 간에 상태 전환을 요청할 때 IPI를 활용한다.

관련 용어

  • Inter‑Processor Communication (IPC): 프로세서 간 데이터 교환을 포괄하는 개념으로, 인터럽트 외에도 공유 메모리, 메세지 패싱 등 다양한 메커니즘을 포함한다.
  • 소프트웨어 인터럽트: 운영체제나 응용 프로그램이 소프트웨어적으로 발생시키는 인터럽트로, 하드웨어 인터럽트와 구분된다.

제한 및 고려 사항

  • 오버헤드: IPI는 인터럽트 처리와 컨텍스트 전환을 수반하므로 과도한 사용은 시스템 성능에 부정적인 영향을 끼칠 수 있다.
  • 동시성 관리: 여러 프로세서가 동시에 IPI를 발생시킬 경우 경쟁 조건이 발생할 수 있어, 적절한 동기화 메커니즘이 필요하다.

요약
프로세서 간 인터럽트는 다중 프로세서 환경에서 핵심적인 제어·동기화 메커니즘이며, 운영체제와 하이퍼바이저가 시스템 전체의 일관성과 효율성을 유지하기 위해 널리 활용한다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기