IP Library Granted Patent US 10,282,116
Granted Patent B2
US 10,282,116 · App. 15/654,361 · Granted May 7, 2019

Method and system for hardware accelerated cache flush

Inventors: Horia Simionescu (Foster City, CA); Timothy Hoglund (Colorado Springs, CO); Sridhar Rao Veerla (Bangalore, IN); Panthini Pandit (Bangalore, IN); Gowrisankar Radhakrishnan (Colorado Springs, CO)
Assignee: Avago Technologies International Sales Pte. Limited
G06F3/0619G06F3/0659G06F3/0665G06F3/0689G06F12/0831G06F12/128G06F2212/621
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 10,282,116
App. No.
15/654,361
Granted
May 7, 2019
Kind
B2
Abstract

A system and method for efficient cache flushing are provided. The disclosed method includes allocating one or more Internal Scatter Gather Lists (ISGLs) for the cache flush, populating the one or more ISGLs with Cache Segment Identifiers (CSIDs) and corresponding Buffer Segment Identifiers (BSIDs) of each strip that is identified as dirty, of a skip-type Internal Scatter Gather Element (ISGE), or of a missing arm-type ISGE. The disclosed method further includes allocating a flush Local Message Identifier (LMID) as a message to be used in connection with processing the cache flush, populating the flush LMID with an identifier of the one or more ISGLs, and transferring the flush LMID to a cache manager module to enable the cache manager module to execute the cache flush based on information contained in the flush LMID.

Claims (64)

1. A method for performing a cache flush, the method comprising:

allocating one or more Internal Scatter Gather Lists (ISGLs) for the cache flush;

populating the one or more ISGLs with Cache Segment Identifiers (CSIDs) and corresponding Buffer Segment Identifiers (BSIDs) of each strip that is identified as dirty, of a skip-type Internal Scatter Gather Element (ISGE), or of a missing arm-type ISGE;

allocating a flush Local Message Identifier (LMID) as a message to be used in connection with processing the cache flush;

populating the flush LMID with an identifier of the one or more ISGLs; and

transferring the flush LMID to a cache manager module to enable the cache manager module to execute the cache flush based on information contained in the flush LMID.

2. The method of claim 1 , further comprising:

allocating one or more RSGLs and one or more temporary buffers to read missing data and/or old data in connection with executing the cache flush; and

populating the allocated one or more RSGLs and one or more temporary buffers into the one or more ISGLs so that a single write can be issued.

3. The method of claim 2 , further comprising:

performing an XOR operation and generating one or more parity bits as a result of performing the XOR operation; and

enabling the single write step to be issued after the XOR operation instead of multiple write steps.

4. The method of claim 2 , further comprising:

segregating the one or more temporary buffers into a first set of buffers and a second set of buffers;

utilizing the first set of buffers for inner filler buffers; and

utilizing the second set of buffers for outer filler buffers.

5. The method of claim 4 , wherein the inner filler buffers are allocated from a different buffer pool than the outer filler buffers.

6. The method of claim 1 , further comprising:

freeing up one or more temporary buffers that are not required for the cache flush; and

enabling the freed one or more temporary buffers to be used for parallel read or write commands that utilize a strip or row assigned to the one or more ISGLs.

7. The method of claim 1 , wherein the cache flush is performed on a RAID 5 or RAID 6 storage volume.

8. The method of claim 1 , further comprising:

transferring the flush LMID to a RAID manager module; and

enabling the RAID manager module to read missing data into one or more RSGLs during execution of the cache flush.

9. A memory control system, comprising:

a host interface that receives one or more host Input/Output (I/O) commands;

a storage interface that enables communication with a plurality of storage devices configured in a storage array;

a microprocessor; and

memory that includes computer-readable instructions that are executable by the microprocessor, the instructions enabling performance of a cache flush and including:

instructions that allocate one or more Internal Scatter Gather Lists (ISGLs) for the cache flush;

instructions that populate the one or more ISGLs with Cache Segment Identifiers (CSIDs) and corresponding Buffer Segment Identifiers (BSIDs) of each strip that is identified as dirty, of a skip-type Internal Scatter Gather Element (ISGE), or of a missing arm-type ISGE;

instructions that allocate a flush Local Message Identifier (LMID) as a message to be used in connection with processing the cache flush;

instructions that populate the flush LMID with an identifier of the one or more ISGLs; and

instructions that transfer the flush LMID to a cache manager module to enable the cache manager module to execute the cache flush based on information contained in the flush LMID.

10. The system of claim 9 , wherein the instructions further comprise:

instructions that allocate one or more RSGLs and one or more temporary buffers to read missing data and/or old data in connection with executing the cache flush; and

instructions that populate the allocated one or more RSGLs and one or more temporary buffers into the one or more ISGLs so that a single write can be issued.

11. The system of claim 10 , wherein the instructions further comprise:

instructions that perform an XOR operation and generating one or more parity bits as a result of performing the XOR operation; and

instructions that enable the single write step to be issued after the XOR operation instead of multiple write steps.

12. The system of claim 10 , wherein the instructions further comprise:

instructions that segregate the one or more temporary buffers into a first set of buffers and a second set of buffers;

instructions that utilize the first set of buffers for inner filler buffers; and

instructions that utilize the second set of buffers for outer filler buffers.

13. The system of claim 12 , wherein the inner filler buffers are allocated from a different buffer pool than the outer filler buffers.

14. The system of claim 9 , wherein the instructions further comprise:

instructions that free up one or more temporary buffers that are not required for the cache flush; and

instructions that enable the freed one or more temporary buffers to be used for parallel read or write commands that utilize a strip or row assigned to the one or more ISGLs.

15. The system of claim 9 , wherein the cache flush is performed on a RAID 5 or RAID 6 storage volume.

16. The system of claim 9 , wherein the instructions further comprise:

instructions that transfer the flush LMID to a RAID manager module; and

instructions that enable the RAID manager module to read missing data into one or more RSGLs during execution of the cache flush.

17. A cache system, comprising:

buffer memory; and

instructions that enable management of the buffer memory to facilitate a cache update operation to be performed, the instructions including:

instructions that remove a cache segment or row from a dirty list or tree;

instructions that allocate a flush Local Message Identifier (LMID) as a message to be used in connection with performing the cache update;

instructions that allocate a data structure to hold a snapshot of cache data;

instructions that populate the flush LMID with an Internal Scatter Gather List (ISGL) ID and an ISGL index of an ISGL to be used for storing a dirty arm;

instructions that allocate one or more alias buffers to temporarily store information that is to be written to a storage device; and

instructions that cause data from the dirty arm to be written to the one or more alias buffers and then to the storage device.

18. The cache system of claim 17 , wherein the instructions further include instructions that determine the dirty arm has been written to the storage device and then free up the one or more alias buffers thereafter.

19. The cache system of claim 17 , wherein the one or more alias buffers are allocated using a read-modify-write (RMW) process.

20. The cache system of claim 17 , wherein the one or more alias buffers are allocated using a read peers process.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE OF THE MERGER AND APPLICATION NOS. 13/237,550 AND 16/103,107 FROM THE MERGER PREVIOUSLY RECORDED ON REEL 047231 FRAME 0369. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 8, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048549/0113 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047231/0369 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2017
From: SIMIONESCU, HORIA; HOGLUND, TIMOTHY; VEERLA, SRIDHAR RAO; PANDIT, PANTHINI; RADHAKRISHNAN, GOWRISANKAR
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 043047/0369 →
Continuity (1)
Related Publication 20190026033A1 · Jan 24, 2019