IP Library Granted Patent US 9,690,590
Granted Patent B2
US 9,690,590 · App. 14/514,708 · Granted Jun 27, 2017

Flexible instruction execution in a processor pipeline

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 9,690,590
App. No.
14/514,708
Granted
Jun 27, 2017
Kind
B2
Abstract

Executing instructions in a processor includes: selecting or more instructions to be issued together in the same clock cycle of the processor from among a plurality of instructions, the selected one or more instructions occurring consecutively according to a program order; and executing instructions that have been issued, through multiple execution stages of a pipeline of the processor. The executing includes: determining a delay assigned to a first instruction, and sending a result of a first operation performed by the first instruction in a first execution stage to a second execution stage, where the number of execution stages between the first execution stage and the second execution stage is based on the determined delay.

Claims (32)

1. A method for executing instructions in a processor, the method comprising:

selecting or more instructions to be issued together in the same clock cycle of the processor from among a plurality of instructions, the selected one or more instructions occurring consecutively according to a program order; and

executing instructions that have been issued, through multiple execution stages of a pipeline of the processor, the executing including:

determining a delay assigned to a first instruction, and

sending a result of a first operation performed by the first instruction in a first execution stage to a second execution stage, where the number of execution stages between the first execution stage and the second execution stage is based on the determined delay.

2. The method of claim 1 , wherein the first stage includes a functional unit configured to perform the first operation, and the second execution stage does not include any functional unit configured to perform the first operation.

3. The method of claim 2 , wherein the second stage occurs later in the pipeline than the first stage.

4. The method of claim 2 , wherein sending the result of the first operation to the second stage includes sending an output of the functional unit to an input of a multiplexer in the second stage.

5. The method of claim 1 , wherein there are multiple paths through the execution stages.

6. The method of claim 5 , wherein the first instruction is executed along a first path, the result of the first operation depends on a result of a second operation performed by a second instruction, and the second instruction is executed along a second path different from the first path.

7. The method of claim 1 , further comprising analyzing, in at least one stage of the pipeline, operations to be performed by instructions, the analyzing including:

determining a latency associated with a first operation to be performed by a first instruction,

determining a second operation to be performed by a second instruction, where a result of the second operation depends on a result of the first operation, and

assigning a delay to the second instruction corresponding to the determined latency associated with the first operation.

8. The method of claim 1 , wherein any instruction selected to be issued in a clock cycle after a clock cycle in which a previous instruction issued occurs later in the program order than the previous instruction.

9. The method of claim 1 , wherein the number of execution stages between the first execution stage and the second execution stage is equal to the determined delay.

10. A processor comprising:

circuitry configured to select or more instructions to be issued together in the same clock cycle of the processor from among a plurality of instructions, the selected one or more instructions occurring consecutively according to a program order; and

circuitry configured to execute instructions that have been issued, through multiple execution stages of a pipeline of the processor, the executing including:

determining a delay assigned to a first instruction, and

sending a result of a first operation performed by the first instruction in a first execution stage to a second execution stage, where the number of execution stages between the first execution stage and the second execution stage is based on the determined delay.

11. The processor of claim 10 , wherein the first stage includes a functional unit configured to perform the first operation, and the second execution stage does not include any functional unit configured to perform the first operation.

12. The processor of claim 11 , wherein the second stage occurs later in the pipeline than the first stage.

13. The processor of claim 11 , wherein sending the result of the first operation to the second stage includes sending an output of the functional unit to an input of a multiplexer in the second stage.

14. The processor of claim 10 , wherein there are multiple paths through the execution stages.

15. The processor of claim 14 , wherein the first instruction is executed along a first path, the result of the first operation depends on a result of a second operation performed by a second instruction, and the second instruction is executed along a second path different from the first path.

16. The processor of claim 10 , further comprising circuitry in at least one stage of the pipeline, configured to analyze operations to be performed by instructions, the analyzing including:

determining a latency associated with a first operation to be performed by a first instruction,

determining a second operation to be performed by a second instruction, where a result of the second operation depends on a result of the first operation, and

assigning a delay to the second instruction corresponding to the determined latency associated with the first operation.

17. The processor of claim 10 , wherein any instruction selected to be issued in a clock cycle after a clock cycle in which a previous instruction issued occurs later in the program order than the previous instruction.

18. The processor of claim 10 , wherein the number of execution stages between the first execution stage and the second execution stage is equal to the determined delay.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Sep 26, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047155/0074 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
SECURITY AGREEMENT Recorded Aug 17, 2016
From: CAVIUM, INC.; CAVIUM NETWORKS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039715/0449 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2014
From: CARLSON, DAVID ALBERT
To: CAVIUM, INC.
Reel/Frame 034021/0397 →