Method for interleaving a program over a plurality of cells
First Claim
1. A method for programming a system having a hardware cellular structure of runtime reconfigurable cells, comprising:
- extracting a control flow graph of a program to be executed by the cellular structure of runtime reconfigurable cells;
separating the control flow graph into a plurality of subgraphs, such that each of the plurality of subgraphs corresponds to a respective single configuration of each of a respective plurality of the runtime configurable cells, an entirety of each of the subgraphs thereby being executable by the cellular structure of runtime reconfigurable cells without reconfiguration of any of the runtime reconfigurable cells;
distributing the plurality of subgraphs among the runtime reconfigurable cells for execution of the subgraphs by the runtime reconfigurable cells;
determining state information, by at least some of the runtime reconfigurable cells, via execution of each of at least a subset of the subgraphs; and
using, by one or more of the at least some of the runtime reconfigurable cells and via execution of one of the at least the subset of the subgraphs, a portion of the state information as a trigger of conditional processing, wherein the portion of the state information was determined by execution of another of the at least the subset of the subgraphs that occurred prior to the execution of the one of the at least the subset of the subgraphs.
5 Assignments
0 Petitions
Accused Products
Abstract
For programming of modules which can be reprogrammed during operation and for partitioning of code sequences, a control and/or data flow graph may be extracted from a program and separated into a plurality of subgraphs, which may be distributed among the modules. The separation of the flow graph may be such that connections between different ones of the subgraphs are minimized. During execution of the program, after a first module completes execution of a first part of one of the subgraphs, the first module may be reconfigured for execution of a first part of a second subgraph, while a second module executes a second part of the first subgraph.
609 Citations
23 Claims
-
1. A method for programming a system having a hardware cellular structure of runtime reconfigurable cells, comprising:
-
extracting a control flow graph of a program to be executed by the cellular structure of runtime reconfigurable cells; separating the control flow graph into a plurality of subgraphs, such that each of the plurality of subgraphs corresponds to a respective single configuration of each of a respective plurality of the runtime configurable cells, an entirety of each of the subgraphs thereby being executable by the cellular structure of runtime reconfigurable cells without reconfiguration of any of the runtime reconfigurable cells; distributing the plurality of subgraphs among the runtime reconfigurable cells for execution of the subgraphs by the runtime reconfigurable cells; determining state information, by at least some of the runtime reconfigurable cells, via execution of each of at least a subset of the subgraphs; and using, by one or more of the at least some of the runtime reconfigurable cells and via execution of one of the at least the subset of the subgraphs, a portion of the state information as a trigger of conditional processing, wherein the portion of the state information was determined by execution of another of the at least the subset of the subgraphs that occurred prior to the execution of the one of the at least the subset of the subgraphs.
-
-
2. A method for programming a system having a cellular structure of runtime reconfigurable cells, comprising:
-
extracting, by a hardware circuitry arrangement, a data flow graph of a program to be executed by the cellular structure of runtime reconfigurable cells and that includes a loop; partitioning, by the hardware circuitry arrangement, the data flow graph, thereby forming a plurality of subgraphs, such that the loop is split into several of the subgraphs due to a partitioning constraint that each of the plurality of subgraphs corresponds to a respective single configuration of each of a respective plurality of the runtime configurable cells, an entirety of each of the subgraphs thereby being executable by the cellular structure of runtime reconfigurable cells without reconfiguration of any of the runtime reconfigurable cells; and distributing, by the hardware circuitry arrangement, the plurality of subgraphs among the runtime reconfigurable cells for execution of the subgraphs by the runtime reconfigurable cells.
-
-
3. A method for programming a system having a cellular structure of runtime reconfigurable cells, comprising:
-
extracting, by a hardware circuitry arrangement and from a program, to be executed by the cellular structure of runtime reconfigurable cells, at least one of a data flow graph and a control flow graph; separating, by the hardware circuitry arrangement, the at least one of the graphs into a plurality of subgraphs, such that each of the plurality of subgraphs corresponds to a respective single configuration of each of a respective plurality of the runtime configurable cells, an entirety of each of the subgraphs thereby being executable by the cellular structure of runtime reconfigurable cells without reconfiguration of any of the runtime reconfigurable cells; and distributing, by the hardware circuitry arrangement, the plurality of subgraphs among the runtime reconfigurable cells for execution of the subgraphs by the runtime reconfigurable cells; wherein the separating includes providing communication arrangements adapted for storage of all data to be processed in a subsequent runtime reconfigurable cell according to connections between the plurality of subgraphs. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of executing a single program on a system having a hardware array of runtime reconfigurable cells, comprising:
-
separating the single program into several subgraphs, such that each of the subgraphs corresponds to a respective single configuration of each of a respective plurality of the runtime configurable cells, an entirety of each of the subgraphs thereby being executable by the array of runtime reconfigurable cells without reconfiguration of any of the runtime reconfigurable cells; distributing the several subgraphs among the reconfigurable cells; and executing the several subgraphs via the reconfigurable cells, the executing including; transmitting a data signal from a first cell via which a first one of the subgraphs is executed to a second cell via which a second one of the subgraphs is executed; and transmitting a status with the data signal, the status indicating whether the data signal is valid. - View Dependent Claims (12, 13, 14)
-
-
15. A method of executing a program on hardware array of runtime reconfigurable cells, the method comprising:
-
forming, a plurality of subgraphs based on a program, the forming of the subgraphs being performed according to a constraint that each of the plurality of subgraphs corresponds to a respective single configuration of each of a respective plurality of the runtime configurable cells, an entirety of each of the subgraphs thereby being executable by the array of runtime reconfigurable cells without reconfiguration of any of the runtime reconfigurable cells; performing, by a first one of the reconfigurable cells, a function corresponding to a first part of a first one of the subgraphs while the first cell is configured according to the configuration to which the first subgraph corresponds; after the computing, reconfiguring the first cell for performing a function corresponding to a first part of a second one of the subgraphs, the reconfiguration being to the configuration to which the second subgraph corresponds; and simultaneously with the reconfiguring, performing, by a second one of the reconfigurable cells, a function corresponding to a second part of the first subgraph while the second cell is configured according to the configuration to which the first subgraph corresponds; wherein state information determined for one of the subgraphs is transferred from the one of the subgraphs to a subsequently executed subgraph. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23)
-
Specification