The present invention relates generally to computer I/O, and more particularly to packet-switched communications between computer system components.
The Peripheral Component Interconnect (“PCI”) is a well established and widely deployed standard that specifies a computer bus for attaching peripheral devices to a computer motherboard. Successor standards such as PCI-X, which stands for Peripheral Component Interconnect Extended, have increased the bandwidth and addressed perceived shortcomings.
PCI Express, officially abbreviated as PCI-E or PCIe, is a serial packet-based protocol that provides higher yet transfer speeds, and addresses additional perceived shortcomings of PCI and PCI-X. In addition, there are a number of other peripheral interface standards (e.g., USB, FireWire, Ethernet) with wide deployment. As computers get smaller, it is sometimes difficult to accommodate the need to provide all the connectors that users have come to expect.
Embodiments of the present invention provide a high-speed converged I/O interface that allows a number of native I/O formats to be encapsulated into PCIe Vendor Defined Messages (“VDMs”) for transfer over a single physical medium, preferably optical, and is thus referred to as the converged I/O (“CIO”) interface.
Embodiments of the present invention can provide synchronization (time value, frequency, and phase) among a network of routers, with signal paths of several meters, thereby providing an accurate time base suitable for exacting audiovisual applications.
A further understanding of the nature and advantages of the present invention may be realized by reference to the remaining portions of the specification and the drawings.
Embodiments of the present invention provide a high-speed optical interface for connecting computers to external I/O devices, including in some instances devices having bandwidth requirement in excess of common external interfaces. In a preferred embodiment, the interface is largely based on the industry-standard PCI Express (“PCIe”) interface, with extensions discussed below to provide additional functionality. The interface allows a number of native I/O formats to be encapsulated into PCIe Vendor Defined Messages (“VDMs”) for transfer over a single physical medium, preferably optical, and is thus referred to as the converged I/O (“CIO”) interface. In a specific implementation, optical links between devices support high-speed serial communications, and the data is in the form of PCIe packets.
Each router has one or more CIO ports 25, each of which can terminate a CIO link. CIO ports 25 are shown as solid black circles. Some of the routers have downstream-facing non-CIO ports 30, which are shown as hollow white circles. These will be discussed below. As a matter of terminology, when a first router's port is connected to a second router's port, that second router's port is sometimes referred to as the first router's linked port, and the first router's port is referred to as the second router's linked port.
Each port has associated port circuitry within the router that allows signals incoming at one port to be communicated to corresponding port circuitry of another port to be output from that other port. Since the internal signaling in the router is electrical, and the preferred CIO communication medium is optical, each CIO port has additional associated interface circuitry that includes an electro-optical element that converts electrical signals from the router to optical signals for output on the optical CIO links, and an opto-electrical element that converts optical signals on the CIO links to electrical signals for use by the router.
The routers are in a tree topology, which includes root router 10R at its root and one or more (the figure shows multiple) downstream routers. For definiteness, root router 10R is shown at the top of the figure, and the downstream routers 10 are shown below the root router. Upstream-facing CIO ports 25 are shown with a suffix “u” and downstream-facing CIO ports 25 are shown with a suffix “d.” Every downstream router has an upstream-facing CIO port. Root router 10R does not have an upstream-facing CIO port, but has an upstream-facing PCIe port 25P (shown as a black circle centered in a white circle) that communicates with host computer 5. This provides the host computer access to the network of routers for configuration as well as memory writes and reads to and from devices connected to the routers.
While every router except the root router has an upstream-facing CIO port, routers need not have any downstream-facing CIO ports.
Every downstream router is directly connected via its upstream-facing port to the downstream-facing port of one and only one upstream router. Every downstream router is connected directly or indirectly (through one or more upstream routers) to the root router. Thus every downstream router has a unique path connecting it to the root router. Within the tree topology, leaf routers, namely routers that are not connected to any downstream routers, have an upstream-facing CIO port and may or may not have downstream-facing CIO ports. Each router that is not a leaf router has at least one downstream-facing CIO port.
Embodiments of the present invention provide for encapsulating (tunneling) native (non-PCIe) I/O formats within PCIe packets. To support this capability, some of the downstream routers are shown as having downstream-facing non-CIO ports 30, which are shown as hollow white circles. The non-CIO ports are for input and/or output of native I/O signals (e.g., USB, FireWire, Ethernet, PCIe, DisplayPort, DVI), as will be discussed in detail below. A number of non-CIO ports 30 are shown as having attached devices 35. The root router is also shown with two upstream-facing non-CIO ports, but they are for transport only and are not used to communicate control information.
The functionality of each router is that it can route signals at any port to any other port (CIO or non-CIO). However, as mentioned above, embodiments of the present invention support multiple stream types being carried over links in the network. Therefore, a transaction makes sense when the data is compatible with the destination to which it is being routed (e.g., while a router could direct USB data to a DisplayPort connection, there is little reason to carry out such a transaction).
For convenience, downstream routers 10 are labeled with a pair of numbers separated by a hyphen. The first number designates the level or distance to root router 10R, and the second number enumerates the routers at that level. In the particular scheme shown, the second number increases from left to right in the figure. Configuration and routing will be described in further detail below, but a preferred implementation uses a PCIe-type addressing scheme (extended to support some additional functionality). Thus elements within the routers are configured to understand which address ranges map to which ports. Consider an example where an I/O controller associated with host computer 5 wishes to establish a connection with a target device, say the lowermost, rightmost device in the figure.
To accomplish this, the host emits a packet that includes the target device's address, and provides that packet to port 25P. When the target device's address in the packet is presented to root router 10R, the middle CIO port of the root router recognizes that address as one that it is authorized to pass, and the packet is output from the middle CIO port of the root router and sent to router 1-2. In a similar manner, when the target device's address in the packet is presented to router 1-2, the packet is output from the middle (CIO) port of the router 1-2 and sent to router 2-3. In a similar manner, when the target device's address in the packet is presented to router 2-3, the packet is output from the left CIO port of router 2-3 and sent to router 3-3. In a similar manner, when the target device's address in the packet is presented to router 3-3, the packet is output from the right non-CIO port of router 3-3 and sent to the addressed device or otherwise used to access the addressed device.
In the above addressing mechanism, the information being sent contains an address, and each router receiving the information with that address determines which port is configured to accept that address. An alternative technique can establish the entire path as soon as the destination is known. Thus for the same example, a path can be established from the middle CIO port of the root router to router 1-2, from the middle (CIO) port of router 1-2 to router 2-3, from the leftmost CIO port of router 2-3 to router 3-3, and then from the rightmost non-CIO port of router 3-3 to the device.
Peer-to-peer communications are the subject of the above-referenced concurrently filed U.S. patent application titled “Bridging Mechanism for Peer-to-Peer Communication.” At this point it suffices to note that PCIe addressing does not support peer-to-peer connections. This functionality is provided by extending the PCIe addressing scheme to specify that a portion of the address identify an alien domain, and that extra logic (hardware and/or software) is used to implement the extension to the addressing scheme. A domain can be referred to in some contexts as a locus or a cloud.
Accordingly, each port except root router 10R's upstream-facing PCIe port 25P has associated circuitry for translating between PCIe and other formats. More particularly, each of non-CIO ports 30 has associated PCIe/native translation circuitry 45 and each of CIO ports 25 has an associated electrical/optical translation unit 50. Thus, incoming native (non-PCIe) signals are translated to PCIe signals for processing inside the router, and outgoing PCIe signals are translated to the native I/O format prior to those signals being output on the non-CIO port. Similarly, incoming optical signals are converted to electrical PCIe signals for processing inside the router, and outgoing PCIe signals are converted to optical signals for output on the CIO port.
The root router as shown in
Router 10 is shown as including two separate assemblies 10A and 10B. This schematically represents a specific embodiment of the present invention where the majority of the electronic components of the router are implemented in an integrated circuit (semiconductor chip) and the elements for converting electrical signals to optical signals and vice versa are implemented as a separate module (10B) that includes four instances of the electrical/optical translation units 50 of
Every path that transfers incoming data from a port to bus 40 includes an adapter, and every path that transfers outgoing data from the bus to a port includes an adapter. In particular, Four PCIe adapters 55 are associated with PCIe port 25P; four CIO adapters 60 are associated with respective ones of the four CIO ports 25, a pair of PCIe adapters 65a and 65b are associated with DP ports 30
In accordance with specific embodiments of the present invention, the CIO adapters include standard PCIe bridges (not separately shown) that are modified to support peer-to-peer communications. One aspect of the modification is to provide an additional set of configuration registers that face downstream (the normal PCIe configuration registers can only be accessed from upstream). The CIO adapters provide the functionality of the PCIe adapters (e.g., PCIe bridges modified to support peer-to-peer communications), and in some embodiments are further modified to support special synchronization communications, to be discussed below, that are carried out between linked CIO ports.
A USB resource such as a host controller 70 is connected between PCIe adapter 65c and USB port 30
Each of these PCIe adapters includes a PCIe bridge facing bus 40, so the back-to-back pairs of bridges provide the functionality of a PCIe switch. Each bridge includes registers storing the address ranges that it can accept, and the adapter includes logic for determining whether the attached port is authorized to accept data based on address information associated with the data. The adapters also can include one or more FIFOs for storing incoming packets. The adapters are bidirectional devices, but a given adapter can provide different functionality depending on whether it is before the bus or after the bus relative to the data flow. Additional details will be discussed below in connection with describing how data incoming at a specific port is handled, and much of the information will be relevant to the other ports. The modifications of otherwise standard PCIe bridges to provide additional functionality can be implemented by additional hardware, software, or a combination.
Each of PCIe adapters 55, CIO adapters 60, PCIe adapters 65a and 65b, PCIe adapter 70 contains ingress circuitry that operates on data entering the router from a port and egress circuitry that operates on data leaving the router. Ingress circuitry examines the data, extracts packet headers, stores packets (including headers and payload, if any) in FIFOs (not shown), and communicates available FIFO space (via credit messages) to the egress circuitry at the port at the other end of its link (referred to as its linked port). Packet header information is placed on the bus and examined by egress circuitry in other adapters on the bus. These adapters are configured with ranges of addresses that they are authorized to accept, and also maintain credit information representing available space in the FIFOs at their linked ports.
An adapter's egress circuitry includes a queue (not shown) for holding outgoing events. When the egress circuitry detects an authorized address, it adds information regarding the event (e.g., port holding the data and size of the message) to the end of its queue. When the event reaches the front of the queue, and the egress circuitry further determines that its linked port's ingress circuitry's FIFOs have sufficient space to accept the packets, the egress circuitry requests use of the bus for transferring the data held in the FIFOs of the ingress port that had posted that address. When use of the bus is granted, the data flows from the port holding the data, onto the bus, and out of the output port.
Consider first, PCIe serial data incoming to PCIe port 25P with address information specifying one of CIO ports 25 or non-CIO port 30
Consider next, DisplayPort data incoming to DP port 30
Consider next, DisplayPort auxiliary channel data incoming to auxiliary DP port 30
Also coupled to bus 40 through respective PCIe 105a and adapters 105b, but not associated with any specific port, are a general DMA unit 110 and an isochronous DMA unit 115. The general DMA controller sets up DMA transfers when commanded to do so, while the isochronous DMA controller only does so at specified times. The router also includes a message processing adapter 120 and a peer management adapter 122. The message processing adapter (sometimes referred to as the message processing unit or “MPU”) supports the generation of VDMs that are used for DP transport, peer-to-peer communications, and time base management as will be discussed below. The peer management adapter (sometimes referred to as the peer manager unit or “PMU”) supports the peer-to-peer functionality that was mentioned briefly above and is the subject of the above-referenced concurrently filed U.S. patent application titled “Bridging Mechanism for Peer-to-Peer Communication.”
One feature of the router is that it can participate in an orchestrated series of exchanges with other routers in the network to maintain a common time reference. This is supported by a transport time base manager or time manager unit (“TMU”) 125. While TMU 125 is shown as a single block coupled to the bus through a PCIe adapter 130, it cooperates with circuitry in CIO adapters 60, which is shown schematically as a line going to the CIO adapters.
The mechanisms for providing a common time reference be described in greater detail below. At this point it suffices to note that the TMU operates to generate and receive synchronization messages (implemented as VDMs) that are sent between linked CIO ports. In a representative embodiment of the present invention, these messages are sent at intervals on the order of 10 μs. One of the routers is designated the TimeMaster and transmits messages containing its clock count that are relayed to all the other routers. Additionally, messages are sent between linked ports to allow each port to lock its frequency and phase to that of the TimeMaster.
Regardless of its format when it entered the router, data transferred across the bus for egress has the logical form of PCIe packets. Incoming PCIe traffic remains PCIe traffic (e.g., standard messages being used for information that originates within a CPU producer/consumer model representing reads and writes to memory space, I/O space, or configuration space). VDMs are used to transport information outside the CPU producer/consumer model. This includes native I/O that is transported across the CIO fabric (such as the DisplayPort example discussed above). It also includes the synchronization messages under control of TMU 125 mentioned above.
Parallel PCIe packet data leaving the egress circuitry of CIO adapters 60 is serialized by respective SerDes circuits 135, which are labeled “Optical SerDes” to signify that they are higher speed devices to support the higher bit rates of data transported on the optical CIO links. The data from each of the optical SerDes circuits 135 is communicated to the electrical-to-optical portion of a respective electrical/optical translation unit 50. The serial data is then carried over the optical link to the next router. Parallel PCIe packet data leaving the egress circuitry of PCIe adapter 65c is converted to USB format by USB controller 70 and output on USB port 30
The above discussion was directed primarily to data entering the upstream-facing ports and being routed to one of the downstream-facing ports. The discussion applies substantially symmetrically to the case of data entering one of the downstream-facing ports. One case worth noting is that of the DisplayPort data that was described above. Once the DP data has traveled to its destination upstream-facing CIO port, it is routed so as to exit a downstream-facing DP port. Thus while the DisplayPort video stream channel is unidirectional, the routers preferably provide bidirectional circuitry (adapters, SerDes circuits, DP encode/decode circuit). This is so that the same design of router can handle the transformation of the VDMs carrying the DP video stream back to a format that the endpoint device (i.e., a display or other consumer of a DisplayPort stream) can accept.
Consider next, this reverse process, which is recreating the DisplayPort stream from the DisplayPort data VDMs that were output by the router as described above. The VDMs presented to bus 40 by one of CIO adapters 60 are communicated to PCIe adapter 65a and the encoding portion of DP decoder/encoder 90, which decode the VDMs and encode the data into the desired DisplayPort stream for output at DP port 30
Syncing has two aspects: the first is “frequency-lock/latency-lock” of a time reference of each router, and the second is a common time count, based on the locked frequency. TMU timing circuits (to be described below) in each router trim each router's TMU time base using information from the TMU packets and their field elements to achieve frequency-lock/latency-lock. The system time count is a system level function, which can be managed by software. This function is supported by hardware registers that are clocked on the TMU's clock elements.
An individual port can be master or slave. Setting the port modes establishes all master slave relationships. As a matter of nomenclature, the term “high order slave” (HSlave) refers to the end (of a link) closer to the RouterComplexMaster, than the “low order slave” (LSlave) end. A slave is an LSlave in communicating toward the RouterComplexMaster and it is an HSlave in communicating away from the RouterComplexMaster, to next lowest order slave. The highest order HSlave is the RouterComplexMaster. Within a device the port toward the RouterComplexMaster is in Slave mode. Similarly ports away from the RouterComplexMaster are in Master mode. This nomenclature is demonstrated in
The local oscillator reference can be, for example, a 25.0 MHz crystal oscillator. The units of time in the TMU are nanoseconds. The 25 MHz is multiplied up so as to provide a binary count with a nanosecond base. A count resolution as fine as 2 ns is preferred. As will be discussed in greater detail below, time base synthesis circuit 160 includes a mechanism such as a phase accumulator to support trimming of the frequency value in a controlled way. If the 25-MHz crystals have a tolerance on the order of ±100 ppm (e.g., ±2.5 KHz), this sets an order of magnitude on the degree of trim to be handled by the time base synthesis circuit. In preferred embodiments, the spectral purity and discrete tones are consistent with that required for audio, and the tuning range supports any margining oversample rates that need to be considered.
The packets that are communicated between adjacent routers include a TMU_header field, a TMU_count_local field, TMU_delta fields, the TMU_count_reflected field, and the packet's CRC field. The use of the fields is the same with respect to the Master or Slave mode of a port. The usage of results within the TMU, however, varies according to the port's mode (Master or Slave). The TMU_count_local field serves as both the packet ID and the time.
The TMU_count register is a 32-bit register with two subfields, a 19-bit TMU_nsec_count field, and a 13-bit TMU_mid_count field. TMU_nsec_count has a resolution of 250 ps, and a MSB roll over of 131.072 μs. This 131.072-μs interval is taken to define the TMU_pulse. TMU_mid_count is a 13-bit binary extension of TMU_nsec_count, with a resolution of 131.072 ns, which rolls over at 2^30 ns (˜1.07 seconds). The TMU_mid_count register effectively counts the previously defined TMU_pulse events. There is a 16-bit binary sub-extension to TMU_count, namely TMU_sub_nsec_cnt, which is defined to have a range of 2^-18 ns to 2^-2 ns.
Two System_time count registers, System_mid_count, and System—32MSB_count, are provided to allow software configuration. The general usage is to define the time uniformly across the router complex. System_mid_count is a 13-bit field with a LSB of 2^17 ns, which is 131.072 μs. System 32MSB_count is a 32-bit binary extension of System_mid_count. Its resolution is 2^30 ns, which is ˜1.07 seconds. Each count of the System_mid_count register is a count of the TMU_pulse.
The TMU_count and System_time fields, and their subfields and extensions, are summarized in the table below, where the least significant bit (LSB) is on the left:
The TMU_sub_nsec_cnt field's 2^-18 ns resolution is defined to be consistent with the network range. The TMU_nsec_count field's 250 ps LSB means that the third least significant bit has a 1-ns resolution, and rolls over 131,072 ns or 131.072 μs. The TMU_mid_count field rolls over 1.073741824 seconds. The System—32MSB_count field's resolution on the order of a second means it rolls over after more than 100 years.
The latency can be computed for a HSLave to LSlave link. The computed latency is used to align the start of the TMU_pulse boundary in each device. Aligning the TMU_pulse is achieved by trimming the Slave device time reference frequency to lock frequency/latency. This process compensates for the nominal latency over the physical electro-optical transport of the CIO links (Tx PHY, optical, Rx PHY, etc.). The objective is to align the edges of the TMU_pulse in the various devices across the router complex. Time base errors larger than 131.072 μs can be addressed at a software level with system time register updates to be discussed. The phase alignment method distinction is designed to fall on a clean binary bit boundary; this design uses the TMU_pulse as the boundary, which is the 2^17 ns figure discussed above. The TMU_count count field depth will support a 2^30-ns interval (˜1 second) to prevent ambiguity of register reads spread over time across the router complex.
The System_time count register fields (i.e., System_mid_count and System—32MSB_count) can be updated in a synchronous manner across the router complex. This is done by copying the contents of the System_cnt_update field into the System_count registers in response to a match between the System_post_count register and the System_time count register fields. System_cnt_update is loaded on a TMU_pulse event. The TMU_count fields are not updated by software; rather, their values are updated by hardware frequency/latency locking.
Fine resolution is maintained in the (TMU_nsec_cnt, TMU_sub_nsec_cnt) counters. As described earlier, the hardware will lock the TMU counters across the router complex aligning the TMU_pulse event. Mid term time accounting is duplicated by the TMU_mid_count (which can be read but not written) and the System_mid_count (which can be read and written). The mid count registers increment on the TMU_pulse event, the long term time (˜>1 second) is accounted by the System—32MSB_count.
Counters are preferably latched on reads so that a sub-64-bit access from any router port can acquire the time coherent with the first part of the read. The read latch is duplicated per router port to facilitate reads from any port concurrently.
A 64-bit read of the System count will return the TMU_nsec_cnt field mapped into the lowest significant bits below System_mid_count. In reading the TMU_count field, a 32-bit read returns TMU_nsec_count concatenated with TMU_mid_count. A 64-bit read returns TMU_sub_nsec_cnt concatenated with TMU_mid_count concatenated with TMU_mid_count. Reads to TMU count registers will be latched per router port to facilitate sub 64-bit accesses.
The time alignment below 131.072 μs is done with hardware adjustments of the slave time base; time alignment above 131.072 μs is a system concept and is managed with software using the system registers described.
It should be understood that the transmitter and receiver also operate on non-TMU related information; for simplicity the paths for this are not shown. Thus while the TMU packets, which are a type of SKIP packet, are inserted at the SKIP packet multiplexer, the multiplexer is not shown explicitly.
In operation, the TMU packet is formed and waits for the SKIP insert multiplexer to direct it into the transmitted stream. The sending of the TMU packet causes transmitter 195 to fire a strobe signal TMU_Tx_header_strobe_port_x, which causes the content of the TMU_count register to be latched into the Tx_tstamp_TMU_count_port_x transmit timestamp latch, thus recording the TMU_count of when the packet was actually transmitted. For example when the TMU packet is latched into the outbound shift register, this fires the strobe recording the TMU time, and this recorded TMU time is sent in the next TMU packet as TMU_count_local. Thus, the TMU_count transmit timestamp for TMU packet n, arrives in TMU packet n+1.
The time measurement point uses the time the signal arrives at the pad of the die as the reference time. A hardware register TMU_Tx_trim_hw is used to store the delta from when the TMU count is recorded and when the outbound packet's first bit arrives at the die pad. This will generally be a fixed value and is recorded in a hardware read only register at mask time. This allows time to be known to a fixed hardware point, while allowing flexible system design. The packet insertion strobe initiation should be after any wait periods (due to data traffic conditions/states). It should be a fixed number of cycles and only analog delays to the pin. Since the PHY clock and the TMU clock are not necessarily phase locked (or even if they are the Tx domain may be spread) there is a time domain crossing error. These cycle drifts between the two non-locked (or spread) domains are designed so that they will average out.
Receiver 175 similarly fires a strobe signal TMU_Rx_header_strobe_port_x upon receipt of a TMU packet, which causes the content of the TMU_count register to be latched into the Rx_tstamp_TMU_count_port_x receive timestamp latch. The Rx PHY arrival time point is referenced to the die pad site. A TMU_Rx_trim_hw register is used to code the delta from when the first bit of the TMU packet encounters the die pad to when the TMU counter is actually strobed. This will generally be a fixed value and is recorded in a hardware read only register at mask time. This allows a flexible device design yet a precise understanding of when the signal was actually received at a known hardware point. This is used for accurate latency calculations.
The LSlave locks its frequency to that of the HSlave as follows. The HSlave sends a first TMU packet at a time t0 and a second TMU packet at a time t1. The two TMU packets have respective transmit timestamps tHSlave_Tx(t1) and tHSlave_Tx(t0), which are in terms of the HSlave's time base. These are communicated in the TMU_count_local fields of the TMU packets (one packet delayed as mentioned above). The LSlave receives these packets, provides them with receive timestamps tLSlave_Rx(t0) and tHSlave_Rx(t1), which are in the LSlave's time base.
From the contents of the TMU packets, the LSlave can determine how many HSlave TMU time base counts occurred between the sending of the two received packets. From the receive timestamps tLSlave_Rx(t0) and tLSlave_Rx(t1), the local TMU count is known and an error signal is made by the difference of the HSlave increment (from t0 to t1) and the LSlave increment (from t0 to t1), which can be used to trim the local TMU time base. This will facilitate frequency locking the LSlave to the HSlave. The frequency will be locked when the difference of the sending timestamps in the HSlave's time units equals the difference of the receiving timestamps in the LSlave's units.
Latency is determined by an HSlave sending a TMU packet with a transmit timestamp tLSlave_Tx to the LSlave and the HSlave returning a packet with a receive timestamp tLSlave_Rx (both timestamps at the LSlave). The outgoing and return packets are matched by use of the TMU_count_reflected field. The LSlave determines the total round trip time by subtracting the transmit timestamp from the receive timestamp. However, this time includes the time spent at the HSlave, which is determined by the HSlave as follows. The HSlave computes the time by subtracting the receive timestamp tHSlave_Rx at the HSlave from the transmit timestamp of the return message tHSlave_Tx. This give a value for the TMU_delta field that is returned to the LSlave (in the packet that is one later than the return packet that provided the total roundtrip time).
The latency, which is defined by the time a packet spends in transit, is given by half of the total roundtrip time less the time spent in the HSlave as follows:
Latency={[tLSlave—Rx−tLSlave—Tx]−[tHSlave—Tx−tHSlave—Rx]}/2
This assumes that the transit times on the upstream and downstream unidirectional paths of the link. The latency information is used to align the phase of the TMU pulse in the LSlave to the TMU pulse in the HSlave. The latency information is adjusted by the trim values (TMU_Tx_trim_hw, TMU_Rx_trim_hw, TMU_Tx_trim_sw, TMU_Rx_trim_sw) to account for signal-to-strobe time skews for each port.
The latency information per sample can be affected by domain crossing phase alignment unknowns. The design uses averaging to eliminate the domain crossing boundary terms to a large degree. The strobes need to progress from the PHY detection points (which are fixed cycle counts from the die pads plus some analog delay to the TMU unit crossing only this one time domain boundary. The statistics of the error incurred by the domain crossing are assumed to integrate out with averaging.
Prior to the HSlave/LSlave pair acquiring lock, the LSlave knows the frequency error, as well as the latency and can then accomplish frequency/latency lock in a controlled way. In particular frequency changes, rate of frequency change, time to align TMU pulse edges across the router complex are bounded for minimal AV impact. The frequency is preferably synthesized to at least an accuracy of 0.1 ppm, at drift rates below the resolution a control loop toggles between the bounding states giving the correct average rate. This synchronizing control/loop parameters and input sample averaging is performed in the frequency/latency signal processing block of the design. This block also adapts to highly variable sample rates from ˜1-μs sample intervals to ˜1-second sample intervals.
The TMU packets in a HSlave/LSlave link pair are initiated by on the TMU_sync event. The HSlave (whose port is in master mode) will respond to the slave mode input and create the packet to be returned to the LSlave on the next TMU_sync event. The value of the TMU_count that triggers a TMU_sync is adjustable and is set by the TMU_sync_cnt register. Factors that effect the value used may vary across the router complex. The TMU_sync interval should be large enough to allow all TMU packets to encounter a SKIP packet opportunity for the TMU Packet to be transmitted to the receiver.
Low bandwidth links that operate in a hiccup mode, will automatically gate the TMU packet flow, as there will be no SKIP packets released. When the link comes up, the TMU packet is released and restarts the process, giving a burst of TMU packets at the TMU_sync event rate while the link is up (burst duration depends on the up time). Timing accuracy can vary to some degree due to effective TMU packet rate. Received TMU packets are examined to see if their TMU_count is within a recent_threshold, and are discarded if they are not. This filters out stale data due to a link that has gone inactive over a stale_threshold time. The filter function is done by the receiver's packet filter block.
TMU packets are unique per HLSlave/LSlave link pairs due to queue depths per port, transport timings, etc. The Latency_trim values are also in general unique per port. Dropped TMU packets lower the update rate in a transient way, but it should not cause the router complex to drop our of sync, providing the dropping was not continuous. Dropped TMU packets are not retried.
The lack of input from a HSlave can be treated two ways under software control: (1) the LSlave could stop its tuning, and remain at the last ratio of its time base to reference ratio as set by the phase accumulator settings, or (2) the LSlave could be trimmed in a controlled way to use its reference as the frequency standard. In either scenario it becomes the Master to all lower order LSlaves.
In accordance with established practice, the North Bridge provides the CPU with interfaces to main memory and a graphics processing unit (“GPU”). In the case of a laptop computer, the GPU can be an internal GPU (i.e., integrated with the system logic chipset, say with the North Bridge chip); otherwise it can be a separate unit that communicates via a suitable signaling protocol such as PCIe Graphics (“PEG). The South Bridge provides various I/O interfaces, shown here as local I/O and PCIe.
The router, which corresponds to the root router discussed above, has a PCIe port that communicates with the South Bridge, a non-CIO port that communicates with the GPU using a suitable signaling protocol such as DisplayPort, and one or more CIO ports (one is shown in the figure). The CIO router can be implemented as an integrated circuit chip on the computer's motherboard, with an electrical/optical translation module to provide optical signaling at the CIO port.
It will be appreciated that a compact port extender can be based on the architecture of dock 240 of
While the above is a complete description of specific embodiments of the invention, the above description should not be taken as limiting the scope of the invention as defined by the claims.
This application claims the benefit of U.S. Patent Application No. 60/997,248 filed Oct. 1, 2007 for “Converged Computer I/O System and Bridging Mechanism for Peer-to-Peer Communication” (inventors Paul A. Baker, Michael W. Murphy, Eric Werner Anderson, Colin Whitby-Strevens, David Ferguson, Keith Diefendorff, and Ron Hochsprung, the entire disclosure of which is herein incorporated by reference in its entirety for all purposes The present application is related to the following commonly-owned U.S. patent application, which is herein incorporated by reference in its entirety for all purposes: U.S. patent application Ser. No. 12/239,743, filed Sep. 27, 2008, for “Bridging Mechanism for Peer-to-Peer Communication”.
Number | Name | Date | Kind |
---|---|---|---|
3581143 | Dornfeld | May 1971 | A |
4628151 | Cardas | Dec 1986 | A |
5228035 | Hirato et al. | Jul 1993 | A |
5313465 | Perlman et al. | May 1994 | A |
5711686 | O'Sullivan et al. | Jan 1998 | A |
6029137 | Cordery et al. | Feb 2000 | A |
6169251 | Grant et al. | Jan 2001 | B1 |
6485335 | Dewdney | Nov 2002 | B1 |
6495763 | Eichmann et al. | Dec 2002 | B1 |
6653813 | Khatri | Nov 2003 | B2 |
6792474 | Hopprich et al. | Sep 2004 | B1 |
6798790 | Enssle et al. | Sep 2004 | B1 |
6998538 | Fetterolf, Sr. et al. | Feb 2006 | B1 |
7033219 | Gordon et al. | Apr 2006 | B2 |
7174413 | Pettey et al. | Feb 2007 | B2 |
7188209 | Pettey et al. | Mar 2007 | B2 |
7197549 | Salama et al. | Mar 2007 | B1 |
7219183 | Pettey et al. | May 2007 | B2 |
7255602 | Driessen et al. | Aug 2007 | B1 |
7366182 | O'Neill | Apr 2008 | B2 |
7369388 | Cheung et al. | May 2008 | B2 |
7422471 | Wu | Sep 2008 | B1 |
7447922 | Asbury et al. | Nov 2008 | B1 |
7466712 | Makishima et al. | Dec 2008 | B2 |
7480303 | Ngai | Jan 2009 | B1 |
7562176 | Kloeppner et al. | Jul 2009 | B2 |
7587575 | Moertl et al. | Sep 2009 | B2 |
7689755 | Balasubramanian et al. | Mar 2010 | B2 |
7743197 | Chavan et al. | Jun 2010 | B2 |
7830882 | Johnson | Nov 2010 | B2 |
7860205 | Aweya et al. | Dec 2010 | B1 |
8312302 | Baker et al. | Nov 2012 | B2 |
8327536 | Kim et al. | Dec 2012 | B2 |
8380912 | Jaramillo | Feb 2013 | B2 |
8463881 | Baker et al. | Jun 2013 | B1 |
20020010799 | Kubota et al. | Jan 2002 | A1 |
20020093935 | Denney et al. | Jul 2002 | A1 |
20030137997 | Keating | Jul 2003 | A1 |
20040080544 | Stripling | Apr 2004 | A1 |
20040115988 | Wu | Jun 2004 | A1 |
20050025119 | Pettey et al. | Feb 2005 | A1 |
20050060470 | Main et al. | Mar 2005 | A1 |
20050060480 | Solomon | Mar 2005 | A1 |
20050111362 | Freytsis et al. | May 2005 | A1 |
20050147119 | Tofano | Jul 2005 | A1 |
20050238035 | Riley | Oct 2005 | A1 |
20050262269 | Pike | Nov 2005 | A1 |
20060023386 | Palinkas et al. | Feb 2006 | A1 |
20060029038 | Jungck | Feb 2006 | A1 |
20060083518 | Lee et al. | Apr 2006 | A1 |
20060092928 | Pike et al. | May 2006 | A1 |
20060168387 | Gan et al. | Jul 2006 | A1 |
20060200600 | Groso | Sep 2006 | A1 |
20060206655 | Chappell et al. | Sep 2006 | A1 |
20060288098 | Singh et al. | Dec 2006 | A1 |
20070011536 | Khanna et al. | Jan 2007 | A1 |
20070074891 | Burke | Apr 2007 | A1 |
20070086487 | Yasuda et al. | Apr 2007 | A1 |
20070208899 | Freking et al. | Sep 2007 | A1 |
20070266179 | Chavan et al. | Nov 2007 | A1 |
20080065738 | Landers et al. | Mar 2008 | A1 |
20080079462 | Chiu et al. | Apr 2008 | A1 |
20080091857 | McDaniel | Apr 2008 | A1 |
20080117909 | Johnson | May 2008 | A1 |
20080123672 | Wilkinson | May 2008 | A1 |
20080147898 | Freimuth et al. | Jun 2008 | A1 |
20080195747 | Elmaliah | Aug 2008 | A1 |
20080222338 | Balasubramanian | Sep 2008 | A1 |
20080250175 | Sheafor | Oct 2008 | A1 |
20080279186 | Winter et al. | Nov 2008 | A1 |
20090003335 | Biran et al. | Jan 2009 | A1 |
20090003361 | Bakthavathsalam | Jan 2009 | A1 |
20090006710 | Daniel et al. | Jan 2009 | A1 |
20090016348 | Norden et al. | Jan 2009 | A1 |
20090022176 | Nguyen | Jan 2009 | A1 |
20090037606 | Diab | Feb 2009 | A1 |
20090063701 | Bagepalli et al. | Mar 2009 | A1 |
20090070775 | Riley | Mar 2009 | A1 |
20090117754 | Fields et al. | May 2009 | A1 |
20090182917 | Kim | Jul 2009 | A1 |
20090222924 | Droz et al. | Sep 2009 | A1 |
20100014598 | Pfeifer | Jan 2010 | A1 |
20100046590 | Harper et al. | Feb 2010 | A1 |
20100085091 | Strazzieri et al. | Apr 2010 | A1 |
20100185792 | Yao et al. | Jul 2010 | A1 |
20110278043 | Ueda et al. | Nov 2011 | A1 |
20120000703 | Kim et al. | Jan 2012 | A1 |
20120000705 | Cornelius et al. | Jan 2012 | A1 |
20120005394 | Goodart et al. | Jan 2012 | A1 |
20120005496 | Baker et al. | Jan 2012 | A1 |
20120103651 | Kim | May 2012 | A1 |
20120104543 | Shahoian | May 2012 | A1 |
20120106018 | Shahohian et al. | May 2012 | A1 |
20120152613 | Kim et al. | Jun 2012 | A1 |
20120215950 | Anderson | Aug 2012 | A1 |
20120233489 | Cornelius et al. | Sep 2012 | A1 |
Number | Date | Country |
---|---|---|
1202419 | May 2002 | EP |
2090955 | Aug 2009 | EP |
H08-265600 | Oct 1996 | JP |
2001-109697 | Apr 2001 | JP |
2003-189263 | Jul 2003 | JP |
2005-521368 | Jul 2005 | JP |
2005-309744 | Nov 2005 | JP |
2006-048594 | Feb 2006 | JP |
2007-251779 | Sep 2007 | JP |
2008-252310 | Oct 2008 | JP |
2009-123561 | Jun 2009 | JP |
2006102606 | Sep 2006 | WO |
2006102606 | Sep 2006 | WO |
WO 2007099507 | Sep 2007 | WO |
2009039287 | Mar 2009 | WO |
2009039287 | Mar 2009 | WO |
2009046617 | Apr 2009 | WO |
2009086566 | Jul 2009 | WO |
2010051281 | May 2010 | WO |
2010051281 | May 2010 | WO |
2012003347 | Jan 2012 | WO |
2012003381 | Jan 2012 | WO |
2012003385 | Jan 2012 | WO |
Entry |
---|
PCI Express TM Base Specification Revision 1.0a Apr. 15, 2003. |
Display Port, Wikipedia, the free encyclopedia, 4 pages; printed on Aug. 29, 2008 from http://en.wikipedia.org/wiki/Displayport; page states it was last modified on Aug. 25, 2008. |
Dopplinger, A., et al. “Using IEEE 1588 for synchronization of network-connected devices”, Mar. 29, 2007, from www.embedded.com/columns/technicalinsights/, 7 pages. |
Ethernet, Wikipedia, the free encyclopedia, 9 pages; printed on Aug. 17, 2008, from http://en.wikipedia.org/wiki/Ethernet; page states it was last modified on Aug. 17, 2008. |
IDT 24-Lane 3-Port PCI Express, 89HPES24N3 Data Sheet, Jul. 18, 2006, 30 pages. |
IEEE 1394 interface, Wikipedia, the free encyclopedia, 7 pages; printed on Jul. 24, 2008 from http://en.wikipedia.org/wiki/Firewire; page states it was last modified on Jul. 23, 2008. |
PCI Express, Wikipedia, the free encyclopedia, 11 pages; printed on Jul. 24, 2008 from http://en.wikipedia.org/wiki/PCI-Express; page states it was last modified on Jul. 16, 2008. |
PCI Express Architecture, Chapter 3, Address Spaces & Transaction Routing, from PCIEX.book, pp. 105-152, Aug. 5, 2003. |
PCI Express Base Specification Revision 1.0a, Apr. 15, 2003, pp. 1-426. |
PCI-X, Wikipedia, the free encyclopedia, 4 pages; printed on Sep. 9, 2008 from http://en.wikipedia.org/wiki/PCI-X; page states it was last modified on Sep. 4, 2008. |
Peer-to-peer, Wikipedia, the free encyclopedia, 11 pages; printed on Jul. 24, 2008 from http://en.wikipedia.org/wiki/Peer-to-peer; page states it was last modified on Jul. 24, 2008. |
Peripheral Component Interconnect, Wikipedia, the free encyclopedia, 7 pages; printed on Jul. 24, 2008, from http://en.wikipedia.org/wiki/PCI—%28bus%29; page states it was last modified on Jul. 23, 2008. |
Universal Serial Bus, Wikipedia, the free encyclopedia, 17 pages; printed on Jul. 24, 2008 from http://en.wikipedia.org/wiki/USB; page states it was last modified on Jul. 23, 2008. |
VESA DisplayPort Standard, Version 1, Revision la, Jan. 11, 2008, 238 pages. |
U.S. Appl. No. 12/239,743, filed Sep. 27, 2008, Baker et al. |
International Preliminary Report on Patentability for PCT Application No. PCT/US2011/042689, mailed on Jan. 17, 2013, 7 pages. |
Notice of Allowance for U.S. Appl. No. 12/239,743, mailed Feb. 19, 2013, 48 pages. |
Final Office Action for U.S. Appl. No. 13/403,182, mailed Jun. 11, 2014, 13 pages. |
Non-Final Office Action for U.S. Appl. No. 13/403,182, mailed Dec. 20, 2013, 14 pages. |
Office Action for Japanese Patent Application No. 2012-543350, mailed on Dec. 28, 2012, in 4 pages. |
Notice of Allowance mailed on Oct. 17, 2014, for U.S. Appl. No. 13/403,182, 7 pages. |
International Search Report and Written Opinion for Application No. PCT/US2011/042634 mailed on Nov. 30, 2011, 20 pages. |
International Search Report and Written Opinion for Application No. PCT/US2011/042684 mailed on Jan. 31, 2012, 18 pages. |
International Search Report and Written Opinion for Application No. PCT/US2011/042689 mailed on Sep. 28, 2011, 23 pages. |
Number | Date | Country | |
---|---|---|---|
60997248 | Oct 2007 | US |