IP Library Granted Patent US 8,505,013
Granted Patent B2
US 8,505,013 · App. 12/975,823 · Granted Aug 6, 2013

Reducing data read latency in a network communications processor architecture

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 8,505,013
App. No.
12/975,823
Granted
Aug 6, 2013
Kind
B2
Abstract

Described embodiments provide address translation for data stored in at least one shared memory of a network processor. A processing module of the network processor generates tasks corresponding to each of a plurality of received packets. A packet classifier generates contexts for each task, each context associated with a thread of instructions to apply to the corresponding packet. A first subset of instructions is stored in a tree memory within the at least one shared memory. A second subset of instructions is stored in a cache within a multi-thread engine of the packet classifier. The multi-thread engine maintains status indicators corresponding to the first and second subsets of instructions within the cache and the tree memory and, based on the status indicators, accesses a lookup table while processing a thread to translate between an instruction number and a physical address of the instruction in the first and second subset of instructions.

Claims (85)

1. A packet processor in a network processor having a plurality of processing modules, wherein the network processor is coupled to at least one external memory and generates one or more tasks corresponding to each of a plurality of received packets, the packet processor comprising:

a scheduler configured to generate one or more contexts for each task received by the packet processor, the one or more contexts associated with a thread that corresponds to an order of instructions applied to the corresponding received packet,

wherein the packet processor is coupled to a tree memory within the at least one external memory, the tree memory has multiple banks and is configured to store a first subset of the instructions; and

a multi-thread instruction engine configured to process the thread in accordance with a look-up table, each thread corresponding to a context received from the scheduler, the multi-thread instruction engine comprising:

an instruction cache within the multi-thread instruction engine configured to store a second subset of the instructions that has a lower read latency than the first subset of the instructions, and

one or more status indicators configured to track the status of the first and second subsets of the instructions within the instruction cache and the tree memory;

wherein one or more instructions in the first subset of the instructions are duplicated onto the second subset of the instructions, whereby the multi-thread instruction engine is configured to access a given one of the duplicated instructions concurrently in the instruction cache and the tree memory so as to process multiple threads;

wherein the multi-thread instruction engine, based on the one or more status indicators, is further configured to access the look-up table while processing the thread so as to translate between a logical address and a physical address of the corresponding instruction of the first subset and the second subset of the instructions; and

a function bus interface configured to transmit the contexts within the multi-thread instruction engine and the scheduler, queue the contexts so that newer context wait for oldest context to be executed, and determine if a function call of the context is a terminating function call that causes the packet processor to end the context processing and generate an output task for subsequent processing in the network processor.

2. The packet processor recited in claim 1 , wherein: the tree memory comprises N banks of memory, where N is a positive integer; the one or more duplicated instructions are stored in M of the N banks of memory, where M is a positive integer; and the multi-thread instruction engine is configured to access a given one of the duplicated instructions concurrently in the instruction cache and the tree memory so as to process the given instruction for up to M threads concurrently.

3. The packet processor recited in claim 2 , wherein the value of M is determined based on a size of available shared memory that is a combination of multiple tree memory consisting of multiple memory banks, a total number of instructions performed by the multi-thread instruction engine, and one or more usage statistics of each instruction.

4. The packet processor recited in claim 3 , wherein N is equal to 8, and M is one of 2, 4 and 8.

5. The packet processor recited in claim 3 , wherein the first subset of the instructions stored in the tree memory is a subset of less frequently accessed instructions and the second subset of the instructions stored in the instruction cache is a subset of more frequently accessed instructions.

6. The packet processor recited in claim 2 , wherein each of the N banks of memory have a corresponding status indicator configured to indicate whether each of the N banks of memory are available to be accessed.

7. The packet processor recited in claim 6 , wherein the lookup table comprises:

Y table entries corresponding to up to Y instructions, where Y is a positive integer and wherein each of the Y table entries comprises a valid indicator, an instruction number range, a duplication factor, and a duplication base address; and

wherein the valid indicator value indicates whether the corresponding table entry is valid, the instruction number range value indicates a starting instruction number and an ending instruction number for the corresponding table entry, the duplication factor value indicates whether the instructions corresponding to the table entry are duplicated in one or more of the N memory banks, and the duplication base address indicates a memory bank mapping value for selecting one of the N memory banks.

