Χρήστης:KonVog/Σφάλμα FDIV του επεξεργαστή Pentium

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Επεξεργαστής Intel Pentium 66 MHz (sSpec=SX837) με το σφάλμα FDIV

Το σφάλμα FDIV του επεξεργαστή Pentium είναι ένα σφάλμα υλικού που επηρεάζει τη μονάδα κινητής υποδιαστολής (FPU) των πρώτων επεξεργαστών Intel Pentium. Λόγω του σφάλματος, ο επεξεργαστής επιστρέφει εσφαλμένα αποτελέσματα κινητής υποδιαστολής δυαδικής μορφής κατά τη διαίρεση ορισμένων ζευγών αριθμών υψηλής ακρίβειας. Το σφάλμα ανακαλύφθηκε το 1994 από τον Thomas R. Nicely, καθηγητή μαθηματικών στο Lynchburg College.[1] Ορισμένες τιμές που λείπουν από έναν πίνακα αναζήτησης που χρησιμοποιείται από τον αλγόριθμο διαίρεσης αριθμών κινητής υποδιαστολής της FPU οδήγησαν σε υπολογισμούς με μικρά σφάλματα. Ενώ αυτά τα σφάλματα στις περισσότερες περιπτώσεις εμφανίζονται σπάνια και οδηγούν σε αποτελέσματα πράξεων με μικρές αποκλίσεις από τις σωστές τιμές, σε ορισμένες περιπτώσεις είναι δυνατό τα σφάλματα να εμφανίζονται συχνά και να οδηγούν σε πιο σημαντικές αποκλίσεις.[2]

Η σοβαρότητα του σφάλματος FDIV είναι αμφιλεγόμενη. Αν και εμφανιζόταν σπάνια στους περισσότερους χρήστες (το περιοδικό Byte υπολόγισε ότι 1 στις 9 δισεκατομμύρια διαιρέσεις κινητής υποδιαστολής με τυχαίες παραμέτρους θα παρήγαγαν ανακριβή αποτελέσματα), τόσο το ίδιο το σφάλμα όσο και η αρχική διαχείριση του θέματος από την Intel επικρίθηκαν έντονα από την τεχνολογική κοινότητα.

Τον Δεκέμβριο του 1994, η Intel ανακάλεσε τους ελαττωματικούς επεξεργαστές. Το γεγονός αποτέλεσε την πρώτη πλήρη ανάκληση ενός ολοκληρωμένου κυκλώματος υπολογιστή.[3] Στην ετήσια αναφορά της για το 1994, η Intel ανέφερε ότι επιβαρύνθηκε με «προ φόρων χρέωση 475 εκατομμυρίων δολαρίων ... για την κάλυψη των εξόδων αντικατάστασης και διαγραφής αυτών των μικροεπεξεργαστών."[4]

Προκειμένου να βελτιώσει την ταχύτητα των υπολογισμών διαίρεσης αριθμών κινητής υποδιαστολής στον επεξεργαστί Pentium σε σχέση με τον 486DX, η Intel επέλεξε να αντικαταστήσει τον αλγόριθμο διαίρεσης μετατόπισης και αφαίρεσης με τον αλγόριθμο Sweeney, Robertson και Tocher (SRT). Ο αλγόριθμος SRT μπορεί να υπολογίσει δύο bit του αποτελέσματος διαίρεσης ανά κύκλο ρολογιού, ενώ ο αλγόριθμος του 486 θα μπορούσε να υπολογίσει μόνο ένα. Υλοποιείται χρησιμοποιώντας έναν προγραμματιζόμενο λογικό πίνακα με 2.048 κελιά, εκ των οποίων τα 1.066 κελιά θα έπρεπε να έχουν συμπληρωθεί με μία από τις πέντε τιμές: −2, −1, 0, +1, +2 . Όταν μεταγλωττίστηκε ο αρχικός πίνακας για το Pentium, πέντε τιμές δεν μεταφορτώθηκαν σωστά στον εξοπλισμό που χαράσσει τους πίνακες στα τσιπ – επομένως πέντε από τα κελιά του πίνακα περιείχαν μηδέν όταν θα έπρεπε να περιέχουν +2.

βιβλιογραφικές αναφορές[Επεξεργασία | επεξεργασία κώδικα]

Εξωτερικοί σύνδεσμοι[Επεξεργασία | επεξεργασία κώδικα]

  1. Edelman, Alan (January 1, 1997). «The Mathematics of the Pentium Division Bug». SIAM Review 39 (1): 54–67. doi:10.1137/S0036144595293959. Bibcode1997SIAMR..39...54E. http://www-math.mit.edu/~edelman/homepage/papers/pentiumbug.pdf. Ανακτήθηκε στις April 11, 2021. 
  2. «'A Discussion of and Fix for the Pentium FDIV Bug' from the Notebook Archive (2002)». notebookarchive.org (στα Αγγλικά). Wolfram Research, Inc. Ανακτήθηκε στις 11 Απριλίου 2021. 
  3. Carlton, Jim; Yoder, Stephen K. (December 21, 1994). «Computers: Humble Pie: Intel to Replace its Pentium Chips.». The Wall Street Journal: σελ. B1. 
  4. «1994 - Annual Report». Intel. 20 Ιουνίου 2020. Αρχειοθετήθηκε από το πρωτότυπο στις 26 Φεβρουαρίου 2017. Ανακτήθηκε στις 20 Ιουνίου 2020.