Scalable multi-threaded media processing architecture
AssigneeImagination Technologies Limited
InventorJohn Howson
Life of this patent
Estimating the term…
Abstract
A method and apparatus are provided for processing multiple streams of data on a plurality of execution threads. Data is selected from a plurality of data sources. An address in the data storage device is allocated for the selected data which is loaded into the allocated address. An execution task including the selected data source, the data address and an execution address is constructed and the data task is queued with previously constructed tasks. A determination is made as to which processing resources are required for each task and tasks are selected for execution in dependence on the determination. Tasks selected for execution are distributed across a plurality of processing threads.
Claims41
A method for processing multiple streams of data on a plurality of execution threads comprising the steps of:
- selecting data from at least one of a plurality of data sources in dependence on an availability of storage in a data storage means, wherein each data source comprises a plurality of data instances, each data instance being a quanta of data that may be processed without reference to other data in and incoming data stream, wherein each data source provides a minimum data instance count to the data selecting step, and wherein a data source is selected in dependence on the minimum data instance count;
- allocating an address in the data storage means for the selected data;
- loading the selected data into the allocated data address;
- constructing an execution task that includes an identifier of the selected data source, the data address, and a code execution address;
- queuing the execution task with other previously constructed execution tasks;
- determining which processing resources are required for each task;
- selecting tasks for execution in dependence on an availability of the processing resources;
- distributing the selected tasks for execution across a plurality of processing threads;
- determining whether any of the threads will stall due to data dependencies;
- repeatedly selecting a subset of the threads that will not stall due to said the data dependencies;
- and
- executing the subset of the threads.
An apparatus for processing multiple streams of data comprising:
- a processor;
- a plurality of data sources;
- means for selecting a data source from the plurality of data sources in dependence on an availability of storage in a data storage means, wherein each data source comprises a plurality of data instances, each data instance being a quanta of data that may be processed without reference to other data in and incoming data stream, wherein each data source provides a minimum data instance count to the data selecting step, and wherein a data source is selected in dependence on the minimum data instance count;
- means for allocating an address in the data storage means for the selected data source;
- means for loading data for the selected data source into the allocated address for the selected data source;
- means for constructing an execution task that includes an identifier of the selected data source, a code execution address and a data address;
- a task queue for constructed execution tasks;
- means for selecting tasks for execution in dependence on an availability of processing resources;
- means for distributing the selected tasks across a plurality of execution threads;
- means for determining whether any of the threads will stall due to data dependencies;
- means for repeatedly selecting a subset of the threads that will not stall due to the data dependencies;
- and
- means for executing the subset of the threads.
A tile-based rendering system comprising:
- a processor;
- a plurality of data sources;
- means for selecting a data source from the plurality of data sources in dependence on an availability of storage in a data storage means, wherein each data source comprises a plurality of data instances, each data instance being a quanta of data that may be processed without reference to other data in and incoming data stream, wherein each data source provides a minimum data instance count to the data selecting step, and wherein a data source is selected in dependence on the minimum data instance count;
- means for allocating an address in the data storage means for the selected data source;
- means for loading data for the selected data source into the allocated address for the selected data source;
- means for constructing an execution task that includes an identifier of the selected data source, a code execution address and a data address;
- a task queue for constructed execution tasks;
- means for selecting tasks for execution in dependence on an availability of processing resources;
- means for distributing the selected tasks across a plurality of execution threads;
- means for determining whether any of the threads will stall due to data dependencies;
- means for repeatedly selecting a subset of the threads that will not stall due to the data dependencies;
- and
- means for executing the subset of the threads.
Dependencies are inferred from the claim text.