IP Library Granted Patent US 8,868,845
Granted Patent B1
US 8,868,845 · App. 13/077,429 · Granted Oct 21, 2014

Dynamic single/multi-reader, single-writer spinlocks

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 8,868,845
App. No.
13/077,429
Granted
Oct 21, 2014
Kind
B1
Abstract

Example embodiments of the present invention include a method, system and computer program product for managing spinlocks in a multi-core computer system. The method comprises providing a spinlock per core in the multi-core computer system and storing each spinlock in a respective memory location configured to be access independently by respective cores of the multi-core computer system. A request is then received at a core in the multi-core computer system to perform an operation on a spinlock in the multi-core computer system. A multi-reader/single writer spinlock is obtained in response to the request.

Claims (45)

1. A method comprising:

providing a spinlock per core in a multi-core computer system;

storing each spinlock in a respective memory location configured to be accessed independently by respective cores of the multi-core computer system;

receiving a request at a core in the multi-core computer system to perform an operation on a spinlock in the multi-core computer system;

obtaining a multi-reader/single writer spinlock in response to the request;

monitoring requests to perform operations on spinlocks in the multi-core computer system; and

managing selection of a single reader/single writer spinlock and the multi-reader/single writer spinlock by analyzing a number of requests to perform operations on spinlocks, obtaining multi-reader/single writer spinlocks if the number of requests to perform operations indicates that multi-reader/single writer spinlocks are more efficient than single reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks, and obtaining single reader/single writer spinlocks if the number of requests to perform operations indicates that single reader/single writer spinlocks are more efficient than multi-reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks.

2. The method of claim 1 wherein obtaining a multi-reader/single writer spinlock in response to the request comprises:

if the request is a read request, obtaining a spinlock allocated to the core in the multi-core computer system; and

if the request is a write request, obtaining spinlocks allocated to each core in the multi-core computer system.

3. The method of claim 2 wherein the core in the multi-core computer system is a first core in the multi-core computer system, the method further comprising:

receiving a subsequent read request for the same spinlock from a second core in the multi-core computer system; and

setting a subsequent read lock in a memory location allocated to the second core in the multi-core computer system.

4. The method of claim 1 wherein the request is a write request and wherein acquiring a spinlock from a plurality of spinlocks comprises setting write locks in memory locations allocated to each core of the multi-core computer system.

5. The method of claim 1 wherein analyzing a number of requests to perform operations on spinlocks includes determining a number of read operations and wherein obtaining multi-reader/single writer spinlocks if the number of requests to perform operations indicates that multi-reader/single writer spinlocks are more efficient than single reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks includes obtaining multi-reader/single writer spinlocks if the number of read operations exceeds a threshold.

6. The method of claim 1 wherein analyzing a number of requests to perform operations on spinlocks includes determining a number of read/write and write operations and wherein obtaining multi-reader/single writer spinlocks if the number of requests to perform operations indicates that multi-reader/single writer spinlocks are more efficient than single reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks includes obtaining single reader/single writer spinlocks if the number of read/write and write operations exceeds a threshold.

7. The method of claim 1 wherein the operations on spinlocks include performing compare and swap operations.

8. The method of claim 1 further comprising storing a state of the multi-reader/single writer spinlock.

9. A multi-core computer system comprising:

a plurality of cores; and

memory storing computer-executable logic that, when executed by the multi-core computer system, causes the multi-core computer system to perform the operations of:

providing a spinlock per core in the multi-core computer system;

storing each spinlock in a respective memory location configured to be accessed independently by respective cores of the multi-core computer system;

receiving a request at a core in the multi-core computer system to perform an operation on a spinlock in the multi-core computer system;

obtaining a multi-reader/single writer spinlock in response to the request;

monitoring requests to perform operations on spinlocks in the multi-core computer system; and

managing selection of a single reader/single writer spinlock and the multi-reader/single writer spinlock by analyzing a number of requests to perform operations on spinlocks, obtaining multi-reader/single writer spinlocks if the number of requests to perform operations indicates that multi-reader/single writer spinlocks are more efficient than single reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks, and obtaining single reader/single writer spinlocks if the number of requests to perform operations indicates that single reader/single writer spinlocks are more efficient than multi-reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks.

10. The multi-core computer system of claim 9 wherein obtaining a multi-reader/single writer spinlock in response to the request comprises:

if the request is a read request, obtaining a spinlock allocated to the core in the multi-core computer system; and

if the request is a write request, obtaining spinlocks allocated to each core in the multi-core computer system.

11. The multi-core computer system of claim 10 wherein the core in the multi-core computer system is a first core in the multi-core computer system and wherein the memory stores further computer-executable logic that, when executed by the multi-core computer system, causes the multi-core computer system to perform the further operations of:

receiving a subsequent read request for the same spinlock from a second core in the multi-core computer system; and

setting a subsequent read lock in a memory location allocated to the second core in the multi-core computer system.

12. The multi-core computer system of claim 9 wherein the request is a write request and wherein acquiring a spinlock from a plurality of spinlocks comprises setting write locks in memory locations allocated to each core of the multi-core computer system.

13. The multi-core computer system of claim 9 wherein analyzing a number of requests to perform operations on spinlocks includes determining a number of read operations and wherein obtaining multi-reader/single writer spinlocks if the number of requests to perform operations indicates that multi-reader/single writer spinlocks are more efficient than single reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks includes obtaining multi-reader/single writer spinlocks if the number of read operations exceeds a threshold.

14. The multi-core computer system of claim 9 wherein analyzing a number of requests to perform operations on spinlocks includes determining a number of read/write and write operations and wherein obtaining multi-reader/single writer spinlocks if the number of requests to perform operations indicates that multi-reader/single writer spinlocks are more efficient than single reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks includes obtaining single reader/single writer spinlocks if the number of read/write and write operations exceeds a threshold.

15. The multi-core computer system of claim 9 wherein the operations on spinlocks include performing compare and swap operations.

16. The multi-core computer system of claim 9 wherein the memory stores further computer-executable logic that, when executed by the multi-core computer system, causes the multi-core computer system to perform the further operation of storing a state of the multi-reader/single writer spinlock.

17. A computer program product including a non-transitory computer readable storage medium having computer program code stored thereon for managing spinlocks in a multi-core computer system, the computer program product comprising:

computer program code for providing a spinlock per core in the multi-core computer system;

computer program code for storing each spinlock in a respective memory location configured to be accessed independently by respective cores of the multi-core computer system;

computer program code for receiving a request at a core in the multi-core computer system to perform an operation on a spinlock in the multi-core computer system;

computer program code for obtaining a multi-reader/single writer spinlock in response to the request;

computer program code for monitoring requests to perform operations on spinlocks in the multi-core computer system; and

computer program code for managing selection of a single reader/single writer spinlock and the multi-reader/single writer spinlock by analyzing a number of requests to perform operations on spinlocks, obtaining multi-reader/single writer spinlocks if the number of requests to perform operations indicates that multi-reader/single writer spinlocks are more efficient than single reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks, and obtaining single reader/single writer spinlocks if the number of requests to perform operations indicates that single reader/single writer spinlocks are more efficient than multi-reader/single writer spinlocks for processing the number of requests to perform operations on spinlocks.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL USA L.P.; ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2011
From: HARVEY, DAVID W.
To: EMC CORPORATION
Reel/Frame 026448/0167 →