Patent US3221852A successfully refreshed from Google Patents.
Patent US6732354B2 successfully refreshed from Google Patents.
← Back to Patent Explorer
US6732354B2 Expired / Lapsed US ⏱️ 0.0 years remaining

Method, system and software for programming reconfigurable hardware

Assignee: Altera Corp
•
Filing: 2002-04-23
•
Granted: 2004-05-04
•
Expires: 2022-04-23
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The method, system and tangible medium storing computer readable software of the present invention, provide for program constructs, such as commands, declarations, variables, and statements, which have been developed to describe computations for an adaptive computing architecture, rather than provide instructions to a sequential microprocessor or DSP architecture. The invention includes program constructs that permit a programmer to define data flow graphs in software, to provide for operations to be executed in parallel, and to reference variable states and historical values in a straightforward manner. The preferred method, system, and software also includes mechanisms for efficiently referencing array variables, and enables the programmer to succinctly describe the direct data flow among matrices, nodes, and other configurations of computational elements and computational units forming the adaptive computing architecture. The preferred software includes dataflow statements, channel objects, stream variables, state variables, unroll statements, iterators, and loop statements.

Inventors

  • 👤 W. H. Carl Ebeling
  • 👤 Eugene B. Hogenauer

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 15:03
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/30; G06F8/31

Claims Analysis

