The present invention relates generally to systems composed of multiple integrated circuit devices, and more particularly to systems with integrated circuit devices that can be distinguished from one another by a “chip” identification value.
A typical electronic system may include multiple integrated circuit devices, often referred to as “chips.” In some types of systems, there can be a need to distinguish one chip from another. Even more particularly, it may be desirable to assign a unique chip identification value (chip ID) to each chip in a system. Such an arrangement may be advantageous in testing devices in system, or in network applications, as will be described below. Chip IDs may be “hard-wired” or programmable. Hard-wired chip IDs can be established when a device is manufactured, and so may be set by a manufacturing process or step, and so may not be changed. Programmable chip IDs, as the name implies, may be programmed by a user or other system device or process.
Device identification values may be associated with a particular part of a system, as opposed to a single chip of a system. A well-known hardware identification value is a media access control (MAC) address. A MAC address can be a unique value associated with a particular network device, typically a network adapter. MAC addresses are also known as network hardware addresses or network “physical” addresses. A MAC address can uniquely identify a network device on a network, to thereby enable transfer of data from and to such a device. A MAC address is a 12 digit hexadecimal number having a predetermined format. Such a format may include a manufacturer identifier and a device serial number, and is dictated by predetermined standards.
While a MAC address serves network addressing well, such a value can be cumbersome for applications in systems having fewer components, and/or requiring command execution or more compact chip addressing as it can include 48 bits of data.
Another conventional approach for providing unique chip ID values to chips included in a system can be “pin” addressing. In pin addressing, distinct pins (e.g., conductive leads) of a chip can be tied to high or lower power supply voltages to establish either a “1” or “0” input. Such pins may thus establish a chip address.
A drawback to pin addressing can be increased pin count for a device, as a number of pins would be dedicated chip address pins. Further, pin addressing may complicate the layout of system boards (e.g., modules), or the like, as the number chips ultimately included in a board may not be know at the time a board is manufactured.
Conventional pin addressing schemes for a serial arrangement of chips are known. Such conventional approaches may issue a command, in packet form, that can assign an initial chip ID to a first device in a serial sequence. Each device in the serial sequence may assign a received chip ID value, increment such a value, and then forward the command to the next device in a sequence. In this way, unique chip ID values may be assigned in a system having a serial arrangement of chips.
One particular type of system that can include multiple chips is a search engine system. Search engine systems typically perform a search operation that can compare a search value (e.g., a comparand or key) against a number of other data values. In the event a search value matches a data value, a search result may be considered a “hit” (e.g., match). If a search value does not match any data values, a search result may be considered a “miss” (e.g., no match).
Search engines may take various forms. A search engine may be based on a general-purpose processor and accompanying algorithm that may access a number of memory devices. Such approaches may be undesirably costly when compared to smaller device-oriented approaches, such as a content addressable memory (CAM) based search engine systems.
A CAM based search engine system can typically include a number of CAM devices. A CAM device may include a number of entries, each of which may store a data value, or portion thereof. In a search operation, a comparand (or key) may be compared to multiple entries to see if all, or a portion, of the key matches an entry. After a search operation, a CAM device may give a search result as an output. Typically a search result may provide associated data directly, or provide an “index” value that may be used to retrieve associated data from another device, such as a random access memory.
CAM devices may take a variety of forms. As but a few of the possible examples, a CAM device may be based on particular types of CAM cells. Such cells may include storage circuits integrated with compare circuits. Examples of storage circuits may be static random access memory (SRAM) type cells or dynamic random access memory (DRAM) type cells. Alternate approaches may include random access memories (RAM) arrays, or the like, with separate matching circuits and/or processing circuits.
A CAM based system having multiple branches (e.g., processing paths) is disclosed in commonly owned, co-pending patent application Ser. No. 10/109,364, filed on Mar. 28, 2002, and titled CASCADABLE CONTENT ADDRESSABLE MEMORY (CAM) DEVICE AND ARCHITECTURE, by James et al., the contents of which are incorporated by reference herein. James et al. also discloses a vote circuit within a CAM device that can make a precedence determination from among multiple responses from CAM devices. Such a precedence determination may include comparing a chip field containing a unique value identifying a chip (e.g. a chip ID).
In light of the above, it would be desirable to arrive at some way of assigning unique chip ID values to chips in a system that has a more complex arrangement than a serial sequence.
It would also be desirable to arrive at some way of assigning unique chip ID values for CAM devices in a CAM based search engine system. Further, such an arrangement could be particularly desirable for CAM based search engine systems that may establish precedence or priority among results based on chip ID values.
According to the present invention, a method of acknowledging commands received by an integrated circuit device (chip) may include a special operation branching mode. In a special operation branching mode, a command for assigning a chip identification value (assign ID) may be forwarded with a first type acknowledgement via a first chip output connection. Further, in the special operation branching mode, an assign ID command may be forwarded via a second chip output connection with a second type acknowledgement that is different than the first type acknowledgement.
According to one aspect of the embodiments, the method may also include placing a chip in a special operation branching mode when the chip stores a predetermined cleared chip ID value, and such a chip receives an assign ID command directed to the cleared chip ID value.
According to another aspect of the embodiments, the method may further include switching from the special operation branching mode to a normal branching mode when the chip receives an assign ID command directed to the current chip ID value, where such an assign ID command is not acknowledged by another chip.
According to another aspect of the embodiments, a method may include, in a normal branching mode, a chip forwarding an assign ID command with a first type acknowledgement via first and second chip output connections when such an assign ID command is not acknowledged by another chip of the system.
According to another aspect of the embodiments, a method may include, in a normal branching mode, forwarding an assign ID command with no acknowledgement via the first and second chip output connections when such an assign ID command is not acknowledged by another chip of the system, and such an assign ID command is not directed to the current chip ID value of the chip.
According to another aspect of the embodiments, a method may include, in a through mode, forwarding an assign ID command with no additional acknowledgement when such an assign ID command is not directed to a current chip ID value of a chip. In addition, an assign ID command may be forwarded with a first type acknowledgement when an assign ID command is not acknowledged by another chip, and such an assign ID command is not directed to a current chip ID value of a chip.
According to another aspect of the embodiments, a method may further include, in a special operation joining mode, outputting a predetermined end of branch response to an assign ID command.
According to another aspect of the embodiments, a method may further include, placing a chip in a special operation joining mode when the chip stores a predetermined cleared chip ID value, and such a chip receives an assign ID command directed to a cleared chip ID value. Such an assign ID command may also include a first type acknowledgement.
According to another aspect of the embodiments, a method may further include, switching from a special operation joining mode to a normal joining mode in response to receiving an assign ID command, where such an assign ID command is not acknowledged by another chip of a system.
The present invention may also include a method for assigning chip identifiers in a multi-chip content addressable memory (CAM) system. Such a method may include assigning a highest order chip identifier to all CAM chips in a system, and broadcasting a lowest order chip identifier value to all CAM chips in the system. Such a lowest order CAM chip in a system can have a highest order chip identifier configured to accept the lowest order chip identifier as a new chip identifier. The method may further include repeating a broadcasting step for an incremental chip identifier value until each CAM chip in the system has a unique chip identifier value.
According to one aspect of the embodiments, the method may also include a chip identifier for all CAM chips comprises a multi-bit value, and a highest order chip identifier can include all such bits being a “1.”
According to another aspect of the embodiments, a method may further include receiving at least one type of predetermined response prior to assigning a chip identifier for all chips of a first branch. A first branch may be one of a number of branches.
According to another aspect of the embodiments, a method may further include receiving a branch complete response that indicates a chip identifier of a branching CAM chip when chip identifiers are assigned to all chips of the first branch. A branching CAM chip may commonly connect a first and second branch.
According to another aspect of the embodiments, a method may further include reassigning a chip ID for a branching CAM chip in response to a branch complete response.
The present invention may further include a method of assigning chip ID values to a system that includes a plurality of CAM devices arranged into branches. Such a method can include returning a branch end response in response to an assign a chip identification (ID) command assigning a chip ID to a last chip of one of a plurality of branches.
According to one aspect of the embodiments, returning a branch end response can include returning a chip identification (chip ID) value of a branching CAM device. A branching CAM device can have a first output connection coupled to a first branch of CAM devices and a second output connection coupled to a second branch of CAM devices.
According to another aspect of the embodiments, a chip ID value of a branching CAM device can be returned when all CAM device of a first branch have been assigned unique chip ID values.
According to another aspect of the embodiments, a chip ID value of a branching CAM device can be returned in a predetermined field of a response packet.
According to another aspect of the embodiments, a method may further include acknowledging a received assign ID command differently down a first branch than a second branch while the CAM devices of a first branch are being assigned unique chip ID values.
According to another aspect of the embodiments, a method may further include acknowledging received chip ID assignment commands identically down a first branch and second branch when CAM devices of a first branch have been assigned unique chip ID values.
Various embodiments of the present invention will now be discussed in conjunction with a number of figures. The embodiments set forth methods for assigning unique identification values (chip IDs) to devices in a system that may include one or more branches. The embodiments also show particular approaches to assigning chip ID values to CAM devices of a search engine system.
Referring now to
In one approach, commands issued by a host 102 may include an assign chip ID command and a clear chip ID command. Particular examples and formats of such commands will be described below.
A command processing portion 104 may include a number of devices (chips) 106-0 to 106-5 arranged to receive commands from a host 102, and provide responses to such commands to a host 102. A command processing portion 104 can be connected to a host 102 by one-way connections. In particular, a command processing portion 104 may receive input data via a system input connection 108 and provide output data via a system output connection 110. Input data may include commands, while output data may include acknowledged commands and/or responses to commands.
A command processing portion 104 may include a number of branches 112-0 and 112-1. A branch (112-0 and 112-1) may include a number of chips (106-0 to 106-5) arranged in series. Further, while branches may be arranged in series, two or more branches may be arranged in parallel (112-0 and 112-1). Such a case is shown in
In one arrangement, a branch (112-0 and 112-1) may be a module that includes a circuit board on which chips are interconnected. A system 100 may thus be expandable by adding modules to form additional parallel or serial branches.
Each chip (106-0 to 106-5) may include at least one input connection and at least one output connection. For example, a branching chip 106-0 may include an input connection connected to a system input connection 108, and two output connections. A first output connection, which may be conceptualized as a “near” output connection, may be connected to through chip 106-1. A second output connection, which may be conceptualized as a “far” output connection, may be connected to through chip 106-3. Through chips 106-1 to 106-4 may each have one input connection and one output connection. Finally, a joining chip 106-5 may include a first input connection that may receive commands and responses from through chip 106-2 and a second input connection that may receive commands and responses from through chip 106-4. Joining chip 106-5 may include an output connection that can provide a final command and response output for a command processing portion 104.
Preferably, all chips (106-0 to 106-5) may have the same structure, each including at least two input connections and at least two output connections, with branching chips (e.g., 106-0) utilizing only one input connection, through chips (e.g., 106-1 to 106-4) utilizing only one input and one output connection, and joining chips (e.g., 106-5) utilizing only one output connection.
Each chip (106-0 to 106-5) may be capable of storing a number of values, including a chip ID value in a chip ID store (114-0 to 114-5) and a special operation (SOP) value in a SOP store (116-0 to 116-5). A chip ID value can a multi-bit value that may enable unique identification of multiple chips in a system, yet may be relatively small with respect to conventional identifiers (such as a MAC address) and hence may not contribute significantly to command size. In one approach, a chip ID value may be no more than 16 bits, preferably no more than 12-bits, even more preferably eight bits.
A SOP value can establish a special operating mode for a chip. Examples of special operation modes will be described in more detail below. A SOP value can preferably be switched between at least two values to establish a special operating mode or a normal operating mode.
A chip (106-0 to 106-5) may also provide certain responses to received commands. In particular, a chip (106-0 to 106-5) can receive commands issued by a host 102, acknowledge such commands, and/or generate responses to commands. These features will be described in various examples below.
Still further, while chips (106-0 to 106-5) may perform various functions, chips (106-0 to 106-5) may preferably be memory devices, such as random access memories, even more preferably content addressable memory (CAM) devices.
One example of a command format is shown in
An acknowledge field ACK may change as a command flows through multiple chips. Such an operation will now be described with reference to
In the example of
Referring still to
An unacknowledged command CMD:NACK may be received by a branching chip 302-0. Because it is assumed that the command CMD:NACK is directed to all chips, branching chip 302-0 may acknowledge the command before forwarding the command to chips 302-1 and 302-3. Thus, a command forwarded via both output connections of branching chip 302-0 may have a single acknowledgement, and so are shown as CMD:ACK1. If reference is made back to
A single acknowledged command CMD:ACK1 may be received by through chip 302-1. Again, because the command is targeted to all chips, through chip 302-1 may further acknowledge the command before forwarding the command to chip 302-2. However, acknowledgements may include both single and summary acknowledgements. Thus, a command forwarded by through chip 302-1 may have a summary acknowledgement, and so is shown as CMD:ACK2. If reference is made back to
Through chip 302-3 may operate in the same general fashion as chip 302-1, and forward a command with a summary acknowledgement CMD:ACK2.
Through chips 302-2 and 302-4 may receive summary acknowledged commands CMD:ACK2. However, while it is assumed that such commands are targeted to chips 302-2 and 302-4, because the command is already summary acknowledged, any additional acknowledgement may maintain the summary acknowledgement. Thus, commands forwarded by through chips 302-2 and 302-4 may be summary acknowledged commands CMD:ACK2.
Joining chip 302-5 may receive two summary acknowledge commands. Because such commands are already summary acknowledged, joining chip 302-5 may output a summary acknowledge command CMD:ACK2.
In this way, commands may be acknowledged by chips of a system, and include summary acknowledgements that can indicate when more than one chip has acknowledged a command.
As noted above, in addition to acknowledging a command, according to the present invention a chip may generate a response to a command.
One example of a response format is shown in
Summary response status fields are described in more detail in commonly-owned co-pending patent application filed on Dec. 23, 2002, and titled PACKET BASED COMMUNICATION FOR CONTENT ADDRESSABLE MEMORY (CAM) DEVICES AND SYSTEMS, by James et al., the contents of which are incorporated by reference herein.
Like an acknowledge field described above, a status field may change as responses to a given command flow through multiple chips of a system. Such an operation will now be described with reference to
After a command has been received by a chip (502-0 to 502-5), chips may begin outputting responses. A branching chip 502-0 may generate a single event response M1 that may be received by through chips 502-1 and 502-3. If reference is made back to
A single event response may be received by through chips 502-1 and 502-3. Such through chips (502-1 and 502-3), internally generate similar single event responses. However, such internal single event responses can be added to received single event responses to generate summary responses M2 as outputs. If reference is made back to
Each of through chips 502-2 and 502-4 may receive summary responses M2, and generate an internal single event response. Such internal single event responses, when added to received summary event responses, can result in a same summary response. Accordingly, through chips 502-2 and 502-4 can output summary responses M2 to joining chip 502-5.
Joining chip 502-5, like the other chips 502-0 to 502-4 may generate an internal single event response. Adding such an internal response to received summary responses can result in joining chip 502-5 outputting a summary result M2.
Having described general command-response generation for a system, a method for assigning chip IDs in such a system will now be described.
Referring now to
A method 600 may include setting all chips in a system to a predetermined value. In the particular example of
A method 600 may further include setting a New ID value to “0” (step 604). A New ID value may be a value supplied by a host, or the like. As will be described in more detail below, a chip may set its Chip ID value to a New ID value provided by a host according to a particular command.
A method 600 may also broadcast the New ID value to all chips (step 606). In one very particular approach, a step 606 may include issuing a command that may flow through all chips of a system, as illustrated in
After broadcasting a New ID value, a method may monitor a returned response to see of an end-of-branch has been reached (step 608). An end-of-branch can be reached when a last chip in a branch has assigned a New ID value. An end-of-branch response may be an actual response issued from a chip, or may also include the manner by which a command has been acknowledged.
If an end of branch has not been reached, a New ID value may be incremented (step 610). Steps 606 and 608 may be repeated until an end-of-branch is reached.
Once an end of branch is reached, a returned response may be monitored to see if such a branch was a last branch (step 612). If the branch is not a last branch, steps 606 and 608 may be repeated until another end-of-branch is reached.
Once a last branch has been completed, a Chip ID assignment process may conclude (step 614).
Having described one example of a chip ID assigning method, particular commands that may be executed by chips in chip ID assigning operations will now be described in detail.
Referring now to
Referring to
“Command” fields show how a CLEAR ID command may be received by a chip. Command fields include “Chip” which may indicate which chip(s) a command is intended for, “CMD Stat0” and “CMD Stat1” which may indicate an acknowledge state of a received command. Branching and through chips receive only one command, thus could only receive a CMD Stat0 value. Joining chips may receive two commands, thus one command could include the CMD Stat0 value, while the other could include the CMD Stat1 value.
“New State” fields show the properties of a chip following a received CLEAR ID command. Such properties include SOP and ChipID values already described.
“Response” fields show status values that may be included in a response output from a chip generated in response a CLEAR ID command. Response fields include “Stat0” and “Stat1.” Joining and through chips can output responses down single communication links, and thus can only provide one response with a Stat0 value. Branching chips may output responses down two communication links. Thus, a response output down one communication link could include a Stat0 value, while a response output down another communication link could include a Stat1 value.
As shown by
In one very particular arrangement, a CLEAR ID command may take the form of a packet like that shown in
A command field CMD/ACK may be a predetermined value that indicates a CLEAR ID command. An acknowledge portion of command field may initially be unacknowledged (NACK). However, as illustrated by
Similarly, a response to a CLEAR ID command may take the form of a response packet like that shown in
If reference is made back to
Referring now to
In one very particular arrangement, an ASSIGN ID command may take the form of a packet like that shown in
Referring again to
Further, a response to an ASSIGN ID command may take the form of a response packet like that shown in
If reference is made back to
Having described particular commands, a method for assigning chip IDs to chips of a system will now be described that may utilize such commands.
Referring now to
It is noted that in the embodiment of
Similarly, a joining chip may also have a special operating mode. Such a mode may be established by a special operation bit being set (to “1” in this example). In the special operating mode, a joining chip may respond to a received command with a special type response and/or acknowledgement. Such a special response and/or acknowledgement can indicate when an end of a branch has been reached in a chip ID assignment process.
Referring now to
While
As also shown in
Referring now to
Remaining chips (902-1 to 902-4) may also singly acknowledge the received command. Such a single acknowledgement from chips 902-1 and 902-3 may be added to a received single acknowledgement. Thus, chips 902-1 and 902-3 may output a summary acknowledgement ACK2. While chips 902-2, 902-4 and 902-5 may add their own single acknowledgements, because such chips already receive a summary acknowledgement, a summary acknowledgement may be output.
It is noted that because remaining through chips (902-1 to 902-4) receive an acknowledged AID command, chip ID values for such chips remain the same (FF). Similarly, because joining chip 902-5 receives a double acknowledged command, a state of joining chip 902-5 may remain unchanged.
As a result, a system may output a summary acknowledgement result ACK2. Such a result may be returned to a command issuing device (e.g., host), and indicate that a chip assignment operation is not yet complete.
Referring to
Referring now to
As shown by
As also shown in
Referring to
Referring now to
Through chip 902-1 may not acknowledge the command, as its chip ID (1) does not match that of the AID command (FF).
However, in response to an unacknowledged AID command, through chip 902-2 may change its current chip ID (FF) to the supplied new ID (2). Further, through chip 902-2 may provide a single acknowledgement for the command (ACK1).
As shown by
As shown in
Referring now to
Such an AID command may flow through chips 902-1 and 902-2 unacknowledged, and through chips 902-3 and 902-4 double acknowledged. The AID command may then be received by joining chip 902-5.
Because joining chip 902-5 is in the special operation mode, joining chip may specially acknowledge the command, shown as ACK3. Such a special acknowledgement may be returned to a command issuing device (e.g., host), and can indicate that an end of branch has been reached.
Referring to
It is noted that alternatively, in a special operation mode, a joining chip may not provide any special acknowledgement. This is shown by the ACK2 in parentheses. In such a case, only a special response M3 may indicate an end of branch.
In response to receiving an end of branch indication, a chip ID assigning method may begin assigning chip IDs for a next branch. In the example of
In the very particular example of
If a last branch has not been reached, a command issuing device may change the operating mode of a branching chip to thereby allow assignment of ID values down a new branch. This can include re-assigning a chip ID value returned by the special response in order to change such a chip from a special operating mode to a normal (e.g., not special) operating mode. Such an operation is shown in
Referring now to
The AID command may flow through chips 902-1 and 902-2 unacknowledged, as such a command is directed to chip ID 0.
As shown in
Having changed the mode of a branching chip 902-0, a method may return to assigning chip ID values, beginning with the last new ID value (in this case 3).
Referring now to
Through chip 902-3 may change its chip ID to the new chip ID. Acknowledgements by chips 902-3 to 902-5 may result in a summary acknowledgement ACK2. Such an acknowledgement may indicate chip assignment operations should continue.
Responses may be generated as indicated by
Referring now to
Through chip 902-4 may change its chip ID to the new chip ID. A single acknowledgement ACK1 by chip 902-4 may result in joining chip 902-5 being placed in the special operating mode (SOP=1).
A summary acknowledgement ACK2 may be output, indicating chip assignment should continue.
Responses may be generated as indicated by
Referring now to
Because joining chip 902-5 is in the special operation mode, joining chip may specially acknowledge the command, shown as ACK3. Such a special acknowledgement may be returned to a command issuing device (e.g., host), and can indicate that an end of branch has been reached.
Further, as shown in
Still further, within joining chip 902-5, a special operation bit may return to a previous value (SOP=0). Thus, “SOP=0” is shown in
As noted previously, a special response (M3) and/or acknowledgment (ACK3) can indicate an end of branch has been reached. Further, if a returned chip ID value of a special acknowledgement is less than the last “new ID” issued, a last branch has not been reached. In the present example, a returned chip ID=FF, and the last new ID=5, thus a last branch has been reached.
If a last branch has been reached, a command issuing device may repeat a previous assigning command, to thereby assign a chip ID to a last device in a system. Such an operation is shown in
Referring now to
A single acknowledgment ACK1 can indicate that a last chip has been assigned a chip ID value. Thus, a chip ID assigning operation can end.
As shown by
Of course, the particular command and response arrangement shown by
Thus, while the embodiments set forth herein have been described in detail, it should be understood that the present invention could be subject to various changes, substitutions, and alterations without departing from the spirit and scope of the invention. Accordingly, the present invention is intended to be limited only as defined by the appended claims.
This application claims the benefit of provisional application Ser. No. 60/343,973 filed Dec. 27, 2001.
Number | Name | Date | Kind |
---|---|---|---|
4646300 | Goodman et al. | Feb 1987 | A |
5422885 | Nadkarni | Jun 1995 | A |
5548559 | Mochizuki et al. | Aug 1996 | A |
5734819 | Lewis | Mar 1998 | A |
5860080 | James et al. | Jan 1999 | A |
5930359 | Kempke et al. | Jul 1999 | A |
5935229 | Duval et al. | Aug 1999 | A |
5952934 | Matsumoto et al. | Sep 1999 | A |
6600686 | Huh et al. | Jul 2003 | B1 |
20030084219 | Yao et al. | May 2003 | A1 |
20040174753 | Nakano et al. | Sep 2004 | A1 |
Number | Date | Country | |
---|---|---|---|
60343973 | Dec 2001 | US |