8. The packet processor recited in claim 7 , wherein the multi-thread instruction engine is further configured to:

subtract the starting instruction number for the corresponding table entry from the requested instruction number and add the duplication base address to provide an intermediate value; and

if the duplication factor is set:

shift the intermediate value left by a number of bits corresponding to the value of N;

add to the shifted intermediate value a number of one of the M banks of memory available to be accessed; and

return the value as the physical address corresponding to the requested instruction number;

otherwise, if the duplication factor is not set: return the intermediate value as the physical address corresponding to the requested instruction number.

9. The packet processor recited in claim 1 , wherein the network processor is implemented in an integrated circuit.

10. The packet processor recited in claim 9 , wherein the available shared memory comprises:

a first shared memory comprising one or more banks of a random-access memory (RAM) cache internal to the network processor chip; and

a second shared memory comprising one or more banks of dynamic random-access memory (DRAM) external to the network processor chip.

11. A method of addressing data in a packet processor in a network processor having a plurality of processing modules, wherein the network processor is coupled to at least one external memory, the method comprising:

generating, by at least one of the plurality of processing modules, one or more tasks corresponding to each of a plurality of received packets;

generating, by a scheduler of the packet processor, one or more contexts for each task received by the packet processor, wherein the one or more contexts are associated with a thread that corresponds to an order of instructions applied to the corresponding received packet;

coupling the packet processor to a tree memory within the at least one external memory, wherein the tree memory has multiple banks;

storing a first subset of the instructions in the tree memory;

storing a second subset of the instructions in an instruction cache within a multi-thread instruction engine of the packet processor, wherein the second subset of instructions has a lower read latency than the first subset of the instructions; and

processing, by the multi-thread instruction engine, the thread in accordance with a look-up table, each thread corresponding to a context received from the scheduler, wherein the step of the processing comprises:

maintaining one or more status indicators corresponding to the first and second subsets of the instructions within the instruction cache and the tree memory; and

accessing, by the multi-thread instruction engine based on the one or more status indicators, the look-up table while processing the thread so as to translate between a logical address and a physical address of the corresponding instruction of the first subset and the second subset of the instructions;

duplicating, by the packet processor, one or more instructions in the first subset of the instructions onto the second subset of instructions;

accessing, the multi-thread instruction engine, a given one of the duplicated instructions concurrently in the instruction cache and the tree memory so as to process multiple threads;

transmitting, by a function bus interface, the contexts within the multi-thread instruction engine and the scheduler;

queuing, by the function bus interface, the contexts so that newer context wait for oldest context to be executed; and

determines, by the function bus interface, if a function call of the context is a terminating function call that causes the packet processor to end the context processing and generate an output task for subsequent processing in the network processor.

12. The method recited in claim 11 , wherein the tree memory comprises N banks of memory, where N is a positive integer, and wherein the method further comprises:

storing the one or more duplicated instructions in M of the N banks of memory, where M is a positive integer; and

accessing, by the multi-thread instruction engine, a given one of the duplicated instructions concurrently in the instruction cache and the tree memory so as to process the given instruction for up to M threads concurrently.

13. The method recited in claim 12 , wherein the method further comprises: determining a value of M based on a size of available shared memory that is a combination of multiple tree memory consisting of multiple memory banks, a total number of instructions performed by the multi-thread instruction engine, and one or more usage statistics of each instruction.

14. The method recited in claim 13 , wherein, for the method, N is equal to 8, and M is one of 2, 4 and 8.

15. The method recited in claim 13 , further comprising:

storing, based on the usage statistics, a subset of less frequently accessed instructions as the first subset of the instructions in the tree memory; and

storing, based on the usage statistics, a subset of more frequently accessed instructions as the first subset of the instructions in the instruction cache.

16. The method recited in claim 12 , further comprising:

indicating, for each of the N banks of memory in a corresponding status indicator, whether each of the N banks of memory is available to be accessed.

17. The method recited in claim 16 , wherein, for the method, the lookup table comprises:

Y table entries corresponding to up to Y instructions, where Y is a positive integer and wherein each of the Y table entries comprises a valid indicator, an instruction number range, a duplication factor, and a duplication base address; and

