IP Library Granted Patent US 7,472,257
Granted Patent B2
US 7,472,257 · App. 10/496,537 · Granted Dec 30, 2008

Rerouting VLIW instructions to accommodate execution units deactivated upon detection by dispatch units of dedicated instruction alerting multiple successive removed NOPs

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,472,257
App. No.
10/496,537
Granted
Dec 30, 2008
Kind
B2
Abstract

Processor ( 100 ) has a plurality of registers ( 120 ) for storing instructions for execution by the plurality of execution units ( 160 ). The plurality of registers ( 120 ) are coupled to the plurality of execution units ( 160 ) via distribution means ( 140 ). Distribution means ( 140 ) have a plurality of dispatch units ( 144 ) coupled to the plurality of execution units ( 160 ) and a reroutable network, e.g. a data communication bus ( 142 ), coupling the plurality of execution units ( 120 ) to the plurality of dispatch units ( 144 ). The data communication bus ( 142 ) is controlled by control unit ( 148 ). Dispatch units ( 144 ) are arranged to detect dedicated instructions in the instruction flow, which signal the beginning of an inactive period of an execution unit ( 160 a, 160 b, 160 c, 160 d ) in the plurality of execution units ( 160 ). Subsequently, control unit ( 148 ) is notified, and the instruction flow from the plurality of registers ( 120 ) to the plurality of dispatch units ( 140 ) is rerouted as a result of the detection of the dedicated instruction.

Claims (28)

1. A parallel processor for executing code for that has been compiled to achieve code compaction, the code comprising a plurality of successive instruction bundles each comprising a plurality of instructions, one instruction for each of a corresponding plurality of execution units, the instructions including a do nothing instruction pertaining to a first duration in which a single instruction is executed and in response to which an execution unit performs no operation, the parallel processor comprising:

a memory;

an instruction dispatch stage comprising a plurality of dispatch units, the instruction dispatch stage being configured to detect in a first instruction bundle a dedicated instruction for a particular execution unit;

circuitry for flexibly routing different instructions of an instruction bundle from the memory to different ones of the dispatch units;

an instruction execution stage comprising a plurality of execution units, coupled to and following the instruction dispatch stage;

the instruction dispatch stage being configured to, in response to the dedicated instruction:

reduce power to or turn off the particular execution unit for a variable duration in which multiple instructions would otherwise have been executed by the particular execution unit; and

cause the circuitry to reroute instructions in a next successive instruction bundle following the first instruction bundle such that an instruction that logically corresponds to the particular execution unit is rerouted to a different execution unit.

2. A parallel processor as claimed in claim 1 , wherein the memory comprises a plurality of registers for storing instructions, the plurality of registers being coupled to said circuitry.

3. A parallel processor as claimed in claim 1 , wherein a dispatch unit is configured to at least partially deactivate itself in response to the dedicated instruction.

4. A parallel processor as claimed in claim 3 , comprising a control circuit for reactivating a dispatch unit after said variable duration.

5. A parallel processor as claimed in claim 4 , wherein the control circuit is configured to generate the reactivation signal responsive to a signal from an execution unit.

6. A parallel processor as claimed in claim 1 , wherein said circuitry comprises a data communication bus.

7. A parallel processor as claimed in claim 1 , wherein said circuitry comprises:

a plurality of demultiplexers coupled to the plurality of registers; and

a plurality of multiplexers coupled to the plurality of dispatch nodes units, with each demultiplexer of the plurality of demultiplexers being coupled to each multiplexer of from the plurality of multiplexers.

8. A method of executing code for a parallel processor that has been compiled to achieve code compaction, the code comprising a plurality of successive instruction bundles each comprising a plurality of instructions, one instruction for each of a corresponding plurality of execution units, the instructions including a do nothing instruction pertaining to a duration in which a single instruction is executed and in response to which an execution unit performs no operation, the method comprising:

at an instruction dispatch stage preceding an instruction execution stage, detecting in a first instruction bundle a dedicated instruction for a particular execution unit;

in response to the dedicated instruction:

reducing power to or turning off the particular execution unit for a duration in which multiple instructions would otherwise have been executed by the particular execution unit; and

rerouting instructions in a next successive instruction bundle following the first instruction bundle such that an instruction that logically corresponds to the particular execution unit is rerouted to a different execution unit.

9. A method of compiling code for a parallel processor to achieve code compaction, the code comprising a plurality of first successive instruction bundles each comprising a plurality of instructions, one instruction for each of a corresponding plurality of execution units, the instructions including a do nothing instruction pertaining to a duration in which a single instruction is executed and in response to which an execution unit performs no operation, the method comprising:

detecting within the plurality of first bundles of instructions a plurality of do nothing instructions that are successive instructions for a particular execution unit;

replacing a first one of the plurality of do nothing instructions with a dedicated instruction for the particular execution unit;

removing at least one other one of the plurality of do nothing instructions such that the code contains fewer total instructions; and

re-bundling the code to form a plurality of second different instructions bundles.

10. A method as claimed in claim 9 , wherein removing comprises removing all remaining do nothing instructions from the plurality of do nothing instructions from the plurality of first bundles of instruction.

11. A method as claimed in claim 10 , further comprising including information within the dedicated instruction indicating a number of removed do nothing instructions.