Αριθμητική και Λογική Μονάδα

δεξιά|μικρογραφία|Σχηματικός συμβολισμός της αριθμητικής/λογικής μονάδας.
Στη μηχανική υπολογιστών η **αριθμητική/λογική μονάδα (ALU)** είναι ένα ψηφιακό κύκλωμα το οποίο εκτελεί αριθμητικούς και λογικούς υπολογισμούς. Η ALU είναι θεμελιώδες δομικό στοιχείο της Κ.Μ.Ε. του υπολογιστή. Ακόμα και οι πιο απλοί μικροεπεξεργαστές έχουν μια για σκοπούς όπως η διαχείριση μετρητών. Οι σύγχρονοι επεξεργαστές και οι μονάδες επεξεργασίας γραφικών, φιλοξενούν ισχυρές και πολύ πολύπλοκες ALU.

Ο μαθηματικός **Τζον Φον Νόιμαν** πρότεινε τον όρο ALU το 1945, όταν έγραψε μια αναφορά για την θεμέλια κατασκευή ενός καινούργιου τότε υπολογιστή, του EDVAC. Η έρευνα γύρω από τις ALU εξακολουθεί να αποτελεί σημαντικό μέρος της επιστήμης των υπολογιστών.

## Πρώτες υλοποιήσεις
Το 1946, ο Φον Νόιμαν συνεργάστηκε με τους συναδέλφους του στο σχεδιασμό ενός υπολογιστή για λογαριασμό του **Institute for Advanced Study** του Πρινσετον του Νιού Τζέρσευ. Ο συγκεκριμένος υπολογιστής αποτέλεσε το πρότυπο για όλους τους μεταγενέστερους υπολογιστές. Σε αυτή του την αναφορά, ο Φον Νόιμαν υπογράμμιζε τι πίστευε ότι θα χρειάζονταν για την υλοποίηση της μηχανής του, συμπεριλαμβανομένης και της ALU.

Ο Φον Νόιμαν αναφέρει ότι η ALU είναι απολύτως σημαντική για έναν υπολογιστή, διότι εγγυάται ότι ένας υπολογιστής μπορεί να υπολογίζει βασικούς μαθηματικούς υπολογισμούς, όπως πρόσθεση, αφαίρεση, πολλαπλασιασμό και διαίρεση. Ως εκ τούτου ο υπολογιστής πρέπει να περιέχει εξειδικευμένα όργανα για να εκτελεί αυτές τις πράξεις.

## Αριθμητικά συστήματα
Μια ALU, πρέπει να επεξεργάζεται αριθμούς χρησιμοποιώντας την ίδια μορφή όπως και το υπόλοιπο ψηφιακό κύκλωμα. Ως γνωστόν, η μορφή με την οποία αναπαριστώνται όλοι οι αριθμοί(και χαρακτήρες) στους σύγχρονους υπολογιστές είναι με την χρησιμοποίηση του δυαδικού συστήματος (με 0 και 1). Οι πρώτοι υπολογιστές χρησιμοποιούσαν ένα πλήθος από διαφορετικά συστήματα.

Για κάθε ένα σύστημα, οι ALU είχαν διαφορετικούς σχεδιασμούς συχνά αρκετά πολύπλοκους. Έτσι καθιερώθηκε το αριθμητικό σύστημα του συμπληρώματος ως προς 2, μια αριθμητική παράσταση που καθιστά ευκολότερους τους υπολογισμούς για την ALU. Με αυτό το αριθμητικό σύστημα, η αφαίρεση επιτυγχάνεται με την πρόσθεση του αρνητικού αριθμού (π.χ. αντί για 5-3 , 5+(-3) ), και έτσι εξουδετερώνεται η ανάγκη για εξειδικευμένα κυκλώματα για την αφαίρεση.

## Επισκόπηση
Οι περισσότερες από τις πράξεις ενός επεξεργαστή εκτελούνται από μία ή περισσότερες ALU. Μια ALU, φορτώνει δεδομένα από καταχωρητές εισόδου, μια εξωτερική μονάδα λέει στην ALU, τι πράξεις να κάνει στα δεδομένα, και στο τέλος η ALU αποθηκεύει το αποτέλεσμα σε έναν εξωτερικό καταχωρητή. Τέλος ειδικοί μηχανισμοί μετακινούν τα δεδομένα από τους καταχωρητές στη μνήμη.

