Embodiments of the present invention provide a method for handling errors in data servers. Generally, embodiments of the invention enable a data packet that is marked as erroneous to be handled so that it is not committed to permanent storage. One or more components are configured to recognize a poisoned data indicator, and to respond to the indicator by taking programmed actions to delete the data, to stop the data from being transmitted, to notify upstream components, and to purge related data from downstream components.
|
16. A serial advanced technology attachment (sata) controller, comprising:
a first interface for receiving data from an upstream device;
a second interface for transmitting data to an sata drive; and
error-handling logic configured to independently detect an error, without receiving any feedback from the sata drive, in data being transferred from the upstream device, report the data error to the upstream device, and halt transmission of the data to the sata drive.
1. A method for handling erroneous data in a computer system, comprising:
detecting an error in data by a first component in the computer system positioned in a data path between a source of the data and a target for the data, wherein the first component is able to detect the error without receiving any feedback from the target;
reporting the error to components upstream in the data path by setting one or more bits indicating the error in the data; and
halting transmission of the data to downstream components.
11. A computer system configured to handle erroneous data, the computer system comprising:
at least one component that is a source of data;
at least one component that is a destination for data;
at least one bus that transmits the data from the source components to the destination components; and
at least one data handling component incorporating error-handling logic configured to detect an error in data being transferred from a source of data to a destination for data, wherein the first component is able to the error without receiving any feedback from the target, report the data error to one or more components upstream between the data handling component and the source of data, and halt transmission of the data to one or more downstream components between the data handling component and the destination for data.
2. The method of
the error is detected in a portion of data that is part of a data transaction including other portions already sent downstream; and
the method further comprises sending a translated error message to downstream components to abort handling the transaction.
3. The method of
the error is detected in a portion of data that is buffered in the first component; and
the method further comprises deleting the buffered portion of data in which the error is detected.
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
10. The method of
12. The computer system of
14. The computer system of
15. The computer system of
the data handling component detects the error in a portion of data that is part of a data transaction including other portions already sent downstream; and
the data handling component sends a translated error message downstream components to abort handling the transaction.
17. The controller of
the data handling component detects the error in a portion of data that is part of a data transaction including other portions already sent downstream; and
the data handling component sends a translated error message to downstream components to abort handling the transaction.
18. The controller of
the error is detected in a portion of data that is buffered in the first component; and
the error-handling logic is further configured to delete the buffered portion of data in which the error is detected.
19. The controller of
|
1. Field of the Invention
Embodiments of the present invention generally relate to the handling of data errors in computer systems.
2. Description of the Related Art
Data errors in computers can occur when a binary unit of information (i.e., bit) becomes unintentionally altered, causing a 1 to be read as 0, or vice-versa. The cause of the data error is typically some physical event that is not part of the intended function of the computer. Some examples of such events are: a cosmic ray striking a Random Access Memory (RAM) memory cell; a portion of a disk drive platter spontaneously flipping magnetization; or noise from background radiation degrading the signal in a network cable.
In the prior art, techniques have been devised to detect and correct data errors within specific computer components. For example, the use of error correction code (ECC) in RAM memory allows some errors to be corrected within the RAM memory itself. However, some types of errors cannot be corrected within the component in which they occur. In some cases, data is determined to be erroneous but cannot be corrected, and is then transferred to another component. It is possible that error may be not be detected by the downstream component. If the erroneous data is stored without notification to the user, it can appear to be normal data, and can cause further errors as it is later used by the system. This problem, known as silent data corruption, can lead to computer downtime and loss of critical data.
Some protocols in the art (e.g., HyperTransport, PCI Express) include data indicators to allow the erroneous data to be marked as “poisoned” in order to alert any downstream computer components that receive the data. However, even if the erroneous data is marked as poisoned, it is possible that the downstream components that receive the data are not configured to recognize the poisoned data indicator, or are not capable of correcting the error. If so, the result can be silent data corruption. Thus, there is a need in the art for a method of handling poisoned data so that data errors can be corrected in the most effective manner, and not lead to silent data corruption.
The present invention generally provides techniques for handling erroneous data.
One embodiment provides a method for handling erroneous data in a computer system. The method generally includes detecting in error in data by a first component in the system positioned in a data path between a source of the data and a target for the data, reporting the error to components upstream in the data path by setting one or more bits indicating the erroneous data, and halting transmission of data to downstream components.
Another embodiment provides a computer system configured to handle erroneous data. The computer system generally includes at least one component that is a source of data, at least one component that is a destination for data, at least one bus that transmits the data from the source components to the destination components, and at least one data handling component. The at least one data handling component incorporates error-handling logic configured to detect an error in data being transferred from a source of data to a destination for data, report the data error to one or more components upstream between the data handling component and the source of data, and halt transmission of the data to one or more downstream components between the data handling component and the destination for data.
Another embodiment provides a Serial Advanced Technology Attachment (SATA) controller. The controller generally includes a first interface for receiving data from an upstream device, a second interface for transmitting data to an SATA drive, a downstream device, and error-handling logic. The error-handling logic is generally configured to detect an error in data being transferred from the upstream device, report the data error to the upstream device, and halt transmission of the data to the SATA drive.
So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
Embodiments of the present invention provide methods for handling erroneous data so that the data errors can be corrected in the most effective manner, and not lead to silent data corruption. In one embodiment, a computer component, for example a Serial Advanced Technology Attachment (SATA) controller, is configured to handle a data frame according to a poisoned data indicator of the data protocols being used (e.g., HyperTransport, PCI Express). In this example, the embodiment of the invention is part of a typical computer system using the SATA storage protocol. Of course, a person of skill in the art will recognize that other embodiments of the invention could include, without limitation, a network system using the Ethernet protocol, a computer system using the Universal Serial Bus (USB) protocol, or other systems and protocol known in the art. Also, the computer component configured to handle erroneous data could be any component in the path of the data, including the disk drive itself.
As shown, CPU 120 comprises error recognition circuit 122. Error recognition circuit 122 evaluates incoming data according to techniques known in the art to detect if a data error has occurred. Some examples of error detection techniques known in the art are parity bits, checksums, and repetition schemes. The present invention is not limited to any particular error detection technique. In this example, SATA controller 130 comprises error handling circuit 132 and FIFO buffer 135. Error handling circuit 132 performs programmed functions to enable graceful recovery from a data error, according to one embodiment of the present invention. The function of Error handling circuit 132 is described below. As illustrated, SATA drive 140 stores data frames A, B, C 145. In this example, data frames A, B, C 145 and data frame D 115 are portions of a larger data file that is being transferred to SATA drive 140.
Method 300 begins at step 310, where a data error is detected. Step 310 of method 300 is illustrated by
In
The fourth action of error handling circuit 232, corresponding to step 350 of method 300, is to translate the positive poisoned data indicator 237 to a cyclic redundancy check (CRC) error message 297, and transmit it downstream to SATA drive 240. When CRC error message 297 is received by SATA drive 240, the data frames A, B, C 245, all part of the same transaction as data frame D 235, are erased from SATA drive 240. The erasure of all frames that were part of the transaction that included the poisoned data frame D 235 prevents the writing of corrupted file data to SATA drive 240.
In contrast, if embodiments of the present invention were not included in computer system 200, the poisoned data could result in computer downtime and in loss of data. That is, if SATA controller 230 did not include an error handling circuit 232 to handle poisoned data indicator 137, the data transmission to SATA drive 240 could have taken place without interruption. Thus, poisoned data frame D 236 could have been written to nonvolatile storage in SATA drive 240 without marking the data as poisoned and without notification to the user. Also, if error handling circuit 232 had not sent CRC error message 297 downstream to SATA drive 240, data frames A, B, C 245 could have been left on SATA drive 240. Since the exemplary transaction required data frames A, B, C and D, the resulting file on SATA drive 240 would be incomplete and probably unusable. Finally, if error handling circuit 232 had not sent interrupt message 295 upstream to CPU 220, there may not be any mechanism in place to alert a user of the problem. In each of these three situations, the outcome is silent data corruption. Therefore, the embodiment of the invention illustrated in
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
Smith, Michael John Sebastian, Overby, Mark A., Currid, Andrew
Patent | Priority | Assignee | Title |
10157092, | Apr 27 2015 | Oracle International Corporation | Automatic targeted system suspension based upon downstream system failure detection |
10355952, | Apr 27 2015 | Oracle International Corporation | Automatic upstream service resumption after downstream system failure |
11023304, | Oct 28 2019 | Capital One Services, LLC | System and method for data error notification in interconnected data production systems |
11175978, | Jul 31 2019 | International Business Machines Corporation | Detection of an error generated within an electronic device |
11416331, | Dec 09 2020 | Micron Technology, Inc. | Modified checksum using a poison data pattern |
11714704, | Dec 09 2020 | Micron Technology, Inc. | Modified checksum using a poison data pattern |
11720433, | Sep 07 2019 | Capital One Services, LLC | System and method for data error notification in interconnected data production systems |
8996914, | Apr 23 2012 | INFOR US , LLC | Data quality in a cloud based shipping transaction integration system |
Patent | Priority | Assignee | Title |
3872444, | |||
4453213, | Jul 30 1981 | Harris Corporation | Error reporting scheme |
6505310, | Sep 17 1999 | RPX CLEARINGHOUSE LLC | Connection integrity monitor for digital selection circuits |
6601210, | Sep 08 1999 | MELLANOX TECHNOLOGIES TLV LTD | Data integrity verification in a switching network |
6647016, | Dec 11 1998 | Canon Kabushiki Kaisha | Communication control method, communication control apparatus, and storage medium |
7184399, | Dec 28 2001 | Intel Corporation | Method for handling completion packets with a non-successful completion status |
7197662, | Oct 31 2002 | MOBILE NETWORKING SOLUTIONS, LLC | Methods and systems for a storage system |
7360033, | Dec 19 2002 | Intel Corporation | Hierarchical virtual model of a cache hierarchy in a multiprocessor system |
7389396, | Apr 25 2005 | Network Appliance, Inc. | Bounding I/O service time |
7406652, | Apr 30 2004 | MEDIATEK INC. | Method and circuit for reducing SATA transmission data errors by adjusting the period of sending ALIGN primitives |
20070047436, | |||
20070083725, | |||
20070133578, | |||
20070208810, | |||
20080126852, | |||
20080163007, | |||
20080288825, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 13 2006 | Nvidia Corporation | (assignment on the face of the patent) | / | |||
Jan 03 2007 | SMITH, MICHAEL JOHN SEBASTIAN | Nvidia Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 018758 | /0815 | |
Jan 03 2007 | SMITH, MICHAEL JOHN SEBASTIAN | Nvidia Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 021308 FRAME 0359 ASSIGNOR S HEREBY CONFIRMS THE NVIDIA CORPORATION | 025791 | /0872 | |
Jan 11 2007 | CURRID, ANDREW | Nvidia Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 021308 FRAME 0359 ASSIGNOR S HEREBY CONFIRMS THE NVIDIA CORPORATION | 025791 | /0872 | |
Jan 11 2007 | CURRID, ANDREW | Nvidia Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 018758 | /0815 | |
Jan 12 2007 | OVERBY, MARK A | Nvidia Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 021308 FRAME 0359 ASSIGNOR S HEREBY CONFIRMS THE NVIDIA CORPORATION | 025791 | /0872 | |
Jan 12 2007 | OVERBY, MARK A | Nvidia Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 018758 | /0815 | |
Jul 22 2008 | WILSON, STEPHEN S , MR | RACING OPTICS, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021308 | /0359 | |
Jul 22 2008 | WILSON, BART, MR | RACING OPTICS, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021308 | /0359 | |
Jul 23 2008 | WILSON, SETH, MR | RACING OPTICS, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021308 | /0359 |
Date | Maintenance Fee Events |
Sep 10 2014 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 21 2018 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Sep 20 2022 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 12 2014 | 4 years fee payment window open |
Oct 12 2014 | 6 months grace period start (w surcharge) |
Apr 12 2015 | patent expiry (for year 4) |
Apr 12 2017 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 12 2018 | 8 years fee payment window open |
Oct 12 2018 | 6 months grace period start (w surcharge) |
Apr 12 2019 | patent expiry (for year 8) |
Apr 12 2021 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 12 2022 | 12 years fee payment window open |
Oct 12 2022 | 6 months grace period start (w surcharge) |
Apr 12 2023 | patent expiry (for year 12) |
Apr 12 2025 | 2 years to revive unintentionally abandoned end. (for year 12) |