IP Library Granted Patent US 10,067,792
Granted Patent B2
US 10,067,792 · App. 15/104,125 · Granted Sep 4, 2018

Finite automata manager and method to pre-fetch data for a processor core

Inventor: Ezekiel Kruglick (Poway, CA)
Assignee: Empire Technology Development LLC
G06F9/50G06F9/48G06F12/0862G06F2212/1024G06F2212/6026
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 10,067,792
App. No.
15/104,125
Granted
Sep 4, 2018
Kind
B2
Abstract

Technologies are generally described for systems, devices and methods effective to select program instructions for a hardware finite automaton on a multi-core processor that includes two or more cores. A hardware finite automata manager may identify executable instructions associated with a particular one of the cores of the multi-core processor. The hardware finite automata manager may determine that the hardware finite automaton is available to be used. The hardware finite automata manager, in response to the determination that the hardware finite automaton is available, may select at least one program instruction based on the executable instructions. The at least one program instruction may be configured to modify the hardware finite automaton to pre-fetch data. The hardware finite automaton manager may transmit the at least one program instruction to the hardware finite automaton.

Claims (58)

1. A hardware finite automata manager, comprising:

a service manager; and

an engine manager configured to be in communication with the service manager,

wherein the service manager is effective to:

identify at least one executable instruction associated with a particular core of a multi-core processor,

wherein the engine manager is effective to:

determine that a hardware finite automaton is available, wherein the hardware finite automaton is configured to perform a network processing task,

wherein the hardware finite automaton includes a plurality of shift registers and a plurality of logic gates;

in response to the determination that the hardware finite automaton is available, select at least one program instruction based on a pre-fetch hardware finite automata design, wherein the pre-fetch hardware finite automata design is selected based on the at least one executable instruction, and wherein the at least one program instruction is configured to instruct the hardware finite automaton to pre-fetch data for the particular core; and

transmit the at least one program instruction to the hardware finite automaton,

wherein the transmission of the at least one program instruction includes programming the hardware finite automaton to pre-fetch the data for the particular core, before the at least one executable instruction is executed by the particular core, and

wherein selecting the at least one program instruction includes:

identifying executable instructions associated with a particular core of the multi-core processor;

determining that the hardware finite automaton is available, wherein the hardware finite automaton is configured to perform a network processing task, and

wherein the hardware finite automaton includes a plurality of shift registers and a plurality of logic gates;

in response to the determination that the hardware finite automaton is available, selecting at least one program instruction based on a pre-fetch hardware finite automata design, wherein the pre-fetch hardware finite automata design is selected based on the executable instructions, and wherein the at least one program instruction is configured to instruct the hardware finite automaton to pre-fetch data for the particular core; and

transmitting the at least one program instruction to the hardware finite automaton, wherein transmitting the at least one program instruction includes programming the hardware finite automaton to pre-fetch the data for the particular core, before the executable instructions are executed by the particular core, to reduce latency for the particular core to wait for the data.

2. The hardware finite automata manager of claim 1 , wherein the service manager is further effective to:

copy the at least one executable instruction before the at least one executable instruction is executed by the particular core, to produce a copy of the at least one executable instruction; and

transmit the copy of the at least one executable instruction to the hardware finite automaton.

3. The hardware finite automata manager of claim 1 , further comprising a memory coupled to the engine manager and configured to store a plurality of pre-fetch hardware finite automata designs, wherein the engine manager is effective to program the hardware finite automaton with the at least one program instruction so as to correspond to the at least one stored pre-fetch hardware finite automata design such that the programmed hardware finite automaton is effective to pre-fetch the data from the memory.

4. The hardware finite automata manager of claim 3 , wherein the engine manager is further effective to program the hardware finite automaton to:

store the pre-fetched data in a cache associated with the particular core.

5. The hardware finite automata manager of claim 1 , wherein:

the at least one executable instruction includes first executable instructions,

the particular core is a first core of the multi-core processor, and

