IP Library Granted Patent US 9,043,531
Granted Patent B2
US 9,043,531 · App. 12/492,109 · Granted May 26, 2015

High speed input/output performance in solid state devices

Inventors: William Calvert (Cranleigh, GB); Stephen Russell Boorman (Bookham, GB); Simon Mark Haynes (Send, GB)
Assignee: STEC, Inc.
G06F11/1441
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,043,531
App. No.
12/492,109
Granted
May 26, 2015
Kind
B2
Abstract

A method of transferring data in a flash storage device comprising a random access memory and a plurality of channels of a flash array is provided. The method comprises receiving a plurality of data segments from a host system, storing the plurality of data segments in the random access memory, allocating the plurality of data segments among the plurality of channels of the flash array, and writing the allocated data segments from the random access memory to the respective channels of the flash array.

Claims (33)

1. A method of storing data in a flash storage device, the method comprising:

receiving a plurality of data sectors from a host system, wherein each of the data sectors is associated with a host logical address;

storing a plurality of data segments in the random access memory, wherein each data segment comprises one of the plurality of data sectors from the host system;

mapping the host logical address of each of the plurality of data sectors to a flash logical address of a corresponding data segment, wherein the mapping to the flash logical address is based on the respective host logical address;

calculating a channel assignment for each of the plurality of data segments based on the flash logical address of the respective data segment;

allocating the plurality of data segments among a plurality of channels of a flash array based on the channel assignment for each of the plurality of data segments;

generating a plurality of write commands for the plurality of allocated data segments;

providing each of the plurality of write commands to a respective queue associated with a channel to which the write command is allocated; and

for each queue storing write commands, sequentially sending the queued write commands to one or more flash memories via the channel to which the write commands are allocated, and sequentially providing a respective data segment in connection with sending each queued write command from the random access memory via the memory channel corresponding to the queue.

2. The method of claim 1 , wherein the data segments allocated to a respective one of the channels of the flash array are written sequentially to the respective one of the channels of the flash array.

3. The method of claim 1 , wherein the allocated data segments are written to the respective channels of the flash array in parallel.

4. The method of claim 1 , wherein the allocated data segments are written from the random access memory to the respective channels of the flash array at a predetermined time interval.

5. The method of claim 1 , wherein the allocated data segments are written from the random access memory to the respective channels of the flash array after a predetermined number of data segments have been received and allocated to at least one of the plurality of channels of the flash array.

6. The method of claim 5 , wherein the predetermined number of data segments comprises one block of data.

7. The method of claim 1 , wherein each of the plurality of data segments comprises more than one of the plurality of data sectors.

8. A flash storage device comprising:

a random access memory;

a flash array comprising a plurality of flash memories and a respective plurality of channels; and

a controller configured to:

receive a plurality of data sectors from a host system, wherein each of the data sectors is associated with a host logical address;

store a plurality of data segments in the random access memory, wherein each data segment comprises one of the plurality of data sectors from the host system;

map the host logical address of each of the plurality of data sectors to a flash logical address of a corresponding data segment, wherein the mapping to the flash logical address is based on the respective host logical address;

calculate a channel assignment for each of the plurality of data segments based on the flash logical address of the respective data segment;

allocate the plurality of data segments among the plurality of channels of the flash array based on the channel assignment for each of the plurality of data segments;

generate a plurality of write commands for the plurality of allocated data segments;

provide each of the plurality of write commands to a respective queue associated with a channel to which the write command is allocated; and

for each queue storing write commands, sequentially send the queued write commands to one or more flash memories via respective channels to which the write commands are allocated, and provide a respective data segment in connection with sending each queued write command from the random access memory via the memory channel corresponding to the queue.

9. The flash storage device of claim 8 , wherein the controller is configured to sequentially write data segments allocated to a respective one of the channels of the flash array to the respective one of the channels of the flash array.

10. The flash storage device of claim 8 , wherein the controller is configured to write the allocated data segments to the respective channels of the flash array in parallel.

11. The flash storage device of claim 8 , wherein the controller is configured to write the allocated data segments from the random access memory to the respective channels of the flash array at a predetermined time interval.

12. The flash storage device of claim 8 , wherein the controller is configured to write the allocated data segments from the random access memory to the respective channels of the flash array after a predetermined number of data segments have been received and allocated to at least one of the plurality of channels of the flash array.

13. The flash storage device of claim 12 , wherein the predetermined number of data segments comprises one block of data.

14. The flash storage device of claim 8 , wherein each of the plurality of data segments comprises more than one of the plurality of data sectors.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2018
From: HGST TECHNOLOGIES SANTA ANA, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046174/0446 →
CHANGE OF NAME Recorded Jul 1, 2015
From: STEC, INC.
To: HGST TECHNOLOGIES SANTA ANA, INC.
Reel/Frame 036042/0390 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2009
From: CALVERT, WILLIAM; BOORMAN, STEPHEN RUSSELL; HAYNES, SIMON MARK
To: STEC, INC.
Reel/Frame 023445/0130 →
Continuity (2)
Provisional Application 61075709 · Jun 25, 2008
Related Publication 20120239852A1 · Sep 20, 2012