IP Library Granted Patent US 10,732,857
Granted Patent B2
US 10,732,857 · App. 15/611,062 · Granted Aug 4, 2020

Techniques for reducing memory write operations using coalescing memory buffers and difference information

Inventor: Radoslav Danilak (Cupertino, CA)
Assignee: Seagate Technology LLC
G06F3/0616G06F3/0619G06F3/0656G06F3/0659G06F3/0679G06F3/0688G06F12/0246G11C16/349G11C16/3495
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,732,857
App. No.
15/611,062
Granted
Aug 4, 2020
Kind
B2
Abstract

The present disclosure relates to examples of reducing memory write operations using coalescing memory buffers. In one example implementation according to aspects of the present disclosure, a method comprises computing a difference between a current state of data of at least one block of a storage device to which data is to be written and a state that would result from a write operation. The method further comprises populating at least one coalescing memory buffer with difference information associated with the difference and to be used to update an associated block of the storage device.

Claims (34)

1. An apparatus comprising:

a coalescing memory containing at least one coalescing memory buffer; and

a difference computation module programmed to perform the steps of:

computing a difference between a current state of data of at least one block of a storage device to which data is to be written by a write operation and a state that would result from the write operation, the storage device being separate from the coalescing memory, the storage device comprising a non-volatile memory having a limited lifetime, and

populating the at least one coalescing memory buffer with difference information associated with the difference and to be used to update the at least one block of the storage device, the difference information comprising a set of instructions, each instruction comprising an operation code, a source starting address, a size, and data,

wherein using the difference information to update the at least one block of the storage device comprises at least appending the difference information from the at least one coalescing memory buffer to difference information contained in a portion of the at least one block, and

wherein the difference computation module is further programmed to reconstruct the current state of the data of the at least one block utilizing the difference information contained in the portion of the at least one block and any difference information in the at least one coalescing memory buffer associated with the at least one block.

2. The apparatus of claim 1 , wherein the difference computation module is further programmed to perform the steps of:

receiving a command initiating an operation to be applied to the storage device; and

identifying the operation as a write operation directed to the at least one block of the storage device.

3. The apparatus of claim 1 , wherein the difference computation module is further programmed to perform the step of determining whether the at least one coalescing memory buffer is full.

4. The apparatus of claim 3 , wherein the difference computation module is further programmed to perform the step of updating the at least one block from the difference information in the at least one coalescing memory buffer based on the determination of fullness of the at least one coalescing memory buffer.

5. The apparatus of claim 1 , wherein the operation code of each instruction indicates one of a replace operation, a move up operation, a move down operation, a delete operation, an insert operation, or an end marker.

6. A method comprising:

computing a difference between a current state of data of at least one block of a storage device to which data is to be written by a write operation and a state that would result from a write operation, the storage device comprising a non-volatile memory having a limited lifetime; and

populating at least one coalescing memory buffer in a coalescing memory with difference information associated with the difference and to be used to update the at least one block of the storage device, the difference information comprising a set of instructions, each instruction comprising an operation code, a source starting address, a size, and data, the coalescing memory being separate from the storage device,

wherein using the difference information to update the at least one block of the storage device comprises at least appending the difference information in the at least one coalescing memory buffer to difference information contained in a portion of the at least one block, and

wherein reconstructing the current state of the data of the at least one block of the storage device comprises utilizing the difference information contained in the portion of the at least one block and any difference information in the at least one coalescing memory buffer associated with the at least one block.

7. The method of claim 6 , further comprising:

receiving a command from a host processor initiating an operation to be applied to the storage device; and

identifying the operation as a write operation directed to the at least one block of the storage device.

8. The method of claim 7 , wherein the at least one coalescing memory buffer is coupled between the host processor and the storage device.

9. The method of claim 6 , wherein appending the difference information in the at least one coalescing memory buffer to the difference information contained in the portion of the at least one block is performed upon a determination of fullness of the at least one coalescing memory buffer.

10. The method of claim 6 , wherein the operation code of each instruction indicates one of a replace operation, a move up operation, a move down operation, a delete operation, an insert operation, or an end marker.

11. A non-transitory computer-readable storage medium storing instructions that, when executed by a processing resource, cause the processing resource to perform steps comprising:

computing a difference between a current state of data of at least one block of a storage device to which data is to be written by a write operation and a state that would result from a write operation, the storage device comprising a non-volatile memory having a limited lifetime; and

populating a coalescing memory buffer in a coalescing memory with difference information associated with the difference and to be used to update the at least one block of the storage device, the coalescing memory being separate from the storage device, the difference information comprising a set of instructions, each instruction comprising an operation code, a source starting address, a size, and data,

wherein using the difference information to update the at least one block of the storage device comprises at least appending the difference information in the coalescing memory buffer to difference information contained in a portion of the at least one block, and

wherein reconstructing the current state of the data of the at least one block of the storage device comprises utilizing the difference information contained in the portion of the at least one block and any difference information in the coalescing memory buffer associated with the at least one block.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the steps further comprise:

receiving a command from a host processor initiating an operation to be applied to the storage device; and

identifying the operation as a write operation directed to the at least one block of the storage device.

13. The non-transitory computer-readable storage medium of claim 11 , wherein appending the difference information in the coalescing memory buffer to the difference information contained in the portion of the at least one block is performed upon a determination of fullness of the coalescing memory buffer.

14. The non-transitory computer-readable storage medium of claim 11 , wherein the operation code of each instruction indicates one of a replace operation, a move up operation, a move down operation, a delete operation, an insert operation, or an end marker.

Continuity (8)
Continuation 14862241 · Sep 23, 2015
Continuation 14201020 · Mar 7, 2014
Continuation 13840609 · Mar 15, 2013
Continuation 13042231 · Mar 7, 2011
Continuation 11852104 · Sep 7, 2007
Provisional Application 60878242 · Jan 3, 2007
Provisional Application 60860843 · Nov 24, 2006
Related Publication 20170269855A1 · Sep 21, 2017