Claims
- 1. A method comprising:
maintaining state information for a plurality of logical processors; and applying the state information to a set of predefined rules to determine whether the logical processors can share a virtual address translation.
- 2. A method as recited in claim 1, wherein the state information includes a page table address associated with each of the logical processors.
- 3. A method as recited in claim 2, wherein said applying comprises determining whether the logical processors can share a virtual address translation based on a comparison of page table physical addresses.
- 4. A method as recited in claim 3, wherein said applying comprises determining that the logical processors can share a virtual address translation if p age table physical addresses associated with the logical processors match.
- 5. A method comprising:
maintaining a plurality of page table addresses; and determining whether the logical processors can share a virtual address translation based on the page table addresses.
- 6. A method as recited in claim 5, wherein each of the page table addresses corresponds to a page table of a different one of a plurality of logical processors, and wherein said determining comprises determining whether the logical processors can share a virtual address translation based on a comparison of page table addresses.
- 7. A method as recited in claim 6, wherein said determining comprises comparing an updated physical page table address with a physical page table address of each other logical processor of the plurality of logical processors.
- 8. A method as recited in claim 6, wherein said determining comprises determining that the logical processors can share a virtual address translation if page table addresses associated with the logical processors match.
- 9. A method as recited in claim 6, wherein said determining comprises determining that the logical processors can share a virtual address translation if physical page table addresses associated with the logical processors match.
- 10. A method as recited in claim 6, further comprising:
referring to the p age table addresses using virtual page table addresses; caching a plurality of physical page table addresses as translations of the virtual page table addresses; and determining that the logical processors can share a virtual address translation if physical page table addresses associated with the logical processors match.
- 11. A method as recited in claim 10, further comprising updating at least one of the cached physical page table addresses in response to installing or deleting a translation for a base address of a page table.
- 12. A method as recited in claim 10, further comprising updating at least one of the cached physical page table addresses in response to performing a context switch.
- 13. A method comprising:
maintaining a plurality of page table physical addresses; comparing an updated page table physical address to one of the plurality of page table physical addresses; and determining whether two or more of a plurality of logical processors can share a virtual address translation based on an outcome of said comparing.
- 14. A method as recited in claim 13, wherein said determining comprises updating a sharing indication in a translation lookaside buffer (TLB).
- 15. A method as recited in claim 14, further comprising controlling access to a virtual address translation stored in the TLB based on the sharing status indication.
- 16. A method as recited in claim 13, wherein said comparing comprises comparing the updated page table physical address with a page table physical address of each other logical processor of the plurality of logical processors.
- 17. A method as recited in claim 16, wherein said determining comprises generating an indication that the virtual address translation may be shared by the logical processors if the updated page table physical address matches each other page table physical address of the plurality of page table physical addresses.
- 18. A method as recited in claim 16, further comprising updating a set of values, each value corresponding to a different one of the page table physical addresses, by causing each value to indicate whether the corresponding page table physical address matches the updated page table physical address.
- 19. A method as recited in claim 18, wherein said determining further comprises using the updated set of values to update a set of share vectors, each share vector corresponding to a different one of the logical processors, each share vector indicating the logical processors which can share virtual address translations.
- 20. A method as recited in claim 19, further comprising installing a virtual address translation in a translation lookaside buffer (TLB), by
selecting one of the share vectors, and using the selected share vector to determine which of the logical processors may share the virtual address translation.
- 21. A method as recited in claim 20, wherein said using the selected share vector to determine which of the logical processors may share the virtual address translation comprises
using the selected share vector to provide a sharing indication in the TLB corresponding to the virtual address translation.
- 22. A method as recited in claim 13, further comprising caching the physical page table addresses as translations of corresponding virtual page table addresses.
- 23. A method as recited in claim 22, further comprising updating at least one of the cached physical page table addresses in response to installing or deleting a translation for a base address of a page table.
- 24. A method as recited in claim 22, further comprising updating at least one of the cached physical page table addresses in response to performing a context switch.
- 25. A method comprising:
storing a plurality of page table physical addresses, each of the page table physical addresses corresponding to a different one of a plurality of logical processors; comparing the page table physical addresses with each other; generating an indication of whether the virtual address translations may be shared by the logical processors based on an outcome of said comparing, by
generating an indication that the virtual address translations may be shared by the logical processors if the page table physical addresses are the same, and generating an indication that the virtual address translations may not be shared by the logical processors if the page table physical addresses are not the same; and using the indication to update a sharing status indication in a translation lookaside buffer (TLB).
- 26. A method as recited in claim 25, further comprising installing a virtual address translation in the TLB based on the indication of whether the virtual address translations may be shared.
- 27. A method as recited in claim 25, further comprising controlling access to a virtual address translation stored in the TLB based on the sharing status indication.
- 28. A method as recited in claim 25, wherein the stored physical page table addresses are cached translations of virtual page table addresses.
- 29. A method as recited in claim 28, further comprising updating at least one of the cached translations in response to installing or deleting a translation for a base address of a page table.
- 30. A method as recited in claim 28, further comprising updating at least one of the cached translations in response to performing a context switch.
- 31. A method comprising:
storing a plurality of page table physical addresses, each of the page table physical addresses corresponding to a different one of a plurality of logical processors; updating one of the page table physical addresses based on a first logical processor identifier (ID); using the first logical processor ID to update a set of values, each value corresponding to a different one of the page table physical addresses, such that each value indicates whether the corresponding page table physical address matches a page table physical address associated with the first logical processor ID; using the updated set of values to update a set of share vectors, each share vector corresponding to a different one of the logical processors, each share vector indicating the logical processors which can share virtual address translations; and installing a virtual address translation in a translation lookaside buffer (TLB) on behalf of one of the logical processors, said one of the logical processors being identified by a second logical processor ID, wherein said installing includes
using the second logical processor ID to select one of the share vectors, and using the selected share vector to determine which of the logical processors may share the virtual address translation.
- 32. A method as recited in claim 31, wherein said using the selected share vector to determine which of the logical processors may share the virtual address translation comprises
using the selected share vector to provide a sharing indication in the TLB corresponding to the virtual address translation.
- 33. A method as recited in claim 31, wherein the page table physical addresses are page table physical base addresses.
- 34. A method as recited in claim 31, wherein the stored physical page table addresses are cached translations of virtual page table addresses.
- 35. A method as recited in claim 34, further comprising updating at least one of the stored physical page table addresses in response to installing or deleting a translation for a base address of a page table.
- 36. A method as recited in claim 34, further comprising updating at least one of the stored physical page table addresses in response to performing a context switch.
- 37. An apparatus comprising:
means for maintaining state information for a plurality of logical processors; and means for applying the state information to a set of predefined rules to determine whether the logical processors can share a virtual address translation.
- 38. An apparatus recited in claim 37, wherein the state information includes a page table address associated with each of the logical processors.
- 39. An apparatus recited in claim 38, wherein said means for applying comprises means for determining whether the logical processors can share a virtual address translation based on a comparison of page table physical addresses.
- 40. An apparatus recited in claim 39, wherein said means for applying comprises means for determining that the logical processors can share a virtual address translation if page table physical addresses associated with the logical processors match.
- 41. A machine-readable storage medium having stored therein sequences of instructions which configure a machine to perform a method comprising:
maintaining a plurality of page table addresses, each of the page table physical addresses corresponding to a page table of a different one of a plurality of logical processors; determining whether the logical processors can share a virtual address translation based on a comparison of page table addresses.
- 42. A machine-readable storage medium as recited in claim 41, wherein said determining comprises comparing the updated page table physical address with a page table physical address of each other logical processor of the plurality of logical processors.
- 43. A machine-readable storage medium as recited in claim 41, wherein said determining comprises determining that the logical processors can share a virtual address translation if page table addresses associated with the logical processors match.
- 44. A machine-readable storage medium as recited in claim 43, wherein the page table addresses are physical addresses.
- 45. A machine-readable storage medium as recited in claim 41, wherein said determining comprises updating a sharing indication in a translation lookaside buffer (TLB).
- 46. A machine-readable storage medium as recited in claim 45, further comprising controlling access to a virtual address translation stored in the TLB based on the sharing status indication.
- 47. A multi-threaded processor comprising:
a plurality of logical processors; and an address translation stage including
a translation lookaside buffer (TLB) to store a plurality of virtual address translations, and a control logic to maintain a plurality of page table physical addresses, to compare an updated page table physical address to one of the plurality of page table physical addresses, and to determine whether two or more of a plurality of logical processors can share a virtual address translation based on an outcome of the comparison.
- 48. A multi-threaded processor as recited in claim 47, wherein the control logic updates a sharing indication in the TLB.
- 49. A multi-threaded processor as recited in claim 48, wherein the TLB controls access to a virtual address translation stored in the TLB based on the sharing status indication.
- 50. A multi-threaded processor as recited in claim 47, wherein the control logic includes one or more comparators to compare the updated page table physical address with a page table physical address of each other logical processor of the plurality of logical processors.
- 51. A multi-threaded processor as recited in claim 50, wherein the control logic generates an indication that the virtual address translation may be shared by the logical processors if the updated page table physical address matches each other page table physical address of the plurality of page table physical addresses.
- 52. A multi-threaded processor as recited in claim 50, further comprising a compare vector including a plurality of stored values, each value corresponding to a different one of the page table physical addresses, wherein the control logic causes each value to indicate whether the corresponding page table physical address matches the updated page table physical address.
- 53. A multi-threaded processor as recited in claim 52, wherein the control logic uses the compare vector to update a set of share vectors, each share vector corresponding to a different one of the logical processors, each share vector indicating the logical processors which can share virtual address translations.
- 54. A computing system comprising:
a plurality of logical processors; a memory to store a plurality of virtual address translations; and a control logic including
a comparator to compare a plurality of page table physical addresses with each other, each of the page table physical addresses associated with a different one of the logical processors, and logic to generate an indication of whether the virtual address translations may be shared by the logical processors by generating an indication that the virtual address translations may be shared by the logical processors if the page table physical addresses match, and by generating an indication that the virtual address translations may not be shared by the logical processors if the page table physical addresses do not match.
- 55. A computing system as recited in claim 54, further comprising logic to install a virtual address translation in a translation lookaside buffer (TLB) based on the indication of whether the virtual address translations may be shared.
- 56. A computing system as recited in claim 54, further comprising logic to control access to a virtual address translation stored in a translation lookaside buffer (TLB) based on the sharing status indication.
Parent Case Info
[0001] This is a continuation-in-part of application Ser. No. 09/823,472 of Willis et al., filed on Mar. 30, 2001 and entitled, “Method and Apparatus for Sharing TLB Entries”.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09823472 |
Mar 2001 |
US |
Child |
09894529 |
Jun 2001 |
US |