Total Claims: 52
Claim 1
Independent Claim 315 words
A method for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions, the method comprising: (a) using a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block; (b) using a second program construct of the plurality of program constructs to provide for automatic indexing of reference to a buffer object; (c) using a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations; (d) using a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time; (e) using a fifth program construct to provide for data flow among the plurality of heterogeneous computational elements by defining a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block; (f) using a sixth program construct of the plurality of program constructs to provide array accessing with a predetermined address pattern; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 2
Independent Claim 315 words
A method for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions, the method comprising: (a) using a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block; (b) using a second program construct of the plurality of program constructs to provide for automatic indexing of reference to a buffer object; (c) using a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations; (d) using a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time; (e) using a fifth program construct to provide for data flow among the plurality of heterogeneous computational elements by defining a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block; (f) using a sixth program construct of the plurality of program constructs to provide array accessing with a predetermined address pattern; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 3
Dependent Claim 28 words
The method of claim 1 , wherein step (a) further comprises: using a dataflow command for informing a compiler that included commands are for concurrent performance in parallel.
Claim 4
Dependent Claim 34 words
The method of claim 1 , wherein steps (b) and (e) further comprise: using the channel object for providing a buffer for storing data; and using a stream variable for referencing the channel object.
Claim 5
Dependent Claim 43 words
The method of claim 3 , wherein the channel object is a buffer instantiated with a declared data type and a size, and wherein the stream variable is declared with a buffer of a plurality of data items of a specified data type.
Claim 6
Dependent Claim 36 words
The method of claim 1 , wherein step (c) further comprises: using a state variable for maintaining a plurality of previous values of a variable after the variable has been assigned a plurality of current values.
Claim 7
Dependent Claim 28 words
The method of claim 1 , wherein step (d) further comprises: using an unroll command for transforming a loop operation into a predetermined plurality of individual executable operations.
Claim 8
Dependent Claim 25 words
The method of claim 1 , wherein step (f) further comprises: using an iterator variable for accessing the array in a predetermined, fixed address pattern.
Claim 9
Dependent Claim 48 words
The method of claim 1 , wherein the sixth program construct is a declaration which includes a plurality of arguments, the plurality of arguments including an iteration level, an initial value of an index, an increment added to the index for a repeated iteration, and an index limit.
Claim 10
Dependent Claim 32 words
The method of claim 1 , further comprising: (g) using a seventh program construct of the plurality of program constructs to provide for a fixed number of loop iterations at run time.
Claim 11
Dependent Claim 43 words
The method of claim 9 , wherein step (g) further comprises: using a loop command for informing a compiler that a plurality of included commands contain no branching to locations outside of the loop and that a plurality of loop conditions are fixed.
Claim 12
Dependent Claim 28 words
The method of claim 1 , wherein the first program construct has a semantics comprising: a first program construct identifier, followed by a plurality of included program statements.
Claim 13
Dependent Claim 45 words
The method of claim 11 , wherein the first program construct has a syntax comprising: a dataflow designation; a commencement designation and a termination designation following the dataflow designation; and the plurality of included program statements contained within the commencement designation and the termination designation.
Claim 14
Dependent Claim 43 words
The method of claim 1 , wherein the fourth program construct has a semantics comprising: a fourth program construct identifier having a plurality of arguments, followed by program statements for expansion into a plurality of individual commands according to the plurality of arguments.
Claim 15
Independent Claim 321 words
A system for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions, the system comprising: means for using a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block; means for using a second program construct of the plurality of program constructs to provide for automatic indexing of reference to a buffer object; means for using a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations; means for using a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time; means for using a fifth program construct to provide for data flow among the plurality of heterogeneous computational elements by defining a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block; means for using a sixth program construct of the plurality of program constructs to provide array accessing with a predetermined address pattern; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 16
Independent Claim 321 words
A system for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions, the system comprising: means for using a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block; means for using a second program construct of the plurality of program constructs to provide for automatic indexing of reference to a buffer object; means for using a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations; means for using a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time; means for using a fifth program construct to provide for data flow among the plurality of heterogeneous computational elements by defining a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block; means for using a sixth program construct of the plurality of program constructs to provide array accessing with a predetermined address pattern; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 17
Dependent Claim 36 words
The system of claim 14 , wherein the means for using the first program construct further comprises: means for using a dataflow command for informing a compiler that included commands are for concurrent performance in parallel.
Claim 18
Dependent Claim 51 words
The system of claim 14 , wherein the means for using the second program construct and the means for using a fifth program construct further comprise: means for using the channel object for providing a buffer for storing data; and means for using a stream variable for referencing the channel object.
Claim 19
Dependent Claim 43 words
The system of claim 16 , wherein the channel object is a buffer instantiated with a declared data type and a size, and wherein the stream variable is declared with a buffer of a plurality of data items of a specified data type.
Claim 20
Dependent Claim 44 words
The system of claim 14 , wherein the means for using the third program construct further comprises: means for using a state variable for maintaining a plurality of previous values of a variable after the variable has been assigned a plurality of current values.
Claim 21
Dependent Claim 36 words
The system of claim 14 , wherein the means for using the fourth program construct further comprises: means for using an unroll command for transforming a loop operation into a predetermined plurality of individual executable operations.
Claim 22
Dependent Claim 33 words
The system of claim 14 , wherein the means for using the sixth program construct further comprises: means for using an iterator variable for accessing the array in a predetermined, fixed address pattern.
Claim 23
Dependent Claim 48 words
The system of claim 14 , wherein the sixth program construct is a declaration which includes a plurality of arguments, the plurality of arguments including an iteration level, an initial value of an index, an increment added to the index for a repeated iteration, and an index limit.
Claim 24
Dependent Claim 27 words
The system of claim 14 , further comprising: means for using a seventh program construct to provide for a fixed number of loop iterations at run time.
Claim 25
Dependent Claim 51 words
The system of claim 22 , wherein the means for using the seventh program construct further comprises: means for using a loop command for informing a compiler that a plurality of included commands contain no branching to locations outside of the loop and that a plurality of loop conditions are fixed.
Claim 26
Dependent Claim 28 words
The system of claim 14 , wherein the first program construct has a semantics comprising: a first program construct identifier, followed by a plurality of included program statements.
Claim 27
Dependent Claim 45 words
The system of claim 24 , wherein the first program construct has a syntax comprising: a dataflow designation; a commencement designation and a termination designation following the dataflow designation; and the plurality of included program statements contained within the commencement designation and the termination designation.
Claim 28
Dependent Claim 43 words
The system of claim 14 , wherein the fourth program construct has a semantics comprising: a fourth program construct identifier having a plurality of arguments, followed by program statements for expansion into a plurality of individual commands according to the plurality of arguments.
Claim 29
Dependent Claim 313 words
A tangible medium storing computer readable software for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions, the tangible medium storing computer readable software comprising: a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block; a second program construct of the plurality of program constructs to provide for automatic indexing of reference to a buffer object; a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations; a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time; a fifth program construct to provide for data flow among the plurality of heterogeneous computational elements by using a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block; a sixth program construct of the plurality of program constructs to provide array accessing with a predetermined address pattern; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 30
Dependent Claim 313 words
A tangible medium storing computer readable software for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions, the tangible medium storing computer readable software comprising: a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block; a second program construct of the plurality of program constructs to provide for automatic indexing of reference to a buffer object; a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations; a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time; a fifth program construct to provide for data flow among the plurality of heterogeneous computational elements by using a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block; a sixth program construct of the plurality of program constructs to provide array accessing with a predetermined address pattern; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 31
Dependent Claim 36 words
The tangible medium storing computer readable software programming language of claim 27 , wherein the first program construct further comprises: a dataflow command for informing a compiler that included commands are for concurrent performance in parallel.
Claim 32
Dependent Claim 42 words
The tangible medium storing computer readable software of claim 27 , wherein the second program construct and the fifth program construct further comprise: a channel object for providing a buffer for storing data; and a stream variable for referencing the channel object.
Claim 33
Dependent Claim 48 words
The tangible medium storing computer readable software of claim 24 , wherein the channel object is a buffer instantiated with a declared data type and a size, and wherein the stream variable is declared with a buffer of a plurality of data items of a specified data type.
Claim 34
Dependent Claim 42 words
The tangible medium storing computer readable software of claim 29 , wherein the third program construct further comprises: a state variable for maintaining a plurality of previous values of a variable after the variable has been assigned a plurality of current values.
Claim 35
Dependent Claim 34 words
The tangible medium storing computer readable software of claim 24 , wherein the fourth program construct further comprises: an unroll command for transforming a loop operation into a predetermined plurality of individual executable operations.
Claim 36
Dependent Claim 31 words
The tangible medium storing computer readable software of claim 27 , wherein the sixth program construct further comprises: an iterator variable for accessing the array in a predetermined, fixed address pattern.
Claim 37
Dependent Claim 53 words
The tangible medium storing computer readable software of claim 27 , wherein the sixth program construct is a declaration which includes a plurality of arguments, the plurality of arguments including an iteration level, an initial value of an index, an increment added to the index for a repeated iteration, and an index limit.
Claim 38
Dependent Claim 35 words
The tangible medium storing computer readable software of claim 27 , further comprising: a seventh program construct of the plurality of program constructs to provide for a fixed number of loop iterations at run time.
Claim 39
Dependent Claim 49 words
The tangible medium storing computer readable software of claim 35 , wherein the seventh program construct further comprises: a loop command for informing a compiler that a plurality of included commands contain no branching to locations outside of the loop and that a plurality of loop conditions are fixed.
Claim 40
Dependent Claim 33 words
The tangible medium storing computer readable software of claim 27 , wherein the first program construct has a semantics comprising: a first program construct identifier, followed by a plurality of included program statements.
Claim 41
Dependent Claim 50 words
The tangible medium storing computer readable software of claim 37 , wherein the first program construct has a syntax comprising: a dataflow designation; a commencement designation and a termination designation following the dataflow designation; and the plurality of included program statements contained within the commencement designation and the termination designation.
Claim 42
Dependent Claim 48 words
The tangible medium storing computer readable software of claim 27 , wherein the fourth program construct has a semantics comprising: a fourth program construct identifier having a plurality of arguments, followed by program statements for expansion into a plurality of individual commands according to the plurality of arguments.
Claim 43
Independent Claim 481 words
A method for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions,, the method comprising: using a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block, the first program construct defined as a dataflow command for informing a compiler that included commands are for concurrent performance in parallel; using a second program construct of the plurality of program constructs to provide for data flow among the plurality of heterogeneous computational elements by using a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block, the second program construct further providing for automatic indexing of reference to the channel object, the channel object for providing a buffer for storing data, the second program construct further defined as a stream variable for referencing the channel object; using a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations, the third program construct defined as a state variable for maintaining a plurality of previous values of a variable after the variable has been assigned a plurality of current values; using a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time, the fourth program construct defined as an unroll command for transforming a loop operation into a predetermined plurality of individual executable operations; using a fifth program construct of the plurality of program constructs to provide array accessing, the fifth program construct defined as an iterator variable for accessing the array in a predetermined, fixed address pattern; using a sixth program construct of the plurality of program constructs to provide for a fixed number of loop iterations at run time, the sixth program construct defined as a loop command for informing a compiler that a plurality of included commands contain no branching to locations outside of the loop and that a plurality of loop conditions are fixed; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 44
Independent Claim 481 words
A method for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions,, the method comprising: using a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block, the first program construct defined as a dataflow command for informing a compiler that included commands are for concurrent performance in parallel; using a second program construct of the plurality of program constructs to provide for data flow among the plurality of heterogeneous computational elements by using a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block, the second program construct further providing for automatic indexing of reference to the channel object, the channel object for providing a buffer for storing data, the second program construct further defined as a stream variable for referencing the channel object; using a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations, the third program construct defined as a state variable for maintaining a plurality of previous values of a variable after the variable has been assigned a plurality of current values; using a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time, the fourth program construct defined as an unroll command for transforming a loop operation into a predetermined plurality of individual executable operations; using a fifth program construct of the plurality of program constructs to provide array accessing, the fifth program construct defined as an iterator variable for accessing the array in a predetermined, fixed address pattern; using a sixth program construct of the plurality of program constructs to provide for a fixed number of loop iterations at run time, the sixth program construct defined as a loop command for informing a compiler that a plurality of included commands contain no branching to locations outside of the loop and that a plurality of loop conditions are fixed; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 45
Dependent Claim 43 words
The method of claim 40 , wherein the channel object is a buffer instantiated with a declared data type and a size, and wherein the stream variable is declared with a buffer of a plurality of data items of a specified data type.
Claim 46
Dependent Claim 48 words
The method of claim 40 , wherein the fifth program construct is a declaration which includes a plurality of arguments, the plurality of arguments including an iteration level, an initial value of an index, an increment added to the index for a repeated iteration, and an index limit.
Claim 47
Dependent Claim 49 words
The method of claim 40 , wherein the first program construct has a semantics comprising: a first program construct identifier; a commencement designation and a termination designation following the first program construct identifier; and a plurality of included program statements contained within the commencement designation and the termination designation.
Claim 48
Dependent Claim 43 words
The method of claim 40 , wherein the fourth program construct has a semantics comprising: a fourth program construct identifier having a plurality of arguments, followed by program statements for expansion into a plurality of individual commands according to the plurality of arguments.
Claim 49
Dependent Claim 522 words
A tangible medium storing computer readable software for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions,, the tangible medium storing computer readable software comprising: a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block, the first program construct defined as a dataflow command for informing a compiler that included commands are for concurrent performance in parallel; a second program construct of the plurality of program constructs to provide for data flow among the plurality of heterogeneous computational elements by using a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block, the second program construct further providing for automatic indexing of reference to the channel object, the channel object for providing a buffer for storing data, the second program construct further defined as a stream variable for referencing the channel object, wherein the channel object is a buffer instantiated with a declared data type and a size, and wherein the stream variable is declared with a buffer of a plurality of data items of a specified data type; a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations, the third program construct defined as a state variable for maintaining a plurality of previous values of a variable after the variable has been assigned a plurality of current values; a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time, the fourth program construct defined as an unroll command for transforming a loop operation into a predetermined plurality of individual executable operations; a fifth program construct of the plurality of program constructs to provide array accessing, the fifth program construct defined as an iterator variable for accessing the array in a predetermined, fixed address pattern; a sixth program construct of the plurality of program constructs to provide for a fixed number of loop iterations at run time, the sixth program construct defined as a loop command for informing a compiler that a plurality of included commands contain no branching to locations outside of the loop and that a plurality of loop conditions are fixed; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 50
Dependent Claim 522 words
A tangible medium storing computer readable software for programming an adaptive computing integrated circuit for a plurality of functions, the adaptive computing integrated circuit having a plurality of heterogeneous computational elements, the plurality of heterogeneous computational elements capable of being configured and reconfigured for performance of the plurality of functions,, the tangible medium storing computer readable software comprising: a first program construct of a plurality of program constructs to provide for execution of a computational block in parallel by a subset of heterogeneous computational elements of the plurality of heterogeneous computational elements, wherein the first program construct is capable of being compiled, mapped and scheduled to select, and to provide configuration information to configure, the subset of heterogeneous computational elements for parallel execution of the computational block, the first program construct defined as a dataflow command for informing a compiler that included commands are for concurrent performance in parallel; a second program construct of the plurality of program constructs to provide for data flow among the plurality of heterogeneous computational elements by using a channel object having an output data stream from a data producing computational block and an input data stream to a data consuming computational block, the second program construct further providing for automatic indexing of reference to the channel object, the channel object for providing a buffer for storing data, the second program construct further defined as a stream variable for referencing the channel object, wherein the channel object is a buffer instantiated with a declared data type and a size, and wherein the stream variable is declared with a buffer of a plurality of data items of a specified data type; a third program construct of the plurality of program constructs for maintaining a previous value of a variable between process invocations, the third program construct defined as a state variable for maintaining a plurality of previous values of a variable after the variable has been assigned a plurality of current values; a fourth program construct of the plurality of program constructs to provide for iterations having a predetermined number of iterations at a compile time, the fourth program construct defined as an unroll command for transforming a loop operation into a predetermined plurality of individual executable operations; a fifth program construct of the plurality of program constructs to provide array accessing, the fifth program construct defined as an iterator variable for accessing the array in a predetermined, fixed address pattern; a sixth program construct of the plurality of program constructs to provide for a fixed number of loop iterations at run time, the sixth program construct defined as a loop command for informing a compiler that a plurality of included commands contain no branching to locations outside of the loop and that a plurality of loop conditions are fixed; and wherein the plurality of program constructs are capable of being compiled, mapped and scheduled to select one or more heterogeneous computational elements for performance of the plurality of functions, and further to provide configuration information to determine a plurality of configurations and reconfigurations of the plurality of heterogeneous computational elements for performance of the plurality of functions.
Claim 51
Dependent Claim 53 words
The tangible medium storing computer readable software of claim 45 , wherein the fifth program construct is a declaration which includes a plurality of arguments, the plurality of arguments including an iteration level, an initial value of an index, an increment added to the index for a repeated iteration, and an index limit.
Claim 52
Dependent Claim 92 words
The tangible medium storing computer readable software of claim 45 , wherein the first program construct has a semantics comprising: a first program construct identifier; a commencement designation and a termination designation following the first program construct identifier; and a plurality of included program statements contained within the commencement designation and the termination designation; and wherein the fourth program construct has a semantics comprising: a fourth program construct identifier having a plurality of arguments, followed by program statements for expansion into a plurality of individual commands according to the plurality of arguments.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2007-05-04 2007-11-03 2008-05-04 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2011-05-04 2011-11-03 2012-05-04 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2015-05-04 2015-11-03 2016-05-04 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag