A hardware interrupt processing circuit converts selected hardware interrupts to an interrupt vector having bits corresponding to the selected hardware interrupts. The hardware interrupt processing circuit includes circuit assemblies that correspond to the selected hardware interrupts. Each circuit assembly includes a detector circuit and a persistent capture circuit. The detector circuit is to output a pulse responsive to the corresponding selected hardware interrupt being asserted. The persistent capture circuit is triggered by the persistent capture circuit to output a corresponding bit of the interrupt vector until a ready signal has been asserted.
|
1. A hardware interrupt processing circuit to convert a plurality of selected hardware interrupts to an interrupt vector having a plurality of bits corresponding to the plurality of selected hardware interrupts, comprising:
a plurality of circuit assemblies corresponding to the plurality of selected hardware interrupts, each circuit assembly comprising:
a detector circuit to output a pulse responsive to a corresponding selected hardware interrupt of the plurality of selected hardware interrupts being asserted; and,
a persistent capture circuit triggered by the detector circuit to output a corresponding bit of the plurality of bits of the interrupt vector until a ready signal has been asserted.
15. A method for converting a plurality of selected inputs to an interrupt vector having a plurality of bits corresponding to the plurality of selected hardware interrupts, comprising:
by each circuit assembly of a plurality of circuit assemblies of a hardware interrupt processing circuit, the plurality of circuit assemblies corresponding to the plurality of selected hardware interrupts,
receiving by a multiplexer of the circuit assembly a plurality of hardware interrupts encompassing the plurality of selected interrupts;
outputting by the multiplexer a corresponding selected hardware interrupt of the plurality of selected hardware interrupts;
outputting by a detector circuit of the circuit assembly a pulse responsive to the corresponding selected hardware interrupt being asserted, the detector circuit triggered by the multiplexer; and,
outputting by a persistent capture circuit of the circuit assembly a corresponding bit of the plurality of bits of the interrupt vector until a ready signal has been asserted, the persistent capture circuit triggered by the detector circuit.
11. An electronic device comprising:
a plurality of hardware resources to output a plurality of hardware interrupts;
a hardware controller to receive an interrupt vector having a plurality of bits corresponding to a plurality of selected hardware interrupts encompassed by the plurality of hardware interrupts; and,
a hardware interrupt processing circuit to convert the plurality of selected hardware interrupts to the interrupt vector, the hardware interrupt processing circuit comprising a plurality of circuit assemblies corresponding to the plurality of selected hardware interrupts, each circuit assembly comprising:
a multiplexer to receive as input the plurality of hardware interrupts and to output a corresponding selected hardware interrupt of the plurality of selected hardware interrupts;
a detector circuit triggered by the multiplexer to output a pulse responsive to the corresponding selected hardware interrupt being asserted; and,
a persistent capture circuit triggered by the first flip circuit to output a corresponding bit of the plurality of bits of the interrupt vector until a ready signal has been asserted.
2. The hardware interrupt processing circuit of
and wherein the plurality of hardware interrupts received by the multiplexer of each circuit assembly is identical.
3. The hardware interrupt processing circuit of
and wherein the multiplexer of each circuit assembly is programmable to select the corresponding selected hardware interrupt from the plurality of hardware interrupts input to the multiplexer.
4. The hardware interrupt processing circuit of
5. The hardware interrupt processing circuit of
an inverter connected to an output of the flip flop; and,
an and gate having a first input connected to an output of the inverter, a second input connected to the output of the multiplexer, and an output to provide an output of the detector circuit,
such that the flip flop, the inverter, and the and gate interact to output the pulse responsive to the corresponding selected hardware interrupt being asserted.
6. The hardware interrupt processing circuit of
7. The hardware interrupt processing circuit of
an and gate having a first input connected to an inversion of a ready line on which the ready signal is asserted and a second input connected to the output of the flip flop; and,
an or gate having a first input connected to an output of the and gate, a second input connected to an output of the detector circuit, and an output connected to an input of the flip flop,
such that the flip flop, the and gate, and the or gate interact to output the corresponding bit until the ready line has been asserted.
8. The hardware interrupt processing circuit of
9. The hardware interrupt processing circuit of
10. The hardware interrupt processing circuit of
12. The electronic device of
a flip flop having an input connected to an output of the multiplexer;
an inverter connected to an output of the flip flop; and,
an and gate having a first input connected to an output of the inverter, a second input connected to the output of the multiplexer, and an output to provide an output of the detector circuit,
such that the flip flop, the inverter, and the and gate interact to output the pulse responsive to the corresponding selected hardware interrupt being asserted.
13. The electronic device of
a flip flop having an output to provide the corresponding bit;
an and gate having a first input connected to an inversion of a ready line on which the ready signal is asserted and a second input connected to the output of the flip flop; and,
an or gate having a first input connected to an output of the and gate, a second input connected to an output of the detector circuit, and an output connected to an input of the flip flop,
such that the flip flop, the and gate, and the or gate interact to output the corresponding bit until the ready line has been asserted.
14. The electronic device of
|
Hardware resources of electronic devices commonly assert interrupts to signal that events have occurred. These interrupts are referred to as hardware interrupts. More specifically, a hardware interrupt is an asynchronous signal indicating that an event has occurred in relation to a hardware resource and to which attention should be given. Hardware interrupts are a way to avoid wasting a processor or other hardware component's valuable time in polling loops waiting for the events to occur.
As noted in the background section, a hardware interrupt is commonly asserted by a hardware resource of an electronic device to asynchronously signal that an event has occurred in relation to the hardware resource and to which attention should be given. Traditionally, hardware interrupts have been routed to a processor, such as a central processing unit (CPU) or a service processor. Assertion of a hardware interrupt causes the processor to immediately save its current executing state and to instead begin performing an interrupt handler to process the interrupt. The processor knows or can determine the identity of the hardware resource that asserted the hardware interrupt.
This type of interrupt processing works well where a given hardware resource is exclusively used by a particular software process. The processor knows that hardware interrupts asserted by the hardware resource pertain to the software process, because no other process is using the hardware resource. However, in scenarios where a given hardware resource is shared over time by a number of software processes, this type of interrupt processing breaks down. In particular, the processor may not be able to determine with ease, if at all, to which software process a particular hardware interrupt relates.
Disclosed herein are techniques to overcome this problem. Examples of an interrupt processing circuit are disclosed that can interface with a hardware controller that is responsible for sharing hardware resources among a number of clients executing software processes. An example of such a hardware controller is described in the related patent application entitled “hardware controller to choose selected hardware entity and to execute instructions in relation to selected hardware entity,” filed on Mar. 3, 2011, and assigned patent application Ser. No. 13/040,000.
The interrupt processing circuit converts selected hardware interrupts to an interrupt vector that has a number of bits corresponding to the selected interrupts. The hardware controller in turn may then use the interrupt vector to determine which hardware resource generated a particular hardware interrupt. The hardware controller already knows which client is currently using the hardware resource, because the controller is responsible for sharing the hardware resources among the clients. As such, the hardware controller can indicate to the client that the hardware interrupt has been asserted, such that the software process executing on the client is able to handle the interrupt appropriately.
The interrupt processing circuit includes a number of circuit assemblies corresponding to the selected hardware interrupts. Each circuit assembly can include a multiplexer, a first flip flop circuit, and a second flip flop circuit. The multiplexer receives as input a number of hardware interrupts encompassing the selected hardware interrupts, and outputs a corresponding selected hardware interrupt. The first flip flop circuit is triggered by the multiplexer to output a pulse responsive to the corresponding selected hardware interrupt being asserted. The second flip flop circuit is triggered by the first flip circuit to output a corresponding bit of the interrupt vector even after the corresponding selected hardware interrupt is subsequently cleared, until a ready signal has been asserted.
The interrupt processing circuit can thus present to the hardware controller an interrupt vector that corresponds to the selected hardware interrupts of interest to the hardware controller. The interrupt processing circuit permits the hardware controller to not have to immediately save its current executing state and instead perform an interrupt handler to process an asserted hardware interrupt. This is because the interrupt processing circuit can output the bits of the interrupt vector corresponding to selected hardware interrupts being asserted until the hardware controller is ready to receive them.
The hardware interrupt processing circuit 100 includes a number of circuit assemblies 114A, 114B, . . . , 114M, which are collectively referred to as the circuit assemblies 114. The number of circuit assemblies 114 is equal to the number of vector bit lines 112. The interrupt processing circuit 100 also can include an inverter 118 having an input connected to the ready line 110 and an output connected to each circuit assembly 114, as well as an or gate having inputs connected to the circuit assemblies 114 and an output providing the valid line 108.
The hardware resources 102 assert interrupts on their corresponding hardware interrupt lines 106. Each circuit assembly 114 can be connected to all the interrupt lines 106. The number of circuit assemblies 114 is equal to the maximum number of interrupt lines 106 that the hardware interrupt processing circuit 100 can monitor at any one time. These hardware interrupt lines 106 are referred to as the selected hardware interrupt lines 106, and the hardware interrupts asserted on the selected interrupt lines 106 are referred to as the selected hardware interrupts. Each circuit assembly 114 thus corresponds to a different selected interrupt. The number of interrupt lines 106, and thus the number of hardware resources 102, is typically greater than the number of circuit assemblies 114, although it can be less than or equal to the number of circuit assemblies 114 as well.
The hardware interrupt processing circuit 100 converts the selected hardware interrupts to an interrupt vector having a number of bits corresponding to the selected interrupts. Each circuit assembly 114 is responsible for a different bit of the interrupt vector. As such, the circuit assemblies 114 correspond to the vector bit lines 112, and output the bits of the interrupt vector onto the bit lines 112. In general, when a selected interrupt to which a circuit assembly 114 corresponds has been asserted, the circuit assembly 114 asserts its corresponding vector bit line 112 to signal a logic one, whereas when the selected interrupt has not been asserted, the circuit assembly 114 does not asserts it corresponding vector bit line 112 to signal a logic zero.
The valid line 108 is asserted when one or more selected interrupts have been generated, such that one of one or more vector bit lines 112 have been asserted, to signal to the hardware controller 104 to examine the bit lines 112. The valid line 108 is provided by the or gate 116 performing a logical or operation on the vector bit lines 112, which are the outputs of the circuit assemblies 114. As such, when any of the vector bit lines 112 has been asserted, a valid signal on the valid line 108 is also asserted, in accordance with a logical or operation.
The hardware controller 104 generally signals that it is ready to receive signaling on the vector bit lines 112 by asserting a ready signal on the ready line 110. More specifically, the ready line 110 is asserted high by the hardware controller 104 to inform the hardware interrupt processing circuit 100 that assertions of the vector bit lines 112 are being detected and read by the controller 104. As such, the hardware controller 104 can clear any corresponding hardware interrupt line 106 so that a hardware interrupt is no longer asserted on this interrupt line 106.
By comparison, if the ready line 110 is not asserted high, then the circuit assemblies 114 will continue to assert the vector bit lines 112 upon assertion of the selected hardware interrupts until the ready line 110 is asserted. That is, the hardware interrupt processing circuit 100 is not permitted to remove or change a logic one value on any vector bit line 112 until the ready line 110 has been asserted. The inverter 118 is used to invert the ready signal, so that when the ready line 110 is asserted high, the inverter 118 outputs low, and vice-versa.
In
The flip flop circuit 204 is triggered by the multiplexer 202 to output a pulse responsive to the corresponding selected hardware interrupt being asserted, which is the hardware interrupt that is asserted on the selected interrupt line 106 to which the circuit assembly 114 corresponds. The flip flop circuit 204 is more generally referred to as a detector circuit, insofar as the circuit 204 detects the corresponding selected hardware interrupt being asserted. The flip flop circuit 206 is triggered by the flip flop circuit 204 to output a corresponding bit of the interrupt vector on its vector bit line 112 until the ready line 110 of
The circuit assembly 114 of
In
The clock 302 has a signal divided over ten clock cycles denoted as times t1, t2, t3, t4, t5, t6, t7, t8, t9, and t10. It is assumed in
The vector bit line 112 remains high until the ready line 110 is asserted. Thus, because the ready line 110 is not asserted until time t4, the vector bit line 112 stays asserted until time t5, one clock cycle after the ready line 110 has been asserted. It is assumed that at time t6 the hardware interrupt asserted on the selected hardware interrupt line 106 has been cleared, and that at time t7 the selected interrupt line 106 again has a hardware interrupt asserted thereon. Therefore, the flip flop circuit 204 again correspondingly outputs a pulse that is one clock cycle in length, ending at time t8. The vector bit line 112 itself is also asserted high at time t8.
However, when the vector bit line 112 is asserted high at time t8, the ready line 110 has already been asserted. Therefore, the vector bit line 112 is no longer asserted at time t9.
The input of the inverter 404 is connected to the output of the flip flop 402, and the output of the inverter 404 is connected to one of the two inputs of the and gate 406. The other input of the and gate 406 is connected to the hardware selected interrupt line 106 (i.e., the input of the flip flop 402). The output of the and gate 406 is the output 408 of the flip flop circuit 204, as depicted in the timing diagram 300 of
In operation, assume that the flip flop 402 is low (i.e., storing a logic zero), and that a hardware interrupt has not been on the selected hardware interrupt line 106. The output of the inverter 404 is thus high, and the output of the and gate 406 is low, because the selected hardware interrupt line 106 is low. When a hardware interrupt is asserted on the selected hardware interrupt line 106, the output 408 transitions to high. This is because during this clock cycle the flip flop 402 has not yet transitioned from low to high, which means that the output of the inverter 404 remains high, and both the inputs of the and gate 406 are high.
However, at the clock cycle after this clock cycle, the flip flop 402 will transition from low to high. Therefore, the output of the inverter 404 is low, and regardless of whether the selected hardware interrupt line 106 remains asserted with the selected hardware interrupt, the output of the and gate 406 is low. In this way, the flip flop circuit 204 outputs a pulse responsive to the selected hardware interrupt line 106 being asserted with the selected hardware interrupt (i.e., responsive to triggering by the multiplexer 202). It is said that the flip flop 402, the inverter 404, and the and gate interact with one another to output a pulse responsive to the corresponding selected hardware interrupt being asserted.
The input of the flip flop 502 is connected to the output of the or gate 504. One input of the or gate 504 is connected to the output 408 of the flip flop circuit 204 of
In operation, assume that the flip flop 502 is low (i.e., storing a logic zero), and that the output 408 of the flip flop circuit 204 of
When a hardware interrupt is asserted on the selected hardware interrupt line 106 corresponding to the circuit assembly 114 of which the flip flop circuit 206 is a part, the output 408 of the flip flop circuit 204 of
Once the ready line 110 of
Assume next that the output 408 of the flip flop circuit 204 of
Specifically, the output 408 of the flip flop circuit 204 will have transitioned back to low, since the flip flop circuit 204 provides just a pulse, and the output of the and gate 506 will remain low, because the inverted ready line 210 is low. As such, when the inverted ready line 210 is kept low, the vector bit line 112 stays high for just one clock cycle. It is thus said that the flip flop 502, the or gate 504, and the and gate 506 interact with one another to output the corresponding bit of the interrupt vector, on the vector bit line 112, until the ready line 110 of
The flip flop circuit 204 outputs a pulse responsive to the selected hardware interrupt being asserted, and triggers the flip flop circuit 206 (606). The flip flop circuit 206 in turn outputs a corresponding interrupt vector bit (i.e., logic one) on the vector bit line 112 in question until the ready line 110 has been asserted (608). As described above, if the ready line 110 is not asserted at the time the flip flop circuit 206 is asserted, then the vector bit line 112 remains high for one clock cycle after the ready line 110 is asserted. By comparison, if the ready line 110 is being asserted at the time the flip flop circuit 206 is asserted, then the vector bit line 112 remains high for one clock cycle.
In conclusion,
The hardware controller 104 permits the hardware clients 702 to share the hardware resources 102. For instance, such sharing can be accomplished as described in the related patent application referenced earlier. When the hardware resources 102 assert hardware interrupts, the hardware interrupt processing circuit 100 converts the hardware interrupts to an interrupt vector having a number of bits, which is read by the hardware controller 104. The hardware controller 104 in turn can signal the appropriate hardware client 702, which can then act on the hardware interrupt.
For example, the electronic device 700 may be a color printing device that forms images on media like paper in full color. The printing device may have a number of different colorants, such as cyan, magenta, yellow, and black. Color processing is performed to convert full color image data to each such color, and the colorant of each color is output onto the media separately by one or more print engines. For a given portion of the image data, such as a given line thereof, the different colorants may be output onto the media at different times.
As a part of the color printing process, relatively large amounts of data have to be copied. To facilitate this process, there are hardware resources dedicated to performing copying. Such hardware resources may be referred to as copy blocks. There may be many copy operations that have to be performed, where the copy operations can be represented as the hardware clients 702. However, there may be an unequal amount of data that has to be copied in one copy operation as compared to another copy operation. As such, one copy block may be working for an excessively long time, whereas the other copy blocks may not be working at all.
The techniques disclosed herein therefore permit the four copy blocks—or other number of copy blocks—to be shared among the hardware clients 702. These copy blocks correspond to the hardware resources 102. When a copy block is finished, it can signal this information to the hardware controller 104 by asserting its interrupt line 106. As such, the hardware controller 104 may be able to provide the copy block with additional processing to be performed, for the same or different hardware client 702. Therefore, the direct connection between the hardware clients 702 and the hardware resources 102 (i.e., the copy blocks) can be removed by the techniques disclosed herein.
Larson, Bradley R., Prenn, Mary T.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
4027290, | Jun 12 1973 | Ing. C. Olivetti & C., S.p.A. | Peripherals interrupt control unit |
4679169, | Mar 09 1984 | International Business Machines Corporation | Printer hammer resetting control system |
5070447, | Jan 19 1989 | Sanyo Electric Co., Ltd. | Interrupt circuit and interrupt processing method for microcomputer |
5410708, | Jul 25 1990 | Kabushiki Kaisha Toshiba | Multi-register interrupt controller with multiple interrupt detection capability |
5551044, | Dec 01 1994 | Intel Corporation | Method and apparatus for interrupt/SMI# ordering |
5564117, | Jul 08 1991 | SAMSUNG ELECTRONICS CO , LTD | Computer system including a page printer controller including a single chip supercalar microprocessor with graphical functional units |
5634135, | Dec 13 1991 | Texas Instruments Incorporated | Microprocessor with priority determination and priority based instruction selection |
5721921, | May 25 1995 | Hewlett Packard Enterprise Development LP | Barrier and eureka synchronization architecture for multiprocessors |
5812858, | Sep 16 1994 | Cirrus Logic, Inc. | Method and apparatus for providing register and interrupt compatibility between non-identical integrated circuits |
5901321, | Jun 30 1994 | Transpacific Bluetooth, LLC | Apparatus and method for interrupt processing in a code division multiple access switching apparatus |
6081867, | May 20 1998 | Sony Corporation; Sony Electronics, Inc. | Software configurable technique for prioritizing interrupts in a microprocessor-based system |
6256659, | Dec 09 1997 | Verizon Patent and Licensing Inc | System and method for performing hybrid preemptive and cooperative multi-tasking in a computer system |
6449675, | Jun 29 1999 | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | Multifield register having a selection field for selecting a source of an information field |
6539448, | May 26 2000 | Texas Instruments Incorporated | Priority first come first serve interrupt controller |
6845419, | Jan 24 2000 | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | Flexible interrupt controller that includes an interrupt force register |
7206924, | Mar 26 1999 | Microchip Technology Inc. | Microcontroller instruction set |
7991909, | Mar 27 2007 | XILINX, Inc. | Method and apparatus for communication between a processor and processing elements in an integrated circuit |
8271980, | Nov 08 2004 | III Holdings 12, LLC | System and method of providing system jobs within a compute environment |
20040153650, | |||
20050193157, | |||
20070124363, | |||
20070300223, | |||
20080091867, | |||
20090037926, | |||
20090049443, | |||
20090210660, | |||
20090248935, | |||
20110041127, | |||
20120226893, | |||
20120227052, | |||
EP469543, | |||
JP1214939, | |||
JP2009163658, | |||
JP2009288978, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Feb 22 2011 | PRENN, MARY T | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025901 | /0468 | |
Feb 22 2011 | LARSON, BRADLEY R | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025901 | /0468 | |
Mar 03 2011 | Hewlett-Packard Development Company, L.P. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Jul 08 2017 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Jan 17 2022 | REM: Maintenance Fee Reminder Mailed. |
Jul 04 2022 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
May 27 2017 | 4 years fee payment window open |
Nov 27 2017 | 6 months grace period start (w surcharge) |
May 27 2018 | patent expiry (for year 4) |
May 27 2020 | 2 years to revive unintentionally abandoned end. (for year 4) |
May 27 2021 | 8 years fee payment window open |
Nov 27 2021 | 6 months grace period start (w surcharge) |
May 27 2022 | patent expiry (for year 8) |
May 27 2024 | 2 years to revive unintentionally abandoned end. (for year 8) |
May 27 2025 | 12 years fee payment window open |
Nov 27 2025 | 6 months grace period start (w surcharge) |
May 27 2026 | patent expiry (for year 12) |
May 27 2028 | 2 years to revive unintentionally abandoned end. (for year 12) |