# US 2014/0153575 A1 · Packet data processor in a communications processor architecture

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0153575 A1
- Document ID: US20140153575A1
- Status: Published application
- Kind: A1
- Application number: 13/756,849
- Filed: 2013-02-01
- Published: 2014-06-05
- Earliest claimed: 2012-11-30
- Assignees: LSI Corporation
- Applicants: Lsi Corporation
- Inventors: Robert J. Munoz
- Web page: https://patentgrep.com/patent/US20140153575A1

## CPC

- H04L 45/742: {Route cache; Operation thereof}
- H04L 47/2483: involving identification of individual flows
- H04L 67/56: Provisioning of proxy services (store-and-forward switching systems in data switching networks H04L12/54)
- H04L 45/74: Address processing for routing
- H04L 45/74591: {using content-addressable memories [CAM]}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Described embodiments provide a network processor having a hardware accelerator that identifies a received packet and, based on a flow identification associated with the received packet, might pre-fetch pre-established portions of data from the received packet into local data memory (e.g., local data cache) for processing by a general purpose processor core. In addition to the packet data, the software necessary for the general-purpose processor core to process the data might also be pre-fetched into local instruction memory (e.g., local instruction cache). The flow identification might be used to select different portions of the packet and different software to be pre-fetched.

## Claims

### Claim 1

A network processor comprising:
a shared memory;
an input/output module configured to receive a packet and store the received packet in the shared memory;
a packet processing module; and
a processor core module having a local memory;
wherein the packet processing module is configured to:
classify the received packet stored in the shared memory,
identify which one of one or more of a known flow the received packet pertains,
retrieve structural metadata corresponding to the identified flow of the received packet, and
pass to the processor core module the structural metadata; and
wherein the processor core module is configured to:
pre-fetch content at address locations in the shared memory specified by the structural metadata,
store the pre-fetched content into the local memory, and
process the pre-fetched content stored in the local memory.

### Claim 2 (depends on 1)

The network processor of claim 1 wherein the structural metadata includes at least an offset and length of the received packet for determining what addresses in the shared memory are to be pre-fetched, and wherein the pre-fetched content is data from at least a portion of the received packet.

### Claim 3 (depends on 2)

The method of claim 2 wherein the structural metadata includes an identifying address and length of software in the shared memory to be pre-fetched, wherein the pre-fetched content is software that will be used by the processor core module to process the pre-fetched packet data stored in local memory.

### Claim 4 (depends on 3)

The network processor of claim 3 wherein the local memory has a data portion and an instruction portion, the pre-fetched packet data is stored in the data portion of the local memory, and the pre-fetched software is stored in the instruction portion of the local memory.

### Claim 5 (depends on 1)

The network processor of claim 1 wherein when the packet processing module identifies which one of one or more of a known flow the received packet pertains, the packet processing module returns a flow identifier indicating which one of the known flows the stored packet pertains, and the structural metadata is retrieved by the packet processing module using the flow identifier to identify the retrieved structural metadata.

### Claim 6 (depends on 5)

The network processor of claim 5 wherein the structural metadata is stored in the shared system memory.

### Claim 7 (depends on 1)

The network processor of claim 1 wherein the packet processing module classifies the stored packet by port number, matching bit patterns of the stored packet to patterns of known protocols, frequency analysis of bytes in the stored packet statistical analysis of packet sizes, statistical analysis of packet inter-arrival times, or a combination thereof.

### Claim 8 (depends on 1)

The network processor of claim 1 wherein if the packet processing module is unable to classify the stored packet as pertaining to one of a known flow, then the packet processing module assigns a new flow to the received packet and a default set of structural metadata is passed to the processor core module.

### Claim 9 (depends on 1)

The network processor of claim 1 wherein what structural metadata the packet processing module is to be passed to the processor core is contained in a configuration table stored in the packet processing module.

### Claim 10 (depends on 1)

The apparatus of claim 1 wherein the local memory includes a cache memory.

### Claim 11 (depends on 1)

The apparatus of claim 1 wherein the network processor is implemented in an integrated circuit.

### Claim 12

A method of processing one or more packets received by a network processor having at least one shared system memory, the method comprising:
receiving, by an input/output module, a packet;
storing, by the input/output module, the received packet in the shared system memory;
classifying, by a packet processing module, the received packet stored in the shared system memory, to identify which one of one or more flows known to the packet processing module the received packet pertains;
retrieving, by the packet processing module, structural metadata corresponding to the identified flow of the received packet;
passing to a processor core module the structural metadata;
prefetching, by the processor core module, content at addresses in the shared memory specified by the structural metadata; and
storing the pre-fetched content into a memory local to the processor core module.

### Claim 13 (depends on 12)

The method of claim 12 wherein the step of classifying is performed by port number, matching bit patterns of the stored packet to patterns of known protocols, frequency analysis of bytes in the stored packet, statistical analysis of packet sizes, statistical analysis of packet inter-arrival times, or a combination thereof.

### Claim 14 (depends on 12)

The method of claim 12 wherein if the packet processing module is unable to classify the received packet as pertaining to one of a known flow, then the packet processing module assigns a new flow to the received packet and a default set of structural metadata is passed to the third one of the plurality of processing elements.

### Claim 15 (depends on 12)

The method of claim 12 wherein in the classifying step, the packet processing module returns a flow identifier indicating which one of the known flows the stored packet pertains and the structural metadata is retrieved using the flow identifier to identify the retrieved structural metadata.

### Claim 16 (depends on 12)

The method of claim 12 wherein the structural metadata includes at least an offset and length of the received packet for determining what addresses in the shared memory are to be pre-fetched, and wherein the pre-fetched content is data from at least a portion of the received packet.

### Claim 17 (depends on 16)

The method of claim 16 wherein the structural metadata includes an identifying address and length of software in the shared memory to be pre-fetched, wherein the pre-fetched content is software that will be used by the processor core module to process the pre-fetched packet data stored in local memory.

### Claim 18 (depends on 17)

The method of claim 17 further comprising the step of:
processing, by the processor core module using the pre-fetched software in the local memory, the pre-fetched data stored in the local memory.

### Claim 19 (depends on 18)

The method of claim 18 wherein the local memory has a data portion and an instruction portion, the pre-fetched packet data is stored in the data portion of the local memory, and the pre-fetched software is stored in the instruction portion of the local memory.

### Claim 20 (depends on 12)

The method of claim 12 wherein the local memory includes a cache memory.
