IP Library Granted Patent US 9,223,698
Granted Patent B2
US 9,223,698 · App. 14/156,035 · Granted Dec 29, 2015

SSD-block aligned writes

Inventor: Doron Tal (Haifa, IL)
Assignee: Kaminario Technologies Ltd.
G06F12/0246G06F2212/7202Y02B60/1225
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,223,698
App. No.
14/156,035
Granted
Dec 29, 2015
Kind
B2
Abstract

An SSD, comprising a mapping module and a controller, mapping module is capable of mapping a plurality of SSD-block aligned groups, each comprises a specific sequence of LBAs, to SSD blocks. The controller is capable of determining whether a LBA referenced in an incoming write request is a first LBA in a respective group, and if so, the controller is capable of: opening an ongoing SSD-block aligned write session; assigning a SSD block to the session; and recording in the session's data an indication of which LBA is associated with the write data that was saved to the SSD. In case the LBA referenced in the incoming write request is not the first LBA in the respective group, but is a successor of a latest-saved LBA of the group, storing the write data in sequence with a latest used segment of the SSD-block that was assigned to the group.

Claims (57)

1. A method of managing a SSD, comprising:

partitioning a logical block address space in alignment with the SSD's blocks, giving rise to a plurality of SSD-block aligned groups, each group comprises a specific sequence of logical block addresses;

determining whether a logical block address referenced in an incoming write request is a first logical block in a respective SSD-block aligned group, and if so:

opening an ongoing SSD-block aligned write session;

assigning a SSD block to the session; and

recording in the session's data an indication of which logical block address is associated with the write data that was saved to the SSD.

2. The method according to claim 1 , further in response to determining that the logical block address is the first logical block in the group, storing respective write data in a first segment of the SSD block that was assigned to the respective ongoing SSD-block aligned write session.

3. The method according to claim 1 , wherein the ongoing SSD-block aligned write session further includes an offset parameter which indicates how many logical block addresses from the respective block aligned group were written so-far to the SSD block that was assigned to the session.

4. The method according to claim 3 , wherein in case the logical block address referenced in the incoming write request is not the first logical block in the respective SSD-block aligned group, determining whether the logical block address is a successor of a latest saved logical block address of the group, and if so, storing the write data in a SSD block that was assigned to the respective group, in sequence with a latest used segment of the SSD-block, and incrementing the offset parameter.

5. The method according to claim 2 , wherein in case the logical block address referenced in the incoming write request is not the first logical block in the respective SSD-block aligned group, determining whether the logical block address is a successor of a latest-saved logical block address of the group, and if so, storing the write data in a SSD block that was assigned to the respective group, in sequence with a latest used segment of the SSD-block.

6. The method according to claim 5 , wherein when write data that is associated with an entire SSD-block aligned group is stored in the SSD-block, terminating the respective ongoing SSD-block aligned write session.

7. The method according to claim 6 , wherein when following terminating an ongoing SSD-block aligned write session that was associated with a certain SSD-block aligned group, a write request referencing a logical block address that is the first logical block in the same SSD-block aligned group is received at the SSD:

opening a new ongoing write session;

assigning a new SSD block to the new session; and

recording the logical block address and the newly assigned SSD block in the new session's data.

8. The method according to claim 5 , wherein the ongoing SSD-block aligned write session further includes a free flag, and wherein when the session is opened the free flag is set to false, and when the session is terminated resetting the free flag to true.

9. The method according to claim 5 , wherein in case it is determined that the logical block address referenced in the incoming write request is not the first logical block in the respective SSD-block aligned group, and is not the successor of the current last-saved logical block address of the group:

storing respective write data in a protected write buffer;

acknowledging the write request; and

determining, after a timeout period, whether the logical block address referenced in the write request that is associated with the write data that was stored in the protected write buffer is now the successor of the current latest-saved logical block address of the group.

10. The method according to claim 5 , wherein in case it is determined that the logical block address referenced in the incoming write request is not the first logical block in the respective SSD-block aligned group, and is not the successor of the current last-saved logical block address of the group, storing respective write data in a SSD block that is reserved for out-of-sequence writes.

11. The method according to claim 5 , wherein in case it is determined that logical block address referenced in the incoming write request is mapped to one or more bad pages in the SSD-block assigned to the write session, storing respective write data in a SSD block that is reserved for out-of-sequence writes.

12. A SSD, comprising:

a mapping module capable of mapping each one of a plurality SSD-block aligned groups to a respective SSD block from a respective plurality of SSD blocks, wherein a SSD-block aligned group comprises a specific sequence of logical block addresses;

a controller capable of determining whether a logical block address referenced in an incoming write request is a first logical block in a respective SSD-block aligned group, and if it is, the controller is capable of:

opening an ongoing write session;

assigning a SSD block to the session; and

recording in the session's data an indication of which logical block address is associated with the write data that was saved to the SSD.

13. The SSD according to claim 12 , wherein further in response to determining that the logical block address is the first logical block in the group, the controller is configured to store respective write data in a first segment of the SSD block that was assigned to the respective ongoing SSD-block aligned write session.

14. The SSD according to claim 13 , wherein in case the logical block address referenced in the incoming write request is not the first logical block in the respective SSD-block aligned group, the controller is capable of determining whether the logical block address is a successor of a latest-saved logical block address of the group, and if it is, the controller is capable of storing the write data in a SSD block that was assigned to the respective group, in sequence with a latest used segment of the SSD-block.

