Software controlled content addressable memory in a general purpose execution datapath
First Claim
Patent Images
1. A method for use in a processor having multiple multi-threaded programmable engines integrated within the processor:
- at a first thread of a one of the multiple multi-threaded engines;
performing a first thread lookup of a tag in a content addressable memory (CAM) within the one of the multiple multi-threaded engines;
if the first thread lookup results in a lookup miss of the tag in the CAM;
initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines into locations in storage internal to the one of the multiple multi-threaded engines;
writing an entry for the tag into the CAM; and
if the first thread lookup results in a lookup hit of the tag in the CAM;
modifying data at at least one of the locations in the storage internal to the one of the multiple multi-threaded engines without initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines;
at a second thread of the one of the multiple multi-threaded engines;
performing a second thread lookup of the tag in a content addressable memory (CAM) within the one of the multiple multi-threaded engines;
if the second thread lookup results in a lookup miss of the tag in the CAM;
initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines into locations in storage internal to the one of the multiple multi-threaded engines;
writing an entry for the tag into the CAM; and
if the second thread lookup results in a lookup hit of the tag in the CAM;
modifying data at at least one of the locations in the storage internal to the one of the multiple multi-threaded engines without initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines.
1 Assignment
0 Petitions
Accused Products
Abstract
A lookup mechanism provides an input value to a datapath element disposed in an execution datapath of a processor and causes the datapath element to compare the input value to stored identifier values. The lookup mechanism receives from the datapath element a result based on the comparison.
-
Citations
18 Claims
-
1. A method for use in a processor having multiple multi-threaded programmable engines integrated within the processor:
-
at a first thread of a one of the multiple multi-threaded engines; performing a first thread lookup of a tag in a content addressable memory (CAM) within the one of the multiple multi-threaded engines; if the first thread lookup results in a lookup miss of the tag in the CAM; initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines into locations in storage internal to the one of the multiple multi-threaded engines; writing an entry for the tag into the CAM; and if the first thread lookup results in a lookup hit of the tag in the CAM; modifying data at at least one of the locations in the storage internal to the one of the multiple multi-threaded engines without initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines; at a second thread of the one of the multiple multi-threaded engines; performing a second thread lookup of the tag in a content addressable memory (CAM) within the one of the multiple multi-threaded engines; if the second thread lookup results in a lookup miss of the tag in the CAM; initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines into locations in storage internal to the one of the multiple multi-threaded engines; writing an entry for the tag into the CAM; and if the second thread lookup results in a lookup hit of the tag in the CAM; modifying data at at least one of the locations in the storage internal to the one of the multiple multi-threaded engines without initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. Apparatus including a processor, comprising:
-
multiple programmable engines integrated within the processor, each of the engines comprising; registers; and multiple execution units operationally coupled to the registers to receive input and write output to the registers, the multiple execution units performing operations on operands provided by the registers in response to instructions, the execution units including an arithmetic logic unit (ALU) and a content addressable memory (CAM), at least one of the instructions including at least one opcode bit selecting the CAM among the execution units. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A system, comprising:
-
at least one Ethernet media access controller, at least one processor coupled to the at least one Ethernet media access controller, the processor comprising; multiple multi-threaded programmable engines integrated within the processor, multiple ones of the engines comprising; registers; multiple execution units operationally coupled to the registers to receive input and write output to the registers, the multiple execution units performing operations on operands provided by the registers in response to instructions, the execution units including an arithmetic logic unit (ALU) and a content addressable memory (CAM), at least one of the instructions including at least one bit selecting the CAM among the execution units. - View Dependent Claims (16)
-
-
17. A computer program product residing on a computer-readable medium comprising instructions to cause a computer, including a processor having multiple multi-threaded programmable engines integrated within the processor, to perform operations comprising:
-
at a first thread of a one of the multiple multi-threaded engines; performing a first thread lookup of a tag in a content addressable memory (CAM) within the one of the multiple multi-threaded engines; if the first thread lookup results in a lookup miss of the tag in the CAM; initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines into locations in storage internal to the one of the multiple multi-threaded engines; writing an entry for the tag into the CAM; and if the first thread lookup results in a lookup hit of the tag in the CAM; modifying data at at least one of the locations in the storage internal to the one or the multiple multi-threaded engines without initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines; at a second thread of the one of the multiple multi-threaded engines; performing a second thread lookup of the tag in a content addressable memory (CAM) within the one of the multiple multi-threaded engines; if the second thread lookup results in a lookup miss of the tag in the CAM; initiating a read of data associated with the tag from memory external to the one of the multiple multi-threaded engines into locations in Storage internal to the one of the multiple multi-threaded engines; writing an entry for the tag into the CAM; and if the second thread lookup results in a lookup hit of the tag in the CAM; modifying data at at least one of the locations in the storage internal to the one of the multiple multi-threaded engines without initiating at read of data associated with the tag from memory external to the one of the multiple multi-threaded engines. - View Dependent Claims (18)
-
Specification