# Patent

## Title
Dynamically modulating link width

## Abstract

Systems and methods of managing a link provide for receiving a remote width capability during a link initialization, the remote width capability corresponding to a remote port. A link between a local port and the remote port is operated at a plurality of link widths in accordance with the remote width capability.

## Background
This application is a continuation of U.S. patent application Ser. No. 10/850,851, filed May 21, 2004, now U.S. Pat. No. 8,046,488 the content of which is hereby incorporated by reference.
The present application is related to the U.S. patent application Ser. No. 10/850,733, filed May 21, 2004 entitled “Link Power Saving State” by N. Cherukuri, et al., and the U.S. patent application Ser. No. 10/851,925, filed May 21, 2004 entitled “A Method for Identifying Bad Lanes and Exchanging Width Capabilities of Two Agents Connected Across a Link” by N. Cherukuri, et al.


BACKGROUND
1. Technical Field
Embodiments of the present invention generally relate to link management. More particularly, embodiments relate to dynamic modulation of link widths.
2. Discussion
Modern day computer systems are made up of many components that communicate with one another for various reasons. For example, in multi-processor systems, one processor may access the memory of another processor in order to retrieve data that is required locally, and vice versa. In another example, a processor may communicate with a chipset in order to exchange data with an input/output (I/O) device coupled to an I/O hub of the chipset.
The links that interconnect computer components provide a mechanism for transferring data and each point-to-point link is typically made up of a plurality of “lanes”, where each lane can transfer a bit of data in a given cycle. The number of lanes to be used during communication defines the link width, which effectively controls the bandwidth of the link. Simply put, wider links provide a larger bandwidth than narrower links. On the other hand, wider links tend to consume more power because of the additional circuitry necessary to support the additional lanes. The link width is typically negotiated during a lengthy initialization process and is relatively static once set under conventional approaches. While these approaches have been suitable under certain circumstances, there still remains considerable room for improvement.
In particular, it has been determined that the operating conditions of components often vary over time and that bandwidth requirements can vary in kind. For example, a processor may transition from running a thread that requires a relatively large amount of bandwidth for a link to running a thread that requires a relatively small amount of bandwidth for the link. The link width, however, typically does not change under conventional techniques because the initialization process is so complex and time consuming. As a result, the link may be wider than necessary.



BRIEF DESCRIPTION OF THE DRAWINGS
The various advantages of the embodiments of the present invention will become apparent to one skilled in the art by reading the following specification and appended claims, and by referencing the following drawings, in which:
FIG. 1 is a block diagram of an example of a link having a dynamically modulated width according to one embodiment of the invention;
FIG. 2 is a flowchart of an example of a method of managing a link according to one embodiment of the invention;
FIG. 3 is a flowchart of an example of a process of operating a link at a plurality of link widths according to one embodiment of the invention;
FIG. 4 is a messaging diagram of an example of a link width modulation according to one embodiment of the invention;
FIG. 5 is a flowchart of an example of a process of transmitting data at a modified link width according to one embodiment of the invention;
FIG. 6 is a flowchart of an example of a process of managing link transmission errors according to one embodiment of the invention; and
FIG. 7 is a block diagram of an example of a point-to-point network interconnect according to one embodiment of the invention.