15. The SSD according to claim 14 , wherein when write data that is associated with an entire SSD-block aligned group is stored in the SSD-block, the controller is capable of terminating the respective ongoing SSD-block aligned write session.

16. The SSD according to claim 14 , wherein the controller is capable of including in the ongoing SSD-block aligned write session's data a free flag, and wherein when the session is opened the controller is configured to set the free flag to a false state, and when the session is terminated the controller is configured to reset the state of the free flag to true.

17. The SSD according to claim 16 , wherein when following terminating an ongoing SSD-block aligned write session that was associated with a certain SSD-block aligned group, a write request referencing a logical block address that is the first logical block in the same SSD-block aligned group is received at the SSD, the controller is capable of:

opening a new ongoing write session;

assigning a new SSD block to the new session; and

recording the logical block address and the newly assigned SSD block in the new session's data.

18. The SSD according to claim 14 , wherein in case it is determined that the logical block address referenced in the incoming write request is not the first logical block in the respective SSD-block aligned group, and is not the successor of the current last-saved logical block address of the group, the controller is capable of:

storing respective write data in a protected write buffer;

acknowledging the write request; and

determining, after a timeout period, whether the logical block address referenced in the write request that is associated with the write data that was stored in the protected write buffer is now the successor of the current latest-saved logical block address of the group.

19. The SSD according to claim 14 , wherein in case the controller determines that the logical block address referenced in the incoming write request is not the first logical block in the respective SSD-block aligned group, and is not the successor of the current last-saved logical block address of the group, the controller is capable of storing respective write data in a SSD block that is reserved for out-of-sequence writes.

20. The SSD according to claim 14 , wherein in case the controller determines that logical block address referenced in the incoming write request is mapped to one or more bad pages in the SSD-block assigned to the write session, the controller is capable of storing respective write data in a SSD block that is reserved for out-of-sequence writes.

21. The SSD according to claim 12 , wherein the controller is further capable of recording in the session's data an offset parameter which indicates how many logical block addresses from the respective block aligned group were written so-far to the SSD block that was assigned to the session.

22. The SSD according to claim 21 , wherein in case the logical block address referenced in the incoming write request is not the first logical block in the respective SSD-block aligned group, the controller is capable of determining whether the logical block address is a successor of a latest saved logical block address of the group, and if it is, the controller is capable of storing the write data in a SSD block that was assigned to the respective group, in sequence with a latest used segment of the SSD-block, and the controller is further capable of incrementing the offset parameter.

23. A program non-transitory storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform a method of managing a SSD, comprising:

partitioning a logical block address space in alignment with the SSD's blocks, giving rise to a plurality of SSD-block aligned groups, each group comprises a specific sequence of logical block addresses;

determining whether a logical block address referenced in an incoming write request is a first logical block in a respective SSD-block aligned group, and if so:

opening an ongoing SSD-block aligned write session;

assigning a SSD block to the session; and

recording in the session's data an indication of which logical block address is associated with the write data that was saved to the SSD.

24. A computer program product comprising a computer useable non-transitory medium having computer readable program code embodied therein of managing a SSD, the computer program product comprising:

computer readable program code for causing the computer to partition a logical block address space in alignment with the SSD's blocks, giving rise to a plurality of SSD-block aligned groups, each group comprises a specific sequence of logical block addresses;

computer readable program code for causing the computer to:

determine whether a logical block address referenced in an incoming write request is a first logical block in a respective SSD-block aligned group, and if so:

to open an ongoing SSD-block aligned write session;

to assign a SSD block to the session; and

to record in the session's data an indication of which logical block address is associated with the write data that was saved to the SSD.

Assignments (6)
SECURITY INTEREST Recorded Nov 4, 2024
From: SILK TECHNOLOGIES INC.; THE SILK TECHNOLOGIES ILC LTD
To: TRINITY CAPITAL INC., AS COLLATERAL AGENT
Reel/Frame 069133/0868 →
SECURITY INTEREST Recorded Sep 19, 2023
From: THE SILK TECHNOLOGIES ILC LTD
To: KREOS CAPITAL VI (EXPERT FUND) L.P.
Reel/Frame 064945/0667 →
SECURITY INTEREST Recorded Sep 20, 2021
From: THE SILK TECHNOLOGIES ILC, LTD.
To: KREOS CAPITAL VI (EXPERT FUND) L.P.
Reel/Frame 057523/0433 →
SECURITY INTEREST Recorded Jul 27, 2015
From: KAMINARIO TECHNOLOGIES LTD.
To: KREOS CAPITAL IV (EXPERT FUND) LIMITED
Reel/Frame 036180/0394 →
SECURITY AGREEMENT Recorded Jul 16, 2015
From: KAMINARIO TECHNOLOGIES LTD
To: SILICON VALLEY BANK
Reel/Frame 036125/0944 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2015
From: TAL, DORON
To: KAMINARIO TECHNOLOGIES LTD.
Reel/Frame 034981/0160 →
Continuity (2)
Provisional Application 61752644 · Jan 15, 2013
Related Publication 20140201429A1 · Jul 17, 2014