Interrupt architecture for a non-uniform memory access (NUMA) data processing system
First Claim
1. A data processing system, comprising:
- a plurality of interrupt domains that each include at least one of a plurality of interconnected nodes, wherein each interrupt domain includes at least one processor capable of receiving external interrupts and at least one interrupt source capable of generating external interrupts, each of said plurality of interrupt domains having respective interrupt hardware that receives an external interrupt generated within that interrupt domain and first presents said external interrupt to a processor within that interrupt domain, wherein said processor to which said external interrupt is first presented invokes servicing of said external interrupt and a processor within a different interrupt domain services said external interrupt;
wherein said interrupt hardware within each interrupt domain includes a globally-accessible memory mapped register utilized to communicate interrupts between interrupt domains, and wherein said interrupts include inter-processor interrupts.
1 Assignment
0 Petitions
Accused Products
Abstract
A non-uniform memory access (NUMA) computer system includes at least two nodes coupled by a node interconnect, where at least one of the nodes includes a processor for servicing interrupts. The nodes are partitioned into external interrupt domains so that an external interrupt is always presented to a processor within the external interrupt domain in which the interrupt occurs. Although each external interrupt domain typically includes only a single node, interrupt channeling or interrupt funneling may be implemented to route external interrupts across node boundaries for presentation to a processor. Once presented to a processor, interrupt handling software may then execute on any processor to service the external interrupt. Servicing external interrupts is expedited by reducing the size of the interrupt handler polling chain as compared to prior art methods. In addition to external interrupts, the interrupt architecture of the present invention supports inter-processor interrupts (IPIs) by which any processor may interrupt itself or one or more other processors in the NUMA computer system. IPIs are triggered by writing to memory mapped registers in global system memory, which facilitates the transmission of IPIs across node boundaries and permits multicast IPIs to be triggered simply by transmitting one write transaction to each node containing a processor to be interrupted. The interrupt hardware within each node is also distributed for scalability, with the hardware components communicating via interrupt transactions conveyed across shared communication paths.
-
Citations
26 Claims
-
1. A data processing system, comprising:
-
a plurality of interrupt domains that each include at least one of a plurality of interconnected nodes, wherein each interrupt domain includes at least one processor capable of receiving external interrupts and at least one interrupt source capable of generating external interrupts, each of said plurality of interrupt domains having respective interrupt hardware that receives an external interrupt generated within that interrupt domain and first presents said external interrupt to a processor within that interrupt domain, wherein said processor to which said external interrupt is first presented invokes servicing of said external interrupt and a processor within a different interrupt domain services said external interrupt; wherein said interrupt hardware within each interrupt domain includes a globally-accessible memory mapped register utilized to communicate interrupts between interrupt domains, and wherein said interrupts include inter-processor interrupts. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for handling an external interrupt in a data processing system, said method comprising:
-
establishing a plurality of interrupt domains that each include at least one of a plurality of interconnected nodes, wherein each interrupt domain includes at least one processor capable of receiving an external interrupt and at least one interrupt source capable of generating an external interrupt, each of said plurality of interrupt domains having respective interrupt hardware; within a particular interrupt domain among said plurality of interrupt domains, receiving, at said interrupt hardware, an external interrupt generated by an interrupt source within said particular interrupt domain and first presenting said external interrupt to a processor within said particular interrupt domain by said interrupt hardware; invoking interrupt servicing utilizing said processor of said particular interrupt domain to which said external interrupt is first presented; communicating said external interrupt and inter-processor interrupts between interrupt domains utilizing a globally-accessible memory mapped register within said interrupt hardware; and servicing said external interrupt utilizing a processor within a different one of said plurality of interrupt domains than said particular interrupt domain. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A method of processing an interrupt within a data processing system including a plurality of interconnected nodes, said method comprising:
-
establishing a plurality of interrupt domains that each include at least one of the plurality of interconnected nodes, wherein each interrupt domain includes at least one processor capable of receiving an interrupt and at least one device capable of generating an interrupt, and wherein devices in multiple of said plurality of interconnected nodes can generate interrupts of the same level; in response to presentation of an interrupt to a processor for servicing, said interrupt having a level, obtaining a list of devices capable of generating an interrupt of said level; polling only devices within said list located within a same interrupt domain as said processor in order to identify which device within said list generated said interrupt; and prior to presentation of said interrupt, creating and storing said list in a global memory space accessible to all of said plurality of interconnected nodes. - View Dependent Claims (19, 20)
-
-
21. A data processing system, comprising:
-
a plurality of interrupt domains that each include at least one of a plurality of interconnected nodes, wherein each of said plurality of interrupt domains includes at least one processor capable of receiving an interrupt and at least one device that generates interrupts, wherein devices in multiple of said plurality of interconnected nodes can generate interrupts of the same level; interrupt handler software stored within said data processing system and executable by said processor, wherein said interrupt handler software, in response to presentation of an interrupt having a level to said processor, obtains a list of devices capable of generating an interrupt of said level and polls only devices within said list located within a same interrupt domain as said processor in order to identify which device within said list generated said interrupt; and a global memory space accessible to all of said plurality of interconnected nodes, wherein said list is stored in said global memory space prior to presentation of said interrupt. - View Dependent Claims (22, 23)
-
-
24. A program product for use by a data processing system including a plurality of interrupt domains that each include at least one of a plurality of interconnected nodes, wherein each of said plurality of interrupt domains includes at least one processor capable of receiving an interrupt and at least one device that generates interrupts, and wherein devices in multiple of said plurality of interconnected nodes can generate interrupts of the same level, said program product comprising:
-
a computer usable medium; interrupt handler software encoded within said computer usable, medium and executable by the data processing system, wherein said interrupt handler software, in response to presentation of an interrupt having a level to said processor, obtains a list of devices capable of generating an interrupt of said level and polls only devices within said list located within a same interrupt domain as said processor in order to identify which device within said list generated said interrupt; and a configuration routine, encoded with said computer usable medium, that creates said list in global memory space accessible to all of said plurality of nodes prior to presentation of said interrupt. - View Dependent Claims (25, 26)
-
Specification