Το HTG εξηγεί πώς λειτουργεί μια CPU;
Τα περισσότερα πράγματα σε έναν υπολογιστή είναι σχετικά απλά κατανοητά: η μνήμη RAM, η αποθήκευση, τα περιφερειακά και το λογισμικό λειτουργούν από κοινού για να κάνουν μια λειτουργία υπολογιστή. Αλλά η καρδιά του συστήματός σας, η CPU, μοιάζει μαγική, ακόμα και σε πολλούς τεχνολογικούς ανθρώπους. Εδώ, θα κάνουμε το καλύτερο δυνατό για να το σπάσουμε.
Το μεγαλύτερο μέρος της έρευνας για αυτό το άρθρο προέρχεται από "Αλλά πώς το ξέρει;" από τον J. Clark Scott. Είναι μια φανταστική ανάγνωση, πηγαίνει σε πολύ μεγαλύτερο βάθος από ό, τι αυτό το άρθρο θα κάνει, και αξίζει πολύ τα ζευγάρια ζευγάρι στο Amazon.
Ένα σημείωμα προτού αρχίσουμε: οι σύγχρονες CPU είναι πολύ πιο πολύπλοκες από ό, τι περιγράφουμε εδώ. Είναι σχεδόν αδύνατο για ένα άτομο να καταλάβει κάθε απόχρωση ενός τσιπ με πάνω από ένα δισεκατομμύριο τρανζίστορ. Ωστόσο, οι βασικές αρχές του τρόπου με τον οποίο όλες ταιριάζουν μαζί παραμένουν οι ίδιες, και η κατανόηση των βασικών στοιχείων θα σας δώσει μια καλύτερη κατανόηση των σύγχρονων συστημάτων.
Ξεκινώντας μικρό
Οι υπολογιστές λειτουργούν σε δυαδική μορφή. Κατανοούν μόνο δύο καταστάσεις: ενεργοποιημένες και απενεργοποιημένες. Για να εκτελέσουν υπολογισμούς σε δυαδικά, χρησιμοποιούν το λεγόμενο τρανζίστορ. Το τρανζίστορ επιτρέπει μόνο το ρεύμα πηγής να ρεύσει μέσα από αυτό στην αποστράγγιση εάν υπάρχει ρεύμα κατά μήκος της πύλης. Ουσιαστικά, αυτό σχηματίζει ένα δυαδικό διακόπτη, ο οποίος κόβει το σύρμα, ανάλογα με ένα δεύτερο σήμα εισόδου.
Οι σύγχρονοι υπολογιστές χρησιμοποιούν δισεκατομμύρια τρανζίστορ για να πραγματοποιήσουν υπολογισμούς, αλλά στα χαμηλότερα επίπεδα, χρειάζεστε μόνο μια χούφτα για να διαμορφώσετε τα πιο βασικά συστατικά, γνωστά ως πύλες.
Logic Gates
Τοποθετήστε σωστά μερικά τρανζίστορ και έχετε τη λεγόμενη λογική πύλη. Οι λογικές πύλες λαμβάνουν δύο δυαδικές εισόδους, εκτελούν μια λειτουργία πάνω τους και επιστρέφουν μια έξοδο. Η πύλη OR, για παράδειγμα, επιστρέφει true αν οποιαδήποτε από τις εισόδους είναι αληθής. Η πύλη AND ελέγχει αν και οι δύο είσοδοι είναι αληθινοί, το XOR ελέγχει αν ισχύει μόνο μία από τις εισόδους και οι Ν-παραλλαγές (NOR, NAND και XNOR) είναι ανεστραμμένες εκδόσεις των θυρών βάσης τους.
Κάνοντας Μαθηματικά με Πύλες
Με μόνο δύο πύλες μπορείτε να κάνετε βασική δυαδική προσθήκη. Αυτό το διάγραμμα παραπάνω δείχνει ένα μισό αθροιστή, που δημιουργήθηκε χρησιμοποιώντας Logicly, μια δωρεάν ηλεκτρονική παιδική χαρά για λογικές πύλες. Η πύλη XOR θα ενεργοποιηθεί αν μόνο μία από τις εισόδους είναι ενεργοποιημένη, αλλά όχι και οι δύο. Η πύλη AND θα ενεργοποιηθεί αν και οι δύο είσοδοι είναι ενεργοποιημένες, αλλά παραμένουν απενεργοποιημένες εάν δεν υπάρχουν εισόδους. Επομένως, αν και οι δύο είναι ενεργοποιημένοι, ο XOR παραμένει εκτός λειτουργίας και η πύλη AND ενεργοποιείται και φτάνει στη σωστή απάντηση δύο:
Αυτό μας δίνει μια απλή ρύθμιση με τρεις ξεχωριστές εξόδους: μηδέν, ένα και δύο. Αλλά ένα κομμάτι δεν μπορεί να αποθηκεύσει τίποτα μεγαλύτερο από 1, και αυτό το μηχάνημα δεν είναι πολύ χρήσιμο καθώς επιλύει μόνο ένα από τα απλούστερα μαθηματικά προβλήματα που είναι δυνατόν. Αλλά αυτό είναι μόνο το μισό αθροιστή, και αν συνδέσετε δύο από αυτούς με μια άλλη είσοδο, παίρνετε μια πλήρη αθροιστή:
Ο πλήρης αθροιστής έχει τρεις εισόδους - τους δύο αριθμούς που προσθέτουν και ένα "carry". Το carry χρησιμοποιείται όταν ο τελικός αριθμός υπερβαίνει ό, τι μπορεί να αποθηκευτεί σε ένα μόνο bit. Οι πλήρεις προσθήκες θα συνδέονται σε μια αλυσίδα και το χαρτοφυλάκιο θα περάσει από το ένα αθροιστή στο επόμενο. Η μεταφορά προστίθεται στο αποτέλεσμα της πύλης XOR στο πρώτο μισό αθροιστή, και υπάρχει μια πρόσθετη πύλη OR για να χειριστεί και τις δύο περιπτώσεις όταν το έτσι ώστε να χρειαστεί να είναι.
Όταν είναι ενεργοποιημένες και οι δύο είσοδοι, η μεταφορά γίνεται ενεργοποιημένη και αποστέλλεται στον επόμενο πλήρη αθροιστή στην αλυσίδα:
Και αυτό είναι τόσο περίπλοκο όσο η προσθήκη γίνεται. Η μετακίνηση σε περισσότερα κομμάτια ουσιαστικά σημαίνει μόνο περισσότερους πλήρεις προσθήκες σε μια μακρύτερη αλυσίδα.
Οι περισσότερες άλλες μαθηματικές εργασίες μπορούν να γίνουν με προσθήκη. ο πολλαπλασιασμός απλώς επαναλαμβάνεται, η αφαίρεση μπορεί να γίνει με κάποια φανταστική αναστροφή bit, και η διαίρεση απλώς επαναλαμβάνεται. Και ενώ όλοι οι σύγχρονοι υπολογιστές έχουν λύσεις βασισμένες σε hardware για να επιταχύνουν πιο πολύπλοκες λειτουργίες, μπορείτε τεχνικά να το κάνετε όλα με την πλήρη προσθήκη.
Το λεωφορείο και η μνήμη
Αυτή τη στιγμή, ο υπολογιστής μας δεν είναι παρά μια κακή αριθμομηχανή. Αυτό συμβαίνει επειδή δεν μπορεί να θυμηθεί τίποτα και δεν κάνει τίποτα με τα αποτελέσματα. Εμφανίζεται παραπάνω είναι ένα κύτταρο μνήμης, το οποίο μπορεί να κάνει όλα αυτά. Κάτω από την κουκούλα, χρησιμοποιεί πολλές πύλες NAND, και στην πραγματική ζωή μπορεί να είναι αρκετά διαφορετική ανάλογα με την τεχνική αποθήκευσης, αλλά η λειτουργία της είναι η ίδια. Μπορείτε να δώσετε μερικές εισόδους, να ενεργοποιήσετε το bit εγγραφής και θα αποθηκεύσει τις εισόδους μέσα στο κελί. Αυτό δεν είναι μόνο ένα κύτταρο μνήμης, καθώς χρειαζόμαστε επίσης έναν τρόπο για να διαβάσετε πληροφορίες από αυτό. Αυτό γίνεται με έναν ενεργοποιητή, ο οποίος είναι μια συλλογή θυρών AND για κάθε bit στη μνήμη, όλα δεμένα με μια άλλη είσοδο, το bit "ανάγνωσης". Τα bits εγγραφής και ανάγνωσης ονομάζονται συχνά "set" και "enable" επίσης.
Το σύνολο αυτό το πακέτο είναι τυλιγμένο σε αυτό που είναι γνωστό ως μητρώο. Αυτοί οι καταχωρητές συνδέονται με το λεωφορείο, το οποίο είναι μια δέσμη καλωδίων που τρέχουν σε όλο το σύστημα και είναι συνδεδεμένα με κάθε συνιστώσα. Ακόμα και οι σύγχρονοι υπολογιστές έχουν ένα λεωφορείο, αν και μπορεί να έχουν πολλαπλά λεωφορεία για να βελτιώσουν την απόδοση πολλαπλών εργασιών.
Κάθε καταχωρητής έχει ακόμα ένα bit εγγραφής και ανάγνωσης, αλλά σε αυτή τη ρύθμιση, η είσοδος και η έξοδος είναι το ίδιο πράγμα. Αυτό είναι πραγματικά καλό. Για παράδειγμα. Εάν θέλετε να αντιγράψετε τα περιεχόμενα του R1 στο R2, θα ενεργοποιήσατε το bit ανάγνωσης για το R1, το οποίο θα ωθούσε τα περιεχόμενα του R1 στον δίαυλο. Ενώ το bit ανάγνωσης είναι ενεργοποιημένο, θα ενεργοποιήσατε το bit εγγραφής για το R2, το οποίο θα αντιγράψει τα περιεχόμενα του διαύλου σε R2.
Τα μητρώα χρησιμοποιούνται επίσης για τη δημιουργία μνήμης RAM. Η μνήμη RAM είναι συχνά τοποθετημένη σε ένα πλέγμα, με σύρματα να πηγαίνουν προς δύο κατευθύνσεις:
Οι αποκωδικοποιητές λαμβάνουν δυαδική είσοδο και ενεργοποιούν το αντίστοιχο αριθμημένο καλώδιο. Για παράδειγμα, το "11" είναι 3 σε δυαδικό, ο υψηλότερος αριθμός 2-bit, οπότε ο αποκωδικοποιητής θα ενεργοποιήσει το υψηλότερο σύρμα. Σε κάθε διασταύρωση υπάρχει ένα μητρώο. Όλα αυτά συνδέονται με τον κεντρικό δίαυλο και με μια κεντρική είσοδο εγγραφής και ανάγνωσης. Τόσο η είσοδος ανάγνωσης όσο και η εγγραφή θα ενεργοποιηθούν μόνο εάν είναι ενεργοποιημένα και τα δύο καλώδια που διασχίζουν τον καταχωρητή, επιτρέποντάς σας να επιλέξετε τον καταχωρητή από τον οποίο γράφετε και διαβάζετε. Και πάλι, η σύγχρονη μνήμη RAM είναι πολύ πιο περίπλοκη, αλλά αυτή η ρύθμιση εξακολουθεί να λειτουργεί.
Το ρολόι, το βήμα και ο αποκωδικοποιητής
Τα μητρώα χρησιμοποιούνται παντού και αποτελούν το βασικό εργαλείο για τη μετακίνηση δεδομένων και την αποθήκευση πληροφοριών στο CPU. Έτσι τι τους λέει να κινηθούν τα πράγματα γύρω?
Το ρολόι είναι το πρώτο στοιχείο στον πυρήνα της CPU και θα απενεργοποιηθεί και θα ενεργοποιηθεί σε ένα καθορισμένο διάστημα, μετρούμενο σε hertz ή σε κύκλους ανά δευτερόλεπτο. Αυτή είναι η ταχύτητα που βλέπετε διαφημίζεται μαζί με τις CPU. ένα τσιπ 5 GHz μπορεί να εκτελέσει 5 δισεκατομμύρια κύκλους ανά δευτερόλεπτο. Η ταχύτητα του ρολογιού είναι συχνά μια πολύ καλή μέτρηση για το πόσο γρήγορα είναι μια CPU.
Το ρολόι έχει τρεις διαφορετικές καταστάσεις: το ρολόι βάσης, το ρολόι ενεργοποίησης και το καθορισμένο ρολόι. Το ρολόι βάσης θα είναι ενεργοποιημένο για μισό κύκλο και θα απενεργοποιηθεί για το άλλο μισό. Το ρολόι ενεργοποίησης χρησιμοποιείται για την ενεργοποίηση καταχωρητών και θα πρέπει να είναι ενεργοποιημένο για μεγαλύτερο χρονικό διάστημα για να βεβαιωθείτε ότι τα δεδομένα είναι ενεργοποιημένα. Το καθορισμένο ρολόι πρέπει πάντα να είναι ενεργοποιημένο ταυτόχρονα με το ρολόι ενεργοποίησης ή αν μπορούν να γραφτούν λανθασμένα δεδομένα.
Το ρολόι είναι συνδεδεμένο με το βήμα, το οποίο θα μετρήσει από το ένα στο μέγιστο βήμα και θα επαναρυθμιστεί ξανά σε ένα όταν ολοκληρωθεί. Το ρολόι είναι επίσης συνδεδεμένο με πύλες AND για κάθε καταχωρητή στον οποίο η CPU μπορεί να γράψει:
Αυτές οι πύλες AND συνδέονται επίσης με την έξοδο άλλου στοιχείου, τον αποκωδικοποιητή εντολών. Ο αποκωδικοποιητής εντολών παίρνει μια εντολή όπως "SET R2 TO R1" και την αποκωδικοποιεί σε κάτι που η CPU μπορεί να καταλάβει. Έχει το δικό του εσωτερικό μητρώο, που ονομάζεται "Μητρώο εντολών", όπου βρίσκεται η τρέχουσα λειτουργία. Πως ακριβώς συμβαίνει αυτό έρχεται κάτω στο σύστημα που τρέχετε, αλλά μόλις αποκωδικοποιηθεί, θα ενεργοποιήσει το σωστό σετ και θα ενεργοποιήσει τα bits για τα σωστά μητρώα, τα οποία θα πυροδοτήσουν σύμφωνα με το ρολόι.
Οι οδηγίες προγράμματος αποθηκεύονται σε μνήμη RAM (ή L1 cache σε σύγχρονα συστήματα, πιο κοντά στην CPU). Δεδομένου ότι τα δεδομένα του προγράμματος αποθηκεύονται σε καταχωρητές, όπως και κάθε άλλη μεταβλητή, μπορεί να γίνει χειραγώγηση για να μεταβεί στο πρόγραμμα. Αυτό είναι το πώς τα προγράμματα παίρνουν τη δομή τους, με βρόχους και αν δηλώσεις. Μια εντολή άλματος ρυθμίζει την τρέχουσα θέση στη μνήμη που διαβάζει ο αποκωδικοποιητής εντολών από μια διαφορετική θέση.
Πώς όλα έρχονται μαζί
Τώρα, η ακαταμάχητη υπεραπλούστευση του τρόπου με τον οποίο λειτουργεί μια CPU είναι πλήρης. Το κύριο λεωφορείο εκτείνεται σε όλο το σύστημα και συνδέεται με όλα τα μητρώα. Οι πλήρεις προσθήκες, μαζί με μια δέσμη άλλων λειτουργιών, συσκευάζονται στην Αρτηριακή Λογική Μονάδα ή στην ALU. Αυτή η ALU θα έχει συνδέσεις στο δίαυλο και θα έχει επίσης τους δικούς της καταχωρητές για την αποθήκευση του δεύτερου αριθμού στον οποίο λειτουργεί.
Για να εκτελέσετε έναν υπολογισμό, τα δεδομένα προγράμματος φορτώνονται από τη μονάδα RAM στο τμήμα ελέγχου. Το τμήμα ελέγχου διαβάζει δύο αριθμούς από τη μνήμη RAM, φορτώνει το πρώτο στον καταχωρητή οδηγιών της μονάδας ALU και μετά φορτώνει το δεύτερο στον δίαυλο. Εν τω μεταξύ, στέλνει στην ALU έναν κώδικα διεύθυνσης που λέει τι πρέπει να κάνει. Στη συνέχεια η ALU εκτελεί όλους τους υπολογισμούς και αποθηκεύει το αποτέλεσμα σε ένα διαφορετικό μητρώο, το οποίο μπορεί να διαβάσει η CPU και μετά να συνεχίσει τη διαδικασία.
Πίστωση εικόνας: Rost9 / Shutterstock