IP Library Granted Patent US 11,106,795
Granted Patent B2
US 11,106,795 · App. 16/660,563 · Granted Aug 31, 2021

Method and apparatus for updating shared data in a multi-core processor environment

Inventors: Ling Ma (Hangzhou, CN); Changhua He (Hangzhou, CN)
Assignee: ADVANCED NEW TECHNOLOGIES CO., LTD.
G06F21/57G06F9/48G06F9/542G06F15/80
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 11,106,795
App. No.
16/660,563
Granted
Aug 31, 2021
Kind
B2
Abstract

Embodiments of the specification provide a method and an apparatus for updating shared data in a multi-core processor environment. The multi-processor environment comprises a multi-core processor. The multi-core processor comprises a plurality of separate processing units (referred to as cores, or core processing units (CPUs) in the specification); the multi-core processor is configured to process a multi-threaded task; the multi-threaded task has shared data to update. The method is executed by any CPU. The method may comprise: requesting, by a first CPU, for a lock to execute a critical section function on the shared data, wherein the lock provides permission to update the shared data, and the critical section function updates the shared data; and setting, by the first CPU if the lock is occupied by a second CPU, a memory index corresponding to the critical section function in a memory of the lock for the second CPU to execute the critical section function based on the memory index.

Claims (65)

1. A method for updating shared data in a multi-core processor environment, wherein the multi-core processor comprises a plurality of CPUs, the method comprising:

requesting, by a first CPU, for a lock to execute a critical section function, wherein the lock is configured to provide permission to update the shared data, and the critical section function is configured to update the shared data;

setting, by the first CPU if the lock is occupied by a second CPU, a memory index corresponding to the critical section function in a memory of the lock for the second CPU to execute the critical section function based on the memory index;

obtaining, by the first CPU if the lock is not occupied, the lock to execute the critical section function;

executing, by the first CPU if it obtains the lock, the critical section function;

determining, by the first CPU if it obtains the lock, whether the memory of the lock has one or more memory indices set by one or more of other CPUs, wherein the one or more memory indices correspond to one or more critical section functions; and

executing, by the first CPU if the memory of the lock has one or more memory indices set by the one or more of other CPUs, the one or more critical section functions based on the one or more memory indices.

2. The method according to claim 1 , wherein the requesting for a lock comprises:

requesting, by the first CPU, for the lock through a lock requesting command, wherein the lock requesting command includes the memory index corresponding to the critical section function.

3. The method according to claim 2 , wherein the setting a memory index corresponding to the critical section function in a memory of the lock comprises:

setting, by the first CPU based on the memory index included in the lock requesting command, a bit corresponding to the memory index in the memory of the lock to 1 .

4. The method according to claim 1 , further comprising:

detecting, by the first CPU, that the second CPU has executed the critical section function; and

determining, by the first CPU, that the update on the shared data is complete.

5. The method according to claim 4 , further comprising:

setting, by the first CPU, an identifier in a private cache of the first CPU before requesting for the lock to execute the critical section function, wherein the identifier indicates whether the critical section function has been executed, and

wherein detecting that the second CPU has executed the critical section function comprises:

determining, by the first CPU, that the critical section function has been executed by the second CPU if the identifier in the private cache of the first CPU has been cleared.

6. The method according to claim 1 , wherein the executing the one or more critical section functions comprises:

obtaining, by the first CPU for each of the one or more critical section functions, a function pointer and a parameter pointer from a memory region based on the one or more memory indices corresponding to the one or more critical section function;

executing, by the first CPU for each of the one or more critical section functions, the critical section function based on the obtained function pointer and the obtained parameter pointer to update the shared data; and

storing, by the first CPU after executing all of the one or more critical section functions, the updated shared data into a memory shared by the plurality of CPUs.

7. The method according to claim 6 , wherein the memory region is inside a private cache of the first CPU.

8. The method according to claim 1 , further comprising, if the first CPU obtains the lock:

placing, by the first CPU, the lock into the memory shared by the plurality of CPUs.

9. The method according to claim 1 , wherein the determining if the memory of the lock has one or more memory indices set by one or more of other CPUs comprises:

executing, by the first CPU, a lock releasing command to obtain a return value, wherein the return value comprises an XOR value of an initial state and a current state of the memory of the lock;

obtaining, by the first CPU, the one or more memory indices set by the one or more of other CPUs based on the obtained return value of the lock releasing command; and

setting, by the first CPU, the memory of the lock to the initial state.

10. The method according to claim 1 , further comprising, after executing each of the one or more critical section functions:

obtaining, by the first CPU, an address of an identifier associated with the critical section function, wherein the identifier is preset by a third CPU associated with the critical section function; and

