Method and system for configuring and using virtual pointers to access one or more independent address spaces
First Claim
1. A method of providing a plurality of large independent data access address spaces accessible within a software application program which efficiently make use of physical memory and or physical storage devices, the method comprising:
- (1) specifying the properties of one or more independent address spaces;
(2) processing computer program code source statements into an executable image suitable to run on a particular software engine and or hardware processor which supports virtual pointer functionality;
(3) running the executable image on the particular software engine or hardware processor which executes an instruction set that resolves accesses to data referenced by the address space by using a fast access limited size main memory and slower access but larger size secondary storage; and
(4) for each independent address space, creating, and maintaining a number of real memory pages; and
when accesses to data logically in the independent address space are made, resolving the access and returning a data value or pointer to main memory containing the data value to the instruction or program making the access, using a multiple step procedure for moving data between main memory pages and secondary storage.
5 Assignments
0 Petitions
Accused Products
Abstract
System, device, method, and computer program and computer program products for providing communicating between devices having similar or dissimilar characteristics and facilitating seamless interoperability between them. Computer program software and methods of and systems and devices for sharing of content, applications, resources and control across similar and dissimilar permanently or intermittently connected electronic devices. Devices, systems, appliances, and the like communicating and/or interoperating within the framework provided. Virtual pointers such as Dart VirtualPointers provide structure and method for providing a simple and efficient way to access and use of one or more independent data address spaces in a single program. Virtual pointers used by software programs can adapt their use of main memory and storage devices to run efficiently on devices with differing sizes and speeds of a fast but small main memory and larger but slower storage.
-
Citations
40 Claims
-
1. A method of providing a plurality of large independent data access address spaces accessible within a software application program which efficiently make use of physical memory and or physical storage devices, the method comprising:
-
(1) specifying the properties of one or more independent address spaces; (2) processing computer program code source statements into an executable image suitable to run on a particular software engine and or hardware processor which supports virtual pointer functionality; (3) running the executable image on the particular software engine or hardware processor which executes an instruction set that resolves accesses to data referenced by the address space by using a fast access limited size main memory and slower access but larger size secondary storage; and (4) for each independent address space, creating, and maintaining a number of real memory pages; and
when accesses to data logically in the independent address space are made, resolving the access and returning a data value or pointer to main memory containing the data value to the instruction or program making the access, using a multiple step procedure for moving data between main memory pages and secondary storage. - View Dependent Claims (2, 3, 8, 11, 12, 13, 14, 15, 16, 17, 18, 24, 25)
-
-
4. A method of providing a plurality of large independent data access address spaces accessible within a software application program which make use of physical memory and or physical storage devices, the method comprising:
-
specifying the properties of one or more independent address spaces; processing computer program code source statements into an executable image suitable to run on a particular software engine and or hardware processor which supports virtual pointer functionality; and running the executable image on the particular software engine or hardware processor which executes an instruction set that resolves accesses to data referenced by the address space by using a fast access limited size main memory and slower access but larger size secondary storage; and (1) for each independent address space, creating, and maintaining a number of real memory pages all of a single specific size; (2) when accesses to data logically in the independent address space are made, resolving the access and returning a value or pointer to main memory containing the value to the instruction or program making the access, using the following procedure; (a) determining if the data is in one of the main memory pages; (b) if the data is not in one of the main memory pages performing the following procedure; (i) determining if the data is in the secondary storage; (ii) if it is not in the secondary storage, perform one or more of the following procedures; (1) return a default value; (2) return with a pointer to a main memory data element that contains a default value; and (3) return with an access to unknown data code or other indicator that there is no known value for the data; (c) if the data is in the secondary storage, perform the following procedure; (i) selecting a real memory page and starting address that will hold the block of data that contains the data value needed; (ii) if the selected real memory page is marked as dirty then writing out or otherwise cause the values in the selected real memory page to be written to secondary storage; (iii) reading or otherwise loading the contiguous range of addressable data into the real memory page that is the size and has the same new starting address as the real memory page; (iv) mark the data in the real memory page as being not dirty; and (v) return the value of the data now in the selected main memory page or a pointer to the data now in the selected main memory page; and (d) if the data is in one of the main memory pages perform the following procedure; (i) if the access is known to be one that indicates that the consumer of the value may change the value of the data, mark the main memory page as dirty; and (ii) return the value of the data main memory page or a pointer to the data in the main memory page that is found to include the data. - View Dependent Claims (5, 6, 7, 9, 10, 19, 20, 21)
-
-
22. A computer program product for use in conjunction with a computer system or information appliance, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising:
-
a program module that directs the computer system or information appliance to function in a specified manner for providing a plurality of large independent data access address spaces accessible within a software application program which make use of physical memory and or physical storage devices, the program module including instructions for; (1) specifying the properties of one or more independent address spaces; (2) processing computer program code source statements into an executable image suitable to run on a particular software engine and or hardware processor which supports virtual pointer functionality; and (3) running the executable image on the particular software engine or hardware processor which executes an instruction set that resolves accesses to data referenced by the address space by using a fast access limited size main memory and slower access but larger size secondary storage; and (4) for each independent address space, creating, and maintaining a number of real memory pages; and
when accesses to data logically in the independent address space are made, resolving the access and returning a data value or pointer to main memory containing the data value to the instruction or program making the access, using a multiple step procedure for moving data between main memory pages and secondary storage.
-
-
23. A virtual pointer data structure, comprising:
-
a memory storage; a plurality of pointers stored in the memory storage; the pointers permitting specification and access to a plurality of large independent data access address spaces accessible within a software application program which make use of physical memory and physical storage devices; the pointers specifying the properties of one or more independent address spaces; and the pointers permitting resolution of access to data referenced by the address space by using a fast access limited size main memory and slower access but larger size secondary storage; wherein each virtual pointer is specified with a plurality of parameters including; (i) a name of a pointer variable that will hold the starting address of a virtual address space when a program using or referencing the virtual pointer starts execution; (ii) a suggested number of real memory pages for use; (iii) a binary flag indicating if values in the address space are to be automatically saved along with the application; and (iv) a suggested size of the real memory pages.
-
-
26. A method of providing a plurality of large independent data access address spaces accessible within an application program which makes use of physical memory and or physical storage devices, the method comprising:
-
(1) specifying at least one application program source language specified pointer variables that is to be mapped to an independent address space; (2) compiling the application program source to create compiled instructions where the specified pointer variables are accessed by specially encoded and formatted address fields of the compiled instructions generated by the compiler carrying out the specifying in the source code the compiler compiles; (3) running the compiled instructions on an instruction decoding engine which; (i) decodes the specially formatted address fields; and (ii) performs a intended read or write memory accesses using memory caching and paging to limit the number of read, write, and/or erase operations to a slower or limited read, write, and/or erase cycle secondary storage; and (4) automatically saving the values stored by the application program of all such independent address spaces as part of a single save instruction that is part of the instruction decoding engine into permanent secondary storage. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
-
-
40. A method for constructing an application program code that may reference a large independent data access address space within the application program and that eliminates any need to specify without the need for explicit file operations, explicit memory allocations, explicit memory management, or explicit saving of data, the method comprising:
-
(1) specifying an application program source language pointer variable that is to be mapped to an independent address space; (2) identifying a compiler that is configured to compile the application program source language to create compiled instructions in which the specified pointer variables refer to encoded and formatted address fields of the compiled instructions; (3) configuring the compiled instructions for decoding during execution so that the execution will (i) decode the specially formatted address fields; and
(ii) perform an intended read or write memory accesses using memory caching and paging to limit the number of read, write, and/or erase operations to a secondary storage; and(4) automatically saving the values stored by the application program of all such independent address spaces as part of a single save instruction that is part of the instruction decoding engine into permanent secondary storage.
-
Specification