IP Library Granted Patent US 7,831,979
Granted Patent B2
US 7,831,979 · App. 10/833,560 · Granted Nov 9, 2010

Processor with instruction-based interrupt handling

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,831,979
App. No.
10/833,560
Granted
Nov 9, 2010
Kind
B2
Abstract

A processor comprises memory circuitry and processing circuitry coupled to the memory circuitry. The processing circuitry is operative to retrieve from the memory circuitry an interrupt polling instruction which causes selection of an active enabled interrupt and generation of an interrupt vector for the selected active enabled interrupt. In conjunction with the selection and generation operations, an execution context of a program thread is stored in the memory circuitry, the stored execution context being utilizable to resume the program thread at an appropriate time subsequent to interruption of that thread.

Claims (64)

1. A processor comprising:

memory circuitry; and

processing circuitry coupled to the memory circuitry;

the processing circuitry being operative to retrieve from the memory circuitry an interrupt polling instruction;

the interrupt polling instruction causing:

polling of one or more interrupt sources to detect a presence of one or more active enabled interrupts; and

responsive to the detected presence of one or more active enabled interrupts:

selection of an active enabled interrupt from the one or more active enabled interrupts; and

generation of an interrupt vector for the selected active enabled interrupt;

wherein in conjunction with the selection and generation operations an execution context of a program thread is stored in the memory circuitry, the stored execution context being utilizable to resume the program thread subsequent to interruption of that thread; and

wherein the processor further comprises:

an instruction decoder;

an interrupt controller coupled to the instruction decoder; and

at least one multiplexer;

the instruction decoder being operative to decode the interrupt polling instruction;

the interrupt controller being operative to generate the interrupt vector;

the instruction decoder being operative to control the at least one multiplexer such that the interrupt vector is selected as a next instruction address to be fetched from an instruction memory of the memory circuitry, a corresponding returned instruction comprising an instruction of an interrupt handler for the selected active enabled interrupt.

2. The processor of claim 1 wherein the interrupt polling instruction comprises a call and poll interrupts instruction.

3. The processor of claim 1 wherein the memory circuitry comprises at least a portion of an instruction memory and at least a portion of a data memory.

4. The processor of claim 3 wherein the interrupt polling instruction is retrieved from the instruction memory.

5. The processor of claim 3 wherein the execution context is stored in a stack implemented in the data memory.

6. The processor of claim 1 wherein the selection operation selects a highest priority interrupt from among a plurality of active enabled interrupts.

7. The processor of claim 1 wherein the processing circuitry comprises a central processing unit.

8. The processor of claim 1 wherein the processor comprises a pipelined processor.

9. The processor of claim 8 wherein the processing circuitry comprises a plurality of pipeline stages, including at least a fetch stage, a decode stage and an execute stage.

10. The processor of claim 9 wherein the decode stage comprises an address generation stage, the address generation stage comprising an instruction decoder, an interrupt controller, and at least one multiplexer, the interrupt controller being operative to generate a selectable input to the multiplexer, the instruction decoder being operative to control a selection function of the multiplexer.

11. The processor of claim 1 wherein the interrupt polling instruction is one of a plurality of instructions processed in a normal instruction flow of the processor.

12. The processor of claim 1 wherein the generation of an interrupt vector for the selected active enabled interrupt, responsive to decoding of the interrupt polling instruction, results in transfer of program execution to an interrupt handler identified at least in part by the interrupt vector.

13. The processor of claim 12 wherein the transfer of program execution to the interrupt handler occurs without the need for any interrupt enabling instruction and without the need for any interrupt disabling instruction.

14. The processor of claim 1 wherein the processor is implemented in the form of an integrated circuit.

15. A method for handling interrupts in a processor comprising memory circuitry and processing circuitry coupled to the memory circuitry, the method comprising the steps of:

retrieving from the memory circuitry an interrupt polling instruction; and

decoding the interrupt polling instruction;

the interrupt polling instruction causing:

polling of one or more interrupt sources to detect a presence of one or more active enabled interrupts; and

responsive to the detected presence of one or more active enabled interrupts:

selection of an active enabled interrupt from the one or more active enabled interrupts;

generation of an interrupt vector for the selected active enabled interrupt; and

control of at least one multiplexer such that the interrupt vector is selected as a next instruction address to be fetched from an instruction memory of the memory circuitry, a corresponding returned instruction comprising an instruction of an interrupt handler for the selected active enabled interrupt;

wherein in conjunction with the selection and generation operations an execution context of a program thread is stored in the memory circuitry, the stored execution context being utilizable to resume the program thread subsequent to interruption of that thread.

16. The method of claim 15 wherein a determination is made subsequent to the decoding step as to whether there are any active enabled interrupts.

17. The method of claim 15 wherein a determination is made concurrently with the decoding step as to whether there are any active enabled interrupts.

18. An integrated circuit comprising:

at least one processor comprising memory circuitry and processing circuitry coupled to the memory circuitry;

the processing circuitry being operative to retrieve from the memory circuitry an interrupt polling instruction;

the interrupt polling instruction causing:

polling of one or more interrupt sources to detect a presence of one or more active enabled interrupts; and

responsive to the detected presence of one or more active enabled interrupts;

selection of an active enabled interrupt from the one or more active enabled interrupts; and

generation of an interrupt vector for the selected active enabled interrupt;

wherein in conjunction with the selection and generation operations an execution context of a program thread is stored in the memory circuitry, the stored execution context being utilizable to resume the program thread subsequent to interruption of that thread; and

wherein the processor further comprises:

an instruction decoder;

an interrupt controller coupled to the instruction decoder; and

at least one multiplexer;

the instruction decoder being operative to decode the interrupt polling instruction;

the interrupt controller being operative to generate the interrupt vector;

the instruction decoder being operative to control the at least one multiplexer such that the interrupt vector is selected as a next instruction address to be fetched from an instruction memory of the memory circuitry, a corresponding returned instruction comprising an instruction of an interrupt handler for the selected active enabled interrupt.

19. The processor of claim 1 , wherein the stored execution context comprises a current value of a fetch program counter of the program thread, and wherein the interrupt polling instruction causes the storing of the execution context.

20. The processor of claim 1 , wherein the interrupt processor instruction causes generation of a function call to an interrupt handler.

21. The processor of claim 11 , wherein the normal instruction flow comprises:

fetching the interrupt polling instruction by a fetch pipestage of the processor from instruction memory; and

decoding of the fetched interrupt polling instruction by an instruction decoder.

22. The processor of claim 13 , wherein control of when the transfer of program execution to the interrupt handler occurs is associated with placement of the interrupt polling instruction with respect to other program code.

Assignments (7)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2015
From: LSI CORPORATION
To: INTEL CORPORATION
Reel/Frame 035090/0477 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 32856/0031 Recorded Nov 18, 2014
From: DEUTSCHE BANK AG NEW YORK BRANCH
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 034286/0872 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2014
From: AGERE SYSTEMS LLC
To: LSI CORPORATION
Reel/Frame 034245/0655 →
CERTIFICATE OF CONVERSION Recorded Oct 30, 2014
From: AGERE SYSTEMS INC.
To: AGERE SYSTEMS LLC
Reel/Frame 034113/0626 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2004
From: WHALEN, SHAUN P.
To: AGERE SYSTEMS INC.
Reel/Frame 015280/0379 →