IP Library Granted Patent US 9,058,284
Granted Patent B1
US 9,058,284 · App. 13/422,979 · Granted Jun 16, 2015

Method and apparatus for performing table lookup

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,058,284
App. No.
13/422,979
Granted
Jun 16, 2015
Kind
B1
Abstract

Method and apparatus for performing table lookup are disclosed. In one embodiment, the method includes providing a lookup table, where the lookup table includes a plurality of translation modes and each translation mode includes a corresponding translation table tree supporting a plurality of page sizes. The method further includes receiving a search request from a requester, determining a translation table tree for conducting the search request, determining a lookup sequence based on the translation table tree, generating a search output using the lookup sequence, and transmitting the search output to the requester. The plurality of translation modes includes a first set of page sizes for 32-bit operating system software and a second set of page sizes for 64-bit operating system software. The plurality of page sizes includes non-global pages, global pages, and both non-global and global pages.

Claims (71)

1. A method of performing a table lookup, comprising:

providing a lookup table, wherein the lookup table comprises a plurality of translation modes and wherein each translation mode comprises a corresponding translation table tree supporting a plurality of page sizes, wherein a first set of page sizes of the plurality of page sizes correspond to a 32 bit operating system software, and a second set of page sizes of the plurality of pages sizes correspond to a 64 bit operating system software;

receiving a search request from a requester;

determining a translation table tree for conducting the search request comprising determining a set of hashing functions that correspond to a set of preprogrammed page sizes and lookup types to be followed in executing the search request, wherein the lookup types correspond to a type of memory address;

determining a lookup sequence based on a function of the page sizes and lookup types, wherein the function is defined by a page sequence control register corresponding to a translation mode of the plurality of translation modes;

generating a search output using the lookup sequence; and

transmitting the search output to the requester.

2. The method of claim 1 , wherein the plurality of page sizes comprises at least one of a non-global page or a global page, or a combination thereof.

3. The method of claim 1 , wherein the translation table tree comprises at least one of a Hypervisor Stage-1 translation table tree, a Hypervisor Stage-2 translation table tree, a non-Hypervisor Stage-1 kernel translation table tree, and a non-Hypervisor Stage-1 user translation table tree.

4. The method of claim 1 , wherein determining a translation table tree comprises:

determining the set of preprogrammed page sizes and lookup types of the translation table tree based on encoded bits in the search request.

5. The method of claim 1 , wherein determining a lookup sequence comprises:

identifying a sequence for translation level 2 arbitration;

identifying a sequence for translation level 2 lookup;

identifying a sequence for translation level 2 compare;

identifying a sequence for translation level 2 match; and

identifying a sequence for translation level 2 output.

6. The method of claim 1 , wherein generating a search output using the lookup sequence comprises:

conducting a sequence of lookups based on a sequence of predetermined page sizes in a pipelined manner.

7. The method of claim 6 , wherein in response to determining a match made in a lookup of the sequence of lookups, discarding and ceasing other lookups of the sequence of lookups.

8. The method of claim 1 , wherein the search output comprises at least one of:

a most recently used virtual address to physical address translation;

a most recently used intermediate address to physical address translation; and

a most recently used physical address to physical address translation.

9. A computer program product for performing table lookup, comprising a non-transitory medium storing computer programs for execution by one or more computer systems, comprising:

code for providing a lookup table, wherein the lookup table comprises a plurality of translation modes and wherein each translation mode comprises a corresponding translation table tree supporting a plurality of page sizes, wherein a first set of page sizes of the plurality of page sizes correspond to a 32 bit operating system software, and a second set of page sizes of the plurality of pages sizes correspond to a 64 bit operating system software;

code for receiving a search request from a requester;

code for determining a translation table tree for conducting the search request comprising code for determining a set of hashing functions that correspond to a set of preprogrammed page sizes and lookup types be followed in executing the search request, wherein the lookup types correspond to a type of memory address;

code for determining a lookup sequence based on a function of the page sizes and lookup types, wherein the function is defined by a page sequence control register corresponding to a translation mode of the plurality of translation modes;

code for generating a search output using the lookup sequence; and

code for transmitting the search output to the requester.

10. The computer program product of claim 9 , wherein the plurality of page sizes comprises at least one of a non-global page or a global page, or a combination thereof.

11. The computer program product of claim 9 , wherein the translation table tree comprises at least one of a Hypervisor Stage-I translation table tree, a Hypervisor Stage-2 translation table tree, a non-Hypervisor Stage-I kernel translation table tree, and a non-Hypervisor Stage-I user translation table tree.

12. The computer program product of claim 9 , wherein the code for determining the set of pre programmed page sizes and lookup types of the translation table tree is based on encoded bits in the search request.

