US20050259579A1 - Bounding data transmission latency based upon link loading and arrangement - Google Patents
Bounding data transmission latency based upon link loading and arrangement Download PDFInfo
- Publication number
- US20050259579A1 US20050259579A1 US11/132,615 US13261505A US2005259579A1 US 20050259579 A1 US20050259579 A1 US 20050259579A1 US 13261505 A US13261505 A US 13261505A US 2005259579 A1 US2005259579 A1 US 2005259579A1
- Authority
- US
- United States
- Prior art keywords
- data
- circuitry
- transmit
- queue
- data transmission
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 176
- 238000011068 loading method Methods 0.000 title claims abstract description 58
- 238000012795 verification Methods 0.000 claims abstract description 158
- 238000004891 communication Methods 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims abstract description 11
- 238000012544 monitoring process Methods 0.000 claims description 15
- 230000007704 transition Effects 0.000 claims description 11
- 238000013500 data storage Methods 0.000 claims 1
- 230000007935 neutral effect Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 238000003780 insertion Methods 0.000 description 7
- 230000037431 insertion Effects 0.000 description 7
- 230000000875 corresponding effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000003466 anti-cipated effect Effects 0.000 description 2
- 230000001143 conditioned effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/24—Testing correct operation
Definitions
- the present invention is in the field of data transmission. More particularly, the present invention provides a method, apparatus, system, and machine-readable medium to bound data transmission latency by transmitting error verification data at a point during a data transmission based upon loading of a channel for the data transmission.
- FIG. 2 depicts an embodiment to insert error verification data into a data transmission.
- FIG. 4 depicts an embodiment of a machine-readable medium comprising instructions to bound data transmission latency.
- I/O controller 117 may be coupled to graphics device 140 to provide a dedicated high-speed port for a graphics controller. This coupling may be accomplished via transaction layer circuitry 111 that uses a packet-based protocol, data link layer circuitry 112 to verify data integrity, and physical layer circuitry 113 to move data across a communication medium. Transaction layer circuitry 111 may encapsulate data for transmission to graphics device 140 and a packet may comprise a header and data. Data link layer circuitry 112 of chipset 110 may couple to the transaction layer circuitry 111 to associate data events such as the transmission of the last unit of data, such as a byte, word, or double word, of a packet across the communication medium between I/O controller 117 and graphics device 140 . Frequent reference is made here in to transmissions between I/O controller 117 and graphics device 140 . It should be understood, however, that embodiments may encompass transmissions between any two devices with a transaction layer, data link layer, and physical layer.
- the data link layer circuitry 112 may add a packet sequence number to the packet and add error verification data to the data transmission after the last byte, word, or d-word of the packet may be transmitted from the I/O controller 117 to the graphics device 140 .
- the packet sequence number and error verification data may facilitate the identification of errors in the data transmission by link layer circuitry of graphics device 140 .
- graphics device 140 may wait for the error verification data before releasing data of the data transmission for use.
- queue fullness circuitry may monitor the amount of data being received by the data transmission queue 183 and the amount of data transmitted via a communication medium to graphics device 140 .
- queue fullness circuitry may monitor the used and/or unused memory locations of the data transmission queue 183 to determine loading of the link between I/O controller 117 and graphics device 140 .
- Logic circuitry 181 may determine a point during a data transmission to transmit error verification data, based upon the loading according to the load monitor circuitry 180 .
- logic circuitry 181 may comprise target number reference circuitry, selection circuitry, transmitted data circuitry, and comparator circuitry.
- the target number reference circuitry may comprise data or a state machine to correlate a loading of the link, or channel, with a target for inserting error verification data.
- target number reference circuitry may comprise a target for inserting idle symbols to cause an artificial disparity transition during a data transmission and/or a target for inserting a checksum.
- the target number reference circuitry may comprise a number of data units to transmit between transmissions of error verification data, wherein the number of data units is based upon the loading of the link between I/O controller 117 and graphics device 140 .
- the logic circuitry 181 may comprise selection circuitry, such as a multiplexer, to select the data based upon the loading.
- the transmitted data circuitry may monitor or keep track of the amount of data transmitted from data transmission queue 183 to physical layer circuitry 113 .
- transmitted data circuitry may comprise a transmitted data counter to count data units as the data units are removed from data transmission queue 183 .
- Logic circuitry 181 may further comprise comparator circuitry to compare the target for insertion of error verification data against the amount of data transmitted and to output a signal to the verification circuitry 182 to indicate when the verification circuitry may transmit the error verification data.
- the physical layer circuitry 113 interconnecting I/O device 117 with graphics device 140 may comprise a link having one or more lanes to transmit and/or receive data.
- the link may comprise dual-simplex channels implemented as a transmit pair and a receive pair.
- a data clock of the physical layer circuitry 113 may facilitate an 8 b / 10 b -encoding scheme, or similar encoding scheme when data transmissions may be verified with disparity verifications, to maintain a substantially equivalent number of logical ones and logical zeros in the data transmission.
- data may be disassembled into groups, such as d-words, to substantially optimize data transmission across the communication medium with the 8 b / 10 b -encoding scheme.
- Physical layer circuitry 113 of graphics device 140 may reassemble the data in a manner substantially transparent to the data link layer circuitry 112 and transaction layer circuitry 111 .
- I/O Controller 117 may provide access to memory controller 115 , memory device 120 , processor 100 , and graphics device 140 , for I/O devices coupled with data switch 150 and PCI bridge 130 .
- I/O controller 117 may be coupled with data switch 150 and PCI bridge 130 via transaction layer circuitry 111 , data link layer circuitry 112 , and physical layer circuitry 113 . Further, in some embodiments, I/O controller 117 may comprise circuitry to arbitrate access for data switch 150 and PCI bridge 130 to a primary, or host, I/O bus.
- FIG. 2 demonstrates an embodiment to insert error verification data into a data transmission.
- the embodiment may comprise I/O device 200 coupled to communication medium 270 and may be construed to represent a subsystem present in a chipset, graphics device, PCI bridge, or a data switch.
- I/O device 200 may comprise transaction layer circuitry 210 , data link layer circuitry 220 , and physical layer circuitry 260 .
- Transaction layer circuitry 210 may receive read and write requests from a software or hardware application layer and condition the requests into a format for transmission.
- Transaction layer circuitry 210 may transmit conditioned data, such as packeted data, to data link layer circuitry 220 .
- transaction layer circuitry 210 may also receive data transmitted by another device, such as a bridge, switch, hub, or modem, having corresponding physical layer circuitry, link layer circuitry, and transaction layer circuitry. In response, transaction layer circuitry 210 may forward the data to the appropriate product application or function. For instance, the data received may comprise a read request and transaction layer circuitry 210 may forward the read request to a memory controller.
- another device such as a bridge, switch, hub, or modem, having corresponding physical layer circuitry, link layer circuitry, and transaction layer circuitry.
- transaction layer circuitry 210 may forward the data to the appropriate product application or function.
- the data received may comprise a read request and transaction layer circuitry 210 may forward the read request to a memory controller.
- Data link layer circuitry 220 may facilitate the identification of errors during a data transmission across communication medium 270 by inserting error verification data such as checksums and/or idle symbols that provide error detection information or that change the disparity of the data transmission, respectively. Data link layer circuitry 220 may further verify the integrity of a data transmission when data is received by verifying a change in disparity of the data transmission and/or a checksum received with the data transmission.
- error verification data such as checksums and/or idle symbols that provide error detection information or that change the disparity of the data transmission, respectively.
- Data link layer circuitry 220 may further verify the integrity of a data transmission when data is received by verifying a change in disparity of the data transmission and/or a checksum received with the data transmission.
- Data link layer circuitry 220 may comprise load monitor circuitry 225 , logic circuitry 230 , verification circuitry 240 , data transmission queue 250 , and received data queue 255 .
- Load monitor circuitry 225 may monitor the loading of a link, or a channel of a link, between I/O device 200 and a target device via lane 272 and lane 274 of communication medium 270 .
- Load monitor circuitry 225 may comprise queue fullness circuitry 227 . Queue fullness circuitry 227 may monitor the load on the link by monitoring the fullness of data transmission queue 250 .
- queue fullness circuitry 227 may monitor the amount of data entering and leaving data transmission queue 250 , the amount of data stored in data transmission queue 250 , and/or the amount of space available within data transmission queue 250 .
- queue fullness circuitry 227 may monitor the amount of data and/or space in data transmission queue 250 by monitoring memory locations associated with a first-in pointer and a first-out pointer or may store information about recent queue fullness in order to enable better checksum transmission decisions.
- Comparator circuitry 238 may compare the point in the data transmission to transmit error verification data against the data transmission to determine a point at which the error verification data may be transmitted. Comparator circuitry 238 may be coupled with multiplexer 234 , or other selection circuitry such as standard static complimentary metal oxide semiconductor (CMOS) logic, to receive a target number of data units and compare that target number of data units against the number of unprotected data units that have been transmitted according to transmitted data counter 236 , where an unprotected data unit is defined as a data unit that has been transmitted since the last error detection indication.
- CMOS standard static complimentary metal oxide semiconductor
- transmitted data counter 236 may count every data symbol as unprotected in a protection scheme that employs checksum-based error monitoring, while transmitted data counter 236 may count only data symbols with neutral disparity under a scheme that employs disparity-based monitoring.
- Multiplexer 234 may select a target number based upon a loading indicated by a signal received from queue fullness circuitry 227 .
- Transmitted data counter 236 may be coupled with data transmission queue 250 and may be conditioned by a signal from verification circuitry 240 to determine the number of unprotected data units transmitted from data transmission queue 250 to a target device via physical layer circuitry 260 and communication medium 270 .
- comparator circuitry 238 may output a signal to reset transmitted data counter 236 .
- Insertion circuitry 246 may receive a signal from comparator circuitry 238 indicating when error verification data may be transmitted; an output from checksum generator 242 comprising a checksum; and an idle symbol from disparity monitor 244 to output error verification data at a point during a data transmission. Insertion circuitry 246 may output the error verification data to a location in data transmission queue 250 to insert the error verification data at the point in a data transmission associated with that location. In some embodiments, insertion circuitry 246 may insert a checksum into the data transmission rather than an idle symbol when a long series of neutral-disparity symbols may transmit from data transmission queue 250 .
- verification circuitry 240 may comprise a checksum generator such as checksum generator 242 and insert a checksum into data transmission queue 250 in response to a signal from comparator circuitry 238 indicating that the checksum may be inserted into the data transmission.
- verification circuitry 240 may comprise a disparity monitor 244 and insertion circuitry 246 to insert idle symbols in response to a signal from comparator circuitry 238 . Both checksums and idle symbols may, in some embodiments, be transferred directly from verification circuitry 240 to physical layer circuitry 260 without first being placed in data transmission queue 250 .
- Data transmission queue 250 may comprise memory to store data such as one or more packets until the data can be transmitted across communication medium 270 .
- data transmission queue 250 may be a serial, first-in, first-out data transmission queue having pointers to indicate the first unit of data received and the last unit of data received.
- data transmission queue 250 may also comprise a unit of memory to store error verification data to insert into the data transmission.
- data transmission queue 250 may allow random access to pieces of the stream received from transaction layer circuitry 210 .
- data link layer circuitry 220 may also comprise received data queue 255 to verify the integrity of data received via communication medium 270 .
- Received data queue 255 may store data to transmit to transaction layer circuitry 210 .
- verification circuitry 240 may further comprise circuitry to monitor the disparity of the data received by the received data queue 255 and/or circuitry to maintain a checksum of the data received in received data queue 255 .
- the checksum may be compared to data received that is identifiable as error verification data. After the checksum determined by verification circuitry 240 matches the checksum of the error verification data, the corresponding data of the data transmission may be verified.
- the checksum generated by a verification circuitry 240 may not match the error verification data received by the received data queue 255 so verification circuitry 240 may initiate a request to retransmit the data since receipt of the last error verification data. For instance, after verification circuitry 240 may receive error verification data that modifies the disparity of the data transmission, verification circuitry 240 may recognize the error verification data as a non-neutral symbol and determine whether the idle symbol caused a transition in the disparity of the data transmission. After any symbol causes a transition in the running disparity of the data transmission, verification circuitry 240 may determine that no single-bit error has been encountered in the data transmission.
- verification circuitry 240 may receive a checksum and may compare the checksum to a checksum generated by verification circuitry 240 . After a determination that the checksum generated by verification circuitry 240 may match the checksum received, data link layer circuitry 220 may determine that no errors of the types covered by the chosen checksum algorithm occurred in the data transmissions received by received data queue 255 . In several of these embodiments, data received by input/output device 200 via communication medium 270 may not be used or retransmitted until data is verified by verification circuitry 240 .
- data reformat and output circuitry 262 may modify the format of the data from data transmission queue 250 to take advantage of the bandwidth available on communication medium 270 .
- data transmission queue 250 may comprise a 4-byte wide queue and data reformat and output circuitry 262 may comprise an 8 b / 10 b -encoding scheme to transmit data across lane 272 and lane 274 .
- Data reformat and output circuitry 262 may forward byte 1 to lane 272 , byte 2 to lane 274 , byte 3 to lane 272 , and then byte 4 to lane 274 to encode the bytes and transmit the data serially across lane 272 and lane 274 .
- Data reformat and input circuitry 264 may receive a serial transmission of data via lane 276 of communication medium 270 .
- Data reformat and input circuitry 264 may receive data encoded by a physical layer circuitry at a source device that encoded the data with an 8 b / 10 b -encoding scheme and transmitted the data serially via lane 276 .
- Data reformat and input circuitry 264 may reassemble the data into 4-byte wide units and transmit the data to received data queue 255 .
- physical layer circuitry 260 may be able to select a number of lanes available to transmit data via communication medium 270 and a source device may be able to select a number of lanes to transmit data to input/output device 200 via communication medium 270 .
- I/O device 200 may claim lane 272 , lane 274 , and lane 276 to transmit data to a target device.
- Physical layer circuitry 260 may disassemble data units of data transmission queue 250 to optimize or substantially optimize the use of lane 272 , lane 274 , and lane 276 .
- one lane of a communication medium such as lane 272 may be dedicated to transmit data from I/O device 200 to another device and lane 276 may be dedicated to transmit data from the other device to I/O device 200 .
- lane 274 may be selected by I/O device 200 to transmit data to the other device when the back log of data to transmit to the other device may be greater than the backlog of data to transmit from the other device to I/O device 200 .
- the embodiment comprises receiving data from a transaction layer to transmit across a channel of a communication medium 300 , determining a loading of the channel based upon said receiving data 310 , determining a point during a data transmission to transmit error verification data based upon the loading 320 , and transmitting the error verification data substantially at the point 330 .
- Receiving data from a transaction layer to transmit across a channel of a communication medium 300 may receive data, such as packeted data, from the transaction layer that is formatted according to a format of a transaction protocol in the transaction layer.
- Determining a target number of unprotected data units to transmit before said transmitting error verification data 325 may comprise selecting a target number of data units based upon a formula or algorithm correlating a target number of unprotected data units with the loading of the channel or a level of loading of the channel.
- the formula or algorithm may be in the form of a chart associating a load or level of loading with a target number of data units to transmit between transmissions of error verification data.
- Several of these embodiments may comprise multiplexing between more than one target number with a selection signal based upon the loading of the channel.
- Determining a target location in the data transmission based upon a heuristically-chosen target 327 may comprise determining a target location based upon data, formula, and/or algorithm by loading the link, a similar link, or simulating load on a link.
- the heuristically-chosen targets may be default values that may be refined during use. In other embodiments, the heuristically-chosen targets may be determined by experimentation and incorporated into logic circuitry.
- Transmitting the error verification data substantially at the point 330 may transmit error verification data, such as a checksum or an idle symbol, within or along with the data transmission after receiving an indication that the point in the data transmission to transmit the error verification data is near or has been reached.
- transmitting may comprise forcing error verification data into a data transmission at the point.
- Transmitting the error verification data substantially at the point 330 may comprise counting number of unprotected data units transmitted and comparing the number of data units transmitted against a target number of unprotected data units 335 ; selecting a symbol to cause a transition in the running disparity 340 ; generating a checksum 345 ; and inserting error verification data at an end of a packet.
- Selecting a symbol to cause a transition in a running disparity 340 may comprise monitoring the running disparity of a data transmission and attaching the idle symbol to the data of the data transmission.
- Generating a checksum 345 may comprise determining a combination of logical ones and zeros to represent data transmitted since the beginning of the data transmission or since the last error verification data or checksum transmission.
- generating a checksum 345 may comprise generating a number based upon a number of logical ones and/or logical zeros transmitted.
- Inserting error verification data at an end of a packet may insert the error verification data at an end of a packet, such as before the first byte of a packet or after the last byte of a packet, at or near the point selected during the data transmission to transmit error verification data based upon the loading.
- inserting error verification data at an end of a packet may comprise inserting a checksum or an idle symbol into the data transmission queue such that the checksum or idle symbol is transmitted near an end of a packet.
- a machine-readable medium includes any mechanism that provides (i.e. stores and or transmits) information in a form readable by a machine (e.g., a computer), that when executed by the machine, may perform the functions described herein.
- a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g. carrier waves, infrared signals, digital signals, etc.); etc. . . . .
- ROM read only memory
- RAM random access memory
- magnetic disk storage media e.g. magnetic disks, optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g. carrier waves, infrared signals, digital signals, etc.); etc. . . . .
- Several embodiments of the present invention may comprise more than one machine-readable medium depending on the design of the machine.
- FIG. 4 shows an embodiment of a machine-readable medium comprising instructions to bound data transmission latency.
- the machine-readable medium 400 may comprise instructions for receiving data from a transaction layer to transmit across a channel of a communication medium 410 , determining a loading of the channel based upon said receiving data 420 , determining a point during a data transmission to transmit error verification data based upon the loading 430 , and transmitting the error verification data substantially at the point 440 .
- Receiving data from a transaction layer to transmit across a channel of a communication medium 410 may comprise receiving packetized data from a packet-based transaction layer protocol.
- receiving data from a transaction layer to transmit across a channel of a communication medium 410 may comprise instructions for queuing packeted data and attaching a packet sequence number to the packeted data.
- receiving data from a transaction layer to transmit across a channel of a communication medium 410 may comprise receiving a stream of data in intervals, wherein each interval may be a point during the data transmission available to insert error verification data.
- Determining a loading of the channel based upon said receiving data 420 may comprise instructions for determining the loading of the channel of the communication medium.
- the communication medium may have selectable lanes for transmitting data from a source device to a target device and determining a loading of the channel based upon said receiving data 420 may determine the loading based upon the number channels available to transmit data across the communication medium from the source to the target device.
- Determining a loading of the channel based upon said receiving data 420 may also comprise instructions for monitoring the amount of data in a data transmission queue. Monitoring the amount of data in a data transmission queue may comprise instructions for generating a signal to represent a backlog of data in the data transmission queue.
- Determining a point during a data transmission to transmit error verification data based upon the loading 430 may comprise instructions for determining a frequency to transmit error verification data based upon the loading of a link between a source device and a target device.
- the instructions for determining the frequency may comprise instructions for determining the frequency based upon the current backlog of data in the data transmission queue and instructions to dynamically modify the frequency as the backlog of data changes.
- determining a point during a data transmission to transmit error verification data based upon the loading 430 may comprise instructions for determining a target number of data units to transmit between transmission of error verification data.
- Transmitting the error verification data substantially at the point 440 may comprise instructions for transmitting error verification data, such as a checksum or an idle symbol, to facilitate verification of the data transmission by a link layer at the target device. Transmitting the error verification data substantially at the point 440 may also comprise instructions for transmitting error verification at an interval in the data stream available to transmit error verification data or at, or near, an end of a packet, such as the front end of a packet or the back end of a packet. In further embodiments, transmitting the error verification data substantially at the point 440 may comprise transmitting error verification data substantially at a frequency selected for transmitting error verification data based upon the loading of the communication medium, such as the channel(s), or link.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
A method, apparatus, system, and machine-readable medium to bound data transmission latency by transmitting error verification data at a point during a data transmission based upon loading of a channel for the data transmission is provided. Embodiments may comprise determining the loading of a communication channel and transmitting error verification data to a target device based upon the loading. More specifically, some embodiments transmit error verification data at intervals, variable intervals in some embodiments, to balance transmission latency against the bandwidth available from a communication medium.
Description
- The present invention is in the field of data transmission. More particularly, the present invention provides a method, apparatus, system, and machine-readable medium to bound data transmission latency by transmitting error verification data at a point during a data transmission based upon loading of a channel for the data transmission.
- System interconnection models describe three layers controlling aspect of data transmission: transaction layer, data link layer, and physical layer. Each layer independently performs tasks to successfully transmit data from a source device to a target device. The transaction layer, for example, may comprise a packet-based protocol to packetize or encapsulate data for transmission. The packet-based protocol sizes the packets of data to optimize transmission through several network devices. The data link layer inserts packet sequence numbers and error verification data, such as idle characters, referred to as an idle symbol, and checksums, to verify data integrity during the transmission. Lastly, the physical layer reformats the data to optimize transmission of the data across a physical interconnection, or communication medium, and a physical layer at the target device reassembles the data.
- The link layers at the source device and target device maintain data integrity by performing verifications of the data such as disparity and checksum verifications. Disparity verifications monitor a running disparity of a data transmission. For example, an eight bit/ten bit (8 b/10 b) encoding scheme balances the count of logical ones and logical zeros so that the numbers of each are substantially equivalent. When ten bits are sent having more logical ones than logical zeros, a subsequent transmission will have more logical zeros than ones, flipping the running disparity from more logical ones to more logical zeros, or from one heavy or to zero heavy. When ten bits are sent with equal numbers of ones and zeroes, such a symbol is said to have “neutral” disparity. In some situations, a large number of neutral symbols are transmitted between non-neutral symbols so the source link layer artificially inserts idle symbols to flip the disparity. The target link layer constantly monitors the change in disparity. When the disparity changes inappropriately, an error is assumed to have corrupted the data. Similarly, in checksum verifications, a source device incorporates data, called a checksum, into a data transmission comprising a summation of logical zeros and/or logical ones. The target device's link layer receives the checksum and compares it to a summation maintained by the target device. When the summations do not match, an error is assumed to have occurred in the data transmitted since the last checksum. In response, the target device may either request a retransmission of the data since the last checksum or simply discard the received data.
- The number of idle symbols for disparity checks or checksums inserted into the data stream affects the bandwidth of the communication medium and the latency of the data transmission. The bandwidth of a communication medium is a measure of the amount of data that can transmit between a source device and a target device via a communication medium. The latency of a data transmission across that medium is a measure of the average amount of time that elapses between requesting the transmission of data at the source device and verification of the data by the target device, allowing the target device to use the data, and is adversely affected when error verification data is not transmitted often enough. Link layers typically insert error verification data at a fixed frequency or transaction layers embed the data directly into the packets. However, transmitting the error verification data at a fixed frequency or embedding the error verification data into the packets does not take into account the link loading that determines the amount of time it takes for the receiving link layer to verify and use data transmitted. Thus, the fixed frequency or embedded data may be sent too often, such as when the link is heavily loaded, severely impacting the link bandwidth. On the other hand, link integrity information may not be sent often enough in some cases when the link is lightly loaded. This adversely affects latency.
- In the accompanying drawings, like references may indicate similar elements:
-
FIG. 1 depicts an embodiment to bound data transmission latency. -
FIG. 2 depicts an embodiment to insert error verification data into a data transmission. -
FIG. 3 depicts a flow chart of embodiments to bound data transmission latency. -
FIG. 4 depicts an embodiment of a machine-readable medium comprising instructions to bound data transmission latency. - The following is a detailed description of example embodiments of the invention depicted in the accompanying drawings. The example embodiments are in such detail as to clearly communicate the invention. However, the amount of detail offered is not intended to limit the anticipated variations of embodiments. The variations of embodiments anticipated for the present invention are too numerous to discuss individually so the detailed descriptions below are designed to make such embodiments obvious to a person of ordinary skill in the art.
- Referring now to
FIG. 1 , there is shown an embodiment to bound data transmission latency based upon a data event, or data transmission event. The embodiment may be a computer system such as a system for a desktop personal computer, notebook computer and/or server. The illustrated embodiment may comprise aprocessor 100,chipset 110,memory device 120, peripheral component interconnect (PCI)bridge 130,graphics device 140, anddata switch 150.Processor 100 may execute instructions in response to requests from operating system software and application software.Processor 100 may be coupled tochipset 110 to access the contents of memory inmemory device 120 and receive data from or transmit data toPCI bridge 130,graphics device 140, anddata switch 150. -
Chipset 110 may access memory contents ofmemory device 120 and relay data and code betweenprocessor 100 and input and output (I/O) devices, such asPCI bridge 130,graphics device 140, anddata switch 150.Chipset 110 may comprise amemory controller 115 and an input-output controller (I/O controller) 117.Memory controller 115 may be coupled tomemory device 120, to access memory contents ofmemory device 120 in response to instructions from I/O devices and/orprocessor 100. - I/
O controller 117 may be coupled tographics device 140 to provide a dedicated high-speed port for a graphics controller. This coupling may be accomplished viatransaction layer circuitry 111 that uses a packet-based protocol, datalink layer circuitry 112 to verify data integrity, andphysical layer circuitry 113 to move data across a communication medium.Transaction layer circuitry 111 may encapsulate data for transmission tographics device 140 and a packet may comprise a header and data. Datalink layer circuitry 112 ofchipset 110 may couple to thetransaction layer circuitry 111 to associate data events such as the transmission of the last unit of data, such as a byte, word, or double word, of a packet across the communication medium between I/O controller 117 andgraphics device 140. Frequent reference is made here in to transmissions between I/O controller 117 andgraphics device 140. It should be understood, however, that embodiments may encompass transmissions between any two devices with a transaction layer, data link layer, and physical layer. - In some embodiments, the data
link layer circuitry 112 may add a packet sequence number to the packet and add error verification data to the data transmission after the last byte, word, or d-word of the packet may be transmitted from the I/O controller 117 to thegraphics device 140. The packet sequence number and error verification data may facilitate the identification of errors in the data transmission by link layer circuitry ofgraphics device 140. In some embodiments,graphics device 140 may wait for the error verification data before releasing data of the data transmission for use. - The data
link layer circuitry 112 may comprise circuitry to determine a point during a data transmission to transmit error verification data based upon loading of the link, or communication medium. For example, the circuitry may compriseload monitor circuitry 180,logic circuitry 181, andverification circuitry 182.Load monitor circuitry 180 may monitor the amount of data to transmit to the target device along with the amount of data recently transmitted to the target device and base a determination of link loading upon the amount of data waiting to be transmitted tographics device 140 from I/O controller 117 and the recent history of data transmission between the two agents. In some embodiments,load monitor circuitry 180 may comprise queue fullness circuitry to base a determination of loading on the amount of data in or being received by adata transmission queue 183. For instance, queue fullness circuitry may monitor the amount of data being received by thedata transmission queue 183 and the amount of data transmitted via a communication medium tographics device 140. In other embodiments, queue fullness circuitry may monitor the used and/or unused memory locations of thedata transmission queue 183 to determine loading of the link between I/O controller 117 andgraphics device 140. -
Logic circuitry 181 may determine a point during a data transmission to transmit error verification data, based upon the loading according to theload monitor circuitry 180. In some embodiments,logic circuitry 181 may comprise target number reference circuitry, selection circuitry, transmitted data circuitry, and comparator circuitry. The target number reference circuitry may comprise data or a state machine to correlate a loading of the link, or channel, with a target for inserting error verification data. In some embodiments, target number reference circuitry may comprise a target for inserting idle symbols to cause an artificial disparity transition during a data transmission and/or a target for inserting a checksum. In many of these embodiments, the target number reference circuitry may comprise a number of data units to transmit between transmissions of error verification data, wherein the number of data units is based upon the loading of the link between I/O controller 117 andgraphics device 140. - When the target number reference circuitry comprises data rather than a state machine, the
logic circuitry 181 may comprise selection circuitry, such as a multiplexer, to select the data based upon the loading. The transmitted data circuitry may monitor or keep track of the amount of data transmitted fromdata transmission queue 183 tophysical layer circuitry 113. In some embodiments, transmitted data circuitry may comprise a transmitted data counter to count data units as the data units are removed fromdata transmission queue 183.Logic circuitry 181 may further comprise comparator circuitry to compare the target for insertion of error verification data against the amount of data transmitted and to output a signal to theverification circuitry 182 to indicate when the verification circuitry may transmit the error verification data. In some embodiments,logic circuitry 181 may comprise selection circuitry coupled with the comparator circuitry to select a point during the data transmission to transmit error verification data, such as a byte or a d-word, wherein the point may be based upon the association of a word in the data transmission with the last word or byte of data such as a packet In many of these embodiments, thelogic circuitry 181 may receive a signal or indication fromtransaction layer circuitry 111 regarding appropriate locations in a data transmission to transmit error verification data. - The
verification circuitry 182 may have circuitry to select or generate error verification data to transmit in or with the data transmission from I/O controller 117 tographics device 140. In some embodiments, the circuitry to select or generate error verification data may comprise checksum circuitry to generate a checksum; disparity circuitry to monitor the disparity of the data transmission and to select or generate an idle symbol to transmit in the data transmission; or circuitry for both. Theverification circuitry 182 may further comprise circuitry to transmit the error verification data in response to a signal from thelogic circuitry 181 indicating the point at which the error verification data may be transmitted tographics device 140. - The
physical layer circuitry 113 interconnecting I/O device 117 withgraphics device 140 may comprise a link having one or more lanes to transmit and/or receive data. The link may comprise dual-simplex channels implemented as a transmit pair and a receive pair. A data clock of thephysical layer circuitry 113 may facilitate an 8 b/10 b-encoding scheme, or similar encoding scheme when data transmissions may be verified with disparity verifications, to maintain a substantially equivalent number of logical ones and logical zeros in the data transmission. In some embodiments, where more than one lane of a communication medium may transmit data from I/O device 117 tographics device 140, data may be disassembled into groups, such as d-words, to substantially optimize data transmission across the communication medium with the 8 b/10 b-encoding scheme.Physical layer circuitry 113 ofgraphics device 140 may reassemble the data in a manner substantially transparent to the datalink layer circuitry 112 andtransaction layer circuitry 111. - I/
O Controller 117 may provide access tomemory controller 115,memory device 120,processor 100, andgraphics device 140, for I/O devices coupled with data switch 150 andPCI bridge 130. I/O controller 117 may be coupled with data switch 150 andPCI bridge 130 viatransaction layer circuitry 111, datalink layer circuitry 112, andphysical layer circuitry 113. Further, in some embodiments, I/O controller 117 may comprise circuitry to arbitrate access for data switch 150 andPCI bridge 130 to a primary, or host, I/O bus. - Data switch 150 may be designed to interconnect several endpoint devices, such as I/O devices, with point-to-point connections to
chipset 110. In some embodiments, data switch 150 may be designed to provide peer-to-peer communication between the I/O devices coupled withdata switch 150, such as a mobile docking station in a gigabit Ethernet card, to avoid increasing the traffic on the primary I/O bus unnecessarily. -
PCI bridge 130 may couple a PCI bus to I/O controller 117. For example, more than one agent on the PCI bus coupled withPCI bridge 130 may request a read of memory contents inmemory device 120.PCI bridge 130 may accept one of the requests and forward the request to I/O controller 117 viatransaction layer circuitry 131, datalink layer circuitry 132, andphysical layer circuitry 133. Thetransaction layer circuitry 131 may condition the read request into packets and transmit the packets to the datalink layer circuitry 132. The datalink layer circuitry 132 may comprise circuitry to determine a point during the data transmission to transmit error verification data, and verification circuitry to generate or select error verification data to transmit at the selected point of the data transmission. After the d-word of data is forwarded to I/O controller 117, the verification circuitry of the datalink layer circuitry 132 may transmit the error verification data. I/O controller 117 may verify the data with the error verification data and forward the data tomemory controller 115 to perform a read access ofmemory device 120. In some situations, I/O controller 117 may determine that an error has occurred in the data transmission and may requestPCI bridge 130 to retransmit the corresponding data. - In many embodiments, transaction layer circuitry, data link layer circuitry, and/or physical layer circuitry may comprise transaction layer, data link layer, and/or physical layer software to execute on a processor and/or controller, and the circuit paths to be utilized by the software, such as memory storing software instructions and a processor to execute the instructions, may be referred to as transaction layer circuitry, data link layer circuitry, and/or physical layer circuitry. In other embodiments, some portion of the functionality of the layers may be implemented in hardware, wherein circuitry may refer to the software and/or hardware. In still further embodiments, the transaction layer, data link layer, and/or physical layer may be implemented substantially to wholly within hardware.
-
FIG. 2 demonstrates an embodiment to insert error verification data into a data transmission. The embodiment may comprise I/O device 200 coupled tocommunication medium 270 and may be construed to represent a subsystem present in a chipset, graphics device, PCI bridge, or a data switch. I/O device 200 may comprisetransaction layer circuitry 210, datalink layer circuitry 220, andphysical layer circuitry 260.Transaction layer circuitry 210 may receive read and write requests from a software or hardware application layer and condition the requests into a format for transmission.Transaction layer circuitry 210 may transmit conditioned data, such as packeted data, to datalink layer circuitry 220. - In some embodiments,
transaction layer circuitry 210 may also receive data transmitted by another device, such as a bridge, switch, hub, or modem, having corresponding physical layer circuitry, link layer circuitry, and transaction layer circuitry. In response,transaction layer circuitry 210 may forward the data to the appropriate product application or function. For instance, the data received may comprise a read request andtransaction layer circuitry 210 may forward the read request to a memory controller. - Data
link layer circuitry 220 may facilitate the identification of errors during a data transmission acrosscommunication medium 270 by inserting error verification data such as checksums and/or idle symbols that provide error detection information or that change the disparity of the data transmission, respectively. Datalink layer circuitry 220 may further verify the integrity of a data transmission when data is received by verifying a change in disparity of the data transmission and/or a checksum received with the data transmission. - Data
link layer circuitry 220 may compriseload monitor circuitry 225,logic circuitry 230,verification circuitry 240,data transmission queue 250, and receiveddata queue 255.Load monitor circuitry 225 may monitor the loading of a link, or a channel of a link, between I/O device 200 and a target device vialane 272 andlane 274 ofcommunication medium 270.Load monitor circuitry 225 may comprisequeue fullness circuitry 227.Queue fullness circuitry 227 may monitor the load on the link by monitoring the fullness ofdata transmission queue 250. For instance,queue fullness circuitry 227 may monitor the amount of data entering and leavingdata transmission queue 250, the amount of data stored indata transmission queue 250, and/or the amount of space available withindata transmission queue 250. In some embodiments,queue fullness circuitry 227 may monitor the amount of data and/or space indata transmission queue 250 by monitoring memory locations associated with a first-in pointer and a first-out pointer or may store information about recent queue fullness in order to enable better checksum transmission decisions. - In the present embodiment,
queue fullness circuitry 227 may comprise queueddata counter 229. Queued data counter 229 may be coupled todata transmission queue 250 to monitor the amount of data received bydata transmission queue 250 fromtransaction layer circuitry 210. Further,queue fullness circuitry 227 may be coupled to transmitted data counter 236 oflogic circuitry 230 to monitor the amount of data transmitted fromdata transmission queue 250 tophysical layer circuitry 260. -
Logic circuitry 230 may determine a point during a data transmission to transmit or insert error verification data based upon link loading and may be coupled to loadmonitor circuitry 225 to receive a signal indicating the loading of the link between I/O device 200 and a target device.Logic circuitry 230 may comprise targetnumber reference circuit 232,multiplexer 234, transmitteddata counter 236, andcomparator 238. Targetnumber reference circuit 232 may comprise several targets for transmitting error verification data in a data transmission across a link, correlated with loadings of the link. In the present embodiment, targetnumber reference circuit 232 may output more than one target number of data units to transmit between transmissions of error verification data, or before the first transmission of error verification data. The target numbers output to multiplexer 234 may vary depending upon the type of error verification data to be transmitted. For example, targetnumber reference circuit 232 may comprise target numbers heuristically-chosen for transmitting idle symbols with non-neutral disparity, such as one byte idle symbols, or target numbers heuristically-chosen for transmitting checksums, such as 4 byte checksums. In the present embodiment, transmitted data counter 236 may be coupled toverification circuitry 240 to receive a signal indicating that a long string of neutral characters may have been transmitted fromdata transmission queue 250 tophysical layer circuitry 260. -
Comparator circuitry 238 may compare the point in the data transmission to transmit error verification data against the data transmission to determine a point at which the error verification data may be transmitted.Comparator circuitry 238 may be coupled withmultiplexer 234, or other selection circuitry such as standard static complimentary metal oxide semiconductor (CMOS) logic, to receive a target number of data units and compare that target number of data units against the number of unprotected data units that have been transmitted according to transmitteddata counter 236, where an unprotected data unit is defined as a data unit that has been transmitted since the last error detection indication. Note that transmitted data counter 236 may count every data symbol as unprotected in a protection scheme that employs checksum-based error monitoring, while transmitted data counter 236 may count only data symbols with neutral disparity under a scheme that employs disparity-based monitoring.Multiplexer 234 may select a target number based upon a loading indicated by a signal received fromqueue fullness circuitry 227. Transmitted data counter 236 may be coupled withdata transmission queue 250 and may be conditioned by a signal fromverification circuitry 240 to determine the number of unprotected data units transmitted fromdata transmission queue 250 to a target device viaphysical layer circuitry 260 andcommunication medium 270. In some embodiments,comparator circuitry 238 may output a signal to reset transmitteddata counter 236. In other embodiments,verification circuitry 240 may also output a signal that resets transmitteddata counter 236. In many embodiments, the reset signal may be the same output transmitted toverification circuitry 240 to indicate that error verification data may transmit in the data transmission or along with the data transmission. - In alternative embodiments, the functions of target
number reference circuit 232 andmultiplexer 234 may be combined in a state machine. The state machine may comprise a target, such as a target number, to output in response to a signal indicating the loading of the link between I/O device 200 and a target device. In many of these embodiments, the state machine may also perform the function of the comparator and/or transmitted data counter. In still further embodiments,logic circuitry 230 may comprise selection circuitry to determine a convenient point, or location, in a data stream to insert or transmit error verification data based upon a signal or other indication fromtransaction layer circuitry 210. -
Verification circuitry 240 may generate or select error verification data to transmit in or with the data transmission to the target device. In many embodiments,verification circuitry 240 may comprise circuitry to generate an idle symbol based upon the running disparity of a data transmission and/or checksum circuitry to generate a checksum based upon the data transmitted since a previous checksum was inserted into the data transmission.Verification circuitry 240 may comprisechecksum generator 242, disparity monitor 244, andinsertion circuitry 246.Checksum generator 242 may generate or select a number based upon data transmitted fromdata transmission queue 250 tophysical layer circuitry 260. In some embodiments,checksum generator 242 may generate a number based upon the number of, or a selected number of, logical ones and/or logical zeros transmitted within the data transmission. In some embodiments,verification circuitry 240 may further comprise circuitry to output a signal tological circuitry 230 when a series of neutral characters are being transmitted fromdata transmission queue 250. -
Disparity monitor 244 may monitor the running disparity of the data transmission fromdata transmission queue 250 and output error verification data to cause a transition in the disparity of the data transmission. In the present embodiment, disparity monitor 244 comprisessymbol selector 245.Symbol selector 245 may comprise one or more logical one heavy idle symbols and one or more logical zero heavy idle symbols such that thesymbol selector 245 may output an idle symbol to cause a transition in, or flip, the disparity of the data transmission. -
Insertion circuitry 246 may receive a signal fromcomparator circuitry 238 indicating when error verification data may be transmitted; an output fromchecksum generator 242 comprising a checksum; and an idle symbol from disparity monitor 244 to output error verification data at a point during a data transmission.Insertion circuitry 246 may output the error verification data to a location indata transmission queue 250 to insert the error verification data at the point in a data transmission associated with that location. In some embodiments,insertion circuitry 246 may insert a checksum into the data transmission rather than an idle symbol when a long series of neutral-disparity symbols may transmit fromdata transmission queue 250. - In alternative embodiments,
verification circuitry 240 may comprise a checksum generator such aschecksum generator 242 and insert a checksum intodata transmission queue 250 in response to a signal fromcomparator circuitry 238 indicating that the checksum may be inserted into the data transmission. In still further embodiments,verification circuitry 240 may comprise adisparity monitor 244 andinsertion circuitry 246 to insert idle symbols in response to a signal fromcomparator circuitry 238. Both checksums and idle symbols may, in some embodiments, be transferred directly fromverification circuitry 240 tophysical layer circuitry 260 without first being placed indata transmission queue 250. -
Data transmission queue 250 may comprise memory to store data such as one or more packets until the data can be transmitted acrosscommunication medium 270. In many embodiments,data transmission queue 250 may be a serial, first-in, first-out data transmission queue having pointers to indicate the first unit of data received and the last unit of data received. In some embodiments,data transmission queue 250 may also comprise a unit of memory to store error verification data to insert into the data transmission. In other embodiments,data transmission queue 250 may allow random access to pieces of the stream received fromtransaction layer circuitry 210. - In some embodiments, data
link layer circuitry 220 may also comprise receiveddata queue 255 to verify the integrity of data received viacommunication medium 270.Received data queue 255 may store data to transmit totransaction layer circuitry 210. In some situations wheretransaction layer circuitry 210 stalls, or is otherwise unable to process the data received, receiveddata queue 255 may become full. In many of these embodiments,verification circuitry 240 may further comprise circuitry to monitor the disparity of the data received by the receiveddata queue 255 and/or circuitry to maintain a checksum of the data received in receiveddata queue 255. Whenverification circuitry 240 maintains a checksum, the checksum may be compared to data received that is identifiable as error verification data. After the checksum determined byverification circuitry 240 matches the checksum of the error verification data, the corresponding data of the data transmission may be verified. - In other situations, the checksum generated by a
verification circuitry 240 may not match the error verification data received by the receiveddata queue 255 soverification circuitry 240 may initiate a request to retransmit the data since receipt of the last error verification data. For instance, afterverification circuitry 240 may receive error verification data that modifies the disparity of the data transmission,verification circuitry 240 may recognize the error verification data as a non-neutral symbol and determine whether the idle symbol caused a transition in the disparity of the data transmission. After any symbol causes a transition in the running disparity of the data transmission,verification circuitry 240 may determine that no single-bit error has been encountered in the data transmission. On the other hand,verification circuitry 240 may receive a checksum and may compare the checksum to a checksum generated byverification circuitry 240. After a determination that the checksum generated byverification circuitry 240 may match the checksum received, datalink layer circuitry 220 may determine that no errors of the types covered by the chosen checksum algorithm occurred in the data transmissions received by receiveddata queue 255. In several of these embodiments, data received by input/output device 200 viacommunication medium 270 may not be used or retransmitted until data is verified byverification circuitry 240. -
Physical layer circuitry 260 may be coupled to datalink layer circuitry 220 to receive data to transmit viacommunication medium 270 and to forward data received viacommunication medium 270.Physical layer circuitry 260 may comprise data reformat andoutput circuitry 262 and data reformat andinput circuitry 264. Data reformat andoutput circuitry 262 may be coupled todata transmission queue 250 of the datalink layer circuitry 220 to transmit data fromdata transmission queue 250 along with error verification data to a target device having a corresponding physical layer circuitry, or the equivalent, coupled tocommunication medium 270. Data reformat andoutput circuitry 262 may transmit data vialane 272 andlane 274 ofcommunication medium 270, and receive data vialane 276 ofcommunication medium 270. In situations where data reformat andoutput circuitry 262 may transmit data via more than one lane of a communication medium, data reformat andoutput circuitry 262 may modify the format of the data fromdata transmission queue 250 to take advantage of the bandwidth available oncommunication medium 270. For example,data transmission queue 250 may comprise a 4-byte wide queue and data reformat andoutput circuitry 262 may comprise an 8 b/10 b-encoding scheme to transmit data acrosslane 272 andlane 274. Data reformat andoutput circuitry 262 may forwardbyte 1 tolane 272,byte 2 tolane 274, byte 3 tolane 272, and then byte 4 to lane 274 to encode the bytes and transmit the data serially acrosslane 272 andlane 274. - Data reformat and
input circuitry 264 may receive a serial transmission of data vialane 276 ofcommunication medium 270. Data reformat andinput circuitry 264 may receive data encoded by a physical layer circuitry at a source device that encoded the data with an 8 b/10 b-encoding scheme and transmitted the data serially vialane 276. Data reformat andinput circuitry 264 may reassemble the data into 4-byte wide units and transmit the data to receiveddata queue 255. - In alternative embodiments,
physical layer circuitry 260 may be able to select a number of lanes available to transmit data viacommunication medium 270 and a source device may be able to select a number of lanes to transmit data to input/output device 200 viacommunication medium 270. For example, whenlane 272,lane 274, andlane 276 are idle, I/O device 200 may claimlane 272,lane 274, andlane 276 to transmit data to a target device.Physical layer circuitry 260 may disassemble data units ofdata transmission queue 250 to optimize or substantially optimize the use oflane 272,lane 274, andlane 276. In other embodiments, one lane of a communication medium such aslane 272 may be dedicated to transmit data from I/O device 200 to another device andlane 276 may be dedicated to transmit data from the other device to I/O device 200. In many of these embodiments,lane 274 may be selected by I/O device 200 to transmit data to the other device when the back log of data to transmit to the other device may be greater than the backlog of data to transmit from the other device to I/O device 200. - Referring now to
FIG. 3 , there is shown a flow chart of an embodiment to bound the latency of a data transmission. The embodiment comprises receiving data from a transaction layer to transmit across a channel of acommunication medium 300, determining a loading of the channel based upon said receiving data 310, determining a point during a data transmission to transmit error verification data based upon theloading 320, and transmitting the error verification data substantially at thepoint 330. Receiving data from a transaction layer to transmit across a channel of acommunication medium 300 may receive data, such as packeted data, from the transaction layer that is formatted according to a format of a transaction protocol in the transaction layer. Receiving data from a transaction layer to transmit across a channel of acommunication medium 300 may comprise receivingpacketized data 305. Receivingpacketized data 305 may comprise receiving data via a packet based transaction protocol in the transaction layer and storing the data in a data transmission queue. In some embodiments, receivingpacketized data 305 may comprise storing a bit or bits in a memory location in the data transmission queue associated with the packeted data or storing the bit or bits with the packeted data in the data transmission queue. For instance, the bit or bits may represent a packet sequence number. In many of these embodiments, receivingpacketized data 305 may comprise queuing a packet comprising data and a header. - Determining a loading of the channel based upon said receiving data 310 may determine the loading, or level of loading, of one or more channels coupling the data link layer of a source device to the data link layer of a target device. Determining a loading of the channel based upon said receiving data 310 may comprise monitoring an amount of data in a
data transmission queue 315. Monitoring an amount of data in adata transmission queue 315 may comprise determining a difference between the amount of data received by the data transmission queue and the amount of data transmitted out of the data transmission queue. In other embodiments, monitoring an amount of data in adata transmission queue 315 may comprise monitoring the difference between the physical address or logical address in the data transmission queue associated with a first end pointer and the data location associated with a last end pointer. In still further embodiments, monitoring an amount of data in adata transmission queue 315 may comprise monitoring the amount of data in the data transmission queue or monitoring the amount of space available in the transmission queue. - Determining a point during a data transmission to transmit error verification data based upon the
loading 320 may determine the number of data units to transmit between transmissions of error verification data and count the number of data units transmitted from the data transmission queue, to determine the point or when the point may match or be near the target Determining a point during a data transmission to transmit error verification data based upon theloading 320 may comprise determining a target number of unprotected data units to transmit before said transmittingerror verification data 325 and determining a target location in the data transmission based upon a heuristically-chosentarget 327. Determining a target number of unprotected data units to transmit before said transmittingerror verification data 325 may comprise selecting a target number of data units based upon a formula or algorithm correlating a target number of unprotected data units with the loading of the channel or a level of loading of the channel. In some embodiments, the formula or algorithm may be in the form of a chart associating a load or level of loading with a target number of data units to transmit between transmissions of error verification data. Several of these embodiments may comprise multiplexing between more than one target number with a selection signal based upon the loading of the channel. Determining a target location in the data transmission based upon a heuristically-chosentarget 327 may comprise determining a target location based upon data, formula, and/or algorithm by loading the link, a similar link, or simulating load on a link. In some embodiments, the heuristically-chosen targets may be default values that may be refined during use. In other embodiments, the heuristically-chosen targets may be determined by experimentation and incorporated into logic circuitry. - Transmitting the error verification data substantially at the
point 330 may transmit error verification data, such as a checksum or an idle symbol, within or along with the data transmission after receiving an indication that the point in the data transmission to transmit the error verification data is near or has been reached. In some embodiments, transmitting may comprise forcing error verification data into a data transmission at the point. Transmitting the error verification data substantially at thepoint 330 may comprise counting number of unprotected data units transmitted and comparing the number of data units transmitted against a target number ofunprotected data units 335; selecting a symbol to cause a transition in the runningdisparity 340; generating achecksum 345; and inserting error verification data at an end of a packet. Counting the number of data units transmitted and comparing the number of unprotected data units transmitted against a target number ofunprotected data units 335 may compare the target number of unprotected data units, such as the number of bytes, words, or d-words, against the number of bytes, words, or d-words transmitted from the data transmission queue since the last piece of error verification data may have been sent. Once the comparison determines that the number of unprotected data units transmitted is near or at the target number of unprotected data units, transmitting the error verification data substantially at thepoint 330 may comprise outputting a signal indicating that the error verification data may transmit. Outputting a signal indicating that the error verification data may transmit may cause insertion of error verification data into the data transmission queue to transmit to a target device via the physical layer. - Selecting a symbol to cause a transition in a running
disparity 340 may comprise monitoring the running disparity of a data transmission and attaching the idle symbol to the data of the data transmission. Generating achecksum 345 may comprise determining a combination of logical ones and zeros to represent data transmitted since the beginning of the data transmission or since the last error verification data or checksum transmission. In some embodiments, generating achecksum 345 may comprise generating a number based upon a number of logical ones and/or logical zeros transmitted. - Inserting error verification data at an end of a packet may insert the error verification data at an end of a packet, such as before the first byte of a packet or after the last byte of a packet, at or near the point selected during the data transmission to transmit error verification data based upon the loading. In some embodiments, inserting error verification data at an end of a packet may comprise inserting a checksum or an idle symbol into the data transmission queue such that the checksum or idle symbol is transmitted near an end of a packet.
- Referring now to
FIG. 4 , a machine-readable medium embodiment of the present invention is shown. A machine-readable medium includes any mechanism that provides (i.e. stores and or transmits) information in a form readable by a machine (e.g., a computer), that when executed by the machine, may perform the functions described herein. For example, a machine-readable medium may include read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g. carrier waves, infrared signals, digital signals, etc.); etc. . . . . Several embodiments of the present invention may comprise more than one machine-readable medium depending on the design of the machine. - In particular,
FIG. 4 shows an embodiment of a machine-readable medium comprising instructions to bound data transmission latency. The machine-readable medium 400 may comprise instructions for receiving data from a transaction layer to transmit across a channel of acommunication medium 410, determining a loading of the channel based upon said receivingdata 420, determining a point during a data transmission to transmit error verification data based upon theloading 430, and transmitting the error verification data substantially at thepoint 440. Receiving data from a transaction layer to transmit across a channel of acommunication medium 410 may comprise receiving packetized data from a packet-based transaction layer protocol. In some embodiments, receiving data from a transaction layer to transmit across a channel of acommunication medium 410 may comprise instructions for queuing packeted data and attaching a packet sequence number to the packeted data. In alternate embodiments, receiving data from a transaction layer to transmit across a channel of acommunication medium 410 may comprise receiving a stream of data in intervals, wherein each interval may be a point during the data transmission available to insert error verification data. - Determining a loading of the channel based upon said receiving
data 420 may comprise instructions for determining the loading of the channel of the communication medium. For example, the communication medium may have selectable lanes for transmitting data from a source device to a target device and determining a loading of the channel based upon said receivingdata 420 may determine the loading based upon the number channels available to transmit data across the communication medium from the source to the target device. Determining a loading of the channel based upon said receivingdata 420 may also comprise instructions for monitoring the amount of data in a data transmission queue. Monitoring the amount of data in a data transmission queue may comprise instructions for generating a signal to represent a backlog of data in the data transmission queue. - Determining a point during a data transmission to transmit error verification data based upon the
loading 430 may comprise instructions for determining a frequency to transmit error verification data based upon the loading of a link between a source device and a target device. The instructions for determining the frequency may comprise instructions for determining the frequency based upon the current backlog of data in the data transmission queue and instructions to dynamically modify the frequency as the backlog of data changes. In some embodiments, determining a point during a data transmission to transmit error verification data based upon theloading 430 may comprise instructions for determining a target number of data units to transmit between transmission of error verification data. In many of these embodiments, instructions for determining a target number of data units to transmit between transmissions of error verification data may comprise instructions for determining the target number of data units based upon heuristically-chosen targets. Determining the target number of data units based upon heuristically-chosen targets may comprise instructions for determining a target number of data units from a formula or algorithm, or data correlating target numbers with loading or levels of loading of the channels. - Transmitting the error verification data substantially at the
point 440 may comprise instructions for transmitting error verification data, such as a checksum or an idle symbol, to facilitate verification of the data transmission by a link layer at the target device. Transmitting the error verification data substantially at thepoint 440 may also comprise instructions for transmitting error verification at an interval in the data stream available to transmit error verification data or at, or near, an end of a packet, such as the front end of a packet or the back end of a packet In further embodiments, transmitting the error verification data substantially at thepoint 440 may comprise transmitting error verification data substantially at a frequency selected for transmitting error verification data based upon the loading of the communication medium, such as the channel(s), or link.
Claims (30)
1. An apparatus, comprising:
a queue to receive data from a transaction layer to transmit across a channel of a communication medium;
load monitor circuitry coupled with said queue to determine a loading of the channel;
logic circuitry coupled with said load monitor circuitry to determine a point during a data transmission to transmit error verification data based upon the loading; and
verification circuitry coupled with said logic circuitry, to transmit the error verification data near the point.
2. The apparatus of claim 1 , further comprising physical layer circuitry coupled with the data transmission queue, to transmit data across the communication medium.
3. The apparatus of claim 1 , wherein said queue comprises a first-in, first-out queue.
4. The apparatus of claim 3 , wherein said queue comprises a random-access data storage queue.
5. The apparatus of claim 1 , wherein said load monitor circuitry comprises queue fullness circuitry to monitor an amount of data in said queue.
6. The apparatus of claim 5 , wherein the queue fullness circuitry comprises a counter coupled with said verification circuitry, to count data units received by said queue.
7. The apparatus of claim 1 , wherein said logic circuitry comprises:
a counter coupled with said queue to count data units to transmit;
a multiplexer to select a target number of data units; and
a comparator coupled with the counter to compare the count of unprotected data units against the target number of data units to be selected by the multiplexer.
8. The apparatus of claim 1 , wherein said logic circuitry comprises circuitry to select the point during the data transmission based upon a heuristically-chosen target.
9. The apparatus of claim 1 , wherein said logic circuitry comprises circuitry to determine a number of unprotected data units to transmit between transmissions of error verification data.
10. The apparatus of claim 1 , wherein said verification circuitry comprises circuitry to generate a checksum.
11. The apparatus of claim 10 , wherein said verification circuitry comprises circuitry to transmit the checksum.
12. The apparatus of claim 1 , wherein said verification circuitry comprises circuitry to monitor a running disparity of the data transmission.
13. The apparatus of claim 12 , wherein said verification circuitry comprises circuitry to transmit a symbol to cause a transition in the running disparity of the data transmission.
14. A method, comprising:
receiving data from a transaction layer to transmit across a channel of a communication medium;
determining a loading of the channel based upon said receiving data;
determining a point during a data transmission to transmit error verification data based upon the loading; and
transmitting the error verification data substantially at the point.
15. The method of claim 14 , wherein said receiving comprises receiving packetized data.
16. The method of claim 14 , wherein said determining a loading comprises monitoring an amount of data in a data transmission queue.
17. The method of claim 14 , wherein said determining a point comprises determining a target number of unprotected data units to transmit before said transmitting error verification data.
18. The method of claim 14 , wherein said determining a point comprises determining a target location in the data transmission based upon a heuristically-chosen target.
19. The method of claim 14 , wherein said transmitting the error verification data comprises:
counting a number of unprotected data units transmitted; and
comparing the number of data units transmitted against a target number of unprotected data units.
20. The method of claim 14 , wherein said transmitting the error verification data comprises selecting a symbol to cause a transition in a running disparity.
21. The method of claim 14 , wherein said transmitting the error verification data comprises generating a checksum.
22. A system, comprising:
a memory device;
a memory controller coupled with said memory device to provide access to memory contents of said memory device; and
an input-output controller coupled with said memory controller to access the memory contents, comprising
a queue to receive data from a transaction layer to transmit across a channel of a communication medium;
load monitor circuitry coupled with said queue to determine a loading of the channel;
logic circuitry coupled with said load monitor circuitry to determine a point during a data transmission to transmit the error verification data based upon the loading; and
verification circuitry coupled with the logic circuitry, to transmit the error verification data near the point.
23. The system of claim 21 , further comprising a processor coupled with said input-output controller to communicate with an agent coupled with the communication medium.
24. The system of claim 21 , wherein verification circuitry comprises circuitry to transmit a symbol to cause a transition in a running disparity of the data transmission.
25. A system, comprising:
a first input-output device to initiate a request for data via a communication medium;
a second input-output device coupled with said first input-output device to respond to the request with the data, comprising
a queue to store data from transaction layer circuitry to transmit across a channel of a communication medium;
load monitor circuitry coupled with said queue to determine a loading of the channel;
logic circuitry coupled with said load monitor circuitry to determine a point during a data transmission to transmit error verification data based upon the loading; and
verification circuitry coupled with the logic circuitry, to transmit error verification data near the point; and
a processor coupled with said second input-output device to respond to the request for data.
26. The system of claim 25 , wherein said second input-output device further comprises a switch to couple a third input-output device with said processor.
27. The system of claim 25 , wherein said first input-output device comprises a switch to couple a fourth input-output device with said processor.
28. A machine-readable medium containing instructions, which when executed by a machine, cause said machine to perform operations, comprising:
receiving data from a transaction layer to transmit across a channel of a communication medium;
determining a loading of the channel based upon said receiving data;
determining a point during a data transmission to transmit error verification data based upon the loading; and
transmitting the error verification data substantially at the point.
29. The machine-readable medium of claim 28 , wherein said transmitting the error verification data comprises selecting a symbol to cause a transition in a running disparity.
30. The machine-readable medium of claim 28 , wherein said transmitting the error verification data comprises generating a checksum.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/132,615 US20050259579A1 (en) | 2001-10-31 | 2005-05-18 | Bounding data transmission latency based upon link loading and arrangement |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/999,584 US6918060B2 (en) | 2001-10-31 | 2001-10-31 | Bounding data transmission latency based upon link loading and arrangement |
US11/132,615 US20050259579A1 (en) | 2001-10-31 | 2005-05-18 | Bounding data transmission latency based upon link loading and arrangement |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/999,584 Continuation US6918060B2 (en) | 2001-10-31 | 2001-10-31 | Bounding data transmission latency based upon link loading and arrangement |
Publications (1)
Publication Number | Publication Date |
---|---|
US20050259579A1 true US20050259579A1 (en) | 2005-11-24 |
Family
ID=25546496
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/999,584 Expired - Fee Related US6918060B2 (en) | 2001-10-31 | 2001-10-31 | Bounding data transmission latency based upon link loading and arrangement |
US11/132,615 Abandoned US20050259579A1 (en) | 2001-10-31 | 2005-05-18 | Bounding data transmission latency based upon link loading and arrangement |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/999,584 Expired - Fee Related US6918060B2 (en) | 2001-10-31 | 2001-10-31 | Bounding data transmission latency based upon link loading and arrangement |
Country Status (1)
Country | Link |
---|---|
US (2) | US6918060B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030225796A1 (en) * | 2002-05-31 | 2003-12-04 | Hitachi, Ltd. | Method and apparatus for peer-to-peer file sharing |
US20050172232A1 (en) * | 2002-03-28 | 2005-08-04 | Wiseman Richard M. | Synchronisation in multi-modal interfaces |
US20100115140A1 (en) * | 2008-10-30 | 2010-05-06 | Micron Technology, Inc. | Encoded addressing within control code for bus communication |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6880111B2 (en) * | 2001-10-31 | 2005-04-12 | Intel Corporation | Bounding data transmission latency based upon a data transmission event and arrangement |
US6918001B2 (en) * | 2002-01-02 | 2005-07-12 | Intel Corporation | Point-to-point busing and arrangement |
US7617333B2 (en) | 2003-01-21 | 2009-11-10 | Nextio Inc. | Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture |
US7103064B2 (en) * | 2003-01-21 | 2006-09-05 | Nextio Inc. | Method and apparatus for shared I/O in a load/store fabric |
US7953074B2 (en) * | 2003-01-21 | 2011-05-31 | Emulex Design And Manufacturing Corporation | Apparatus and method for port polarity initialization in a shared I/O device |
US7046668B2 (en) * | 2003-01-21 | 2006-05-16 | Pettey Christopher J | Method and apparatus for shared I/O in a load/store fabric |
US7836211B2 (en) * | 2003-01-21 | 2010-11-16 | Emulex Design And Manufacturing Corporation | Shared input/output load-store architecture |
US8346884B2 (en) | 2003-01-21 | 2013-01-01 | Nextio Inc. | Method and apparatus for a shared I/O network interface controller |
US8102843B2 (en) * | 2003-01-21 | 2012-01-24 | Emulex Design And Manufacturing Corporation | Switching apparatus and method for providing shared I/O within a load-store fabric |
US8032659B2 (en) * | 2003-01-21 | 2011-10-04 | Nextio Inc. | Method and apparatus for a shared I/O network interface controller |
US7502370B2 (en) * | 2003-01-21 | 2009-03-10 | Nextio Inc. | Network controller for obtaining a plurality of network port identifiers in response to load-store transactions from a corresponding plurality of operating system domains within a load-store architecture |
US7698483B2 (en) * | 2003-01-21 | 2010-04-13 | Nextio, Inc. | Switching apparatus and method for link initialization in a shared I/O environment |
US7917658B2 (en) * | 2003-01-21 | 2011-03-29 | Emulex Design And Manufacturing Corporation | Switching apparatus and method for link initialization in a shared I/O environment |
US7664909B2 (en) * | 2003-04-18 | 2010-02-16 | Nextio, Inc. | Method and apparatus for a shared I/O serial ATA controller |
EP2372556A4 (en) * | 2008-12-01 | 2012-07-11 | Fujitsu Ltd | Control circuit, information processing apparatus, and method for controlling information processing apparatus |
US8397138B2 (en) * | 2009-12-08 | 2013-03-12 | At & T Intellectual Property I, Lp | Method and system for network latency virtualization in a cloud transport environment |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5200962A (en) * | 1988-11-03 | 1993-04-06 | Racal-Datacom, Inc. | Data compression with error correction |
US6009488A (en) * | 1997-11-07 | 1999-12-28 | Microlinc, Llc | Computer having packet-based interconnect channel |
US20010036227A1 (en) * | 2000-04-26 | 2001-11-01 | Syuji Matsuo | Communication control circuit |
US20030043763A1 (en) * | 1997-07-29 | 2003-03-06 | Paul D Grayson | Wireless networked message routing |
US20030072384A1 (en) * | 2001-10-12 | 2003-04-17 | Tao Chen | Method and system for reduction of decoding complexity in a communication system |
US6598200B1 (en) * | 2000-06-02 | 2003-07-22 | Nortel Networks Limited | Method and apparatus for frequency domain data frame transmission |
US6640312B1 (en) * | 2000-08-01 | 2003-10-28 | National Instruments Corporation | System and method for handling device retry requests on a communication medium |
US6643815B1 (en) * | 2000-03-30 | 2003-11-04 | International Business Machines Corporation | Data compression over communications links which are exposed to occasional errors |
US6654924B1 (en) * | 2000-09-29 | 2003-11-25 | International Business Machines Corporation | System and method for error correction of digitized phase signals from MR/GMR head readback waveforms |
US20040015765A1 (en) * | 2000-12-06 | 2004-01-22 | Motorola, Inc. | Apparatus and method for providing optimal adaptive forward error correction in data communications |
US6732301B1 (en) * | 2000-03-06 | 2004-05-04 | Hewlett-Packard Development Company, L.P. | Serial bus diagnostic port of a digital system |
US6912228B1 (en) * | 2000-04-14 | 2005-06-28 | Telefonaktiebolaget L M Ericsson (Publ) | Power control in a radio data communication system adapted using transmission load |
US6952399B1 (en) * | 2000-10-12 | 2005-10-04 | Sprint Communications Company L.P. | Method and apparatus for synchronizing the coding and decoding of information in an integrated services hub |
US7054269B1 (en) * | 1996-10-01 | 2006-05-30 | Alcatel | Congestion control and traffic management system for packet-based networks |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758053A (en) * | 1992-07-22 | 1998-05-26 | Hitachi, Ltd. | Fault handling and recovery for system having plural processors |
EP0701346A3 (en) * | 1994-09-09 | 2000-04-12 | ABBPATENT GmbH | Method for consistent data transmission |
DE19836347C2 (en) * | 1998-08-11 | 2001-11-15 | Ericsson Telefon Ab L M | Fault-tolerant computer system |
US6330639B1 (en) * | 1999-06-29 | 2001-12-11 | Intel Corporation | Method and apparatus for dynamically changing the sizes of pools that control the power consumption levels of memory devices |
US6496894B1 (en) * | 1999-10-19 | 2002-12-17 | Intel Corporation | Method for enforcing device connection policies |
US6604186B1 (en) * | 1999-10-19 | 2003-08-05 | Intel Corporation | Method for dynamically adjusting memory system paging policy |
US6615308B1 (en) * | 1999-12-09 | 2003-09-02 | Intel Corporation | Method and apparatus for regulating write burst lengths |
US6467031B1 (en) * | 1999-12-10 | 2002-10-15 | Intel Corporation | Method and apparatus for reducing processor bus loading |
US6631476B1 (en) * | 1999-12-22 | 2003-10-07 | Rockwell Automation Technologies, Inc. | Safety network for industrial controller providing redundant connections on single media |
US6701469B1 (en) * | 1999-12-30 | 2004-03-02 | Intel Corporation | Detecting and handling bus errors in a computer system |
US6854069B2 (en) * | 2000-05-02 | 2005-02-08 | Sun Microsystems Inc. | Method and system for achieving high availability in a networked computer system |
US6650586B1 (en) * | 2000-06-28 | 2003-11-18 | Intel Corporation | Circuit and system for DRAM refresh with scoreboard methodology |
US6523092B1 (en) * | 2000-09-29 | 2003-02-18 | Intel Corporation | Cache line replacement policy enhancement to avoid memory page thrashing |
US20020069352A1 (en) * | 2000-12-01 | 2002-06-06 | Fanning Blaise B. | System and method for efficient BIOS initialization |
US6701459B2 (en) * | 2000-12-27 | 2004-03-02 | Egurkha Pte Ltd | Root-cause approach to problem diagnosis in data networks |
US6684311B2 (en) * | 2001-06-22 | 2004-01-27 | Intel Corporation | Method and mechanism for common scheduling in a RDRAM system |
US7152128B2 (en) | 2001-08-24 | 2006-12-19 | Intel Corporation | General input/output architecture, protocol and related methods to manage data integrity |
US6880111B2 (en) * | 2001-10-31 | 2005-04-12 | Intel Corporation | Bounding data transmission latency based upon a data transmission event and arrangement |
US6918001B2 (en) * | 2002-01-02 | 2005-07-12 | Intel Corporation | Point-to-point busing and arrangement |
-
2001
- 2001-10-31 US US09/999,584 patent/US6918060B2/en not_active Expired - Fee Related
-
2005
- 2005-05-18 US US11/132,615 patent/US20050259579A1/en not_active Abandoned
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5200962A (en) * | 1988-11-03 | 1993-04-06 | Racal-Datacom, Inc. | Data compression with error correction |
US7054269B1 (en) * | 1996-10-01 | 2006-05-30 | Alcatel | Congestion control and traffic management system for packet-based networks |
US20030043763A1 (en) * | 1997-07-29 | 2003-03-06 | Paul D Grayson | Wireless networked message routing |
US6009488A (en) * | 1997-11-07 | 1999-12-28 | Microlinc, Llc | Computer having packet-based interconnect channel |
US6732301B1 (en) * | 2000-03-06 | 2004-05-04 | Hewlett-Packard Development Company, L.P. | Serial bus diagnostic port of a digital system |
US6643815B1 (en) * | 2000-03-30 | 2003-11-04 | International Business Machines Corporation | Data compression over communications links which are exposed to occasional errors |
US6912228B1 (en) * | 2000-04-14 | 2005-06-28 | Telefonaktiebolaget L M Ericsson (Publ) | Power control in a radio data communication system adapted using transmission load |
US20010036227A1 (en) * | 2000-04-26 | 2001-11-01 | Syuji Matsuo | Communication control circuit |
US6598200B1 (en) * | 2000-06-02 | 2003-07-22 | Nortel Networks Limited | Method and apparatus for frequency domain data frame transmission |
US6640312B1 (en) * | 2000-08-01 | 2003-10-28 | National Instruments Corporation | System and method for handling device retry requests on a communication medium |
US6654924B1 (en) * | 2000-09-29 | 2003-11-25 | International Business Machines Corporation | System and method for error correction of digitized phase signals from MR/GMR head readback waveforms |
US6952399B1 (en) * | 2000-10-12 | 2005-10-04 | Sprint Communications Company L.P. | Method and apparatus for synchronizing the coding and decoding of information in an integrated services hub |
US20040015765A1 (en) * | 2000-12-06 | 2004-01-22 | Motorola, Inc. | Apparatus and method for providing optimal adaptive forward error correction in data communications |
US20030072384A1 (en) * | 2001-10-12 | 2003-04-17 | Tao Chen | Method and system for reduction of decoding complexity in a communication system |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172232A1 (en) * | 2002-03-28 | 2005-08-04 | Wiseman Richard M. | Synchronisation in multi-modal interfaces |
US20030225796A1 (en) * | 2002-05-31 | 2003-12-04 | Hitachi, Ltd. | Method and apparatus for peer-to-peer file sharing |
US7574488B2 (en) * | 2002-05-31 | 2009-08-11 | Hitachi, Ltd. | Method and apparatus for peer-to-peer file sharing |
US20100115140A1 (en) * | 2008-10-30 | 2010-05-06 | Micron Technology, Inc. | Encoded addressing within control code for bus communication |
Also Published As
Publication number | Publication date |
---|---|
US6918060B2 (en) | 2005-07-12 |
US20030081558A1 (en) | 2003-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050259579A1 (en) | Bounding data transmission latency based upon link loading and arrangement | |
KR100611268B1 (en) | An enhanced general input/output architecture and related methods for establishing virtual channels therein | |
US7583600B1 (en) | Schedule prediction for data link layer packets | |
EP1897333B1 (en) | Method for parallel data integrity checking of pci express devices | |
KR101298862B1 (en) | Method and apparatus for enabling id based streams over pci express | |
USRE44487E1 (en) | Command packet packing to mitigate CRC overhead | |
KR100715710B1 (en) | Data processing apparatus and flow control method | |
US7619984B2 (en) | Mechanism for error handling of corrupted repeating primitives during frame reception | |
US7840873B2 (en) | Partial CRC insertion in data packets for early forwarding | |
US9432288B2 (en) | System on chip link layer protocol | |
EP2317688A2 (en) | System and methods for implementing cyclic redundancy checks | |
US5553302A (en) | Serial I/O channel having independent and asynchronous facilities with sequence recognition, frame recognition, and frame receiving mechanism for receiving control and user defined data | |
US8166227B2 (en) | Apparatus for processing peripheral component interconnect express protocol | |
JPH06511338A (en) | Method and apparatus for parallel packet bus | |
US20080198743A1 (en) | Data flow control for simultaneous packet reception | |
US20080313240A1 (en) | Method for Creating Data Transfer Packets With Embedded Management Information | |
EP0195598A2 (en) | Universal protocol data receiver | |
EP1124362A2 (en) | Apparatus for processing TCP/IP by hardware, and operating method therefor | |
US6880111B2 (en) | Bounding data transmission latency based upon a data transmission event and arrangement | |
US20140149628A1 (en) | Super speed usb hub and traffic management method thereof | |
KR20040041644A (en) | Error forwarding in an enhanced general input/output architecture | |
CN110995625B (en) | Verification system and verification method of Ethernet interface chip | |
TW200529618A (en) | Method, system, and program for overrun identification | |
US7761608B2 (en) | Method and system for processing markers, data integrity fields and digests | |
US20130036243A1 (en) | Host-daughtercard configuration with double data rate bus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FANNING, BLAISE B.;REEL/FRAME:017228/0371 Effective date: 20020111 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |