WIPIVERSE

APIC

정의
APIC는 Advanced Programmable Interrupt Controller(고급 프로그래머블 인터럽트 컨트롤러)의 약어로, 컴퓨터 시스템에서 인터럽트(외부 이벤트) 처리를 관리하는 하드웨어 장치를 의미한다. 기존의 8259A PIC(Programmable Interrupt Controller)를 대체하며, 멀티코어 프로세서 환경에서 효율적인 인터럽트 라우팅 및 우선순위 제어를 제공한다.

주요 기능

  1. 인터럽트 라우팅: 각 CPU 코어에 독립적인 로컬 APIC(LAPIC)을 두어, 인터럽트를 특정 코어에 직접 전달할 수 있다.
  2. 우선순위 제어: 인터럽트마다 우선순위를 할당하여, 높은 우선순위 이벤트가 먼저 처리되도록 조정한다.
    3 멀티프로세서 지원: 인터럽트 전송 방식인 Interrupt Request (IRQ)와 Message Signaled Interrupt (MSI)를 통해 다중 코어 간에 복잡한 인터럽트 흐름을 관리한다.
  3. 전력 관리: 필요 시 APIC를 비활성화하거나 저전력 모드로 전환하여 전력 소비를 최소화한다.

구조

  • Local APIC (LAPIC): 각 CPU 코어에 내장된 APIC로, 로컬 인터럽트 처리와 타이머 기능을 포함한다.
  • I/O APIC: 시스템 버스(PCIe 등)와 연결된 외부 APIC로, 외부 장치에서 발생하는 인터럽트를 받아 LAPIC에 전달한다.
  • x2APIC: APIC의 확장 버전으로, 64비트 주소 공간을 지원하고 더 많은 인터럽트 라인을 제공한다.

역사

  • 1990년대 초반 인텔은 Pentium Pro 프로세서에서 최초로 APIC 아키텍처를 도입했다. 이후 AMD도 자체적인 APIC 구현을 도입하면서 표준이 확대되었다.
  • 2000년대 초반부터는 멀티코어 CPU가 보편화되면서 APIC의 역할이 더욱 중요해졌다.

관련 표준 및 문서

  • Intel® 64 and IA-32 Architectures Software Developer’s Manual (Volume 3A, Chapter 10)
  • AMD64 Architecture Programmer’s Manual (Chapter 6)
  • PCI Local Bus Specification (MSI/MSI‑X 기능 설명)

사용 예시

  • 운영 체제 커널(예: Linux, Windows)은 부팅 과정에서 APIC를 초기화하고, 인터럽트 라우팅 테이블을 구성한다.
  • 가상화 환경에서는 하이퍼바이저가 가상 APIC(vAPIC)를 제공하여 게스트 OS가 물리 APIC와 동일하게 인터럽트를 처리하도록 지원한다.

다른 의미
“APIC”는 상황에 따라 다른 분야에서 약어로 사용될 수 있다. 예를 들어, 일부 생명과학 문헌에서는 APIC가 “apicoplast”(조류 및 일부 원생동물의 비엽형 플라스토이드)와 연관된 용어로 등장한다. 그러나 컴퓨팅 분야에서 가장 널리 알려진 의미는 위에 설명한 Advanced Programmable Interrupt Controller이다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기