IP Library Granted Patent US 8,738,841
Granted Patent B2
US 8,738,841 · App. 12/082,220 · Granted May 27, 2014

Flash memory controller and system including data pipelines incorporating multiple buffers

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,738,841
App. No.
12/082,220
Granted
May 27, 2014
Kind
B2
Abstract

A storage controller connected to a flash memory storage module, the controller and module including multiple sets of buffers. The buffers are part of one or more pipelines through which data is moved between the storage module and one or more hosts.

Claims (36)

1. A flash memory controller configured to be coupled to external flash memory devices, the flash memory controller comprising:

one or more ports for coupling to one or more host devices;

a set of flash stage buffers, each configured for holding a page of data read from one of the external flash memory devices pursuant to a respective host command, each flash stage buffer coupled to a respective external flash memory device by a first transmission path; and

a set of host port buffers configured for holding data read from a second set of buffers, the set of host port buffers coupled to the second set of buffers by a third transmission path and to the one or more host ports;

wherein the flash memory controller is further configured to be coupled to and control operation of an external data path RAM memory, the external data path RAM memory including the second set of buffers, the flash memory controller further configured to hold in the second set of buffers data read from any of the buffers in the set of flash stage buffers, the data stored in the second set of buffers related to a plurality of host commands, the flash memory controller further configured to couple the second set of buffers to the set of flash stage buffers by a second transmission path that includes a path through the external data path RAM memory.

2. The flash memory controller of claim 1 , wherein the first transmission path is configured to transmit data at a first rate, and the second transmission path is configured to transmit data at a second, higher rate.

3. The flash memory controller of claim 1 , wherein at least one of the set of flash stage buffers, the second set of buffers, and the set of host port buffers consists of a single buffer.

4. The flash memory controller of claim 1 , wherein the flash memory controller is further configured to aggregate, in the second set of buffers, data read from two or more of the buffers in the set of flash stage buffers, wherein aggregating data includes aggregating data corresponding to a respective host command with other data corresponding to the respective host command.

5. The flash memory controller of claim 4 , wherein the flash memory controller is further configured to transfer, from the second set of buffers, aggregated data corresponding to the respective host command to a respective host port buffer of the set of host port buffers subsequent to the second set of buffers receiving all data related to the respective host command.

6. The flash memory controller of claim 1 , wherein the flash memory controller is further configured to store, in the second set of buffers, data read from any subset of the buffers in the set of flash stage buffers in logical block address order.

7. The flash memory controller of claim 1 , wherein the data read from any of the buffers in the set of flash stage buffers correspond to data related to one or more host commands.

8. The flash memory controller of claim 1 , wherein the flash memory controller is further configured to store, in the second set of buffers, data related to a plurality of host commands, wherein data related to a respective host command includes all data requested by the respective host command.

9. A system including a flash memory controller, an external data path RAM memory coupled to the flash memory controller, the flash memory controller coupled to external flash memory devices, the system configured for pipelined execution of host commands, the system comprising:

one or more ports for coupling to one or more host devices;

a set of flash stage buffers, each configured for holding a page of data read from one of the external flash memory devices pursuant to a respective host command, each flash stage buffer coupled to a respective external flash memory device by a first transmission path;

a second set of buffers in the external data path RAM memory, the second set of buffers configured for holding data read from any of the buffers in the set of flash stage buffers, the data stored in the second set of buffers related to a plurality of host commands, the second set of buffers coupled to the set of flash stage buffers by a second transmission path that includes a path through the external data path RAM memory; and

a set of host port buffers configured for holding data read from the second set of buffers, the set of host port buffers coupled to the second set of buffers by a third transmission path and to the one or more host ports.

10. The system as in claim 9 , in which:

the first transmission path is configured to transmit data at a first rate, and the second transmission path is configured to transmit data at a second, higher rate.

11. The system as in claim 9 , wherein at least one of the set of flash stage buffers, the second set of buffers, and the set of host port buffers consists of a single buffer.

12. The system of claim 9 , wherein the second set of buffers are further configured to aggregate data read from two or more of the buffers in the set of flash stage buffers, wherein aggregating data includes aggregating data corresponding to a respective host command with other data corresponding to the respective host command.

13. The system of claim 12 , wherein the second set of buffers are further configured to transfer aggregated data corresponding to the respective host command to a respective host port buffer of the set of host port buffers subsequent to the second set of buffers receiving all data related to the respective host command.