clearing, by the first CPU based on the address, the identifier to notify the third CPU that the execution of the critical section function is complete.

11. An apparatus for updating shared data in a multi-core processor environment, wherein the apparatus comprises a first CPU configured to execute one or more operations comprising:

requesting for a lock to execute a critical section function, wherein the lock is configured to provide permission to update the shared data, and the critical section function is configured to update the shared data;

setting, if the lock is occupied by a second CPU, a memory index corresponding to the critical section function in a memory of the lock for the second CPU to execute the critical section function based on the memory index;

obtaining, if the lock is not occupied, the lock to execute the critical section function;

executing, if the first CPU obtains the lock, the critical section function;

determining, if the first CPU obtains the lock, whether the memory of the lock has one or more memory indices set by one or more of other CPUs, wherein the one or more memory indices correspond to one or more critical section functions; and

executing, if the memory of the lock has one or more memory indices set by the one or more of other CPUs, the one or more critical section functions based on the one or more memory indices.

12. The apparatus according to claim 11 , wherein the requesting for a lock comprises:

requesting for the lock through a lock requesting command, wherein the lock requesting command includes the memory index corresponding to the critical section function;

migrating, if the first CPU obtains the lock, the lock into a private cache of the first CPU; and

setting the memory index corresponding to the critical section function in the memory of the lock.

13. The apparatus according to claim 11 , wherein the operations further comprise:

setting an identifier in a private cache of the first CPU before requesting for the lock to execute the critical section function, wherein the identifier indicates whether the critical section function has been executed; and

determining that the critical section function has been executed by the second CPU if the identifier in the private cache of the first CPU has been cleared.

14. The apparatus according to claim 11 , wherein the executing the one or more critical section functions comprises:

obtaining, for each of the one or more critical section functions, a memory region based on one of the one or more memory indices corresponding to the critical section function, wherein the memory region contains a function pointer and a parameter pointer;

executing, for each of the one or more critical section functions, the critical section function based on the function pointer and the parameter pointer to update the shared data; and

storing, after executing all of the one or more critical section functions, the updated shared data into a memory shared by the first CPU and the other CPUs .

15. The apparatus according to claim 11 , wherein the operations further comprise, after executing each of the one or more critical section functions:

obtaining an address of an identifier associated with the critical section function, wherein the identifier is preset by a third CPU associated with the critical section function; and

clearing, based on the address, the identifier to notify the third CPU that the execution of the critical section function is complete.

16. The apparatus according to claim 11 , wherein the operations further comprise, if the first CPU obtains the lock:

placing the lock into a memory shared by the first CPU and the other CPUs after executing the critical section function and the one or more critical section functions based on the one or more memory indices.

17. A method for updating shared data in a multi-core processor environment, comprising:

setting, by a first CPU, an identifier in a private cache of the first CPU before requesting for a lock to execute a critical section function on the shared data, wherein the identifier indicates whether the critical section function has been executed;

requesting, by the first CPU, for the lock to execute the critical section function, wherein the lock is configured to provide permission to update the shared data, and the critical section function is configured to update the shared data;

setting, by the first CPU if the lock is occupied by a second CPU, a memory index corresponding to the critical section function in a memory of the lock for the second CPU to execute the critical section function based on the memory index; and

determining, by the first CPU, that the critical section function has been executed by the second CPU if the identifier in the private cache of the first CPU has been cleared.

18. A method for updating shared data in a multi-core processor environment, comprising:

requesting, by a first CPU, for a lock to execute a critical section function through a lock requesting command, wherein the lock is configured to provide permission to update the shared data, and the critical section function is configured to update the shared data, the lock requesting command includes a memory index corresponding to the critical section function;

migrating, by the first CPU if it obtains the lock, the lock into a private cache of the first CPU;

setting, by the first CPU, the memory index corresponding to the critical section function in the memory of the lock; and

setting, by the first CPU if the lock is occupied by a second CPU, the memory index corresponding to the critical section function in a memory of the lock for the second CPU to execute the critical section function based on the memory index.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2020
From: ADVANTAGEOUS NEW TECHNOLOGIES CO., LTD.
To: ADVANCED NEW TECHNOLOGIES CO., LTD.
Reel/Frame 053796/0281 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2020
From: ALIBABA GROUP HOLDING LIMITED
To: ADVANTAGEOUS NEW TECHNOLOGIES CO., LTD.
Reel/Frame 053702/0392 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2020
From: MA, LING; HE, CHANGHUA
To: ALIBABA GROUP HOLDING LIMITED
Reel/Frame 051484/0030 →