the engine manager is further effective to, prior to selection of the at least one program instruction:

identify second executable instructions associated with a second core of the multi-core processor;

determine a first number of cache misses experienced by the first core in execution of the first executable instructions;

determine a second number of cache misses experienced by the second core in execution of the second executable instructions; and

assign the hardware finite automaton to the first core based on the first and second numbers of cache misses.

6. The hardware finite automata manager of claim 1 , wherein the at least one executable instruction includes first and second sets of executable instructions, wherein to select the at least one program instruction based on the at least one executable instruction, the engine manager is effective to:

select a first set of program instructions based on the first set of executable instructions; and

select a second set of program instructions based on the second set of executable instructions, and

wherein the first set of program instructions is different from the second set of program instructions.

7. The hardware finite automata manager of claim 1 , wherein the engine manager is further effective to program the hardware finite automaton, after execution of the at least one executable instruction, to perform the network processing task.

8. A multi-core processor, comprising:

two or more processor cores;

a hardware finite automaton; and

a hardware finite automata manager configured to be in communication with the two or more processor cores and the hardware finite automaton,

wherein the hardware finite automata manager is effective to:

identify at least one executable instruction associated with a particular core of the two or more processor cores;

determine that the hardware finite automaton is available, wherein the hardware finite automaton is configured to perform a network processing task,

wherein the hardware finite automaton includes a plurality of shift registers and a plurality of logic gates;

in response to the determination that the hardware finite automaton is available, program the hardware finite automaton so as to generate a programmed hardware finite automaton, and

wherein the programmed hardware finite automaton is effective to:

perform a fetch of data prior to execution of the at least one executable instruction by the particular core; and

provide the fetched data to be stored in a storage unit associated with the particular core,

wherein the hardware finite automata manager is configured to select at least one program instruction based on a pre-fetch hardware finite automata design, and

wherein selecting the at least one program instruction includes:

identifying executable instructions associated with a particular core of the multi-core processor;

determining that the hardware finite automaton is available, wherein the hardware finite automaton is configured to perform a network processing task, and

wherein the hardware finite automaton includes a plurality of shift registers and a plurality of logic gates;

in response to the determination that the hardware finite automaton is available, selecting at least one program instruction based on a pre-fetch hardware finite automata design, wherein the pre-fetch hardware finite automata design is selected based on the executable instructions, and wherein the at least one program instruction is configured to instruct the hardware finite automaton to pre-fetch data for the particular core; and

transmitting the at least one program instruction to the hardware finite automaton, wherein transmitting the at least one program instruction includes programming the hardware finite automaton to pre-fetch the data for the particular core, before the executable instructions are executed by the particular core, to reduce latency for the particular core to wait for the data.

9. The multi-core processor of claim 8 , wherein the storage unit associated with the particular core includes a cache.

10. The multi-core processor of claim 8 , wherein the hardware finite automata manager is further effective to copy the at least one executable instruction.

11. The multi-core processor of claim 8 , wherein to program the hardware finite automaton, the hardware finite automata manager is effective to reconfigure the plurality of logic gates of the hardware finite automaton.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENTS, RECORDED ON JANUARY 29, 2019 AT REEL 048373 FRAME 0217 Recorded Sep 22, 2025
From: CRESTLINE DIRECT FINANCE, L.P., AS COLLATERAL AGENT
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 072936/0464 →
SECURITY INTEREST Recorded Jan 29, 2019
From: EMPIRE TECHNOLOGY DEVELOPMENT LLC
To: CRESTLINE DIRECT FINANCE, L.P.
Reel/Frame 048373/0217 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2018
From: KRUGLICK, EZEKIEL
To: ARDENT RESEARCH CORPORATION
Reel/Frame 046532/0467 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2018
From: ARDENT RESEARCH CORPORATION
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 046532/0471 →
Continuity (1)
Related Publication 20160321107A1 · Nov 3, 2016