14. The system of claim 9 , wherein the second set of buffers are further configured to store data read from any subset of the buffers in the set of flash stage buffers in logical block address order.

15. The system of claim 9 , wherein the data read from any of the buffers in the set of flash stage buffers correspond to data related to one or more host commands.

16. The system of claim 9 , wherein the second set of buffers are further configured to store data related to a plurality of host commands, wherein data related to a respective host command includes all data requested by the respective host command.

17. A method of operating a system, the system including a flash memory controller, an external data path RAM memory coupled to the flash memory controller, the flash memory controller coupled to external flash memory devices, the system configured for pipelined execution of host commands, the method comprising:

for a set of flash stage buffers, for each respective flash stage buffer, reading data from one of the external flash memory devices pursuant to a respective host command, each flash stage buffer coupled to a respective external flash memory device by a first transmission path;

transferring data from any of the buffers in the set of flash stage buffers to a second set of buffers in the external data path RAM memory, the data stored in the second set of buffers related to a plurality of host commands, the second set of buffers coupled to the set of flash stage buffers by a second transmission path that includes a path through the external data path RAM memory; and

transferring data from the second set of buffers to a set of host port buffers, the set of host port buffers coupled to the second set of buffers by a third transmission path and to one or more host ports.

18. The method of claim 17 , wherein the first transmission path is configured to transmit data at a first rate, and the second transmission path is configured to transmit data at a second, higher rate.

19. The method of claim 17 , wherein at least one of the set of flash stage buffers, the second set of buffers, and the set of host port buffers consists of a single buffer.

20. The method of claim 17 , wherein the second set of buffers are further configured to aggregate data read from two or more of the buffers in the set of flash stage buffers, wherein aggregating data includes aggregating data corresponding to a respective host command with other data corresponding to the respective host command.

21. The method of claim 20 , wherein the second set of buffers are further configured to transfer aggregated data corresponding to the respective host command to a respective host port buffer of the set of host port buffers subsequent to the second set of buffers receiving all data related to the respective host command.

22. The method of claim 17 , wherein the second set of buffers are further configured to store data read from any subset of the buffers in the set of flash stage buffers in logical block address order.

23. The method of claim 17 , wherein the data read from any of the buffers in the set of flash stage buffers correspond to data related to one or more host commands.

24. The method of claim 17 , wherein the second set of buffers are further configured to store data related to a plurality of host commands, wherein data related to a respective host command includes all data requested by the respective host command.

Assignments (14)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038809/0600 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2016
From: SANDISK ENTERPRISE IP LLC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038295/0225 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 026781 FRAME 0135. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT ASSIGNMENT. Recorded Aug 25, 2011
From: PLIANT TECHNOLOGY, LLC
To: SANDISK ENTERPRISE IP LLC
Reel/Frame 027190/0190 →
PATENT ASSIGNMENT Recorded Aug 19, 2011
From: PLIANT TECHNOLOGY, LLC
To: SANDISK PACIFIC HOLDCO, INC.
Reel/Frame 026781/0135 →
CONVERSION TO LLC Recorded Aug 18, 2011
From: PLIANT TECHNOLOGY, INC.
To: PLIANT TECHNOLOGY, LLC
Reel/Frame 026771/0541 →
RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY Recorded Jun 21, 2011
From: GOLD HILL VENTURE LENDING 03, LP; SILICON VALLEY BANK
To: PLIANT TECHNOLOGY, INC.
Reel/Frame 026468/0930 →
RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY Recorded Jun 21, 2011
From: SILICON VALLEY BANK
To: PLIANT TECHNOLOGY, INC.
Reel/Frame 026468/0942 →
SECURITY AGREEMENT Recorded Apr 4, 2011
From: PLIANT TECHNOLOGY, INC.
To: SANDISK CORPORATION
Reel/Frame 026073/0026 →
SECURITY AGREEMENT Recorded Apr 1, 2011
From: PLIANT TECHNOLOGY, INC.
To: SILICON VALLEY BANK; GOLD HILL VENTURE LENDING 03, LP
Reel/Frame 026067/0768 →
SECURITY AGREEMENT Recorded Mar 31, 2011
From: PLIANT TECHNOLOGY, INC.
To: SILICON VALLEY BANK
Reel/Frame 026066/0659 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2008
From: OLBRICH, AARON K.; PRINS, DOUGLAS A.
To: PLIANT TECHNOLOGY, INC.
Reel/Frame 020822/0200 →