Plaque It!
|
[0001] 1. Field of the Invention
[0002] The present invention relates to computer interfaces, in particular, to interfaces for interfacing a compute node to a mesh network and to a method of exchanging data.
[0003] 2. State of the Art
[0004] Massively parallel processing (MPP) systems are becoming increasingly widespread. In an MPP system, a large number of “compute nodes” are placed in communications with one another through a “mesh fabric,” i.e., a collection of interconnections that typically allows any compute node to communicate with any other compute node. MPP systems have been used to solve computational problems once thought to be uncomputable even using supercomputers. MPP systems are also being applied successfully in the area of high-availability computing.
[0005] A prime consideration in relation to MPP systems is the scalability of the system: over what range of computational power can the system be configured to operate successfully. A system that successfully exploits the compute power of 64 compute nodes may prove incapable of successfully exploiting the compute power of 6400 compute nodes. In considering scalability, attention is most often focused on the high end. Often equally important, however, is the low end: what base investment is required to join an MPP performance curve that may span orders of magnitude of compute power.
[0006] Low- and moderate-cost computer architectures have increasingly embraced the PCI bus as an expansion bus standard. The PCI bus dramatically increases data throughput as compared to previous generation expansion buses. As compared to a high-speed system bus, however, the PCI bus (and expansion buses in general) remains comparatively slow. Furthermore, a coherency protocol of the PCI bus is not widely implemented. There remains a need for a bus interface, or bus bridge, that allows for high-speed, coherent data transfer between an expansion bus such as the PCI bus and a system bus. A further need exists for a bus bridge that allows for high-speed, coherent data transfer between an interconnection mesh and a system bus. The present invention addresses this need.
[0007] It is accordingly an object of the invention to provide a compute node to mesh interface for highly scalable parallel processing system and a method of exchanging data that overcome the hereinafore-mentioned disadvantages of the heretofore-known devices and methods of this general type and that, generally speaking, provides an interface circuit for interfacing one or more compute nodes to a mesh and that is capable of serving a wide range of MPP systems.
[0008] With the foregoing and other objects in view, there is provided, in accordance with the invention, a method of exchanging data between a first agent on an expansion bus and a second agent on a system bus, including the steps of providing a bus bridge bridging the expansion bus and the system bus to maintain coherency with data cached by at least one other agent on the system bus, the bus bridge queuing transaction requests within the bus bridge, snooping transactions on the system bus and maintaining a record of pending transaction addresses, and stalling issuance of a queued transaction having a same cache line address as a pending transaction until the pending transaction has been completed.
[0009] With the objects of the invention in view, there is also provided a method of exchanging data, including the steps of providing a first agent on an expansion bus, proving a second agent on a system bus, exchanging data between the first agent and the second agent bus through a bus bridge bridging the expansion bus and the system bus to maintain coherency with data cached by at least one other agent on the system bus, the bus bridge queuing transaction requests therewithin, snooping transactions on the system bus and maintaining a record of pending transaction addresses, and stalling issuance of a queued transaction having a same cache line address as a pending transaction until the pending transaction has been completed.
[0010] In accordance with another mode of the invention, there is provided the step of issuing a coherent read shared request on the system bus for a read transaction to an agent on the expansion bus.
[0011] In accordance with a further mode of the invention, the expansion bus, the system bus, and an interconnection mesh are bridged with the bus bridge, and there is provided the step of issuing a coherent read shared request on the system bus for a transmit transaction to the interconnection mesh.
[0012] In accordance with an added mode of the invention, the bus bridge has a plurality of write gather buffers, for write transactions from an agent on the expansion bus, there are provided the steps of gathering in the write gather buffers data from multiple write transactions pertaining to a cache line, and if the entire cache line is gathered, issuing an invalidate transaction on the system bus followed by a block write of the cache line.
[0013] In accordance with an additional mode of the invention, if less than the entire cache line is gathered, there are provided the steps of issuing on the system bus a read modify write transaction for the cache line, merging gather data for the cache line with read data for the cache line, and writing the entire cache line back to memory.
[0014] In accordance with yet another mode of the invention, during the read modify write transaction, there are provided the steps of detecting a further request for the cache line, issuing an intervention data response in response to the further request pertaining to the cache line, and if the entire cache line is gathered, issuing an invalidate transaction on the system bus followed by a block write of the cache line.
[0015] In accordance with yet a further mode of the invention, there are provided the steps of bridging the expansion bus, the system bus, and an interconnection mesh with the bus bridge, providing the bus bridge with a plurality of write gather buffers, for write transactions from the interconnection mesh, gathering in the write gather buffers data from multiple write transactions pertaining to a cache line, and, if the entire cache line is gathered, issuing an invalidate transaction on the system bus, followed by a block write of the cache line.
[0016] In accordance with yet an added mode of the invention, if less than the entire cache line is gathered, there are provided the steps of issuing on the system bus a read modify write transaction for the cache line, merging gather data for the cache line with read-data for the cache line, and writing the entire cache line back to memory.
[0017] In accordance with yet an additional mode of the invention, during the read modify write transaction, there are provided the steps of detecting a further request for the cache line and issuing an intervention data response in response to the further request.
[0018] In accordance with one embodiment of the invention, the interface circuit implements a method of exchanging data between a first agent on an expansion bus and a second agent on a system bus through a bus bridge so as to maintain cache coherency with data cached by one or more agents on the system bus. The method is performed by queuing transaction requests within the bus bridge, snooping transactions on the system bus, maintaining a record of pending transaction addresses, and stalling issuance of a queued transaction having a same cache line address as a pending transaction until the pending transaction has been completed.
[0019] With the objects of the invention in view, there is also provided a bus bridge, including a first interface for interfacing to an expansion bus, a second interface for interfacing to a system bus, queues for queuing transaction requests within the bus bridge, means for snooping transactions on the system bus and maintaining a record of pending transaction addresses, and means for stalling issuance of a queued transaction request having a same cache line address as a pending transaction until the transaction has been completed.
[0020] In accordance with again another feature of the invention, the second interface issues a coherent read shared request on the system bus for a first class of transactions.
[0021] In accordance with again a further feature of the invention, there is provided a third interface for interfacing to an interconnection mesh.
[0022] In accordance with again an added feature of the invention, the first class of transactions includes at least one read transaction to an agent on the expansion bus and a transmit transaction to the interconnection mesh.
[0023] In accordance with again an additional feature of the invention, there are provided a cache line, a plurality of write gather buffers, a coordinating device or means for gathering in the write gather buffers data from multiple write transactions from an agent on the expansion bus pertaining to the cache line, and a transaction communicator or means for issuing an invalidate transaction on the system bus followed by a block write of the cache line if an entirety of the cache line is gathered.
[0024] In accordance with still another feature of the invention, there is provided a communicating device or means for issuing, if less than an entirety of the cache line is gathered, on the system bus a read modify write transaction for the cache line, merging gather data for the cache line with read data for the cache line, and writing and entirety of the cache line back to memory.
[0025] In accordance with still a further feature of the invention, there is provided a transceiver device or means for detecting a further request for the cache line and for issuing an intervention data response in response to the further request.
[0026] With the objects of the invention in view, there is also provided a bus bridge, including a first interface for interfacing to an expansion bus, a second interface for interfacing to a system bus, queues for queuing transaction requests within the bus bridge, a snooping device adapted to monitor transactions on the system bus, the snooping device maintaining a record of pending transaction addresses, and a delay device stalling issuance of a queued transaction request having a same cache line address as a pending transaction until the transaction has been completed.
[0027] Other features that are considered as characteristic for the invention are set forth in the appended claims.
[0028] Although the invention is illustrated and described herein as embodied in a compute node to mesh interface for highly scalable parallel processing system and a method of exchanging data, it is, nevertheless, not intended to be limited to the details shown because various modifications and structural changes may be made therein without departing from the spirit of the invention and within the scope and range of equivalents of the claims.
[0029] The construction and method of operation of the invention, however, together with additional objects and advantages thereof, will be best understood from the following description of specific embodiments when read in connection with the accompanying drawings.
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038] In the present detailed description, the following definitions are used:
[0039] Mesh network—a network that routes messages between nodes. The network can be in the form of a mesh, a torus, or another routing connection.
[0040] Fabric—another name for the routing network that routes messages between nodes.
[0041] Mesh interface—logic between a first bus (e.g., avalanche bus) logic and a second bus (e.g., PCI bus) logic and the fabric.
[0042] Torus router interface—logic taken from a torus router (TROUT) and used in the present mesh interface circuit, or mesh interface adapter (MIA), to interface between the TROUT and the MIA. The TROUT and the MIA may both take the form of ASICs.
[0043] Mesh channel—name of a remote channel that may be used to interface different MPP systems.
[0044] EDC—Error detection and correction.
[0045] The present mesh interface adapter (MIA) is configured for use in a mesh MPP system to provide an interface between a first bus (e.g., the avalanche bus), a second bus (e.g., the PCI bus), and the mesh fabric.
[0046] The MIA can be used in two configurations. Referring now to the figures of the drawings in detail and first, particularly to
[0047] Referring to
[0048] The MIA
[0049] Each interface of the MIA may be clocked independently, causing the MIA to have potentially five distinct asynchronous clock boundaries. The five asynchronous boundaries are:
[0050] 1. Bus
[0051] 2. Bus
[0052] 3. Mesh transmit, both channels A and B;
[0053] 4. Mesh receive channel A; and
[0054] 5. Mesh receive channel B.
[0055] Dual port RAM arrays may be used to act as the asynchronous boundary between different clock domains. To do so, data is written into the RAM at one frequency and read from the RAM at a different frequency. Synchronized handshake control signals are, preferably, used to inform the receiving control block that an entry has been written into the RAM, while the sending control block is informed when the entry has been removed from the RAM. In an exemplary embodiment, the MIA registers all incoming signals immediately after the input buffer while all output signals are registered before being driven out.
[0056] To facilitate access, all internal MIA registers may be located in the PCI bus clock domain. This allows all register accesses to be identical for each clock domain and prevents the register from having to also be dual ported. These registers come up in a default state but are typically initialized by software before any operations begins through the MIA.
[0057] Referring to
[0058] The MIA's bus interface
[0059] 1. arbitration requests/grants using the sys_req_n and sys_gnt_n signal;
[0060] 2. flow control of requests using the sys_rd-rdy_n and sys_wr_rdy_n lines;
[0061] 3. command encodings of data transfers using the sys_ad, sys_cmd, and sys_resp buses; and
[0062] 4. coherency responses for coherent reads using the sys_state bus.
[0063] Further in an exemplary embodiment, the MIA maintains hardware cache coherency with multiple CPUs on all avalanche bus accesses. This allows all I/O accesses to be cache coherent without forcing software to do a cache flush operation. Both 64 byte and 129 byte cache lines are supported. Coherency is accomplished in this embodiment by:
[0064] 1. issuing a cache invalidate followed by a block write request for both PCI and mesh block write requests;
[0065] 2. for PCI write requests to memory less than a full block, performing an MIA read-modify-write (RMW) operation. If an MIA RMW operation conflicts with a coherent read on the avalanche bus, the MIA responds with a dirty exclusive state indication followed by an intervention data response; and
[0066] 3. providing from the MIA to the CLUC coherent state indications for all CPU coherent read requests and upgrades through its sys_state bus signals. For each of four PCI read prefetch buffers, the avalanche bus is snooped causing the pre-fetched data to be invalidated if the cache fine is accessed by a CPU.
[0067] In an exemplary embodiment, the bus interface
[0068] High PCI bus bandwidth is achieved by using multiple read prefetch buffers. These buffers read more data than requested by an I/O agent. When the last block of data requested by an I/O agent has been pre-fetched, the next data block is pre-fetched from memory in anticipation of the VO agent's read request for the next sequential block of data. The MIA also contains four write gather queues. The write gather engines attempt to capture sequential PCI write requests and issue a single block write on the avalanche bus instead of multiple partial write requests. The write gather buffers use a least recently used (LRU) algorithm to determine which write gather buffer is next to be flushed when more than four separate writes are active on the PCI bus.
[0069] The MIA does not provide arbitration for the PCI bus (an external arbiter must provide this function).
[0070] The MIA mesh interface logic (
[0071] In an exemplary embodiment, the mesh interface logic has
[0072] The MIA mesh hardware ports can be used to interface to a remote mesh channel (RMC) or a fiber mesh channel (FMC). The connection to a RMC is done by adding drivers and receivers to the existing mesh port signals. The connection to the FMC requires external logic that converts the mesh protocol to the fiber channel protocol.
[0073] Referring to
[0074] 1. input address/command decode (
[0075] 2. input/output queues (
[0076] 3. state response queue (
[0077] 4. address comparison block (
[0078] 5. output data multiplexer (
[0079] 6. output sequencer control block (
[0080] The input address/command decode block
[0081] 1. CPU to PCI read/write request address/data, queues (
[0082] 2. CPU to PCI invalidate request queue (
[0083] 3. CPU to mesh A transmit data response queue (
[0084] 4. CPU to mesh B transmit data response queue (
[0085] 5. CPU to mesh A receive data response queue (
[0086] 6. CPU to mesh B channel receive data response queue (
[0087] 7. RMW data response queue (
[0088] 8. State response queue (
[0089] The address compare block
[0090] The output sequencer
[0091] 1. Mesh A receive address queue (
[0092] 2. Mesh B receive address queue (
[0093] 3. Mesh A transmit read request address queue (
[0094] 4. Mesh B transmit read request address queue (
[0095] 5. PCI bus read/write request address queue (
[0096] The six data sources are:
[0097] 1. Mesh A receive request data queue (
[0098] 2. Mesh B receive request data queue (
[0099] 3. PCI bus data response queue (
[0100] 4. PCI bus data request queue (
[0101] 5. Read-modify-write (RMW) queue (
[0102] 6. Interrupt data register.
[0103] The output sequencer block
[0104] The output sequencer
[0105] If the queue is a response queue, the output sequencer
[0106] The output sequencer
[0107] Bus Coherency Mechanisms
[0108] The MIA issues coherent read shared requests for both mesh transmit and PCI bus accesses to memory. For mesh receive and PCI bus block write requests, the MIA issues an invalidate for the cache line followed by the block write access.
[0109] For write requests less than a complete cache line, the MIA performs an RMW access.
[0110] Using the state response queue
[0111] The PCI bus interface logic has four read prefetch buffers
[0112] The avalanche bus coherency protocol requires that there is only one outstanding coherent request for any given cache line at a time. This function is provided by the address compare logic
[0113] The last MIA coherency mechanism allows the MIA to issue an intervention data response if a coherent processor request accesses a cache line for which the MIA is in the process of an RMW access. The MIA contains four PCI bus write gather queues (
[0114] Multiple Usage Models
[0115] Referring to
[0116] 1. main memory resides on the avalanche bus; and
[0117] 2. main memory resides on the PCI bus
[0118] When main memory resides on the avalanche bus, all memory requests that originate from the PCI bus will be directed to the avalanche bus. This usage model also assumes that no requests to the PCI bus will originate from the mesh interface. When main memory is resident on the PCI bus, memory requests originating from the PCI bus will be accepted if they fall within the PCI base/size configuration register and are directed to the MIA register core. Requests from either the avalanche bus or mesh interface will be serviced with data returned to the respective queue. When main memory resides on the PCI bus, it is assumed that a CPU node exists there as well. In the latter configuration, it is further assumed that MIA register accesses will originate from the PCI bus. The data traverses through a PCI target core as will be presently explained.
[0119] In an exemplary embodiment, the PCI interface
[0120] The PCI core
[0121] The PCI to CPU request queue
[0122] In an exemplary embodiment, the write gather buffers
[0123] write gather buffer is full—a block has been assembled and is ready for transfer to memory. This is detected when all byte enables for the cache line are active;
[0124] the snooping logic of the avalanche bus detects an invalidate to an active write gather buffer;
[0125] time based flushing, which is used to guarantee that data does not become stale in the write gather buffer;
[0126] least recently used (LRU). Used when all four write gather buffers are active and a fifth write request is detected on the PCI bus;
[0127] PCI read address compares to write gather buffer. In this case, PCI requires flushing to guarantee that the write precedes the read;
[0128] forced flush by software through MIA control register access; and
[0129] pending PCI interrupt. The write gather buffers are flushed before the interrupt is allowed to propagate to the avalanche bus.
[0130] After valid read requests have propagated through the PCI to CPU read/write request queue
[0131] Snooping logic is provided to compare memory request addresses received from the PCI bus to determine whether or not the data resides within one of the CPU data response buffers from a previous read request. If the data has been pre-fetched, the request does not propagate to the avalanche bus and data is returned to the PCI bus from the prefetch buffer.
[0132] There are several mechanisms whereby a CPU response buffer can be marked invalid within an invalid queue
[0133] least recently used (LRU). Used when all four data response buffers
[0134] address invalidated by snooping logic of avalanche bus that indicates an agent on the avalanche bus contains newer data than in the data response buffer
[0135] time based invalidation, which is used to force a response buffer to request potentially new data from an avalanche bus agent;
[0136] software forced invalidate through MIA control register access; and
[0137] pending PCI interrupt. Any read response data buffer with valid data is marked invalid at detection of any PCI interrupt, forcing the fetching of new data from avalanche memory for requests subsequent to the PCI interrupt.
[0138] A CPU to PCI read/write request queue
[0139] The PCI master core
[0140] A command field and request number generated by an avalanche input sequencer flow with the address through the CPU to PCI read/write request queue
[0141] The mesh transmit/receive request queues (
[0142] The PCI master core
[0143] The PCI master core
[0144] The PCI to CPU data response queue
[0145] In addition to data, the avalanche command field and request number is output to the avalanche output sequencer
[0146] The PCI to Mesh transmit/receive response queues (
[0147] The mesh interface control logic is configured to only request cache-line sized blocks.
[0148] The invalidate queue
[0149] The PCI address decode block
[0150] The PCI target core
[0151] Logic between the MIA response data/write gather buffers forms an MIA target core that only accepts PCI memory and configuration operations and forces the PCI target core
[0152] The PCI master core
[0153] Additionally, the PCI master core
[0154] Dynamic Byte Swapping and Register Access
[0155] Byte swap blocks
[0156] All MIA software accessible registers reside in the PCI block. Asynchronous handshake signals exist between the avalanche and mesh interfaces to validate any signals or registers that cross interface boundaries.
[0157] PCI configuration registers
[0158] The PCI configuration registers
[0159] PCI configuration register accesses originating from the avalanche bus (HE mode) using MIA register access bypass hardware byte swapping logic. Software byte swapping is required for a consistent view of these registers.
[0160] In a preferred embodiment, the MIA register block
[0161] As described above, the PCI configuration registers are “dual ported,” however, no hardware lock mechanism exists to prevent any contention should both ports be accessed concurrently. Contention is avoided by observing the following conventions:
[0162] In HE mode, all PCI configuration registers are accessed through normal MIA register access method (PCI configuration registers are memory mapped). Nothing prevents PCI configuration accesses to these registers (even those originating from the MIA) except whether or not the PCI signal IDLE has been connected on the CPU node to allow for this type of access; and
[0163] In MR mode, all, PCI configuration registers are accessed through PCI configuration operations; however, these registers can also be accessed through memory operations with the PCI protocol preventing concurrent accuses.
[0164]
[0165] Of particular interest in the case of the present invention are the following registers: PCI memory address base register, local register address base register, PCI configuration address base register, and PCI memory address hole register. Mode input signals to the MIA control initialization of these registers at reset. The function of each of these registers is briefly described in Table 1
TABLE 1 REGISTER FUNCTION
PCI Memory Address Base This register determines both the address base and size of PCI memory space as seen from the avalanche bus. Local Register Address Base This register determines both the address base and size of MIA register space as seen from the avalanche bus. PCI Configuration Address Base This register determines both the address base and size of PCI bus configuration space as seen from the avalanche bus. PCI Memory Address Hole 1 This register determines both the address base and size of PCT memory address hole. Only used if memory is located off the avalanche bus.
[0166] Usage Models—Summary
[0167] The usage model for the HE Mode of the MIA can be summarized as follows:
[0168] In HE mode, only partial requests are supported (one quad word or less) and results in PCI Memory Read or PCI Memory Write operations;
[0169] In HE mode, PCI configuration operations are supported by initializing the PCI access command register to the 8-bit value of h01 and issuing a partial operation on the avalanche bus that falls within the address range as specified by the PCI configuration address base register;
[0170] In HE mode, other PCI operations (PCI I/O, special, etc.) are supported by initializing the PCI access command register (only one bit may be set) appropriately as well as issuing a partial operation on the avalanche bus that falls within the address range as specified by the PCI configuration address base register; and
[0171] When issuing PCI configuration operations (or any other PCI operation as allowed in the PCI access command register), the address is passed unaltered directly from the avalanche bus, as is the data word (during write operations). Software ensures that the CPU to PCI request queue has completed the PCI bus operation register if a subsequent request is of a different type (i.e., changing from a PCI configuration operation to a PCI I/O operation).
[0172] The usage model for the MR mode of the MIA can be simply stated that all requests originating from any of the mesh request queues will result in PCI memory read line or memory write and invalidate bus operations (attempt at bursting a cache line). Partial requests and any non-memory operations are not supported.
[0173] Mesh Interface
[0174] The mesh interface (
[0175] The two transmit interfaces
[0176] The two receive ports
[0177] Each transmit port and each receive port interfaces independently with the avalanche bus logic and the PCI interface logic to access local memory by issuing read requests or write requests from the other buses control logic. In an exemplary embodiment, the mesh interface logic can support either a 64 byte or a 128 byte cache line size.
[0178] In an exemplary embodiment, there are four types of messages:
[0179] Hardware control messages;
[0180] Mailbox messages;
[0181] DMA write messages; and
[0182] Aligned write messages.
[0183] Hardware control messages allow nodes on the mesh network to send reset and interrupt commands to other nodes. These messages have a message header and message checksum and do not contain any data bytes. Two hardware message resets—a hard reset and a soft reset—and one hardware message interrupt are supported. This interrupt is a maskable interrupt used to interrupt the processor.
[0184] Mailbox messages allow nodes to send unsolicited messages to each other. They are used to send commands to other nodes and send responses when commands are completed. When a node receives a mailbox message, it saves the message in a mailbox buffer in the nodes DRAM memory. Each mailbox message can also cause an optional processor interrupt.
[0185] DMA write messages allow a node on the mesh network to write data buffers in another node. This is used to transfer large blocks of data between nodes without having the processor copy the data from the mailbox buffer to the actual data buffer. This would typically be used for things like disk reads and writes. The receiving node controls how DMA writes are done to its memory by using a DMA write protection array (WPA) and DMA write keys. Each DMA write message can also cause an optional processor interrupt.
[0186] The aligned message is used to send data without being required to setup the receiving node before transfer. The receiving node has a data buffer in local memory, along with an index register in the MIA pointing to the next location available in local memory (the address is always on a page boundary). When this message is received, the data is sent to the memory buffer address found by the write pointer array (WPA) register base address and the aligned index register. Each aligned message can also cause an optional processor interrupt.
[0187] In accordance with an exemplary embodiment, the MIA mesh logic and interface is capable of supporting four different page sizes. Size is initialized at the beginning of operation. The sizes supported are 4 KBytes, 8 KBytes, 16 Kbytes, and 32 KBytes. Any message can have less than a page size of data sent, but the size is assumed to be a multiple of four bytes. For mailbox messages, the size can range from zero bytes to one page of bytes. For DMA and aligned messages the size ranges from four bytes to one page of bytes. For the MIA, a flit is two bytes of data. The MIA transmit and receive channels have the capability to loopback data sent out to the transmit port back to the receive channel without leaving the MIA. This is done by setting a loopback bit in the TROUT portion of the receive channel logic and insuring that there is only one address flit.
[0188] The transmit interface
[0189] Two registers are used to access the TRR buffer. One contains the address of the current TRB, the other contains the size of the TRR. Software puts message header data into the TRR and increments the request count. The transmit logic sends messages when the request count is non-zero. The transmit logic increments to the next TRB and decrements the request count after each message is sent. The TRR size register is used to know when to roll the address back to the beginning of the TRR buffer. Software uses the TRR size register and the request count register to determine when the TRR is full and when to roll the address to the lowest physical address.
[0190] Referring to
[0191] The transmit logic can be reset by clearing a transmit enable bit in an MIA control register. The transmit logic can be reset at any time (e.g., after any of the transmit errors) by clearing this bit and, then, setting it again.
[0192] Referring to
[0193] The receive logic
[0194] As stated above, the two transmit interfaces and the two receive interfaces are asynchronous, from each other and from the remainder of the logic on the MIA. The two transmit interfaces are clocked from the same MIA clock. Each interface is synchronous with its partner, either a receive or transmit port on the other end. This approach allows flexibility in clocking the MIA mesh interface logic and the devices in the fabric. If the devices at the other end are close by, then all that is needed is to clock both the MIA and the other end with the same clock. If the other end is not so close, then the transmit end can send a clock along with the data that can be used to clock the receiving end logic. If it is even further away, then the logic can send to the other end a ½ clock that can be doubled with a PLL. The transmit side would, then, supply the receive side. For example, two clocks may be sourced at the MIA end and two clocks sourced at the other end.
[0195] In loopback mode, the receive clock domain logic normally fed by the sending transmit logic is supplied by the on-chip transmit logic. This allows loopback without any dependencies on outside clocks. For RMC functionality, each channel is completely synchronous with the MIA logic and the other end.
[0196] It will be appreciated by those of ordinary skill in the art that the invention can be embodied in other specific forms without departing from the spirit or significant character thereof. The presently disclosed embodiments are, therefore, considered in all respects to be illustrative and not restrictive. The scope of the invention is indicated by the appended claims rather than the foregoing description, and all changes that come within the meaning and range of equivalents thereof are intended to be embraced therein.