DETAILED DESCRIPTION
FIG. 1 shows a computer system 10 having a first component 12a and a second component 12b. The computer system 10 may be part of a desktop personal computer (PC), notebook PC, server, and so on, and typically includes many more components than the two shown. The illustrated example has therefore been simplified for the purposes of discussion, and the techniques described herein can be readily scaled to a large number of components. The components 12 (12a-12b) may include microprocessors, chipset input/output (I/O) hubs, graphics controllers, memory controllers, etc., or any combination thereof. The first component 12a has a port 16 coupled to a first end of a point-to-point link 14 and the second component 12b has a port 18 coupled to a second end of the link 14.
The link 14 may be a bidirectional link that carries data from the first component 12a to the second component 12b and from the second component 12b to the first component. The bidirectional link could be a simultaneous bidirectional (SBD) link in which data can flow in both directions of a single physical lane concurrently, or a shared bidirectional link in which data flows in one direction only, at any given time. Alternatively, the link 14 may be a unidirectional link that only carries data in one direction. In such a case, two links such as link 14 could be used to provide full two-way communication between the ports 16, 18. Simply put, while a number of the examples will be discussed with regard to one type of link, other types of links can be used without parting from the spirit and scope of the embodiments described herein. Notwithstanding, there are a number of aspects of unidirectional links for which the embodiments are well suited.
In the illustrated example, the port 16 has control logic 20 capable of modulating the width “w” of the link 14 based on various operating conditions. For example, when bandwidth requirements for data to be transferred over the link 14 are relatively low, the control logic 20 can reduce the width of the link 14 in order to conserve power. Likewise, if bandwidth requirements increase, the width of the link 14 can be increased to meet the requirements. Link width modulation can therefore take place “on the fly” without the need for additional link initializations or negotiations between the ports 16, 18. By enabling the port 16 to dynamically modulate link width, the system 10 can capitalize on power savings windows of opportunity that may be missed under conventional approaches. Simply put, by eliminating the need for link re-initialization, a real-time link modulation scheme can be achieved, which reduces the time required to modulate widths and provides substantial power savings. It should be noted that although the illustrated example shows only the port 16 of the first component 12a as having link modulation control logic, the port 18 of the second component 12b may also include control logic to modulate link width. Indeed, in a multi-node system having many interconnected components, each of the components can be equipped with the ability to dynamically modulate link width in order to provide full-scale power savings.
As already discussed, the link 14 can be bidirectional or unidirectional. In the case of a pair of unidirectional links, each unidirectional link could potentially operate at a different width, where the transmitting port selects the optimum link width based on local operating conditions. In the case of a bidirectional link, each direction of the link could operate at a different width. Such an approach provides the maximum amount of freedom in power reduction and represents a significant improvement over conventional techniques.
The link 14 can be partitioned into “quadrants” for the purposes of link width modulation. For example, if the link 14 is twenty bits wide, bits zero through four could be defined as quadrant one, bits five through nine could be defined as quadrant two, and so on. Thus, modulating to a narrower link width might involve deactivating the input/output (I/O) circuitry associated with one or more of the quadrants. Similarly, modulating to a wider link width might involve activating the I/O circuitry of one or more of the quadrants. The I/O circuitry is the physical portion of the port responsible for transmitting and/or receiving signals to/from the link. Other schemes could be used based on the desired tradeoff between granularity and complexity. For example, if complexity is not a significant issue, the link width could be modulated on a lane-by-lane basis without parting from the spirit and scope of the principles described herein.
As alluded to above, the link 14 can represent a portion of a point-to-point fabric, which interconnects all of the components in the computer system 10. An example of such a topology is shown in FIG. 7. In the illustrated embodiment, a computer system 10′ includes a point-to-point network interconnect 24 that is coupled to components 12′ (12a-12d). In the point-to-point fabric topology, each component has a direct link to other nodes in the system. The network interconnect 24 can also have a layered communication protocol in which link width modulation messages are constructed from “flits” at a link layer and transferred between components in packets at a protocol layer. A flit is essentially a unit of flow control at the link layer, where a flit includes multiple physical layer “phits” and multiple flits make up a protocol layer “packet”. Other layers such as transport and routing layers can also be included in the hierarchy. Table I summarizes one approach to implementing the layered communication protocol.








TABLE I





Layer
Description







Protocol
Higher level communication protocol between ports



such as power management, cache coherence, ordering,



peer to peer I/O, interrupt delivery, etc. (packets)


Transport
End-to-end reliable transmission between two ports


Routing
Flexible and distributed way to route packets from a



source to a destination


Link
Reliable data transfer and flow control between two



directly connected ports & virtualization of the



physical channel (flits)


Physical
Electrical transfer of information between two directly



connected ports (phits)









