IP Library Granted Patent US 9,411,745
Granted Patent B2
US 9,411,745 · App. 14/046,341 · Granted Aug 9, 2016

Multi-core heterogeneous system translation lookaside buffer coherency

Inventors: Jian Shen (San Diego, CA); Lew Go Chua-Eoan (Carlsbad, CA)
Assignee: QUALCOMM Incorporated
G06F12/1027G06F12/1009G06F12/1036G06F2212/656
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,411,745
App. No.
14/046,341
Granted
Aug 9, 2016
Kind
B2
Abstract

Methods, devices, and instructions for performing a reverse translation lookaside buffer (TLB) look-up using a physical address input, including obtaining with a first processor the physical address input, wherein the physical address input indicates a physical address corresponding to a shared memory, obtaining a first mask associated with a first virtual address from a first TLB entry within a TLB associated with the first processor, wherein the obtained first mask is a bit pattern, obtaining from the first TLB entry a first page frame number associated with the shared memory, applying the obtained first mask to the obtained first page frame number to generate a first value, applying the obtained first mask to the obtained physical address input to generate a second value, and comparing the first value and the second value to determine whether the first value and the second value match.

Claims (87)

1. A method for performing a reverse translation lookaside buffer (TLB) look-up using a physical address input, comprising:

obtaining with a first processor the physical address input, wherein the physical address input indicates a physical address corresponding to a shared memory;

obtaining a first mask associated with a first virtual address from a first TLB entry within a TLB associated with the first processor, wherein the obtained first mask is a bit pattern;

obtaining from the first TLB entry a first page frame number associated with the shared memory;

applying the obtained first mask to the obtained first page frame number to generate a first value;

applying the obtained first mask to the obtained physical address input to generate a second value; and

comparing the first value and the second value to determine whether the first value and the second value match.

2. The method of claim 1 , further comprising:

iteratively obtaining a second mask and a second page frame number from other TLB entries within the TLB in response to determining that the first value and the second value do not match;

iteratively applying the obtained second mask to the obtained second page frame number to generate the first value; and

iteratively applying the obtained second mask to the obtained physical address input to generate the second value,

wherein comparing the first value and the second value to determine whether the first value and the second value match comprises iteratively comparing the first value and the second value to determine whether the first value and the second value match.

3. The method of claim 2 , wherein iteratively applying the obtained second mask to the obtained second page frame number to generate the first value comprises reusing page frame numbers from entries in a system page table without duplication.

4. The method of claim 1 , further comprising flushing the first TLB entry in response to determining that the first value and the second value match.

5. The method of claim 1 , further comprising sending a message indicating TLB actions and the physical address to a second processor, wherein the TLB actions include a TLB flush operation.

6. The method of claim 1 , further comprising returning an index of the first TLB entry in response to determining that the first value and the second value match.

7. The method of claim 6 , wherein obtaining with the first processor the physical address input comprises receiving a message from a second processor including TLB actions and the physical address,

the method further comprising:

clearing an active flag in response to receiving the message transmitted by the second processor;

performing the TLB actions indicated in the received message using the returned index of the first TLB entry; and

setting the active flag in response to performing the TLB actions.

8. A multi-core heterogeneous computing device, comprising:

means for obtaining with a first processor a physical address input, wherein the physical address input indicates a physical address corresponding to a shared memory;

means for obtaining a first mask associated with a first virtual address from a first TLB entry within a TLB associated with the first processor, wherein the obtained first mask is a bit pattern;

means for obtaining from the first TLB entry a first page frame number associated with the shared memory;

means for applying the obtained first mask to the obtained first page frame number to generate a first value;

means for applying the obtained first mask to the obtained physical address input to generate a second value; and

means for comparing the first value and the second value to determine whether the first value and the second value match.

9. The multi-core heterogeneous computing device of claim 8 , further comprising:

means for iteratively obtaining a second mask and a second page frame number from other TLB entries within the TLB in response to determining that the first value and the second value do not match;

means for iteratively applying the obtained second mask to the obtained second page frame number to generate the first value; and

means for iteratively applying the obtained second mask to the obtained physical address input to generate the second value,

wherein means for comparing the first value and the second value to determine whether the first value and the second value match comprises means for iteratively comparing the first value and the second value to determine whether the first value and the second value match.

10. The multi-core heterogeneous computing device of claim 9 , wherein means for iteratively applying the obtained second mask to the obtained second page frame number to generate the first value comprises means for reusing page frame numbers from entries in a system page table without duplication.

11. The multi-core heterogeneous computing device of claim 8 , further comprising means for flushing the first TLB entry in response to determining that the first value and the second value match.

12. The multi-core heterogeneous computing device of claim 8 , further comprising means for sending a message indicating TLB actions and the physical address to a second processor, wherein the TLB actions include a TLB flush operation.

13. The multi-core heterogeneous computing device of claim 8 , further comprising means for returning an index of the first TLB entry in response to determining that the first value and the second value match.

14. The multi-core heterogeneous computing device of claim 13 , wherein means for obtaining with the first processor the physical address input comprises means for receiving a message from a second processor including TLB actions and the physical address,

the multi-core heterogeneous computing device further comprising:

means for clearing an active flag in response to receiving the message transmitted by the second processor;

means for performing the TLB actions indicated in the received message using the returned index of the first TLB entry; and

means for setting the active flag in response to performing the TLB actions.

