IP Library Granted Patent US 9,697,137
Granted Patent B2
US 9,697,137 · App. 14/541,807 · Granted Jul 4, 2017

Filtering translation lookaside buffer invalidations

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 9,697,137
App. No.
14/541,807
Granted
Jul 4, 2017
Kind
B2
Abstract

A filter includes filter entries, each corresponding to a mapping between a virtual memory address and a physical memory address and including a presence indicator indicative which processing elements have the mapping present in their respective translation lookaside buffers (TLBs). A TLB invalidation (TLBI) instruction is received for a first mapping. If a first filter entry corresponding to the first mapping exists in the filter, the plurality of processing elements are partitioned into a first partition of zero or more processing elements that have the first mapping present in their TLBs and a second partition of zero or more processing elements that do not have the first mapping present in their TLBs based on the presence indicator of the first filter entry. The TLBI instruction is sent to the processing elements included in the first partition, and not those in the second partition.

Claims (61)

1. A method for managing a plurality of translation lookaside buffers, each translation lookaside buffer including a plurality of translation lookaside buffer entries from a page table stored in physical memory, and each translation lookaside buffer being associated with a corresponding processing element of a plurality of processing elements, the method comprising:

maintaining a filter separate from the page table and separate from any of the translation lookaside buffers, the filter including a plurality of filter entries, each filter entry corresponding to a mapping between a virtual memory address and a physical memory address and including a presence indicator indicative which processing elements of the plurality of processing elements have the mapping present in their respective translation lookaside buffers;

receiving a translation lookaside buffer invalidation instruction for a first mapping between a first virtual memory address and a first physical memory address;

determining whether a first filter entry corresponding to the first mapping exists in the filter in response to receiving the translation lookaside buffer invalidation instruction;

if the first filter entry exists in the filter, partitioning the plurality of processing elements into a first partition of zero or more processing elements that have the first mapping present in their translation lookaside buffers and a second partition of zero or more processing elements that do not have the first mapping present in their translation lookaside buffers based on the presence indicator of the first filter entry;

sending the translation lookaside buffer invalidation instruction to the processing elements included in the first partition of processing elements; and

suppressing sending of the translation lookaside buffer invalidation instruction to the processing elements included in the second partition of processing elements.

2. The method of claim 1 further comprising, if the first filter entry does not exist in the filter,

creating the first filter entry corresponding to the first mapping in the filter,

sending the translation lookaside buffer invalidation instruction to all of the processing elements of the plurality of processing elements, and

setting the presence indicator for the first filter entry to indicate that none of the processing elements of the plurality of processing elements has the first mapping present in the entries of their translation lookaside buffers.

3. The method of claim 2 wherein the filter has a capacity of a limited number of filter entries and the method further comprises removing a filter entry from the filter according to a filter entry eviction policy prior to creating the first filter entry.

4. The method of claim 3 wherein the filter entry eviction policy includes a least recently used eviction policy.

5. The method of claim 1 further comprising, upon sending the translation lookaside buffer invalidation instruction to the processing elements included in the first partition of processing elements, setting the presence indicator for the first filter entry to indicate that none of the processing elements of the plurality of processing elements has the first mapping present in the entries of their translation lookaside buffers.

6. The method of claim 1 wherein none of the processing elements of the plurality of processing elements are included in the first partition of processing elements.

7. The method of claim 1 wherein a first translation lookaside buffer entry of a first translation lookaside buffer of a first processing element of the plurality of processing elements includes a second mapping between a second virtual memory address and a second physical memory address and the filter does not include a second filter entry corresponding to the second mapping.

8. The method of claim 1 wherein sending the translation lookaside buffer invalidation instruction to the processing elements included in the first partition of processing elements causes invalidation of a respective translation lookaside buffer entry associated with the first mapping in the translation lookaside buffers of each of the processing elements included in the first partition of processing elements.

9. The method of claim 1 wherein the presence indicator of the first filter entry includes a plurality of presence entries, each presence entry corresponding to a different processing element of the plurality of processing elements and being indicative of whether the first mapping is present in the corresponding processing element.

10. The method of claim 1 wherein each entry of the plurality of filter entries includes metadata.

11. The method of claim 10 wherein the metadata is received separately from the translation lookaside buffer invalidation instruction.

12. The method of claim 10 wherein the metadata includes a block size.

13. The method of claim 10 wherein the metadata includes context information.

14. The method of claim 13 wherein the context information includes at least one of: a virtual machine identifier (VMID), an address space identifier (ASID), or an exception level (EL).

15. An apparatus comprising:

physical memory storing a page table;

a plurality of processing elements, each associated with a corresponding translation lookaside buffer, each translation lookaside buffer including a plurality of translation lookaside buffer entries from the page table;

a filter separate from the page table and separate from any of the translation lookaside buffers, the filter including a plurality of filter entries, each filter entry corresponding to a mapping between a virtual memory address and a physical memory address and including a presence indicator indicative which processing elements of the plurality of processing elements have the mapping present in their respective translation lookaside buffers; and

circuitry configured to:

receive a translation lookaside buffer invalidation instruction for a first mapping between a first virtual memory address and a first physical memory address;

determine whether a first filter entry corresponding to the first mapping exists in the filter in response to receiving the translation lookaside buffer invalidation instruction;

if the first filter entry exists in the filter, partition the plurality of processing elements into a first partition of zero or more processing elements that have the first mapping present in their translation lookaside buffers and a second partition of zero or more processing elements that do not have the first mapping present in their translation lookaside buffers based on the presence indicator of the first filter entry;

send the translation lookaside buffer invalidation instruction to the processing elements included in the first partition of processing elements; and