The transport and routing layers may be needed for certain platform options only. In desktop/mobile and dual processor systems, for example, the functionality of the routing layer can be embedded in the link layer. Simply put, layers may be added or removed from the protocol without parting from the spirit and scope of the illustrated embodiments.
Turning now to FIG. 2, a method 26 of managing a link is shown. The method 26 can be implemented in control logic of a port such as the control logic 20 (FIG. 1) discussed above, using any known hardware and/or software technique. Processing block 28 provides for receiving a remote width capability at a local port during a link initialization, where the remote width capability corresponds to a remote port. The link initialization process can involve a handshaking procedure in which the ports exchange training data to determine which lanes in the link are usable. In one example, the remote width capability includes supported link widths and corresponding lane identifiers. Thus, the remote width capability might identify various widths such as “full width”, “half width” and “quarter width”, as well as the quadrants to be used at these widths. The remote width capability can be communicated as part of a specialized training sequence.
The local port can compare the remote width capability to an internally generated or otherwise known local width capability and select a common link map (CLM) that both ports can support. Block 30 provides for operating a link between the local port and the remote port at a plurality of link widths in accordance with the remote width capability.
FIG. 3 shows one approach to operating a link at a plurality of link widths in greater detail at block 30′. In the illustrated example, a first link width is established at block 32 based on the remote width capability and the local width capability. Block 34 provides for determining whether a power saving opportunity is present or an increased bandwidth requirement exists. An increased bandwidth requirement might be associated with a relatively complex process such as streaming video, whereas a power saving opportunity may result from little or no anticipated activity on a link. If bandwidth needs to be increased, a wider link width is selected at block 36 based on the remote width capability.
Block 37 provides for notifying the remote port of the wider link width. The local port can then wait a predetermined amount of time (e.g., TWAKE-UP), which ensures that the link layer of the remote port has had sufficient time to understand the notice and inform the physical layer of the remote port. Alternatively, a low power exit sequence that is self-contained at the physical layer can be used to power-up inactive lanes at both sides of the link. In such an approach, the power exit sequence can make use of a predetermined wake-up time (e.g., TL0S—WAKE), which is common to both ports and is programmed into the power management registers. Thus, expiration of the predetermined wake-up time provides notification for both sides of the link to become active.
The input/output (I/O) circuitry of the local port corresponding to the additional width is brought out of a low power state at block 38 and the link is modulated to the wider link width at block 40. It should be noted that bringing the I/O circuitry out of the low power state may take a considerable amount of time. In particular, the deeper the low power state, the longer it will take to exit the state (although the power savings will be greater). To minimize the effects of this latency, the low power state is exited at block 38 before modulating to the wider link width at block 40. Such an approach enables the link to be operated at the previous link width while the circuitry is powered-up in the background and significantly improves the link width modulation time. Furthermore, since the power-up process is performed in the background, the low power state can be designed to be deeper than normal, providing even greater power savings.
If a power saving opportunity is present, block 42 provides for selecting a narrower link width based on the remote width capability. The link is modulated to the narrower link width at block 44. The modulation at block 44 provides constructive notification of the narrower link width to the remote port. The portion of the local port corresponding to the surplus width is placed in the low power state at block 46. It should be noted that entering the low power state at block 46 can be conducted after modulating to the narrower link width at block 44 in order to avoid any latencies associated with the link circuitry deactivation process. Thus, the link is operated at the new link width as soon as possible, while the circuitry is powered-down in the background. Such an approach further improves the link width modulation time and facilitates the use of deeper low power states. Block 48 provides for transmitting data to the remote port at the second link width.
Turning now to FIG. 4, a messaging diagram 50 is shown in which a local port (Port A) modulates a link to a new link width. In the illustrated example, the local port notifies the remote port (Port B) of the pending transition by sending a “PM.LinkWidthConfig” packet to the remote port. The time parameter “tLWM—PKT[UI]” corresponds to the length of the notification packet and does not impact the link width modulation sequence. Once the notification packet is sent, the link layer of the local port sends idle flits “Idle #1−n” until the time period TLWM—ENTER—NOP[UI] has elapsed. This time period corresponds to the amount of time required for the remote port's link layer to relay the new link width to the physical layer of the remote port. The value can be stored in a power management register of the local port, where power management register values can be static or dynamic.
Static values can be hardcoded and do not change after power-on, where dynamic values can be updated for more aggressive timing. In the case of dynamic power management register timing values, a given link modulation sequence may use the most recently programmed values. For example, the basic input/output system (BIOS) can take into consideration the actual platform topology and program optimal values into the register. Examples of platform variables that could result in optimization are flight time across the link, internal delay between the link layer and the physical layer, etc.
After sending the required number of idle flits, the link layer of the local port signals the physical layer of the local port to adjust its multiplexers to support the new link width. The local physical layer drives a high/low signal (e.g., I/O) on all active transmit differential pairs (e.g., D+/D−) for the time period TLWM—MUX—SWITCH, adjusted to the next flit boundary, using the new link width. It should be noted that the value 1/0 is used merely for the purposes of discussion and that alternative values can also be used. Indeed, due to the short duration of the period in question, the D+/D− transmission can be eliminated all together. This time period, which can also be stored to and read from the local power management register, corresponds to the amount of time required for the physical layer of either the remote port or the local port (whichever is greater) to complete multiplexer switching in support of the new link width. When the TLWM—MUX—SWITCH time period has elapsed, the local port is ready to send flow control flits. Thus, as both ports modulate link widths, the timing on both sides of the link can be controlled to a high level of precision and any modulation errors can be avoided.
FIG. 5 shows one approach to transmitting data to a remote port in greater detail at block 48′. In the illustrated example, it is determined whether one or more transaction queues associated with an active part of the link are empty at block 52. In this regard, each port may have a physical layer transaction queue that stores data to be placed onto the link, where an empty transaction queue can signify an activated link that is not currently being used. The illustrated technique provides for additional power savings in such a case. In particular, if an empty transaction queue is detected, the active link portion of the local port is placed in an intermediate power state at block 54, where the intermediate power state has a relatively short reactivation latency/wake-up time in comparison to the unused portions of the link that are placed in the low power state. In one embodiment, the active link portion of the local port has a configurable wake-up time such that various elements of the I/O circuitry can be selectively powered down in order to meet the required minimum latency. In such a case, a longer allowable wake-up time enables a larger portion of the I/O circuitry to be turned off, resulting in higher power savings.
Thus, the portion of the link in the intermediate power state can be configured to wake-up faster than the portion of the link the low power state. Consider, for example, a link operating at full width where the local port decides to modulate the link width down to half width. The modulation can be implemented by placing half of the lanes in a low power state. If the local port then determines that one fourth of the active portion of the link is not currently being used, the link can be effectively modulated down to quarter width where one fourth of the lanes are placed in the intermediate power state. The modulation from quarter width to half width can therefore take place more quickly than the modulation from half width to full width.
Block 56 provides for transmitting data from the remaining active portions of the local port and block 58 provides for detecting data in the transaction queue. If the queue is no longer empty, the link circuitry in question is brought out of the intermediate power state at block 60. As already noted, block 60 may be completed more quickly than block 38 (FIG. 3) discussed above. Block 62 provides for transmitting data on all active lanes as normal.
Turning now to FIG. 6, a method 64 of detecting errors is shown. In particular, the method 64 can be incorporated into the method 26 (FIG. 2) discussed above as needed to eliminate any negative impact that may be associated with a “negotiation-less” link modulation process. In particular, block 66 provides for receiving a retry request from a remote port, where the retry request indicates that a link width notification message contained errors and indicates a current link width of the remote port. The current link width of the remote port is selected for the local port at block 68 and the notification is repeated at block 70.
The above techniques therefore enable the pursuit of aggressive power saving options in areas such as mobile computing, where power conservation is crucial. For example, implementing the dynamic link width modulation in notebook computers provides improvements that include, but are not limited to, extended battery life, smaller form factors and reduced operating costs.
Those skilled in the art can appreciate from the foregoing description that the broad techniques of the embodiments of the present invention can be implemented in a variety of forms. Therefore, while the embodiments of this invention have been described in connection with particular examples thereof, the true scope of the embodiments of the invention should not be so limited since other modifications will become apparent to the skilled practitioner upon a study of the drawings, specification, and following claims.

