Μικροαρχιτεκτονική

Αρχιτεκτονικό Σύνολο Εντολών (Α.Σ.Ε.)

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

Πτυχές της μικροαρχιτεκτονικής

Η διοχέτευση των δεδομένων μέσα από προκαθορισμένες διαδρομές, είναι αυτή που έχει επικρατήσει σήμερα στο σχεδιασμό μιας μικροαρχιτεκτονικής. Η τεχνική αυτή χρησιμοποιείται σε όλους τους σύγχρονους επεξεργαστές και ελεγκτές. Η συγκεκριμένη τεχνοτροπία της διοχέτευσης, επιτρέπει στις εντολές να υπερκαλύπτουν η μία την άλλη. Ο αγωγός (μέσα από τον οποίο διοχετεύονται τα δεδομένα) περιλαμβάνει διάφορα στάδια τα οποία είναι θεμελιώδους σημασίας στο σχεδιασμό των μικροαρχιτεκτονικών. Μερικά από αυτά τα στάδια είναι η προσκόμιση των εντολών, η αποκωδικοποίηση τους, η εκτέλεσή τους και η επανεγγραφή τους. Μερικές μικροαρχιτεκτονικές περιλαμβάνουν και κάποια επιπλέον στάδια, όπως π.χ. η προσπέλαση μνήμης. Ο σχεδιασμός των αγωγών αυτών είναι ένα από τα κεντρικά μελήματα για την υλοποίηση μιας μικροαρχιτεκτονικής.
Ζωτικής σημασίας είναι επίσης οι μονάδες εκτέλεσης. Οι μονάδες αυτές περιλαμβάνουν αριθμητικές/λογικές μονάδες, μονάδες κινητής υποδιαστολής, ελεγκτές διακλαδώσεων. Αυτές οι μονάδες εκτελούν όλες τις εργασίες και τους υπολογισμούς σε έναν επεξεργαστή. Σχεδιαστική προτεραιότητα αποτελούν επίσης η επιλογή του αριθμού των μονάδων εκτέλεσης και η δυναμικότητά τους. Επίσης σημαντικά ζητήματα είναι το μέγεθος, η λανθάνουσα κατάσταση και η συνδεσιμότητα των μνημών που απαρτίζουν το σύστημα.
Σε επίπεδο συστήματος, σχεδιαστικές αποφάσεις όπως η συμπερίληψη ή μη των περιφερειακών υποσυστημάτων, όπως ελεγκτές μνήμης, μπορούν να θεωρηθούν μέρος της διαδικασίας σχεδιασμού της μικροαρχιτεκτονικής. Περιλαμβάνει επίσης αποφάσεις για το επίπεδο των επιδόσεων και την σύνδεση αυτών τον περιφερειακών.
Σε αντίθεση με άλλους αρχιτεκτονικούς σχεδιασμούς όπου ο κύριος στόχος είναι η επίτευξη συγκεκριμένων επιδόσεων, ο μικροαρχιτεκτονικός σχεδιασμός δίνει περισσότερη έμφαση σε άλλους τομείς. Δεδομένου ότι οι αποφάσεις κατά τον σχεδιασμό της μικροαρχιτεκτονικής επηρεάζει άμεσα τι συμβαίνει στο σύστημα, πρέπει να δοθεί προσοχή σε ζητήματα όπως: • Εμβαδόν/Κόστος του τσιπ • Κατανάλωση ενέργειας • Λογική πολυπλοκότητα • Ευκολία σύνδεσης • Βιομηχανική χρήση • Ευκολία στον εντοπισμό σφαλμάτων • Δυνατότητα δοκιμών

Μικροαρχιτεκτονικοί σχεδιασμοί

