프로그램 가능한 고급 인터럽트 컨트롤러
Advanced Programmable Interrupt Controller인텔의 Advanced Programmable Interrupt Controller (APIC)는 인터럽트 컨트롤러 패밀리입니다.APIC는 이름에서 알 수 있듯이 인텔의 8259 Programmable Interrupt Controller(PIC)보다 고급이며, 특히 멀티프로세서 시스템의 구축을 가능하게 합니다.멀티프로세서 컴퓨터 시스템의 인터럽트 라우팅 효율 문제를 해결하기 위한 아키텍처 설계 중 하나입니다.
APIC는 스플릿아키텍처 설계로 보통 로컬컴포넌트(LAPIC)가 프로세서 자체에 내장되어 시스템버스 상에 옵션 I/O APIC가 있습니다.최초의 APIC는 82489DX로 로컬 APIC와 I/O APIC로 기능하는 개별 칩입니다.82489DX에서는 Intel 486 및 초기 Pentium 프로세서를 탑재한 대칭형 멀티프로세서(SMP) 시스템을 구축할 수 있었습니다.예를 들어 레퍼런스 쌍방향 486 SMP 시스템에서는 3개의 82489DX 칩이 사용되었습니다.2개는 로컬 APIC로, 1개는 I/O APIC로 사용되었습니다.P54C 프로세서에서 로컬 APIC 기능은 인텔 프로세서의 실리콘에 통합되었습니다.최초의 전용 I/O APIC는 인텔 82093입니다.AA는 PIIX3 기반 시스템을 위해 고안되었습니다.
개요
인텔 APIC 시스템에는 로컬 APIC(LAPIC)와 I/O APIC의 2가지 컴포넌트가 있습니다.시스템의 각 CPU에는 1개의 LAPIC가 있습니다.최초의 실장(82489DX)에서 LAPIC는 이후 인텔 프로세서의 실리콘에 실장되는 것과는 반대되는 이산 회로였습니다.일반적으로 시스템의 주변기기 버스마다 1개의 I/O APIC가 있습니다.원래의 시스템 설계에서는 LAPIC와 I/O APIC는 전용 APIC 버스에 의해 연결되었습니다.최신 시스템에서는 모든 APIC 컴포넌트 간의 통신에 시스템버스를 사용합니다.
개별 칩이든 CPU에 내장되어 있든 각 APIC에는 특정 APIC 구현을 위한 4비트 버전 번호가 포함된 버전 레지스터가 있습니다.예를 들어 82489DX의 APIC 버전 번호는 0이지만 버전1은 Pentium 90 [1]및 100 프로세서에 통합된 제1세대의 로컬 APIC에 할당되어 있습니다.
8259 PIC를 탑재한 시스템에서는 8259를 시스템의 Bootstrap Processor(BSP; 부트스트랩 프로세서)의 LAPIC 또는 시스템의 I/O APIC 중 하나 또는 둘 다에 연결할 수 있습니다.단, 논리적으로는 8259는 임의의 시간에1번밖에 접속되지 않습니다.
개별 APIC
1세대 인텔 APIC 칩인82489DX는 인텔80486 및 초기 Pentium 프로세서에서 사용되도록 설계되어 있었습니다만, 실제로는 1개의 회로로 구성된 외부 로컬 및 I/O APIC입니다.인텔 MP 1.4 사양에서는 대부분의 Pentium [2]프로세서에 탑재되어 있는 '내장 APIC'와는 대조적으로 '분리 APIC'라고 부릅니다.82489DX에는 16개의 인터럽트 [3]라인이 있으며, ISA 인터럽트 [4]중 일부가 손실될 수 있다는 기호가 있습니다.
멀티프로세서 486 시스템에서는 각 CPU를 자체 82489DX와 페어링해야 하며 I/O APIC로 보조 82489DX를 사용해야 합니다.82489DX는 8259A(XT-PIC)를 에뮬레이트할 수 없었기 때문에 하위 [5]호환성을 위해 물리 칩으로도 포함해야 했습니다.82489DX는 132핀 PQFP로 [3]패키지화되어 있었습니다.
통합 로컬 APIC
로컬 APIC(LAPIC)는 SMP 시스템의 특정 프로세서의 모든 외부 인터럽트를 관리합니다.또한 LAPIC 간에 Inter-Processor Interrupt(IPI; 프로세서간 인터럽트)를 받아들여 생성할 수 있습니다.LAPIC는 I/O APIC에서 최대 224개의 사용 가능한 인터럽트 벡터를 지원할 수 있습니다.0 ~ 255의 벡터 번호 0 ~31은 x86 프로세서에 의한 예외 처리를 위해 예약되어 있습니다.
P5 마이크로아키텍처(P54C)부터 시작하는 모든 인텔 프로세서에는 로컬 APIC가 [6][7]내장되어 있습니다.단, P5 프로세서에서 로컬 APIC가 비활성화되어 있는 경우 소프트웨어에 의해 로컬 APIC를 다시 활성화할 수 없습니다.이 제한은 P6 프로세서 이후의 [7]프로세서에서는 적용되지 않습니다.
PCI 2.2 이후의 사양의 Message Signaled Interrupts(MSI; 메시지시그널링 인터럽트) 기능은 로컬 APIC를 [8]활성화하지 않으면 사용할 수 없습니다.MSI를 사용하면 I/O APIC가 필요하지 않습니다.또한 MSI 모드에서는 최대 224개의 인터럽트가 지원되며 IRQ 공유는 [9]허용되지 않습니다.
APIC 타이머
로컬 APIC의 또 다른 장점은 인터벌 모드와 원오프 [7]모드 모두에서 사용할 수 있는 고해상도(1마이크로초 이상) 타이머를 제공하는 것입니다.
APIC 타이머에 초기 허용 문제가 있었습니다.2002년의 마이크로소프트 문서(대신 고정밀 이벤트 타이머의 도입을 제창)에서는 LAPIC 타이머가 "해상도 불량"이며 "클럭 실리콘은 때때로 매우 버그가 심하다"[10]고 비판했습니다.단, APIC 타이머는 프로파일링을 유효하게 하면 Windows 7에서, Windows 8에서는 모든 상황에서 사용됩니다(Windows 8이 이 타이머에 대한 독점권을 주장하기 전에는 CPU-Z 등의 일부 프로그램에서도 사용되었습니다).Microsoft Windows에서는 APIC 타이머는 공유 가능한 [11]리소스가 아닙니다.
APIC 타이머에 의해 제공되는 비주기적 인터럽트는 Linux 커널틱리스 커널 기능에 의해 사용됩니다.이 옵션이지만 기본 기능은 2.6.18에서 새롭게 추가되었습니다.APIC 타이머가 있는 컴퓨터에서 활성화되어 있는 경우 커널에서는 8253 Programmable Interval Timer를 사용하여 시간을 [12]기록하지 않습니다.VMware 문서에는 다음과 같이 기재되어 있습니다.「소프트웨어에는, 빈도를 신뢰할 수 있는 방법이 없습니다.일반적으로 로컬 APIC 타이머의 주파수를 판별하는 유일한 방법은 PIT 또는 CMOS 타이머를 사용하여 측정하는 것입니다.이 타이머는 [13]대략적인 결과밖에 나오지 않습니다.
I/O APIC
I/O APIC에는 리다이렉션테이블이 포함되어 있습니다.이 테이블은 페리페럴버스로부터 수신한 인터럽트를 1개 이상의 로컬 APIC로 라우팅하기 위해 사용됩니다.초기 I/O APIC(82489DX, SIO 등)A 및 PCEB/ESC)는 16개의 인터럽트 회선만 지원했지만 이후 82093과 같은 인터럽트 회선을 지원했습니다.AA (PIIX3/PIIX4를 위한 별도 칩)는 24개의 인터럽트 [9]라인을 지원하였습니다.64핀 PQFP로 [14]패키지화되어 있습니다.82093AA는 일반적으로 PIIX3/PIIX4에 연결되었고, 그것의 통합된 레거시 8259 [14]PIC를 사용했다.ICH1과 Intel 815는 I/O APIC를 통합했습니다.
2009년 Linux를 사용한 인텔의 벤치마크에 따르면 I/O APIC는 8259 에뮬레이션(XT-PIC)에 비해 인터럽트 레이텐시를 약 3배 줄인 반면 MSI를 사용한 경우에는 레이텐시를 약 7배 줄였습니다.[15]
변종
xAPIC는 Pentium 4에서 도입되었으며, x2APIC는 2008년 [16]11월에 Nehalem 마이크로아키텍처에 도입된 인텔의 프로그램 가능한 인터럽트 컨트롤러의 최신 세대입니다.x2APIC의 주요 개량점에서는 지원되는 CPU의 수와 인터페이스의 퍼포먼스에 대처하고 있습니다.
현재 x2APIC는 32비트를 사용하여 CPU를 수신처로 지정하며 물리적인 수신처 모드를 사용하여 최대32 2-1의 CPU를 수신처로 지정할 수 있습니다.논리 행선지 모드는, 다른 방법으로 동작해, 클러스터를 도입합니다.이 모드를 사용하면, 최대 220~16 의 프로세서를 주소 지정할 수 있습니다.
개선된 인터페이스로 Inter-Processor Interrupt(IPI; 프로세서간 인터럽트) 송신에 필요한 APIC 레지스터 액세스의 수가 감소합니다.이 이점 때문에 KVM은 물리적으로 지원하지 않는 구형 프로세서의 x2APIC를 에뮬레이트할 수 있으며, 이 지원은 Conroe로 돌아가는 QEMU 및 AMD Opteron G 시리즈 프로세서(둘 다 x2APIC를 [17][18]지원하지 않음)에 대해서도 마찬가지입니다.
APICv는 인텔의 하드웨어 가상화 지원 브랜드명으로 게스트 인터럽트 오버헤드를 줄이는 것을 목적으로 하고 있습니다.APICv는 Xeon E5-26xx v2(2013년 말 출시)와 Xeon E5-46xx v2(2014년 [19][20][21]초 출시)로 판매되는 Ivy Bridge-EP 프로세서 시리즈에 도입되었습니다.AMD는 [22][23]AVIC라고 불리는 유사한 기술을 발표했으며, 15h 모델 6Xh([24]Carrizo) 프로세서 이후를 이용할 수 있습니다.
문제들
APIC 시스템의 실장에는, 특히 8254의 접속 방법에 관한 많은 기존의 버그가 있습니다.장애가 있는 BIOS가 인터럽트 루팅을 올바르게 설정하지 않거나 ACPI 테이블과 인텔 MultiProcessor Specification(MP; 멀티프로세서 사양) 테이블이 잘못 표시될 수 있습니다.
운영 체제가 APIC를 제대로 지원하지 않는 경우에도 APIC가 시스템 장애의 원인이 될 수 있습니다.오래된 운영체제에서는 I/O와 로컬 APIC를 비활성화해야 하는 경우가 많았습니다.대칭형 멀티프로세서와 멀티코어 시스템이 보급되어 있기 때문에 이것이 불가능하지만 펌웨어와 운영체제의 버그는 거의 발생하지 않습니다.
경쟁.
AMD와 Cyrix는 비슷한 목적의 Open을 제안한 적이 있습니다.최대 32개의 [25]프로세서를 지원하는 PIC 아키텍처.[26] 1995년경 IBM 및 Compaq로부터 선언적 지원을 받았습니다.x86 메인보드는 Open과 함께 출시되지 않았습니다.단,[27] PIC.오픈 후x86 시장에서 PIC가 실패하자 AMD는 인텔의 APIC에 AMD Athlon 이후의 프로세서를 라이선스했습니다.
그러나 IBM은 Open을 기반으로 MultiProcessor Interrupt Controller(MPIC)를 개발했습니다.PIC 레지스터 [28]사양MPIC는 일부 RS/6000 [29]시스템에서 IBM을 포함한 PowerPC 기반 설계에 사용되었으며, Apple에서도 PowerMac [30][31]G5까지 사용되었습니다.
참고 항목
- 인텔 8259
- 프로그래머블 인터럽트 컨트롤러(PIC)
- Inter-Processor Interrupt(IPI; 프로세서간 인터럽트)
- 방해하다
- 인터럽트 핸들러
- 인터럽트 레이텐시
- 메시지 시그널링 인터럽트(MSI)
- Non-Maskable Interrupt(NMI; 마스크 불가능 인터럽트)
참조
- ^ 인텔 멀티프로세서 사양, 버전 1.4, 3-5페이지, 1997년 5월
- ^ 인텔 멀티프로세서 사양, 버전 1.4, 1~4페이지, 1997년 5월
- ^ a b Badri Ram (2001). Adv Microprocessors Interfacing. Tata McGraw-Hill Education. p. 314. ISBN 978-0-07-043448-6.
- ^ http://people.freebsd.org/~fsmp/SMP/페이퍼/apicsubsystem.txt[베어 URL 플레인텍스트 파일]
- ^ 인텔 멀티프로세서 사양, 버전 1.4, 5-3페이지, 1997년 5월
- ^ Scott M. Mueller (2011). Upgrading and Repairing PCs (20th ed.). Que Publishing. p. 242. ISBN 978-0-13-268218-3.
- ^ a b c Linux 커널용 Uwe Walter, Vincent Oberle μ초 정밀 타이머 지원
- ^ "Windows Hardware Dev Center". msdn.microsoft.com.
- ^ a b James Coleman, 메시지 시그널링 인터럽트 사용을 통한 인터럽트 지연 감소, 페이지 10-11
- ^ 멀티미디어 타이머 지원 가이드라인, 2002년9월 20일
- ^ Wayback Machine에서 2014년 2월 22일 아카이브된 Windows 8 및 APIC 타이머
- ^ "VMware Knowledge Base". kb.vmware.com.
- ^ VMware 가상 머신의 시간 기록(VMware vSphere 5.0, Workstation 8.0, Fusion 4.0의 경우), 8페이지
- ^ a b "Resource & Design Center for Development with Intel". Intel.
- ^ James Coleman, 메시지 시그널링 인터럽트 사용을 통한 인터럽트 지연 감소, 페이지 19
- ^ "Intel Nehalem mit X2APIC - Extended xAPIC Architecture (Bild 27/27) - ComputerBase". www.computerbase.de.
- ^ "Re: [Qemu-devel] [Question] why x2apic's set by default without host sup". lists.gnu.org.
- ^ "[Qemu-devel] [PATCH] target-i386: enable x2apic by default on more recen". lists.nongnu.org.
- ^ http://www.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/2012-lpc-virt-intel-vt-feat-nakajima.pdf[베어 URL PDF]
- ^ "APIC Virtualization Performance Testing and Iozone* - Intel® Software". software.intel.com.
- ^ http://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/xeon-e5-4600-v2-brief.pdf[베어 URL PDF]
- ^ Wei Huang, AMD Advanced Virtual Interrupt Controller 소개, XenSummit 2012
- ^ http://www.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/2012-lpc-virt-interrupt-virt-kvm-roedel.pdf[베어 URL PDF]
- ^ "[Xen-devel] [RFC PATCH 0/9] Introduce AMD SVM AVIC". www.mail-archive.com.
- ^ "OpenPIC Definition from PC Magazine Encyclopedia". Pcmag.com. 1994-12-01. Retrieved 2011-11-03.
- ^ Brooke Crothers (20 March 1995). "AMD, Cyrix offer up alternative SMP spec". InfoWorld: 8. ISSN 0199-6649.
- ^ 앙드레 D.Balsa, 1998년 1월 Linux Gazet 24호에 게재된 "Linux Benchmarking: Part III - Analysting Benchmark Results"에 대한 메모
- ^ IBM 멀티프로세서 인터럽트 컨트롤러. 2014-02-23 데이터북 Wayback Machine에서 보관
- ^ Arca Systems TTAP 평가 시설 AIX 버전 4.3.1을 실행하는 IBM Corporation RS/6000 분산 시스템. TCSEC 평가 C2 보안, 페이지 29
- ^ Singh, Amit (13 October 2006). Take a Look Inside the G5-Based Dual-Processor Power Mac – via informIT database.
- ^ Power Mac G5 개발자 노트 (레거시), 페이지 26
추가 정보
- IA-32 인텔 아키텍처 소프트웨어 개발자 매뉴얼, Volume 3A: 시스템 프로그래밍 가이드, 파트 1, 10장
외부 링크
- 인텔 64 아키텍처 x2APIC 사양 (PDF)
- 인텔 x2APIC 아키텍처에 대한 자세한 내용은 인텔 64 및 IA-32 아키텍처 소프트웨어 개발자 매뉴얼을 참조하십시오.