IP Library Granted Patent US 8,527,693
Granted Patent B2
US 8,527,693 · App. 13/324,942 · Granted Sep 3, 2013

Apparatus, system, and method for auto-commit memory

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 8,527,693
App. No.
13/324,942
Granted
Sep 3, 2013
Kind
B2
Abstract

An auto-commit memory is capable of implementing a pre-configured, triggered commit action in response to a failure condition, such as a loss of power, invalid shutdown, fault, or the like. A computing device may access the auto-commit memory using memory access semantics (using a memory mapping mechanism or the like), bypassing system calls typically required in virtual memory operations. Since the auto-commit memory is pre-configured to commit data stored thereon in the event of a failure, users of the auto-commit memory may view these memory semantic operations as being instantly committed. Operations to commit the data are taken out of the write-commit path.

Claims (35)

1. A method for instant-commit, memory semantic operations within a volatile memory address space of a computing device, the method comprising:

mapping a memory address range of a host to a volatile auto-commit buffer within an isolation zone of a non-volatile storage device comprising a storage controller configured to store data of the auto-commit buffer on non-volatile storage media of the non-volatile storage device independent of a host computing device;

arming the auto-commit buffer to store data on the non-volatile storage media in association with a logical identifier in response to a trigger event, the logical identifier associated with a user of the auto-commit buffer; and

servicing memory operations from the user in the mapped memory address range.

2. The method of claim 1 , wherein the memory address range of the host is mapped to a bus address range corresponding to the volatile auto-commit buffer within the isolation zone.

3. The method of claim 1 , wherein arming the auto-commit buffer comprises storing the logical identifier in the auto-commit buffer.

4. The method of claim 1 , further comprising executing instantly committed, memory semantic operations on the auto-commit buffer in response to mapping the memory address range of the host to the volatile auto-commit buffer within the isolation zone.

5. The method of claim 1 , wherein the host comprises a guest operating system of a virtual machine, the method further comprising providing instantly committed, memory semantic access to the auto-commit buffer through a mapped memory address range of the guest operating system.

6. The method of claim 1 , further comprising storing contents of the auto-commit buffer on the non-volatile storage media in response to the trigger event, wherein the trigger event comprises one of a power failure, a host hardware failure, and a host software fault.

7. The method of claim 1 , further comprising:

reserving space in a write buffer of the non-volatile storage device, wherein the write buffer is within the isolation zone and comprises sufficient capacity to store contents of the auto-commit buffer on the non-volatile storage device independent of the host computing device; and

storing the contents of the auto-commit buffer on the non-volatile storage media through the write buffer in response to the trigger event.

8. The method of claim 1 , further comprising:

maintaining two or more pending non-volatile media write operations configured to store data of the auto-commit buffer on respective storage locations on the non-volatile storage media; and

executing the two or more pending non-volatile media write operations in response to the trigger event to store data of the auto-commit buffer.

9. The method of claim 1 , further comprising determining a priority of the data of the auto-commit buffer relative to other data pending storage on the non-volatile storage device, wherein the priority determines an order in which the data of the auto-commit buffer is stored relative to the other data pending storage, in response to the triggering event.

10. The method of claim 9 , wherein the priority determines that the data of the auto-commit buffer is stored on the non-volatile storage device before data of non-acknowledged storage operations and after acknowledged storage operations.

11. The method of claim 9 , wherein the priority determines that the data of the auto-commit buffer is stored on the non-volatile storage device before data of acknowledged storage operations.

12. The method of claim 1 , further comprising in response to the trigger event, storing contents of the auto-commit buffer on the non-volatile storage media in a log-based format, the log-based format comprising data packets having the logical identifier and a sequence identifier that preserves an ordered sequence of storage operations on the non-volatile storage media.

13. The method of claim 1 , further comprising updating the logical identifier in response to one of renaming a memory mapped file, moving a memory mapped file, a notification from an operating system, an mprotect operation, an mmap operation, and a segment fault.

14. The method of claim 1 , further comprising configuring the host to bypass a memory cache such that memory operations are serviced directly by the volatile auto-commit buffer, wherein mapping the memory address range of the host to the volatile auto-commit buffer comprises configuring the host to service memory operations directly on the volatile auto-commit buffer.

15. The method of claim 1 , further comprising arming the auto-commit buffer concurrently with mapping the memory address range to the volatile auto-commit buffer.

16. An apparatus for instant-commit, memory semantic operations within a volatile memory address space of a computing device, comprising:

an isolation zone comprising;

a volatile auto-commit buffer mapped to a memory address range of a host,

a commit module configured to store data of the volatile auto-commit buffer to a non-volatile storage medium of a non-volatile storage device together with a logical identifier associated with a user of the auto-commit buffer in response to a trigger event, and

a secondary power supply configured to power the volatile auto-commit buffer, commit module, and non-volatile storage device independent of the host.

17. The apparatus of claim 16 , wherein the non-volatile storage device comprises a non-volatile storage controller configured to store the data of the volatile auto-commit buffer on the non-volatile storage medium independent of the host.

18. The apparatus of claim 17 , wherein the non-volatile storage controller comprises a write data pipeline configured to store contents of the auto-commit buffer in a packet format comprising the logical identifier associated with the user and in association with a sequence identifier that preserves an ordered sequence of storage operations on the non-volatile storage medium.

19. The apparatus of claim 16 , wherein the volatile auto-commit buffer is communicatively coupled to the host by a bus, and wherein the memory address range of the host is mapped to an address of the bus.

20. A system for instant-commit, memory semantic operations within a volatile memory address space of a computing device, comprising:

an auto-commit memory, comprising:

a volatile auto-commit buffer mapped into a memory address range of a host,

a non-volatile storage device comprising non-volatile storage media, and a commit module configured to store data of the volatile auto-commit buffer to a non-volatile storage medium of the non-volatile storage device together with a logical identifier associated with a user of the auto-commit buffer in response to a trigger event, and

a secondary power supply configured to power the volatile auto-commit buffer, commit module, and non-volatile storage device independent of the host.

Assignments (6)
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0898 →
CORRECTIVE ASSIGNMENT TO REMOVE APPL. NO'S 13/925,410 AND 61/663,464 PREVIOUSLY RECORDED AT REEL: 035168 FRAME: 0366. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 30, 2015
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 035603/0582 →
CORRECTIVE ASSIGNMENT TO REMOVE APPL. NO'S 13/925,410 AND 61/663,464 PREVIOUSLY RECORDED AT REEL: 034838 FRAME: 0091. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Apr 30, 2015
From: FUSION-IO, INC
To: FUSION-IO, LLC
Reel/Frame 035603/0748 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2015
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 035168/0366 →
CHANGE OF NAME Recorded Jan 28, 2015
From: FUSION-IO, INC
To: FUSION-IO, LLC
Reel/Frame 034838/0091 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2012
From: FLYNN, DAVID; NELLANS, DAVID; STRASSER, JOHN; PETERSON, JAMES G.; WIPFEL, ROBERT
To: FUSION-IO, INC.
Reel/Frame 027778/0392 →