Σε γενικές γραμμές, οι επεξεργαστές απλού πυρήνα όπως επίσης και οι υλοποιήσεις επεξεργαστών με πολλαπλά τσιπ, τρέχουν τα προγράμματα εκτελώντας τα ακόλουθα βήματα : 1. Ανάγνωση και αποκωδικοποίηση μιας εντολής. 2. Εύρεση όλων των σχετικών δεδομένων που χρειάζονται για την διεκπεραίωση της εντολής. 3. Εκτέλεση της εντολής. 4. Εξαγωγή των αποτελεσμάτων.
Αυτό που περιπλέκει αυτή τη σειρά των βημάτων, είναι το σύνολο της μνήμης ( η οποία περιλαμβάνει την κρυφή μνήμη-cache, την κεντρική μνήμη-ram, και τα μη πτητικά μέσα αποθήκευσης-σκληροί δίσκοι), εκεί δηλαδή που αποθηκεύονται όλες οι οδηγίες και τα δεδομένα των προγραμμάτων, πάντα ήταν και είναι πιο αργό από την ταχύτητα του επεξεργαστή. Ειδικά στο βήμα 2, παρατηρείται μια χρονική καθυστέρηση καθώς τα δεδομένα φτάνουν από τον δίαυλο. Έχουν γίνει εκτεταμένες έρευνες και βελτιώσεις στο σχεδιασμό έτσι ώστε να αποφεύγονται τέτοιου είδους καθυστερήσεις. Με το πέρασμα των ετών, έγινε πιο επιτακτική από ποτέ η ανάγκη για την παράλληλη εκτέλεση περισσότερων εντολών, το οποίο αύξησε σημαντικά την πραγματική ταχύτητα εκτέλεσης των προγραμμάτων. Οι βελτιώσεις αυτές είχαν ως αποτέλεσμα την εισαγωγή πιο περίπλοκων δομικών λογικών κυκλωμάτων. Αρχικά αυτές οι τεχνικές εφαρμόστηκαν μόνο σε ακριβά συστήματα ή υπερυπολογστές λόγω του όγκου των απαιτούμενων κυκλωμάτων. Με τη ραγδαία όμως πρόοδο της μηχανικής των ημιαγωγών, όλο και περισσότερες τεχνοτροπίες μπορούσαν να εφαρμοστούν σε ένα και μόνο τσιπ.

Επιλογή του Α.Σ.Ε.

Με το πέρασμα των χρόνων τα Α.Σ.Ε. έχουν τροποποιηθεί, από πολύ απλοϊκά έως σε ορισμένες περιπτώσεις πολύ πολύπλοκα.
Ωστόσο, η επιλογή του Α.Σ.Ε. μπορεί να επηρεάσει σε μεγάλο βαθμό, τη πολυπλοκότητα της εφαρμογής της σε συσκευές υψηλής απόδοσης. Η εξέχουσα στρατηγική που χρησιμοποιήθηκε για την κατασκευή των πρώτων επεξεργαστών με την τεχνοτροπία RISC, είχε ως στόχο την απλοποίηση των εντολών στην με ελάχιστη πολυπλοκότητα σε συνδυασμό με υψηλή κανονικότητα αποκωδικοποίησης. Τέτοιες εντολές προσκομίζονται εύκολα, αποκωδικοποιούνται και εκτελούνται με τον τρόπο της διοχέτευσης (μέσω ενός αγωγού), και με μια στρατηγική έτσι ώστε να μειώνεται ο αριθμός των λογικών επιπέδων, έτσι ώστε να επιτυγχάνονται υψηλές συχνότητες λειτουργίας.

Βαθμιδωτή διάταξη

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

Εκτέλεση εκτός λειτουργίας

Η προσθήκη κρυφών μνημών, μειώνει σημαντικά τη συχνότητα και τη διάρκεια των περιόδων αναμονής του επεξεργαστή, (που περιμένει την ανάκληση των δεδομένων από αυτές τις μνήμες), αλλά δεν απαλλάσσεται τελείως από αυτές. Στους αρχικούς σχεδιασμούς, μια αστοχία της κρυφής μνήμης θα ανάγκαζε τον ελεγκτή της μνήμης αυτής να βάλει τον επεξεργαστεί σε κατάσταση αναμονής και να περιμένει. Φυσικά, θα πρέπει να υπάρχουν κάποιες εντολές στο πρόγραμμα τα δεδομένα του οποίου να είναι διαθέσιμα στη κρυφή μνήμη σε εκείνο το σημείο. Η “εκτός λειτουργίας” εκτέλεση, επιτρέπει σε μια έτοιμη εντολή να εκτελεστεί όταν μια προηγούμενη βρίσκεται σε αναμονή στη κρυφή μνήμη, έπειτα επαναταξινομεί τα αποτελέσματα έτσι ώστε να φαίνεται ότι όλα έγιναν όπως ορίζονται από τη σειρά εκτέλεσης των εντολών.

Μετονομασία των καταχωρητών

Η μετονομασία των καταχωρητών, αναφέρεται σε μια τεχνική που χρησιμοποιείται για να αποφευχθεί η άσκοπη συνεχής εκτέλεση των εντολών ενός προγράμματος λόγω της επαναχρησιμοποίησης των ίδιων καταχωρητών από αυτές τις εντολές.

Πολυεπεξεργασία και πολυνημάτωση (πολυδιεργασία)

