Claims
- 1. A method of designing a pipeline comprising the steps of:
accepting a task procedure expressed in a standard programming language, said task procedure including a sequence of computational steps; accepting a performance requirement of the pipeline; and automatically creating a hardware description of the pipeline, the pipeline comprising a plurality of interconnected processor stages, each of said processor stages for performing a respective one of said computational steps, said pipeline having characteristics consistent with said performance requirement of the pipeline.
- 2. The method according to claim 1 wherein said performance requirement includes definition of a minimum intertask interval (MITI) parameter value.
- 3. The method according to claim 1 wherein said step of automatically creating a hardware description of the pipeline further comprises the steps of:
determining a set of iteration spaces consistent with said task procedure; determining a valid and desirable affine multi-schedule; and producing a hardware pipeline and associated control mechanism description providing a functionality consistent with said affine multi-schedule.
- 4. The method of claim 3 wherein the step of determining a valid and desirable affine multi-schedule further includes honoring a designer-specified constraint such as a specification of some part of the multi-schedule.
- 5. The method of claim 3 wherein the step of determining a valid and desirable multi-schedule further includes a step of determining a processor count and an initiation interval for each of a plurality of iteration spaces.
- 6. The method according to claim 1 wherein said step of automatically creating a hardware description of the pipeline further comprises a step of creating a pipeline control mechanism for starting an operation of each of said processor stages.
- 7. The method according to claim 1 wherein said step of automatically creating a hardware description of the pipeline further comprises the steps of:
segmenting a data-flow graph of a task procedure; and determining a valid and desirable multi-schedule for each segment of said segmented data-flow graph; and automatically producing a hardware description of a synchronous hardware sub-pipeline and control unit for each segment of said segmented data-flow graph; and automatically producing a hardware description of asynchronous and expandable data and control interfaces between said synchronous hardware sub-pipelines.
- 8. The method according to claim 3 further comprising the steps of:
identifying internal array data structures; and determining a type of buffer storage for implementing each of said array data structures.
- 9. The method according to claim 8 further comprising the steps of:
determining a folding of said arrays; and determining an implementation of RAM buffer storage, said RAM buffer storage being reduced in size consistent with the folding of said internal arrays.
- 10. The method according to claim 3 in which said computational stages comprise pipelines stages implemented as cost-reduced synchronously scheduled processors.
- 11. The method according to claim 10 in which said cost-reduced synchronously scheduled processor comprises of an array of processing elements.
- 12. The method according to claim 10 in which said cost-reduced synchronously scheduled processor is not programmable.
- 13. A method of designing a pipeline comprising the steps of:
reading a task procedure and a desired throughput of the pipeline, said task procedure including one or more statements; identifying an iteration spaces, input, output, and internal data structures; analyzing dependencies between statements; finding at least one dependence relation between said statements; calculating a valid and desirable multi-schedule; optimizing access of at least one internal data structure using said multi-schedule to minimize a size of a hardware buffer; producing a hardware processor for each loop nest and straight-line segment; and producing optimized hardware buffers to contain values of said internal data structures.
- 14. A system for designing a pipeline, said system comprising:
a memory storing a set of program instructions; and a processor connected to said memory and responsive to said set of program instructions for:
(i) accepting a task procedure expressed in a standard programming language, said task procedure including a sequence of computational steps, (ii) accepting a performance requirement of the pipeline, and (iii) automatically creating a hardware description of the pipeline, the pipeline comprising a plurality of interconnected processor stages, each of said processor stages for performing a respective one of said computational steps, said pipeline having characteristics consistent with said performance requirement of the pipeline.
- 15. The system according to claim 14 wherein said performance requirement includes definition of a minimum intertask interval (MITI) parameter value, said processor responsive to said MITI for creating said hardware description.
- 16. The system according to claim 14 wherein said processor is further responsive to said set of program instructions for:
determining a valid and desirable affine multi-schedule; and producing a hardware pipeline and associated control mechanism description providing a functionality consistent with said affine multi-schedule.
- 17. The system according to claim 16 wherein said processor is further responsive to said set of program instructions for:
determining a folding of internal array data structures; and determining an implementation of RAM buffer storage; said RAM buffer storage being reduced in size consistent with the folding of said internal arrays.
- 18. The system according to claim 16 in which said computational stages comprise pipelines stages implemented as cost-reduced synchronously scheduled processors.
- 19. A program of computer instructions stored on a computer readable medium, said program comprising computer code for performing the steps of:
accepting a task procedure expressed in a standard programming language, said task procedure including a sequence of computational steps; accepting a performance requirement of the pipeline; and automatically creating a hardware description of the pipeline, the pipeline comprising a plurality of interconnected processor stages, each of said processor stages for performing a respective one of said computational steps, said pipeline having characteristics consistent with said performance requirement of the pipeline.
- 20. The program of computer instructions according to claim 19 wherein said performance requirement includes definition of a minimum intertask interval (MITI) parameter value.
- 21. The program of computer instructions according to claim 19 wherein said program further comprises computer code for performing the steps of:
determining a valid and desirable affine multi-schedule; and producing a hardware pipeline and associated control mechanism description providing a functionality consistent with said affine multi-schedule.
- 22. The program of computer instructions according to claim 21 further comprising computer code for performing the steps of:
determining a folding of internal arrays; and determining an implementation of a RAM buffer storage; said RAM buffer storage being reduced in size consistent with the folding of said internal arrays.
- 23. The program of computer instructions according to claim 21 in which said computational stages comprise pipelines stages implemented as cost-reduced synchronously scheduled processors.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application is related to U.S. patent application Ser. No. (Attorney Docket No. 100110564-1) entitled SYSTEM AND METHOD OF OPTIMIZING MEMORY USAGE WITH DATA LIFETIMES and to U.S. patent application Ser. No. (Attorney Docket No. 100110565-1) entitled METHOD AND SYSTEM FOR MEMORY MANAGEMENT OPTIMIZATION, and to (Attorney Docket No. 100110558-1) entitled SYSTEM FOR AND A METHOD OF CONTROLLING PIPELINE PROCESS STAGES, all of which are incorporated herein in their entireties by reference.