IP Library Granted Patent US 10,216,636
Granted Patent B2
US 10,216,636 · App. 16/046,396 · Granted Feb 26, 2019

Controlled cache injection of incoming data

Inventors: Rama Krishna Govindaraju (San Jose, CA); Liqun Cheng (Foster City, CA); Parthasarathy Ranganathan (San Jose, CA)
Assignee: Google LLC
G06F12/0862G06F3/06G06F12/0868G06F2212/602
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,216,636
App. No.
16/046,396
Granted
Feb 26, 2019
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for pre-fetching data. The methods, systems, and apparatus include actions of providing a request for data to an input-output device and receiving a set of memory addresses for the requested data. Additional actions include determining a subset of the memory addresses, providing a request for a processor to pre-fetch or inject data corresponding to the subset of the memory addresses, and receiving the requested data and the set of memory addresses. Additional actions include determining that the received data includes data for the subset of memory addresses that has been requested to be pre-fetched or injected, storing the data for the subset of memory addresses in a cache of the processor, and storing remaining data of the received data for the memory addresses in a main memory.

Claims (71)

1. A computer-implemented method comprising:

providing, by a user process to an input-output device, a request for data that is not yet available, wherein the user process is a software application that uses data received from the input-output device;

receiving, by the user process and from the input-output device, a set of memory addresses for the requested data that is not yet available;

determining, by the user process, a subset of the received memory addresses for the requested data that is not yet available, the subset corresponding to data to be cached by a processor;

determining, by the user process, a cache level in a cache of a processor in which to pre-fetch the subset of memory addresses;

providing, by the user process to the processor, a request for the processor to allocate space in the cache of the processor to cache data corresponding to the subset of the memory addresses at the determined cache level for the requested data that is not yet available;

receiving, by a memory controller, the requested data and the set of memory addresses corresponding to the requested data; and

storing, by the memory controller, data, of the received data for the set of memory addresses corresponding to the subset of memory addresses in the allocated space of the cache of the processor and storing remaining data of the received data for the set of memory addresses in a main memory.

2. The method of claim 1 , wherein storing, by the memory controller, the data for the subset of memory addresses in a cache of the processor and storing remaining data of the received data for the memory addresses in a main memory, comprises:

storing, by the memory controller, the data for the subset of memory addresses in a first level cache of the processor and storing remaining data of the received data for the memory addresses in a main memory.

3. The method of claim 1 , wherein determining a subset of the memory addresses for the requested data comprises:

determining a number of memory addresses to pre-fetch in the cache; and

selecting the determined number of the memory addresses from the set of memory addresses as the subset of memory addresses.

4. The method of claim 1 , wherein determining a subset of the memory addresses corresponding to data to be cached by a processor comprises:

dynamically selecting memory addresses from the set of memory addresses as the subset of memory addresses based on a user process or system behavior.

5. The method of claim 1 , wherein providing a request for the processor to allocate space in the cache of the processor to cache data corresponding to the subset of the memory addresses for the requested data comprises:

providing an instruction that indicates the subset of memory addresses that are to be cached.

6. The method of claim 1 , comprising:

receiving, by the processor, the request for the processor to cache data corresponding to the subset of the memory addresses for the requested data;

selecting, by the processor, the cache of the processor from multiple caches; and

caching the memory addresses in the cache of the processor selected by the processor.

7. The method of claim 1 , further comprising:

issuing a DMA write operation indicating the requested data and the memory addresses, and

wherein receiving, by a memory controller, the requested data and the set of memory addresses corresponding to the requested data comprises receiving the DMA write operation.

8. The method of claim 1 , wherein storing, by the memory controller, the data for the subset of memory addresses corresponding to the subset of memory addresses in the allocated space of the cache of the processor and storing remaining data of the received data for the set of memory addresses in main memory comprises:

triggering the processor to store the data for the subset of memory addresses in the cache; and

triggering storage of the remaining data of the received data for the memory addresses in the main memory.

9. The method of claim 1 , wherein providing a request for the processor cache data corresponding to the subset of memory addresses for the requested data comprises:

providing a request for the processor to cache data corresponding to the subset of the memory addresses for the requested data into a specific partition of the cache.

10. The method of claim 1 , comprising:

determining to pre-fetch a portion of the remaining data stored in the main memory; and

providing, by the user process and to the processor, a second request for the processor to pre-fetch data corresponding to another subset of the memory addresses for the requested data.

11. A system comprising:

one or more computers; and

one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:

