IP Library Granted Patent US 9,563,382
Granted Patent B2
US 9,563,382 · App. 14/814,460 · Granted Feb 7, 2017

Methods, systems, and computer readable media for providing flexible host memory buffer

Inventors: Judah Gamliel Hahn (Ofra, IL); Eran Erez (Bothell, WA); Sebastien Andre Jean (Boise, ID)
Assignee: SANDISK TECHNOLOGIES LLC
G06F3/0631G06F3/0608G06F3/0656G06F3/0685G06F12/0246G06F12/0802G06F12/0871G06F12/0873G06F2212/1016G06F2212/1021G06F2212/1041G06F2212/1044G06F2212/205G06F2212/221G06F2212/283G06F2212/311G06F2212/313G06F2212/466G06F2212/601G06F2212/608G06F2212/7201
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,563,382
App. No.
14/814,460
Granted
Feb 7, 2017
Kind
B2
Abstract

Methods, systems, and computer readable media for providing a flexible host memory buffer are disclosed. One method includes allocating an amount of host memory as a host memory buffer accessible by a solid state drive (SSD) as a cache for SSD data. The method further includes caching data from the solid state drive in the host memory buffer. The method further includes monitoring utilization of the host memory buffer. The method further includes dynamically increasing or decreasing the amount of host memory allocated for the host memory buffer based on the utilization.

Claims (38)

1. A method for providing a flexible host memory buffer, the method comprising:

allocating an amount of host memory as a host memory buffer accessible by a solid state drive (SSD) as a cache for SSD data;

caching data from the solid state drive in the host memory buffer;

monitoring utilization of the host memory buffer, wherein monitoring utilization of the host memory buffer includes determining a ratio of swaps between the host memory buffer and the SSD to host reads of data stored on the SSD; and

dynamically increasing or decreasing the amount of host memory allocated for the host memory buffer based on the utilization, wherein dynamically increasing or decreasing the amount of host memory allocated for the host memory buffer includes increasing the amount of host memory allocated for the host memory buffer if the ratio indicates that accesses to the host memory buffer are a performance bottleneck.

2. The method of claim 1 wherein allocating the amount of host memory for use as the host memory buffer includes performing an initial allocation of host memory space at startup of a host computing system.

3. The method of claim 1 wherein caching data from the SSD in the host memory buffer includes caching flash translation layer (FTL) tables in the host memory buffer.

4. The method of claim 3 wherein monitoring utilization of the host memory buffer includes determining whether a current workload on the host memory buffer includes swaps of the FTL tables.

5. The method of claim 4 comprising, in response to determining that the workload includes swaps of the FTL tables, determining whether a current size of the host memory buffer is sufficient.

6. The method of claim 5 wherein determining whether a current size of the host memory buffer is sufficient includes determining whether a ratio of swaps between SSD memory and the host memory buffer and host reads has a predetermined relationship with respect to a threshold.

7. The method of claim 5 comprising, in response to determining that the current size of the host memory buffer is not sufficient, dynamically increasing the size of the host memory buffer.

8. The method of claim 4 comprising, in response to determining that the workload does not include swaps of the FTL tables, determining whether the current workload relating to accesses to the host memory buffer is CPU intensive.

9. The method of claim 8 wherein determining whether the current workload is CPU intensive includes determining whether a ratio of CPU cycles to CPU cycles relating to accesses to the host memory buffer has a predetermined relationship with respect to a threshold.

10. The method of claim 8 comprising, in response to determining that the workload is CPU intensive, dynamically reducing the amount of host memory allocated for the host memory buffer.

11. A system for providing a flexible host memory buffer, the system comprising:

a solid state drive (SSD);

a host memory including a host memory buffer accessible by the solid state drive as a cache for SSD data, wherein the solid state drive is configured to cache data from the solid state drive in the host memory buffer;

a workload analyzer for monitoring utilization of the host memory buffer, wherein monitoring utilization of the host memory buffer includes determining a ratio of swaps between the host memory buffer and the SSD to host reads of data stored on the SSD; and

