- Αρχιτεκτονικές επεξεργαστών
- RISC και CISC Instruction Set Architecture
- Computing Set Instruction Computing (CISC)
- Υπολογισμός σετ μειωμένων οδηγιών (RISC)
Το ενσωματωμένο σύστημα είναι η καρδιά και ο πυρήνας των περισσότερων ηλεκτρονικών προϊόντων που διατίθενται στην αγορά. Είναι η εφαρμογή της μηχανικής στην οποία το υλικό πληροί το λογισμικό. Είμαστε περιτριγυρισμένοι από έναν κόσμο ενσωματωμένων συστημάτων, με μίνι υπολογιστές με κλειδαριές βιομετρικών πορτών, αεροπλάνα, αυτοκίνητα, βηματοδότες κ.λπ. Αυτοί οι περιορισμένοι πόροι, μικρά, έξυπνα και ισχυρά συστήματα μας βοηθούν στις καθημερινές μας εργασίες.
Έχω σκεφτεί ποτέ πώς λειτουργεί το σώμα μας, τα νευρικά συστήματα, τον εγκέφαλο και την ικανότητα πολλαπλών εργασιών. Εάν συνδυάσετε όλες αυτές τις λειτουργίες, θα έχετε μια τραχιά εικόνα ενός βιολογικού ενσωματωμένου συστήματος. Ο εγκέφαλός μας κρύβει την περίπλοκη λεπτομέρεια της λειτουργίας του που λαμβάνει χώρα μέσα σε αυτό, αλλά μας επιτρέπει να τον ελέγξουμε στο μέγιστο δυναμικό. Η ίδια πολυπλοκότητα ισχύει για τον επεξεργαστή ή τον ελεγκτή που χρησιμοποιείται σε ενσωματωμένα συστήματα. Κρύβουν πολύπλοκες λεπτομέρειες και μας παρέχουν μια διεπαφή υψηλού επιπέδου για την επεξεργασία. Για το επίπεδο αφαίρεσης, μπορεί κανείς να συσχετίσει τον τρόπο με τον οποίο ο κωδικός για την προσθήκη δύο αριθμών σε μια γλώσσα προγραμματισμού υψηλού επιπέδου προκαλεί τους καταχωρητές στα τσιπ να χειρίζονται bit και να δίνουν έξοδο στον χρήστη.
Αρχιτεκτονικές επεξεργαστών
Η κεντρική μονάδα επεξεργασίας, που αναφέρεται τόσο στον μικροεπεξεργαστή όσο και στον μικροελεγκτή, εκτελεί συγκεκριμένες εργασίες με τη βοήθεια μιας μονάδας ελέγχου (CU) και της αριθμητικής λογικής μονάδας (ALU). Καθώς οι οδηγίες παρέχονται από τη μνήμη RAM, η CPU ενεργεί με τη βοήθεια των δύο μονάδων βοήθειας δημιουργώντας μεταβλητές και εκχωρώντας τις τιμές και τη μνήμη. Είναι πραγματικά σημαντικό να γνωρίζουμε πώς η CPU εκτελεί όλη αυτή τη δράση με τη βοήθεια της αρχιτεκτονικής της. Εάν θέλετε να μάθετε περισσότερα σχετικά με τον τρόπο λειτουργίας ενός μικροελεγκτή, μπορείτε να διαβάσετε αυτό το βασικό άρθρο του μικροελεγκτή.
Κάθε CPU έχει μια μνήμη που σχετίζεται με αυτήν για την αποθήκευση του προγράμματος και των δεδομένων. Το πρόγραμμα και τα δεδομένα συνεργάζονται με την CPU για να λάβετε την έξοδο. Το Πρόγραμμα παρέχει τις οδηγίες, ενώ τα δεδομένα παρέχουν τις πληροφορίες που πρέπει να επεξεργαστούν. Για πρόσβαση στο πρόγραμμα και τα δεδομένα η CPU χρησιμοποιεί λεωφορεία, αυτά τα λεωφορεία είναι καλώδια, πιο συγκεκριμένα αυτά είναι τα ίχνη καλωδίων, όπως ίσως έχετε δει στις πλακέτες τυπωμένων κυκλωμάτων. Κατά τη διάρκεια αυτών των ετών οι μικροελεγκτές και οι μικροεπεξεργαστές έχουν εξελιχθεί προσαρμόζοντας διάφορες αρχιτεκτονικές, με βάση τις απαιτήσεις εφαρμογής ή σχεδίασης, η επιλογή του μικροελεγκτή επηρεάζεται από τον τύπο της αρχιτεκτονικής που χρησιμοποιείται σε αυτό. Ας ρίξουμε μια ματιά στις δημοφιλείς αρχιτεκτονικές.
Αρχιτεκτονική Von-Neumann / Princeton
Ο τρόπος με τον οποίο η CPU αποκτά πρόσβαση στο πρόγραμμα και τα δεδομένα, λέει για την αρχιτεκτονική της CPU. Νωρίτερα χρησιμοποιήθηκε ένα μόνο λεωφορείο για πρόσβαση στο πρόγραμμα και τα δεδομένα. Αυτός ο τύπος αρχιτεκτονικής είναι γνωστός ως Von Neumann Architecture ή πιο απλά Princeton Architecture. Ένα μόνο λεωφορείο για τη λήψη του κωδικού και των δεδομένων σημαίνει ότι έρχονται να μπουν στο δρόμο του άλλου και να επιβραδύνουν την ταχύτητα επεξεργασίας της CPU, επειδή ο καθένας έπρεπε να περιμένει το άλλο για να ολοκληρώσει τη λήψη. Αυτός ο περιορισμός είναι επίσης γνωστός ως κατάσταση συμφόρησης Von-Neumann.
Αρχιτεκτονική του Χάρβαρντ
Προτείνεται η επιτάχυνση της διαδικασίας Harvard Architecture. Σε αυτήν την αρχιτεκτονική υπάρχουν ξεχωριστοί δίαυλοι δεδομένων για δεδομένα και πρόγραμμα. Αυτό σημαίνει ότι αυτή η αρχιτεκτονική πρότεινε τη χρήση τεσσάρων λεωφορείων
- Ένα σύνολο διαύλου δεδομένων που μεταφέρει τα δεδομένα μέσα και έξω από την CPU.
- Ένα σύνολο διαύλου διευθύνσεων για πρόσβαση στα δεδομένα.
- Ένα σύνολο διαύλου δεδομένων για μεταφορά κώδικα στην CPU.
- Ένας δίαυλος διευθύνσεων για πρόσβαση στον κωδικό.
Η χρήση ξεχωριστού διαύλου διευθύνσεων και διαύλου δεδομένων σήμαινε χαμηλό χρόνο εκτέλεσης για τον επεξεργαστή, αλλά αυτό συνεπάγεται το κόστος της πολυπλοκότητας στο σχεδιασμό της αρχιτεκτονικής. Η αρχιτεκτονική του Von Neumann μπορεί να ακούγεται λίγο τεμπέλης αλλά έχει το πλεονέκτημα του απλού σχεδιασμού της.
Η αρχιτεκτονική του Χάρβαρντ είναι πολύ εύκολο να εφαρμοστεί όταν η CPU και οι μονάδες μνήμης μοιράζονται τον ίδιο χώρο ή η μνήμη RAM και ROM είναι ενσωματωμένη (on-chip) με τη μονάδα επεξεργασίας, όπως σε μικροελεγκτή όπου οι αποστάσεις είναι σε μικρά και χιλιοστά. Ωστόσο, η ίδια αρχιτεκτονική είναι δύσκολο να εφαρμοστεί όταν η μνήμη που κρατά τον κωδικό είναι εξωτερική της μονάδας επεξεργασίας, όπως αυτή των υπολογιστών x86 IBM. Ένα σύνολο ξεχωριστών ιχνών καλωδίων τόσο για τα δεδομένα όσο και για τη διεύθυνση στη μητρική πλακέτα θα καθιστούσε τον πίνακα πολύπλοκο και ακριβό. Ας το καταλάβουμε με ένα παράδειγμα επεξεργαστή.
Ένας επεξεργαστής με δίαυλο δεδομένων 64-bit και δίαυλος διευθύνσεων 32-bit θα χρειαζόταν περίπου 100 λεωφορεία (96 για το δίαυλο δεδομένων και διευθύνσεων και λίγα άλλα για τα σήματα ελέγχου) για την εφαρμογή της αρχιτεκτονικής Von-Neumann. Η ίδια δομή εάν εφαρμοστεί με την αρχιτεκτονική του Χάρβαρντ θα κόστιζε τα ίχνη διπλού καλωδίου περίπου 200 με μεγάλο αριθμό καρφιτσών να βγαίνουν από τον επεξεργαστή. Για τον ίδιο λόγο δεν βλέπουμε την καθαρή αρχιτεκτονική του Χάρβαρντ να εφαρμόζεται σε υπολογιστές και σταθμούς εργασίας. Αντ 'αυτού, χρησιμοποιείται μια τροποποιημένη αρχιτεκτονική Harvard στην οποία χρησιμοποιείται ιεραρχία μνήμης με μνήμη cache CPU για το διαχωρισμό του προγράμματος και των δεδομένων. Η ιεραρχία μνήμης διαχωρίζει την αποθήκευση με βάση την ιεραρχία του χρόνου απόκρισης των διεργασιών.
Αρχιτεκτονική σετ διδασκαλίας
Δεδομένου ότι το πρόγραμμα (κωδικός) φορτώνεται στη μνήμη του συστήματος (RAM) που λαμβάνεται από την CPU (που αναφέρεται τόσο στον μικροεπεξεργαστή όσο και στον μικροελεγκτή) για να ενεργήσει στα δεδομένα, είναι πολύ παρόμοιο καθώς δίνουμε οδηγίες όταν εκπαιδεύουμε τον σκύλο για ορισμένες ενέργειες και εντολές. Καθώς αυτές οι οδηγίες εφαρμόζονται σε ορισμένα τρανζίστορ πηγαίνει από το ένα επίπεδο λογικής στο άλλο για να γίνει αυτό. Ουσιαστικά, με τη βοήθεια των οδηγιών, ο προγραμματιστής επικοινωνεί με τον επεξεργαστή. Κάθε CPU έχει το δικό της σύνολο εντολών, μια συλλογή οδηγιών με βάση την αρχιτεκτονική και τις δυνατότητές της.
Η CPU κατανοεί αυτές τις οδηγίες στο συνδυασμό των 0 και 1 που είναι επίσης γνωστές ως opcode. Για έναν προγραμματιστή για τον άνθρωπο, είναι πολύ δύσκολο να θυμάστε το συνδυασμό των 0 και 1 για κάθε εντολή που σχετίζεται με την CPU. Για να διατηρήσουμε τη δουλειά ενός ανθρώπινου προγραμματιστή εύκολη, μας παρέχονται υψηλού επιπέδου διεπαφές αυτών των οδηγιών και ο μεταγλωττιστής τις μετατρέπει με τη μορφή 0 και 1 για την επεξεργασία του. Επίσης, στο σύνολο εντολών κάθε CPU, έχει έναν περιορισμένο αριθμό οδηγιών που μπορεί να κατανοήσει.
Απόδοση CPU
Μπορεί να έχετε ακούσει τον όρο ρυθμός ρολογιού της CPU που σχετίζεται με την απόδοση της CPU. Οι CPU έχουν γενικά ρυθμό ρολογιού σε MHz (Mega-Hertz) ή GHz (Giga-Hertz) όπως ρυθμό ρολογιού 25 GHz. Ο αριθμός που σχετίζεται με το ρυθμό ρολογιού δείχνει πόσες φορές το ρολόι εντός της CPU σημειώνει κύκλους ανά δευτερόλεπτο. Η πρακτικότητα του ρυθμού ρολογιού μπορεί να γίνει κατανοητή από το γεγονός ότι οι οδηγίες εκτελούνται βάσει κύκλων ρολογιού της CPU που είναι ανάλογος με τον αριθμό προγραμμάτων που μπορεί να εκτελεστεί η CPU κάθε φορά.
Η απόδοση της CPU εξαρτάται από τον αριθμό των εντολών που γράφονται στο πρόγραμμα, περισσότερες από τις οδηγίες, περισσότερο από τον χρόνο που χρειάζεται η CPU για να τις εκτελέσει. Εξαρτάται επίσης από τον αριθμό των κύκλων ρολογιού στους οποίους εκτελείται κάθε εντολή, ορισμένες οδηγίες χρειάζονται περισσότερους κύκλους ρολογιού για να εκτελεστούν από άλλες, έτσι καθυστερούν την απόδοση της CPU. Οι οδηγίες σε ένα πρόγραμμα και οι κύκλοι που απαιτούνται για την εκτέλεση κάθε εντολής είναι αντιστρόφως ανάλογοι μεταξύ τους. Η αλλαγή του ενός θα επηρεάσει το άλλο. Αυτό είναι το σημείο όπου η βιομηχανία CPU χωρίζεται.
RISC και CISC Instruction Set Architecture
Όπως προαναφέρθηκε, η εκτέλεση ενός προγράμματος και η απόδοση της CPU εξαρτάται από τον αριθμό των οδηγιών σε ένα πρόγραμμα όπου οι οδηγίες προτείνονται σε αυτήν τη συγκεκριμένη CPU ως μέρος του συνόλου εντολών και ο δεύτερος παράγοντας είναι ο αριθμός των κύκλων ρολογιού σε την οποία εκτελείται κάθε εντολή. Βάσει αυτών των δύο παραγόντων, επί του παρόντος υπάρχουν δύο διαθέσιμες οδηγίες. Το πρώτο από τα οποία είναι το Complex Instruction Set Computing (CISC), ενώ το άλλο είναι το Reduced Instruction Set Computing (RISC). Ας συζητήσουμε λεπτομερώς καθεμία από αυτές τις αρχιτεκτονικές για να κατανοήσουμε τη διαφορά μεταξύ RIC και CISC Architecture.
Computing Set Instruction Computing (CISC)
Το CISC σημαίνει σύνθετο Computing Set Computing. Το κύριο κίνητρο του CISC είναι να μειώσει τον αριθμό των εντολών που εκτελεί ένα πρόγραμμα, αυτό γίνεται συνδυάζοντας πολλές απλές οδηγίες όπως λειτουργία διευθύνσεων, φόρτωση κ.λπ. και σχηματίζοντας μία πολύπλοκη οδηγία. Η οδηγία CISC περιλαμβάνει μια σειρά απλών οδηγιών καθώς και ορισμένες ειδικές οδηγίες που απαιτούν περισσότερους από έναν κύκλους ρολογιού για την εκτέλεση. Οι οδηγίες CISC μπορούν να λειτουργήσουν απευθείας στη μνήμη χωρίς την παρέμβαση των καταχωρητών, πράγμα που σημαίνει ότι εξαλείφει την ανάγκη για ορισμένες βασικές οδηγίες όπως φόρτωση τιμών και την απαίτηση μνήμης (RAM). Οι οδηγίες της CISC δίνουν έμφαση περισσότερο στο υλικό παρά στο λογισμικό, πράγμα που σημαίνει ότι αντί να βάζετε το φορτίο στους μεταγλωττιστές,Η CISC χρησιμοποιεί τρανζίστορ ως υλικό για την αποκωδικοποίηση και την εφαρμογή οδηγιών. Ωστόσο, καθώς η οδηγία είναι πολύπλοκη και αποτελείται από πολλαπλά βήματα, εκτελούνται σε μεγαλύτερο αριθμό κύκλων ρολογιού.
Μια απλή αναλογία συσχέτισης είναι όταν σας ζητείται να ανοίξετε το βιβλίο και να διαβάσετε τη 2η σελίδα του 3ου κεφαλαίου. Σε αυτήν τη σειρά δραστηριοτήτων, κάνετε πολλά βήματα, όπως η εύρεση του βιβλίου από την τσάντα σας, παρά η ανακατεύθυνση της σελίδας στο κεφάλαιο 3 και, στη συνέχεια, η μετάβαση στη 2η σελίδα του κεφαλαίου και, στη συνέχεια, αρχίστε να διαβάζετε. Η σειρά ενός βήματος, εάν συνδυαστεί σε μία οδηγία ανάγνωσης της σελίδας 44 (που είναι ο 2ος αριθμός σελίδας του 3ου κεφαλαίου), λαμβάνουμε μια οδηγία CISC.
Υπολογισμός σετ μειωμένων οδηγιών (RISC)
Το πρώτο ολοκληρωμένο chip σχεδιάστηκε από τον Jack Kilby το 1958, το οποίο ήταν ταλαντωτής και το πρώτο εμπορικό μικροεπεξεργαστή του 1970 βγήκε από την Intel. Αν και κατά την έναρξη των επεξεργαστών δεν υπήρχε CISC. Αλλά με τις μεγάλες απαιτήσεις πληροφορικής, η αρχιτεκτονική CISC γινόταν πιο περίπλοκη και δύσκολη στη διαχείριση. Ο συνολικός επανασχεδιασμός της αρχιτεκτονικής CISC γνωστός ως RISC προήλθε από την IBM από τον John Coke. Έτσι, για να γίνει διάκριση μεταξύ των δύο αρχιτεκτονικών εισήχθησαν οι όροι RISC και CISC.
Το RISC σημαίνει υπολογιστικό σύνολο μειωμένων οδηγιών. Το κύριο κίνητρο της RISC ήταν να εισαγάγει ομοιομορφία στο μέγεθος και την εκτέλεση των οδηγιών. Αυτό έγινε με την εισαγωγή ενός απλού συνόλου εντολών που θα μπορούσε να εκτελεστεί ως μία εντολή ανά κύκλο, αυτό γίνεται με τη διάσπαση σύνθετων οδηγιών όπως η φόρτωση και η αποθήκευση σε διαφορετικές οδηγίες, όπου κάθε εντολή διαρκεί περίπου έναν κύκλο ρολογιού για να εκτελεστεί. Η αρχιτεκτονική RISC περιλαμβάνει απλές οδηγίες του ίδιου μεγέθους που θα μπορούσαν να εκτελεστούν σε έναν κύκλο ρολογιού. Τα μηχανήματα που βασίζονται σε RISC χρειάζονται περισσότερη μνήμη RAM από το CISC για να διατηρούν τις τιμές καθώς φορτώνει κάθε εντολή σε καταχωρητές. Η εκτέλεση μιας μεμονωμένης εντολής ανά κύκλο δίνει στα μηχανήματα που βασίζονται σε RISC το πλεονέκτημα των σωληνώσεων(pipelining είναι η διαδικασία στην οποία φορτώνεται η επόμενη εντολή πριν από την εκτέλεση της πρώτης εντολής, αυξάνει την αποτελεσματικότητα της εκτέλεσης). Η αρχιτεκτονική RISC δίνει έμφαση