Reconfigurable hardware structures for functional pipelining of on-chip special purpose functions
First Claim
1. A device comprising:
- a first multiplexer operatively coupled between a first streaming functional unit and a first plurality of potential input sources;
wherein the first streaming function unit is dynamically configurable to perform any one of a first plurality of functions;
wherein the first plurality of functions includes a first function;
a second multiplexer operatively coupled between a second streaming functional unit and a second plurality of potential input sources;
wherein the second streaming function unit is dynamically configurable to perform any one of a second plurality of functions;
wherein the second plurality of functions includes a second function;
wherein output of the first streaming functional unit is one potential input source, of the second plurality of potential input sources;
a scheduler configured to perform the following in response to a request to perform an operation that involves the first function and the second function;
determine how to configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in performing the operation;
send one or more first signals to the first streaming functional unit to dynamically configure the first streaming functional unit to perform the first function;
send one or more second signals to the second streaming functional unit to dynamically configure the second streaming functional unit to perform the second function; and
send signals to the first multiplexer and the second multiplexer to dynamically configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in performing the operation.
0 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for reconfiguring hardware structures to pipeline the execution of multiple special purpose hardware implemented functions, without saving intermediate results to memory, is provided. Pipelining functions in a program is typically performed by a first function saving its results (the “intermediate results”) to memory, and a second function subsequently accessing the memory to use the intermediate results as input. Saving and accessing intermediate results stored in memory incurs a heavy performance penalty, requires more power, consumes more memory bandwidth, and increases the memory footprint. Due to the ability to redirect the input and output of the hardware structures, intermediate results are passed directly from one special purpose hardware implemented function to another without storing the intermediate results in memory. Consequently, a program that utilizes the method or apparatus, reduces power consumption, consumes less memory bandwidth, and reduces the program'"'"'s memory footprint.
-
Citations
20 Claims
-
1. A device comprising:
-
a first multiplexer operatively coupled between a first streaming functional unit and a first plurality of potential input sources; wherein the first streaming function unit is dynamically configurable to perform any one of a first plurality of functions; wherein the first plurality of functions includes a first function; a second multiplexer operatively coupled between a second streaming functional unit and a second plurality of potential input sources; wherein the second streaming function unit is dynamically configurable to perform any one of a second plurality of functions; wherein the second plurality of functions includes a second function; wherein output of the first streaming functional unit is one potential input source, of the second plurality of potential input sources; a scheduler configured to perform the following in response to a request to perform an operation that involves the first function and the second function; determine how to configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in performing the operation; send one or more first signals to the first streaming functional unit to dynamically configure the first streaming functional unit to perform the first function; send one or more second signals to the second streaming functional unit to dynamically configure the second streaming functional unit to perform the second function; and send signals to the first multiplexer and the second multiplexer to dynamically configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in performing the operation. - View Dependent Claims (2)
-
-
3. A device comprising:
-
a first multiplexer operatively coupled between a first streaming functional unit and a first plurality of potential input sources; a second multiplexer operatively coupled between a second streaming functional unit and a second plurality of potential input sources; wherein output of the first streaming functional unit is one potential input source, of the second plurality of potential input sources; a scheduler configured to; determine how to configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in processing data; and send signals to dynamically configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in processing the data; wherein the scheduler is further configured to; cause the first multiplexer to pass streaming input from a first selected input source, of the first plurality of potential input sources, to the first streaming functional unit; and cause the second multiplexer to pass streaming input from output of the first streaming functional unit to the second streaming functional unit; cause the first streaming functional unit to perform a first function, of a first plurality of functions that the first streaming functional unit is capable of performing, on data from data passed to the first streaming functional unit from the first multiplexer; and cause the second streaming functional unit to perform a second function, of a second plurality of functions that the second streaming functional unit is capable of performing, on output from the first streaming functional unit that is passed to the second streaming functional unit from the second multiplexer. - View Dependent Claims (4)
-
-
5. A device further comprising:
-
a first multiplexer operatively coupled between a first streaming functional unit and a first plurality of potential input sources; a second multiplexer operatively coupled between a second streaming functional unit and a second plurality of potential input sources; wherein output of the first streaming functional unit is one potential input source, of the second plurality of potential input sources; a third multiplexer operatively coupled between a third streaming functional unit and a third plurality of potential input sources; wherein the third multiplexer is dynamically configurable to pass streaming input from selected one of the third plurality of potential input sources to the third streaming functional unit; a fourth multiplexer operatively coupled between a fourth streaming functional unit and a fourth plurality of potential input sources; wherein output of the third streaming functional unit is one potential input source, of the fourth plurality of potential input sources; a scheduler configured to; determine how to configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in processing data; and send signals to dynamically configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in processing the data; wherein the scheduler is further configured to send signals to; cause the first multiplexer to pass streaming input from a first selected input source, of the first plurality of potential input sources, to the first streaming functional unit; cause the second multiplexer to pass streaming input from output of the first streaming functional unit to the second streaming functional unit; cause the third multiplexer to pass streaming input from a second selected input source, of the third plurality of potential input sources, to the third streaming functional unit; and cause the fourth multiplexer to pass streaming input from output of the third streaming functional unit to the fourth streaming functional unit. - View Dependent Claims (6, 7, 8, 9, 10)
-
-
11. A system comprising:
-
a memory; a processor coupled to the memory; and a specialized coprocessor, coupled to the processor and the memory, wherein the specialized coprocessor comprises; a first multiplexer operatively coupled between a first streaming functional unit and a first plurality of potential input sources; wherein the first streaming function unit is dynamically configurable to perform any one of a first plurality of functions; wherein the first plurality of functions includes a first function; a second multiplexer operatively coupled between a second streaming functional unit and a second plurality of potential input sources; wherein the second streaming function unit is dynamically configurable to perform any one of a second plurality of functions; wherein the second plurality of functions includes a second function; wherein output of the first streaming functional unit is one potential input source, of the second plurality of potential input sources; a scheduler configured to perform the following in response to a request to perform an operation that involves the first function and the second function; determine how to configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in performing the operation; send one or more first signals to the first streaming functional unit to dynamically configure the first streaming functional unit to perform the first function; send one or more second signals to the second streaming functional unit to dynamically configure the second streaming functional unit to perform the second function; and send signals to the first multiplexer and the second multiplexer to dynamically configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in performing the operation. - View Dependent Claims (12)
-
-
13. A system comprising:
-
a memory; a processor coupled to the memory; and a specialized coprocessor, coupled to the processor and the memory, wherein the specialized coprocessor comprises; a first multiplexer operatively coupled between a first streaming functional unit and a first plurality of potential input sources; a second multiplexer operatively coupled between a second streaming functional unit and a second plurality of potential input sources; wherein output of the first streaming functional unit is one potential input source, of the second plurality of potential input sources; a scheduler configured to; determine how to configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in processing data; and send signals to dynamically configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in processing the data; wherein the coprocessor is further configured to; cause the first multiplexer to pass streaming input from a first selected input source, of the first plurality of potential input sources, to the first streaming functional unit; and cause the second multiplexer to pass streaming input from output of the first streaming functional unit to the second streaming functional unit; cause the first streaming functional unit to perform a first function, of a first plurality of functions that the first streaming functional unit is capable of performing, on data from data passed to the first streaming functional unit from the first multiplexer; and cause the second streaming functional unit to perform a second function, of a second plurality of functions that the second streaming functional unit is capable of performing, on output from the first streaming functional unit that is passed to the second streaming functional unit from the second multiplexer. - View Dependent Claims (14)
-
-
15. A system of comprising:
-
a memory; a processor coupled to the memory; and a specialized coprocessor, coupled to the processor and the memory, wherein the specialized coprocessor comprises; a first multiplexer operatively coupled between a first streaming functional unit and a first plurality of potential input sources; a second multiplexer operatively coupled between a second streaming functional unit and a second plurality of potential input sources; wherein output of the first streaming functional unit is one potential input source, of the second plurality of potential input sources; a third multiplexer operatively coupled between a third streaming functional unit and a third plurality of potential input sources; wherein the third multiplexer is dynamically configurable to pass streaming input from selected one of the third plurality of potential input sources to the third streaming functional unit; a fourth multiplexer operatively coupled between a fourth streaming functional unit and a fourth plurality of potential input sources; wherein output of the third streaming functional unit is one potential input source, of the fourth plurality of potential input sources; the specialized coprocessor is further configured to; determine how to configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in processing data; and send signals to dynamically configure the first multiplexer and second multiplexer to make use of the first streaming functional unit and the second streaming functional unit in processing the data; the specialized coprocessor is further configured to send signals to; cause the first multiplexer to pass streaming input from a first selected input source, of the first plurality of potential input sources, to the first streaming functional unit; cause the second multiplexer to pass streaming input from output of the first streaming functional unit to the second streaming functional unit; cause the third multiplexer to pass streaming input from a second selected input source, of the third plurality of potential input sources, to the third streaming functional unit; and cause the fourth multiplexer to pass streaming input from output of the third streaming functional unit to the fourth streaming functional unit. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification