IP Library › Granted Patent US 9,235,346
Granted Patent B2
US 9,235,346 · App. 14/094,846 · Granted Jan 12, 2016

Dynamic map pre-fetching for improved sequential reads of a solid-state media

Inventors: Leonid Baryudin (Oakland, CA); Zhiqing Zhang (Shanghai, CN); Xin Song (San Jose, CA); Yun Shun Tan (Shanghai, CN); Lin Feng Chen (Shanghai, CN)
Assignee: Avago Technologies General IP (Singapore) PTE. LTD.
G06F3/0616G06F3/0665G06F3/0679G06F12/0246G06F12/0862
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,235,346
App. No.
14/094,846
Granted
Jan 12, 2016
Kind
B2
Abstract

Described embodiments provide a solid-state drive (SSD) including a media controller and a solid-state media. A control processor of the media controller determines a logical address, a transfer size, and map data based on the logical address and transfer size, associated with a read request received from a host device. Based on the logical address and a sequential zone defined based on one or more previous read requests, the control processor determines whether the received read request is a sequential read. A map data pre-fetch size is adjusted based on the transfer size of the received read request and whether the received read request is a sequential read. A corresponding portion of the map data is transferred from the solid-state media to a map cache coupled to the control processor, the transferred portion having a size equal to the adjusted map data pre-fetch size.

Claims (81)

1. A solid-state drive (SSD) comprising a media controller and a solid-state media, the media controller in communication with a host device, the media controller comprising:

a map cache;

a control processor coupled to the map cache and configured to:

determine a logical address, a transfer size, and map data based on the determined logical address and transfer size, associated with a received current read request from the host device;

determine, based on the determined logical address and a sequential zone defined based on one or more previous read requests, whether the current read request is a sequential read request;

adjust a map data pre-fetch size based on the transfer size of the current read request and whether the current read request is a sequential read request by adding the transfer size of the current read request with an aggregate transfer size of the one or more previous read requests when the current read request is a sequential read request;

transfer a corresponding portion of the map data from the solid-state media to the map cache, the transferred portion having a size equal to the adjusted map data pre-fetch size;

determine, based on the corresponding map data, one or more media addresses of the solid-state media associated with the determined logical address and transfer size; and

transfer user data from the one or more determined media addresses of the solid-state media to the host device.

2. The media controller of claim 1 , wherein adjusting the map data pre-fetch size further includes

set the map data pre-fetch size equal to the aggregate transfer size, to reduce a number of map data transfers between the solid-state media and the map cache to process the sequential read requests.

3. The media controller of claim 2 , wherein, by setting the map data pre-fetch size equal to the aggregate transfer size, the media controller is configured to achieve at least a 10% data throughput increase.

4. The media controller of claim 1 , wherein to adjust the map data pre-fetch size, the control processor is configured to:

when the current read request is a non-sequential read request:

set the map data pre-fetch size equal to a predefined size based on the transfer size of the current read request to reduce an amount of map data transferred between the solid-state media and the map cache to process the current read request.

5. The media controller of claim 4 , wherein the predefined size comprises a smallest amount of data needed to process the entire transfer size of the current read request.

6. The media controller of claim 1 , wherein, to transfer map data including the corresponding map data from the solid-state media to a map cache of the media controller, the media controller is configured to:

determine, based on the at least one logical address and transfer size, whether the corresponding map data is stored in the map cache;

if the required map data is stored in the map cache, the map cache is configured to return a cache index of the map cache entry storing the required map data to the control processor.

7. The media controller of claim 6 , wherein, if the corresponding map data is not stored in the map cache, the control processor is configured to:

allocate a number of entries in the map cache to store the corresponding map data, the number of allocated entries based on the adjusted map data pre-fetch size;

transfer the map data including the corresponding map data from a logical unit of the solid-state media to a local cache of the solid-state media, the transfer having a size equal to the adjusted map data pre-fetch size; and

