Кіріспе
Компьютерлік үзілістерді басқарушы құрылғылар тобы
Компьютерлік есептеулерде Intel компаниясының Advanced Programmable Interrupt Controller (APIC) – бағдарламаланатын үзілістерді басқарушы құрылғылар тобы болып табылады. Атауынан көрініп тұрғандай, APIC, Intel компаниясының 8259 бағдарламаланатын үзіліс контроллерінен (PIC) гөрі артық мүмкіндіктерге ие, әсіресе көп процессорлы жүйелерді құруға мүмкіндік береді. Бұл көп процессорлы компьютерлік жүйелерде үзіліс маршрутын тиімді ету мәселелерін шешуге бағытталған бірнеше архитектуралық жобалардың бірі. APIC – бұл бөлінген архитектуралық жоба, оның құрамында процессордың өзіне енгізілген жергілікті компонент (LAPIC) және жүйелік шинадағы қосымша I/O APIC бар. Алғашқы APIC – 82489DX болды, ол жергілікті және I/O APIC ретінде жұмыс істейтін жеке чип болды. 82489DX Intel 486 және алғашқы Pentium процессорларымен симметриялық көппроцессорлық (SMP) жүйелерді құруға мүмкіндік берді; мысалы, екі процессорлы 486 SMP жүйесі үш 82489DX чипін қолданды, екеуі жергілікті APIC ретінде, ал біреуі I/O APIC ретінде. P54C процессорынан бастап жергілікті APIC функционалдығы Intel процессорларының кремнийіне біріктірілді. Алғашқы арнайы I/O APIC – Intel 82093AA болды, ол PIIX3 негізіндегі жүйелер үшін арналған.
In computing, Intel's Advanced Programmable Interrupt Controller (APIC) is a family of programmable interrupt controllers. As its name suggests, the APIC is more advanced than Intel's 8259 Programmable Interrupt Controller (PIC), particularly enabling the construction of multiprocessor systems. It is one of several architectural designs intended to solve interrupt routing efficiency issues in multiprocessor computer systems. The APIC is a split architecture design, with a local component (LAPIC) usually integrated into the processor itself, and an optional I/O APIC on a system bus. The first APIC was the 82489DX it was a discrete chip that functioned both as local and I/O APIC. The 82489DX enabled construction of symmetric multiprocessor (SMP) systems with the Intel 486 and early Pentium processors; for example, the reference two way 486 SMP system used three 82489DX chips, two as local APICs and one as I/O APIC. Starting with the P54C processor, the local APIC functionality was integrated into the Intel processors' silicon. The first dedicated I/O APIC was the Intel 82093AA, which was intended for PIIX3 based systems.
Шолу
Intel APIC жүйесінде екі компонент бар: жергілікті APIC (LAPIC) және I/O APIC. Жүйедегі әрбір CPU-да бір LAPIC болады. Алғашқы іске асырылуында (82489DX) LAPIC жеке схема болды, ал Intel процессорларының кремнийіндегі кейінгі нұсқауларынан өзгеше болды. Әдетте, жүйедегі әрбір перифериялық шина үшін бір I/O APIC болады. Алғашқы жүйелік жобаларда LAPIC және I/O APIC арнайы APIC шинасы арқылы байланыстырылған. Жаңа жүйелерде барлық APIC компоненттері арасындағы байланыс үшін жүйелік шина қолданылады. Әрбір APIC, ол жеке чип болсын немесе CPU-ға енгізілген болсын, өзінің нақты APIC нұсқауын анықтайтын төрт биттік нұсқа нөмірі бар нұсқа тіркелгісіне ие. Мысалы, 82489DX-тің APIC нұсқа нөмірі 0, ал 1-ші нұсқа Pentium 90 және 100 процессорларына енгізілген жергілікті APIC-тің бірінші буынына берілді. 8259 PIC бар жүйелерде 8259 жүйелік жүктеу процессорына (BSP), жүйенің I/O APIC-терінің біріне немесе екеуіне де қосылуы мүмкін. Дегенмен, 8259 бір уақытта тек бір рет қосылады.
I/O APIC-тер
I/O APIC-терде перифериялық шиналардан келіп түскен үзілістерді бір немесе бірнеше жергілікті APIC-ке жолдау үшін қайта бағыттау кестесі болады. Алғашқы I/O APIC-тер (мысалы, 82489DX, SIO. A және PCEB/ESC) тек 16 үзіліс желісін қолдаған, бірақ кейінірек шыққандары, мысалы 82093AA (PIIX3/PIIX4 үшін жеке чип) 24 үзіліс желісін қолдады. Ол 64 қосқандық PQFP корпусында шығарылған. 82093AA әдетте PIIX3/PIIX4-ке қосылып, оның кіріктірілген 8259 PIC-ін пайдаланған.
Нұсқалар
xAPIC Pentium 4 процессорларымен бірге енгізілді, ал x2APIC – 2008 жылдың қараша айында Nehalem микроархитектурасымен ұсынылған Intel бағдарламаланатын үзіліс контроллерінің ең соңғы нұсқасы. x2APIC-тің негізгі жетістіктері қолдау көрсетілетін процессорлар саны мен интерфейстің өнімділігін арттыруға бағытталған. x2APIC енді процессорларға сілтеме жасау үшін 32 бит қолданады, бұл физикалық бағыт режимін пайдаланып 232 - 1 процессорға дейін адрестеуге мүмкіндік береді. Логикалық бағыт режимі енді басқаша жұмыс істейді және кластерлерді енгізеді; осы режимді пайдаланып, 220 - 16 процессорға дейін адрестеуге болады. Жақсартылған интерфейс процессорлар аралық үзілістерді (IPI) жіберу үшін қажетті APIC тіркелгіштеріне кіру санын азайтады. Осы артықшылықтың арқасында KVM физикалық түрде қолдау көрсетпейтін ескі процессорлар үшін x2APIC-ті эмуляциялай алады және осылай істейді, ал бұл қолдау QEMU-дан Conroe және тіпті AMD Opteron G сериялы процессорлары үшін де қолжетімді (екі процессор да x2APIC-ті түпкілікті түрде қолдамайды). APICv – Intel компаниясының қонақ жүйедегі үзілістердің кешігуін азайтуға бағытталған аппараттық виртуализация қолдауының фирмалық атауы. APICv Ivy Bridge EP процессорлар сериясында ұсынылды, ол 2013 жылдың соңында Xeon E5 26xx v2 (шығарылды) және 2014 жылдың басында Xeon E5 46xx v2 (шығарылды) ретінде сатылды. AMD ұқсас AVIC технологиясын жариялады, ол 15h отбасылық модельдердің 6Xh (Carrizo) процессорларымен және одан кейінгі нұсқаларымен қолжетімді.
Мәселелер
APIC жүйелерінің іске асырылуында, әсіресе 8254 құрылғысының қосылуына қатысты бірқатар белгілі қателер бар. Бұрыс BIOS-тар үзіліс бағытталмасын дұрыс орнатпауы немесе ACPI кестелері мен Intel MultiProcessor Specification (MPS) кестелерін қателі ұсынуы мүмкін. Егер операциялық жүйе APIC-ті дұрыс қолдамаса, жүйе сәтсіздікке ұшырауының себебі болуы мүмкін. Көне операциялық жүйелерде I/O және жергілікті APIC-терді өшіру жиі қажет болатын. Симметриялық мультипроцессорлық және көп ядролы жүйелер кең таралғандықтан бұл қазір мүмкін болмаса да, фирмалық бағдарламалық қамтамасыз етудегі және операциялық жүйелердегі қателер енді сирек кездеседі.
Жарыс
AMD және Cyrix бір кезде 32 процессорға дейін қолдайтын, мақсаты жақын OpenPIC архитектурасын ұсынған; 1995 жыл шамасында IBM және Compaq оған қолдау көрсеткен. Бірақ OpenPIC-ті қолдайтын x86 аналық платалар шығарылмады. OpenPIC x86 нарығында сәтсіздікке ұшырағаннан кейін, AMD өздерінің AMD Athlon және кейінгі процессорлары үшін Intel-дің APIC-ін лицензиялады. Алайда IBM, OpenPIC регистрлік сипаттамаларына негізделген MultiProcessor Interrupt Controller (MPIC) құрылғысын жасады. MPIC PowerPC негізіндегі жобаларда, оның ішінде IBM-нің кейбір RS/6000 жүйелерінде, сондай-ақ Apple компаниясының Power Mac G5 модельдерінде де қолданылды.