Patent ID: 7353516

Claim:
An apparatus for providing data flow control in an adaptive computing circuit, the apparatus comprising: a reconfigurable node capable of executing a first task and a second task of a plurality of tasks the reconfigurable node comprising: a wrapper having a hardware task manager; and an adaptive execution unit coupled to the wrapper, the adaptive execution unit comprising: a plurality of computational elements, wherein a first computational element of the plurality of computational elements has a first fixed architecture and a second computational element of the plurality of computational elements has a second fixed architecture, the first fixed architecture being different from the second fixed architecture; a plurality of switching elements coupled to the plurality of computational elements, the plurality of switching elements capable of configuring the plurality of computational elements for performance of the first task in response to first configuration information, and the plurality of switching elements further capable of reconfiguring the plurality of computational elements for performance of the second task in response to second configuration information, the first task being different than the second task; the hardware task manager and the adaptive execution unit communicating through a shared memory to track states of the first and second tasks and to define the configuration of the computational elements; and a programmable node coupled to the reconfigurable node, the programmable node capable of initiating the first task, determining a buffer parameter defining the number of buffers to be consumed in execution of the first task; initializing a buffer count for the first task; for each iteration of the first task by the reconfigurable node using a data buffer unit of the number of buffers of input data, correspondingly adjusting a buffer count; and when the buffer count meets the buffer parameter requirements, changing a state of the first task and initiating the second task utilizing a new buffer parameter.