IP Library Granted Patent US 10,915,478
Granted Patent B2
US 10,915,478 · App. 16/385,367 · Granted Feb 9, 2021

Method and apparatus for scatter gather processing engine in a storage controller for caching applications

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,915,478
App. No.
16/385,367
Granted
Feb 9, 2021
Kind
B2
Abstract

The disclosure relates generally to improvements in caching operations in storage controllers, including caching operations utilizing direct memory access (DMA) systems, and related devices. Rather than the firmware running on the processor of the storage controller having to traverse a dirty cache sector bitmap and manipulate an original scatter-gather (SG) list in order to generate the two separate SG lists, namely one for the cache and one for the storage device, these operations are offloaded onto new specialized hardware referred to herein as a smart DMA engine in order to free up the processor of the storage controller.

Claims (42)

1. A smart direct memory access (DMA) engine module for a storage controller, the module comprising:

a descriptor fetch circuit module for obtaining a DMA descriptor for a DMA read or write request to a storage device, the DMA descriptor including first address information for a host scatter-gather (SG) list and second address information for a dirty sector bitmap, the host SG list comprising one or more SG elements each including address information and size information for a fragment of memory covered by the DMA read or write request, and the dirty sector bitmap indicating dirty sectors in a cache of the storage controller having invalid data relative to corresponding sectors in the storage device;

a host SG list walker circuit module configured to read information from the host SG list;

a bitmap walker circuit module configured to read information from the dirty sector bitmap;

a new SG list generator circuit module configured to generate at least one new SG list for the cache or for the storage device, the new SG list comprising a SG element for each fragment or portion of fragment of memory covered by the DMA read or write request comprising valid data to be read from the respective one of the cache or the storage device, the new SG list being generated based on the information read from the host SG list and the dirty sector bitmap, the new SG list being different than the host SG list; and

a DMA engine circuit module configured to perform the DMA read or write based on the at least one new SG list.

2. The smart DMA engine module of claim 1 , wherein the new SG list generator circuit module is further configured to generate at least one trashing SG element in the new SG list for a fragment or portion of fragment of memory covered by the DMA read or write request comprising invalid data in the respective one of the cache or the storage device, the trashing SG element indicating that the invalid data read from the one of the cache and the storage device is to be trashed.

3. The smart DMA engine module of claim 2 , wherein the DMA engine circuit module is configured to perform the DMA read or write in part by trashing invalid data read from the one of the cache and the storage device in response to the at least one trashing SG element in the at least one new SG list.

4. The smart DMA engine module of claim 1 , further comprising a main circuit module in communication with and for controlling and coordinating the operations of the descriptor fetch circuit module, the host SG list walker circuit module, the bitmap walker circuit module, and the new SG list generator circuit module, the main circuit module operable to generate the at least one new SG list for the cache or for the storage device by indicating to the bitmap walker circuit module to load the first SG element of the host SG list and start walking, indicating to the bitmap walker circuit module to load the dirty sector bitmap, initialize calculations, and start shifting, and indicating to the DMA engine circuit module to start performing the DMA read or write.

5. The smart DMA engine module of claim 1 , wherein the new SG list generator circuit module is configured generate a new SG list for the cache and a new SG list for the storage device.

6. The smart DMA engine module of claim 5 , wherein the DMA descriptor comprises a bit offset value indicating the start of bitmap information for the DMA read or write request within the dirty sector bitmap.

7. The smart DMA engine module of claim 1 , wherein the DMA descriptor comprises a trash polarity bit value indicating whether dirty sectors in the cache are indicated with a value of 0 or 1 in the dirty sector bitmap, and wherein the new SG list generator circuit module is configured to use the trash polarity bit value when generating the at least one new SG list.

8. The smart DMA engine module of claim 1 , wherein the DMA descriptor comprises a bitmap sector size value indicating the size of sectors in the dirty sector bitmap.

9. The smart DMA engine module of claim 1 , wherein the descriptor fetch circuit module is configured to obtain the DMA descriptor directly from a main memory of the storage controller.

10. A method for execution by a smart direct memory access (DMA) engine module for a storage controller, the method comprising:

obtaining a DMA descriptor for a DMA read or write request to a storage device, the DMA descriptor including first address information for a host scatter-gather (SG) list and second address information for a dirty sector bitmap, the host SG list comprising one or more SG elements each including address information and size information for a fragment of memory covered by the DMA read or write request, and the dirty sector bitmap indicating dirty sectors in a cache of the storage controller having invalid data relative to corresponding sectors in the storage device;

reading information from the host SG list;

reading information from the dirty sector bitmap;

generating at least one new SG list for the cache or for the storage device, the new SG list comprising a SG element for each fragment or portion of fragment of memory covered by the DMA read or write request comprising valid data to be read from the respective one of the cache or the storage device, the new SG list being generated based on the information read from the host SG list and the dirty sector bitmap, the new SG list being different than the host SG list; and

