Editorial: CPU και CPU Overclocking σε βάθος - Υποσυστήματα ενός CPU - Δίαυλοι Επικοινωνίας - Εντολές
Υποσυστήματα ενός CPU
Ένας μικροεπεξεργαστής διαθέτει ένα σύνολο προεγκατεστημένων εντολών (instructions), οι οποίες τον βοηθούν να πραγματοποιήσει διάφορους υπολογισμούς/εργασίες όπως οι αριθμητικές πράξεις, ή η μεταπήδηση σε ένα μενού ενός προγράμματος αρκετά ταχύτερα απ’ ότι χωρίς αυτές. Δείτε τις σαν ένα «ειδικευμένο εργάτη», ο οποίος χρησιμοποιεί την εμπειρία του για να ξεπεράσει ένα πρόβλημα που στη περίπτωση ενός μη ειδικευμένου θα έπαιρνε περισσότερη ώρα.
Ξεκινώντας ένα απλό αλλά σύνηθες υποσύστημα είναι οι καταχωρητές και όπως κάθε τί άλλο στο εσωτερικό ενός CPU κατασκευάζονται από «μαγικό συστατικό», τις πύλες που συναντήσαμε λίγο πιο πριν. Ο καταχωρητής είναι ένα κύκλωμα που μπορεί να επικοινωνήσει με άλλους καταχωρητές και με άλλα υποσυστήματα ενός CPU και επί της ουσίας είναι μικρά συρτάρια στα οποία μπορούμε να τοποθετήσουμε προσωρινά δεδομένα. Μόνο του ένα byte δε θεωρείται καταχωρητής γι’ αυτό χρησιμοποιούμε 8 AND πύλες συνδεδεμένες με την έξοδο κάθε bit. Οι 8 πύλες αυτές ονομάζονται enabler και ο συνδυασμός τους με τα 8 bit της μονάδας του byte δημιουργούν αυτό που ονομάζουμε Καταχωρηρτής. Ο Enabler στο output του byte λειτουργεί σαν ένας «τροχονόμος» επιτρέποντας (ή αποτρέποντας) στα bit να προχωρήσουν προς άλλα σημεία του CPU. Οι Καταχωρητές χωρίζονται σε τρεις κατηγορίες: τον Απαριθμητή προγράμματος (program counter – που περιέχει τη διεύθυνση της επόμενης εντολής στη μνήμη σε bit), τον Καταχωρητή εντολών (Instruction register – ο οποίος διατηρεί το αναγνωριστικό της εντολής λίγο πριν δοθεί για την αποκωδικοποίησή τους από τον CPU) και τον Συσσωρευτή (accumulator – που χρησιμοποιείται στις αριθμητικές και λογικές πράξεις).
Δίαυλοι Επικοινωνίας
Το CPU διαθέτει διαύλους επικοινωνίας με τον εσωτερικό του κόσμο αλλά και με τον "εξωτερικό". Κάθε δίαυλος επικοινωνίας αποτελείται από 8 καλώδια που χρησιμοποιούνται για να γεφυρώσουν ορισμένα υποσυστήματα ενός επεξεργαστή όπως τους καταχωρητές και τις αριθμητικές μονάδες. Αυτό που μεταφέρεται από τους συγκεκριμένους αγωγούς όπως ίσως να έχετε φανταστεί, είναι τα γνωστά μας bit. Το πόσα δεδομένα (ένα bit σε κάθε κύκλο ρολογιού) μπορεί να μεταφέρει ένας επεξεργαστής εξαρτάται από το εύρος του διαύλου, δηλαδή τον αριθμό των «αγωγών» που υπάρχουν για τη σύνδεση των σημαντικών υποσυστημάτων του επεξεργαστή όπως οι Καταχωρητές. Χαρακτηριστικό παράδειγμα αποτελεί ο Intel 8088, που φέρει τον τίτλο του πρώτου οκτάμπιτου (8 bit) μικροεπεξεργαστή και μπορούσε να διαχειριστεί 28 = 256 αριθμούς.
Το εύρος του διαύλου μετριέται σε bit και η πληροφορία που μεταφέρει είναι με τη μορφή δυαδικού συστήματος ενώ η λέξη «εύρος» αναφέρεται στους καταχωρητές (registers) και στο μέγεθος των διευθύνσεων μνήμης που μπορεί να δει κάτι που ισούται με το μέγεθος της μνήμης που μπορεί να διαχειριστεί σε GB.
Οι σύγχρονοι CPUs έχουν εύρος 64-bit, κάτι που θεωρητικά σημαίνει ότι έχουν 64 διαύλους για μεταφορά δεδομένων, 64 διαύλους διευθύνσεων, και άλλους 64 διαύλους ελέγχου που συντονίζουν τις λειτουργίες στο εσωτερικό τους. Τα παραπάνω, αποτελούν θεωρητικό χαρακτηριστικό ενός 64-bitου επεξεργαστή και δεν ανταποκρίνονται πάντοτε στη πραγματικότητα μιας και ο κάθε κατασκευαστής χρησιμοποιεί διαφορετική αρχιτεκτονική στους επεξεργαστές του, μοιράζοντας αναλόγως το εύρος ανάλογα με τις απαιτήσεις της αγοράς. Όσο μεγαλύτερος είναι ο αριθμός των bit που μπορεί να διαχειριστεί ένας επεξεργαστής, τόσο μεγαλύτερη και η μνήμη που μπορεί να διαχειριστεί ή να αποκτήσει πρόσβαση. Οι σημερινοί 64μπιτοι επεξεργαστές πολλές φορές χρησιμοποιούν τα 48 εξ’ αυτών (για μείωση του κόστους) και στη θεωρία, ακόμα και μ’ αυτά, μπορούν να «δουν» έως και 256TB RAM που είναι κάτι παραπάνω από αρκετά για να παίξουμε πασιέντζα για τα επόμενα 75 τουλάχιστον χρόνια. Το αρνητικό των επεξεργαστών με πολλά bit, είναι πως συνήθως έχουν μεγαλύτερο μέγεθος, εκλύουν περισσότερη θερμότητα ενώ απαιτούν και μεγαλύτερη τάση για να λειτουργήσουν. Γι’ αυτό και μέχρι πρότινος, επεξεργαστές 32-bit, 16-bit ή και 8-bit σε ορισμένες περιπτώσεις χρησιμοποιούνταν σε συσκευές χαμηλής ισχύος, όπως smartwatches και κινητά τηλέφωνα ή γενικότερα σε φορητές συσκευές όπου η αυτονομία είναι ένας αρκετά σημαντικός παράγοντας.
Παράδειγμα: Ένας επεξεργαστής μπορεί να είναι 32-bit αρχιτεκτονικής κάτι που σημαίνει ότι μπορεί να δει δεδομένα που αναπαρίστανται με 32 bit και διευθύνσεις στη μνήμη που αποτελούνται από 32 bit και όχι περισσότερα. Αυτό όμως δε σημαίνει ότι εσωτερικά διαθέτει και διαύλους εύρους 32-bit για τη σύνδεση των υποσυστημάτων. Κάθε bus αποτελείται από δύο μέρη, το data και το address. Το data bus είναι υπεύθυνο για τη μεταφορά δεδομένων στη διεύθυνση που θα του υποδείξει το address bus.
Υποσυστήματα ενός CPU (συνέχεια)
Αφού κάναμε μια παρένθεση για να αναφερθούμε στους διαύλους επικοινωνίας που συνδέουν τα υποσυστήματα ενός επεξεργαστή ας συνεχίσουμε με το εσωτερικό του επεξεργαστή και συγκεκριμένα με τις υπόλοιπες βασικές μονάδες που βρίσκουμε. Σε ένα CPU συναντάμε και μια μονάδα ελέγχου (Control Unit), η οποία επικοινωνεί άμεσα με τα πιο σημαντικά υποσυστήματα ενός υπολογιστή όπως τη RAM, τους Καταχωρητές κ.α. Σημειώνεται ότι συνδέεται τόσο με τα enables τους όσο και με τα sets τους, ούτως ώστε να μπορεί να διαβάσει και να γράψει bit αντίστοιχα στις παραπάνω περιοχές.
Μέσα στη μονάδα ελέγχου συναντάμε και το clock, το βασικό υποσύστημα που καθορίζει τη συχνότητα λειτουργίας ενός επεξεργαστή και των λοιπών υπομονάδων όπως ελεγκτές μνήμης και καρτών επέκτασης PCIe. Ονομάστηκε έτσι καθώς έχει σχεδιαστεί για να “κρατήσει το tempo” ή τον ρυθμό, όπως τα τύμπανα σε μια ομάδα μουσικών, ούτως ώστε να μην κάνουν κάποιο λάθος και «τρέξουν» πιο γρήγορα, ή αργήσουν να ολοκληρώσουν ένα μουσικό μέτρο. Ο χτύπος του καθορίζει τον ρυθμό με τον οποίο θα λειτουργούν οι πύλες ενός υπολογιστή κάτι που θα αναφέρουμε εκτενώς στο επόμενο κεφάλαιο. Περισσότερα όμως γι’ αυτό πιο μετά καθώς θα πρέπει να διακόψουμε τη ροή για να αναφερθούμε στον τρόπο που εκτελείται μια εντολή. Η επιφανειακή κάλυψη του clock είναι σκόπιμη και θα αποσαφηνιστεί στη συνέχεια του παρόντος οδηγού.
Διαδικασία εκτέλεσης μιας εντολής
Η διαδικασία που ακολουθείται - σε έναν τυπικό x86 επεξεργαστή όπως της AMD και της Intel - για την εκτέλεση μιας εντολής είναι η ανάκτηση της εντολής από τη μνήμη (fetch) μέσω του ειδικού αναγνωριστικού που έχει (ένας αριθμός ή ένας συνδυασμός αριθμών, η αποκωδικοποίηση της εντολής (decode) από ένα ειδικό κύκλωμα και η εκτέλεση αυτής από τα απαραίτητα κυκλώματα που «ζουν» στο εσωτερικό της μονάδας που αναφερόμαστε ως «CPU». Στη συνέχεια, εφόσον κάποιο αποτέλεσμα ή μέρος της επεξεργασίας πρόκειται να ξαναχρησιμοποιηθεί, αποθηκεύεται στην προσωρινή μνήμη του επεξεργαστή για μελλοντική αναφορά. Αυτή η διαδικασία επαναλαμβάνεται ξανά και ξανά έως ότου τερματιστεί το πρόγραμμα και ονομάζεται αλλιώς, Κύκλος Εντολής, δηλαδή, ο χρόνος από την έναρξη της εντολής μέχρι την εκκίνηση της επόμενης κοκ.
Τη διαδικασία που πραγματοποιείται στο εσωτερικό ενός επεξεργαστή έχουν πολλοί μπει στον κόπο να αναπαραστήσουν. Στο παρακάτω λινκ θα δούμε ένα chip βασισμένο στο ARM1 του 1985 το οποίο βρίσκεται σε φάση λειτουργίας. Χαζεύοντας μπορούμε να συσχετίσοτυμε τα όσα είδαμε παραπάνω με ορισμένες από τις λειτρουργίες που γίνονται στο εσωτερικό. ARM1 Demo.
cpu, overclocking, bit, nand gates, gate, λογικές πύλες, processor, επεξεργαστής, πύλες, τι είναι cpu