Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

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.

InventorsRoger F. Dickey, Petr Pomkla, Andrew P. Dove
Original AssigneeNational Instruments Corporation
Primary Examiner: Wei Zhen
Secondary Examiner: Qamrun Nahar
Attorneys: Meyertons Hood Kivlin Kowert & Goetzel, P.C., Jeffrey C. Hood, Mark S. Williams
Current U.S. Classification717/106; 714/E11.207; 717/109; 717/110; 717/113

View patent at USPTO
Search USPTO Assignment Database
Download USPTO Public PAIR data

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US5247674May 13, 1991Sep 21, 1993Fujitsu LimitedStatic memory allocation system
US6078745Mar 27, 1998Jun 20, 2000Siemens AGMethod and apparatus for size optimization of storage units
US6437805Aug 18, 1998Aug 20, 2002National Instruments CorporationSystem and method for accessing object capabilities in a graphical program
US6738964Mar 10, 2000May 18, 2004Texas Instruments IncorporatedGraphical development system and method
US7210117Dec 20, 2000Apr 24, 2007National Instruments CorporationSystem and method for programmatically generating a graphical program in response to program information

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US7827523Feb 22, 2006Nov 2, 2010Yahoo! Inc.Query serving infrastructure providing flexible and expandable support and compiling instructions
US7921418Aug 15, 2006Apr 5, 2011International Business Machines CorporationCompile time evaluation of library functions
US7974825Dec 30, 2004Jul 5, 2011The MathWorks, Inc.Generation of code from a graphical model
US8135570Aug 20, 2007Mar 13, 2012The MathWorks, Inc.Generation of code from a graphical model
US8180991Mar 12, 2009May 15, 2012Cisco Technology, Inc.Adaptive memory allocation

Claims

1. 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.