13. The computer program product of claim 9 , wherein code for determining a lookup sequence comprises:

code for identifying a sequence for translation level 2 arbitration;

code for identifying a sequence for translation level 2 lookup;

code for identifying a sequence for translation level 2 compare;

code for identifying a sequence for translation level 2 match; and

code for identifying a sequence for translation level 2 output.

14. The computer program product of claim 9 , wherein code for generating a search output using the lookup sequence comprises:

code for conducting a sequence of lookups based on a sequence of predetermined page sizes in a pipe lined manner.

15. The computer program product of claim 14 , wherein the code for conducting the sequence of lookups further comprises code for discarding other lookups of the sequence of lookups in response to determining a match made in a lookup of the sequence of lookups.

16. The computer program product of claim 9 , wherein the search output comprises at least one of:

a most recently used virtual address to physical address translation;

a most recently used intermediate address to physical address translation; and

a most recently used physical address to physical address translation.

17. A memory management apparatus, comprising: a lookup table, wherein the lookup table comprises a plurality of translation modes and wherein each translation mode comprises a corresponding translation table tree supporting a plurality of page sizes, wherein a first set of page sizes of the plurality of page sizes correspond to a 32 bit operating system software, and a second set of page sizes of the plurality of pages sizes correspond to a 64 bit operating system software;

one or more processors;

a memory management controller configured to work with the one or more processors, wherein the memory management controller comprises:

logic configured to receive a search request from a requester;

logic configured to determine a translation table tree for conducting the search request comprising logic for determining a set of hashing functions that correspond to a set of preprogrammed page sizes and lookup types to be followed in executing the search request, wherein the lookup types correspond to a type of memory address;

logic configured to determine a lookup sequence based on a function of the page sizes and lookup types, wherein the function is defined by a page sequence control register corresponding to a translation mode of the plurality of translation modes;

logic configured to generate a search output using the lookup sequence; and

logic configured to transmit the search output to the requester.

18. The memory management apparatus of claim 17 , wherein the plurality of page sizes comprises at least one of a non-global page or a global page, or a combination thereof.

19. The memory management apparatus of claim 17 , wherein the translation table tree comprises at least one of a Hypervisor Stage-I translation table tree, a Hypervisor Stage-2 translation table tree, a non-Hypervisor Stage-I kernel translation table tree, and a non-Hypervisor Stage-I user translation table tree.

20. The memory management apparatus of claim 17 , wherein logic configured to determine the set of pre programmed page sizes and lookup types of the translation table tree is based on encoded bits in the search request.

21. The memory management apparatus of claim 17 , wherein logic configured to determine a lookup sequence comprises:

logic configured to identify a sequence for translation level 2 arbitration;

logic configured to identify a sequence for translation level 2 lookup;

logic configured to identify a sequence for translation level 2 compare;

logic configured to identify a sequence for translation level 2 match; and

logic configured to identify a sequence for translation level 2 output.

22. The memory management apparatus of claim 17 , wherein logic configured to generate a search output using the lookup sequence comprises:

logic configured to conduct a sequence of lookups based on a sequence of predetermined page size in a pipe lined manner.

23. The memory management apparatus of claim 22 , wherein the logic configured to conduct the sequence of lookups further comprises logic configured to discard other lookups of the sequence of lookups in response to determining a match made in a lookup of the sequence of lookups.

24. The memory management apparatus of claim 17 , wherein the search output comprises at least one of:

a most recently used virtual address to physical address translation;

a most recently used intermediate address to physical address translation; and

a most recently used physical address to physical address translation.

Assignments (5)
CHANGE OF NAME Recorded Dec 6, 2017
From: PROJECT DENVER INTERMEDIATE HOLDINGS LLC
To: AMPERE COMPUTING LLC
Reel/Frame 044717/0683 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2017
From: MACOM CONNECTIVITY SOLUTIONS, LLC
To: PROJECT DENVER INTERMEDIATE HOLDINGS LLC
Reel/Frame 044798/0599 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2017
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: MACOM CONNECTIVITY SOLUTIONS, LLC (SUCCESSOR TO APPLIED MICRO CIRCUITS CORPORATION)
Reel/Frame 044652/0609 →
SECURITY INTEREST Recorded May 11, 2017
From: MACOM CONNECTIVITY SOLUTIONS, LLC (SUCCESSOR TO APPLIED MICRO CIRCUITS CORPORATION)
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 042444/0891 →
MERGER AND CHANGE OF NAME Recorded Apr 6, 2017
From: APPLIED MICRO CIRCUITS CORPORATION; MACOM CONNECTIVITY SOLUTIONS, LLC; MACOM CONNECTIVITY SOLUTIONS, LLC
To: MACOM CONNECTIVITY SOLUTIONS, LLC
Reel/Frame 042176/0185 →