transfer the map data including the corresponding map data from the local cache of the solid-state media to the map cache of the media controller, the transfer having a size equal to the adjusted map data pre-fetch size.

8. The media controller of claim 1 , wherein, to transfer user data from the one or more media addresses of the solid-state media to the host device, the media controller is configured to:

transfer the user data from the media addresses in a logical unit of the solid-state media to a local cache of the solid-state media;

transfer the user data from the local cache of the solid-state media to a buffer of the media controller; and

form one or more host protocol packets to transfer the user data from the buffer to the host device over a communication link operating in accordance with the host protocol.

9. The media controller of claim 8 , wherein the media controller is configured to:

when all of the user data of a read request is transferred to the host device, report completion of the read request to the host device.

10. The media controller of claim 1 , wherein the control processor is configured to:

determine whether a subsequent read request is received from the host device; and

process the subsequent read request as the current read request.

11. The media controller of claim 1 , wherein the map data comprises a multi-level map having a plurality of leaf-level map pages, the plurality of leaf-level map pages stored in the solid-state media, each leaf-level map page comprising a plurality of map entries, each entry associated with one or more physical addresses of the solid-state media.

12. The media controller of claim 1 , wherein the map data comprises a multi-level map, the multi-level map comprising:

a second-level map having a plurality of second-level map pages, each of the second-level map pages having a plurality of entries, each entry configured to store a physical address of the solid state media; and

a first-level map having a plurality of entries, each entry associated with a second-level map page, the first-level map configured to associate the at least one logical address and address range to at least one of the second-level map pages.

13. The media controller of claim 1 , wherein the sequential zone is defined based on a logical address range of the one or more previous read requests, and the current read request is within the sequential zone if the determined logical address of the current read request is within the logical address range of the one or more previous read requests.

14. The media controller of claim 1 , wherein the media controller is implemented as a System-on-Chip (SoC).

15. A method of processing, by a solid-state drive (SSD) comprising a media controller and a solid-state media, a request received from a host device, the method comprising:

determining, by a control processor of the media controller, a logical address, a transfer size, and map data based on the determined logical address and transfer size, associated with a received current read request from the host device;

determining, by the control processor, based on the determined logical address and a sequential zone defined based on one or more previous read requests, whether the current read request is a sequential read request;

adjusting, by the control processor, a map data pre-fetch size based on the transfer size of the current read request and whether the current read request is a sequential read request by adding the transfer size of the current read request with an aggregate transfer size of the one or more previous read requests when the current read request is a sequential read request;

transferring a corresponding portion of the map data from the solid-state media to a map cache coupled to the control processor, the transferred portion having a size equal to the adjusted map data pre-fetch size;

determining, based on the corresponding map data, one or more media addresses of the solid-state media associated with the determined logical address and transfer size; and

transferring user data from the one or more determined media addresses of the solid-state media to the host device.

16. The method of claim 15 , wherein adjusting the map data pre-fetch size further comprises:

setting the map data pre-fetch size equal to the aggregate transfer size, to reduce a number of map data transfers between the solid-state media and the map cache to process the sequential read requests.

17. The method of claim 16 , wherein, by setting the map data pre-fetch size equal to the aggregate transfer size, data throughput is increased at least 10%.

18. The method of claim 15 , wherein adjusting the map data pre-fetch size comprises:

when the current read request is a non-sequential read request:

setting the map data pre-fetch size equal to a predefined size based on the transfer size of the current read request to reduce an amount of map data transferred between the solid-state media and the map cache to process the current read request.

19. The method of claim 18 , wherein the predefined size comprises a smallest amount of data needed to process the entire transfer size of the current read request.

20. The method of claim 15 , wherein, transferring map data including the corresponding map data from the solid-state media to a map cache of the media controller comprises:

determining, based on the at least one logical address and transfer size, whether the corresponding map data is stored in the map cache;

