IP Library Granted Patent US 9,672,188
Granted Patent B2
US 9,672,188 · App. 14/693,793 · Granted Jun 6, 2017

Optimization of loops and data flow sections in multi-core processor environment

Inventor: Martin Vorbach (Lingenfeld, DE)
Assignee: Hyperion Core, Inc.
G06F15/7807G06F8/41G06F8/4441G06F8/452G06F9/3885
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,672,188
App. No.
14/693,793
Granted
Jun 6, 2017
Kind
B2
Abstract

The present invention relates to a method for compiling code for a multi-core processor, comprising: detecting and optimizing a loop, partitioning the loop into partitions executable and mappable on physical hardware with optimal instruction level parallelism, optimizing the loop iterations and/or loop counter for ideal mapping on hardware, chaining the loop partitions generating a list representing the execution sequence of the partitions.

Claims (26)

1. A microprocessor on a chip comprising:

a plurality of arithmetic units;

a register file comprising a plurality of data registers communicatively connected to the plurality of arithmetic units; and

an instruction fetcher and instruction decoder supplying instructions of one or more software threads to the plurality of arithmetic units;

wherein the microprocessor is capable of executing the one or more software threads in at least one mode of a plurality of modes, the plurality of modes including:

i) the arithmetic units are operating jointly on one of the one or more software threads using a single program pointer; and

ii) a plurality of groups of arithmetic units are operating on different software threads of the one or more software threads using a plurality of program pointers,

each group of arithmetic units having one of the plurality of program pointers dedicated to that group of arithmetic units;

wherein the microprocessor further comprises a plurality of instruction decode units supplying instructions to the plurality of arithmetic units according to the single program pointer or the plurality of program pointers.

2. The microprocessor according to claim 1 , wherein the plurality of arithmetic units are arranged in an array.

3. The microprocessor according to claim 2 , wherein a network interconnects the plurality of arithmetic units in the array.

4. The microprocessor according to claim 2 , wherein while executing the one or more software threads in a loop, at least a plurality of the instructions stay the same for a plurality of clock cycles once supplied to the arithmetic units while multiple data words are streamed through the arithmetic units and processed by the arithmetic units based on the at least a plurality of the instructions.

5. The microprocessor according to claim 1 , wherein in mode (ii) the register file is split, providing a dedicated register space to each group of arithmetic units operating on a different thread.

6. A method for operating a microprocessor on a chip, the method comprising:

providing a plurality of arithmetic units and a register file comprising a plurality of data

registers communicatively connected to the plurality of arithmetic units;

providing an instruction fetcher and instruction decoder to supply instructions of one or more software threads to the plurality of arithmetic units; and

executing the one or more software threads in at least one mode of a plurality of modes, the plurality of modes including:

i) the arithmetic units are operating jointly on one of the one or more software threads using a single program pointer; and

ii) a plurality of groups of arithmetic units are operating on different software threads of the one or more software threads using a plurality of program pointers,

each group of arithmetic units having one of the plurality of program pointers dedicated to that group of arithmetic units;

further comprising supplying instructions to the plurality of arithmetic units according to the single program pointer or the plurality of program pointers using a plurality of instruction decode units.

7. The method according to claim 6 , wherein the plurality of arithmetic units are arranged in an array.

8. The method according to claim 7 , wherein a network interconnects the plurality of arithmetic units in the array.

9. The method according to claim 7 , wherein while executing the one or more software threads in a loop, at least a plurality of the instructions stay the same for a plurality of clock cycles once supplied to the arithmetic units while multiple data words are streamed through the arithmetic units and processed by the arithmetic units based on the at least a plurality of the instructions.

10. The method according to claim 6 , wherein in mode (ii) the register file is split, providing a dedicated register space to each group of arithmetic units operating on a different thread.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2024
From: HYPERION CORE INC.
To: UBITIUM GMBH
Reel/Frame 068200/0301 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2015
From: VORBACH, MARTIN
To: HYPERION CORE, INC.
Reel/Frame 035474/0699 →
Priority Claims (4)
EP 09016045 · Dec 28, 2009 · regional
EP 10000349 · Jan 15, 2010 · regional
EP 10002086 · Mar 2, 2010 · regional
EP 10007074 · Jul 9, 2010 · regional
Continuity (2)
Continuation 13519887
Related Publication 20150301983A1 · Oct 22, 2015