Abstract:
Embodiments of the invention provide a state machine for initializing the physical layer of a point-to-point link-based interconnection. Embodiments of the invention use explicit handshakes between the interconnected agent to advance states and provide a variety of optional features for flexibility and efficiency.

Description:
FIELD  
       [0001]     Embodiments of the invention relate generally to the field of processing systems employing a link-based interconnection scheme, and more specifically to state machines for initializing the physical layer portion of such processing systems.  
       BACKGROUND  
       [0002]     Increasing data processing requirements have led to the development of larger and more complicated applications executed on multiprocessing systems. Such systems may be implemented using a bus-based interconnection scheme. The bus-based interconnection scheme has distinct disadvantages in the areas of performance, scalability, and reliability. Performance for such a system suffers due to the length of the shared bus. That is, the length of the wire providing electrical connection between processors is dependent upon the number of processors in the multiple processor system (MPS). A greater number of processors and the length of the electrical connection, as well as the electrical loading of all other processors on the bus, reduces the effective speed at which the processors can be operated. Bus-based systems are not scalable in that the shared bus acts as a bottleneck when more processors are added. Moreover, the fact that all of the processors share a common bus means that if the bus fails for any reason, all of the processors are inoperable, thus reliability is jeopardized by the bus-based design.  
         [0003]     To address these disadvantages, MPSs having a point-to-point, link-based interconnection scheme have been developed. Each node of such a system includes an agent (e.g., processor, memory controller, I/O hub component, chipsets, etc.) and a router for communicating data between connected nodes. The agents of such systems communicate data through use of an interconnection hierarchy that typically includes a protocol layer, an optional routing layer, a link layer, and a physical layer.  
         [0004]     The protocol layer, which is the highest layer of the interconnection hierarchy, institutes the interconnection protocol, which is a set of rules that determines how agents will communicate with one another. For example, the interconnection protocol sets the format for the protocol transaction packet (PTP), which constitutes the unit of data that is communicated between nodes. Such packets typically contain information to identify the packet and indicate its purpose (e.g., whether it is communicating data in response to a request or requesting data from another node).  
         [0005]     The routing layer determines a path over which data is communicated between nodes. That is, because each node is not connected to every other node, there are multiple paths over which data may be communicated between two particular nodes. The function of the routing layer is to specify the optimal path.  
         [0006]     The link layer receives the PTPs from the protocol layer and communicates them in a sequence of chunks (portions). The size of each portion is determined by the link layer and represents a portion of a PTP whose transfer must be synchronized, hence each portion is known as a flow control unit (flit). A PTP is comprised of an integral and variable number of flits. The link layer handles the flow control, which may include error checking and encoding mechanisms. Through the link layer, each node is keeping track of data sent and received and sending and receiving acknowledgements in regard to such data.  
         [0007]     The physical layer consists of the actual electronics and signaling mechanisms at each node. In point-to-point, link-based interconnection schemes, there are only two agents connected to each link. This limited electronic loading results in increased operating speeds. Operating speeds can be increased further by reducing the width of the physical layer interface (PLI) and thus the clock variation. The PLI is therefore typically designed to communicate some fraction of a flit on each of several clock cycles. The fraction of a flit that can be transferred across a physical interface in a single clock cycle is known as a physical control digit (phit). While flits represent logical units of data, a phit corresponds to a quantity of data transmitted in a unit interval.  
         [0008]     The interconnection hierarchy is implemented to achieve greater system operating speed at the physical layer. The link layer is transmitting data (received as PTPs from the protocol layer) in flits, which are then decomposed into phits at the physical layer and are communicated over the PLI to the physical layer of a receiving agent. The received phits are integrated into flits at the physical layer of the receiving agent and forwarded to the link layer of the receiving agent, which combines the flits into PTPs and forwards the PTPs to the protocol layer of the receiving agent.  
         [0009]     The electronics of the physical layer typically include some training logic that allows the physical layer of each node of a link to operate using the link. That is, the training logic allows the physical layers to calibrate their internal integrated circuit devices so that they are compatible with the link (i.e., the physical interconnect). This process is known as physical layer link initialization. Typical link initialization algorithms have many disadvantages. For example, typical initialization algorithms use predetermined count values to advance states and are therefore difficult to validate and debug. Some use an encoded link requiring that the data be encoded prior to transmission, and decoded when received. Additionally, typical initialization algorithms do not support many desirable features. For example, typical initialization algorithms require a complete re-initialization of the physical layer link after the link has been placed in a low-power mode.  
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]     The invention may be best understood by referring to the following description and accompanying drawings that are used to illustrate embodiments of the invention. In the drawings:  
         [0011]      FIG. 1  illustrates a state machine for effecting a physical layer initialization in accordance with one embodiment of the invention;  
         [0012]      FIG. 2  illustrates the Detect operation in accordance with one embodiment of the invention;  
         [0013]      FIG. 3  illustrates the Polling operation in accordance with one embodiment of the invention;  
         [0014]      FIG. 4  illustrates the Configuration operation in accordance with one embodiment of the invention;  
         [0015]      FIG. 5  illustrates a process by which a reduced-width link is configured in accordance with one embodiment of the invention;  
         [0016]      FIG. 6  illustrates a state machine for effecting a physical layer initialization that supports two low-power modes in accordance with one embodiment of the invention;  
         [0017]      FIG. 7  illustrates the connection of two agents in which the lane connections have been reversed in accordance with one embodiment of the invention; and  
         [0018]      FIG. 7A  illustrates the connection of two half-width ports of a bifurcated port to two independent agents each having a half-width port, in which the lane connections have been reversed in accordance with one embodiment of the invention.  
     
    
     DETAILED DESCRIPTION  
       [0019]     In the following description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the understanding of this description.  
         [0020]     Reference throughout the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearance of the phrases “in one embodiment” or “in an embodiment” in various places throughout the specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.  
         [0021]     Moreover, inventive aspects lie in less than all features of a single disclosed embodiment. Thus, the claims following the Detailed Description are hereby expressly incorporated into this Detailed Description, with each claim standing on its own as a separate embodiment of this invention.  
         [0022]     Throughout the specification, the terms node and agent are used generally interchangeably, while it is to be understood that a particular agent may have one or more ports associated therewith.  
         [0000]     Physical Layer Initialization  
         [0023]     A portion of the PLI logic is used to effect link training and calibration. In an alternative embodiment, the logic that effects the training resides on the link layer. The training logic allows the physical layer on each side of the link to be calibrated in order to begin using the link. That is, the internal semiconductor devices are calibrated to be compatible with the I/O link of the PLI. The initial calibration procedure is referred to as initialization of the physical layer. This initialization is effected in a sequence of stages with the initialization of each subsequent stage requiring the training of I/O circuitry in a previous stage.  
         [0024]      FIG. 1  illustrates a state machine for effecting a physical layer initialization in accordance with one embodiment of the invention. State machine  100  shown in  FIG. 1 , represents an initialization sequence starting with Disable/Start operation  105 . The Disable/Start state  105  is entered at power-on or in response to any physical layer reset event. For one embodiment, while disabled, all lanes of the PLI are off and in a low power state.  
         [0025]     Upon starting, the PLI performs a Detect operation  110  to detect an interconnected agent. The Detect operation  110  is the point at which two agents are synchronized to commence link initialization. The Detect operation  110  determines if there is another physical layer agent (i.e., the physical layer of another agent) at the other end of the link. That is, the agent on the other side of the link may be powered down in which case there is no need to initialize the link. The Detect operation  110  may be extended for a specified time period to allow for each interconnected agent to receive power. That is, because when the system is powered up, one component may receive power slightly (e.g., several nanoseconds) earlier than another, therefore the Detect operation may be extended to accommodate such discrepancies. If no agent is detected, initialization need not be effected at that time.  
         [0000]     Detect  
         [0026]      FIG. 2  illustrates the Detect operation in accordance with one embodiment of the invention. As shown in  FIG. 2 , the Detect operation  110  has three sub-states, namely Detect  110 - 1 , Detect  110 - 2 , and Detect  110 - 3 .  
         [0027]     In accordance with one embodiment of the invention, the physical layer can distinguish between detection of an interconnected agent and a test probe (e.g. a 50 ohm test probe). A test probe may be used for debugging operation when the link fails to initialize. Thus one embodiment of the invention provides the capability to distinguish between a test probe and another physical layer agent at this early stage in the initialization process. In Detect  110 - 1 , the port checks for the presence of an active agent or passive test probe at the other end of the link. If, during Detect  110 - 1 , a test probe is detected, then Compliance operation  115  is performed. During Compliance operation  115 , a test pattern is repeatedly transmitted on all lanes that have detected a probe. The test pattern may be used by a test probe to measure signal quality on the link. In accordance with one embodiment of the invention, the Compliance operation is extended indefinitely, the transmitter (Tx) exiting from compliance state only upon link reset. If, at Detect  110 - 1 , the local port detects a remote receiver (Rx) clock, the state is advanced to Detect  110 - 2 .  
         [0028]     In Detect  110 - 2 , the local port activates a forwarded clock and begins locking to the received clock. A forwarded clock is an explicit clock signal transmitted, along with the data on the physical interconnect using dedicated clock pins. If at the end of some specified time, the received clock is not detected, the local port abandons the initialization sequence and resets to operation Disable/Start  105 . For one embodiment of the invention, an initialization retry threshold counter is incremented prior to reset.  
         [0029]     In accordance with one embodiment of the invention, a noise suppression technique is employed in which the actual signal is represented by a differential pair. For example, 40 wires may be used to represent 20 signals, with each signal being determined by the difference of a pair of signals (differential pair). The I/O values driven on the D+/D− halves of the differential pair on each Tx lane is referred to as a known DC pattern.  
         [0030]     In Detect  110 - 3 , if the known DC pattern is not observed for a specified period, the local port abandons the initialization sequence and resets to operation Disable/Start  105 . For one embodiment of the invention, an initialization retry threshold counter is incremented prior to reset. The Detect  110 - 3  is effected to determine polarity inversion discussed in more detail below.  
         [0031]     If the known DC pattern is observed, the physical layer has detected an agent and the training sequence is continued and Polling operation  120  is performed. That is, upon detecting each other, the interconnected agents begin interactive training. During Polling operation  120 , the link is trained to operate with the high-speed clock used to select between the two interconnected agents. The Polling operation is described in greater detail below.  
         [0000]     Polling  
         [0032]      FIG. 3  illustrates the Polling operation in accordance with one embodiment of the invention. As shown in  FIG. 3 , Polling operation  120  includes three sub-states, namely Polling  120 - 1  to effect bit lock, Polling  120 - 2  to effect byte-lock and lane deskew and identify faulty lanes, and Polling  120 - 3  to effect parameter exchange.  
         [0033]     In digital timing, a reference clock is used to read the incoming data on each wire, that is, the clock is common to all wires. Due to the high speeds possible with a point-to-point, link-based interconnection scheme, variations in the length of the physical traces within the IC that connect different lanes of the link and variations on the PCB, could cause the clock to be significantly different with respect to the data communicated on different lanes of the link. Calibration is required to address these variations. Bit locking trains the Rx I/O circuits to reliably receive a/c signals.  
         [0034]     At Polling  120 - 1 , copies of the reference clock are made for each data lane. The clock for each data lane is then moved so that its edge is aligned with the center of the corresponding data lane. For one embodiment, all data Tx that detected a remote data Rx termination drive a clock pattern starting with a 0. Each local data Rx then aligns its strobe position to align with the incoming clock pattern. For one embodiment, the bit-lock sub-state does not generate a handshake, but the local port advances to the next polling sub-state upon expiration of a specified time.  
         [0035]     This fine-tuning addresses delays that are less than one clock cycle but is not effective where the delay is one or more whole clock cycles. At Polling  120 - 2 , a training sequence (an identical known pattern) is transmitted on each of the lanes of a link. Each local Rx uses the header of the training sequence to identify the training sequence boundary. Thus, the training sequence can be used to address full-clock cycle delays. The training sequence of Polling  120 - 2  can also be used to identify faulty lanes. Once at least one local Rx has received two consecutive training sequences, all of the good Rx lanes should have received one. Therefore, at this point, any local Rx lanes that have not seen a training sequence header can be disabled. The training sequence is also used to effect lane-to-lane deskew. For one embodiment of the invention, deskew buffers use the training sequence header to determine the relative skew between lanes. Read pointers of the deskew buffers are then adjusted to offset the determined skew. After lane deskew is accomplished, an acknowledgement is sent on the outbound training sequence.  
         [0036]     At Polling  120 - 3 , the physical layers of the agent on each side of the link exchange parameters using a second training sequence. If the Rx doesn&#39;t receive the training sequence, this indicates a problem. Since the I/O has been calibrated to work with each lane separately, if there is anything broken either in the IC circuitry or the physical interconnect between agents, the receiving port will be aware of this. In the parameter exchange of Polling  120 - 3 , if the link was configured to run in loopback (a test mode for implementing advanced test schemes (e.g., built-in self test), the loopback master and slave are identified. If configured for loopback, both agents enter loopback mode)(Loopback operation  125 ) upon link initialization. One embodiment of the invention includes a control register having a loopback mode bit that may be set by either agent. The port that sets the loopback mode bit becomes the loopback master and the other port becomes the loopback slave. Where both ports set the loopback mode bit, initialization failure results.  
         [0037]      FIG. 4  illustrates the Configuration operation in accordance with one embodiment of the invention. As shown in  FIG. 4 , Configuration operation  130  includes two sub-states, namely Config  130 - 1  to effect the exchange of faulty lane information, and Config  130 - 2  to set the flit boundary.  
         [0038]     As described above, there may be a situation in which some of the lanes of a link are disabled. This may be due to faulty links or as a part of a power saving scheme. At Config  130 - 1 , all of the information regarding faulty lanes that was acquired during polling is used to configure the link into viable quadrants in order to keep the link functioning even if at reduced efficiency. The total lanes of the link (e.g., 20 lanes) are divided into quadrants of 5 lanes each. The physical layer can then be operated using any combination of quadrants. For one embodiment of the invention, the physical layer is operated using any one quadrant, any combination of two quadrants, or all quadrants. Operating a reduced-width link requires a corresponding increase in the number of clock cycles to transmit a flit. For example, in normal operation, an 80-bit flit is transmitted in four clock cycles over a 20-lane link (each phit is 20 bits). For a reduced-width link having five lanes (one quadrant), a proportionally smaller phit (5-bit) is transmitted and a proportionately higher number of clock cycles (16) are required to transmit the flit.  
         [0039]      FIG. 5  illustrates a process by which a reduced-width link is configured in accordance with one embodiment of the invention. Process  500 , shown in  FIG. 5 , begins at operation  505  in which the lanes of a link are divided into quadrants and viable quadrants are determined. For example, a 20-lane link is divided into quadrants of 5 lanes each. If any lane of a quadrant is disabled, that quadrant is not viable and will not used.  
         [0040]     At operation  510 , the Rx determines its ability based upon viable quadrants and creates a prioritized list of quadrant combinations that it can operate with. For example, if only one quadrant is viable, the list contains this quadrant, if two quadrants are viable, the list contains each quadrant individually, as well as the combination of the two. If three quadrants are viable, the list contains each of the three individually, as well as combinations of two of the three. The Rx then transmits this list to the Tx. Moreover, the Rx may require a reduced-width link for other reasons than faulty lanes (e.g., as part of a power saving scheme).  
         [0041]     At operation  515 , the Tx selects a quadrant combination and establishes a reduced-width link. This allows the system to continue to function in a degraded mode as opposed to shutting down or may be used to support a power saving scheme.  
         [0042]     Process  500 , in which a prioritized list of viable quadrant combinations is created allows quick transition to a reduced-width (e.g., half-width or quarter-width) link to effect greater power savings. That is, the system can dynamically modulate link width to conserve power because, while operating in full-width mode, the power-saving configuration is known and the system can transition quickly to a reduced-width link.  
         [0043]     Referring again to  FIG. 4 , if the link width cannot be agreed upon, the initialization sequence is abandoned and reset to operation Disable/Start  105 .  
         [0044]     The training sequence is being sent serially on each of the links and the Tx is aware of the number of training sequences to send. However, the Tx and the Rx are not necessarily in lock-step. That is, because the number of training sequences is not fixed, the Rx cannot know when the last training sequence from the Tx will arrive. This may result in the Rx viewing a portion of the training sequence as a phit of a flit from the link layer or reading a flit from an incorrect phit. To address this situation, once the link width is agreed on, the transmit port sends a third training sequence with a redundant acknowledgement field at operation  130 - 2 . The flit boundary is set by synchronizing this training sequence between local and remote ports. For one embodiment, the redundant acknowledgement field of the training sequence is a three-bit field, in addition to the acknowledgement filed used for transitioning states. In the last training all three bits of the redundant acknowledgement field are set to 1, indicating to the receiver that this is the last training sequence to be transmitted. Without such redundancy initialization failure may occur. For one embodiment, the receiver interprets the last training sequence if two of the three redundant acknowledgement bits are set to 1, thus, tolerating a single bit failure in the transmission of the last training sequence. For alternative embodiments, any desired number of bits may be used for the redundant acknowledgement field with a specified number resulting in interpretation of last training sequence. So, once the port has sent and received this third training sequence, link initialization is complete and the link layer takes control of the port at this point at state L 0   135 . During initialization, special training sequences are used and are transmitted sequentially on each of the lanes. After the active state is reached, a parallel model is used in which flits (decomposed into phits) are transmitted in parallel on all lanes.  
         [0045]     The physical layer electronics are still active, but engaged in decomposing the flits on one side of the link and reconstructing them on the other side of the link. The physical layer is no longer involved in training and operates under the direction of the link layer in state L 0  to transfer data across the link.  
         [0000]     General Matters  
         [0046]     Embodiments of the invention provide a state machine for physical layer initialization of a link-based interconnection scheme. Embodiments of the invention avoid using pre-defined counts to advance states, instead advancing states use an explicit handshake. Thus embodiments of the invention require fewer comparators than typical prior art schemes, as only one state header needs to be searched. Embodiments of the invention initialize the logic functionality of the physical layer and provide the I/O electrical calibration to establish and operate a reliable link. Alternative embodiments of the invention provide initialization for physical layers having varied logic feature sets.  
         [0000]     Low-Power Modes  
         [0047]     For one embodiment of the invention, the physical layer may enter a low-powered mode.  FIG. 6  illustrates a state machine for effecting a physical layer initialization that supports two low-power modes in accordance with one embodiment of the invention. State machine  600 , shown in  FIG. 6 , represents an initialization sequence including a Disable/Start operation  105 , a Detect operation  110 , a Compliance operation  115 , a Polling operation  120 , a Loopback operation  125 , a Configuration operation  130 , and an active state L 0 , as described above in reference to  FIG. 1 . As shown in  FIG. 6 , state machine  600  also includes two low power states LOS  640  and L 1   645 .  
         [0048]     The low power modes are used to save power when the system will be dormant for some time. Each low-power mode has a pre-determined reactivation time (wake-up time). LOS  640  has a relatively short wake-up time (e.g., 20 ns) for relatively short dormancy periods. Therefore in LOS  640 , less of the circuitry is turned off. L 1  has a relatively longer wake-up time (e.g., 10 μs) for relatively longer dormancy periods. The low power mode used is dependent upon the expected dormancy pattern of the system.  
         [0000]     Hot Plug Support  
         [0049]     As described above, in reference to the Detect operation  110  of  FIG. 1 , alternative embodiments of the invention provide a PLI that can distinguish between detection of an interconnected agent and a test probe. For one embodiment, the Detect operation is continued indefinitely until either another agent, or a test probe, is detected. Such continual detection provides hot-plug support while consuming no additional power. For example, if an agent is removed from one side of a link, the remaining agent continuously performs a detect operation until an agent (or test probe) is detected. This allows a faulty component to be removed and replaced without shutting down the entire system. Moreover, the system detects a hot plug immediately in contrast to the prior art scheme of periodically polling the link.  
         [0000]     Polarity Inversion  
         [0050]     Various alternative embodiments of the invention provide for polarity inversion (where the D+/D− halves of the differential pair are swapped on the physical interface) to reduce platform design complexity (e.g., by implementing lane reversal). Polarity inversion is detected by each Rx in the Detect  110 - 3  state described above in reference to  FIG. 2 , and a correction is automatically effected by the Rx upon detection. For one embodiment of the invention, the polarity inversion is detected on an individual lane basis, independent of other lanes. For such an embodiment, the local Rx looks for the known DC pattern or the 1&#39;s complement of the known DC pattern on each of the received differential pairs. All Rx lanes that detect the known DC pattern, or the 1&#39;s complement thereof, are advanced to polling; any others are disabled and will not be available until a subsequent link initialization is effected.  
         [0000]     Lane Reversal  
         [0051]     Ideally, pins providing the physical signals on each of two interconnected agents are connected to the corresponding pin on the other agent. That is, for a pair 20-pin agents, pins  0 - 19  on one agent are connected to pins  0 - 19  on the other agent. Such a connection may lead to excessive board layout congestion or complexity for some topologies. An embodiment of the invention allows pins on one port to be reversed with respect to the pins on the other port. Such lane reversal is defined by the following pin connection equation between two ports, A and B. 
 
