Editorial: CPU και CPU Overclocking σε βάθος - Τι είναι το Bit και τι οι Πύλες;
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) είναι άκρως σημαντική.
cpu, overclocking, bit, nand gates, gate, λογικές πύλες, processor, επεξεργαστής, πύλες, τι είναι cpu