IP Library Granted Patent US 9,684,606
Granted Patent B2
US 9,684,606 · App. 14/541,726 · Granted Jun 20, 2017

Translation lookaside buffer invalidation suppression

Inventors: Richard Eugene Kessler (Northborough, MA); Shubhendu Sekhar Mukherjee (Southborough, MA); Mike Bertone (Marlborough, MA)
Assignee: CAVIUM, INC.
G06F12/1045G06F3/0604G06F3/0634G06F3/0683G06F2212/50G06F2212/62G06F2212/682G06F2212/683
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,684,606
App. No.
14/541,726
Granted
Jun 20, 2017
Kind
B2
Abstract

Managing a plurality of translation lookaside buffers (TLBs) includes: issuing, at a first processing element, a first instruction for invalidating one or more TLB entries associated with a first context in a first TLB associated with the first processing element. The issuing includes: determining whether or not a state of an indicator indicates that all TLB entries associated with the first context in a second TLB associated with a second processing element are invalidated; if not: sending a corresponding instruction to the second processing element, causing invalidation of all TLB entries associated with the first context in the second TLB, and changing a state of the indicator; and if so: suppressing sending of any corresponding instructions for causing invalidation of any TLB entries associated with the first context in the second TLB to the second processing element.

Claims (53)

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

issuing, at a first processing element of the plurality of processing elements, a first instruction for invalidating one or more translation lookaside buffer entries associated with a first context in a first translation lookaside buffer associated with the first processing element, the issuing including:

determining, at the first processing element, whether or not a state of an indicator indicates that all translation lookaside buffer entries associated with the first context in a second translation lookaside buffer associated with a second processing element are invalidated;

if the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated:

sending a corresponding instruction to the second processing element of the plurality of processing elements, the corresponding instruction causing invalidation of all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer while maintaining one or more translation lookaside buffer entries associated with one or more other contexts in the second translation lookaside buffer, and

changing a state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are invalidated; and

if the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer associated with the second processing element are invalidated:

suppressing sending of any corresponding instructions for causing invalidation of any translation lookaside buffer entries associated with the first context in the second translation lookaside buffer to the second processing element.

2. The method of claim 1 further comprising, prior to determining whether or not the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are invalidated,

determining whether a second context associated with the indicator is the same as the first context associated with the first instruction; and

if the second context differs from the first context, changing the state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated.

3. The method of claim 1 further comprising issuing a synchronization instruction at the first processing element, the synchronization instruction causing any pending translation lookaside buffer invalidation instructions at the first processing element to complete and, upon their completion, changing the state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated.

4. The method of claim 1 further comprising,

determining, at the first processing element, whether or not a state of the indicator indicates that all translation lookaside buffer entries associated with the first context in a plurality of other translation lookaside buffers corresponding to a plurality of other processing elements of the plurality of processing elements are invalidated; and

if the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the plurality of other translation lookaside buffers are not invalidated,

sending the corresponding instruction to the plurality of other processing elements, the corresponding instruction causing invalidation of all translation lookaside buffer entries associated with the first context in the plurality of other translation lookaside buffers; and

if the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the plurality of other translation lookaside buffers are invalidated:

suppressing sending of any corresponding instructions for causing invalidation of any translation lookaside buffer entries associated with the first context in the plurality of other translation lookaside buffers to the second processing element.

5. The method of claim 1 further comprising generating the corresponding instruction including converting the first instruction for invalidating one or more translation lookaside buffer entries associated with the first context in the first translation lookaside buffer to the corresponding instruction for causing invalidation of all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer.

6. The method of claim 1 wherein the state of the indicator is represented using a single bit.

7. The method of claim 1 wherein the first context includes an address space identifier (ASID).

8. The method of claim 1 wherein the first context includes a virtual machine identifier (VMID).

9. The method of claim 1 wherein the first context includes an exception level (EL).

10. The method of claim 1 further comprising receiving a synchronization message and changing the state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated in response to the synchronization message.

11. The method of claim 1 further comprising receiving an interrupt and changing the state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated in response to receiving the interrupt.

12. An apparatus comprising:

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;

wherein a first processing element of the plurality of processing elements is configured to issue a first instruction for invalidating one or more translation lookaside buffer entries associated with a first context in a first translation lookaside buffer associated with the first processing element, the issuing including:

determining, at the first processing element, whether or not a state of an indicator indicates that all translation lookaside buffer entries associated with the first context in a second translation lookaside buffer associated with a second processing element are invalidated;

if the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated:

sending a corresponding instruction to the second processing element of the plurality of processing elements, the corresponding instruction causing invalidation of all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer while maintaining one or more translation lookaside buffer entries associated with one or more other contexts in the second translation lookaside buffer, and

changing a state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are invalidated; and

if the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer associated with the second processing element are invalidated:

suppressing sending of any corresponding instructions for causing invalidation of any translation lookaside buffer entries associated with the first context in the second translation lookaside buffer to the second processing element.

13. The apparatus of claim 12 wherein the issuing further includes, prior to determining whether or not the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are invalidated,

determining whether a second context associated with the indicator is the same as the first context associated with the first instruction; and

if the second context differs from the first context, changing the state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated.

14. The apparatus of claim 12 wherein the first processing element is configured to issue a synchronization instruction, the synchronization instruction causing any pending translation lookaside buffer invalidation instructions at the first processing element to complete and, upon their completion, changing the state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated.

15. The apparatus of claim 12 wherein the first processing element is further configured to:

determine whether or not a state of the indicator indicates that all translation lookaside buffer entries associated with the first context in a plurality of other translation lookaside buffers corresponding to a plurality of other processing elements of the plurality of processing elements are invalidated; and

if the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the plurality of other translation lookaside buffers are not invalidated,

send the corresponding instruction to the plurality of other processing elements, the corresponding instruction causing invalidation of all translation lookaside buffer entries associated with the first context in the plurality of other translation lookaside buffers; and

if the state of the indicator indicates that all translation lookaside buffer entries associated with the first context in the plurality of other translation lookaside buffers are invalidated:

suppress sending of any corresponding instructions for causing invalidation of any translation lookaside buffer entries associated with the first context in the plurality of other translation lookaside buffers to the second processing element.

16. The apparatus of claim 12 wherein the first processing element is configured to generate the corresponding instruction including converting the first instruction for invalidating one or more translation lookaside buffer entries associated with the first context in the first translation lookaside buffer to the corresponding instruction for causing invalidation of all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer.

17. The apparatus of claim 12 wherein the state of the indicator is represented using a single bit.

18. The apparatus of claim 12 wherein the first context includes an address space identifier (ASID).

19. The apparatus of claim 12 wherein the first context includes a virtual machine identifier (VMID).

20. The apparatus of claim 12 wherein the first context includes an exception level (EL).

21. The apparatus of claim 12 wherein the first processing element is configured to receive a synchronization message and change the state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated in response to the synchronization message.

22. The apparatus of claim 12 wherein the first processing element is configured to receive an interrupt and change the state of the indicator to indicate that all translation lookaside buffer entries associated with the first context in the second translation lookaside buffer are not invalidated in response to receiving the interrupt.

23. The method of claim 1 wherein the indicator is associated with the first processing element.

24. The apparatus of claim 12 wherein the indicator is associated with the first processing element.

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/0142 →
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 Apr 7, 2015
From: KESSLER, RICHARD EUGENE; MUKHERJEE, SHUBHENDU SEKHAR; BERTONE, MIKE
To: CAVIUM, INC.
Reel/Frame 035345/0690 →
Continuity (1)
Related Publication 20160140051A1 · May 19, 2016