1460933776-007d02d1-f757-4407-a18a-df8401d3966a

1-26. (canceled)
27. A method for atomic update for direct memory access of shared memory in a computer system, the method comprising:
responsive to a processor unit issuing a load and reserve direct memory access command to transfer an amount of data from a shared memory to a local store associated with the processor unit, loading an amount of data to a local store associated with the processor unit, wherein a location of the amount of data is specified by the load and reserve direct memory access command; and
making a reservation of the amount of data.
28. The method of claim 27, wherein the amount of data is a cache line and wherein loading the amount of data to the local store associated with the processor unit comprises:
if the amount of data is stored in an atomic cache associated with the processor unit, loading the amount of data from the atomic cache to the local store.
29. The method of claim 28, wherein loading the amount of data to the local store associated with the processor unit comprises:
if the amount of data is stored in an atomic cache associated with another processor unit, loading the amount of data from the atomic cache associated with the another processor unit to the local store.
30. The method of claim 28, wherein loading the amount of data to the local store associated with the processor unit further comprises:
if the amount of data is not stored in the atomic cache, loading the amount of data from the shared memory to the local store.
31. The method of claim 30, wherein the processor unit performs operations on the amount of data in the local store to form processed data, the method further comprising:
responsive to receiving a conditional store direct memory access command at the processor unit, determining whether the reservation still exists; and
if the reservation still exists, copying the processed data from the local store to the atomic cache.
32. The method of claim 31, further comprising:
releasing the reservation of the amount of data.
33. The method of claim 31, resetting the reservation responsive to a kill type snoop for an address that falls within the amount of data.
34. The method of claim 31, further comprising:
if the reservation does not still exist, retrying the load and reserve direct memory access command.
35. The method of claim 28, wherein the processor unit performs operations on the amount of data in the local store to form processed data, the method further comprising:
responsive to receiving an unconditional store direct memory access command at the processor unit, copying the processed data from the local store to the atomic cache.
36. The method of claim 35, further comprising:
releasing the reservation of the amount of data.
37. The method of claim 35, further comprising:
prior to copying the modified data from the local store to the atomic cache, determining that the cache line is not exclusive; and
invalidating the cache line for one or more other processor units in the computer system.
38. The method of claim 27, wherein the computer system is a single-chip heterogeneous computer system.
39. A method for atomic update for direct memory access of shared memory in a single-chip heterogeneous computer system, the method comprising:
responsive to a processor unit issuing a load and reserve direct memory access command to transfer an amount of data from a shared memory to a local store associated with the processor unit wherein the amount of data is a cache line, determining whether the amount of data is stored in an atomic cache associated with the processor unit;
if the amount of data is stored in an atomic cache associated with the processor unit, loading the amount of data from the atomic cache to the local store loading an amount of data to a local store associated with the processor unit, wherein a location of the amount of data is specified by the load and reserve direct memory access command;
if the amount of data is not stored in the atomic cache associated with the processor unit, loading the amount of data from the shared memory to the local store;
if the amount of data is stored in an atomic cache associated with another processor unit, loading the amount of data from the atomic cache associated with the another processor unit to the local store; and
making a reservation of the amount of data.
40. The method of claim 39, wherein the processor unit performs operations on the amount of data in the local store to form processed data, the method further comprising:
responsive to receiving a conditional store direct memory access command at the processor unit, determining whether the reservation still exists; and
if the reservation still exists, copying the processed data from the local store to the atomic cache.
41. The method of claim 40, further comprising:
releasing the reservation of the amount of data.
42. The method of claim 40, resetting the reservation responsive to a kill type snoop for an address that falls within the amount of data.
43. The method of claim 40, further comprising:
if the reservation does not still exist, retrying the load and reserve direct memory access command.
44. The method of claim 39, wherein the processor unit performs operations on the amount of data in the local store to form processed data, the method further comprising:
responsive to receiving an unconditional store direct memory access command at the processor unit, copying the processed data from the local store to the atomic cache.
45. The method of claim 44, further comprising:
releasing the reservation of the amount of data.
46. The method of claim 44, further comprising:
prior to copying the modified data from the local store to the atomic cache, determining that the cache line is not exclusive; and
invalidating the cache line for one or more other processor units in the computer system.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A method of providing a plurality of processes with access to data stored in a database, comprising:
copying the data from the database to a cache in shared memory, the shared memory being accessible by each process;
maintaining synchronicity between the database and the cache; and
providing each process with an Application Program Interface (API) containing instructions for accessing the data within the cache.
2. The method of claim 1 wherein copying the data from the database to the cache comprises:
structuring the cache so as to comprise:
for each table in the database, at least one linked list of data segments storing data from the table;
for each table in the database, a control segment storing an address of the first data segment in each linked list; and
a master segment storing an address for each control segment; and
copying data from each table into the respective at least one linked list in the cache.
3. The method of claim 1 wherein maintaining synchronicity between the database and the cache comprises rowlocking a portion of the data in the cache if a corresponding row and table in the database is deleted or modified until the deletion or modification in the database is verified, thereby preventing the processes from accessing the portion of the data while deletions or modifications in the database are being synchronized with the cache.
4. The method of claim 1 wherein maintaining synchronicity between the database and the cache comprises:
generating a message in response to each alteration of the database, the message identifying the table and the row being altered and identifying the type of alteration;
for each message for which the type of alteration is a deletion or a modification of a row, rowlocking a portion of the data in the cache corresponding to the row, thereby preventing the processes from accessing the portion of the data; and
for each message, modifying the cache based on the type of alteration specified by the message.
5. The method of claim 4 wherein modifying the cache based on the type of alteration comprises:
creating at least one worker thread, each worker thread assigned a task of modifying a portion of the cache;
creating a notification group object;
upon completion of each worker thread of its assigned task, destroying the notification group object; and
upon destruction of the notification group object, removing any rowlock for the portion of the cache identified by the message.
6. A cache for storing data from a database storing a plurality of tables, the cache having a data structure comprising:
for each table, at least one linked list of data segments storing data from the table;
for each table, a control segment storing an address of the first data segment in each linked list; and
a master segment storing an address for each control segment.
7. A method of providing job synchronization comprising, for each job:
dividing the job into a plurality of tasks;
grouping the tasks into at least one task group, each task group being a single operation for synchronization purposes and comprising at least one of the tasks;
executing each of the tasks on a worker thread belonging to a specific thread server pool; and
notifying all waiting client applications of completion of the job only upon completion of the last task of the job.