wherein the valid indicator value indicates whether the corresponding table entry is valid, the instruction number range value indicates a starting instruction number and an ending instruction number for the corresponding table entry, the duplication factor value indicates whether the instructions corresponding to the table entry are duplicated in one or more of the N memory banks, and the duplication base address indicates a memory bank mapping value for selecting one of the N memory banks.

18. The method recited in claim 17 , wherein the method further comprises:

subtracting the starting instruction number for the corresponding table entry from the requested instruction number and adding the duplication base address, thereby producing an intermediate value; and

if the duplication factor is set:

shifting the intermediate value left by a number of bits corresponding to the value of N;

adding to the shifted intermediate value a number of one of the M banks of memory available to be accessed; and

returning the value as the physical address corresponding to the requested instruction number;

otherwise, if the duplication factor is not set: returning the intermediate value as the physical address corresponding to the requested instruction number.

19. A non-transitory machine-readable medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements method of addressing data in a packet processor in a network processor having a plurality of processing modules and at least one shared memory that is a combination of multiple tree memory consisting of multiple memory bank, the method comprising:

generating, by at least one of the plurality of processing modules, one or more tasks corresponding to each of a plurality of received packets;

generating, by a scheduler of the packet processor, one or more contexts for each task received by the packet processor, wherein the one or more contexts are associated with a thread that corresponds to an order of instructions applied to the corresponding received packet;

coupling the packet processor to a tree memory within the at least one shared memory, wherein the tree memory has multiple banks;

storing a first subset of the instructions in the tree memory;

storing a second subset of the instructions in an instruction cache within a multi-thread instruction engine of the packet processor, wherein the second subset of instructions has a lower read latency than the first subset of the instructions; and

processing, by the multi-thread instruction engine, the thread in accordance with a look-up table, each thread corresponding to a context received from the scheduler, wherein the step of processing comprises:

maintaining one or more status indicators corresponding to the first and second subsets of the instructions within the instruction cache and the tree memory;

accessing, by the multi-thread instruction engine based on the one or more status indicators, the look-up table while processing the thread so as to translate between a logical address and a physical address of the corresponding instruction of the first subset and the second subset of the instructions;

duplicating, by the packet processor, one or more instructions in the first subset of the instructions onto the second subset of instructions;

accessing, the multi-thread instruction engine, a given one of the duplicated instructions concurrently in the instruction cache and the tree memory so as to process multiple threads;

transmitting, by a function bus interface, the contexts within the multi-thread instruction engine and the scheduler;

queuing, by the function bus interface, the contexts so that newer context wait for oldest context to be executed; and

determining, by the function bus interface, if a function call of the context is a terminating function call that causes the packet processor to end the context processing and generate an output task for subsequent processing in the network processor.

20. The machine readable medium recited in claim 19 , wherein the tree memory comprises N banks of memory, where N is a positive integer, and wherein the method further comprises:

wherein the duplicated instructions are stored in M of the N banks of memory, where M is a power of two, thereby;

processing the given instruction for up to M threads concurrently;

determining a value of M based on a size of available shared memory, a total number of instructions performed by the multi-thread instruction engine, and one or more usage statistics of each instruction;

storing, based on the usage statistics, a subset of less frequently accessed instructions as the first subset of the instructions in the tree memory;

storing, based on the usage statistics, a subset of more frequently accessed instructions as the first subset of the instructions in the instruction cache; and

indicating, for each of the N banks of memory in a corresponding status indicator, whether each of the N banks of memory are available to be accessed; and wherein, for the method, the lookup table comprises:

Y table entries corresponding to up to Y instructions, where Y is a positive integer and wherein each of the Y table entries comprises a valid indicator, an instruction number range, a duplication factor, and a duplication base address; and

wherein the valid indicator value indicates whether the corresponding table entry is valid, the instruction number range value indicates a starting instruction number and an ending instruction number for the corresponding table entry, the duplication factor value indicates whether the instructions corresponding to the table entry are duplicated in one or more of the N memory banks, and the duplication base address indicates a memory bank mapping value for selecting one of the N memory banks.

Assignments (4)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2015
From: LSI CORPORATION
To: INTEL CORPORATION
Reel/Frame 035090/0477 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT REEL/FRAME NO. 32856/0031 Recorded Nov 18, 2014
From: DEUTSCHE BANK AG NEW YORK BRANCH
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 034286/0872 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →