# US 7,610,440 B2 · Content addressable memory with automated learning

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

- Number: US 7,610,440 B2
- Document ID: US7610440B2
- Status: Granted
- Kind: B2
- Application number: 10/279,154
- Filed: 2002-10-23
- Published: 2004-04-29
- Granted: 2009-10-27
- Earliest claimed: 2002-10-23
- Inventors: Donald E. Husby
- Web page: https://patentgrep.com/patent/US7610440B2

## CPC

- H04L 45/7453: using hashing
- G06F 16/9014: {hash tables}
- H04L 45/742: {Route cache; Operation thereof}
- H04L 69/00: Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass (networks security protocols H04L9/40; wireless communication networks H04W)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A Content Addressable Memory (CAM) architecture is disclosed wherein at least part of an access key is unconditionally written to a CAM memory location. This unconditional writing is performed while accessing a set of CAM memory locations for the purposes of matching the access key. This writing is performed regardless of whether a match to the access key is found.

## Claims

### Claim 1

A content addressable memory (CAM) comprising:
a first plurality of storage locations to store a plurality of rules;
a second plurality of storage locations associated with and coupled to said first plurality of storage locations to store either a plurality of contexts correspondingly associated with the rules or a plurality of pointers correspondingly pointing to the corresponding contexts stored outside the CAM, wherein whether the second plurality of storage locations to store the plurality of contexts or the plurality of pointers is determined according to a quantity of context information to be stored;
first write logic coupled to said first plurality of storage locations to unconditionally write a new rule to a selected one of said first plurality of storage locations while accessing said first plurality of storage locations for one or more full or partial match of an access key, the access key being a subset of a datagram; and
second write logic to write either a new context associated with the new rule, or a pointer to a new context associated with the new rule, into a selected one of the second plurality of storage locations, the new context being created in response to a partial match of the access key against one of said first plurality of storage locations.

### Claim 2 (depends on 1)

The CAM of claim 1 wherein said selected one of said first plurality of storage locations is determined from a next available storage indicator.

### Claim 3 (depends on 1)

The CAM of claim 1 wherein said first write logic further comprises a valid bit.

### Claim 4 (depends on 1)

The CAM of claim 1 wherein said second write logic further comprises a valid bit.

### Claim 5 (depends on 4)

The CAM of claim 4 wherein said valid bit is set upon said writing of said pointer to an execution context.

### Claim 6 (depends on 5)

The CAM of claim 5 wherein said execution context contains information on one or more of a flow information and a processor assignment.

### Claim 7

A Network Integrated Circuit comprising:
a content addressable memory (CAM) structure including a first plurality of storage locations to store a plurality of rules and a second plurality of storage locations associated with said first plurality of storage locations to store either a plurality of contexts correspondingly associated with the rules or a plurality of pointers correspondingly pointing to the corresponding contexts stored outside the CAM, wherein whether the second plurality of storage locations to store the plurality of contexts or to store the plurality of pointers is determined according to a quantity of context information to be stored;
a network processor coupled to the CAM structure; and first write logic coupled to said first plurality of storage locations to unconditionally write a new rule to a selected one of said first plurality of storage locations while accessing said first plurality of storage locations for one or more full or partial match using an access key that is a subset of a datagram;
wherein said network processor is configured to create and store a new context associated with the new rule in the CAM structure or a pointer to a new context associated with the new rule if the new context is created outside of the CAM, in response to a partial match of the access key against one of said first plurality of storage locations.

### Claim 8 (depends on 7)

The Network Integrated Circuit of claim 7 wherein the CAM structure supports multiple protocols.

### Claim 9 (depends on 7)

The Network Integrated Circuit of claim 7 where the network processor includes second write logic coupled to said second plurality of storage locations to write a pointer to an execution context to an associated one of said second plurality of storage locations at a subsequent point in time to said access.

### Claim 10 (depends on 7)

The Network Integrated Circuit of claim 7 wherein said selected one of said first plurality of storage locations is determined from a next available storage indicator.

### Claim 11 (depends on 7)

The Network Integrated Circuit of claim 7 wherein said first write logic further comprises a valid bit.

### Claim 12 (depends on 9)

The Network Integrated Circuit of claim 9 wherein said second write logic further comprises a valid bit.

### Claim 13 (depends on 12)

The Network Integrated Circuit of claim 12 wherein said valid bit is set upon said writing of said pointer to said execution context.

### Claim 14 (depends on 9)

The Network Integrated Circuit of claim 9 wherein said execution context includes information selected from one or more of a flow information and a processor assignment.

### Claim 15

An apparatus comprising:
a switching fabric including a plurality of ingress/egress points to switch datagrams received through mediums coupled to the ingress/egress points; and
a network integrated circuit including:
a content addressable memory (CAM) structure including a first plurality of storage locations to store a plurality of rules and a second plurality of storage locations associated with said first plurality of storage locations to store either a plurality of contexts correspondingly associated with the rules or a plurality of pointers correspondingly pointing to a plurality of corresponding contexts stored outside the CAM, wherein whether the second plurality of storage locations to store the plurality of contexts or a plurality of pointers correspondingly pointing to the corresponding contexts stored outside the CAM is determined according to a quantity of context information to be stored;
a memory to store context information; and
first write logic coupled to said first plurality of storage locations to unconditionally write a new rule to a selected one of said first plurality of storage locations while accessing said first plurality of storage locations for one or more full or partial match using an access key that is a subset of a datagram; and
a network processor coupled to the CAM structure and the memory configured to create and store a new context associated with the new rule in the memory, or a pointer to a new context if the new context is created outside of the CAM, in response to a partial match of the access key against one of said first plurality of storage locations.

### Claim 16 (depends on 15)

The networking apparatus of claim 15 wherein the CAM structure further includes second write logic coupled to said second plurality of storage locations to write a pointer to an execution context to a corresponding one of said second plurality of storage locations at a subsequent point in time to said access.

### Claim 17 (depends on 15)

The networking apparatus of claim 15 wherein said selected one of said first plurality of storage locations is determined from a next available storage indicator.

### Claim 18 (depends on 15)

The networking apparatus of claim 15 wherein said first write logic further comprises a valid bit.

### Claim 19 (depends on 16)

The networking apparatus of claim 16 wherein said second write logic further comprises a valid bit.

### Claim 20 (depends on 19)

The networking apparatus of claim 19 wherein said valid bit is set upon said writing of said pointer to said execution context.

### Claim 21 (depends on 16)

The networking apparatus of claim 16 wherein said execution context includes information selected from one or more of a flow information and a processor assignment.

### Claim 22 (depends on 15)

The networking apparatus of claim 15 wherein associated indices of said second plurality of storage location operate as context pointers.

### Claim 23

A method comprising:
responsive to receipt of an access key that is a subset of a datagram, writing unconditionally at least a portion of a rule to a selected one of a first plurality of storage locations in a content addressable memory (CAM) structure;
accessing, while said writing unconditionally, the first plurality of storage locations for a full or a partial match using the access key; and
creating and storing a new context or a pointer to a new context into a selected one of a second plurality of locations associated with and coupled to said first plurality of storage locations to point to the new context if the new context is created outside of the CAM in response to a partial match against one of said first plurality of storage locations, wherein whether the new context or a pointer to the new context is to be stored in the selected one of the second plurality of locations is determined according to a quantity of the new context.

### Claim 24 (depends on 23)

The method as defined in claim 23 further comprising:
determining said selected one of the first plurality of storage locations from a next available storage indicator.

### Claim 25 (depends on 24)

The method as defined in claim 24 further comprising:
adjusting said next available storage indicator to point to a free storage location in the first plurality of storage locations.
