Patent ID: 8024549

Claim:
A data processor apparatus, comprising: a plurality of data receiving units each configured to be in bi-directional communication with a data source and with another of the plurality of data receiving units with respect to receiving and providing data; a plurality of computational elements being organized in a certain order for performing different operations in a successive order on the data, the data passing through all of the plurality of computational elements, each of the plurality of computational elements configured to be in direct bi-directional communication with a respective set of the plurality of data receiving units, to perform a different operation in succession on the data received from another of the plurality of computational element, and to be additionally coupled to, and in bi-directional communication with, the other plurality of computational elements, wherein a first computational element of the plurality of computational elements receives and operates on the data from the plurality of data receiving units and transfers the operated data to a next computational element in the next clock cycle in the successive order, and the data is received one clock cycle apart in a successive order from each of the plurality of data receiving units, and wherein each of the plurality of computational elements following the first computational element receives output data that was operated on by one computational element directly before a current computational element, operates on the output data, and transfers the operated output data to a following computational element in the next clock cycle in the successive order; a plurality of processor groups, each of the plurality of processor groups configured to include a set of the plurality of data receiving units, and to be in bi-directional communication with the data source and the plurality of computational elements coupled to the each of the plurality of data receiving units; and a controller configured to control a flow of the data from each of the plurality of data receiving units to the plurality of computational elements, and to control the plurality of processor groups, wherein the plurality of data receiving units are respectively coupled to the plurality of computational elements, such that the plurality of data receiving units share the each of the plurality of computational elements, the each of the plurality of computational elements receives the data from each of the plurality of data receiving units in the respective set, and provides the operated data to each of the plurality of data receiving units in the respective set.