## Claims

1. A method comprising:
receiving from a remote port a remote width capability during a link initialization, the remote width capability corresponding to the remote port and including a plurality of supported link widths;
comparing the remote width capability to a local width capability of a local port;
selecting a common link map that the remote port and the local port can support;
operating a link between the local port and the remote port at a plurality of link widths in accordance with the remote width capability without an additional link initialization or negotiation between the local port and the remote port, including establishing a first link width for the link based on the remote width capability and the local width capability, and selecting a second link width to be narrower than the first link width based on the remote width capability and an operating condition of the local sort including a power saving condition, and modulating the link to the second link width and placing a portion of the local port in a low power state after modulating the link to the second link width; and
transmitting data to the remote port at the second link width after the modulation of the link to the second link width if a predetermined amount of time has elapsed after the remote port has been notified of the second link width, the predetermined amount of time including a first period and a second period, the first period corresponding to an amount of time for a link layer of the remote port to relay the second link width to a physical layer of the remote port, the second period corresponding to an amount of time for the physical layer of the remote port to complete multiplexer switching in support of the second link width.

2. The method of claim 1, further comprising if an increased bandwidth requirement exists, selecting the second link width to be wider than the first link width, and bringing a portion of the local port out of the low power state and modulating the link to the second link width.

3. The method of claim 1, further including placing an active portion of the local port in an intermediate power state responsive to a determination of an empty transaction queue of the active portion, the intermediate power state having a smaller reactivation latency time than the low power state.

