2016-12-04 11:04:46
Ένα άρθρο που θα βοηθήσει τους χρήστες να κατανοήσουν τη λειτουργία ενός υπολογιστικού συστήματος, αποκτώντας παράλληλα μια πρώτη ιδέα για τον υπερχρονισμό, aka τον κόσμο του overclocking.Ένα από τα δημιουργήματα της σύγχρονης ιστορίας του ανθρώπου είναι ο υπολογιστής. Βασισμένος σε κανόνες που έχει δανειστεί ο άνθρωπος από τη φύση του και τις κοινωνίες στις οποίες ζει, ένας υπολογιστής διαθέτει πολλά και διαφορετικά υποσυστήματα, που συνδέονται μεταξύ τους και δρουν συγχρονισμένα για να επιτύχουν έναν συγκεκριμένο σκοπό.
Παρά τα διάφορα και τα περίπλοκα πράγματα που μπορεί να κάνει κάποιος με έναν ηλεκτρονικό υπολογιστή σήμερα, η λειτουργία του εξακολουθεί και παραμένει αρκετά απλή και είναι ίδια εδώ και πολλά χρόνια, εδώ και πάνω από 60 χρόνια. Εκτός από την απλή λειτουργία των υπολογιστών την οποία θα αναφέρουμε παρακάτω, εξίσου απλές είναι και οι συσκευές από τις οποίες αποτελείται και μαζί συνθέτουν ένα υπολογιστικό σύστημα. Οι διαφορές τους εντοπίζονται κυρίως στον τρόπο που χρησιμοποιούμε τις συσκευές αυτές, όμως οι θεμελιώδεις αρχές τους παραμένουν ίδιες. Το μόνο που έχει αλλάξει από αυτά τα χρόνια είναι ο τρόπος που κατασκευάζονται και η τιμή που πωλούνται μαζί με τις εργασίες που μπορούμε να κάνουμε
Όπως παρατηρούμε γύρω μας, ο κόσμος στον οποίο ζούμε επηρεάζεται από διάφορα φαινόμενα. Το αυτοκίνητό μας λειτουργεί χάρη στα καύσιμα, ενώ άλλα φαινόμενα βασίζονται στους νόμους της φυσικής - λόγου χάρη τη βαρύτητα. Τα φαινόμενα αυτά ακολουθούν κάποιους κανόνες που δημιουργήθηκαν είτε από τη φύση είτε από τον άνθρωπο ενώ θα δούμε πως ακόμα και στους υπολογιστές κυριαρχεί η έννοια της λογικής. Η κινητήριος δύναμη ενός υπολογιστή και ένα από τα πιο σημαντικά πράγματα που θα πρέπει να κρατήσετε από την ανάγνωση αυτού του οδηγού, είναι το ηλεκτρικό ρεύμα. Στον συγκεκριμένο οδηγό θα αναλύσουμε με απλό και κατανοητό τρόπο τα τμήματα που αποτελείται ένα υπολογιστικό σύστημα και θα συνδέσουμε τις ανακαλύψεις μας με το overclocking, τη μέθοδο που χρησιμοποιούμε για να αυξήσουμε τις επιδόσεις του υπολογιστή. Πολλοί ίσως έχετε σχηματίσει μια λανθασμένη εικόνα για τους υπολογιστές. Όλοι ίσως σε κάποια φάση να το έχουμε κάνει, μέχρι που κάτσαμε και διαβάσαμε, μελετήσαμε, για να φτάσουμε σε ένα Χ επίπεδο, το οποίο συνεχίζει και είναι «ταπεινό» σε σχέση με αυτούς που στην ουσία δημιουργούν τους υπολογιστές που απολαμβάνουμε από την άνεση του σπιτιού μας. Κάθε υπολογιστής μπορεί να κάνει μια σειρά από πρακτικά άπειρες εργασίες.
Μπορεί να παίξει παιχνίδια, να αναπαραγάγει βίντεο και να παρουσιάσει το κείμενο που διαβάζετε στις οθόνες σας όμως όπως είπαμε και στη προηγούμενη παράγραφο, οι εργασίες που κάνει είναι απλές, έχουν μια λογική σειρά και είναι εύκολα κατανοητές. Οι παραπάνω εργασίες όπως το να σχεδιάσει κτήρια σε ένα παιχνίδι, ή να προβάλει ένα βίντεο στην οθόνη, είναι αποτέλεσμα πολλών και μικρών διαδικασιών/εργασιών που γίνονται με μια αυστηρή σειρά στο εσωτερικό και οι οποίες δε φαίνονται ούτε στην οθόνη άμεσα. Στη πραγματικότητα η κάθε εργασία γίνεται πολύ - πολύ γρήγορα και δε μπορούμε να τη δούμε με γυμνό μάτι ούτε να μετρήσουμε εύκολα τη διάρκειά της με κάποια τυπική κλίμακα μέτρησης του χρόνου. Ακόμα και ένα διπλό κλικ σε μια φωτογραφία είναι αποτέλεσμα πολλών μικρών διεργασιών που γίνονται στο εσωτερικό του συστήματος ανά δευτερόλεπτο. Η ταχύτητα με την οποία γίνονται αυτές οι διαδικασίες ανά δευτερόλεπτο είναι πολλή μεγάλη και ισοδυναμεί με τη μισή ταχύτητα του φωτός! Σύμφωνα με τη φυσική η ταχύτητα του φωτός ανέρχεται περίπου σε 300.000 χιλιόμετρα το δευτερόλεπτο όμως η ταχύτητα του ηλεκτρισμού όταν κινείται μέσα από καλώδια και όχι στο κενό, ισούται με περίπου 150.000 χιλιόμετρα το δευτερόλεπτο που είναι ένας επίσης τεράστιος αριθμός εάν αναλογιστούμε ότι όλα τα υποσυστήματα ενός υπολογιστή, είναι μόλις μερικά εκατοστά ή χιλιοστά κοντά.
Η ταχύτητα του φωτός είναι τόσο γρήγορη που μέσα σε ένα δευτερόλεπτο, μπορεί να κάνει τον κύκλο της Γης επτά φορές. Αφού η ταχύτητα του ηλεκτρισμού είναι η μισή όταν διέρχεται μέσα από καλώδια, τότε μπορούμε να πούμε με ασφάλεια πως το ηλεκτρικό ρεύμα μπορεί να κάνει 3.5 κύκλους γύρω από τη Γη το δευτερόλεπτο, ένα αρκετά τρομερό επίτευγμα. Η φυσική παρ’ όλ’ αυτά μας λέει πως υπάρχουν όρια όσον αφορά την κατασκευαστική μέθοδο των υπολογιστών, και το πόσο γρήγορα μπορούμε να ωθήσουμε το ηλεκτρικό ρεύμα από τους αγωγούς, ή να βρούμε τρόπους να περάσει από λιγότερα «εμπόδια», όμως οι μηχανικοί των μεγάλων κατασκευαστών βρίσκουν τις απαραίτητες «δικλείδες» ασφαλείας, «παρακάμπτοντας» τους νόμους, μικραίνοντας τους «διαδρόμους» και φτιάχνοντας γρηγορότερους υπολογιστές σε κάθε γενιά
Bit
Όπως είπαμε στην αρχή, ο υπολογιστής μας λειτουργεί χάρη στο ηλεκτρικό ρεύμα που διαπερνά τους αγωγούς που συνδέουν τα εκάστοτε υποσυστήματα και τις συσκευές. Το ηλεκτρικό ρεύμα θα πρέπει να μεταφραστεί αργότερα σε κάτι που μπορούμε να «διαβάσουμε», σε κάτι που μπορούμε να δώσουμε ένα όνομα, έναν λόγο ύπαρξης. Ύστερα, ο υπολογιστής θα πρέπει να ξαναμεταφράσει αυτό το κάτι ούτως ώστε να το καταλάβουμε εμείς, ως τελικοί χρήστες αυτού του μηχανήματος. Αυτό που στην ουσία «κυκλοφορεί» στο εσωτερικό του υπολογιστή είναι bit. Στο εσωτερικό ακόμα και αυτή τη στιγμή που μιλάμε, υπάρχουν στο εσωτερικό δισεκατομμύρια bit που «περιφέρονται» και που αποτελούν την πληροφορία που μπορεί να διαβάσει ένας υπολογιστής και κατ’ επέκταση ο τελικός χρήστης. Το bit μπορεί να παρομοιαστεί με το ηλεκτρικό ρεύμα ή με μια λάμπα. Είναι παρών στον χώρο και στον χρόνο, δε μπορούμε να το δούμε, όμως μπορούμε να καταλάβουμε ότι υπάρχει από το αποτέλεσμα που έχουμε μπροστά μας. Όπως όταν ανοίγουμε τον διακόπτη και βλέπουμε το φως να λάμπει, έτσι γνωρίζουμε πως υπάρχει ένα bit που ταξιδεύει προς τη λάμπα, κάνοντάς τη να φωτίσει το δωμάτιο που είμαστε. Όταν έχουμε τον διακόπτη κλειστό, δηλαδή δεν αφήνουμε το ρεύμα ή στο εν λόγω άρθρο το bit να περάσει, τότε το bit μας είναι στη κατάσταση off. Όταν ανοίξουμε τον διακόπτη (κλείνω το κύκλωμα) αφήνουμε ένα bit να περάσει από αυτόν κάτι που έχει ως αποτέλεσμα να ανάψει τη λάμπα. Αυτή είναι η κατάσταση on που παίρνει το bit. Ήδη έχετε αντιληφθεί πως το bit έχει μόλις δύο καταστάσεις, on και off, ή 0 και 1 και δε μπορεί να έχει παραπάνω. Το αποτέλεσμα όσων βλέπετε στην οθόνη, είναι ο συνδυασμός τέτοιων αριθμών, οι οποίοι εναλλάσσονται με ασύλληπτη ταχύτητα. Οι φωτογραφίες τα βίντεο και όλα τα δεδομένα μας αναπαριστώνται στην ουσία με δεκάδες εκατομμύρια bit. Ο υπολογιστής για να δημιουργήσει αυτές τις πληροφορίες εφοδιάζεται με εκατομμύρια διακόπτες οι οποίοι άλλοτε επιτρέπουν το bit να περάσει (που στην ουσία επιτρέπουν τον ηλεκτρισμό να περάσει), είτε του το αποτρέπουν (κατάσταση off). Το bit από μόνο του δεν έχει κάποια συγκεκριμένη σημασία, αρκεί να του δώσουμε εμείς έναν λόγο ύπαρξης, μέσω του κώδικα και αργότερα μέσω μιας γλώσσας προγραμματισμού ούτως ώστε να έχουμε και ένα γραφικό περιβάλλον όπως «παράθυρα».
Πύλες
Από πού πηγάζει όμως το bit; Τι φτιάχνει και τι αλλάζει το bit; Στη προηγούμενη παράγραφο αναφέραμε το παράδειγμα με τη λάμπα και τον διακόπτη. Έχουμε ήδη αναφέρει πως το bit αναπαριστά τον ηλεκτρισμό που ρέει στα καλώδια του συστήματος οπότε το μόνο που μένει να αποσαφηνίσουμε είναι ο διακόπτης. Το μεγαλύτερο μέρος ενός υπολογιστή αποτελείται από τις πύλες (gates). Σαν μονάδα, μια πύλη είναι ένας διακόπτης που έχει δύο εισόδους (input), απ’ όπου έρχονται τα bit, και ένα output από το οποίο παίρνουμε το αποτέλεσμα, το οποίο δεν είναι τίποτα άλλο από ένα και μόνο ένα bit. Αυτό είναι ένα από τα μικρότερα κομμάτια που απαρτίζουν τον υπολογιστή, και ταυτόχρονα ένα από τα σημαντικότερα που θα συναντήσουμε σε αυτό τον οδηγό. Η πύλη όπως ονομάζεται μπορεί να πάρει «μόνη» της την απόφαση για το τι είδους bit θα είναι το τελικό, γι’ αυτό και ονομάζεται «λογική πύλη». Φανταστείτε πως δε χρειάζεται κάποιο «ψηφιακό χέρι» για να πατήσει τον διακόπτη όπως στη περίπτωση της λάμπας και οι λειτουργίες της πύλης, είναι προρρυθμισμένες να κάνουν την διαδικασία ανάλογα με το εάν έχουν ή όχι κάποιο bit στην είσοδό τους. Το αποτέλεσμα της μια πύλης συνδέεται με κάποια είσοδο μιας άλλης πύλης σχηματίζοντας ολόκληρες συστοιχίες εκατομμυρίων πυλών στο εσωτερικό ενός υπολογιστή. Η πιο γνωστή και αξιόπιστη είναι η πύλη NAND, ενώ σημειώνεται ότι μπορούμε να συνδυάσουμε πολλές και διαφορετικές πύλες μεταξύ τους χτίζοντας έτσι διάφορα υποσυστήματα, όπως μονάδες μνήμης (με 4 πύλες NAND φτιάχνουμε ένα bit αποθηκευτικού χώρου), enablers και ολόκληρα υποσυστήματα όπως μερικά που θα δούμε παρακάτω.
Υπάρχουν πολλών ειδών πύλες και πολλοί συνδυασμοί αυτών που χρησιμοποιούνται για διάφορους λόγους, όμως η πιο βασική είναι αυτή που προαναφέραμε, η NAND. Από αυτή, μπορούμε πρακτικά να φτιάξουμε όλες τις άλλες και να τις χρησιμοποιήσουμε σε άλλα υποσυστήματα σε έναν υπολογιστή. Οι πύλες, σαν μονάδες, έχουν σκοπό να αλλάξουν το bit, από 0 σε 1 δηλαδή να αφήσουν ή να αποτρέψουν την διέλευση του ρεύματος στην επόμενη πύλη. Η πύλη σαν μονάδα μπορεί να μας φαίνεται σχεδόν άχρηστη και αποκτά πραγματικό νόημα μόνο εάν συνδέσουμε μερικές ακόμα ούτως ώστε να δημιουργήσουμε κάτι χρήσιμο όπως για παράδειγμα ένα bit μνήμης.
Μια πύλη διαθέτει δύο εισόδους και μια έξοδο. Στις δύο εισόδους έρχονται τα bit, και η πύλη έχοντας όπως είπαμε «κρίση» αναλαμβάνει να αποφασίσει εάν θα περάσει κάποιο bit στο επόμενο στάδιο, και από εκεί στο επόμενο, έως ότου φτάσει στον προορισμό του. Για τον λόγο αυτό, έχουν δημιουργηθεί μερικοί πίνακες, οι οποίοι αναφέρουν ανάλογα με τον τύπο της πύλης, ποιο bit θα περάσει στο επόμενο «στάδιο».
Ξεκινάμε παίρνοντας ως παράδειγμα την πύλη NAND. Η πύλη NAND όπως και κάθε άλλη πύλη, έχει δύο εισόδους και μια έξοδο του bit (πάνω εικόνα). Εάν κάποια από τις δύο είναι στην κατάσταση on (σκέτο on από εδώ και στο εξής), τότε το αποτέλεσμα θα είναι on. Εάν είναι και οι δύο είσοδοι «off», τότε το αποτέλεσμα θα είναι το (Negative του AND) δηλαδή on, ενώ εάν και οι δύο είσοδοι είναι on, τότε το τελικό bit θα είναι Off κάτι που σημαίνει πως δε θα υπάρξει ηλεκτρισμός στην έξοδο.
Για να φτιάξουμε την επόμενη πύλη, αυτό που θα κάνουμε είναι να συνδέσουμε μεταξύ τους τις δύο εισόδους της NAND. Αυτό που δημιουργείται είναι η πύλη NOT κάτι που σημαίνει πως το bit της εξόδου ΔΕΝ (NOT) θα είναι το ίδιο με αυτό της εισόδου, και εφόσον το bit μπορεί να είναι είτε on είτε off τότε η πιθανή επιλογή είναι πάντοτε μια και μοναδική. Εάν η είσοδος είναι on, η έξοδος θα γίνει off και εάν η είσοδος είναι off τότε η έξοδος θα είναι on. Easy peasy!
Παίρνοντας μια NAND και μια NOT και συνδέοντάς τες, μπορούμε να φτιάξουμε μια πύλη AND. Η πύλη αυτή είναι στην ουσία το αντίθετο της NAND καθώς ότι αποτέλεσμα βγαίνει από τη NAND, αλλάζει στο ακριβώς αντίθετο από την NOT που ακολουθεί. Πιο συγκεκριμένα, η AND λειτουργεί με τον ίδιο τρόπο όπως αναφέρει και η ονομασία της. Για να έχουμε on στην έξοδο, τότε η μια είσοδος ΚΑΙ (AND) η άλλη είσοδος θα πρέπει να είναι on. Ειδάλλως θα είναι off. Σε αντίθεση με τη NAND, εάν έχουμε δύο off states, το αποτέλεσμα θα διατηρηθεί ως έχει, ενώ το ίδιο θα γίνει εάν έχουμε δύο on bit στις εισόδους, κάτι που όπως είπαμε είναι το ακριβώς αντίθετο με τις NAND πύλες που μελετήσαμε νωρίτερα.
Τώρα που έχουμε μάθει πως λειτουργούν οι βασικές μας πύλες, καλό είναι να αναφέρουμε μερικά πράγματα που μπορούμε να φτιάξουμε με αυτές. Αναφέραμε πιο πάνω πως με τέσσερις NAND μπορούμε να φτιάξουμε μια πολύ βασική μονάδα μνήμης. Αυτή η μνήμη μπορεί να αποθηκεύσει ένα bit. Εφόσον γνωρίζουμε πως το bit δεν είναι τίποτα άλλο παρά ηλεκτρισμός, τότε μπορούμε να φανταστούμε το αποθηκευμένο bit ως πρακτικά οποιαδήποτε πληροφορία. Η μονάδα αυτή έχει ένα input, μια είσοδο S (set) η οποία όταν διαπερνάται από ρεύμα (bit) δίνει την εντολή αποθήκευσης του bit της εισόδου και τέλος το output. Χοντρικά, εάν το S είναι on, τότε η μονάδα μνήμης μας θα αποθηκεύσει το bit του input και στην ουσία θα είναι το ίδιο με το output. Εάν η είσοδος είναι off και το S είναι on, το output θα παραμείνει στην ίδια κατάσταση, όταν το S ήταν στο on.
Παίρνοντας 8 από αυτές τις μονάδες και συνδέοντάς τες, δημιουργούμε αυτό που στην ουσία ονομάζεται ένα byte, κάτι που γνωρίζουμε από τις μεθόδους αποθήκευσης που έχουμε κάπου γύρω μας αυτή τη στιγμή. Εφόσον ένα bit έχει δύο καταστάσεις, τα δύο bit Θα έχουν τέσσερις. Εάν προσθέσουμε και ένα τρίτο, τότε οι διαθέσιμες καταστάσεις θα γίνουν οκτώ. Με κάθε ένα bit που προσθέτουμε, διπλασιάζουμε τον τελευταίο αριθμό των καταστάσεων. Έτσι, εάν τοποθετήσουμε και τέταρτο, πάμε στις 16 πιθανές καταστάσεις, οι πέντε έχουν 32, οι έξι 64, οι επτά 128 και οι οκτώ 256 πιθανές καταστάσεις. Επίσης, για να μπορέσουμε να φτιάξουμε κάποιον κώδικα, και να χρησιμοποιήσουμε όσο το δυνατόν ολόκληρο το ποσό των 256 καταστάσεων ενός byte, η σειρά των καταστάσεων (00001101) είναι άκρως σημαντική.
Κώδικας: Γλώσσα μηχανής και προγραμματισμού
Τα bit όπως προαναφέραμε δεν είναι κάτι συγκεκριμένο. Για να τα κάνουμε κάτι συγκεκριμένο και για να μας φανούν χρήσιμα θα πρέπει να τα συσχετίσουμε με κάτι. Ο κώδικας είναι κάτι το οποίο μας εξηγεί τι σημαίνει κάτι άλλο σε έναν υπολογιστή, για να μπορέσουμε να βασιστούμε επάνω του και να το ξαναμετατρέψουμε σε κάτι που μπορούμε να καταλάβουμε εμείς ως τελικός χρήστης του υπολογιστή. Ο κώδικας αναφέρεται και ως «γλώσσα μηχανής», όμως γιατί οι άνθρωποι δε χρησιμοποιούν μόνο τη γλώσσα των μηχανών αλλά χρησιμοποιούν μια άλλη για να μεταφράσουν αυτά που μας λέει ο υπολογιστής; Δε θα ήταν πιο γρήγορο για τον υπολογιστή;
Η απάντηση είναι ναι, θα ήταν πιο εύκολο για τον υπολογιστή να ολοκληρώσει μια εργασία, όμως είναι αδύνατο να την καταλάβουμε εμείς οι άνθρωποι. Για αυτό τον λόγο χρησιμοποιούμε τη συμβολική γλώσσα η οποία είναι πιο εύκολο να τη θυμηθεί ένας προγραμματιστής και η οποία συνήθως δίνεται από τον κατασκευαστή του επεξεργαστή. Για τη μετάφραση χρησιμοποιείται ένας συμβολομεταφραστής (assembler) ενώ η αντίθετη διαδικασία γίνεται από τον αντι-συμβολομεταφραστή (disassembler). Αυτή ή γλώσσα ονομάζεται χαμηλού επιπέδου και στην ουσία δίνει μια ονομασία στα bit ούτως ώστε να είναι πιο εύκολη η εργασία μαζί τους.
Οι πληροφορίες (τα bit) που αποθηκεύονται από το σύστημα αναφέρονται ως απλά “code” και στην ουσία δε σημαίνουν τίποτα απολύτως για εμάς, μέχρι να βρεθεί κάποιος «διερμηνέας» (ήτοι, μια χαμηλού επιπέδου γλώσσα προγραμματισμού) που θα κάτσει να αποκωδικοποιήσει (decode) τις πληροφορίες και να τις παρουσιάσει με έναν πιο απλοϊκό τρόπο. Η αποκωδικοποίηση γίνεται από τον μεταγλωττιστή (complier) που έχει δημιουργήσει ο άνθρωπος για να μπορέσει να χειριστεί τα bit της γλώσσας που πηγάζει από τη μηχανή. Στη συνέχεια σειρά έχει η δημιουργία των προγραμμάτων από μια άλλη γλώσσα, αυτή τη φορά υψηλού επιπέδου όπως η C#, η Java. Το παρακάτω γράφημα οπτικοποιεί τη κλίμακα.
Υποσυστήματα ενός 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.
Εισαγωγή στο Overclocking από μια λιγότερο "πολύπλοκη" ματιά
Κάπου εδώ αφήνουμε τα της αρχιτεκτονικής ενός επεξεργαστή και φτάνουμε σε ότι θα μας απασχολήσει κατά τη διάρκεια του overclocking. Στο προηγούμενο κεφάλαιο αναφέραμε μερικά από θεμελιώδη χαρακτηριστικά ενός επεξεργαστή, όπως τις πύλες και τους καταχωρητές. Αναφέραμε εκτός από τα βασικά υποσυστήματα τους διαύλους επικοινωνίας μεταξύ αυτών και τη μονάδα ελέγχου η οποία περιλαμβάνει το ρολόι (clock) του επεξεργαστή.
Για να πραγματοποιηθεί η επικοινωνία μεταξύ των buses και φυσικά για να μεταφερθούν δεδομένα, είναι απαραίτητο το «κίνητρο» που θα αναλάβει να «κινήσει» τα δεδομένα στις «λεωφόρους». Αυτό απαιτείται όχι μόνο από τα buses μεταξύ των υποσυστημάτων, αλλά και στα επιμέρους τμήματα ενός CPU, που αποτελούνται ως επί το πλείστον από πύλες (gates). Πρώτα όμως, θα πρέπει να αναφέρουμε τι εννοούμε όταν λέμε συχνότητα λειτουργίας ενός υποσυστήματος.
Κάθε υπολογιστής έχει ένα bit που «ξεχωρίζει». Το «ξεχωριστό» αυτό bit δίνει τον ρυθμό στη κυκλοφορία των υπόλοιπων bit μέσα στον επεξεργαστή όπως αναφέραμε και λίγο παραπάνω, είτε πρόκειται για bit που ελέγχονται από άλλα bit είτε από κάποιους διακόπτες - πύλες. Αυτό που στην πραγματικότητα καθορίζει το υποσύστημα, είναι η συχνότητα με την οποία οι πύλες αλλάζουν κατάσταση από 0 σε 1 ή αλλιώς, κάθε πότε μεταφέρεται ή όχι κάποιο bit πληροφορίας. Το συγκεκριμένο bit εναλλάσσεται συνεχώς από 0 σε 1 και αποτελείται από μια πύλη NOT της οποίας η έξοδος είναι συνδεδεμένη με την είσοδό της. Έτσι εάν η είσοδος είναι 1 τότε η έξοδος είναι 0. Στη συνέχεια η είσοδος θα γίνει 0 και η έξοδος 1 τη 2η φορά κάτι που επαναλαμβάνεται δισεκατομμύρια φορές το δευτερόλεπτο. Αυτή η πύλη είναι "χοντρικά" και αυτή που δίνει τον ρυθμό στον υπολογιστή.
Συχνότητα Λειτουργίας (Clock Speed) ή Ταχύτητα Ρολογιού είναι ο αριθμός των εντολών που εκτελούνται ανά δευτερόλεπτο και μετριέται σε Hertz (ή MHz = εκ. υπολογισμοί το δευτερόλεπτο, ή GHz δις. υπολογισμοί το δευτερόλεπτο). Το clock που υπάρχει μέσα στον επεξεργαστή δεν είναι το μοναδικό καθώς υπάρχουν και μερικά ακόμα που βοηθούν το πρώτο. Ο λόγος για τα clock enable και clock set τα οποία ουσιαστικά είναι οι πρόσθετοι ρυθμιστές της κυκλοφορίας, που σκοπό έχουν να «ευθυγραμμίσουν» τον χρόνο στον οποίο γίνεται η ενεργοποίηση ενός bit (enable) και η αποθήκευσή του από μια άλλη μονάδα (set). Το clock συνδέεται με τη μονάδα stepper που αποτελείται από memory bits τα οποία συνδέονται όμως με διαφορετικό τρόπο. Για να αποθηκεύσουμε (set) κάποιο bit θα πρέπει πρώτα να το ενεργοποιήσουμε (enable) και να το οδηγήσουμε μέσω των buses στον προορισμό του που μπορεί να είναι οποιαδήποτε σημείο του επεξεργαστή, ή συσκευής που συνδέεται άμεσα και έμμεσα με αυτόν.
Το ρολόι είναι παραπλήσιο με το BCLK ή FSB (Base Clock και Front Side Bus αντίστοιχα), έχει και αυτό μια συχνότητα λειτουργίας με την οποία ρυθμίζει τη ροή και τη ταχύτητα των bit/δεδομένων. Ο χρόνος που χρειάζεται για να αλλάξει η κατάσταση του υποσυστήματος (πύλη ή bus) από το μηδέν στο ένα (που είναι στην ουσία οι εντολές που μεταφέρονται προς τις διάφορες τοποθεσίες του επεξεργαστή) λέγεται περίοδος ρολογιού. Όσο πιο μικρή η περίοδος που διανύεται από το 0 στο 1, ανά δευτερόλεπτο, τόσο πιο γρήγορα ολοκληρώνεται ένας κύκλος, άρα τόσο ταχύτερος είναι ο επεξεργαστής (ή τόσο υψηλότερη συχνότητα λειτουργίας έχει σε MHz). Το πόσο γρήγορα εκτελεί τις εντολές του ο επεξεργαστής ορίζεται από τη συχνότητα λειτουργίας του ρολογιού που αναφέραμε πιο πάνω. Αυτό το BCLK «τρέχει» συνήθως από το εσωτερικό του CPU όπως είδαμε πιο πάνω. Κάθε δίαυλος όπως του USB, ή των SATA ή των PCIe θυρών (ο ελεγκτής του τελευταίου βρίσκεται στο εσωτερικό πλέον των CPU) διαθέτει δικό του αποκλειστικό clock που βρίσκεται συνήθως στη μητρική, ή/και στο chipset αυτής και φροντίζει ώστε τα δεδομένα να μεταφέρονται με έναν συγκεκριμένο ρυθμό, ειδάλλως θα υπάρξει απώλεια δεδομένων, δηλαδή bit, κάτι που θα έχει ως αποτέλεσμα μπλε οθόνες και άλλα σχετικά. Μερικά από αυτά τα συναντάμε μετά από ένα αποτυχημένο overclock άλλωστε. Το ρολόι ενός επεξεργαστή στη σύγχρονη τεχνολογία είναι συνδεδεμένο με διάφορα υποσυστήματα όπως τη μνήμη RAM και τις κάρτες επέκτασης PCIe όμως από αυτό αξίζει να κρατήσουμε πως κάθε φυσικός δίαυλος έχει τη δική του συχνότητα, το δικό του ρολόι για τη κυκλοφορία των δεδομένων.
Σε κάθε κύκλο ή παλμό ρολογιού, δηλαδή στην μεταβολή του σήματος από μηδέν σε ένα όπως ορίζει η κυματομορφή square, πραγματοποιείται θεωρητικά μια εντολή. Λέμε θεωρητικά, διότι μια εντολή μπορεί να χρειαστεί παραπάνω κύκλους ρολογιού, οπότε και η συχνότητα μπορεί να είναι «εικονική» και η ταχύτητα της ολοκλήρωσης εξαρτάται από την αρχιτεκτονική και τη σχεδίαση των υπόλοιπων τμημάτων του επεξεργαστή. Ένας ακόμα παράγοντας που επηρεάζει την ταχύτητα ολοκλήρωσης μιας εργασίας είναι και ο κώδικας ή/και η γλώσσα προγραμματισμού στην οποία είναι γραμμένο το πρόγραμμα και το κατά πόσο χρησιμοποιεί όλες τις διαθέσιμες εντολές του, κάτι που πολλές φορές ονομάζουμε και hardware acceleration. Το clock παίζει τον ρόλο του μετρονόμου στη συγκεκριμένη διαδικασία, συντονίζοντας τις εργασίες που γίνονται σε ολόκληρο τον υπολογιστή. Στην ουσία, αυτό που θα πρέπει να κρατήσουμε είναι πως όσο μικρότερη διάρκεια έχει ένας κύκλος ή παλμός ρολογιού, τόσο υψηλότερη είναι και η συχνότητα λειτουργίας του επεξεργαστή μας καθώς μπορεί να πραγματοποιήσει περισσότερους υπολογισμούς ας πούμε στο ίδιο χρονικό διάστημα. Άρα ο κύκλος ρολογιού είναι μονάδα μέτρησης του χρόνου αντίστροφη της συχνότητας λειτουργίας.
Για να κατηγοριοποιήσουμε τις επιδόσεις ενός επεξεργαστή χρησιμοποιούμε τρία βασικά κριτήρια. Τα κριτήρια αυτά είναι: 1ον των σετ των εντολών που έχει προεγκατεστημένα και τα οποία τον βοηθούν να κάνει διάφορους υπολογισμούς πιο γρήγορα εφόσον τα αξιοποιήσει ο developer της εφαρμογής. 2ον τον αριθμό των bits που μπορεί να διαχειριστεί ταυτόχρονα (aka bandwidth) και 3ον τη Συχνότητα Λειτουργίας του που μετριέται σε megahertz όπου μας δείχνει τον αριθμό των κύκλων ρολογιού που πραγματοποιούνται ανά δευτερόλεπτο. Τα δύο πρώτα αναφέρονται στην αρχιτεκτονική του ενώ ακόμα και το τρίτο εξαρτάται σε μεγάλο βαθμό από τα πρώτα, ούτως ώστε κάθε κύκλος ρολογιού να μην πηγαίνει «χαμένος» περιμένοντας κάποια άλλη διεργασία στο εσωτερικό του επεξεργαστή. Για παράδειγμα ένας Skylake Core i7 6700K χρονίζεται στα 4000MHz και σημαίνει ότι πραγματοποιεί 4 δισεκατομμύρια κύκλους ρολογιού ανά δευτερόλεπτο και θεωρητικά υπολογισμούς το δευτερόλεπτο. Σε κάθε κύκλο ρολογιού γίνεται μια ενέργεια/λειτουργία από τον επεξεργαστή. Ένας κύκλος ρολογιού, είναι η μικρότερη μονάδα του χρόνου που μπορεί να διαρκέσει μια εργασία, όμως δεν υπάρχει όριο ως προς το πόσο πολύ μπορεί να διαρκέσει, καθώς μια πιο απαιτητική μπορεί να καταλάβει περισσότερους του ενός κύκλου μέχρι να ολοκληρωθεί. Σημειώνεται επίσης το εξής: Όπως είπαμε και στα αρχικά κεφάλαια, στο εσωτερικό του υπολογιστή υπάρχουν τα bit, που στην ουσία είναι ηλεκτρικό ρεύμα. Το bit έχει δύο καταστάσεις, 0 και 1 και κάθε εργασία όπως ένα γράμμα, έχει έναν μοναδικό τρόπο που αναπαρίσταται στον «ψηφιακό καμβά» μας. Το bit έχει μια διεύθυνση στον χώρο όμως δε μπορούμε να το δούμε καθώς ο ηλεκτρισμός είναι όπως είδαμε «αόρατος».
Συνεχίζοντας, το BCLK είναι κάτι που ποτέ δεν παραμένει «σταθερό» από αρχιτεκτονική σε αρχιτεκτονική και κατασκευαστή σε κατασκευαστή, όμως φανταστείτε πως κάθε bus έχει τη δική του συχνότητα λειτουργίας γιατί διαφορετικά η μεταφορά δεδομένων από τους εν λόγω διαύλους θα ήταν αδύνατη. Στις νεότερες αρχιτεκτονικές όπως αυτή των Skylake, βλέπουμε πως το BCLK το οποίο είναι συνδεδεμένο μόνο με τον ελεγκτή μνημών RAM (IMC – integrated memory controller) και όχι και με τις PCIe όπως ήταν κάποτε, έχει μεγαλύτερα περιθώρια overclocking από την αμέσως προηγούμενη γενιά Haswell επεξεργαστών. Αυτό σημαίνει ότι ναι μεν μπορούμε να αυξήσουμε τη συχνότητα του BCLK και να υπερχρονίσουμε έτσι τον επεξεργαστή μας (K ή non K), όμως αυξάνουμε παράλληλα και τη συχνότητα των μνημών, αλλά όχι του «ευαίσθητου» διαύλου PCIe. Αρκετές φορές και ειδικά όταν το BCLK ήταν συνδεδεμένο με τις PCIe κάρτες επέκτασης, οι κατασκευαστές για να αποφευχθούν τα προβλήματα σταθερότητας που μπορεί να προκληθούν από υψηλά νούμερα αυτού του bus, τοποθετούσαν ειδικά straps, κλειδώνοντας ουσιαστικά τα «δύστροπα» buses όπως το PCIe στη «λειτουργική» συχνότητα των 100MHz, αφήνοντας μας να παίξουμε με το BCLK της συχνότητας του επεξεργαστή και των μνημών. Το αυξημένο strap χρησιμοποιείται σε περιπτώσεις όπου θέλουμε να τρέξουμε τις RAM ή την ενσωματωμένη GPU του επεξεργαστή σε υψηλότερη συχνότητα απ’ ότι υποστηρίζεται κανονικά, κερδίζοντας έτσι μερικά MHz στα εν λόγω υποσυστήματα. Βέβαια τα straps ήταν μόλις δύο, των 125MHz και των 167MHz και έτσι τα πράγματα ήταν το ίδιο περιορισμένα παρά τη καλή διάθεση των συνεργατών.
Πολλαπλασιαστής Επεξεργαστή (Core Ratio)
Ο πολλαπλασιαστής του επεξεργαστή είναι άρρητα συνδεδεμένος με το BCLK. Στην ουσία είναι η εσωτερική συχνότητα του επεξεργαστή μας (internal clock). Κανονικά το BCLK είναι η βασική συχνότητα λειτουργίας του επεξεργαστή, όμως, επειδή εδώ και χρόνια οι επεξεργαστές επωφελούνταν από τις υψηλές συχνότητες για να αποδώσουν καλύτερα σε πολλές εφαρμογές οι μηχανικοί σκαρφίστηκαν τον πολλαπλασιαστή, που... πολλαπλασιάζει τη συχνότητα του BCLK εσωτερικά του επεξεργαστή. Η τελική συχνότητα λειτουργίας (ή αλλιώς εσωτερική) βγαίνει από τον πολλαπλασιασμό του system ή base clock (πχ 100MHz) με τον εσωτερικό πολλαπλασιαστή (πχ x35). Κάπως έτσι δημιουργείται η εξίσωση 100 x 35 = 3500MHz όπου η τελευταία είναι και η εσωτερική συχνότητα λειτουργίας του επεξεργαστή. Ο πολλαπλασιαστής είναι ένα σύνολο κυκλωμάτων που δημιουργεί αρμονικές συχνότητες («ακριβή αντίγραφα») του Base Clock βοηθώντας έτσι ώστε σε κάθε κύκλο ρολογιού του εξωτερικού bus (100MHz) να πραγματοποιούνται τόσες εργασίες ανά δευτερόλεπτο, όσες ορίζει ο αριθμός του πολλαπλασιαστή. Παράλληλα αναλαμβάνει να καθαρίσει το εισερχόμενο σήμα. Ένα κύκλωμα γνωστό και ως PLL.
Memory Divider (DRAM Ratio)
Ο διαιρέτης των μνημών του συστήματος είναι και αυτός άρρητα συνδεδεμένος με το BCLK. Η συχνότητα των RAM είναι αποτέλεσμα του πολλαπλασιασμού που κάνουμε με τον εν λόγω δίαυλο. Ο εκάστοτε διαιρέτης πολλαπλασιάζει το BUS του επεξεργαστή για να μας επιστρέψει τη τελική συχνότητα λειτουργίας των μνημών μας. Στα high end Chipsets για παράδειγμα, όπως το Z170, παρέχονται πολλοί διαιρέτες για να «παίξουμε» που μπορεί να ωθήσουν τις μνήμες DDR4 έως και τα 4333, εν έτη 2016. Ο διαιρέτης των μνημών είναι κάτι που αλλάζει ακόμα και σε μητρικές του ίδιου chipset και του ίδιου του κατασκευαστή, όμως ακολουθεί την ίδια λογική με το BCLK. Υπολογίζεται δηλαδή λαμβάνοντας υπόψιν το Base Clock του επεξεργαστή, μιας και πλέον ο ελεγκτής των μνημών (IMC) βρίσκεται στο εσωτερικό του CPU. Επίσης, ένας παράγοντας που λαμβάνουμε υπόψιν είναι και την αναλογία του BCLK/FSB με τις DRAM. Ο λόγος μεταξύ του ρολογιού των RAM και του ρολογιού του FSB ή του BCLK που βγαίνει εάν διαιρέσουμε του δύο αριθμούς, όπως μας παρουσιάζονται στο CPU-Z. Το αποτέλεσμα θα μας επιστρέψει στην ουσία τη πραγματική συχνότητα των μνημών και όχι το double data rate τους που μεταφράζεται και σε MT – Mega Transfer ανά δευτερόλεπτο. Η συγκεκριμένη διαδικασία είναι ανάλογη με τη συχνότητα με την οποία πραγματοποιούνται οι υπολογισμοί που αναφέραμε πιο πάνω, όμως με το Transfer μετράμε τον αριθμό των λειτουργιών που μεταφέρουν δεδομένα ανά δευτερόλεπτο.
Εδώ έρχεται στο προσκήνιο και το «φαινόμενο» Double Data Rate στο οποίο ουσιαστικά μεταφέρονται δύο δεδομένα σε κάθε χτύπο ρολογιού (ένα στην άνοδο και ένα στη κάθοδο) όμως εμείς συνηθίζουμε να αναφερόμαστε μόνο στον έναν, ή αλλιώς στη μισή συχνότητα λειτουργίας από αυτή που βλέπουμε στο «ταμπελάκι» τους όταν τις αγοράζουμε. Η «μισή» συχνότητα είναι και το πραγματικό clock των μνημών. Κάθε μνήμη έχει τη συγκεκριμένη συχνότητα λειτουργίας που βγαίνει από τον πολλαπλασιασμό με το BCLK που προ-αναφέραμε. Η συχνότητα που βλέπουμε στο CPU-Z είναι πάντοτε η «μισή» και αναφέρεται στον έναν εκ των δύο χτύπων, οπότε για να υπολογίσουμε την πραγματική απλά πολλαπλασιάζουμε επί 2. Μια μνήμη που αναγράφει επάνω της 1600MHz μπορεί να πραγματοποιήσει στην ουσία 1600 εκ. Transfers το δευτερόλεπτο σύμφωνα με το πρότυπο Double Data Rate. Η πραγματική συχνότητα ανέρχεται σε 800MHz και αυτό είναι που μας δίνει τον λόγο μεταξύ των RAM και του FSB. Εάν στο ανωτέρω σύστημα το FSB είναι 200MHz τότε ο λόγος FSB/DRAM θα είναι 1:4. Η εξίσωση που δημιουργείται είναι DRAM / FSB * FSB Frequency = DRAM Frequency.
Κβαντικά πράγματα Εκτός από τα τυπικά 0 και 1 στα υπολογιστικά συστήματα, έχουμε και τον συναρπαστικό κόσμο του κβαντικού computing, όπου αξίζει να αναφέρουμε πως πρόκειται για κάτι που εφόσον μπει σε λειτουργική μορφή θα ανατρέψει τα πάντα στον χώρο των υπολογιστών που γνωρίζουμε σήμερα.
Όπως στα τυπικά υπολογιστικά συστήματα συναντάμε το bit ως μικρότερη μονάδα πληροφορίας που αναφέρεται στο ηλεκτρικό ρεύμα που διαπερνά τις πύλες ενός υποσυστήματος στον υπολογιστή, στο κβαντικό computing έχουμε το κβαντικό bit, ή qbit. Σε αντίθεση με το τυπικό bit που μπορεί να έχει δύο καταστάσεις (0 και 1), το κβαντικό bit μπορεί να πάρει όποια κατάσταση θέλει τη φορά, πολλαπλασιάζοντας έτσι τις εργασίες που μπορεί να κάνει ανά δευτερόλεπτο. Πρακτικά, οι ερευνητές που ήρθαν αντιμέτωποι με το φαινόμενο έψαχναν… ψύλλους στ’ άχυρα, ένα κυνήγι που συνεχίζεται μέχρι και σήμερα. Αν και έχει γίνει σημαντική πρόοδος για την απόδειξη της λειτουργικότητας της εν λόγω τεχνολογίας, βρίσκεται ακόμη σε πρώιμο στάδιο έχοντας αρκετά σημεία που δεν έχουν επιβεβαιωθεί/εξερευνηθεί, κάνοντας έτσι την απόδειξη ένα αρκετά δύσκολο επίτευγμα το οποίο δεν έχει… ξεκλειδωθεί. Όπως και να 'χει εμείς θα είμαστε εκεί όταν συμβεί το breakthrough στο κβαντικό και θα ενημερώσουμε με μια ή παραπάνω ειδήσεις. (no pun intended).
'Facts' για τον υπερχρονισμό:
Ο επεξεργαστής διαθέτει πλήθος υπομονάδων στο εσωτερικό του που χρησιμοποιούνται για διαφορετικές εργασίες, συμπληρώνουν η μια την άλλη και συνδέονται με ειδικές οδούς που ονομάζονται buses. Το Clock είναι ένα ρολόι εσωτερικά του επεξεργαστή, του οποίου ο παλμός έχει σταθερό ρυθμό και φροντίζει την ομαλή διακίνηση της πληροφορίας μεταξύ των σημαντικών συσκευών του υπολογιστή. Το baseclock συγχρονίζει υποσυστήματα όπως τους ελεγκτές IMC (μνήμη) και τον PCIe (κάρτες γραφικών) και αναφέρεται συνήθως στο freegr
Παρά τα διάφορα και τα περίπλοκα πράγματα που μπορεί να κάνει κάποιος με έναν ηλεκτρονικό υπολογιστή σήμερα, η λειτουργία του εξακολουθεί και παραμένει αρκετά απλή και είναι ίδια εδώ και πολλά χρόνια, εδώ και πάνω από 60 χρόνια. Εκτός από την απλή λειτουργία των υπολογιστών την οποία θα αναφέρουμε παρακάτω, εξίσου απλές είναι και οι συσκευές από τις οποίες αποτελείται και μαζί συνθέτουν ένα υπολογιστικό σύστημα. Οι διαφορές τους εντοπίζονται κυρίως στον τρόπο που χρησιμοποιούμε τις συσκευές αυτές, όμως οι θεμελιώδεις αρχές τους παραμένουν ίδιες. Το μόνο που έχει αλλάξει από αυτά τα χρόνια είναι ο τρόπος που κατασκευάζονται και η τιμή που πωλούνται μαζί με τις εργασίες που μπορούμε να κάνουμε
Όπως παρατηρούμε γύρω μας, ο κόσμος στον οποίο ζούμε επηρεάζεται από διάφορα φαινόμενα. Το αυτοκίνητό μας λειτουργεί χάρη στα καύσιμα, ενώ άλλα φαινόμενα βασίζονται στους νόμους της φυσικής - λόγου χάρη τη βαρύτητα. Τα φαινόμενα αυτά ακολουθούν κάποιους κανόνες που δημιουργήθηκαν είτε από τη φύση είτε από τον άνθρωπο ενώ θα δούμε πως ακόμα και στους υπολογιστές κυριαρχεί η έννοια της λογικής. Η κινητήριος δύναμη ενός υπολογιστή και ένα από τα πιο σημαντικά πράγματα που θα πρέπει να κρατήσετε από την ανάγνωση αυτού του οδηγού, είναι το ηλεκτρικό ρεύμα. Στον συγκεκριμένο οδηγό θα αναλύσουμε με απλό και κατανοητό τρόπο τα τμήματα που αποτελείται ένα υπολογιστικό σύστημα και θα συνδέσουμε τις ανακαλύψεις μας με το overclocking, τη μέθοδο που χρησιμοποιούμε για να αυξήσουμε τις επιδόσεις του υπολογιστή. Πολλοί ίσως έχετε σχηματίσει μια λανθασμένη εικόνα για τους υπολογιστές. Όλοι ίσως σε κάποια φάση να το έχουμε κάνει, μέχρι που κάτσαμε και διαβάσαμε, μελετήσαμε, για να φτάσουμε σε ένα Χ επίπεδο, το οποίο συνεχίζει και είναι «ταπεινό» σε σχέση με αυτούς που στην ουσία δημιουργούν τους υπολογιστές που απολαμβάνουμε από την άνεση του σπιτιού μας. Κάθε υπολογιστής μπορεί να κάνει μια σειρά από πρακτικά άπειρες εργασίες.
Μπορεί να παίξει παιχνίδια, να αναπαραγάγει βίντεο και να παρουσιάσει το κείμενο που διαβάζετε στις οθόνες σας όμως όπως είπαμε και στη προηγούμενη παράγραφο, οι εργασίες που κάνει είναι απλές, έχουν μια λογική σειρά και είναι εύκολα κατανοητές. Οι παραπάνω εργασίες όπως το να σχεδιάσει κτήρια σε ένα παιχνίδι, ή να προβάλει ένα βίντεο στην οθόνη, είναι αποτέλεσμα πολλών και μικρών διαδικασιών/εργασιών που γίνονται με μια αυστηρή σειρά στο εσωτερικό και οι οποίες δε φαίνονται ούτε στην οθόνη άμεσα. Στη πραγματικότητα η κάθε εργασία γίνεται πολύ - πολύ γρήγορα και δε μπορούμε να τη δούμε με γυμνό μάτι ούτε να μετρήσουμε εύκολα τη διάρκειά της με κάποια τυπική κλίμακα μέτρησης του χρόνου. Ακόμα και ένα διπλό κλικ σε μια φωτογραφία είναι αποτέλεσμα πολλών μικρών διεργασιών που γίνονται στο εσωτερικό του συστήματος ανά δευτερόλεπτο. Η ταχύτητα με την οποία γίνονται αυτές οι διαδικασίες ανά δευτερόλεπτο είναι πολλή μεγάλη και ισοδυναμεί με τη μισή ταχύτητα του φωτός! Σύμφωνα με τη φυσική η ταχύτητα του φωτός ανέρχεται περίπου σε 300.000 χιλιόμετρα το δευτερόλεπτο όμως η ταχύτητα του ηλεκτρισμού όταν κινείται μέσα από καλώδια και όχι στο κενό, ισούται με περίπου 150.000 χιλιόμετρα το δευτερόλεπτο που είναι ένας επίσης τεράστιος αριθμός εάν αναλογιστούμε ότι όλα τα υποσυστήματα ενός υπολογιστή, είναι μόλις μερικά εκατοστά ή χιλιοστά κοντά.
Η ταχύτητα του φωτός είναι τόσο γρήγορη που μέσα σε ένα δευτερόλεπτο, μπορεί να κάνει τον κύκλο της Γης επτά φορές. Αφού η ταχύτητα του ηλεκτρισμού είναι η μισή όταν διέρχεται μέσα από καλώδια, τότε μπορούμε να πούμε με ασφάλεια πως το ηλεκτρικό ρεύμα μπορεί να κάνει 3.5 κύκλους γύρω από τη Γη το δευτερόλεπτο, ένα αρκετά τρομερό επίτευγμα. Η φυσική παρ’ όλ’ αυτά μας λέει πως υπάρχουν όρια όσον αφορά την κατασκευαστική μέθοδο των υπολογιστών, και το πόσο γρήγορα μπορούμε να ωθήσουμε το ηλεκτρικό ρεύμα από τους αγωγούς, ή να βρούμε τρόπους να περάσει από λιγότερα «εμπόδια», όμως οι μηχανικοί των μεγάλων κατασκευαστών βρίσκουν τις απαραίτητες «δικλείδες» ασφαλείας, «παρακάμπτοντας» τους νόμους, μικραίνοντας τους «διαδρόμους» και φτιάχνοντας γρηγορότερους υπολογιστές σε κάθε γενιά
Bit
Όπως είπαμε στην αρχή, ο υπολογιστής μας λειτουργεί χάρη στο ηλεκτρικό ρεύμα που διαπερνά τους αγωγούς που συνδέουν τα εκάστοτε υποσυστήματα και τις συσκευές. Το ηλεκτρικό ρεύμα θα πρέπει να μεταφραστεί αργότερα σε κάτι που μπορούμε να «διαβάσουμε», σε κάτι που μπορούμε να δώσουμε ένα όνομα, έναν λόγο ύπαρξης. Ύστερα, ο υπολογιστής θα πρέπει να ξαναμεταφράσει αυτό το κάτι ούτως ώστε να το καταλάβουμε εμείς, ως τελικοί χρήστες αυτού του μηχανήματος. Αυτό που στην ουσία «κυκλοφορεί» στο εσωτερικό του υπολογιστή είναι bit. Στο εσωτερικό ακόμα και αυτή τη στιγμή που μιλάμε, υπάρχουν στο εσωτερικό δισεκατομμύρια bit που «περιφέρονται» και που αποτελούν την πληροφορία που μπορεί να διαβάσει ένας υπολογιστής και κατ’ επέκταση ο τελικός χρήστης. Το bit μπορεί να παρομοιαστεί με το ηλεκτρικό ρεύμα ή με μια λάμπα. Είναι παρών στον χώρο και στον χρόνο, δε μπορούμε να το δούμε, όμως μπορούμε να καταλάβουμε ότι υπάρχει από το αποτέλεσμα που έχουμε μπροστά μας. Όπως όταν ανοίγουμε τον διακόπτη και βλέπουμε το φως να λάμπει, έτσι γνωρίζουμε πως υπάρχει ένα bit που ταξιδεύει προς τη λάμπα, κάνοντάς τη να φωτίσει το δωμάτιο που είμαστε. Όταν έχουμε τον διακόπτη κλειστό, δηλαδή δεν αφήνουμε το ρεύμα ή στο εν λόγω άρθρο το bit να περάσει, τότε το bit μας είναι στη κατάσταση off. Όταν ανοίξουμε τον διακόπτη (κλείνω το κύκλωμα) αφήνουμε ένα bit να περάσει από αυτόν κάτι που έχει ως αποτέλεσμα να ανάψει τη λάμπα. Αυτή είναι η κατάσταση on που παίρνει το bit. Ήδη έχετε αντιληφθεί πως το bit έχει μόλις δύο καταστάσεις, on και off, ή 0 και 1 και δε μπορεί να έχει παραπάνω. Το αποτέλεσμα όσων βλέπετε στην οθόνη, είναι ο συνδυασμός τέτοιων αριθμών, οι οποίοι εναλλάσσονται με ασύλληπτη ταχύτητα. Οι φωτογραφίες τα βίντεο και όλα τα δεδομένα μας αναπαριστώνται στην ουσία με δεκάδες εκατομμύρια bit. Ο υπολογιστής για να δημιουργήσει αυτές τις πληροφορίες εφοδιάζεται με εκατομμύρια διακόπτες οι οποίοι άλλοτε επιτρέπουν το bit να περάσει (που στην ουσία επιτρέπουν τον ηλεκτρισμό να περάσει), είτε του το αποτρέπουν (κατάσταση off). Το bit από μόνο του δεν έχει κάποια συγκεκριμένη σημασία, αρκεί να του δώσουμε εμείς έναν λόγο ύπαρξης, μέσω του κώδικα και αργότερα μέσω μιας γλώσσας προγραμματισμού ούτως ώστε να έχουμε και ένα γραφικό περιβάλλον όπως «παράθυρα».
Πύλες
Από πού πηγάζει όμως το bit; Τι φτιάχνει και τι αλλάζει το bit; Στη προηγούμενη παράγραφο αναφέραμε το παράδειγμα με τη λάμπα και τον διακόπτη. Έχουμε ήδη αναφέρει πως το bit αναπαριστά τον ηλεκτρισμό που ρέει στα καλώδια του συστήματος οπότε το μόνο που μένει να αποσαφηνίσουμε είναι ο διακόπτης. Το μεγαλύτερο μέρος ενός υπολογιστή αποτελείται από τις πύλες (gates). Σαν μονάδα, μια πύλη είναι ένας διακόπτης που έχει δύο εισόδους (input), απ’ όπου έρχονται τα bit, και ένα output από το οποίο παίρνουμε το αποτέλεσμα, το οποίο δεν είναι τίποτα άλλο από ένα και μόνο ένα bit. Αυτό είναι ένα από τα μικρότερα κομμάτια που απαρτίζουν τον υπολογιστή, και ταυτόχρονα ένα από τα σημαντικότερα που θα συναντήσουμε σε αυτό τον οδηγό. Η πύλη όπως ονομάζεται μπορεί να πάρει «μόνη» της την απόφαση για το τι είδους bit θα είναι το τελικό, γι’ αυτό και ονομάζεται «λογική πύλη». Φανταστείτε πως δε χρειάζεται κάποιο «ψηφιακό χέρι» για να πατήσει τον διακόπτη όπως στη περίπτωση της λάμπας και οι λειτουργίες της πύλης, είναι προρρυθμισμένες να κάνουν την διαδικασία ανάλογα με το εάν έχουν ή όχι κάποιο bit στην είσοδό τους. Το αποτέλεσμα της μια πύλης συνδέεται με κάποια είσοδο μιας άλλης πύλης σχηματίζοντας ολόκληρες συστοιχίες εκατομμυρίων πυλών στο εσωτερικό ενός υπολογιστή. Η πιο γνωστή και αξιόπιστη είναι η πύλη NAND, ενώ σημειώνεται ότι μπορούμε να συνδυάσουμε πολλές και διαφορετικές πύλες μεταξύ τους χτίζοντας έτσι διάφορα υποσυστήματα, όπως μονάδες μνήμης (με 4 πύλες NAND φτιάχνουμε ένα bit αποθηκευτικού χώρου), enablers και ολόκληρα υποσυστήματα όπως μερικά που θα δούμε παρακάτω.
Υπάρχουν πολλών ειδών πύλες και πολλοί συνδυασμοί αυτών που χρησιμοποιούνται για διάφορους λόγους, όμως η πιο βασική είναι αυτή που προαναφέραμε, η NAND. Από αυτή, μπορούμε πρακτικά να φτιάξουμε όλες τις άλλες και να τις χρησιμοποιήσουμε σε άλλα υποσυστήματα σε έναν υπολογιστή. Οι πύλες, σαν μονάδες, έχουν σκοπό να αλλάξουν το bit, από 0 σε 1 δηλαδή να αφήσουν ή να αποτρέψουν την διέλευση του ρεύματος στην επόμενη πύλη. Η πύλη σαν μονάδα μπορεί να μας φαίνεται σχεδόν άχρηστη και αποκτά πραγματικό νόημα μόνο εάν συνδέσουμε μερικές ακόμα ούτως ώστε να δημιουργήσουμε κάτι χρήσιμο όπως για παράδειγμα ένα bit μνήμης.
Μια πύλη διαθέτει δύο εισόδους και μια έξοδο. Στις δύο εισόδους έρχονται τα bit, και η πύλη έχοντας όπως είπαμε «κρίση» αναλαμβάνει να αποφασίσει εάν θα περάσει κάποιο bit στο επόμενο στάδιο, και από εκεί στο επόμενο, έως ότου φτάσει στον προορισμό του. Για τον λόγο αυτό, έχουν δημιουργηθεί μερικοί πίνακες, οι οποίοι αναφέρουν ανάλογα με τον τύπο της πύλης, ποιο bit θα περάσει στο επόμενο «στάδιο».
Ξεκινάμε παίρνοντας ως παράδειγμα την πύλη NAND. Η πύλη NAND όπως και κάθε άλλη πύλη, έχει δύο εισόδους και μια έξοδο του bit (πάνω εικόνα). Εάν κάποια από τις δύο είναι στην κατάσταση on (σκέτο on από εδώ και στο εξής), τότε το αποτέλεσμα θα είναι on. Εάν είναι και οι δύο είσοδοι «off», τότε το αποτέλεσμα θα είναι το (Negative του AND) δηλαδή on, ενώ εάν και οι δύο είσοδοι είναι on, τότε το τελικό bit θα είναι Off κάτι που σημαίνει πως δε θα υπάρξει ηλεκτρισμός στην έξοδο.
Για να φτιάξουμε την επόμενη πύλη, αυτό που θα κάνουμε είναι να συνδέσουμε μεταξύ τους τις δύο εισόδους της NAND. Αυτό που δημιουργείται είναι η πύλη NOT κάτι που σημαίνει πως το bit της εξόδου ΔΕΝ (NOT) θα είναι το ίδιο με αυτό της εισόδου, και εφόσον το bit μπορεί να είναι είτε on είτε off τότε η πιθανή επιλογή είναι πάντοτε μια και μοναδική. Εάν η είσοδος είναι on, η έξοδος θα γίνει off και εάν η είσοδος είναι off τότε η έξοδος θα είναι on. Easy peasy!
Παίρνοντας μια NAND και μια NOT και συνδέοντάς τες, μπορούμε να φτιάξουμε μια πύλη AND. Η πύλη αυτή είναι στην ουσία το αντίθετο της NAND καθώς ότι αποτέλεσμα βγαίνει από τη NAND, αλλάζει στο ακριβώς αντίθετο από την NOT που ακολουθεί. Πιο συγκεκριμένα, η AND λειτουργεί με τον ίδιο τρόπο όπως αναφέρει και η ονομασία της. Για να έχουμε on στην έξοδο, τότε η μια είσοδος ΚΑΙ (AND) η άλλη είσοδος θα πρέπει να είναι on. Ειδάλλως θα είναι off. Σε αντίθεση με τη NAND, εάν έχουμε δύο off states, το αποτέλεσμα θα διατηρηθεί ως έχει, ενώ το ίδιο θα γίνει εάν έχουμε δύο on bit στις εισόδους, κάτι που όπως είπαμε είναι το ακριβώς αντίθετο με τις NAND πύλες που μελετήσαμε νωρίτερα.
Τώρα που έχουμε μάθει πως λειτουργούν οι βασικές μας πύλες, καλό είναι να αναφέρουμε μερικά πράγματα που μπορούμε να φτιάξουμε με αυτές. Αναφέραμε πιο πάνω πως με τέσσερις NAND μπορούμε να φτιάξουμε μια πολύ βασική μονάδα μνήμης. Αυτή η μνήμη μπορεί να αποθηκεύσει ένα bit. Εφόσον γνωρίζουμε πως το bit δεν είναι τίποτα άλλο παρά ηλεκτρισμός, τότε μπορούμε να φανταστούμε το αποθηκευμένο bit ως πρακτικά οποιαδήποτε πληροφορία. Η μονάδα αυτή έχει ένα input, μια είσοδο S (set) η οποία όταν διαπερνάται από ρεύμα (bit) δίνει την εντολή αποθήκευσης του bit της εισόδου και τέλος το output. Χοντρικά, εάν το S είναι on, τότε η μονάδα μνήμης μας θα αποθηκεύσει το bit του input και στην ουσία θα είναι το ίδιο με το output. Εάν η είσοδος είναι off και το S είναι on, το output θα παραμείνει στην ίδια κατάσταση, όταν το S ήταν στο on.
Παίρνοντας 8 από αυτές τις μονάδες και συνδέοντάς τες, δημιουργούμε αυτό που στην ουσία ονομάζεται ένα byte, κάτι που γνωρίζουμε από τις μεθόδους αποθήκευσης που έχουμε κάπου γύρω μας αυτή τη στιγμή. Εφόσον ένα bit έχει δύο καταστάσεις, τα δύο bit Θα έχουν τέσσερις. Εάν προσθέσουμε και ένα τρίτο, τότε οι διαθέσιμες καταστάσεις θα γίνουν οκτώ. Με κάθε ένα bit που προσθέτουμε, διπλασιάζουμε τον τελευταίο αριθμό των καταστάσεων. Έτσι, εάν τοποθετήσουμε και τέταρτο, πάμε στις 16 πιθανές καταστάσεις, οι πέντε έχουν 32, οι έξι 64, οι επτά 128 και οι οκτώ 256 πιθανές καταστάσεις. Επίσης, για να μπορέσουμε να φτιάξουμε κάποιον κώδικα, και να χρησιμοποιήσουμε όσο το δυνατόν ολόκληρο το ποσό των 256 καταστάσεων ενός byte, η σειρά των καταστάσεων (00001101) είναι άκρως σημαντική.
Κώδικας: Γλώσσα μηχανής και προγραμματισμού
Τα bit όπως προαναφέραμε δεν είναι κάτι συγκεκριμένο. Για να τα κάνουμε κάτι συγκεκριμένο και για να μας φανούν χρήσιμα θα πρέπει να τα συσχετίσουμε με κάτι. Ο κώδικας είναι κάτι το οποίο μας εξηγεί τι σημαίνει κάτι άλλο σε έναν υπολογιστή, για να μπορέσουμε να βασιστούμε επάνω του και να το ξαναμετατρέψουμε σε κάτι που μπορούμε να καταλάβουμε εμείς ως τελικός χρήστης του υπολογιστή. Ο κώδικας αναφέρεται και ως «γλώσσα μηχανής», όμως γιατί οι άνθρωποι δε χρησιμοποιούν μόνο τη γλώσσα των μηχανών αλλά χρησιμοποιούν μια άλλη για να μεταφράσουν αυτά που μας λέει ο υπολογιστής; Δε θα ήταν πιο γρήγορο για τον υπολογιστή;
Η απάντηση είναι ναι, θα ήταν πιο εύκολο για τον υπολογιστή να ολοκληρώσει μια εργασία, όμως είναι αδύνατο να την καταλάβουμε εμείς οι άνθρωποι. Για αυτό τον λόγο χρησιμοποιούμε τη συμβολική γλώσσα η οποία είναι πιο εύκολο να τη θυμηθεί ένας προγραμματιστής και η οποία συνήθως δίνεται από τον κατασκευαστή του επεξεργαστή. Για τη μετάφραση χρησιμοποιείται ένας συμβολομεταφραστής (assembler) ενώ η αντίθετη διαδικασία γίνεται από τον αντι-συμβολομεταφραστή (disassembler). Αυτή ή γλώσσα ονομάζεται χαμηλού επιπέδου και στην ουσία δίνει μια ονομασία στα bit ούτως ώστε να είναι πιο εύκολη η εργασία μαζί τους.
Οι πληροφορίες (τα bit) που αποθηκεύονται από το σύστημα αναφέρονται ως απλά “code” και στην ουσία δε σημαίνουν τίποτα απολύτως για εμάς, μέχρι να βρεθεί κάποιος «διερμηνέας» (ήτοι, μια χαμηλού επιπέδου γλώσσα προγραμματισμού) που θα κάτσει να αποκωδικοποιήσει (decode) τις πληροφορίες και να τις παρουσιάσει με έναν πιο απλοϊκό τρόπο. Η αποκωδικοποίηση γίνεται από τον μεταγλωττιστή (complier) που έχει δημιουργήσει ο άνθρωπος για να μπορέσει να χειριστεί τα bit της γλώσσας που πηγάζει από τη μηχανή. Στη συνέχεια σειρά έχει η δημιουργία των προγραμμάτων από μια άλλη γλώσσα, αυτή τη φορά υψηλού επιπέδου όπως η C#, η Java. Το παρακάτω γράφημα οπτικοποιεί τη κλίμακα.
Υποσυστήματα ενός 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.
Εισαγωγή στο Overclocking από μια λιγότερο "πολύπλοκη" ματιά
Κάπου εδώ αφήνουμε τα της αρχιτεκτονικής ενός επεξεργαστή και φτάνουμε σε ότι θα μας απασχολήσει κατά τη διάρκεια του overclocking. Στο προηγούμενο κεφάλαιο αναφέραμε μερικά από θεμελιώδη χαρακτηριστικά ενός επεξεργαστή, όπως τις πύλες και τους καταχωρητές. Αναφέραμε εκτός από τα βασικά υποσυστήματα τους διαύλους επικοινωνίας μεταξύ αυτών και τη μονάδα ελέγχου η οποία περιλαμβάνει το ρολόι (clock) του επεξεργαστή.
Για να πραγματοποιηθεί η επικοινωνία μεταξύ των buses και φυσικά για να μεταφερθούν δεδομένα, είναι απαραίτητο το «κίνητρο» που θα αναλάβει να «κινήσει» τα δεδομένα στις «λεωφόρους». Αυτό απαιτείται όχι μόνο από τα buses μεταξύ των υποσυστημάτων, αλλά και στα επιμέρους τμήματα ενός CPU, που αποτελούνται ως επί το πλείστον από πύλες (gates). Πρώτα όμως, θα πρέπει να αναφέρουμε τι εννοούμε όταν λέμε συχνότητα λειτουργίας ενός υποσυστήματος.
Κάθε υπολογιστής έχει ένα bit που «ξεχωρίζει». Το «ξεχωριστό» αυτό bit δίνει τον ρυθμό στη κυκλοφορία των υπόλοιπων bit μέσα στον επεξεργαστή όπως αναφέραμε και λίγο παραπάνω, είτε πρόκειται για bit που ελέγχονται από άλλα bit είτε από κάποιους διακόπτες - πύλες. Αυτό που στην πραγματικότητα καθορίζει το υποσύστημα, είναι η συχνότητα με την οποία οι πύλες αλλάζουν κατάσταση από 0 σε 1 ή αλλιώς, κάθε πότε μεταφέρεται ή όχι κάποιο bit πληροφορίας. Το συγκεκριμένο bit εναλλάσσεται συνεχώς από 0 σε 1 και αποτελείται από μια πύλη NOT της οποίας η έξοδος είναι συνδεδεμένη με την είσοδό της. Έτσι εάν η είσοδος είναι 1 τότε η έξοδος είναι 0. Στη συνέχεια η είσοδος θα γίνει 0 και η έξοδος 1 τη 2η φορά κάτι που επαναλαμβάνεται δισεκατομμύρια φορές το δευτερόλεπτο. Αυτή η πύλη είναι "χοντρικά" και αυτή που δίνει τον ρυθμό στον υπολογιστή.
Συχνότητα Λειτουργίας (Clock Speed) ή Ταχύτητα Ρολογιού είναι ο αριθμός των εντολών που εκτελούνται ανά δευτερόλεπτο και μετριέται σε Hertz (ή MHz = εκ. υπολογισμοί το δευτερόλεπτο, ή GHz δις. υπολογισμοί το δευτερόλεπτο). Το clock που υπάρχει μέσα στον επεξεργαστή δεν είναι το μοναδικό καθώς υπάρχουν και μερικά ακόμα που βοηθούν το πρώτο. Ο λόγος για τα clock enable και clock set τα οποία ουσιαστικά είναι οι πρόσθετοι ρυθμιστές της κυκλοφορίας, που σκοπό έχουν να «ευθυγραμμίσουν» τον χρόνο στον οποίο γίνεται η ενεργοποίηση ενός bit (enable) και η αποθήκευσή του από μια άλλη μονάδα (set). Το clock συνδέεται με τη μονάδα stepper που αποτελείται από memory bits τα οποία συνδέονται όμως με διαφορετικό τρόπο. Για να αποθηκεύσουμε (set) κάποιο bit θα πρέπει πρώτα να το ενεργοποιήσουμε (enable) και να το οδηγήσουμε μέσω των buses στον προορισμό του που μπορεί να είναι οποιαδήποτε σημείο του επεξεργαστή, ή συσκευής που συνδέεται άμεσα και έμμεσα με αυτόν.
Το ρολόι είναι παραπλήσιο με το BCLK ή FSB (Base Clock και Front Side Bus αντίστοιχα), έχει και αυτό μια συχνότητα λειτουργίας με την οποία ρυθμίζει τη ροή και τη ταχύτητα των bit/δεδομένων. Ο χρόνος που χρειάζεται για να αλλάξει η κατάσταση του υποσυστήματος (πύλη ή bus) από το μηδέν στο ένα (που είναι στην ουσία οι εντολές που μεταφέρονται προς τις διάφορες τοποθεσίες του επεξεργαστή) λέγεται περίοδος ρολογιού. Όσο πιο μικρή η περίοδος που διανύεται από το 0 στο 1, ανά δευτερόλεπτο, τόσο πιο γρήγορα ολοκληρώνεται ένας κύκλος, άρα τόσο ταχύτερος είναι ο επεξεργαστής (ή τόσο υψηλότερη συχνότητα λειτουργίας έχει σε MHz). Το πόσο γρήγορα εκτελεί τις εντολές του ο επεξεργαστής ορίζεται από τη συχνότητα λειτουργίας του ρολογιού που αναφέραμε πιο πάνω. Αυτό το BCLK «τρέχει» συνήθως από το εσωτερικό του CPU όπως είδαμε πιο πάνω. Κάθε δίαυλος όπως του USB, ή των SATA ή των PCIe θυρών (ο ελεγκτής του τελευταίου βρίσκεται στο εσωτερικό πλέον των CPU) διαθέτει δικό του αποκλειστικό clock που βρίσκεται συνήθως στη μητρική, ή/και στο chipset αυτής και φροντίζει ώστε τα δεδομένα να μεταφέρονται με έναν συγκεκριμένο ρυθμό, ειδάλλως θα υπάρξει απώλεια δεδομένων, δηλαδή bit, κάτι που θα έχει ως αποτέλεσμα μπλε οθόνες και άλλα σχετικά. Μερικά από αυτά τα συναντάμε μετά από ένα αποτυχημένο overclock άλλωστε. Το ρολόι ενός επεξεργαστή στη σύγχρονη τεχνολογία είναι συνδεδεμένο με διάφορα υποσυστήματα όπως τη μνήμη RAM και τις κάρτες επέκτασης PCIe όμως από αυτό αξίζει να κρατήσουμε πως κάθε φυσικός δίαυλος έχει τη δική του συχνότητα, το δικό του ρολόι για τη κυκλοφορία των δεδομένων.
Σε κάθε κύκλο ή παλμό ρολογιού, δηλαδή στην μεταβολή του σήματος από μηδέν σε ένα όπως ορίζει η κυματομορφή square, πραγματοποιείται θεωρητικά μια εντολή. Λέμε θεωρητικά, διότι μια εντολή μπορεί να χρειαστεί παραπάνω κύκλους ρολογιού, οπότε και η συχνότητα μπορεί να είναι «εικονική» και η ταχύτητα της ολοκλήρωσης εξαρτάται από την αρχιτεκτονική και τη σχεδίαση των υπόλοιπων τμημάτων του επεξεργαστή. Ένας ακόμα παράγοντας που επηρεάζει την ταχύτητα ολοκλήρωσης μιας εργασίας είναι και ο κώδικας ή/και η γλώσσα προγραμματισμού στην οποία είναι γραμμένο το πρόγραμμα και το κατά πόσο χρησιμοποιεί όλες τις διαθέσιμες εντολές του, κάτι που πολλές φορές ονομάζουμε και hardware acceleration. Το clock παίζει τον ρόλο του μετρονόμου στη συγκεκριμένη διαδικασία, συντονίζοντας τις εργασίες που γίνονται σε ολόκληρο τον υπολογιστή. Στην ουσία, αυτό που θα πρέπει να κρατήσουμε είναι πως όσο μικρότερη διάρκεια έχει ένας κύκλος ή παλμός ρολογιού, τόσο υψηλότερη είναι και η συχνότητα λειτουργίας του επεξεργαστή μας καθώς μπορεί να πραγματοποιήσει περισσότερους υπολογισμούς ας πούμε στο ίδιο χρονικό διάστημα. Άρα ο κύκλος ρολογιού είναι μονάδα μέτρησης του χρόνου αντίστροφη της συχνότητας λειτουργίας.
Για να κατηγοριοποιήσουμε τις επιδόσεις ενός επεξεργαστή χρησιμοποιούμε τρία βασικά κριτήρια. Τα κριτήρια αυτά είναι: 1ον των σετ των εντολών που έχει προεγκατεστημένα και τα οποία τον βοηθούν να κάνει διάφορους υπολογισμούς πιο γρήγορα εφόσον τα αξιοποιήσει ο developer της εφαρμογής. 2ον τον αριθμό των bits που μπορεί να διαχειριστεί ταυτόχρονα (aka bandwidth) και 3ον τη Συχνότητα Λειτουργίας του που μετριέται σε megahertz όπου μας δείχνει τον αριθμό των κύκλων ρολογιού που πραγματοποιούνται ανά δευτερόλεπτο. Τα δύο πρώτα αναφέρονται στην αρχιτεκτονική του ενώ ακόμα και το τρίτο εξαρτάται σε μεγάλο βαθμό από τα πρώτα, ούτως ώστε κάθε κύκλος ρολογιού να μην πηγαίνει «χαμένος» περιμένοντας κάποια άλλη διεργασία στο εσωτερικό του επεξεργαστή. Για παράδειγμα ένας Skylake Core i7 6700K χρονίζεται στα 4000MHz και σημαίνει ότι πραγματοποιεί 4 δισεκατομμύρια κύκλους ρολογιού ανά δευτερόλεπτο και θεωρητικά υπολογισμούς το δευτερόλεπτο. Σε κάθε κύκλο ρολογιού γίνεται μια ενέργεια/λειτουργία από τον επεξεργαστή. Ένας κύκλος ρολογιού, είναι η μικρότερη μονάδα του χρόνου που μπορεί να διαρκέσει μια εργασία, όμως δεν υπάρχει όριο ως προς το πόσο πολύ μπορεί να διαρκέσει, καθώς μια πιο απαιτητική μπορεί να καταλάβει περισσότερους του ενός κύκλου μέχρι να ολοκληρωθεί. Σημειώνεται επίσης το εξής: Όπως είπαμε και στα αρχικά κεφάλαια, στο εσωτερικό του υπολογιστή υπάρχουν τα bit, που στην ουσία είναι ηλεκτρικό ρεύμα. Το bit έχει δύο καταστάσεις, 0 και 1 και κάθε εργασία όπως ένα γράμμα, έχει έναν μοναδικό τρόπο που αναπαρίσταται στον «ψηφιακό καμβά» μας. Το bit έχει μια διεύθυνση στον χώρο όμως δε μπορούμε να το δούμε καθώς ο ηλεκτρισμός είναι όπως είδαμε «αόρατος».
Συνεχίζοντας, το BCLK είναι κάτι που ποτέ δεν παραμένει «σταθερό» από αρχιτεκτονική σε αρχιτεκτονική και κατασκευαστή σε κατασκευαστή, όμως φανταστείτε πως κάθε bus έχει τη δική του συχνότητα λειτουργίας γιατί διαφορετικά η μεταφορά δεδομένων από τους εν λόγω διαύλους θα ήταν αδύνατη. Στις νεότερες αρχιτεκτονικές όπως αυτή των Skylake, βλέπουμε πως το BCLK το οποίο είναι συνδεδεμένο μόνο με τον ελεγκτή μνημών RAM (IMC – integrated memory controller) και όχι και με τις PCIe όπως ήταν κάποτε, έχει μεγαλύτερα περιθώρια overclocking από την αμέσως προηγούμενη γενιά Haswell επεξεργαστών. Αυτό σημαίνει ότι ναι μεν μπορούμε να αυξήσουμε τη συχνότητα του BCLK και να υπερχρονίσουμε έτσι τον επεξεργαστή μας (K ή non K), όμως αυξάνουμε παράλληλα και τη συχνότητα των μνημών, αλλά όχι του «ευαίσθητου» διαύλου PCIe. Αρκετές φορές και ειδικά όταν το BCLK ήταν συνδεδεμένο με τις PCIe κάρτες επέκτασης, οι κατασκευαστές για να αποφευχθούν τα προβλήματα σταθερότητας που μπορεί να προκληθούν από υψηλά νούμερα αυτού του bus, τοποθετούσαν ειδικά straps, κλειδώνοντας ουσιαστικά τα «δύστροπα» buses όπως το PCIe στη «λειτουργική» συχνότητα των 100MHz, αφήνοντας μας να παίξουμε με το BCLK της συχνότητας του επεξεργαστή και των μνημών. Το αυξημένο strap χρησιμοποιείται σε περιπτώσεις όπου θέλουμε να τρέξουμε τις RAM ή την ενσωματωμένη GPU του επεξεργαστή σε υψηλότερη συχνότητα απ’ ότι υποστηρίζεται κανονικά, κερδίζοντας έτσι μερικά MHz στα εν λόγω υποσυστήματα. Βέβαια τα straps ήταν μόλις δύο, των 125MHz και των 167MHz και έτσι τα πράγματα ήταν το ίδιο περιορισμένα παρά τη καλή διάθεση των συνεργατών.
Πολλαπλασιαστής Επεξεργαστή (Core Ratio)
Ο πολλαπλασιαστής του επεξεργαστή είναι άρρητα συνδεδεμένος με το BCLK. Στην ουσία είναι η εσωτερική συχνότητα του επεξεργαστή μας (internal clock). Κανονικά το BCLK είναι η βασική συχνότητα λειτουργίας του επεξεργαστή, όμως, επειδή εδώ και χρόνια οι επεξεργαστές επωφελούνταν από τις υψηλές συχνότητες για να αποδώσουν καλύτερα σε πολλές εφαρμογές οι μηχανικοί σκαρφίστηκαν τον πολλαπλασιαστή, που... πολλαπλασιάζει τη συχνότητα του BCLK εσωτερικά του επεξεργαστή. Η τελική συχνότητα λειτουργίας (ή αλλιώς εσωτερική) βγαίνει από τον πολλαπλασιασμό του system ή base clock (πχ 100MHz) με τον εσωτερικό πολλαπλασιαστή (πχ x35). Κάπως έτσι δημιουργείται η εξίσωση 100 x 35 = 3500MHz όπου η τελευταία είναι και η εσωτερική συχνότητα λειτουργίας του επεξεργαστή. Ο πολλαπλασιαστής είναι ένα σύνολο κυκλωμάτων που δημιουργεί αρμονικές συχνότητες («ακριβή αντίγραφα») του Base Clock βοηθώντας έτσι ώστε σε κάθε κύκλο ρολογιού του εξωτερικού bus (100MHz) να πραγματοποιούνται τόσες εργασίες ανά δευτερόλεπτο, όσες ορίζει ο αριθμός του πολλαπλασιαστή. Παράλληλα αναλαμβάνει να καθαρίσει το εισερχόμενο σήμα. Ένα κύκλωμα γνωστό και ως PLL.
Memory Divider (DRAM Ratio)
Ο διαιρέτης των μνημών του συστήματος είναι και αυτός άρρητα συνδεδεμένος με το BCLK. Η συχνότητα των RAM είναι αποτέλεσμα του πολλαπλασιασμού που κάνουμε με τον εν λόγω δίαυλο. Ο εκάστοτε διαιρέτης πολλαπλασιάζει το BUS του επεξεργαστή για να μας επιστρέψει τη τελική συχνότητα λειτουργίας των μνημών μας. Στα high end Chipsets για παράδειγμα, όπως το Z170, παρέχονται πολλοί διαιρέτες για να «παίξουμε» που μπορεί να ωθήσουν τις μνήμες DDR4 έως και τα 4333, εν έτη 2016. Ο διαιρέτης των μνημών είναι κάτι που αλλάζει ακόμα και σε μητρικές του ίδιου chipset και του ίδιου του κατασκευαστή, όμως ακολουθεί την ίδια λογική με το BCLK. Υπολογίζεται δηλαδή λαμβάνοντας υπόψιν το Base Clock του επεξεργαστή, μιας και πλέον ο ελεγκτής των μνημών (IMC) βρίσκεται στο εσωτερικό του CPU. Επίσης, ένας παράγοντας που λαμβάνουμε υπόψιν είναι και την αναλογία του BCLK/FSB με τις DRAM. Ο λόγος μεταξύ του ρολογιού των RAM και του ρολογιού του FSB ή του BCLK που βγαίνει εάν διαιρέσουμε του δύο αριθμούς, όπως μας παρουσιάζονται στο CPU-Z. Το αποτέλεσμα θα μας επιστρέψει στην ουσία τη πραγματική συχνότητα των μνημών και όχι το double data rate τους που μεταφράζεται και σε MT – Mega Transfer ανά δευτερόλεπτο. Η συγκεκριμένη διαδικασία είναι ανάλογη με τη συχνότητα με την οποία πραγματοποιούνται οι υπολογισμοί που αναφέραμε πιο πάνω, όμως με το Transfer μετράμε τον αριθμό των λειτουργιών που μεταφέρουν δεδομένα ανά δευτερόλεπτο.
Εδώ έρχεται στο προσκήνιο και το «φαινόμενο» Double Data Rate στο οποίο ουσιαστικά μεταφέρονται δύο δεδομένα σε κάθε χτύπο ρολογιού (ένα στην άνοδο και ένα στη κάθοδο) όμως εμείς συνηθίζουμε να αναφερόμαστε μόνο στον έναν, ή αλλιώς στη μισή συχνότητα λειτουργίας από αυτή που βλέπουμε στο «ταμπελάκι» τους όταν τις αγοράζουμε. Η «μισή» συχνότητα είναι και το πραγματικό clock των μνημών. Κάθε μνήμη έχει τη συγκεκριμένη συχνότητα λειτουργίας που βγαίνει από τον πολλαπλασιασμό με το BCLK που προ-αναφέραμε. Η συχνότητα που βλέπουμε στο CPU-Z είναι πάντοτε η «μισή» και αναφέρεται στον έναν εκ των δύο χτύπων, οπότε για να υπολογίσουμε την πραγματική απλά πολλαπλασιάζουμε επί 2. Μια μνήμη που αναγράφει επάνω της 1600MHz μπορεί να πραγματοποιήσει στην ουσία 1600 εκ. Transfers το δευτερόλεπτο σύμφωνα με το πρότυπο Double Data Rate. Η πραγματική συχνότητα ανέρχεται σε 800MHz και αυτό είναι που μας δίνει τον λόγο μεταξύ των RAM και του FSB. Εάν στο ανωτέρω σύστημα το FSB είναι 200MHz τότε ο λόγος FSB/DRAM θα είναι 1:4. Η εξίσωση που δημιουργείται είναι DRAM / FSB * FSB Frequency = DRAM Frequency.
Κβαντικά πράγματα Εκτός από τα τυπικά 0 και 1 στα υπολογιστικά συστήματα, έχουμε και τον συναρπαστικό κόσμο του κβαντικού computing, όπου αξίζει να αναφέρουμε πως πρόκειται για κάτι που εφόσον μπει σε λειτουργική μορφή θα ανατρέψει τα πάντα στον χώρο των υπολογιστών που γνωρίζουμε σήμερα.
Όπως στα τυπικά υπολογιστικά συστήματα συναντάμε το bit ως μικρότερη μονάδα πληροφορίας που αναφέρεται στο ηλεκτρικό ρεύμα που διαπερνά τις πύλες ενός υποσυστήματος στον υπολογιστή, στο κβαντικό computing έχουμε το κβαντικό bit, ή qbit. Σε αντίθεση με το τυπικό bit που μπορεί να έχει δύο καταστάσεις (0 και 1), το κβαντικό bit μπορεί να πάρει όποια κατάσταση θέλει τη φορά, πολλαπλασιάζοντας έτσι τις εργασίες που μπορεί να κάνει ανά δευτερόλεπτο. Πρακτικά, οι ερευνητές που ήρθαν αντιμέτωποι με το φαινόμενο έψαχναν… ψύλλους στ’ άχυρα, ένα κυνήγι που συνεχίζεται μέχρι και σήμερα. Αν και έχει γίνει σημαντική πρόοδος για την απόδειξη της λειτουργικότητας της εν λόγω τεχνολογίας, βρίσκεται ακόμη σε πρώιμο στάδιο έχοντας αρκετά σημεία που δεν έχουν επιβεβαιωθεί/εξερευνηθεί, κάνοντας έτσι την απόδειξη ένα αρκετά δύσκολο επίτευγμα το οποίο δεν έχει… ξεκλειδωθεί. Όπως και να 'χει εμείς θα είμαστε εκεί όταν συμβεί το breakthrough στο κβαντικό και θα ενημερώσουμε με μια ή παραπάνω ειδήσεις. (no pun intended).
'Facts' για τον υπερχρονισμό:
Ο επεξεργαστής διαθέτει πλήθος υπομονάδων στο εσωτερικό του που χρησιμοποιούνται για διαφορετικές εργασίες, συμπληρώνουν η μια την άλλη και συνδέονται με ειδικές οδούς που ονομάζονται buses. Το Clock είναι ένα ρολόι εσωτερικά του επεξεργαστή, του οποίου ο παλμός έχει σταθερό ρυθμό και φροντίζει την ομαλή διακίνηση της πληροφορίας μεταξύ των σημαντικών συσκευών του υπολογιστή. Το baseclock συγχρονίζει υποσυστήματα όπως τους ελεγκτές IMC (μνήμη) και τον PCIe (κάρτες γραφικών) και αναφέρεται συνήθως στο freegr
ΦΩΤΟΓΡΑΦΙΕΣ
ΜΟΙΡΑΣΤΕΙΤΕ
ΔΕΙΤΕ ΑΚΟΜΑ
ΠΡΟΗΓΟΥΜΕΝΟ ΑΡΘΡΟ
Δεν είναι εύκολο να λυθεί το συμβόλαιο του Τζαβέλλα
ΣΧΟΛΙΑΣΤΕ