IP Library Granted Patent US 9,632,843
Granted Patent B1
US 9,632,843 · App. 14/691,011 · Granted Apr 25, 2017

Memory allocation for RAID systems

Inventors: Jesslly Wong (Vancouver, CA); Raymond Lam (Vancouver, CA); Tao Zhong (Coquitlam, CA)
Assignee: Microsemi Storage Solutions (U.S.), Inc.
G06F9/524G06F3/0619G06F3/0665G06F3/0689G06F12/1475
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,632,843
App. No.
14/691,011
Granted
Apr 25, 2017
Kind
B1
Abstract

A method and system for allocating memory in a RAID system. A RAID system requires the use of shared memory to store processed data related to operations of different mass storage devices. Certain RAID algorithms require different sizes of memory regions of the memory, and multiple requests to lock the required memory regions are therefore required. As multiple requests are made in parallel for different operations, the multiple requests for each operation are sorted in a predetermined order. This ensures that all memory regions for one operation can be locked. Requests for memory regions locked by a second operation are held in a pending state to wait for release of those memory regions by a first operation, at which point they are locked again by the second operation.

Claims (34)

1. A method for arbitrating allocation of a memory in a RAID controller having a plurality of Physical Layer circuits (PHYs), the memory having a plurality of regions each identified by a memory region number, the method comprising:

generating a first plurality of lock requests for a first PHY of the RAID controller, each of the lock requests of the first plurality of lock requests comprising at least one memory region number;

generating a second plurality of lock requests for a second PHY of the RAID controller, each of the lock requests of the second plurality of lock requests comprising at least one memory region number;

sorting each of the first and second plurality of lock requests in a predetermined order;

adding the first plurality of lock requests and the second plurality of lock requests in the predetermined order onto a request stack such that the first plurality of lock requests and the second plurality of lock requests are in an at least partially interleaved order; and

processing the first and second plurality of lock requests in the at least partially interleaved order to allocate memory corresponding to the memory region numbers of the lock requests.

2. The method of claim 1 , wherein a first processor is associated with a first PHY of the plurality of PHYs and a second processor is associated with the second PHY of the plurality of PHYs, and each of the first and second processors independently:

generates the respective plurality of lock requests;

sorts the respective plurality of lock requests in the predetermined order; and

adds the respective plurality of lock requests to the request stack in the at least partially interleaved order.

3. The method of claim 2 , wherein processing includes granting the memory regions of the respective lock request when the memory regions of the memory are available.

4. The method of claim 3 , wherein processing includes denying granting the memory regions of the respective lock request when the memory regions of the memory are locked.

5. The method of claim 4 , wherein a denied lock request remains pending until the memory regions of the memory are released.

6. The method of claim 1 , wherein the predetermined order is from lowest memory region number to highest memory region number.

7. The method of claim 1 , wherein the predetermined order is from highest memory region number to lowest memory region number.

8. The method of claim 1 , wherein each lock request includes a pair of sequential memory region numbers.

9. A RAID controller for arbitrating memory allocation, comprising:

a plurality of Physical Layer circuits (PHYs);

a memory comprising a plurality of memory regions each identified by a respective memory region number;

a request stack for queueing lock requests;

a plurality of processors each associated with a particular PHY of said plurality of PHYs, each said processor configured to:

generate a plurality of lock requests for the particular PHY associated with the processor, each of the lock requests comprising at least one memory region number;

sort the plurality of lock requests of the particular PHY associated with the processor in a predetermined order; and

add the plurality of lock requests of the particular PHY associated with the processor onto the request stack in the predetermined order such that the lock requests of the particular PHY associated with the processor and the lock requests of another PHY associated with another processor are in an at least partially interleaved order; and,

a lock request processing engine for processing the lock requests of each of the PHYs associated with the plurality of processors in the at least partially interleaved order to allocate the memory regions corresponding to the memory region numbers of the lock requests.

10. The RAID controller of claim 9 , wherein the memory region numbers are derived from a Super Descriptor Sequence (SDS) and each processor includes a hash engine for hashing a code of the SDS into a memory region number.

11. The RAID controller of claim 10 , wherein each processor includes a lock request generator configured to generate the plurality of lock requests.

12. The RAID controller of claim 11 , wherein each processor includes a memory request sorter for sorting the plurality of lock requests generated by the lock request generator into the predetermined order.

13. The RAID controller of claim 12 , wherein the predetermined order is from lowest memory region number to highest memory region number.

14. The RAID controller of claim 12 , wherein the predetermined order is from highest memory region number to lowest memory region number.

15. The RAID controller of claim 12 , wherein each lock request includes a pair of sequential memory region numbers.

16. The RAID controller of claim 9 , wherein the lock request processing engine processes the lock requests by granting the lock requests when the memory regions corresponding to the memory region numbers of the lock requests are available.

17. The RAID controller of claim 9 , wherein the lock request processing engine processes the lock requests by denying the lock requests when the memory regions corresponding to the memory region numbers of the lock requests are locked.

18. The RAID controller of claim 17 , wherein the denied lock requests remain pending until the memory regions corresponding to the memory region numbers of the lock requests are released.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded May 29, 2018
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: MICROSEMI STORAGE SOLUTIONS, INC.; MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
Reel/Frame 046251/0271 →
CHANGE OF NAME Recorded Jun 16, 2017
From: MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
To: MICROSEMI SOLUTIONS (U.S.), INC.
Reel/Frame 042836/0046 →
CHANGE OF NAME Recorded Mar 22, 2016
From: PMC-SIERRA US, INC.
To: MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
Reel/Frame 038213/0291 →
PATENT SECURITY AGREEMENT Recorded Feb 3, 2016
From: MICROSEMI STORAGE SOLUTIONS, INC. (F/K/A PMC-SIERRA, INC.); MICROSEMI STORAGE SOLUTIONS (U.S.), INC. (F/K/A PMC-SIERRA US, INC.)
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037689/0719 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 20, 2015
From: LAM, RAYMOND
To: PMC-SIERRA US, INC.
Reel/Frame 037102/0408 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 20, 2015
From: ZHONG, TAO
To: PMC-SIERRA US, INC.
Reel/Frame 037102/0402 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 20, 2015
From: WONG, JESSLLY
To: PMC-SIERRA US, INC.
Reel/Frame 037102/0415 →