Μονάδα Κινητής Υποδιαστολής

Η μονάδα κινητής υποδιαστολής (FPU) αποτελεί μέρος του υπολογιστικού συστήματος ειδικά σχεδιασμένο να πραγματοποιεί πράξεις με αριθμούς κινητής υποδιαστολής (όπως για παράδειγμα ο πολλαπλασιασμός 5,2343 x 2,345). Τυπικές πράξεις που εκτελεί είναι η πρόσθεση, η αφαίρεση ο πολλαπλασιασμός η διαίρεση και ο υπολογισμός τετραγωνικής ρίζας. Σε ορισμένα συστήματα (παλαιότερης μικροαρχιτεκτονικής ) μπορεί να εκτελούν και διάφορες άλλες πράξεις και υπολογισμούς όπως τριγωνομετρικούς υπολογισμούς. Στις μέρες μας αυτό επιτυγχάνεται με τη χρήση βιβλιοθηκών ρουτινών στο επίπεδο του λογισμικού. Στις περισσότερες σύγχρονες μικροαρχιτεκτονικές γενικού σκοπού, μία ή περισσότερες FPU είναι ενσωματωμένες στον επεξεργαστη, ωστόσο πολλοί επεξεργαστές, ειδικότερα παλαιότερης γενιάς, δεν διαθέτουν υλική υποστήριξη για τέτοιες πράξεις. Στο παρελθόν, ορισμένα συστήματα έχουν εφαρμόσει πράξεις υποδιαστολής χρησιμοποιώντας έναν συνεπεξεργαστή, παρά με τη χρήση ανεξάρτητης μονάδας. Σήμερα, στην εποχή των μικροϋπολογιστών, η μονάδα αυτή υλοποιείται με ένα απλό ολοκληρωμένο ψηφιακό κύκλωμα ενσωματωμένο στο υπόλοιπο, ενώ σε παλαιότερα συστήματα ήταν πολύ μεγαλύτερη και λόγω του μεγέθους της βρίσκονταν έξω από τον επεξεργαστή. Δεν έχουν όλες οι μικροαρχιτεκτονικές υλική υποστήριξη FPU. Ελλείψει ενός FPU, πολλές λειτουργίες απομιμούνται εικονικά. Ο τρόπος αυτός ναι μεν γλυτώνει το κόστος κατασκευής της αντίστοιχης μονάδας, αλλά είναι σημαντικά πιο αργός. Η εικονική απομίμηση, μπορεί να εφαρμοστεί σε οποιοδήποτε επίπεδο: εσωτερικά του επεξεργαστη με τη μορφή μικροκώδικα ή ως λειτουργία του λειτουργικού συστήματος. Στις περισσότερες σύγχρονες αρχιτεκτονικές, υπάρχει ένας διαχωρισμός μεταξύ των πράξεων με αριθμούς κινητής υποδιαστολής και των πράξεων με ακεραίους. Αυτός ο διαχωρισμός διαφέρει σημαντικά από αρχιτεκτονική σε αρχιτεκτονική. Μερικές, όπως η x86 της Intel, έχουν εξειδικευμένους καταχωρητές για υπολογισμούς αριθμών κινητής υποδιαστολής. Συνήθως οι υπολογισμοί κινητής υποδιαστολής εκτελούνται με την μέθοδο της διοχέτευσης. Σε προγενέστερες αρχιτεκτονικές οι υπολογισμοί κινητής υποδιαστολής διοχετεύονταν διαφορετικά από τους ακέραιους. Από τις αρχές της δεκαετίας του ’90, πολλοί υπολογιστές και εξυπηρετητές, έχουν περισσότερες από μια FPU. Όταν ένας επεξεργαστής εκτελεί ένα πρόγραμμα που απαιτεί υπολογισμούς κινητής υποδιαστολής, υπάρχουν 3 τρόποι να τους εκτελέσει: εικονική εκτέλεση του υπολογισμού (μέσω ειδικών βιβλιοθηκών) με ενσωματωμένη FPU με πρόσθετη FPU

 Ορισμένες μονάδες υποστηρίζουν μόνο απλούς υπολογισμούς κινητής υποδιαστολής: πρόσθεση, αφαίρεση και πολλαπλασιασμό. Όμως ακόμα και οι πιο πολύπλοκες FPU έχουν ένα πεπερασμένο αριθμό υπολογισμών που μπορούν να κάνουν. Όταν ο επεξεργαστής εκτελεί ένα πρόγραμμα που απαιτεί υπολογισμούς κινητής υποδιαστολής οι οποίοι δεν υποστηρίζονται από το υλικό, ο επεξεργαστής χρησιμοποιεί μια σειρά απλούστερων υπολογισμών. Σε συστήματα που δεν υποστηρίζουν κάποια μονάδα υπολογισμών κινητής υποδιαστολής, ο επεξεργαστής προσομοιώνει τους υπολογισμούς χρησιμοποιώντας μια σειρά απλούστερων αριθμητικών υπολογισμών, που εκτελούνται στην αριθμητική και λογική μονάδα. Το λογισμικό που χρησιμοποιείται για να κατηγοριοποιήσει αυτή τη σειρά των υπολογισμών, για να προσομοιωθεί εικονικά ένας υπολογισμός κινητής υποδιαστολής, περιλαμβάνεται σε μια ειδική βιβλιοθήκη. Σε ορισμένες περιπτώσεις οι FPU είναι εξειδικευμένες και χωρισμένες μεταξύ απλών πράξεων κινητής υποδιαστολής (πρόσθεση και αφαίρεση) και πιο περίπλοκων υπολογισμών (διαίρεση). Σε ορισμένες περιπτώσεις, μόνο οι πιο απλοί υπολογισμοί είναι ενσωματωμένοι στο υλικό ή σε μορφή μικροκώδικα, ενώ οι πιο πολύπλοκοι υπολογισμοί υλοποιούνται με προγραμματιστικές ρουτίνες (γραμμένες σε συμβολική γλώσσα ή σε μια γλώσσα προγραμματισμού υψηλού επιπέδου). Τη δεκαετία του 1980, στους υπολογιστές της IBM, το σύνηθες ήταν η FPU να είναι εντελώς ξεχωριστή και ανεξάρτητη από τη λειτουργία του επεξεργαστή, και συνήθως πωλούνταν ξεχωριστά ως προαιρετικό πρόσθετο. Αγοράζονταν μόνο αν χρειαζόταν να επιταχυνθούν ή να εκτελεστούν μαθηματικά προγράμματα. Οι επεξεργαστές 8088 και 8086 είχαν και μια πρόσθετη υποδοχή για αυτόν τον συνεπεξεργαστή, τον 8087, όπως και οι άμεσοι διάδοχοι τους είχαν αντίστοιχο. Από τον επεξεργαστή 80486 και μετά, η μονάδα υπολογισμών κινητής υποδιαστολής ενσωματώθηκε στον επεξεργαστή. Μοναδική εξαίρεση αποτέλεσε ο 80486SX. Ο συγκεκριμένος επεξεργαστής είχε πρόσθετη υποδοχή για τον συνεπεξεργαστή του, τον 80487, ο οποίος στην πραγματικότητα ήταν ένας ολοκληρωμένος επεξεργαστής με ενσωματωμένη FPU. Σε περίπτωση που τοποθετούνταν στο σύστημα, ο 80486SX απενεργοποιούνταν. Σε αντίθεση με την σειρά x87, πολλές εταιρείες κατασκεύαζαν συνεπεξεργαστές για την σειρά x86. Εκτός από τις αρχιτεκτονικές της Intel, οι FPU με τη μορφή συνεπεξεργαστών μπορούσαν να χρησιμοποιηθούν και από τους επεξεργαστές Motorola 68000. Συγκεκριμένα οι επεξεργαστές Μοtorola 68020/68030 χρησιμοποιούσαν τις FPU 68881 και 68882, στους σταθμούς εργασίας της σειράς Sun 3. Συχνά τοποθετούνταν και στα υψηλότερης απόδοσης μοντέλα των υπολογιστών Apple Macintosh και Commodore Amiga, αλλά δεν συναντάτο σε χαμηλότερα μοντέλα, εκτός από τους υπολογιστές της ΙΒΜ. Με την κατασκευή του 68040, η Motorola ενσωμάτωσε την FPU στον επεξεργαστή, αλλά όπως και στη σειρά επεξεργαστών x86 της Ιντελ, διαθέτονταν και ένας επεξεργαστής (ο 68LC040) χωρίς ενσωματωμένη FPU. x86