4. The method of claim 1, further comprising sending idle messages to the remote port after notifying the remote port of the second link width until an end of the first period, and driving a predetermined signal on the link of the second link width until an end of the second period.

5. The method of claim 1, further including:
receiving a retry request from the remote port, the retry request indicating that a message associated with the modulating contained errors, the retry request including a current link width of the remote port;
selecting the current link width of the remote port for the local port; and
repeating the modulating the link to the second link width.

6. The method of claim 1, further including:
detecting an empty transaction queue associated with an active portion of the local port; and
placing the active portion in an intermediate power state, the intermediate power state having a relatively short reactivation latency.

7. The method of claim 1, wherein each of the plurality of link widths is a different bit width.

8. An apparatus comprising:
a hardware local port having control logic to receive from a remote port a remote width capability during a link initialization, the remote width capability to correspond to the remote port and including a plurality of supported link widths, compare the remote width capability to a local width capability of the local port, select a common link map that the remote port and the local port can support, and operate a link between the local port and the remote port at a plurality of link widths in accordance with the remote width capability without an additional link initialization or negotiation between the local port and the remote port, wherein the control logic is to establish a first link width for the link based on the remote width capability and the local width capability, select a second link width based on the remote width capability and an operating condition of the local port and modulate the link to the second link width to be narrower than the first link width when the operating condition is a power saving condition, to place a portion of the local port in a low power state after modulating the link to the second link width, and to transmit data to the remote port at the second link width after the modulation of the link to the second link width if a predetermined amount of time has elapsed after the remote port has been notified of the second link width, the predetermined amount of time including a first period corresponding to an amount of time for a link layer of the remote port to relay the second link width to a physical layer of the remote port and a second period corresponding to an amount of time for the physical layer of the remote port to complete multiplexer switching in support of the second link width.

9. The apparatus of claim 8, wherein the control logic is to bring a portion of the local port out of the low power state before modulating the link to the second link width wider than the first link width when the operating condition is an increased bandwidth condition.

10. The apparatus of claim 8, wherein each of the plurality of link widths is a different bit width.

11. A system comprising:
a remote port;
a link coupled to the remote port, the link unidirectional; and
a local port coupled to the link, the local port including control logic to receive from the remote port training data of a training sequence including a remote width capability during a link initialization, the remote width capability to correspond to the remote port and including a plurality of supported link widths, compare the remote width capability to a local width capability of the local port, and select a common link map that the remote port and the local port can support and operate the link at a plurality of link widths based on the common link map without an additional link initialization or negotiation between the local port and the remote port, wherein the control logic is to establish a first link width for the link and select a second link width responsive to an operating condition change of the local port, modulate the link to the second link width, thereafter detect an empty transaction queue of the local port associated with an active part of the link, and based on the determination of the empty transaction queue, place an active link portion of the local port in an intermediate power state, wherein a reactivation latency time of the intermediate power state is smaller than a reactivation latency time of a low power state, wherein the control logic is further to transmit data to the remote port at the second link width after the modulation of the link to the second link width if a predetermined amount of time has elapsed after the remote port has been notified of the second link width, the predetermined amount of time including a first period corresponding to an amount of time for a link layer of the remote port to relay the second link width to a physical layer of the remote port and a second period corresponding to an amount of time for the physical layer of the remote port to complete multiplexer switching in support of the second link width.

12. The system of claim 11, wherein the second link width is to be narrower than the first link width, the operating condition including a power saving condition, the control logic to place a portion of the local port in the low power state after modulating the link to the second link width.

13. The system of claim 11, wherein the link is part of a point-to-point network interconnect having a layered communication protocol.