System and method for static memory allocation (SMA) in a graphical programming system. A graphical program (GP) may be created in response to user input, comprising nodes interconnected by wires for inter-node communication, which visually indicates functionality of the program, and includes a plurality of data elements. The GP is programmatically analyzed to determine: memory requirements for each of the data elements, and one or more subsets of the data elements that can share a memory block, e.g., by traversing the GP to determine one or more static paths, each comprising a path of wire along which a single statically allocated memory block can be used. One or more SMAs are programmatically included in the GP in response, executable to statically allocate a shared memory block for each subset. The GP may be executed, including executing the SMAs to statically allocate the shared memory blocks for each of the subsets. |
Citations|
| US5247674 | May 13, 1991 | Sep 21, 1993 | Fujitsu Limited | Static memory allocation system | | US6078745 | Mar 27, 1998 | Jun 20, 2000 | Siemens AG | Method and apparatus for size optimization of storage units | | US6437805 | Aug 18, 1998 | Aug 20, 2002 | National Instruments Corporation | System and method for accessing object capabilities in a graphical program | | US6738964 | Mar 10, 2000 | May 18, 2004 | Texas Instruments Incorporated | Graphical development system and method | | US7210117 | Dec 20, 2000 | Apr 24, 2007 | National Instruments Corporation | System and method for programmatically generating a graphical program in response to program information |
Referenced by|
| US7827523 | Feb 22, 2006 | Nov 2, 2010 | Yahoo! Inc. | Query serving infrastructure providing flexible and expandable support and compiling instructions | | US7921418 | Aug 15, 2006 | Apr 5, 2011 | International Business Machines Corporation | Compile time evaluation of library functions | | US7974825 | Dec 30, 2004 | Jul 5, 2011 | The MathWorks, Inc. | Generation of code from a graphical model | | US8135570 | Aug 20, 2007 | Mar 13, 2012 | The MathWorks, Inc. | Generation of code from a graphical model | | US8180991 | Mar 12, 2009 | May 15, 2012 | Cisco Technology, Inc. | Adaptive memory allocation |
Claims1. A memory medium comprising program instructions implementing a graphical program development environment, wherein the program instructions are executable by a processor to perform: - creating a graphical program in response to user input, wherein the graphical program comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program, and wherein the graphical program comprises a plurality of data elements;
- analyzing the graphical program, comprising:
- determining memory requirements for each of the plurality of data elements; and
- determining one or more subsets of the plurality of data elements that can share a memory block; and
- including one or more static memory allocations in the graphical program in response to said analysis, wherein the one or more static memory allocations are executable to statically allocate shared memory blocks for each of the one or more subsets of data elements.
2. The memory medium of claim 1, wherein the plurality of interconnected nodes are interconnected by wires operable to communicate data between the nodes, and wherein said determining one or more subsets of the plurality of data elements that can share a memory block comprises: - traversing the graphical program to determine one or more static paths, wherein each static path comprises a path of wire along which a single statically allocated block of memory can be used.
3. The memory medium of claim 1, wherein said analyzing the graphical program further comprises: - prior to said determining memory requirements, determining if any of the data elements require dynamic memory allocation; and
- if said analyzing determines that dynamic memory is required, indicating an error.
4. The memory medium of claim 1, - wherein the graphical program comprises one or more graphical sub-programs, each comprising a respective plurality of interconnected nodes which visually indicate functionality of the graphical sub-program, and wherein each graphical sub-program comprises a respective plurality of data elements; and
- wherein said analyzing the graphical program comprises analyzing the one or more graphical sub-programs; and
- wherein at least one of the one or more subsets of the plurality of data elements comprises data elements from:
- the graphical program and at least one of the one or more graphical sub-programs; or
- wherein the one or more graphical sub-programs comprise a plurality of graphical sub-programs, at least two of the plurality of graphical sub-programs.
5. The memory medium of claim 1, wherein the program instructions are further executable to perform: - executing the graphical program, wherein said executing comprises:
- executing the one or more static memory allocations in the graphical program to statically allocate the shared memory blocks for each of the one or more subsets of data elements.
6. The memory medium of claim 1, wherein the program instructions are further executable to perform: - generating executable code based on the graphical program; and
- executing the executable code, wherein said executing comprises:
- executing the one or more static memory allocations in the graphical program to statically allocate the shared memory blocks for each of the one or more subsets of data elements.
7. The memory medium of claim 6, wherein said generating executable code based on the graphical program comprises: - generating text-based source code based on the graphical program; and
- compiling the text-based source code to generate the executable code.
8. The memory medium of claim 1, wherein said including one or more static memory allocations in the graphical program comprises: - generating program instructions that are executable to generate the one or more static memory allocations; and
- executing the program instructions to generate the one or more static memory allocations.
9. The memory medium of claim 1, wherein the program instructions are further executable to perform: - displaying a graphical user interface (GUI), wherein the GUI is operable to receive user input specifying said analyzing the graphical program, and said including one or more static memory allocations in the graphical program; and
- receiving the user input specifying said analyzing the graphical program, and said including one or more static memory allocations in the graphical program, wherein said analyzing the graphical program, and said including one or more static memory allocations in the graphical program are performed in accordance with said user input.
10. The memory medium of claim 9, wherein the user input specifies one or more of: - build options;
- debug options;
- memory options; and
- run-time options.
11. The memory medium of claim 9, wherein the GUI is comprised in a project manager, wherein the GUI is further operable to receive user input specifying one or more of: - an execution target for the graphical program;
- invocation of one or more of:
- a build process for the graphical program;
- a run process for the graphical program; and
- a debug process for the graphical program.
12. The memory medium of claim 11, wherein the execution target for the graphical program comprises one or more of: - an embedded device;
- a programmable hardware element; and
- a computer.
13. The memory medium of claim 1, wherein said creating the graphical program comprises: - arranging a plurality of nodes on a display; and
- interconnecting the plurality of nodes in response to user input.
14. The memory medium of claim 1, - wherein the graphical program comprises a block diagram portion and a user interface portion.
15. The memory medium of claim 1, - wherein the graphical program comprises a graphical data flow program.
16. The memory medium of claim 1, - wherein the graphical program is operable to perform one or more of:
- an industrial automation function;
- a process control function;
- a test and measurement function.
17. The memory medium of claim 16, - wherein, during execution of the graphical program, the graphical user interface is displayed on a display of a first computer system and the block diagram executes on a second computer system.
18. A method for allocating static memory for a graphical program, comprising: - creating a graphical program in response to user input, wherein the graphical program comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program, and wherein the graphical program comprises a plurality of data elements;
- programmatically analyzing the graphical program, comprising:
- determining memory requirements for each of the plurality of data elements; and
- determining one or more subsets of the plurality of data elements that can share a memory block; and
- programmatically including one or more static memory allocations in the graphical program in response to said analysis, wherein the one or more static memory allocations are executable to statically allocate shared memory blocks for each of the one or more subsets of data elements.
19. A system for allocating static memory for a graphical program, the system comprising: - a processor; and
- a memory medium, coupled to the processor, wherein the memory medium stores program instructions implementing a graphical program development environment, wherein the program instructions are executable by the processor to:
- create a graphical program in response to user input, wherein the graphical program comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program, and wherein the graphical program comprises a plurality of data elements;
- analyze the graphical program, wherein, in analyzing the graphical program, the program instructions are executable to:
- determine memory requirements for each of the plurality of data elements; and
- determine one or more subsets of the plurality of data elements that can share a memory block; and
- include one or more static memory allocations in the graphical program in response to said analysis, wherein the one or more static memory allocations are executable to statically allocate shared memory blocks for each of the one or more subsets of data elements.
20. A system for allocating static memory for a graphical program, comprising: - means for creating a graphical program in response to user input, wherein the graphical program comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program, and wherein the graphical program comprises a plurality of data elements;
- means for programmatically analyzing the graphical program, comprising:
- means for determining memory requirements for each of the plurality of data elements; and
- means for determining one or more subsets of the plurality of data elements that can share a memory block; and
- means for programmatically including one or more static memory allocations in the graphical program in response to said analysis, wherein the one or more static memory allocations are executable to statically allocate shared memory blocks for each of the one or more subsets of data elements.
|