IP Library Granted Patent US 10,409,723
Granted Patent B2
US 10,409,723 · App. 14/964,296 · Granted Sep 10, 2019

Multi-core processor supporting cache consistency, method, apparatus and system for data reading and writing by use thereof

Inventors: Ling Ma (Hangzhou, CN); Wei Zhou (Hangzhou, CN); Lei Zhang (Hangzhou, CN)
Assignee: Alibaba Group Holding Limited
G06F12/0815G06F12/084G06F12/0811G06F2212/1028G06F2212/283G06F2212/621Y02D10/13
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,409,723
App. No.
14/964,296
Granted
Sep 10, 2019
Kind
B2
Abstract

A multi-core processor supporting cache consistency, a method and apparatus for data writing, and a method and apparatus for memory allocation, as well as a system by use thereof. The multi-core processor supporting cache consistency includes a plurality of cores, the plurality of cores corresponding to respective local caches. A local cache of a core of the plurality of cores is responsible for caching data in a different range of addresses in a memory space and a core of the plurality of cores accesses data in a local cache of another core of the plurality of core via an interconnect bus.

Claims (76)

1. A processing system comprising:

a first CPU structure having a first core and a first cache that is coupled to the first core, the first cache to be assigned a first address range in a memory space; and

a second CPU structure having a second core and a second cache that is coupled to the second core, the second cache to be assigned a second address range in the memory space such that no copy of data stored in the first cache is to be stored in the second cache, and no copy of data stored in the second cache is to be stored in the first cache, the first and second caches being separate physical devices, the second core to:

generate a request to read data stored at a first address;

determine whether the first address lies within the first address range or the second address range without searching the second cache; and

send a request to the first core to read data from the first address when the second core determines that the first address lies within the first address range without searching the second cache.

2. The processing system of claim 1 , wherein the first address range and the second address range are non-overlapping.

3. The processing system of claim 2 , wherein the second core is to:

determine if valid data is stored at the first address when the first address lies within the second address range; and

read data from the first address when valid data is stored at the first address within the second address range.

4. The processing system of claim 3 , wherein the second core is to:

output a load request to obtain a block of data from a main memory where the first address lies within the block of data when valid data is not stored at the first address within the second address range;

receive the block of data from the main memory;

store the block of data received from the main memory within the second address range; and

read data from the first address within the second address range after the block of data has been stored in the second address range.

5. The processing system of claim 2 , wherein the first core is to:

receive the request sent by the second core;

determine if valid data is stored at the first address within the first address range in response to the request received from the second core;

read data from the first address within the first address range when valid data is stored at the first address within the first address range; and

transmit the data read from the first address within the first address range back to the second core.

6. The processing system of claim 5 , wherein the first core is to:

output a load request to obtain a block of data from a main memory where the first address lies with the block of data when valid data is not stored at the first address within the first address range;

receive the block of data from the main memory;

store the block of data received from the main memory within the first address range; and

read data from the first address within the first address range after the block of data has been stored in the first address range.

7. The processing system of claim 2 , wherein the second core is to:

generate a request to write data to a second address;

determine whether the second address lies within the first address range or the second address range without searching the second cache, and

send a request to the first core to write data to the second address when the second core determines that the second address lies within the first address range.

8. The processing system of claim 7 , wherein:

the first cache includes a plurality of cache lines; and

the first core to mark a cache line with a dirty parity mark when the data to be written lies within the cache line.

9. The processing system of claim 7 , wherein:

the second cache includes a plurality of cache lines; and

the second core to mark a cache line with a dirty parity mark when the data to be written lies within the cache line.

10. The processing system of claim 2 wherein the core includes a cache controller.

11. The processing system of claim 2 , wherein an address range is assigned to a core by dividing a total memory address range by a number of cores to determine a plurality of continuous non-overlapping address ranges, and assigning a different continuous address range to each core.

12. The processing system of claim 11 , wherein a lower boundary of the address range assigned to a core n is determined by MEM/N*n, and an upper boundary of the address range assigned to the core n is determined by MEM/N*(n+1)−1, where MEM is a capacity of a memory space and N is a total number of cores, n having a value ranging from 0 to N-1.

13. The processing system of claim 12 , wherein a core determines which cache a memory address lies within with (A*N/MEM) mod N, where A is the memory address.

14. The processing system of claim 2 , wherein each CPU structure includes two or more cores.

15. The processing system of claim 2 wherein the first cache includes a level 1 cache and a level 2 cache.

16. The processing system of claim 15 , wherein each CPU structure includes two or more cores.

17. The processing system of claim 16 , wherein the two or more cores in a CPU structure share the level 1 cache in the CPU structure.

18. The processing system of claim 17 , wherein the two or more cores in a CPU structure share the level 2 cache in the CPU structure.

19. A method of operating a processing system, comprising:

generating a request to read data stored at a first address;

determining whether the first address lies within a first address range assigned to a first cache or a second address range assigned to a second cache without searching the first cache or the second cache, no copy of data stored in the first cache is to be stored in the second cache, and no copy of data stored in the second cache is to be stored in the first cache, the first and second caches being separate physical devices; and

sending a request to read data from the first address when the first address lies within the first address range.

20. The method of claim 19 , wherein the first address range and the second address range are non-overlapping.

21. The method of claim 20 , further comprising:

determining if valid data is stored at the first address when the first address lies within the second address range; and

reading data from the first address when valid data is stored at the first address within the second address range.

22. The method of claim 21 , further comprising:

outputting a load request to obtain a block of data from a main memory where the first address lies with the block of data when valid data is not stored at the first address within the second address range;

receiving the block of data from the main memory;

storing the block of data received from the main memory within the second address range; and

reading data from the first address within the second address range after the block of data has been stored in the second address range.

23. The method of claim 20 , further comprising:

determining if valid data is stored at the first address in response to the request to read data from the first address when the first address lies within the first address range;

reading data from the first address within the first address range when valid data is stored at the first address within the first address range; and

transmitting the data read from the first address within the first address range back to the second core.

24. The method of claim 23 , further comprising:

outputting a load request to obtain a block of data from a main memory where the first address lies with the block of data when valid data is not stored at the first address within the first address range;

receiving the block of data from the main memory;

storing the block of data received from the main memory within the first address range; and

reading data from the first address within the first address range after the block of data has been stored in the first address range.

25. The method of claim 20 , further comprising:

generating a request to write data to a second address;

determining whether the second address lies within the first address range or the second address range without searching the first cache or the second cache, and

sending a request to write data to the second address when the second address lies within the first address range.

26. The method of claim 25 , wherein:

the first cache includes a plurality of cache lines; and

further comprising marking a cache line with a dirty parity mark when the data to be written lies within the cache line.

27. The method of claim 25 , wherein:

the second cache includes a plurality of cache lines; and

further comprising marking a cache line with a dirty parity mark when the data to be written lies within the cache line.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 21, 2026
From: ALIBABA GROUP HOLDING LIMITED
To: CLOUD INTELLIGENCE ASSETS HOLDING (SINGAPORE) PRIVATE LIMITED
Reel/Frame 075478/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2016
From: MA, LING; ZHOU, WEI; ZHANG, LEI
To: ALIBABA GROUP HOLDING LIMITED
Reel/Frame 037588/0253 →
Priority Claims (1)
CN 2014 1 0756732 · Dec 10, 2014 · national
Continuity (1)
Related Publication 20160170886A1 · Jun 16, 2016