Optimization of data locks for improved write lock performance and CPU cache usage in multi core architectures
First Claim
1. A method for data access by a CPU, the method comprising the steps of:
- (a) a reader performing a first writer-present flag status check, and if said first writer-present, flag status check determines that said writer-present flag is;
(i) set, repeating said step of checking;
or(ii) cleared, initially acquiring said read-lock,(b) subsequent to said initially acquiring said read-lock, said reader performing, a second writer-present flag status check, and(c) if said second writer-present flag status check determines that said writer present flag is;
(i) set, releasing said read-lock and repeating said first writer-present flag status check;
or(ii) cleared, maintaining said read-lock.
1 Assignment
0 Petitions
Accused Products
Abstract
Data access optimization features the innovative use of a writer-present flag when acquiring read-locks and write-locks. Setting a writer-present flag indicates that a writer desires to modify a particular data. This serves as an indicator to readers and writers waiting to acquire read-locks or write-locks not to acquire a lock, but rather to continue waiting (i.e., spinning) until the write-present flag is cleared. As opposed to conventional techniques in which readers and writers are not locked out until the writer acquires the write-lock, the writer-present flag locks out other readers and writers once a writer begins waiting for a write-lock (that is, sets a writer-present flag). This feature allows a write-lock method to acquire a write-lock without having to contend with waiting readers and writers trying to obtain read-locks and write-locks, such as when using conventional spinlock implementations.
4 Citations
15 Claims
-
1. A method for data access by a CPU, the method comprising the steps of:
-
(a) a reader performing a first writer-present flag status check, and if said first writer-present, flag status check determines that said writer-present flag is; (i) set, repeating said step of checking;
or(ii) cleared, initially acquiring said read-lock, (b) subsequent to said initially acquiring said read-lock, said reader performing, a second writer-present flag status check, and (c) if said second writer-present flag status check determines that said writer present flag is; (i) set, releasing said read-lock and repeating said first writer-present flag status check;
or(ii) cleared, maintaining said read-lock. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for data access by a CPU, the method comprising the steps of:
-
(a) checking, by a writer, if a write-present flag is set or cleared; and (b) when said writer-present flag is cleared then acquiring by said writer a write-lock; wherein said step of checking includes performing a first writer-present flag status check, and if said first writer-present flag status check determines that said writer-present flag is; (i) set, repeating said step of checking;
or(ii) cleared, setting said writer-present flag, and (c) subsequent to setting said writer-present flag, performing a second writer-present flag status check, and (d) if said second writer-present flag status check determines that said setting said writer-present flag is; (i) unsuccessful, repeating said first write-present flag status check;
or(ii) successful, performing a read-lock check, if said read-lock check determines that said read-lock is; (A) set, repeating said performing a read-lock check;
or(B) cleared, acquiring said write-lock. - View Dependent Claims (7, 8, 9, 10, 11)
-
-
12. A system comprising:
(a) a processing system containing one or more processors, said processing system being configured to; (i) checking by a reader, via a first writer-present flag status check, and if said first writer-present flag status check determines that said writer-present flag is; (A) set, repeating said checking;
or(B) cleared, initially acquiring said read-lock, (ii) subsequent to said initially acquiring said read-lock, said reader performing a second writer-present flag status check, and (iii) if said second writer-present flag status check determines that said writer-present flag is; (A) set, releasing said read-lock and repeating said first writer present flag status check;
or(B) cleared, maintaining said read-lock.
-
13. A system comprising:
-
(a) a processing system containing one or more processors, said processing system being configured to; (i) check, by a writer, if a writer-present flag is set or cleared; and (ii) when said writer-present flag is cleared then acquire by said writer a write-lock; wherein said processing system is further configured to perform said checking via a first writer-present flag status check, and if said first-writer present flag status check determines that said writer-present flag is; (A) set, repeating said step of checking;
or(B) cleared, setting said writer-present flag, and (iii) subsequent to setting said writer-present flag, performing a second writer-present flag status check, and (iv) if said second writer-present flag status check determine that said setting said writer-present flag is; (A) unsuccessful, repeating said first writer-present flag status check or (B) successful, performing a read-lock check and if said read-lock check determines that said read-lock is; (I) set, repeating said performing a read-lock check;
or(II) cleared, acquiring said write-lock.
-
-
14. A computer-readable storage medium having embedded thereon computer-readable code for data access by a CPU, the computer-readable code comprising program code for:
-
(a) a reader performing a first writer-present flag status check, and if said first writer-present flag status cheek determines that said writer-present flag is; (i) set, repeating said step of checking;
or(ii) cleared, initially acquiring said read-lock. (b) subsequent to said initially acquiring said read-lock, said reader performing a second writer-present flag status check, and (c) if said second writer-present flag status check determines that said writer present flag is; (i) set, releasing said read-lock and repeating said first writer-present flag status check;
or(ii) cleared, maintaining said read-lock.
-
-
15. A computer-readable storage medium having embedded thereon computer-readable code for data access by a CPU, the computer-readable code comprising program code for:
-
(a) checking, by a writer, if a write-present flag is set or cleared; and (b) when said writer-present flag is cleared then acquiring by said writer a write-lock; wherein said program code further performs said checking via a first writer-present flag status check, and if said first writer-present flag status check determines that said writer-present flag is; (i) set, repeating said step of checking;
or(ii) cleared, setting said writer-present flag, and (c) subsequent to setting said writer-present flag, performing a second writer-present flag status check, and (d) if said second writer-present flag status check determines that said setting said writer-present flag is; (i) unsuccessful, repeating said first write-present flag status check;
or(ii) successful, performing a read-lock check, if said read-lock check determines that said read-lock is; (A) set, repeating said performing a read-lock check;
or(B) cleared, acquiring said write-lock.
-
Specification