Pin  k   component A =&gt;Pin( N   L   −k− 1) component B  
 
         [0052]     Lane reversal is automatically detected and compensated for by the Rx port. No additional steps are required on the board as long as the agents are connected through corresponding pins (straight connection) or through the above-noted pin connection equation for lane reversal.  
         [0053]     For one embodiment of the invention, the lane identifiers for each lane of a straight connection differ in only one bit from the lane identifiers of a reversed lane connection. That is, since the lanes are restricted to one of only two locations their identifiers can be the same except for one bit. In such an embodiment, lane reversal can be detected by comparing the single bit.  
         [0054]      FIG. 7  illustrates the connection of two agents in which the lane connections have been reversed in accordance with one embodiment of the invention. As shown in  FIG. 7 , agent  705  residing on motherboard  710  is connected to agent  715  residing on daughter card  720 . In accordance with one embodiment of the invention, the pins  0  through NL- 1  of agent  705  are connected to pins NL- 1  through  0 , respectively, of agent  715 . The pin reversal is detected during Polling and automatically compensated for with a corresponding reversal within the IC.  
         [0000]     Port Bifurcation  
         [0055]     Embodiments of the invention support port bifurcation, which allows a full width agent to divide itself into two agents, each with half-width links. For example, for some system platforms, the traffic on the I/O is not as much as the traffic between processors. Therefore, for a system with two processors, instead of each processor having its own dedicated I/O component, it is possible for the two processors to share a single I/O component in terms of interconnections. In such case, the two processors communicate with each other using a 20-bit wide interconnect (20 lanes), but the I/O agent allocates 10 of its 20 lanes to communication with one processor and the other 10 lanes to communication with the other processor. For one embodiment of the invention, port bifurcation is effected through pin straps prior to link initialization and the configuration remains static. For one embodiment of the invention, the bifurcated port has two clock lanes (one for each half-width link) at the center of the pin field. For one embodiment of the invention, a port capable of bifurcation is also capable of operating as a single full-width link. For such an embodiment, the extra clock pin may be unconnected or may be hardwired to either Vcc or Vss. Embodiments of the invention support lane reversal on a bifurcated port. Each half of a bifurcated port supports lane reversal independent of the other.  FIG. 7A  illustrates the connection of two half-width ports of a bifurcated port to two independent agents each having a half-width port, in which the lane connections have been reversed in accordance with one embodiment of the invention. As shown in  FIG. 7 , agent  705 A is bifurcated and has two clock lanes, clk 1  and clk 2  at the center of the pin field. The pins comprising one half-width bifurcated port are connected in reverse order to agent  715 A while the pins comprising the other half-width bifurcated port are connected in reverse order to agent  720 A. For an alternative embodiment, a system platform may implement lane reversal on one half-width bifurcated port and straight connection on the other half-width bifurcated port.  
         [0056]     Embodiments of the invention include a state machine with various states and methods with various operations. These are described in their most basic form, but states or operations can be added to or deleted from any of the state machines or methods, respectively, without departing from the basic scope of the invention. The states and operations of the invention may be effected by hardware components or may be embodied in machine-executable instructions as described above. Alternatively, they may be performed by a combination of hardware and software. The invention may be provided as a computer program product that may include a machine-accessible medium having stored thereon instructions, which may be used to program a computer (or other electronic devices) to perform a process according to the invention as described above.  
         [0057]     A machine-accessible medium includes any mechanism that provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, network device, personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.). For example, a machine-accessible medium includes recordable/non-recordable media (e.g., read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), as well as electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.  
         [0058]     While the invention has been described in terms of several embodiments, those skilled in the art will recognize that the invention is not limited to the embodiments described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. The description is thus to be regarded as illustrative instead of limiting.