Programmable interrupt controller: Difference between revisions

Content deleted Content added
m Replaced 1 bare URLs by {{Cite web}}; Replaced "Archived copy" by actual titles
 
(61 intermediate revisions by 48 users not shown)
Line 1:
{{Short description|Integrated circuit that handles interrupts}}
In [[computing]], a '''programmable interrupt controller''' ('''PIC''') is a device that is used to combine several sources of [[interrupt]] onto one or more [[CPU]] lines, while allowing priority levels to be assigned to its interrupt outputs. When the device has multiple interrupt outputs to assert, it will assert them in the order of their relative priority. Common modes of a PIC include hard priorities, rotating priorities, and cascading priorities. PICs often allow the cascading of their outputs to inputs between each other.
{{distinguish| PIC microcontroller }}
{{Multiple issues|
{{one source|date=February 2014}}
{{more footnotes|date=September 2013}}
}}
 
In [[computing]], a '''programmable interrupt controller''' ('''PIC''') is an [[integrated circuit]] that helps a [[microprocessor]] (or [[CPU]]) handle [[Interrupt request (PC architecture)|interrupt requests]] (IRQs) coming from multiple different sources (like external I/O devices) which may occur simultaneously.<ref>{{cite journal|title=A Revisitation of Kernel Synchronization Schemes
== Common features ==
|author1=Christopher Small |author2=Stephen Manley
PICs typically have a common set of registers: Interrupt Request Register (IRR), In-Service Register (ISR), Interrupt Mask Register (IMR). The IRR specifies which interrupts are pending acknowledgement, and is typically a symbolic register which can not be directly accessed. The ISR register specifies which interrupts have been acknowledged, but are still waiting for an [[End_of_interrupt|End Of Interrupt]] (EOI). The IMR specifies which interrupts are to be ignored and not acknowledged. A simple register schema such as this allows up to two distinct interrupt requests to be outstanding at one time, one waiting for acknowledgement, and one waiting for EOI.
|url=https://static.usenix.org/publications/library/proceedings/ana97/full_papers/small/small.html}}</ref> It helps prioritize IRQs so that the CPU switches execution to the most appropriate [[interrupt handler]] (ISR) after the PIC assesses the IRQs' relative priorities. Common modes of interrupt priority include hard priorities, rotating priorities, and cascading priorities.{{Citation needed|date=July 2011}} PICs often allow mapping input to outputs in a configurable way. On the [[PC architecture]] PIC are typically embedded into a [[Southbridge (computing)|southbridge chip]] whose internal architecture is defined by the chipset vendor's standards.
 
== Common features ==
PICs typically have a common set of registers: Interruptinterrupt Requestrequest Registerregister (IRR), Inin-Serviceservice Registerregister (ISR), Interruptand Maskinterrupt Registermask register (IMR). The IRR specifies which interrupts are pending acknowledgement, and is typically a symbolic register which can not be directly accessed. The ISR register specifies which interrupts have been acknowledged, but are still waiting for an [[End_of_interrupt|Endend Ofof Interruptinterrupt]] (EOI). The IMR specifies which interrupts are to be ignored and not acknowledged. A simple register schema such as this allows up to two distinct interrupt requests to be outstanding at one time, one waiting for acknowledgement, and one waiting for EOI.
 
There are a number of common priority schemas in PICs including hard priorities, specific priorities, and rotating priorities.
Line 10 ⟶ 19:
There are a number of common ways of acknowledging an interrupt has completed when an EOI is issued. These include specifying which interrupt completed, using an implied interrupt which has completed (usually the highest priority pending in the ISR), and treating interrupt acknowledgement as the EOI.
 
== Well-known PICs types==
One of the best known PICs, the [[Intel 8259|8259A]], was included in the [[x86 architecture|x86]] PC. In modern times, this is not included as a separate chip in an x86 PC. Rather, itsbut function is includedrather as part of the motherboard's [[Southbridge (computing)|southbridge]] chipset.<ref>{{Cite web| title=82371AB PCI-TO-ISA / IDE Xcelerator (PIIX4) | url=https://www.intel.com/Assets/PDF/datasheet/290562.pdf | archive-url=https://web.archive.org/web/20090203012354/http://www.intel.com:80/Assets/PDF/datasheet/290562.pdf | archive-date=2009-02-03}}</ref> In other cases, it has been completely replaced by the newer [[Advanced Programmable Interrupt Controller]]s which support more interrupt outputs and more flexible priority schemas.
 
==More Information==
More information on the Intel APIC can be found in the ''IA-32 Intel Architecture Software Developer's Manual, Volume 3A: System Programming Guide, Part 1, Chapter 8'', freely available on the [[Intel]] website.
 
==See also==
* [[Intel 8259]] – notable PIC from Intel
* [[OpenPIC and IBM MPIC]]
* [[Advanced Programmable Interrupt Controller]]
* [[Inter-processor interrupt]] (IPI)
* [[Intel APIC Architecture]]
* [[Inter-Processor Interrupt]]
* [[Interrupt]]
* [[Interrupt handler]]
* [[Interrupt request]]
* [[Interrupt latency]]
* [[Non-Maskablemaskable interrupt]] (NMI)
* [[PICIRQL microcontroller(Windows)]]
 
==Further reading==
 
* {{Cite web |date=2023-06-22 |title=Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A |url=https://www.intel.com/content/www/us/en/content-details/782158/intel-64-and-ia-32-architectures-software-developer-s-manual-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4.html?wapkw=intel%2064%20and%20ia-32%20architectures%20software%20developer%27s%20manual&docid=782161 |access-date=2025-03-28 |website=[[Intel]]}}
 
==References==
{{Reflist}}
 
==External links==
* [https://web.archive.org/web/20180408090800/http://www.fullchipdesign.com/tyh/interrupt_controller_vic.htm Interrupt controller and associated registers.]
* [http://www.evilbitz.com/2006/12/08/interrupts-and-interrupt-controllers/ Interrupts and Interrupt-Controllers]
* [http://www.intel.com/Assets/PDF/manual/253668.pdf IA-32 Intel Architecture Software Developer's Manual, Volume 3A]
 
[[Category:Motherboard]]
[[Category:Digital electronics]]
[[Category:Interrupts]]
 
[[cs:Řadič přerušení]]
[[de:Programmable Interrupt Controller]]
[[it:Controllore di Interruzioni Programmabile]]
[[ms:Pengawal Sampukan boleh aturcara]]
[[nl:Programmable Interrupt Controller]]
[[ja:Programmable Interrupt Controller]]
[[ru:Контроллер прерываний]]