IP Library › Granted Patent US 10,296,264
Granted Patent B2
US 10,296,264 · App. 15/098,111 · Granted May 21, 2019

Automatic I/O stream selection for storage devices

Inventors: Sina Hassani (Santa Cruz, CA); Anahita Shayesteh (Los Altos, CA); Vijay Balakrishnan (Mountain View, CA)
Assignee: Samsung Electronics Co., Ltd.
G06F3/0679G06F3/06G06F3/0616G06F3/0652G06F3/0659G06F3/0688
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,296,264
App. No.
15/098,111
Granted
May 21, 2019
Kind
B2
Abstract

A method of selecting among a plurality of I/O streams through which data is to be written to a multi-streaming flash storage device is presented. According to an example embodiment, the method comprises: assigning write sequences of similar length to the same I/O streams; receiving instructions for a write operation, the instructions including a starting logical block address (LBA) and a number of blocks of data to be written; determining whether the write operation is part of an existing write sequence; identifying an I/O stream associated with an existing write sequence; and providing a stream ID of the identified I/O stream to the multi-streaming flash storage device.

Claims (62)

1. A method of selecting among a plurality of I/O streams through which data is to be written to a multi-streaming flash storage device, each I/O stream corresponding to a different logical division of the multi-streaming flash storage device, the method comprising:

assigning write sequences to I/O streams according to length of write sequences;

receiving instructions for a write operation, the instructions including a starting logical block address (LBA) and a number of blocks of data to be written;

determining whether the write operation is part of an existing write sequence;

identifying an I/O stream associated with an existing write sequence; and

providing a stream ID of the identified I/O stream to the multi-streaming flash storage device,

wherein assigning write sequences to I/O streams according to length includes:

providing a number of queues, each queue including a plurality of elements, each element configured to store a last LBA of a current write sequence and a count value; and

assigning each queue in hierarchal order to a corresponding one of the I/O streams,

wherein assigning write sequences to I/O streams according to length further includes:

comparing the count value with an upgrade threshold value;

storing the last LBA of the current write sequence and the count value in an element of a first queue in response to determining that the count value is less than the upgrade threshold value; and

storing the last LBA of the current write sequence and the count value in an element of a second queue in response to determining that the count value is greater than the upgrade threshold value, wherein the second queue is in a next higher hierarchal order than the first queue.

2. The method of claim 1 , wherein assigning write sequences to I/O streams according to length further includes moving the element of the first queue to the front of the first queue.

3. The method of claim 1 , wherein the count value is calculated as an accumulating function of a number of blocks of data written in the current write sequence.

4. The method of claim 1 , wherein determining whether the write operation is part of an existing write sequence includes:

determining whether the starting LBA is within a threshold proximity of a last LBA stored in an element of the queues.

5. A method of selecting among a plurality of I/O streams through which data is to be written to a multi-streaming flash storage device, each I/O stream corresponding to a different logical division of the multi-streaming flash storage device, the method comprising:

assigning write sequences to I/O streams according to length of write sequences;

receiving instructions for a write operation, the instructions including a starting logical block address (LBA) and a number of blocks of data to be written;

determining whether the write operation is part of an existing write sequence;

identifying an I/O stream associated with an existing write sequence; and

providing a stream ID of the identified I/O stream to the multi-streaming flash storage device,

wherein assigning write sequences to I/O streams according to length includes:

providing a number of queues, each queue including a plurality of elements, each element configured to store a last LBA of a current write sequence and a count value; and

assigning each queue in hierarchal order to a corresponding one of the I/O streams,

wherein determining whether the write operation is part of an existing write sequence includes: determining whether the starting LB A is within a threshold proximity of a last LBA stored in an element of the queues, and

wherein determining whether the write operation is part of an existing write sequence further includes:

summing the starting LBA and the number of blocks of data to be written;

calculating the count value as a function of the number of blocks of data to be written; and

storing the sum as the last LBA and the count value in the first element of a lowest ordered queue.

6. The method of claim 1 , wherein identifying an I/O stream associated with an existing write sequence includes:

identifying a queue in which the last LBA and the count value of the current write sequence is to be stored.

7. The method of claim 6 , wherein providing a stream ID of the identified I/O stream to the multi-streaming flash storage device includes:

returning a number associated with the hierarchal order of the identified queue as the stream ID.

8. A non-transitory, tangible computer readable storage medium having stored thereon computer executable instructions that, when executed by a computer, cause the computer to select among a plurality of I/O streams through which data is to be written to a multi-streaming flash storage device, each I/O stream corresponding to a different storage area of the multi-streaming flash storage device, by:

assigning write sequences to I/O streams according to length of write sequences;

receiving instructions for a write operation, the instructions including a starting logical block address (LBA) and a number of blocks of data to be written;

determining whether the write operation is part of an existing write sequence;

identifying an I/O stream associated with an existing write sequence; and

providing a stream ID of the identified I/O stream to the multi-streaming flash storage device,

wherein assigning write sequences to I/O streams according to length includes:

providing a number of queues, each queue including a plurality of elements, each element configured to store a last LBA of a current write sequence and a count value; and

assigning each queue in hierarchal order to a corresponding one of the I/O streams,

wherein assigning write sequences to I/O streams according to length further includes:

comparing the count value with an upgrade threshold value;

storing the last LBA of the current write sequence and the count value in an element of a first queue in response to determining that the count value is less than the upgrade threshold value; and

storing the last LBA of the current write sequence and the count value in an element of a second queue in response to determining that the count value is greater than the upgrade threshold value, wherein the second queue is in a next higher hierarchal order than the first queue.

9. The non-transitory, tangible computer readable storage medium of claim 8 , wherein assigning write sequences to I/O streams according to length further includes moving the element of the first queue to the front of the first queue.

10. The non-transitory, tangible computer readable storage medium of claim 8 , wherein the count value is calculated as an accumulating function of a number of blocks of data written in the current write sequence.

11. The non-transitory, tangible computer readable storage medium of claim 8 , wherein determining whether the write operation is part of an existing write sequence includes:

determining whether the starting LBA is within a threshold proximity of a last LBA stored in an element of the queues.

12. The non-transitory, tangible computer readable storage medium of claim 11 , wherein determining whether the write operation is part of an existing write sequence further includes:

summing the starting LBA and the number of blocks of data to be written;

calculating the count value as a function of the number of blocks of data to be written; and

storing the sum as the last LBA and the count value in the first element of a lowest ordered queue.

13. The non-transitory, tangible computer readable storage medium of claim 8 , wherein identifying an I/O stream associated with an existing write sequence includes:

identifying a queue in which the last LBA and the count value of the current write sequence is to be stored.

14. The non-transitory, tangible computer readable storage medium of claim 13 , wherein providing a stream ID of the identified I/O stream to the multi-streaming flash storage device includes:

returning a number associated with the hierarchal order of the identified queue as the stream ID.

15. The non-transitory, tangible computer readable storage medium of claim 8 , wherein the instructions are executed in a kernel of an operating system running on the computer.

16. The non-transitory, tangible computer readable storage medium of claim 8 , wherein the instructions are executed by a virtual machine software running on the computer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: HASSANI, SINA; SHAYESTEH, ANAHITA; BALAKRISHNAN, VIJAY
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 041150/0390 →
Continuity (2)
Provisional Application 62293282 · Feb 9, 2016
Related Publication 20170228188A1 · Aug 10, 2017
Cited By (1)
US 12,474,870