### Απλοι υπολογισμοί
[δεξιά|μικρογραφία|Ένα απλό παράδειγμα ALU των 2 [μπιτ που εκτελεί τις λογικές πράξεις AND(KAI), OR('H), XOR(Ή ΟΧΙ) και πρόσθεση.]]
Οι περισσότερες ALU, μπορούν να εκτελέσουν τις παρακάτω πράξεις :
* Ακέραιες αριθμητικές πράξεις (πρόσθεση, αφαίρεση και μερικές φορές πολ/σμο και διαίρεση, αν και η υλοποίηση τους είναι ακριβή).
* Λογικές πράξεις (και, ή , όχι)
* Μετατόπιση η περιστροφή μιας λέξης τόσο όσο ενός καθορισμένου αριθμού μπιτς, προς τα αριστερά ή δεξιά, με πρόσημο ή χωρίς. Οι μετατοπίσεις μπορούν να υλοποιηθούν σαν πολλαπλασιασμοί με το 2 και ως διαιρέσεις με 2.

### Πολύπλοκοι υπολογισμοί
Ένας μηχανικός μπορεί να σχεδιάσει μια ALU για τον υπολογισμό οποιασδήποτε πράξης, άσχετα με το πόσο πολύπλοκο μπορεί να είναι. Το πρόβλημα έγκειται στο ότι όσο πιο πολύπλοκος είναι ένας υπολογισμός, τόσο πιο ακριβή γίνεται η ALU, καταλαμβάνει περισσότερο χώρο μέσα στον επεξεργαστή, καταναλώνει περισσότερη ενέργεια κλπ.

Ως εκ τούτου, οι μηχανικοί πάντοτε θέτουν ένα συμβιβασμό, έτσι ώστε να παρέχουν στον επεξεργαστή μια ALU αρκετά δυνατή για να κάνει τον επεξεργαστή γρήγορο, αλλά και όχι τόσο πολύπλοκο για να μην γίνεται το κόστος και το μέγεθος του απαγορευτικό. Φανταστείτε ότι πρέπει να υπολογίσετε την τετραγωνική ρίζα ενός αριθμού. Ο μηχανικός θα εξετάσει τις ακόλουθες επιλογές για την υλοποίηση αυτού του υπολογισμού :
# Σχεδίαση μιας υπερβολικά σύνθετης ALU για τον υπολογισμό της τετραγωνικής ρίζας οποιουδήποτε αριθμού σε ένα μόνο βήμα. Αυτό ονομάζεται υπολογισμός σε έναν κύκλο ρολογιού.
# Σχεδίαση μιας πολύ σύνθετης ALU, που υπολογίζει την τετραγωνική ρίζα οποιουδήποτε αριθμού σε διάφορα στάδια. Τα ενδιάμεσα στάδια όμως περνούν μέσα από μια σειρά κυκλωμάτων διατεταγμένα σε μια γραμμή, σαν μια γραμμή παραγωγής εργοστασίου. Αυτό επιτρέπει στην ALU να δέχεται νέους αριθμούς για υπολογισμό ακόμη και πριν ολοκληρώσει τον υπολογισμό των προηγούμενων αριθμών.
# Σχεδίαση μιας σύνθετης ALU, που υπολογίζει την τετραγωνική ρίζα με πολλά βήματα. Αυτό ονομάζεται διαδραστικός υπολογισμός, και συνήθως ελέγχεται από μια σύνθετη μονάδα ελέγχου με ενσωματωμένο μικροκώδικα.
# Σχεδίαση μιας απλής ALU στον επεξεργαστή, και πώληση ενός ξεχωριστού, εξειδικευμένου και πιο δαπανηρού επεξεργαστή που μπορεί να εγκαταστήσει ο πελάτης ακριβός δίπλα, και ο οποίος υλοποιεί μια από τις παραπάνω εντολές. Αυτός ο επεξεργαστής ονομάζεται συν-επεξεργαστής.
# Λέμε στους προγραμματιστές ότι δεν υπάρχει συν-επεξεργαστής, έτσι ώστε να σχεδιάσουν τους δικούς τους αλγορίθμους για τον υπολογισμό των τετραγωνικών ριζών σε λογισμικό. Αυτό γίνεται με χρήση βιβλιοθηκών λογισμικού.
# Μίμηση της ύπαρξης ενός συν-επεξεργαστή, δηλαδή, κάθε φορά που ένα πρόγραμμα επιχειρεί να εκτελέσει τον υπολογισμό μιας τετραγωνικής ρίζας, κάνε τον επεξεργαστή να ελέγξει την ύπαρξη ενός συν-επεξεργαστή, και κάνε τον να τον χρησιμοποιήσει εάν υπάρχει. Εάν δεν υπάρχει, η επεξεργασία του προγράμματος διακόπτεται και καλείται το λειτουργικό σύστημα να εκτελέσει τον υπολογισμό της ρίζας μέσω ενός αλγορίθμου σε λογισμικό.
 
Οι παραπάνω επιλογές διατάσσονται σε σειρά από την γρηγορότερη και πιο ακριβή προς την πιο αργή και φθηνότερη. Ως εκ τούτου, ενώ ακόμα και οι πιο απλοί υπολογιστές μπορούν να υπολογίσουν ακόμα και τις πιο πολύπλοκες μαθηματικές συναρτήσεις, οι απλούστεροι υπολογιστές θα κάνουν περισσότερο χρόνο να το κάνουν εξαιτίας των πολλών βημάτων που πρέπει να διεκπεραιώσει για τον υπολογισμό της συνάρτησης.

### Είσοδοι και έξοδοι
Οι είσοδοι στην ALU είναι τα δεδομένα πάνω στα οποία θα εφαρμοστούν οι διεργασίες (ονομάζονται τελεστές), και έναν κώδικα από την μονάδα ελέγχου που αναφέρει ποια λειτουργία θα εκτελεστεί.

Σε πολλά σχέδια η ALU λαμβάνει επίσης ως εισόδους και τα σύνολα των κωδικών κατάστασης από τον καταχωρητή κατάστασης. Οι κωδικοί αυτοί χρησιμοποιούνται για να δηλώσουν καταστάσεις όπως η υπερχείλιση, διαίρεση με μηδέν κλπ.

### ALU και FPU([[Μονάδα Κινητής Υποδιαστολής]])
Η μονάδα κινητής υποδιαστολής εκτελεί επίσης αριθμητικές πράξεις μεταξύ δύο τιμών, αλλά μόνο για αριθμούς με υποδιαστολή(δεκαδικούς), και είναι πολύ πιο περίπλοκο από την εκτέλεση των πράξεων με το συμπλήρωμα ως προς 2, που χρησιμοποιεί η ALU.

Συνήθως οι μηχανικοί αποκαλούν ALU το κύκλωμα που εκτελεί αριθμητικές πράξεις σε ακέραιους αριθμούς (όπως το συμπλήρωμα ως προς 2 ή δυαδικούς), ενώ τα κυκλώματα που εκτελούν πιο πολύπλοκες πράξεις λαμβάνουν αυτή την ονομασία.

Κατηγορία:Αρχιτεκτονική υπολογιστών