a host memory buffer manager for dynamically increasing or decreasing the amount of host memory allocated for the host memory buffer based on the utilization, wherein dynamically increasing or decreasing the amount of host memory allocated for the host memory buffer includes increasing the amount of host memory allocated for the host memory buffer if the ratio indicates that accesses to the host memory buffer are a performance bottleneck.

12. The system of claim 11 wherein the SSD is configured to cache flash translation layer (FTL) tables in the host memory buffer.

13. The system of claim 12 wherein the workload analyzer is configured to determine whether a current workload on the host memory buffer includes swaps of the FTL tables.

14. The system of claim 13 wherein, in response to determining that the workload includes swaps of the FTL tables, the workload analyzer is configured to determine whether a current size of the host memory buffer is sufficient.

15. The system of claim 14 wherein the workload analyzer is configured to determine whether the current workload is random I/O intensive based on whether a ratio of swaps between SSD memory and the host memory buffer and host reads has a predetermined relationship with respect to a threshold.

16. The system of claim 14 wherein, in response to determining that the current size of the host memory buffer is not sufficient, the host memory buffer manager is configured to dynamically increase the size of the host memory buffer.

17. The system of claim 13 wherein, in response to determining that the workload does not include swaps of the FTL tables, the workload analyzer is configured to determine whether the current workload relating to accesses to the host memory buffer is CPU intensive.

18. The system of claim 17 wherein the workload analyzer is configured to determine whether the current workload is CPU intensive based on whether a ratio of CPU cycles to CPU cycles relating to accesses to the host memory buffer has a predetermined relationship with respect to a threshold.

19. The system of claim 17 wherein, in response to a determination that the workload is CPU intensive, the host memory buffer manager is configured to reduce the amount of host memory allocated for the host memory buffer.

20. A non-transitory computer readable medium having stored thereon executable instructions that when accessed by the processor a computer control the computer to perform steps comprising:

allocating an amount of host memory as a host memory buffer accessible by a solid state drive (SSD) as a cache for SSD data;

caching data from the solid state drive in the host memory buffer;

monitoring utilization of the host memory buffer, wherein monitoring utilization of the host memory buffer includes determining a ratio of swaps between the host memory buffer and the SSD to host reads of data stored on the SSD; and

dynamically increasing or decreasing the amount of host memory allocated for the host memory buffer based on the utilization, wherein dynamically increasing or decreasing the amount of host memory allocated for the host memory buffer includes increasing the amount of host memory allocated for the host memory buffer if the ratio indicates that accesses to the host memory buffer are a performance bottleneck.

21. A method for allocating and reclaiming space for a host cache, the method comprising:

allocating an initial amount of host memory space for use as a host cache accessible by a solid state drive (SSD);

determining whether the host needs some or all of the space allocated for the host cache;

in response to determining that the host needs some or all of the memory space allocated for the host cache, reclaiming, by the host system, at least some of the memory space allocated for the host cache;

monitoring, by the host system, utilization of the host cache, wherein monitoring utilization of the host cache includes determining a ratio of swaps between the host memory buffer and the SSD to host reads of data stored on the SSD; and

dynamically increasing or decreasing the amount of host memory allocated for the host cache based on the utilization, wherein dynamically increasing or decreasing the amount of host memory allocated for the host cache includes increasing the amount of host memory allocated for the host cache if the ratio indicates that accesses to the host cache are a performance bottleneck.

Assignments (5)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 →
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 038812/0954 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2015
From: HAHN, JUDAH GAMLIEL; EREZ, ERAN; JEAN, SEBASTIEN ANDRE; DESAI, GIRISH BHAURAO; DHULIPALA, VENKATA KRISHNA NADH
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 036790/0243 →
Continuity (2)
Continuation In Part 14297563 · Jun 5, 2014
Related Publication 20160026406A1 · Jan 28, 2016