IP Library Granted Patent US 11,132,299
Granted Patent B2
US 11,132,299 · App. 15/922,258 · Granted Sep 28, 2021

Memory interface having multiple snoop processors

Inventors: Martin John Robinson (Leighton Buzzard, GB); Mark Landers (Hartwell, GB)
Assignee: Imagination Technologies Limited
G06F12/0831G06F12/0833G06F12/0846G06F12/10G06F13/1673G06F13/4068G06F12/1018G06F2212/62
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,132,299
App. No.
15/922,258
Granted
Sep 28, 2021
Kind
B2
Abstract

A memory interface for interfacing between a memory bus and a cache memory, comprising: a plurality of bus interfaces configured to transfer data between the memory bus and the cache memory; and a plurality of snoop processors configured to receive snoop requests from the memory bus; wherein each snoop processor is associated with a respective bus interface and each snoop processor is configured, on receiving a snoop request, to determine whether the snoop request relates to the bus interface associated with that snoop processor and to process the snoop request in dependence on that determination.

Claims (35)

1. A method for interfacing, at a memory interface, between a memory bus and a cache memory, the cache memory being associated with a processor, the memory interface comprising a plurality of bus interfaces, wherein each bus interface is configured to transfer data between the memory bus and a respective non-overlapping portion of the cache memory, and a plurality of snoop processors configured to receive snoop requests from the memory bus, each snoop processor being associated with a respective bus interface, the method comprising:

receiving a snoop request at the memory interface;

each snoop processor determining whether the snoop request relates to its associated respective bus interface; and

each snoop processor processing the snoop request in dependence on that determination.

2. A non-transitory computer readable storage medium having stored thereon a computer readable description of an integrated circuit that, when processed in an integrated circuit manufacturing system, causes the integrated circuit manufacturing system to manufacture a memory interface for interfacing between a memory bus and a cache memory, the cache memory being associated with a processor, the memory interface comprising:

a plurality of bus interfaces, wherein each bus interface is configured to transfer data between the memory bus and a respective non-overlapping portion of the cache memory; and

a plurality of snoop processors configured to receive snoop requests from the memory bus;

wherein each snoop processor is associated with a respective bus interface and each snoop processor is configured, on receiving a snoop request, to determine whether the snoop request relates to the bus interface associated with that snoop processor and to process the snoop request in dependence on that determination.

3. A memory interface for interfacing between a memory bus and a cache memory, the cache memory being associated with a processor, comprising:

a plurality of bus interfaces, wherein each bus interface is configured to transfer data between the memory bus and a respective non-overlapping portion of the cache memory; and

a plurality of snoop processors configured to receive snoop requests from the memory bus;

wherein each snoop processor is associated with a respective bus interface and each snoop processor is configured, on receiving a snoop request, to determine whether the snoop request relates to the bus interface associated with that snoop processor and to process the snoop request in dependence on that determination.

4. The memory interface according to claim 3 , in which each snoop processor is configured to determine whether the snoop request relates to the bus interface associated with that snoop processor in dependence on a memory addressed by the snoop request, and to generate a response to the snoop request in dependence on that determination.

5. The memory interface according to claim 3 , in which the memory interface comprises a data structure configured to maintain a mapping between each of the plurality of bus interfaces and respective sets of memory addresses.

6. The memory interface according to claim 5 , in which each of the respective sets of memory addresses comprises at least one of a list of memory addresses and a range of memory addresses.

7. The memory interface according to claim 3 , in which the cache memory comprises a plurality of cache banks, and each bus interface is configured to transfer data to one or more cache bank associated with that bus interface.

8. The memory interface according to claim 7 , in which each snoop processor is configured to map the memory addressed by the snoop request to a cache bank of the plurality of cache banks in a first mapping, and to map the cache bank to one of the plurality of bus interfaces in a second mapping.

9. The memory interface according to claim 8 , in which the first mapping is selected from one of (a) a one-to-one mapping between the memory addressed by the snoop request and the cache bank, and (b) a mapping permitting the memory addressed by the snoop request to map to more than one cache bank.

10. The memory interface according to claim 5 , in which each snoop processor is configured to determine that the snoop request does not relate to the bus interface associated with that snoop processor where at least one of:

the memory addressed by the snoop request does not map to the bus interface associated with that snoop processor; and

the mapping does not comprise the memory addressed by the snoop request.

11. The memory interface according to claim 3 , comprising a cache line status data structure configured to store status information relating to cache lines at the cache memory, each snoop processor being configured to generate a response to the snoop request in dependence on status information stored in the cache line status data structure if the snoop request relates to the bus interface associated with that snoop processor.

12. The memory interface according to claim 11 , in which, where the status information indicates that the cache line is at least one of:

in an invalid state,

undergoing spilling, and

undergoing a writeback or eviction process,

the associated snoop processor is configured to determine that the snoop request results in a cache miss and to cause a corresponding response to the snoop request to be sent on the bus.

13. The memory interface according to claim 3 , in which at least one of the snoop processors is configured, on determining that the snoop request does not relate to the bus interface associated with that snoop processor, to cause a response to be sent on the bus without accessing the cache memory.

14. The memory interface according to claim 3 , in which each snoop processor comprises a bus calculation module for calculating the bus interface to which the snoop request relates.

15. The memory interface according to claim 3 , in which each snoop processor comprises a buffer for storing received snoop requests.

16. The memory interface according to claim 15 , in which each snoop processor is configured to process snoop requests on the buffer in a different order to that in which the snoop requests were received.

17. The memory interface according to claim 3 , in which each snoop processor comprises control logic for at least one of controlling access to the cache line status data structure, accessing the cache, sending commands to the cache, and issuing responses to snoop requests.

18. The memory interface according to claim 3 , in which the memory addressed by the snoop request is a physical address in a physical address space, and the cache memory uses a virtual address space, the memory interface comprising a reverse translation module configured to maintain a mapping from the physical address space to the virtual address space, the reverse translation module being configured to translate the snoop request to a translated snoop request addressed in the virtual address space.

19. The memory interface according to claim 18 , in which the reverse translation module comprises logic that calculates the virtual address in dependence on the physical address, based on a known relationship between the physical address space and the virtual address space.

20. The memory interface according to claim 18 , in which the reverse translation module comprises a reverse translation data structure configured to maintain a mapping from the physical address space to the virtual address space.

Assignments (2)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2018
From: ROBINSON, MARTIN JOHN; LANDERS, MARK
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 045236/0789 →