if the required map data is stored in the map cache, returning, by the map cache, a cache index of the map cache entry storing the required map data to the control processor.

21. The method of claim 20 , wherein, if the corresponding map data is not stored in the map cache, the method comprises:

allocating a number of entries in the map cache to store the corresponding map data, the number of allocated entries based on the adjusted map data pre-fetch size;

transferring the map data including the corresponding map data from a logical unit of the solid-state media to a local cache of the solid-state media, the transfer having a size equal to the adjusted map data pre-fetch size; and

transferring the map data including the corresponding map data from the local cache of the solid-state media to the map cache of the media controller, the transfer having a size equal to the adjusted map data pre-fetch size.

22. The method of claim 15 , wherein, transferring user data from the one or more determined media addresses of the solid-state media to the host device comprises:

transferring the user data from the determined media addresses in a logical unit of the solid-state media to a local cache of the solid-state media;

transferring the user data from the local cache of the solid-state media to a buffer of the media controller; and

forming one or more host protocol packets to transfer the user data from the buffer to the host device over a communication link operating in accordance with the host protocol.

23. The method of claim 22 , comprising:

when all of the user data of a read request is transferred to the host device, reporting completion of the read request to the host device.

24. The method of claim 15 , comprising:

determining whether a subsequent read request is received from the host device; and

processing the subsequent read request as the current read request.

25. The method of claim 15 , wherein the map data comprises a multi-level map having a plurality of leaf-level map pages, the plurality of leaf-level map pages stored in the solid-state media, each leaf-level map page comprising a plurality of map entries, each entry associated with one or more physical addresses of the solid-state media.

26. The method of claim 15 , wherein the map data comprises a multi-level map, the multi-level map comprising:

a second-level map having a plurality of second-level map pages, each of the second-level map pages having a plurality of entries, each entry configured to store a physical address of the solid state media; and

a first-level map having a plurality of entries, each entry associated with a second-level map page, the first-level map configured to associate the at least one logical address and address range to at least one of the second-level map pages.

27. The method of claim 15 , comprising:

defining the sequential zone based on a logical address range of the one or more previous read requests, and determining that the current read request is within the sequential zone if the determined logical address of the current read request is within the logical address range of the one or more previous read requests.

28. A non-transitory machine-readable storage medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements a method of of processing, by a solid-state drive (SSD) comprising a media controller and a solid-state media, a request received from a host device, the method comprising:

determining, by a control processor of the media controller, a logical address, a transfer size, and map data based on the determined logical address and transfer size, associated with a received current read request from the host device;

determining, by the control processor, based on the determined logical address and a sequential zone defined based on one or more previous read requests, whether the current read request is a sequential read request;

adjusting, by the control processor, a map data pre-fetch size based on the transfer size of the current read request and whether the current read request is a sequential read request by adding the transfer size of the current read request with an aggregate transfer size of the one or more previous read requests when the current read request is a sequential read request;

transferring a corresponding portion of the map data from the solid-state media to a map cache coupled to the control processor, the transferred portion having a size equal to the adjusted map data pre-fetch size;

determining, based on the corresponding map data, one or more media addresses of the solid-state media associated with the determined logical address and transfer size; and

transferring user data from the one or more determined media addresses of the solid-state media to the host device.

Assignments (10)
MERGER Recorded Mar 3, 2023
From: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED; BROADCOM INTERNATIONAL PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 062952/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2020
From: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
To: BROADCOM INTERNATIONAL PTE. LTD.
Reel/Frame 053771/0901 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2013
From: ZHANG, ZHIQING; SONG, XIN; TAN, YUN SHUN; CHEN, LIN FENG; BARYUDIN, LEONID
To: LSI CORPORATION
Reel/Frame 031780/0441 →
Continuity (2)
Continuation In Part 14022781 · Sep 10, 2013
Related Publication 20150074328A1 · Mar 12, 2015