providing, by a user process to an input-output device, a request for data that is not yet available, wherein the user process is a software application that uses data received from the input-output device;

receiving, by the user process and from the input-output device, a set of memory addresses for the requested data that is not yet available;

determining, by the user process, a subset of the received memory addresses for the requested data that is not yet available, the subset corresponding to data to be cached by a processor;

determining, by the user process, a cache level in a cache of a processor in which to pre-fetch the subset of memory addresses;

providing, by the user process to the processor, a request for the processor to allocate space in the cache of the processor to cache data corresponding to the subset of the memory addresses at the determined cache level for the requested data that is not yet available;

receiving, by a memory controller, the requested data and the set of memory addresses corresponding to the requested data; and

storing, by the memory controller, data, of the received data for the set of memory addresses, corresponding to the subset of memory addresses in the allocated space of the cache of the processor and storing remaining data of the received data for the set of memory addresses in a main memory.

12. The system of claim 11 , wherein storing, by the memory controller, the data for the subset of memory addresses in a cache of the processor and storing remaining data of the received data for the memory addresses in a main memory, comprises:

storing, by the memory controller, the data for the subset of memory addresses in a first level cache of the processor and storing remaining data of the received data for the memory addresses in a main memory.

13. The system of claim 11 , wherein determining a subset of the memory addresses for the requested data comprises:

determining a number of memory addresses to pre-fetch in the cache; and

selecting the determined number of the memory addresses from the set of memory addresses as the subset of memory addresses.

14. The system of claim 11 , wherein determining a subset of the memory addresses corresponding to data to be cached by a processor comprises:

dynamically selecting memory addresses from the set of memory addresses as the subset of memory addresses based on a user process or system behavior.

15. The system of claim 11 , wherein providing a request for the processor to allocate space in the cache of the processor to cache data corresponding to the subset of the memory addresses for the requested data comprises:

providing an instruction that indicates the subset of memory addresses that are to be cached.

16. The system of claim 11 , comprising:

receiving, by the processor, the request for the processor to cache data corresponding to the subset of the memory addresses for the requested data;

selecting, by the processor, the cache of the processor from multiple caches; and

caching the memory addresses in the cache of the processor selected by the processor.

17. The system of claim 11 , the operations further comprising:

issuing a DMA write operation indicating the requested data and the memory addresses, and

wherein receiving, by a memory controller, the requested data and the set of memory addresses corresponding to the requested data comprises receiving the DMA write operation.

18. The system of claim 11 , wherein storing, by the memory controller, the data for the subset of memory addresses corresponding to the subset of memory addresses in the allocated space of the cache of the processor and storing remaining data of the received data for the set of memory addresses in main memory comprises:

triggering the processor to store the data for the subset of memory addresses in the cache; and

triggering storage of the remaining data of the received data for the memory addresses in the main memory.

19. The system of claim 11 , wherein providing a request for the processor cache data corresponding to the subset of memory addresses for the requested data comprises:

providing a request for the processor to cache data corresponding to the subset of the memory addresses for the requested data into a specific partition of the cache.

20. A non-transitory computer-readable medium storing software comprising instructions executable by one or more computers which, upon such execution, cause the one or more computers to perform operations comprising:

providing, by a user process to an input-output device, a request for data that is not yet available, wherein the user process is a software application that uses data received from the input-output device;

receiving, by the user process and from the input-output device, a set of memory addresses for the requested data that is not yet available;

determining, by the user process, a subset of the received memory addresses for the requested data that is not yet available, the subset corresponding to data to be cached by a processor;

determining, by the user process, a cache level in a cache of a processor in which to pre-fetch the subset of memory addresses;

providing, by the user process to the processor, a request for the processor to allocate space in the cache of the processor to cache data corresponding to the subset of the memory addresses at the determined cache level for the requested data that is not yet available;

receiving, by a memory controller, the requested data and the set of memory addresses corresponding to the requested data; and

storing, by the memory controller, data, of the received data for the set of memory addresses, corresponding to the subset of memory addresses in the allocated space of the cache of the processor and storing remaining data of the received data for the set of memory addresses in a main memory.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2018
From: GOVINDARAJU, RAMA KRISHNA; CHENG, LIQUN; RANGANATHAN, PARTHASARATHY
To: GOOGLE INC.
Reel/Frame 046475/0283 →
CHANGE OF NAME Recorded Jul 26, 2018
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 046637/0879 →
Continuity (3)
Continuation 14533307 · Nov 5, 2014
Provisional Application 61989233 · May 6, 2014
Related Publication 20180336137A1 · Nov 22, 2018