IP Library Granted Patent US 9,946,496
Granted Patent B2
US 9,946,496 · App. 15/075,157 · Granted Apr 17, 2018

SSD with non-blocking flush command

Inventors: Eyal Lotem (Pardes Hanna, IL); Avraham Meir (Rishon LeZion, IL); Shahar Frank (Ramat Hasharon, IL)
Assignee: Elastifile Ltd.
G06F3/0688G06F3/0619G06F3/0656G06F12/08
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 9,946,496
App. No.
15/075,157
Granted
Apr 17, 2018
Kind
B2
Abstract

A computing system includes a storage device and a host. The storage device includes a volatile memory and a non-volatile memory, and is configured to receive data for storage in the non-volatile memory, to buffer at least some of the received data temporarily in the volatile memory, and to guarantee that any data, which is not part of a predefined amount of data that was most recently received, has been committed to the non-volatile memory. The host is configured to send the data for storage in the storage device, and, in response to a need to commit given data to the non-volatile memory, to send the given data to the storage device followed by at least the predefined amount of additional data.

Claims (24)

1. A computing system, comprising:

a storage device, which comprises a volatile memory and a non-volatile memory, and which is configured to receive data for storage in the non-volatile memory, to buffer at least some of the received data temporarily in the volatile memory, and to guarantee that any data, which is not part of a predefined amount of data that was most recently received, has been committed to the non-volatile memory; and

a host, which is configured to send the data for storage in the storage device, and, in response to a need to commit given data to the non-volatile memory, to send the given data to the storage device followed by at least the predefined amount of additional data.

2. The computing system according to claim 1 , wherein the host is configured to send the given data without an explicit command that instructs the storage device to transfer the given data to the non-volatile memory.

3. The computing system according to claim 1 , wherein the storage device is configured to notify the host of a size of the predefined amount of data.

4. The computing system according to claim 1 , wherein a storage space in the storage device, or the data to be stored in the storage device, is divided into two or more portions, and wherein the storage device is configured to guarantee committing of the data independently for each of the two or more portions.

5. The computing system according to claim 4 , wherein the host is configured to commit a data item associated with the first portion, by sending the data item to the storage device followed by at least the predefined amount of additional data associated with the first portion.

6. The computing system according to claim 4 , wherein the first and second portions correspond to first and second respective subsets of non-volatile memory devices in the storage device, or with first and second respective streams defined in the storage device.

7. A method for data storage, comprising:

in a storage device that comprises a volatile memory and a non-volatile memory, receiving data for storage in the non-volatile memory, buffering at least some of the received data temporarily in the volatile memory, and guaranteeing that any data, which is not part of a predefined amount of data that was most recently received, has been committed to the non-volatile memory; and

in a host, sending the data for storage in the storage device, and, in response to a need to commit given data to the non-volatile memory, sending the given data to the storage device followed by at least the predefined amount of additional data.

8. The method according to claim 7 , wherein sending the given data is performed without an explicit command that instructs the storage device to transfer the given data to the non-volatile memory.

9. The method according to claim 7 , and comprising notifying the host, by the storage device, of a size of the predefined amount of data.

10. The method according to claim 7 , wherein a storage space in the storage device, or the data to be stored in the storage device, is divided into two or more portions, and wherein guaranteeing committing of the data is performed independently for each of the two or more portions.

11. The method according to claim 10 , and comprising committing a data item associated with the first portion, by sending the data item from the host to the storage device followed by at least the predefined amount of additional data associated with the first portion.

12. The method according to claim 10 , wherein the first and second portions correspond to first and second respective subsets of non-volatile memory devices in the storage device, or with first and second respective streams defined in the storage device.

13. A storage device, comprising:

a volatile memory;

a non-volatile memory; and

a controller, which is configured to receive data for storage in the non-volatile memory, to buffer at least some of the received data temporarily in the volatile memory, to receive a flush command that instructs the storage device to commit the buffered data to the non-volatile memory, and, after receiving the flush command and before the buffered data has been completely committed in response to the flush command, to receive and execute one or more read commands that request readout of some of the data.

14. A method for data storage, comprising:

in a storage device that comprises a volatile memory and a non-volatile memory, receiving data for storage in the non-volatile memory, and buffering at least some of the received data temporarily in the volatile memory;

receiving in the storage device a flush command, which instructs the storage device to commit the buffered data to the non-volatile memory; and

after receiving the flush command and before the buffered data has been completely committed in response to the flush command, receiving and executing in the storage device one or more read commands that request readout of some of the data.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2019
From: ELASTIFILE LTD
To: GOOGLE LLC
Reel/Frame 050664/0385 →
RELEASE OF SECURITY INTEREST Recorded Oct 8, 2019
From: SILICON VALLEY BANK
To: ELASTIFILE LTD
Reel/Frame 050652/0955 →
SECURITY INTEREST Recorded Jun 8, 2017
From: ELASTIFILE LTD
To: SILICON VALLEY BANK
Reel/Frame 042653/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2016
From: LOTEM, EYAL; MEIR, AVRAHAM; FRANK, SHAHAR
To: ELASTIFILE LTD.
Reel/Frame 038039/0629 →
Continuity (2)
Provisional Application 62197131 · Jul 27, 2015
Related Publication 20170031604A1 · Feb 2, 2017