Πίσω στα RoboNews
▲ 111 πόντοιrighto.com4 λεπτά ανάγνωσης•

Ανάλυση του αλγορίθμου εφαπτομένης στον επεξεργαστή Intel 8087

Πρωτότυπος τίτλος: "Reverse-engineering the Intel 8087's tangent algorithm: more than CORDIC" (από pwg)

Αρχικό ΆρθροΣυζήτηση HN (11 σχόλια)
TL;DR (Εν Συντομία)

Ο Intel 8087 έφερε επανάσταση στις υπολογιστικές επιδόσεις των PC το 1980, ενσωματώνοντας έναν υβριδικό αλγόριθμο για τον υπολογισμό της εφαπτομένης (FPTAN). Συνδυάζοντας τον αλγόριθμο CORDIC για την προσέγγιση γωνιών και μια ορθολογική πολυωνυμική προσέγγιση (Padé approximant), ο επεξεργαστής πέτυχε υψηλή ακρίβεια και ταχύτητα, αποφεύγοντας τις δαπανηρές διαιρέσεις σε επίπεδο hardware.

📌 Κύρια Σημεία & Συμπεράσματα

  • Ο αλγόριθμος CORDIC επιτρέπει τον υπολογισμό υπερβατικών συναρτήσεων χρησιμοποιώντας μόνο απλές πράξεις μετατόπισης (bit shifts) και προσθέσεις.
  • Η χρήση Padé approximant για τη διαχείριση του υπολοίπου της γωνίας εξασφαλίζει ακρίβεια 64-bit με ελάχιστο υπολογιστικό κόστος.
  • Ο 8087 επιστρέφει την εφαπτομένη ως ζεύγος τιμών (αριθμητής και παρονομαστής), παρακάμπτοντας την ανάγκη για ρητή διαίρεση (division) κατά την εκτέλεση της εντολής.
  • Η αρχιτεκτονική του chip βασίζεται σε microcode ROM 1648 εντολών, η οποία ενορχηστρώνει τις πράξεις στο datapath των 80-bit.

Η αρχιτεκτονική προσέγγιση του FPTAN

Ο Intel 8087 δεν ήταν απλώς ένας μαθηματικός συνεπεξεργαστής (coprocessor), αλλά ένα θαύμα μηχανικής της δεκαετίας του '80. Η εντολή FPTAN αποτελεί ένα εξαιρετικό παράδειγμα βελτιστοποίησης, όπου ο σχεδιασμός του hardware και του microcode συνεργάζονται για να επιτύχουν υπολογισμούς που προηγουμένως απαιτούσαν χιλιάδες κύκλους επεξεργαστή.

Ο ρόλος του CORDIC και της πολυωνυμικής προσέγγισης

Ο αλγόριθμος CORDIC (COordinate Rotation DIgital Computer) επιτρέπει την περιστροφή διανυσμάτων μέσω μιας σειράς προκαθορισμένων γωνιών. Ωστόσο, για να επιτευχθεί η απαιτούμενη ακρίβεια 64-bit χωρίς υπερβολικό αριθμό επαναλήψεων, ο 8087 χρησιμοποιεί μια υβριδική μέθοδο:

  1. Pseudo-division: Προσδιορίζει τις απαραίτητες περιστροφές μέσω μιας διαδικασίας παρόμοιας με τη διαίρεση.
  2. Padé approximant: Για το εναπομείναν μικρό σφάλμα γωνίας, χρησιμοποιεί τον τύπο 3x/(3-x²), ο οποίος είναι εξαιρετικά ακριβής για μικρές τιμές.
  3. Pseudo-multiplication: Εφαρμόζει τις περιστροφές που αποφασίστηκαν στο πρώτο στάδιο, χρησιμοποιώντας μόνο shifts και προσθέσεις.

Hardware και Microcode: Η καρδιά του επεξεργαστή

Η ανάλυση του die του 8087 αποκαλύπτει ένα datapath 80-bit, όπου οι καταχωρητές (registers) και η μονάδα αθροιστή (adder) λειτουργούν σε στενή συνεργασία. Το microcode διαχειρίζεται τις καταστάσεις των stack registers και των temporary registers (tmpA, tmpB, tmpC), εξασφαλίζοντας ότι οι ενδιάμεσοι υπολογισμοί παραμένουν εντός των ορίων ακρίβειας. Η απόφαση να μην εκτελείται η τελική διαίρεση από το hardware, αλλά να επιστρέφονται τα συστατικά μέρη του αποτελέσματος, αποτελεί μια κλασική περίπτωση hardware optimization που προτιμά την ταχύτητα έναντι της ευκολίας χρήσης.

Ετικέτες:#Intel 8087#Reverse Engineering#Algorithms#Computer Architecture
GitHub Gems & Trends

Ανακαλύψτε καινοτόμα open-source εργαλεία και κρυμμένα διαμάντια ανοιχτού κώδικα.

Εξερεύνηση Gems

Διαβάστε επίσης