suppress sending of the translation lookaside buffer invalidation instruction to the processing elements included in the second partition of processing elements.

16. The apparatus of claim 15 wherein the circuitry is further configured to, if the first filter entry does not exist in the filter,

create the first filter entry corresponding to the first mapping in the filter,

send the translation lookaside buffer invalidation instruction to all of the processing elements of the plurality of processing elements, and

set the presence indicator for the first filter entry to indicate that none of the processing elements of the plurality of processing elements has the first mapping present in the entries of their translation lookaside buffers.

17. The apparatus of claim 16 wherein the filter has a capacity of a limited number of filter entries and the apparatus further comprises removing a filter entry from the filter according to a filter entry eviction policy prior to creating the first filter entry.

18. The apparatus of claim 17 wherein the filter entry eviction policy includes a least recently used eviction policy.

19. The apparatus of claim 15 wherein the circuitry is further configured to, upon sending the translation lookaside buffer invalidation instruction to the processing elements included in the first partition of processing elements, setting the presence indicator for the first filter entry to indicate that none of the processing elements of the plurality of processing elements has the first mapping present in the entries of their translation lookaside buffers.

20. The apparatus of claim 15 wherein none of the processing elements of the plurality of processing elements are included in the first partition of processing elements.

21. The apparatus of claim 15 wherein a first translation lookaside buffer entry of a first translation lookaside buffer of a first processing element of the plurality of processing elements includes a second mapping between a second virtual memory address and a second physical memory address and the filter does not include a second filter entry corresponding to the second mapping.

22. The apparatus of claim 15 wherein sending the translation lookaside buffer invalidation instruction to the processing elements included in the first partition of processing elements causes invalidation of a respective translation lookaside buffer entry associated with the first mapping in the translation lookaside buffers of each of the processing elements included in the first partition of processing elements.

23. The apparatus of claim 15 wherein the presence indicator of the first filter entry includes a plurality of presence entries, each presence entry corresponding to a different processing element of the plurality of processing elements and being indicative of whether the first mapping is present in the corresponding processing element.

24. The apparatus of claim 15 wherein each entry of the plurality of filter entries includes metadata.

25. The apparatus of claim 24 wherein the metadata is received separately from the translation lookaside buffer invalidation instruction.

26. The apparatus of claim 24 wherein the metadata includes a block size.

27. The apparatus of claim 24 wherein the metadata includes context information.

28. The apparatus of claim 27 wherein the context information at least one of: a virtual machine identifier (VMID), an address space identifier (ASID), or an exception level (EL).

29. A method for managing a plurality of translation lookaside buffers, each translation lookaside buffer including a plurality of translation lookaside buffer entries from a page table stored in physical memory, and each translation lookaside buffer being associated with a corresponding processing element of a plurality of processing elements, the method comprising:

maintaining a filter separate from the page table and separate from any of the translation lookaside buffers, the filter including a plurality of filter entries, each filter entry corresponding to a mapping between a virtual memory address and a physical memory address and including a presence indicator indicative which processing elements of the plurality of processing elements have the mapping present in their respective translation lookaside buffers;

receiving a translation lookaside buffer invalidation instruction for a first mapping between a first virtual memory address and a first physical memory address;

determining whether a first filter entry corresponding to the first mapping exists in the filter in response to receiving the translation lookaside buffer invalidation instruction; and

if the first filter entry exists in the filter, sending the translation lookaside buffer invalidation instruction only to any processing elements that have the first mapping present in their translation lookaside buffers, based on the presence indicator of the first filter entry; or if the first filter entry does not exist in the filter, creating the first filter entry corresponding to the first mapping in the filter, sending the translation lookaside buffer invalidation instruction to all of the processing elements of the plurality of processing elements, and setting the presence indicator for the first filter entry to indicate that none of the processing elements of the plurality of processing elements has the first mapping present in the entries of their translation lookaside buffers.

30. A method for managing a plurality of translation lookaside buffers, each translation lookaside buffer including a plurality of translation lookaside buffer entries from a page table stored in physical memory, and each translation lookaside buffer being associated with a corresponding processing element of a plurality of processing elements, the method comprising:

maintaining a filter separate from the page table and separate from any of the translation lookaside buffers, the filter including a plurality of filter entries, each filter entry corresponding to a mapping between a virtual memory address and a physical memory address and including a presence indicator indicative which processing elements of the plurality of processing elements have the mapping present in their respective translation lookaside buffers;

receiving a first translation lookaside buffer invalidation instruction for a first mapping between a first virtual memory address and a first physical memory address;

after receiving the first translation lookaside buffer invalidation instruction, creating a first filter entry corresponding to the first mapping in the filter, sending the translation lookaside buffer invalidation instruction to all of the processing elements of the plurality of processing elements, and setting the presence indicator for the first filter entry to indicate that none of the processing elements of the plurality of processing elements has the first mapping present in the entries of their translation lookaside buffers;

updating the presence indicators for the filter entries based on which processing elements of the plurality of processing elements add particular mappings into their respective translation lookaside buffers;

receiving a second translation lookaside buffer invalidation instruction for the first mapping between the first virtual memory address and the first physical memory address;

in response to receiving the second translation lookaside buffer invalidation instruction, sending the translation lookaside buffer invalidation instruction only to any processing elements that have the first mapping present in their translation lookaside buffers, based on the presence indicator of the first filter entry.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Sep 26, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047155/0154 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
SECURITY AGREEMENT Recorded Aug 17, 2016
From: CAVIUM, INC.; CAVIUM NETWORKS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039715/0449 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: MUKHERJEE, SHUBHENDU SEKHAR
To: CAVIUM, INC.
Reel/Frame 034721/0440 →