Reconfigurable computing architecture for providing pipelined data paths
First Claim
1. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
- a plurality of functional units that are interconnectably arranged to perform a plurality of functions on data, the data comprising a plurality of bits;
a plurality of interconnectors that selectably interconnect the functional units to control the flow of data between the functional units;
a set of first signals generated to create a state that remains unchanged over the execution cycles of any one of the applications;
a set of second signals generated to create a plurality of states that are changeable over the execution cycles; and
an input and an output for data, wherein the function being performed on the data by the functional units is selectable by the first signals and the second signals and the interconnectors are arranged in a single dimension to transport the data from the input and to the output and to provide the data to the functional units, the interconnectors interconnect the functional units such that the flow of the data between the functional units is selectable.
2 Assignments
0 Petitions
Accused Products
Abstract
A configurable computing architecture (10) has its functionality controlled by a combination of static and dynamic control, wherein the configuration is referred to as static control and instructions are referred to as dynamic control. A reconfigurable data path (12) has a plurality of elements including functional units (32, 36), registers (30), and memories (34) whose interconnection and functionality is determined by a combination of static and dynamic control. These elements are connected together, using the static configuration, into a pipelined data path that performs a computation of interest. The dynamic control signals (21) are suitably used to change the operation of a functional unit and the routing of signals between functional units. The static control signals (23) are provided each by a static memory cell (62) that is written by a host (13). The controller (14) generates control instructions (16) that are interpreted by a control path (18) that computes the dynamic control signals. The control path is configured statically for a given application to perform the appropriate interpretation of the instructions generated by the controller. By using a combination of static and dynamic control information, the amount of dynamic control used to achieve flexible operation is significantly reduced.
405 Citations
76 Claims
-
1. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
a plurality of functional units that are interconnectably arranged to perform a plurality of functions on data, the data comprising a plurality of bits; a plurality of interconnectors that selectably interconnect the functional units to control the flow of data between the functional units; a set of first signals generated to create a state that remains unchanged over the execution cycles of any one of the applications; a set of second signals generated to create a plurality of states that are changeable over the execution cycles; and an input and an output for data, wherein the function being performed on the data by the functional units is selectable by the first signals and the second signals and the interconnectors are arranged in a single dimension to transport the data from the input and to the output and to provide the data to the functional units, the interconnectors interconnect the functional units such that the flow of the data between the functional units is selectable. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 53)
-
-
28. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications; means for generating a set of instructions having states that are changeable over the execution cycles; a linear array of interpreters that receive the set of instructions and provide a set of second signals having states that are changeable over the execution cycles; means for interconnecting the interpreters; means for inputting and outputting data; a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the functional units being selectable by the first signals and the second signals; and means for interconnecting the functional units that are arranged in a single dimension to transport the data between the input and output means and to provide the data to the functional units, the functional units being interconnected by the means for interconnecting the functional units such that the flow of data between the functional units is selectable, wherein the data operated on by the functional units comprises a plurality of bits. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
-
-
49. A method of mapping a computational application to a reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture including means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications;
- means for generating a set of instructions having states that are changeable over the execution cycles;
a linear array of interpreters that receive the set of instructions and provide a set of second signals having states that are changeable over the execution cycles;
means for interconnecting the interpreters;
means for inputting and outputting data;
a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the array being selectable by the first signals and the second signals; and
means for interconnecting the functional units that are arranged to receive the data from the input and output means and to provide the data to the functional units, the functional units being interconnected by the means for interconnecting the functional units such that the flow of data between the functional units is selectable, the method comprising;specifying a number of computational stages to map to the array; specifying a control tree that represents execution cycles within the application; specifying a computation to be mapped to the stages; converting the computation specification to a specification of the interconnected functional units, the second control signals being labeled with a set of the first expressions derived from variables in the control tree; generating a set of second expressions from the set of first expressions, the second expressions representing the set of instructions that are input to the interpreters; generating a configuration of the interpreters for enabling the interpreters to convert the second expressions into the first expressions; and generating the configuration of the remaining signals in the first set. - View Dependent Claims (50, 51, 52)
- means for generating a set of instructions having states that are changeable over the execution cycles;
-
54. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications; means for generating a set of second signals having states that are changeable over the execution cycles; means for inputting and outputting data; a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the functional units is selectable by the first signals and the second signals; and means for interconnecting the functional units, the interconnecting means being arranged to transport the data between the input and output means and to provide the data to the functional units, the interconnecting means interconnecting the functional units such that flow of the data between the functional units is selectable, wherein each functional unit has an input terminal and wherein the interconnecting means include a plurality of rows of buses and a plurality of multiplexers, the multiplexers connecting the input terminals of the functional units to the buses. - View Dependent Claims (55, 56, 57)
-
-
58. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications; means for generating a set of second signals having states that are changeable over the execution cycles; means for inputting and outputting data; a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the functional units is selectable by the first signals and the second signals; and means for interconnecting the functional units, the interconnecting means being arranged to transport the data between the input and output means and to provide the data to the functional units, the interconnecting means interconnecting the functional units such that flow of the data between the functional units is selectable, wherein each functional unit has an output terminal and wherein the interconnecting means include a plurality of rows of buses and a plurality of switches, the switches connecting the output terminals of the functional units to the buses. - View Dependent Claims (59, 60, 61)
-
-
62. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications; means for generating a set of instructions having states that are changeable over the execution cycles; a linear array of interpreters that receive the set of instructions and provide a set of second signals having states that are changeable over the execution cycles; means for interconnecting the interpreters; means for inputting and outputting data; a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the functional units is selectable by the first signals and the second signals; and means for interconnecting the functional units that are arranged to transport the data between the input and output means and to provide the data to the functional units, the functional units being interconnected by the means for interconnecting the functional units such that the flow of data between the functional units is selectable, wherein each interpreter includes means for generating an output signal and the output signal-generating means generates the set of second signals.
-
-
63. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications; means for generating a set of instructions having states that are changeable over the execution cycles; a linear array of interpreters that receive the set of instructions and provide a set of second signals having states that are changeable over the execution cycles; means for interconnecting the interpreters; means for inputting and outputting data; a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the functional units is selectable by the first signals and the second signals; and means for interconnecting the functional units that are arranged to transport the data between the input and output means and to provide the data to the functional units, the functional units being interconnected by the means for interconnecting the functional units such that the flow of data between the functional units is selectable, wherein each interpreter includes means for generating an output signal and the output signal-generating means includes an input terminal coupled to receive an input signal, the output signal being selected from a group of signals consisting of the input signal, a logic complement of the input signal, a logic zero, and a logic 1. - View Dependent Claims (64, 65)
-
-
66. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications; means for generating a set of instructions having states that are changeable over the execution cycles; a linear array of interpreters that receive the set of instructions and provide a set of second signals having states that are changeable over the execution cycles; means for interconnecting the interpreters; means for inputting and outputting data; a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the functional units is selectable by the first signals and the second signals; and means for interconnecting the functional units that are arranged to transport the data between the input and output means and to provide the data to the functional units, the functional units being interconnected by the means for interconnecting the functional units such that the flow of data between the functional units is selectable, wherein the means for interconnecting the interpreters include a plurality of rows of control buses and each interpreter includes means for generating an output signal. - View Dependent Claims (67, 68)
-
-
69. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications; means for generating a set of instructions having states that are changeable over the execution cycles; a linear array of interpreters that receive the set of instructions and provide a set of second signals having states that are changeable over the execution cycles; means for interconnecting the interpreters; means for inputting and outputting data; a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the functional units is selectable by the first signals and the second signals; and means for interconnecting the functional units that are arranged to transport the data between the input and output means and to provide the data to the functional units, the functional units being interconnected by the means for interconnecting the functional units such that the flow of data between the functional units is selectable, wherein each interpreter includes means for generating an output signal and each output signal generating means includes an input terminal and an output terminal, the input terminal of one of the output signal generating means being coupled to the output terminal of a different output signal generating means.
-
-
70. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications; means for generating a set of instructions having states that are changeable over the execution cycles; a linear array of interpreters that receive the set of instructions and provide a set of second signals having states that are changeable over the execution cycles; means for interconnecting the interpreters; means for inputting and outputting data; a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the functional units is selectable by the first signals and the second signals; and means for interconnecting the functional units that are arranged to transport the data between the input and output means and to provide the data to the functional units, the functional units being interconnected by the means for interconnecting the functional units such that the flow of data between the functional units is selectable, wherein each interpreter includes means for generating an output signal and the output signal-generating means includes a lookup table. - View Dependent Claims (71)
-
-
72. A reconfigurable computing architecture for executing a plurality of applications, each application being executed over a plurality of execution cycles, the architecture comprising:
-
means for generating a set of first signals having a state that remains unchanged over the execution cycles of any one of the applications; means for generating a set of instructions having states that are changeable over the execution cycles; a linear array of interpreters that receive the set of instructions and provide a set of second signals having states that are changeable over the execution cycles; means for interconnecting the interpreters; means for inputting and outputting data; a linear array of interconnectable functional units, each functional unit being arranged to perform a plurality of functions on the data, the function being performed on the data by the functional units is selectable by the first signals and the second signals; and means for interconnecting the functional units that are arranged to transport the data between the input and output means and to provide the data to the functional units, the functional units being interconnected by the means for interconnecting the functional units such that the flow of data between the functional units is selectable, wherein each interpreter includes means for generating an output signal and the output signal-generating means are controlled by the first signals.
-
-
73. A method of mapping a computational program to a reconfigurable computing architecture configured for executing one of a plurality of applications, each application being executed over a plurality of execution cycles, the method comprising:
-
specifying a plurality of computational stages to map to the architecture, each computational stage corresponding to one execution cycle; specifying a control tree that represents all computations to be perform for every execution cycle for each stage within the program, the control list including expressions; specifying a computation for each of the computational stages based on the expressions in the control tree for that execution cycle; converting the computation specification to a listing that specifies an arrangement for interconnecting a plurality of functional units in a linear array and that specifies a set of second control signals derived from the control tree, the second control signals providing dynamic controls to change the state during an execution cycle; generating a set of second expressions that enable a plurality of interpreters to generate dynamic control signals; generating a set of control instructions that specify the second expression for input to the interpreters for each execution cycle of the control tree; determining a configuration of the interpreters; and pipelining the listing to adhere to the architecture, wherein pipelining includes generating static control signals for a part of the list that does not vary, these static control signals being loaded into the architecture to define an application on which the dynamic portion of the program is executed. - View Dependent Claims (74, 75, 76)
-
Specification