Computing system for implementing a shared cache
AssigneeOracle Corporation
InventorJames E. Carey
Life of this patent
Estimating the term…
Abstract
In a multi-threaded computing environment, a shared cache system reduces the amount of redundant information stored in memory. A cache memory area provides both global readable data and private writable data to processing threads. A particular processing thread accesses data by first checking its private views of modified data and then its global views of read-only data. Uncached data is read into a cache buffer for global access. If write access is required by the processing thread, the data is copied into a new cache buffer, which is assigned to the processing thread's private view. The particular shared cache system supports generational views of data. The system is particularly useful in on-line analytical processing of multi-dimensional databases.
Claims64
An apparatus for simultaneously analyzing data stored in a common system memory by multiple data accessors in a computer comprising:
- public blocks of a shared memory space, the public blocks storing data retrieved from storage therein for global read-only access by a plurality of user accessors;
- private blocks of the shared memory space, each private block storing data therein for private read and write access by a single user accessor, the stored data including data selectively copied from public blocks of data;
- a read operation to provide read access to a data item by a user accessor, the read operation reading the data item if present from a private block accessible by the user accessor, and if the data item is not present on a private block accessible from the user accessor, reading the data item from a public block;
- and
- a write operation to provide write access to the data item by the user accessor, the write operation writing the data item to a private block so that a modification to the data item is not communicated to the other user accessors wherein the first and second accessors select each memory block from a list of free memory blocks;
- and
- a flusher executing in the computer, the flusher maintaining the list of free memory blocks by freeing unused allocated memory blocks in response to a triggering event.
An apparatus for managing a common system memory for a plurality of data accessors in a computer comprising:
- a plurality of memory blocks in the memory, a first memory block and a second memory block having data stored therein;
- a first data accessor executing in the memory, the first data accessor having a non-modifiable global view of the first memory block data;
- a second data accessor executing in the memory, the second data accessor having a non-modifiable global view of the first memory block data and a modifiable private view of the second memory block data, if the data is to be modified by the second data accessor, so that a modification to the second memory block data by the second data accessor is not communicated to the first data accessor wherein the first and second accessors select each memory block from a list of free memory blocks;
- and
- a flusher executing in the computer, the flusher maintaining the list of free memory blocks by freeing unused allocated memory blocks in response to a triggering event.
A method of managing memory for a plurality of data accessors in a computer having a plurality of memory blocks in a common system memory, comprising:
- storing data in a first memory block;
- assigning a non-modifiable global view of the first memory block data to a first data accessor and a second data accessor in the computer;
- copying the data from the first memory block to a second memory block if the data is to be modified by the second data accessor without regard to the existence of the data in any other memory block;
- assigning a modifiable private view of the second memory block data to the second data accessor in the computer so that a modification to the second memory block data by the second data accessor is not communicated to the first data accessor;
- selecting each memory block from a list of free memory blocks;
- and
- maintaining the list of free memory blocks by triggering a flusher to free unused allocated memory blocks in response to a triggering event.
A method of simultaneously analyzing data stored in a common system memory by multiple data accessors in a computer, comprising:
- retrieving data from storage into public blocks of a shared memory space, the public blocks storing data therein for global read-only access by a plurality of user accessors;
- selectively copying public blocks of data into private blocks of the shared memory space, each private block storing data therein for private read and write access by a single user accessor without regard to the existence of the data by any other memory block;
- upon read access to a data item by a user accsessor, reading the data item if present from a private block accessible by the user accessor, and if the data item is not present on a private block accessible by the user accessor, reading the data item from a public block;
- upon write access to the data item by the user accessor, writing the data item to a private block without communicating any modification to another user accessor;
- selecting each memory block from a list of free memory blocks;
- and
- maintaining the list of free memory blocks by triggering a flusher to free unused allocated memory blocks in response to a triggering event.
An article of manufacture comprising:
- a computer-readable medium;
- a computer-implementable program stored in the computer-readable medium for execution by a computer, the program including:
- storing data in a first memory block in a common system memory;
- assigning a non-modifiable global view of the first memory block data to a first data accessor and a second data accessor in the computer;
- copying the data from the first memory block to a second memory block in the common system memory if the data is to be modified by the second data accessor, without regard to the existence of the data in any other memory block;
- assigning a modifiable private view of the second memory block data to the second data accessor in the computer so that a modification to the second memory block data by the second data accessor is not communicated to the first data accessor;
- selecting each memory block from a list of free memory blocks;
- and
- maintaining the list of free memory blocks by triggering a flusher to free unused allocated memory blocks in response to a triggering event.
An article of manufacture comprising:
- a computer-readable medium;
- a computer-implemented program in the computer-readable medium for execution by a computer for simultaneously analyzing data stored in a common system memory by multiple data accessors in a computer, the program comprising:
- retrieving data from storage in to public blocks of a shared memory space, the public blocks storing data therein for global read-only access by a plurality of user accessors;
- selectively copying public blocks of data into private blocks of the shared memory space, each private block storing data therein for private read and write access by a single user accessor without regard to the existence of the data in any other memory block;
- upon read access to a data item by a user accessor, reading the data item if present from a private block accessible by the user accessor, and if the data item is not present to a private block accessible by the user accessor, reading the data item from a public block;
- upon write access to a data item by the user accessor, writing the data item to a private block without communicating any modification to the data to another user accessor;
- selecting each memory block from a list of free memory blocks;
- and
- maintaining the list of free memory blocks by triggering a flusher to free unused allocated memory blocks in response to a triggering event.
Dependencies are inferred from the claim text.