IP Library Granted Patent US 10,108,456
Granted Patent B2
US 10,108,456 · App. 15/014,007 · Granted Oct 23, 2018

Accelerated atomic resource allocation on a multiprocessor platform

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,108,456
App. No.
15/014,007
Granted
Oct 23, 2018
Kind
B2
Abstract

A method, system, and apparatus are provided for accelerated atomic resource allocation on a multiprocessor platform. In particular, a resource allocation engine (RAE) performs the following: counting available units for each of the one or more resources; parsing a multi-resource ticket (MRT) for a processor, wherein the parsing identifies one or more requested resource types, each resource type being paired with a requested resource units; comparing the multi-resource ticket to one or more resource queues for the requested resource types, wherein the comparing determines an availability status of at least one the requested resource types; and based on the availability status, calculating whether or not all of the requested resource types can be allocated for the processor, wherein the calculating is completed before allocating a next requested resource for a next processor.

Claims (62)

1. A method, carried out by a resource allocation engine, for allocating one or more resources for a plurality of processors, the method comprising:

counting available units for each of the one or more resources;

parsing a multi-resource ticket (MRT) for a processor, wherein the parsing identifies one or more requested resource types, each resource type being paired with one or more requested resource units;

comparing the multi-resource ticket to one or more resource queues for the requested resource types, wherein the comparing determines an availability status of at least one the requested resource types; and

based on the availability status, calculating whether or not all of the requested resource types can be allocated for the processor, wherein the calculating is completed before allocating a next requested resource for a next processor wherein the calculating further includes determining all of the requested resource types can be allocated for the processor; and

allocating the requested resource types for the processor before allocating a next requested resource for a next processor wherein the allocating comprises:

pushing a pointer from a resource queue to the multi-resource ticket and then sending the multi-resource ticket to an allocation queue for the processor, wherein the allocation queue is a first-in-first-out;

executing, with the processor, the multi-resource ticket from the allocation queue.

2. The method of claim 1 , further comprising:

after the allocating, notifying the processor that the requested resources types are allocated for the processor.

3. The method of 1 , further comprising:

receiving, from the processor, an updated multi-resource ticket having an operation code set to free, indicating the one or more requested resource types are free from allocation.

4. The method of claim 1 , further comprising:

wherein the calculating further includes determining at least one of the requested resource types cannot be allocated for the processor; and

pushing a pointer for the multi-resource ticket to a retry queue before allocating a next requested resource for a next processor, wherein the retry queue is a first-in-first-out (FIFO) queue.

5. The method of claim 1 , further comprising:

processing MRTs in a retry queue according to at least one of:

a maximum utilization of resources that are available to the resource allocation engine;

a quality of service (QoS) having a strict order of incoming requests to the resource allocation engine; or

a more precisely calculated combination of the maximum utilization and the quality of service.

6. The method of claim 1 , wherein each available resource unit is associated with a unique pointer in the resource queue.

7. The method of claim 6 , wherein counting the available resource units further comprises:

counting a number of unique pointers in the resource queue.

8. The method of claim 1 , wherein the multi-resource ticket is associated with a unique pointer in a request queue that includes pointers for a plurality of multi-resource tickets, and wherein the request queue is a first-in-first-out (FIFO) queue.

9. The method of claim 1 , wherein the multi-resource ticket is a data structure of data fields, comprising at least one of:

an identifier for the multi-resource ticket;

a callback address;

an operation code;

the requested resource type; or

the requested resource units.

10. A resource allocation engine (RAE) for allocating one or more resources for a plurality of processors, the resource allocation engine comprising:

a processor to execute instructions; and

a memory device coupled to the processor, the memory device storing instructions for execution by the processor to cause the processor to perform:

counting available units for each of the one or more resources;

parsing a multi-resource ticket (MRT) for a processor, wherein the parsing identifies one or more requested resource types, each resource type being paired with one or more requested resource units;

comparing the multi-resource ticket to one or more resource queues for the requested resource types, wherein the comparing determines an availability status of at least one the requested resource types; and

based on the availability status, calculating whether or not all of the requested resource types can be allocated for the processor, wherein the calculating is completed before allocating a next requested resource for a next processor;

allocating the requested resource types for the processor before allocating a next requested resource for a next processor wherein the allocating comprises:

pushing a pointer from a resource queue to the multi-resource ticket and then sending the multi-resource ticket to an allocation queue for the processor, wherein the allocation queue is a first-in-first-out (FIFO) queue;

executing, with the processor, the multi-resource ticket from the allocation queue.

11. The resource allocation engine of claim 10 , wherein the instructions further cause the processor to perform:

wherein the calculating further includes determining all of the requested resource types can be allocated for the processor; and

allocating the requested resource types for the processor before allocating a next requested resource for a next processor.

12. The resource allocation engine of claim 11 , wherein the allocating comprises:

pushing a pointer for the multi-resource ticket to an allocation queue for the processor, wherein the allocation queue is a first-in-first-out (FIFO) queue.

13. The resource allocation engine of claim 11 , wherein the instructions further cause the processor to perform:

after the allocating, notifying the processor that the requested resources types are allocated for the processor.

14. The resource allocation engine of claim 11 , wherein the instructions further cause the processor to perform:

receiving, from the processor, an updated multi-resource ticket having an operation code set to free, indicating the one or more requested resource types are free from allocation.

15. A computer-readable product for allocating one or more resources for a plurality of processors, the computer-readable product including a non-transitory computer-readable storage medium storing instructions that when executed perform the functions comprising:

counting available units for each of the one or more resources;

parsing a multi-resource ticket (MRT) for a processor, wherein the parsing identifies one or more requested resource types, each resource type being paired with one or more requested resource units;

comparing the multi-resource ticket to one or more resource queues for the requested resource types, wherein the comparing determines an availability status of at least one the requested resource types; and

based on the availability status, calculating whether or not all of the requested resource types can be allocated for the processor, wherein the calculating is completed before allocating a next requested resource for a next processor wherein the functions further comprise:

wherein the calculating further includes determining all of the requested resource types can be allocated for the processor; and

allocating the requested resource types for the processor before allocating the next requested resource for the next processor wherein the allocating comprises:

pushing a pointer from a resource queue to the multi-resource ticket and then sending the multi-resource ticket to an allocation queue for the processor, wherein the allocation queue is a first-in-first-out (FIFO) queue;

executing, with the processor, the multi-resource ticket from the allocation queue.

16. The computer-readable product of claim 15 , wherein the functions further comprise:

after the allocating, notifying the processor that the requested resources types are allocated for the processor.

17. The computer-readable product of claim 15 , wherein the functions further comprise:

receiving, from the processor, an updated multi-resource ticket having an operation code set to free, indicating the one or more requested resource types are free from allocation.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT SERIAL NO 15/025,946 PREVIOUSLY RECORDED AT REEL: 040831 FRAME: 0265. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 15, 2017
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 043973/0762 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2016
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 040831/0265 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 6, 2016
From: JAIN, HARSH; TOUKMAJI, ABDULNOUR
To: HGST NETHERLANDS B.V.
Reel/Frame 038199/0327 →