Event handler for context-switchable and non-context-switchable processing tasks
AssigneeATI Technologies, Inc.
InventorsMark Grossman, Jeffrey G. Cheng, Gordon Caruk, Joel Wilke, Elaine Poon
Life of this patent
Estimating the term…
Loading patent…
AssigneeATI Technologies, Inc.
InventorsMark Grossman, Jeffrey G. Cheng, Gordon Caruk, Joel Wilke, Elaine Poon
Estimating the term…
Embodiments of a system and method for handling interrupts are described herein. In an embodiment interrupts from various client components in a system (also referred to as clients) are processed by an interrupt handler component uniformly. The various clients signal interrupts in different manners. For example, some clients signal interrupts in a level-based manner, and some clients signal interrupts in a pulse-based manner. In an embodiment, all interrupts received by the interrupt handler are formed into an event message according to a uniform format regardless of the manner in which the interrupt is signaled. The event message includes all information necessary for a host processor interrupt service routine (ISR) to service the interrupts without reading hardware registers. Event messages are stored in an event buffer for access and handling by the host. The event buffer is managed by the interrupt handler.
A system comprising:
A method in a data processing system, the method comprising:
A method for processing interrupts, comprising:
A method for handling interrupts, comprising:
A computer-readable medium having instructions stored thereon, which when executed in a system cause an interrupt handling method to be performed, the method comprising:
A system comprising:
An interrupt handler apparatus, comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
For access to input/output bus: using interrupt
Computing and data processing
Term ended 5 May 2026 (estimated)
The invention is in the field of scheduling operations in complex data processing systems.
In typical complex data processing systems, many different processing tasks or operations are being performed by multiple sub-units of the system at any one time. Usually, all of the operations of the system are under the control of a host processor, or central processing unit (CPU) that runs a particular operating system (OS). The CPU communicates with various input/output (IO) units of the system through one or more buses, such as a peripheral component interface (PCI) bus or a PCI Express (PCIE) bus for example.
The host processor manages operations in the system, including execution of various tasks by various IO units. The IO units must necessarily communicate a lot of information with the host processor in a manner dictated by the OS. For example, when a task is executing on an IO unit and becomes stalled or interrupted, perhaps because of lack of particular data for example, the IO unit generates an interrupt to the host processor in such a way that the host processor can identify the IO unit and the cause of the interrupt, “fix” the cause of the interrupt, and signal the IO unit that the problem is fixed and that it can proceed with the task. Traditionally, interrupts are signaled by the IO unit writing a value to an interrupt status register. According to one scheme, an interrupt status register may contain multiple bits, any one of which signals an interrupt when it is a particular value, such as a logic “1” (also referred to as a logic high). The values in the interrupt status register are OR'd and if any of the values is high, an interrupt signal is sent to the host processor, which must perform a register read to determine which bit or bits are high. The host processor also must perform a register write to clear interrupts after fixing their causes. This interrupt scheme is sometimes referred to as level-based, because the level of the interrupt bit and line remains at the level set by the IO unit until the interrupt is cleared by the host processor.
FIG. 1 is a block diagram of a system according to an embodiment.
FIG. 2 is a block diagram of an interrupt handler according to an embodiment.
FIG. 3 is a block diagram of an adapter for level-based clients according to an embodiment.
In the drawings, the same reference numbers identify identical or substantially similar elements or acts. To easily identify the discussion of any particular element or act, the most significant digit or digits in a reference number refer to the Figure number in which that element is first introduced (e.g., element 102 is first introduced and discussed with respect to FIG. 1).
Embodiments of a system and method for handling interrupts are described herein. In an embodiment events, or interrupts from various client components in a system (also referred to as clients) are processed by one event handler, or interrupt handler component uniformly. The various clients signal interrupts in different manners. For example, some clients signal interrupts in a level-based manner, and some clients signal interrupts in a pulse-based manner. In an embodiment, the non-context switchable, level-based components perform permanent tasks, and the pulse based, context switchable components perform serialized volatile tasks. In an embodiment, a permanent task involves a single thread of execution, while a volatile task involves multiple threads of execution by allowing its state to be saved and restored at selected points in time.
In an embodiment, each interrupt received by the interrupt handler is formed into an event message according to a uniform format regardless of the interrupt type or source. The event message includes all information necessary for a host processor interrupt service routine (ISR) to service the interrupts without reading hardware registers. Embodiments include an IO unit interrupt handler that collects all interrupts generated by clients of the IO unit and forms them into event messages. The interrupt handler stores event messages from the input unit into a designated event buffer in memory that is accessible to the host processor, also referred to simply as the host. The interrupt handler also sends an interrupt signal to the host, which responds by reading the event buffer and handling all of the event messages appropriately. The host acknowledges a pulse-based interrupt by updating a read pointer of the event buffer; and acknowledges a level-based interrupt by a register write to clear the interrupt source. In an embodiment, the read pointer is updated by interrupt handler software running on the host after it has read the contents of the event buffer that lie between the current state of the read pointer and the current state of the write pointer. Embodiments further include an adapter unit that receives level-based interrupts from level-based interrupt clients and generates an appropriate event message for storage by the IO unit to the event buffer.