performing the DMA read or write based on the at least one new SG list.

11. The method of claim 10 , further comprising generating at least one trashing SG element in the new SG list for a fragment or portion of fragment of memory covered by the DMA read or write request comprising invalid data in the respective one of the cache or the storage device, the trashing SG element indicating that the invalid data read from the one of the cache and the storage device is to be trashed.

12. The method of claim 11 , further comprising performing the DMA read or write in part by trashing invalid data read from the one of the cache and the storage device in response to the at least one trashing SG element in the at least one new SG list.

13. The method of claim 10 , further comprising obtaining the DMA descriptor directly from a main memory of the storage controller.

14. The method of claim 13 , wherein the smart DMA engine module is separate from a central processing unit of the storage controller.

15. A storage controller comprising;

a host interface adapter configured to be coupled to a host computer;

a storage interface adapter configured to be coupled to a storage device external to the storage controller;

a processor coupled to the host interface adapter and to the storage interface adapter, the processor configured to control and access the storage device based on read and write commands sent from the host computer;

a cache;

a memory; and

a smart direct memory access (DMA) engine module comprising:

a descriptor fetch circuit module for obtaining a DMA descriptor for a DMA read or write request to the storage device, the DMA descriptor including first address information for a host scatter-gather (SO) list and second address information for a dirty sector bitmap, the host SG list comprising one or more SO elements each including address information and size information for a fragment of memory covered by the DMA read or write request, and the dirty sector bitmap indicating dirty sectors in a cache of the storage controller having invalid data relative to corresponding sectors in the storage device,

a host SG list walker circuit module configured to read information from the host SG list,

a bitmap walker circuit module configured to read information from the dirty sector bitmap,

a new SG list generator circuit module configured to generate at least one new SG list for the cache or for the storage device, the new SG list comprising a SG element for each fragment or portion of fragment of memory covered by the DMA read or write request comprising valid data to be read from the respective one of the cache or the storage device, the new SG list being generated based on the information read from the host SG list and the dirty sector bitmap, the new SG list being different than the host SG list, and

a DMA engine circuit module configured to perform the DMA read or write based on the at least one new SG list.

16. The storage controller of claim 15 wherein the DMA engine module is operable to start performing the DMA read or write after the new SG list generator circuit module begins generating the at least one new SG list and before the new SG list generator finishes generating the at least one new SG list.

17. The storage controller of claim 16 wherein the DMA engine module includes a main circuit module that is coupled to the DMA engine module, the main circuit module operable for managing parallel optimization to control when the DMA engine module starts performing the DMA read or write.

18. The storage controller of claim 16 wherein the DMA engine module includes a main circuit module that is coupled to the DMA engine module, the main circuit module separate from the processor and operable independently of the processor to generate at least one new SG list for the cache or for the storage device by indicating to the bitmap walker circuit module to load the first SG element of the host SG list and start walking, indicating to the bitmap walker circuit module to load the dirty sector bitmap, initialize calculations, and start shifting, and indicating to the DMA engine circuit module to start performing the DMA read or write.

19. The storage controller of claim 18 further comprising a bus coupled to the host interface adapter, the storage interface adapter, the processor, the cache and the memory,

wherein the host SG list walker circuit is coupled to the bus and is operable independently of the processor, in response to input from the main circuit module to initiate read cycles to pull in individual SG element data from the bus.

20. The storage controller of claim 18 wherein the smart DMA engine module is separate from the processor and wherein the descriptor fetch circuit module is operable independently of the processor to obtain the DMA descriptor directly from the memory in response to input from the main circuit module.

Assignments (12)
RELEASE OF SECURITY INTEREST Recorded Mar 14, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 060894/0437 →
RELEASE OF SECURITY INTEREST Recorded Mar 10, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059863/0400 →
RELEASE OF SECURITY INTEREST Recorded Mar 9, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059358/0335 →
RELEASE OF SECURITY INTEREST Recorded Feb 28, 2022
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059263/0001 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 19, 2021
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 058214/0625 →
SECURITY INTEREST Recorded Jun 4, 2021
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 057935/0474 →
SECURITY INTEREST Recorded Dec 24, 2020
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 055671/0612 →
SECURITY INTEREST Recorded Jun 5, 2020
From: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 052856/0909 →
SECURITY INTEREST Recorded Jun 5, 2020
From: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 053468/0705 →
RELEASE OF SECURITY INTEREST Recorded May 30, 2020
From: JPMORGAN CHASE BANK, N.A, AS ADMINISTRATIVE AGENT
To: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 053466/0011 →
SECURITY INTEREST Recorded Apr 24, 2020
From: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 053311/0305 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2019
From: CHAFIN, CRAIG; SUNDARAM, ARUNKUMAR
To: MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 048895/0606 →