Optimized approach to parallelize writing to a shared memory resource
Summary by NHIP
Parallel Shared Memory Writing
The method reduces contention by calculating required space for multiple tasks before writing data in parallel to a shared memory resource. Each task updates an expected end marker after acquiring a lock, while associated flags transition from incomplete to complete states.
Claim Score by NHIP
Abstract
Reducing contentions between processes or tasks that are trying to access shared resources is described herein. According to embodiments of the invention, a method of writing a set of data associated with a task to a memory resource is provided. The method includes calculating the amount of memory required to write said data to the memory resource and updating an expected end marker to reflect the amount of memory required to write the data to the memory resource. A flag is then set to an incomplete state, and the data is written to the memory resource. The flag can be set to a complete state and an end marker is updated. The end marker indicates the end of the data stored in the memory resource.

Term
6.3 yearsleft in the term
Expires 8 January 2033, including 375 days of term adjustment.
- Priority and filed
- Granted
- Today
- Expires
22 claims: 4 independent, 18 dependent
- 1A method of reducing contention between a plurality of tasks attempting to simultaneously write data to a memory resource in a computer system, wherein the memory resource includes an end marker that indicates an end of data stored in the memory resource, the method comprising:calculating space required in the memory resource to write a first set of data associated with a first task;updating an expected end marker to reflect space required to store the first set of data;calculating space required in the memory resource to write a second set of data associated with a second task;updating the expected end marker to reflect space required to store the second set of data;writing the first and second sets of data to the memory resource in parallel;and updating the end marker.
- 10Broadest claimClaim Score 73, broad(NHIP)A method of writing a set of data associated with a task to a memory resource, said method comprising:calculating an amount of memory required to write the set of data to the memory resource;updating an expected end marker to reflect the amount of memory required to write the set of data to the memory resource;setting a flag to an incomplete state;writing the set of data to the memory resource;setting the flag to a complete state;and updating an end marker, the end marker indicating an end of the set of data stored in the memory resource.
- 15A computer readable medium containing instructions that, when executed by a computer, cause the computer to:calculate an amount of memory required to write a set of data associated with a task to a memory resource;update an expected end marker to reflect the amount of memory required to write the set of data to the memory resource;set a flag to an incomplete state;write the set of data to the memory resource;set the flag to a complete state;and update an end marker, the end marker indicating the end of the data stored in the memory resource.
- 19A computer system comprising:a memory resource;and a processor, wherein said processor is configured to: calculate an amount of memory required to write a set of data associated with a task to a memory resource;update an expected end marker to reflect the amount of memory required to write the set of data to the memory resource;set a flag to an incomplete state;write the set of data to the memory resource;set the flag to a complete state;and update an end marker, the end marker indicating an end of the set of data stored in the memory resource.
Independent claims4
59 paragraphs in 4 sections, as filed
BACKGROUND OF THE INVENTION
p-00021. Field of the Invention
p-0003The invention relates generally to database systems and more specifically to optimizing the way multiple tasks can write data to a shared memory by allowing them to do so in parallel.
p-00042. Related Art
p-0005Modern computer systems frequently employ numerous shared resources that can be used by multiple tasks being performed by the computer system. Frequently, and for various reasons, it is desirable for some of the shared resources to only be used by one task at a time. For instance, in database systems, a common type of shared resource is memory. Limiting the use of the memory to one task at a time helps to maintain the integrity of the data stored therein. Accordingly, under such a scheme, when two tasks want to write to the memory, a second task must sometimes wait for a first task to complete using the memory resource in order to use the memory resource itself. This kind of situation—one where a task must wait for another task to finish using a resource in order to use it itself—is referred to as a contention.
p-0006Contentions, while the result of necessary safeguards, can have a number of negative effects on the operation of a computer system. For instance, a system that experiences too many contentions of the kind described above can have greatly reduced throughput, which can result in slower than optimal operation of a database system. Thus, there exists a need in the art for systems and methods that reduce or minimize the occurrence of contentions, but that still guarantee data integrity.
BRIEF SUMMARY OF THE INVENTION
p-0007Embodiments of the invention include systems, methods, computer-readable media, and program products that facilitate reducing or minimizing the number of contentions between a plurality of tasks attempting to use a shared resource simultaneously. For instance, according to some embodiments of the invention, a method of reducing contention between a plurality of tasks attempting to simultaneously write data to a memory resource in a computer system is presented. According to aspects of the invention, the memory resource can include an end marker that indicates an end of the data stored in the memory resource. According to the method, the space required in the memory resource to write a first set of data associated with the first task is calculated. An expected end marker is then updated to reflect the space required to store the first set of data. Additionally, the space required to write a second set of data to the memory resource is calculated and the expected end marker is updated based on the current expected end marker to reflect the space required to store the second set of data. The first and second sets of data can then be written to the memory resource in parallel and an end marker updated.
p-0008According to embodiments of the invention, a method of writing a set of data associated with a task to a memory resource is provided. The method includes calculating the amount of memory required to write said data to the memory resource and to update an expected end marker to reflect the amount of memory required to write the data to the memory resource. A flag is then set to an incomplete state, and the data is written to the memory resource. The flag can be set to a complete state and an end marker is updated after the data is written to the memory resource. The end marker indicates the end of the data stored in the memory resource.
p-0009According to embodiments of the invention, a computer readable medium containing instructions is provided. The instructions, when executed by a computer, cause the computer to calculate the amount of memory required to write said data to the memory resource and update an expected end marker to reflect the amount of memory required to write the data to the memory resource. The instructions cause the computer to set a flag to an incomplete state, and write the data to the memory resource. The computer can set the flag to a complete state and update an end marker. The end marker indicates the end of the data stored in the memory resource.
p-0010According to embodiments of the invention, a computer system is provided. The computer system includes a computer resource and a processor. The processor is configured to calculate the amount of memory required to write said data to the memory resource and update an expected end marker to reflect the amount of memory required to write the data to the memory resource. The processor can set a flag to an incomplete state, and write the data to the memory resource. The processor can set the flag to a complete state and update an end marker after writing the data to the memory resource. The end marker indicates the end of the data stored in the memory resource.
p-0011Further features and advantages of the invention, as well as the structure and operation of various embodiments of the invention, are described in detail below with reference to the accompanying drawings. It is noted that the invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to a person skilled in the relevant art(s) based on the teachings contained herein.
BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES
p-0012<figref idrefs="DRAWINGS">FIG. 1</figref> depicts a generic memory resource according to embodiments of the invention.
p-0013<figref idrefs="DRAWINGS">FIGS. 2A-2E</figref> depict a process of writing data from multiple tasks to a memory resource according to embodiments of the invention.
p-0014<figref idrefs="DRAWINGS">FIGS. 3A-3F</figref> depict a process of writing data from multiple tasks to a memory resource according to embodiments of the invention.
p-0015<figref idrefs="DRAWINGS">FIG. 4</figref> is a flow chart depicting a method of writing data to a shared memory resource according to embodiments of the invention.
p-0016<figref idrefs="DRAWINGS">FIGS. 5A-5I</figref> depict a process of writing data from multiple tasks to a memory resource according to embodiments of the invention.
p-0017<figref idrefs="DRAWINGS">FIG. 6</figref> is a flow chart depicting a method of writing data to a shared memory resource according to embodiments of the invention.
p-0018<figref idrefs="DRAWINGS">FIG. 7</figref> is a flow chart depicting a method up updating an end marker according to embodiments of the invention.
p-0019<figref idrefs="DRAWINGS">FIG. 8</figref> is a functional block diagram of a computer system according to embodiments of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
p-0020The following detailed description of the present invention refers to the accompanying drawings that illustrate exemplary embodiments consistent with this invention. Other embodiments are possible, and modifications can be made to the embodiments within the spirit and scope of the invention. Therefore, the detailed description is not meant to limit the invention. Rather, the scope of the invention is defined by the appended claims.
p-0021The invention will be described within the context of a database system. However, a person of ordinary skill in the art would not understand the invention to be limited to database systems. Instead, the invention is applicable to any number of possible systems such as standard computer systems, distributed computer systems, or any systems that share common resources, to name a few.
p-0022In database systems, increasing throughput is very desirable. A number of aspects of a database system can be changed or improved upon to increase throughput. For instance, many technologies leverage improved hardware with more computing power in order to increase throughput. However, these kinds of hardware improvements can only increase throughput up to a certain limit due to limitations imposed by the software schemes they use.
p-0023For instance, contentions pose a problem with regard to increasing throughput. Contentions arise when two tasks wish to use a shared resource that has a lock or semaphore associated with it. As an example, a situation might arise where two tasks, task 1 and task 2, both wish to write to a shared memory. In order to prevent the second task from attempting to write to the same memory addresses as the first task, shared memory will typically have a marker that indicates the end of the data currently being written. When a task writes to the memory, it “locks” the marker so that no other task can alter it and holds the lock until it has fully written the data. Once the data has been written, the task updates the marker to indicate the address at the end of the data that has been written and unlocks the marker. While this scheme is necessary to keep the second task from over-writing or attempting to write into the same portion of memory as the first task, it reduces throughput because the second task must wait for the first task to finish the relatively time-consuming exercise of writing before it can write its own data to the shared memory.
p-0024By way of example, this phenomenon occurs in some implementations of the Adaptive Server® Enterprise (ASE) system from Sybase®. Every task running in the ASE system has a private log cache (PLC) that is used to buffer the new log records generated before writing them to a shared transaction log. When log records are “flushed” from the PLC and written to the transaction log, they are always appended to the transaction log. From time to time, however, multiple tasks want to flush their PLCs to the transaction log at the same time. Dealing with this eventuality requires synchronization amongst the tasks writing to the transaction log.
p-0025In an embodiment, synchronization between multiple simultaneous tasks attempting to flush their PLC to the transaction log is achieved using something called the append log semaphore. Any task attempting to flush its PLC will “hold” the semaphore. When a subsequent task attempts to acquire the semaphore while it is being held by a first task, it must wait (e.g., sleep) until the task holding the semaphore relinquishes it. Thus, there is a contention in the ASE system. This situation is explained, below, with reference to the figures.
p-0026<figref idrefs="DRAWINGS">FIG. 1</figref> depicts a shared memory resource <b>100</b>, such as the transaction log, described above. A person of ordinary skill in the art would recognize that the shared memory resource <b>100</b> could comprise any number of suitable memory devices such as magnetic disk drives, optical disk drives, ROM, RAM, Flash memory, etc. The shared memory resource depicted in <figref idrefs="DRAWINGS">FIG. 1</figref> comprises a portion <b>102</b> to which data has been written and a portion <b>104</b>, which is free. Marker <b>106</b> indicates the end of the written data on the shared memory resource.
p-0027<figref idrefs="DRAWINGS">FIGS. 2A-2E</figref> depict a sequential process of writing data from several tasks to the shared memory resource <b>100</b> that results in contention. As shown in <figref idrefs="DRAWINGS">FIG. 2A</figref>, tasks A, B, C, and D have data <b>202</b>, <b>204</b>, <b>206</b>, and <b>208</b> (e.g., PLCs) that they seek to append to the shared memory <b>100</b> after the end data marker <b>106</b>. First, task A writes the data <b>202</b> to memory position <b>210</b> and updates the end of data marker <b>106</b> to reflect the new position of the end of the data, as is shown in <figref idrefs="DRAWINGS">FIG. 2B</figref>. At this point, tasks B, C, and D must wait to write their data to the shared memory resource <b>100</b>.
p-0028In <figref idrefs="DRAWINGS">FIG. 2C</figref> task A has completed flushing its data, so task B can now flush its data <b>204</b> to the shared memory <b>100</b> at memory position <b>212</b>. Tasks C and D must wait. Once task B has fully written the required data, the end marker <b>106</b> can be updated to reflect the new end after task B has written its data.
p-0029Once task B is finished writing its data <b>204</b>, task C can flush its data <b>206</b> to the shared memory <b>100</b>. This is shown in <figref idrefs="DRAWINGS">FIG. 2D</figref>. Again, the end maker <b>106</b> is updated to reflect the new end of the written data. Finally, once all the other tasks have written their data to the shared memory <b>100</b>, task D can write its data <b>208</b> to the shared memory device <b>100</b> at memory location <b>216</b> and update the end marker <b>106</b>, as shown in <figref idrefs="DRAWINGS">FIG. 2E</figref>.
p-0030The advantage of the sequential method described above is that data integrity is maintained; no task overwrites the data of any other task. However, there is also a problem with the sequential method of writing data to the shared memory <b>100</b> in that the tasks must wait for the previous one in order to write its data—i.e., there is contention. A better method would reduce this contention by allowing the tasks to write their data to the memory <b>100</b> in parallel while still maintaining the integrity of the data. Such a method is depicted in <figref idrefs="DRAWINGS">FIGS. 3A-3F</figref>.
p-0031<figref idrefs="DRAWINGS">FIGS. 3A-3F</figref> depict a parallel process for writing data to a shared memory resource according to embodiments of the present invention. As shown in <figref idrefs="DRAWINGS">FIGS. 3A-3F</figref>, tasks A, B, C, and D each seek to write their data <b>302</b>, <b>304</b>, <b>306</b>, and <b>308</b> to the shared memory <b>100</b>. End marker <b>318</b> marks the last portion of the shared up to which space has been reserved to write data in the memory.
p-0032In contrast to the process depicted in <figref idrefs="DRAWINGS">FIGS. 2A-2E</figref>, in the process of <figref idrefs="DRAWINGS">FIGS. 3A-3F</figref>, the tasks reserve the space to which they will write their data prior to writing it. As shown in <figref idrefs="DRAWINGS">FIG. 3B</figref>, task A can calculate the space required to store data <b>302</b> and reserve an appropriate amount of space for its data at memory location <b>310</b> by updating the end marker <b>318</b> to reflect the size of the required space. This allows the next task, task B, to similarly calculate the space it requires and reserve memory location <b>312</b> and update the marker <b>318</b>, as shown in <figref idrefs="DRAWINGS">FIG. 3C</figref>. Next, tasks C and D can calculate the space required for their data <b>306</b> and <b>308</b> and reserve their corresponding memory locations <b>314</b> and <b>316</b> and update the marker <b>318</b>, as appropriate, as shown in <figref idrefs="DRAWINGS">FIGS. 3D and 3E</figref>, respectively. As depicted in <figref idrefs="DRAWINGS">FIG. 3F</figref>, all of the tasks can then write to the shared memory resource <b>100</b> in parallel (although it need not occur in parallel, or entirely in parallel). According to embodiments of the invention, each of the tasks begins writing data as soon as it has finished calculating the amount of space it requires and updating the end marker. By employing such a method, contention is reduced because each task must only wait for the previous task or tasks to update the end marker instead of waiting the comparably longer time for the tasks to completely write their data.
p-0033The method that the individual tasks follow in order to facilitate flushing or writing data to the shared memory resource <b>100</b> discussed above can be better understood with reference to <figref idrefs="DRAWINGS">FIG. 4</figref>. <figref idrefs="DRAWINGS">FIG. 4</figref> is a flowchart that graphically depicts a method <b>400</b> of writing two sets of data, each associated with a task, to a shared memory according to embodiments of the present invention.
p-0034At step <b>402</b>, the first task calculates the space required to write the first set of data to the shared memory. It next acquires a lock on the end marker at step <b>404</b>. Once the lock has been acquired, the first task reserves the required space on the shared memory by setting the end marker to the appropriate value at step <b>406</b>. At step <b>408</b>, the first task releases the lock on the end marker. At step <b>410</b>, the second task calculates the space required to write the second set of data to the shared memory. It next acquires a lock on the end marker at step <b>412</b> and then reserves the required space by setting the end marker to the appropriate value at step <b>414</b>. The lock on the end marker by the second task is then released at step <b>416</b>. Both of the first and second sets of data can then be written in parallel to the shared memory resource <b>100</b> at step <b>418</b>. According to some embodiments of the present invention, each task begins writing its data to the shared memory resource upon reserving space in the shared memory resource for its data (more particularly, each task can write to the shared memory resource <b>100</b> as soon as such task has set the end marker in step <b>406</b> and <b>414</b>, respectively).
p-0035As noted above, the technique described with respect to <figref idrefs="DRAWINGS">FIGS. 3A-3F</figref> and <b>4</b> increases throughput by decreasing contention because each of the tasks only has to wait for a relatively short time before writing data to the shared memory <b>100</b> instead of waiting until each previous task is complete. In certain situations, however, an issue with data integrity can arise. For example, when a second task finishes writing its data to the shared memory before a first task, a “hole” of unwritten data in the shared memory will be present between the end of the previously written data and the beginning of the data written by the second task. To address this situation, the process depicted in <figref idrefs="DRAWINGS">FIGS. 3A-3F</figref> can be modified, according to embodiments of the invention. This modification is depicted in <figref idrefs="DRAWINGS">FIGS. 5A-5I</figref> and <b>6</b>.
p-0036As was the case above, <figref idrefs="DRAWINGS">FIGS. 5A-5I</figref> depict a scenario where tasks A, B, C, and D each need to write data <b>502</b>, <b>504</b>, <b>506</b>, and <b>508</b> to shared memory <b>100</b>. The shared memory <b>100</b> includes a portion <b>102</b> to which data has already been written and a portion <b>104</b> that is unwritten. Marker <b>518</b> indicates the end of the continuous written data. The memory locations before the marker <b>518</b> are written fully without holes. The memory locations after the marker are either entirely unwritten or they contain holes. Since marker <b>518</b> cannot have any holes before it, it is necessary to introduce a second marker <b>522</b> in order to facilitate tasks reserving their memory locations prior to writing their data to the shared memory. The second marker <b>522</b> indicates the expected end of the written data in the shared memory once all of the tasks have completed writing to the shared memory.
p-0037As shown in <figref idrefs="DRAWINGS">FIG. 5B</figref>, task A calculates the amount of memory it will require and reserves an appropriate amount of memory at location <b>510</b> by updating a second marker <b>522</b>, which indicates the expected end of the data after task A has completed writing data <b>502</b> to memory location <b>510</b>. Additionally, task A writes the value of end of address of the end of the data it has reserved into a data structure <b>520</b>. In this case, the end address is shown in (page number, offset) format at entry <b>520</b>A in data structure. By way of example, assume that second marker <b>522</b> is initially set to page 100, offset 0. <figref idrefs="DRAWINGS">FIG. 5B</figref> depicts task A as reserving up to page 100, offset 10. Additionally, a flag is set to FALSE in order to indicate that data <b>502</b> has not been completely written to memory location <b>510</b>.
p-0038In <figref idrefs="DRAWINGS">FIG. 5C</figref>, task B similarly calculates the space it will require and reserves memory location <b>512</b> for its data <b>504</b> and updates the second marker <b>522</b> to reflect the end of data after data <b>506</b> has been written to memory location <b>514</b>. Again, task B writes the memory location of the expected end of its data to data structure <b>520</b> at <b>520</b>B and sets a flag to FALSE. In this example, <b>520</b>B is written to indicate that the end of memory location <b>512</b> will be page 100, offset 30. <figref idrefs="DRAWINGS">FIG. 5D</figref> depicts task C calculating the required space and reserving memory location <b>514</b> by updating the second marker <b>522</b> and adding the end of its data to data structure <b>520</b> at <b>520</b>C. Task C's associated flag is also set to FALSE. <b>520</b>C, in this example, indicates that the end of memory location <b>514</b> is at page 115, offset 5. In <figref idrefs="DRAWINGS">FIG. 5E</figref>, the memory location <b>516</b> is reserved for data <b>508</b> by task D and the second marker <b>522</b> is updated. Data structure <b>520</b> is also updated to reflect the end of the reserved memory location <b>516</b> and to set the flag to FALSE. <b>5201</b>), in this example, indicates that the end of memory location <b>516</b> is page 125, offset 10.
p-0039The tasks proceed with writing their data to the shared memory <b>100</b>. According to embodiments of the invention, when a task completes writing its data, it then sets its flag to TRUE in order to indicate that the memory write is complete. This is depicted in <figref idrefs="DRAWINGS">FIG. 5F</figref>, which shows that task D has completed writing its data <b>508</b> to memory location <b>516</b>. Accordingly, it sets its flag stored at location <b>520</b>D in data structure <b>520</b> to TRUE in order to indicate that the writing is complete. At this point, there is a “hole” in the shared memory <b>100</b> comprising memory locations <b>510</b>, <b>512</b>, and <b>514</b>. Accordingly, the end marker remains at its location prior to memory location <b>510</b>.
p-0040<figref idrefs="DRAWINGS">FIG. 5G</figref> depicts the shared memory <b>100</b> after task C has completed writing its data <b>506</b> to memory location <b>514</b>. Again, it has updated its flag at <b>520</b>C in data structure <b>520</b> to TRUE to indicate that the memory write is complete. Because a hole comprising memory locations <b>510</b> and <b>512</b> still remains, however, the end marker <b>518</b> stays unchanged.
p-0041<figref idrefs="DRAWINGS">FIG. 5H</figref> depicts the shared memory after task A has completed writing its data <b>502</b> to memory location <b>510</b>. As was the case after the completion of writing by the other tasks, task A has updated its flag at <b>520</b>A in data structure <b>520</b> to TRUE to indicate that it has completed writing. Additionally, because there is no longer a hole in the shared memory at memory location <b>510</b>, the end marker <b>518</b> has been updated to the end of memory location <b>510</b>. A hole remains in the memory at location <b>512</b>.
p-0042<figref idrefs="DRAWINGS">FIG. 5I</figref> depicts the situation after task B has writing its data <b>504</b> to memory location <b>512</b>. It has set its flag stored at <b>520</b>B to true in order to indicate that writing is complete. Additionally, because there are now no holes remaining before the second marker <b>522</b>, the end marker <b>518</b> has been set to the same location as second marker <b>522</b>.
p-0043In order to effect the process discussed with reference to <figref idrefs="DRAWINGS">FIGS. 5A-51</figref>, each of the tasks can perform the method <b>600</b> depicted in <figref idrefs="DRAWINGS">FIG. 6</figref>, according to embodiments of the present invention. At step <b>602</b>, the task calculates the space required to write its set of data to the shared memory. Next, at step <b>604</b>, the task acquires a lock on an expected end marker and reserves the required space by setting the expected end marker to the appropriate value at step <b>606</b>. The task then releases the lock at step <b>608</b>. A flag in an associated data structure is set to indicate an incomplete state at <b>610</b> and the task begins writing its data to the memory resource at step <b>612</b>. After the data has been fully written to the shared memory resource, the flag in the associated data structure is set to a complete state at <b>614</b>. The system can then update the end marker as appropriate at step <b>616</b>.
p-0044<figref idrefs="DRAWINGS">FIG. 7</figref> depicts a method <b>700</b> of updating the end marker according to embodiments of the present invention. At step <b>702</b>, it is determined that a task has its associated flag in a complete state. According to some embodiments, this check occurs each time a task changes the state of its associated flag to complete. According to the method, a check is performed at step <b>704</b> to determine whether the preceding tasks are complete. If they are not complete, then the end marker will remain un-updated as indicated at step <b>706</b>. If, however, the preceding tasks are complete, then the end marker can be updated to indicate the end of the continuously written data at step <b>708</b>. According to some embodiments, the check performed at step <b>704</b> only checks to determine whether the immediately preceding task.
p-0045In an embodiment of the present invention, the system and components of the present invention described herein are implemented using well known computers, such as computer <b>800</b> shown in <figref idrefs="DRAWINGS">FIG. 8</figref>.
p-0046Computer <b>800</b> can be any commercially available and well known computer capable of performing the functions described herein, such as computers available from International Business Machines, Apple, Sun, HP, Dell, Compaq, Digital, Cray, etc.
p-0047Computer <b>800</b> includes one or more processors (also called central processing units, or CPUs), such as a processor <b>806</b>. The processor <b>806</b> is connected to a communication bus <b>804</b>. Processors <b>806</b> may include any conventional or special purpose processor, including, but not limited to, digital signal processor (DSP), field programmable gate array (FPGA), and application specific integrated circuit (ASIC).
p-0048Computer <b>800</b> includes one or more graphics processing units (also called GPUs), such as GPU <b>807</b>. GPU <b>807</b> is a specialized processor that executes instructions and programs selected for complex graphics and mathematical operations in parallel.
p-0049Computer <b>800</b> also includes a main or primary memory <b>808</b>, such as random access memory (RAM). The primary memory <b>808</b> has stored therein control logic <b>828</b>A (computer software), and data.
p-0050Computer <b>800</b> also includes one or more secondary storage devices <b>810</b>. The secondary storage devices <b>810</b> include, for example, a hard disk drive <b>812</b> and/or a removable storage device or drive <b>814</b>, as well as other types of storage devices, such as memory cards and memory sticks. The removable storage drive <b>814</b> represents a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup, etc.
p-0051The removable storage drive <b>814</b> interacts with a removable storage unit <b>816</b>. The removable storage unit <b>816</b> includes a computer useable or readable storage medium <b>824</b> having stored therein computer software <b>828</b>B (control logic) and/or data. Removable storage unit <b>816</b> represents a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, or any other computer data storage device. The removable storage drive <b>814</b> reads from and/or writes to the removable storage unit <b>816</b> in a well known manner.
p-0052Computer <b>800</b> also includes input/output/display devices <b>822</b>, such as monitors, keyboards, pointing devices, touch-screen displays, etc.
p-0053Computer <b>800</b> further includes a communication or network interface <b>818</b>. The network interface <b>818</b> enables the computer <b>800</b> to communicate with remote devices. For example, the network interface <b>818</b> allows computer <b>800</b> to communicate over communication networks or mediums <b>824</b>B (representing a form of a computer useable or readable medium), such as LANs, WANs, the Internet, etc. The network interface <b>818</b> may interface with remote sites or networks via wired or wireless connections.
p-0054Control logic <b>828</b>C may be transmitted to and from computer <b>800</b> via the communication medium <b>824</b>B. More particularly, the computer <b>800</b> may receive and transmit carrier waves (electromagnetic signals) modulated with control logic <b>830</b> via the communication medium <b>824</b>B.
p-0055Any apparatus or manufacture comprising a computer useable or readable medium having control logic (software) stored therein is referred to herein as a computer program product or program storage device. This includes, but is not limited to, the computer <b>800</b>, the main memory <b>808</b>, the secondary storage devices <b>810</b>, the removable storage unit <b>816</b> and the carrier waves modulated with control logic <b>830</b>. Such computer program products, having control logic stored therein that, when executed by one or more data processing devices, cause such data processing devices to operate as described herein, represent embodiments of the invention.
p-0056The invention can work with software, hardware, and/or operating system implementations other than those described herein. Any software, hardware, and operating system implementations suitable for performing the functions described herein can be used.
p-0057It is to be appreciated that the Detailed Description section, and not the Summary and Abstract sections, is intended to be used to interpret the claims. The Summary and Abstract sections may set forth one or more but not all exemplary embodiments of the present invention as contemplated by the inventor(s), and thus, are not intended to limit the present invention and the appended claims in any way.
p-0058The present invention has been described above with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed.
p-0059The foregoing description of the specific embodiments will so fully reveal the general nature of the invention that others can, by applying knowledge within the skill of the art, readily modify and/or adapt for various applications such specific embodiments, without undue experimentation, without departing from the general concept of the present invention. Therefore, such adaptations and modifications are intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance.
p-0060The breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Contents4
26 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2009083517A1 | Cites | United States of America | Search report |
| US2009240739A1 | Cites | United States of America | Search report |
| US2012005158A1 | Cites | United States of America | Search report |
| US2012304003A1 | Cites | United States of America | Search report |
| US6721765B2 | Cites | United States of America | Search report |
2 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 201113340826 | United States of America | A | |
| US201113340826 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2013173866A1 | United States of America | A1 | |
| US8745352B2This record | United States of America | B2 |
29 transactions on the USPTO file
Allowed without a rejection on record.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Response to Reasons for AllowanceREAS | REAS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Reasons for AllowanceEX.R | EX.R | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Sent to Classification ContractorPGPC | PGPC | |
| Filing Receipt - UpdatedFLRCPT.U | FLRCPT.U | |
| Payment of additional filing fee/PreexamFLFEE | FLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
1 recorded assignment at the USPTO, latest first
- Now
Now: Held by
SYBASE INC - 2012-03-09
Assignment of assignors interest.
Ownership change- From
- TIWARI ANUNAYSAKHALKAR AMEYAWOOD DANIEL ALAN
and 1 moreShow fewer
PASUPULETI KANTIKIRAN KRISHNA - To
- SYBASE INC
Recorded 2012-03-09, Signed 2012-02-04
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS |
Numbers
- Publication
- 08745352
- Publication, DOCDB
- 8745352
- Publication, EPODOC
- US8745352
- Application
- 13340826
- Application, DOCDB
- 201113340826
- Application, EPODOC
- US201113340826
Titles
- English
- Optimized approach to parallelize writing to a shared memory resource
Patent term adjustment
- A delay
- +375 daysthe office missed an examination deadline
- Net adjustment
- 375 days
Classification
- CPC, 7
- G06F12/0284
- G06F12/0855
- G06F9/526
- G06F16/2343
- G06F16/2358
- G06F13/1663
- G06F9/52
- IPC, 7
- G06F12 00
- G06F9 52
- G06F12 08
- G06F13 00
- G06F13 16
- G06F13 28
- G06F17 30
- USPC, 3
- 711168000
- 711135000
- 711169000