A method and apparatus for detecting data strobe errors. A strobe error detection circuit has a strobe input and a counter coupled to the strobe input to count strobe pulses received. The circuit also has a comparator to determine if a strobe error has occurred based on the magnitude of the difference between a first count of strobe pulses and a second count of strobe pulses. In an embodiment, the first count is read from a memory location at a first time and the second count is read at a second time.
|
5. A strobe error detection circuit, the circuit comprising:
a strobe input; a counter having an input coupled to the strobe input; a buffer having an input coupled to an output of the counter; a subtractor having a first input coupled to an output of the buffer; a comparator having an input coupled to an output of the subtractor; and a error detection output coupled to an output of the comparator.
14. A method of detecting strobe errors, the method comprising:
maintaining a count of pulses sampled at a strobe input; determining a difference between a first count of strobe pulses and a second count of strobe pulses, wherein the first count of strobe pulses is a value that was read from a memory at a first time, wherein the second count of strobe pulses is a value that was read from the memory at a second time, and wherein the first time and the second time are determined based on a core clock of the node; and signaling that a strobe error has been detected when the difference determined is less than or greater than expected.
1. A strobe error detection circuit, the circuit comprising:
a strobe input; a counter coupled to the strobe input to count strobe pulses received; a comparator to determine if a strobe error has occurred based on the magnitude of the difference between a first count of strobe pulses and a second count of strobe pulses; a clock input, wherein the first count is a value that was stored in a memory location at a first time and the second count is a value that was stored in the memory location at a second time, wherein said first time and said second time are determined using the clock input, wherein said memory location is a location in a buffer, the buffer having a plurality of entries each to store a count of strobe pulses received, the buffer being coupled to and clocked by the strobe input; a memory element coupled to the clock input and coupled to the buffer to store a value output from the buffer, the memory element being clocked by the clock input; and a subtractor coupled to the memory element and to the buffer to determine a difference between the first count of strobe pulses and the second count of strobe pulses, the subtractor being clocked by the clock input.
2. The strobe error detection circuit of
3. The strobe error detection circuit of
4. The strobe error detection circuit of
6. The strobe error detection circuit of
8. The strobe error detection circuit of
9. The strobe error detection circuit of
11. The strobe error detection circuit of
12. The strobe error detection circuit of
13. The strobe error detection circuit of
15. The method of
|
Embodiments of the present invention relate to a method and apparatus for detecting strobe errors. In particular, the present invention relates to a method and apparatus for detecting errors in a strobe received from a sending agent.
Computer systems may contain multiple agents that work together to perform tasks. For example, a computer system may contain multiple processors that may share system resources (e.g., input devices or memory devices) and may perform parallel processing. In many systems, messages are sent between system agents over a bus. Such a bus may include, for example, data bits, clock bits, parity bits, and reference bits. A sending agent may send data over the bus to a receiving agent.
In some systems, the bus includes one or more strobe bits that are used to trigger the capture of data sent over the bus. For example, a sending agent may send a strobe signal over the bus along with the data sent. A receiving agent may receive the data and the strobe signal, and the receiving agent may use the strobe signal to capture the data sent. In this case, the bus may be referred to as "source-synchronous" because it uses a strobe signal from the sending agent (i.e., the source) as a clock.
Busses that interconnect system components are subject to errors. A bus error has occurred if the correct logical information is not transferred over the bus. Bus errors may be caused by factors such as, for example, device failures, device marginality, power supply noise, poor continuity, external radiation, cosmic rays, or other noise. A bus error may be referred to as a "glitch." Bus errors may occur in any of the information being transferred on the bus, such as the data bits, reference bits, and/or strobe bits. Examples of strobe errors include a missing strobe pulse, an extra strobe pulse, and a timing change in the strobe pulse (i.e., a "jittered" strobe).
A strobe error may cause a receiving agent to improperly capture the data that is being sent. For example, the receiving agent may miss the data or may capture the data twice. While methods such as error correcting codes or parity codes may be used to correct errors in the data bits being transferred over the bus, such methods may not be useful in correcting an error in a strobe signal that is transferred over the bus.
Embodiments of the present invention relate to a method and apparatus for detecting errors in a strobe received from a sending agent. Such a strobe may be used, for example, to clock the capture of data by a receiving agent. When the strobe is operating normally, pulses are received by the receiving agent at a regular frequency. In an embodiment of the present invention, a strobe error detection circuit counts the pulses received and determines if a strobe error has occurred by comparing recorded counts of strobe pulses. The strobe received may not be used to operate a synchronous circuit to check itself. As such it is a poor time reference to determine when counts should be compared. In an embodiment of the present invention, the times for sampling strobe pulse counts are determined based on a second clock signal. In a further embodiment, this second clock signal is the core clock for the receiving agent. In such a system, the strobe pulse represents a first time domain, and the core clock represents a second time domain.
First node 110 is coupled to second node 120 through bus 117. The term "coupled" encompasses a direct connection, an indirect connection, an indirect communication, etc. Bus 117 may be a simultaneous bi-directional bus that includes data bits 111, a strobe bit 112, and a strobe bit 113. In other embodiments, the strobe error detection circuit of the present invention can be used with a un-idirectional bus. Strobe bit 112 may be used to conduct strobe signals (i.e., strobe pulses) from first node 110 to second node 120, and strobe bit 113 may be used to conduct strobe signals from second node 120 to first node 110. That is, second node 120 may use the signal received on strobe bit 112 as a clock signal when capturing data sent from first node 110 to second node 120 over bus 117, and first node 110 may use strobe bit 113 as a clock signal when capturing data sent from second node 120 to first node 110 over bus 117. Third node 130 is coupled to second node 120 through a bus that includes data bits 131, strobe bit 132 and strobe bit 133, and fourth node 140 is coupled to second node 120 through a bus that includes data bits 141, strobe bit 142, and strobe bit 143. Strobe bit 132 may be used to conduct strobe signals from third node 130 to second node 120, strobe bit 133 may be used to conduct strobe signals from second node 120 to third node 130, strobe bit 142 may be used to conduct strobe signals from fourth node 140 to second node 120, and strobe bit 143 may be used to conduct strobe signals from fourth node 140 to second node 120.
System 100 also includes a system clock 150 which is coupled to first node 110, second node 120, third node 130, and fourth node 140. Each node in system 100 may use system clock 150 to generate a core clock for that node. The core clock for each node may be used by the node to clock operations performed within the node. The core clock is generally more reliable than the strobe. In an embodiment, the strobe is used to trigger the capture of data sent from another node, rather than use the core clock to trigger such capture, because the system clock may have been delayed by a propagation delay prior to reaching the receiving node.
First node 110 contains strobe error detection circuit 115 which is coupled to strobe bit 113 and may be used to detect errors for strobe bit 113. Second node 120 contains three strobe error detection circuits 125 which may be used to detect errors for strobes bits 112, bit 132, and bit 142. Third node 130 contains strobe error detection circuit 135 which is coupled to strobe bit 133 and may be used to detect errors for strobe bit 133. Fourth node 140 contains strobe error detection circuit 145 which is coupled to strobe bit 143 and may be used to detect errors for strobe bit 143.
In an embodiment, counter 230 is coupled to a buffer 240 through an inter-connect that is capable of transferring the count in counter 230 to buffer 240 as an input. For example, if counter 230 is a 3-bit counter, then the 3-bit count maintained by counter 230 is transferred to buffer 240. Buffer 240 may contain multiple entries 241 to 244, each of which may contain a count of pulses. Buffer 240 may be coupled to strobe input 210 and may use strobe input 210 as a clock signal. In an embodiment, buffer 240 contains a pointer that points to an entry that contains the data most recently received and a pointer that points to the entry that contains the data least recently received. In an embodiment, buffer 240 is a deskew buffer. A deskew buffer is a buffer used to communicate between domains which have the same clock source (i.e., frequency) but different phase relationships.
In an embodiment, buffer 240 is coupled to a memory element 270 and a subtractor 260 such that memory element 270 and subtractor 260 are capable of receiving a count that was stored in an entry of buffer 240 as inputs. In an embodiment, the pulse count that was least recently received by buffer 240 is output to and stored by subtractor 260 and memory element 270. In an embodiment, memory element 270 is a flip-flop. Memory element 270 may be coupled to subtractor 260 as a second input to subtractor 260. Strobe error detection circuit 200 may also have a core clock input 250 which receives a clock signal that is used as the core clock for the node in which strobe error detection circuit 200 resides. Core clock input 250 may be coupled to memory element 270 and subtractor 260 to provide clocking inputs for the memory element 270 and subtractor 260. An output of subtractor 260 may be coupled to an input of a comparator 280. Comparator 280 may also be coupled to core clock input 250 and may use the core clock input 250 as a clocking signal. In addition, an output of comparator 280 may be coupled to a error detection output 290, which may be an output of strobe error detection circuit 200.
An example of the operation of circuit 200 will now be described. Strobe pulses are received at strobe input 210 and are delayed by delay element 215. A count maintained by counter 230 is incremented each time a new delayed pulse is received, and this new count is stored in an entry of buffer 240. The core clock 250 is used to output the count stored in buffer 240. Address pointers are reset on the write and read side of buffer 240 so that locations in buffer 240 are always reset after they are written.
As pulses are being received at the strobe input, core clock input 250 is also receiving core clock pulses that are used to determine time periods for sampling the counts in output from buffer 240. For example, at a first time period (t=1), memory element 270 receives a core clock signal from core clock input 250 and reads and stores a first pulse count that is output from buffer 240. This count will be the count that was least recently received by buffer 240 (i.e., the "first out"). At a second time (t=2), memory element 270 receives a core clock signal from core clock input 250 and reads and stores a second pulse count that is output from buffer 240. Although the second pulse count is, at time t=2, the pulse count least recently received by buffer 240, the second pulse count may be the same as the first pulse count if the first pulse count is still stored in buffer 240 at t=2. Also at t=2, subtractor 260 receives a core clock signal from core clock input 250 and determines the difference between the value stored in memory element 270 (the first pulse count) and the value output from buffer 240 (the second pulse count) and produces a result. Thus, subtractor 260 determines the difference between a count of strobe pulses which was read from buffer 240 at a first time and a count of strobe pulses which was read from buffer 240 at a second time.
Continuing with this example, when comparator 280 receives a core clock input pulse, comparator 280 compares the output of subtractor 260 to an expected value. For example, comparator 280 may compare the result that is output from subtractor 260 to determine whether it is equal to one (1). In other embodiments, a different expected subtractor output may be used. If subtractor 260 has not output the expected result, then comparator 280 may output a signal to error detection output 290 which signal indicates that a strobe error has been detected. Using the example above, if the result output by subtractor 260 is not equal to one, then comparator 260 outputs a result that indicates that a strobe error has been detected. If subtractor 260 has output the expected result, then in one embodiment comparator 280 may output a signal to indicate that an error has not been detected. As would be appreciated by a person of ordinary skill in the art, the first time and second time are based on the core clock input 250. In this sense, memory element 270 and subtractor 260 operate in the time domain of the node in which strobe error detection circuit 200 resides, while the components in the node that use the strobe input as a clock signal operate in the time domain of the node that sent the strobe signal. The operation of strobe error detection circuit 200 is further illustrated by the examples discussed below with reference to
The example shown in
At a time after t=0, a strobe pulse is received. At this time, that input at received strobe 310 rises to a high state. The strobe input to the buffer causes the value at the counter 330 to be written into an entry of the buffer (here, first buffer entry 341) and causes the values in all of the other entries to be shifted. In an embodiment, the order of the buffer entries is maintained by pointers, and rather than actually shift values from one entry to another, the pointers are simply moved. At this same time, the delayed strobe will have gone into a low state due to the falling of received strobe 310 that had occurred prior to t=0.
The next event shown in
At a latter time which is still prior to t=1, received strobe 310 falls to the low state and delayed received strobe 320 rises to the high state. At this time, counter 330 is incremented, and in this example wraps around to the value of 0. At a point after t=1, the received strobe 310 falls to the low state, and this pattern repeats itself. Because in the example shown in
At a time after t=3, the delayed received strobe 420 falls to the low state. Because of the missing pulse, the received strobe 410 does not rise to the high state until after t=4. Because the received strobe 410 does not rise to the high state until after t=4, the counter is not incremented and the buffer does not latch the value from the counter 430 until after t=4. The buffer is not clocked by the received strobe input 410 until after time t=4. The values in the buffer entries remain the same until a time after t=4, and the value output from the buffer remains at 6 until a time after time t=4.
At a time after t=3, the core clock 450 rises to the high state, which causes the subtractor to determine the difference between the output of the buffer (entry 444) and the output of memory element 470. Because the buffer output value of 6 was stored in the memory element at a time before time t=3, and the buffer output is still at the value of 6 when the core clock rises at a time after time t=3, then the subtractor output 460 is equal to zero (0). The comparator determines that the subtractor output was different that expected (i.e., was not equal to 1), and causes error detected output 490 to indicate that a error had been detected. Thus, the missing pulse 415 has been detected. Since there are no other errors in received strobe 410, from time t=4 to t=12 the circuit performs as described with reference to FIG. 3.
According to the method shown in
The present invention provides a method and apparatus for detecting strobe errors by counting strobe pulses and determining if the count has increased as expected. In an embodiment, a core clock signal is used to determine times when the counts are compared. In an embodiment, the strobe input to a node defines the sender's clock domain, and the core clock of the node defines the receiver's clock domain. In an embodiment, the output of a strobe error detected circuit may be recorded for later use in analyzing the performance of the circuit. In an embodiment, the output of the circuit may be used to request that the sending node resend data that was sent using the strobe. In an embodiment, the strobe error detection circuit is part of a chipset.
In an embodiment, when the circuit is initialized, the output of the circuit is masked until the strobes are stable. In a further embodiment, the output is masked until the buffer fills with valid values.
The apparatus and method according to the present invention have been described with respect to several exemplary embodiments. It can be understood, however, that there are many other variations of the above described embodiments which will be apparent to those skilled in the art. It is understood that these modifications are within the teaching of the present invention, which is to be limited only by the claims appended hereto.
Dabral, Sanjay, Self, Keith, Sandhinti, Michael
Patent | Priority | Assignee | Title |
10120590, | Oct 15 2013 | Infineon Technologies LLC | Method for providing read data flow control or error reporting using a read data strobe |
11010062, | Oct 15 2013 | Infineon Technologies LLC | Method for providing read data flow control or error reporting using a read data strobe |
7573957, | Sep 23 2005 | Teradyne, Inc | Strobe technique for recovering a clock in a digital signal |
7574632, | Sep 23 2005 | Teradyne, Inc | Strobe technique for time stamping a digital signal |
7856578, | Sep 23 2005 | Teradyne, Inc | Strobe technique for test of digital signal timing |
9454421, | Oct 15 2013 | Infineon Technologies LLC | Method for providing read data flow control or error reporting using a read data strobe |
Patent | Priority | Assignee | Title |
4320512, | Jun 23 1980 | The Bendix Corporation | Monitored digital system |
4596014, | Feb 21 1984 | HF CONTROLS, LLP; HF CONTROLS, LP | I/O rack addressing error detection for process control |
4931922, | Oct 01 1981 | Stratus Computer, Inc. | Method and apparatus for monitoring peripheral device communications |
4939643, | Oct 01 1981 | Stratus Computer, Inc. | Fault tolerant digital data processor with improved bus protocol |
5610746, | Sep 29 1995 | Programmable switched delay encoder | |
5894481, | Sep 11 1996 | McData Corporation | Fiber channel switch employing distributed queuing |
5905391, | Jul 14 1997 | Intel Corporation | Master-slave delay locked loop for accurate delay or non-periodic signals |
6016066, | Mar 19 1998 | Intel Corporation | Method and apparatus for glitch protection for input buffers in a source-synchronous environment |
6118776, | Feb 18 1997 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Methods and apparatus for fiber channel interconnection of private loop devices |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 27 2000 | Intel Corporation | (assignment on the face of the patent) | / | |||
Mar 20 2001 | DABRAL, SANJAY | Intel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 011740 | /0839 | |
Mar 28 2001 | SANDHINTI, MICHAEL | Intel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 011740 | /0839 | |
Apr 15 2001 | SELF, KEITH | Intel Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 011740 | /0839 | |
Feb 04 2016 | Intel Corporation | BEIJING XIAOMI MOBILE SOFTWARE CO , LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 037733 | /0440 |
Date | Maintenance Fee Events |
May 24 2004 | ASPN: Payor Number Assigned. |
Sep 24 2007 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 21 2011 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Nov 06 2015 | REM: Maintenance Fee Reminder Mailed. |
Mar 29 2016 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Mar 29 2016 | M1556: 11.5 yr surcharge- late pmt w/in 6 mo, Large Entity. |
Date | Maintenance Schedule |
Mar 30 2007 | 4 years fee payment window open |
Sep 30 2007 | 6 months grace period start (w surcharge) |
Mar 30 2008 | patent expiry (for year 4) |
Mar 30 2010 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 30 2011 | 8 years fee payment window open |
Sep 30 2011 | 6 months grace period start (w surcharge) |
Mar 30 2012 | patent expiry (for year 8) |
Mar 30 2014 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 30 2015 | 12 years fee payment window open |
Sep 30 2015 | 6 months grace period start (w surcharge) |
Mar 30 2016 | patent expiry (for year 12) |
Mar 30 2018 | 2 years to revive unintentionally abandoned end. (for year 12) |