IP Library Granted Patent US 9,141,527
Granted Patent B2
US 9,141,527 · App. 13/406,287 · Granted Sep 22, 2015

Managing cache pools

Inventors: David Atkisson (Draper, UT); David Flynn (Sandy, UT)
Assignee: Intelligent Intellectual Property Holdings 2 LLC
G06F12/0246G06F12/0802G06F12/0895G06F12/126
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,141,527
App. No.
13/406,287
Granted
Sep 22, 2015
Kind
B2
Abstract

Apparatuses, systems, and methods are disclosed for managing cache pools. A storage request module monitors storage requests received by a cache. The storage requests include read requests and write requests. A read pool module adjusts a size of a read pool of the cache to increase a read hit rate of the storage requests. A dirty write pool module adjusts a size of a dirty write pool of the cache to increase a dirty write hit rate of the storage requests.

Claims (37)

1. A method comprising:

monitoring storage requests received by a cache, the storage requests comprising read requests and write requests;

adjusting a size of a read pool of the cache to increase a read hit rate of the storage requests; and

adjusting a size of a dirty write pool of the cache to increase a dirty write hit rate of the storage requests,

wherein adjusting the size of the read pool and the dirty write pool comprises reducing a target pool size in response to a miss for a corresponding one of the read pool and the dirty write pool.

2. The method of claim 1 , further comprising determining a target read pool size for the read pool and a target dirty write pool size for the dirty write pool based on the monitored storage requests received by the cache.

3. The method of claim 2 , wherein adjusting the size of the read pool comprises selecting data for eviction from the cache based at least partially on a difference between an actual read pool size and the target read pool size.

4. The method of claim 3 , wherein the read pool of the cache comprises a recent read pool and a frequent read pool and adjusting the size of the read pool further comprises increasing a target recent read pool size of the recent read pool in response to a read hit in the recent read pool, requested data transitioning from the recent read pool to the frequent read pool in response to a frequent read threshold number of read hits for the requested data in the recent read pool.

5. The method of claim 3 , wherein adjusting the size of the read pool further comprises reducing the target read pool size in response to a read miss, the actual size of the read pool increasing in response to caching data of the read miss in the cache.

6. The method of claim 2 , wherein adjusting the size of the dirty write pool of the cache comprises destaging dirty write data from the dirty write pool of the cache at a destage rate, the destage rate based on a difference between an actual dirty write pool size and the target dirty write pool size.

7. The method of claim 6 , further comprising setting the destage rate such that the size of the dirty write pool remains within a maximum dirty write pool size of the dirty write pool.

8. The method of claim 6 , wherein adjusting the size of the dirty write pool further comprises increasing the target dirty write pool size in response to a dirty write hit.

9. The method of claim 6 , wherein adjusting the size of the dirty write pool further comprises increasing the target dirty write pool size in response to a clean write hit.

10. The method of claim 6 , wherein adjusting the size of the dirty write pool further comprises decreasing the target dirty write pool size in response to a write miss, the actual size of the dirty write pool increasing in response to servicing a write request of the write miss.

11. The method of claim 1 , wherein the read pool of the cache comprises a recent read pool and a frequent read pool, adjusting the size of the read pool comprises adjusting a size of the recent read pool to increase the read hit rate of the storage requests, and adjusting the size of the read pool further comprises adjusting a size of the frequent read pool to increase the read hit rate of the storage requests.

12. The method of claim 1 , further comprising adjusting a size of a clean write pool of the cache to increase the read hit rate and the dirty write hit rate of the storage requests, wherein adjusting the size of the clean write pool of the cache comprises adjusting a destage rate at which data is moved from the dirty write pool to the clean write pool to increase the dirty write hit rate and adjusting an eviction rate at which data is evicted from the clean write pool to increase the read hit rate.

13. The method of claim 1 , further comprising,

reading requested data from the cache to service a read request; and

writing the requested data forward on a sequential log-based writing structure of the cache in response to the read request.

14. The method of claim 13 , wherein the read request satisfies a frequent read threshold number of read hits for the requested data, the requested data transitioning from a recent read pool of the read pool to a frequent read pool of the read pool in response to the read request.

15. The method of claim 1 , further comprising maintaining metadata for evicted data, the evicted data comprising read data from the read pool and clean write data destaged from the dirty write pool.

16. The method of claim 15 , wherein the metadata comprises one or more entries for the evicted data in a mapping structure, the mapping structure mapping logical addresses of the cache to locations on physical storage media of the cache, the metadata for the evicted data indicating that the physical storage media of the cache does not currently store the evicted data.

17. The method of claim 15 , further comprising adding the evicted data to a frequent read pool of the read pool of the cache, based on the metadata for the evicted data, in response to a subsequent read request for the evicted data.

18. An apparatus comprising:

a storage request module configured to monitor storage requests received by a cache, the storage requests comprising read requests and write requests;

a read pool module configured to determine a target read pool size for a read pool of the cache to increase a read hit rate of the storage requests, wherein determining the target read pool size comprises reducing the target read pool size in response to a read miss;

an eviction module configured to select data for eviction from the cache based at least partially on a difference between an actual read pool size and the target read pool size;

a dirty write pool module configured to determine a target dirty write pool size for a dirty write pool of the cache to increase a dirty write hit rate of the storage requests; and

a destage module configured to adjust a destage rate for destaging dirty write data from the dirty write pool of the cache, the destage module configured to adjust the destage rate based on a difference between an actual dirty write pool size and the target dirty write pool size.

19. The apparatus of claim 18 , further comprising a clean write pool module configured to determine a target clean write pool size for a clean write pool of the cache based on the monitored storage requests, wherein the eviction module is configured to select the data for eviction from the cache based at least partially on a difference between an actual clean write pool size and the target clean write pool size.

20. A system comprising:

a processor;

a storage controller for a nonvolatile solid-state storage device, the nonvolatile solid-state storage device in communication with the processor over one or more communications buses;

a cache controller in communication with the storage controller, the cache controller comprising,

a storage request module configured to monitor storage requests received by the cache controller, the storage requests comprising read requests and write requests;

a read pool module configured to adjust a size of a read pool of the cache to increase a read hit rate of the storage requests; and

a dirty write pool module configured to adjust a size of a dirty write pool of the cache to increase a dirty write hit rate of the storage requests, wherein adjusting the size of the dirty write pool comprises reducing a target dirty write pool size in response to a write miss.

Assignments (12)
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 038807/0898 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033390/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2012
From: ATKISSON, DAVID; FLYNN, DAVID
To: FUSION-IO, INC.
Reel/Frame 027769/0868 →
Continuity (2)
Provisional Application 61446889 · Feb 25, 2011
Related Publication 20120221774A1 · Aug 30, 2012