Οι αρχιτέκτονες των υπολογιστών εμποδίζονται από την συνεχόμενη αναντιστοιχία μεταξύ της εξέλιξης στη συχνότητα λειτουργίας των επεξεργαστών και της συχνότητας λειτουργίας των μνημών. Όμως καμία από αυτές τις τεχνικές που εκμεταλλεύονται την παράλληλη επεξεργασία των εντολών, δεν θα μπορούσε να αντισταθμίσει τις μεγάλες αναμονές όταν τα δεδομένα θα πρέπει να προσκομιστούν από την κύρια μνήμη. Επιπλέον, ο μεγάλος αριθμός των τρανζίστορ και οι υψηλές συχνότητες λειτουργίας που χρειάζονται για τις πιο προηγμένες τεχνικές, απαιτούν μεγάλα επίπεδα κατανάλωσης ισχύος.
Ο ρυθμός απόδοσης ενός υπολογιστικού συστήματος είναι μια ιδέα που προήλθε από την μεσαία τάξη τη αγοράς. Δίνεται έμφαση όχι μόνο στην επεξεργασία των συναλλαγών online, αλλά και στην ικανότητα αντιμετώπισης μαζικά, μεγάλου αριθμού συναλλαγών. Την τελευταία δεκαετία οι εφαρμογές για την διεκπεραίωση συναλλαγών (όπως η δρομολόγηση δικτύων και ιστοσελίδων) έχουν εξελιχθεί σημαντικά και ως αποτέλεσμα η βιομηχανία των υπολογιστών έχει δώσει εκ νέου έμφαση στα ζητήματα απόδοσης.
Μια τεχνική για το πώς επιτυγχάνεται αυτός ο παραλληλισμός είναι μέσω των πολύεπεξεργαστικών συστημάτων, δηλαδή υπολογιστών με πολλαπλούς επεξεργαστές. Σήμερα οι εξυπηρετητές που αποτελούνται από πολλαπλούς επεξεργαστές έχουν γίνει κομμάτι της καθημερινότητας ανάμεσα στις επιχειρήσεις, ενώ από τη δεκαετία του 1990 έχουν κάνει την εμφάνισή τους και προσωπικοί υπολογιστές (PC) με περισσότερους από έναν επεξεργαστές.
Με τη περαιτέρω μείωση του μεγέθους των τρανζίστορ, λόγω της προόδου της τεχνολογίας των ημιαγωγών, την θέση τους κατέλαβαν οι επεξεργαστές πολλαπλών πυρήνων, δηλαδή πολλαπλά επεξεργαστικά τσιπ ενοποιημένα σε ένα και μόνο τσιπ πυριτίου.
Μια άλλη τεχνική η οποία συνδέεται στενά με την πολυεπεξεργασία και έγινε δημοφιλής είναι η ‘’’πολυνημάτωση ή πολυδιεργασία’’’. Στη πολυνημάτωση, όταν ο επεξεργαστής χρειάζεται να φέρει δεδομένα από αργές μνήμες του συστήματος δεν τίθεται σε κατάσταση αναμονής μέχρι να φτάσουν τα απαραίτητα δεδομένα, αλλά στρέφει την προσοχή του σε κάποιο άλλο πρόγραμμα ή σε κάποια διεργασία (νήμα) ενός προγράμματος το οποίο είναι έτοιμο να εκτελεστεί. Παρ’ όλο που δεν επιτυγχάνεται έτσι μεγαλύτερη ταχύτητα σε κάποιο συγκεκριμένο πρόγραμμα/διεργασία, αυξάνεται όμως η γενική υπολογιστική απόδοση του συστήματος γιατί μειώνεται περεταίρω το χρονικό διάστημα που ο επεξεργαστής τίθεται σε αναμονή.
Μια πολυνηματική μονάδα επεξεργασίας μπορεί να μεταπηδήσει σε κάποια διεργασία(νήμα) σε 1 επεξεργαστικό κύκλο. Αυτό επιτυγχάνεται με την αποτύπωση της κατάστασης των συσκευών (όπως το αρχεία μητρώου και τον μετρητή του προγράμματος) για κάθε ενεργή διεργασία.
Μια περαιτέρω εξέλιξη της τεχνικής αυτής είναι η παράλληλη πολυνημάτωση. Αυτή η τεχνική επιτρέπει την ταυτόχρονη εκτέλεση εντολών από διαφορετικά προγράμματα/διεργασίες στον ίδιο κύκλο επεξεργασίας.