15. A multi-core heterogeneous computing device, comprising:

a first processor;

a second processor; and

a shared memory, wherein the first processor is configured with processor-executable instructions to perform operations comprising:

obtaining with the first processor a physical address input, wherein the physical address input indicates a physical address corresponding to the shared memory;

obtaining a first mask associated with a first virtual address from a first TLB entry within a TLB associated with the first processor, wherein the obtained first mask is a bit pattern;

obtaining from the first TLB entry a first page frame number associated with the shared memory;

applying the obtained first mask to the obtained first page frame number to generate a first value;

applying the obtained first mask to the obtained physical address input to generate a second value; and

comparing the first value and the second value to determine whether the first value and the second value match.

16. The multi-core heterogeneous computing device of claim 15 , wherein the first processor is configured with processor-executable instructions to perform operations further comprising:

iteratively obtaining a second mask and a second page frame number from other TLB entries within the TLB in response to determining that the first value and the second value do not match;

iteratively applying the obtained second mask to the obtained second page frame number to generate the first value; and

iteratively applying the obtained second mask to the obtained physical address input to generate the second value,

wherein comparing the first value and the second value to determine whether the first value and the second value match comprises iteratively comparing the first value and the second value to determine whether the first value and the second value match.

17. The multi-core heterogeneous computing device of claim 16 , wherein the first processor is configured with processor-executable instructions to perform operations such that iteratively applying the obtained second mask to the obtained second page frame number to generate the first value comprises reusing page frame numbers from entries in a system page table without duplication.

18. The multi-core heterogeneous computing device of claim 15 , wherein the first processor is configured with processor-executable instructions to perform operations further comprising flushing the first TLB entry in response to determining that the first value and the second value match.

19. The multi-core heterogeneous computing device of claim 15 , wherein the first processor is configured with processor-executable instructions to perform operations further comprising sending a message indicating TLB actions and the physical address to the second processor, wherein the TLB actions include a TLB flush operation.

20. The multi-core heterogeneous computing device of claim 15 , wherein the first processor is configured with processor-executable instructions to perform operations further comprising returning an index of the first TLB entry in response to determining that the first value and the second value match.

21. The multi-core heterogeneous computing device of claim 20 , wherein the first processor is configured with processor-executable instructions to perform operations such that obtaining with the first processor the physical address input comprises receiving a message from the second processor including TLB actions and the physical address, and

wherein the first processor is configured with processor-executable instructions to perform operations further comprising:

clearing an active flag in response to receiving the message transmitted by the second processor;

performing the TLB actions indicated in the received message using the returned index of the first TLB entry; and

setting the active flag in response to performing the TLB actions.

22. A non-transitory processor-readable storage medium having stored thereon processor-executable software instructions configured to cause a first processor to perform operations comprising:

obtaining with the first processor a physical address input, wherein the physical address input indicates a physical address corresponding to a shared memory;

obtaining a first mask associated with a first virtual address from a first TLB entry within a TLB associated with the first processor, wherein the obtained first mask is a bit pattern;

obtaining from the first TLB entry a first page frame number associated with the shared memory;

applying the obtained first mask to the obtained first page frame number to generate a first value;

applying the obtained first mask to the obtained physical address input to generate a second value; and

comparing the first value and the second value to determine whether the first value and the second value match.

23. The non-transitory processor-readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause the first processor to perform operations further comprising:

iteratively obtaining a second mask and a second page frame number from other TLB entries within the TLB in response to determining that the first value and the second value do not match;

iteratively applying the obtained second mask to the obtained second page frame number to generate the first value; and

iteratively applying the obtained second mask to the obtained physical address input to generate the second value,

wherein comparing the first value and the second value to determine whether the first value and the second value match comprises iteratively comparing the first value and the second value to determine whether the first value and the second value match.

24. The non-transitory processor-readable storage medium of claim 23 , wherein the stored processor-executable software instructions are configured to cause the first processor to perform operations such that iteratively applying the obtained second mask to the obtained second page frame number to generate the first value comprises reusing page frame numbers from entries in a system page table without duplication.

25. The non-transitory processor-readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause the first processor to perform operations further comprising flushing the first TLB entry in response to determining that the first value and the second value match.

26. The non-transitory processor-readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause the first processor to perform operations further comprising sending a message indicating TLB actions and the physical address to a second processor, wherein the TLB actions include a TLB flush operation.

27. The non-transitory processor-readable storage medium of claim 22 , wherein the stored processor-executable software instructions are configured to cause the first processor to perform operations further comprising returning an index of the first TLB entry in response to determining that the first value and the second value match.

28. The non-transitory processor-readable storage medium of claim 27 , wherein the stored processor-executable software instructions are configured to cause the first processor to perform operations such that obtaining with the first processor the physical address input comprises receiving a message from a second processor including TLB actions and the physical address, and

wherein the stored processor-executable software instructions are configured to cause the first processor to perform operations further comprising:

clearing an active flag in response to receiving the message transmitted by the second processor;

performing the TLB actions indicated in the received message using the returned index of the first TLB entry; and

setting the active flag in response to performing the TLB actions.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2013
From: SHEN, JIAN; CHUA-EOAN, LEW GO
To: QUALCOMM INCORPORATED
Reel/Frame 031789/0248 →
Continuity (1)
Related Publication 20150100753A1 · Apr 9, 2015