Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017
ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ
Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών: Ανάλογα με τον πυρήνα τους χωρίζονται σε Μικροϋπολογιστές με μικροεπεξεργαστή (μprocessor - up) Μικροϋπολογιστές με μικροελεγκτή (μcontroller - uc).
Ο μp είναι ένα ολοκληρωμένο κύκλωμα που περιλαμβάνει CPU και κυκλώματα διευθυνσιοδότησης μνήμης. Ο μc περιλαμβάνει επιπλέον ρολόι, θύρες εισόδου / εξόδου (γενικότερα διάφορα περιφερειακά) και εσωτερική μνήμη RAM & ROM. Είναι δηλαδή ένας πλήρης υπολογιστής ενσωματωμένος σ ένα IC (ενώ αντίθετα ο μp γίνεται Η/Υ με την προσθήκη πολλών εξαρτημάτων).
ΜΠΛΟΚ ΔΙΑΓΡΑΜΜΑ μc Bus δεδομένων, εντολών,κλπ Μνήμη μp I/O συσκευές
Ιστορική Αναδρομή Το πρώτο transistor, το 1947
Intel 4004 o πρώτος μικροεπεξεργαστής. 4-bit, 2300 ΤΡΑΝΖΙΣΤΟΡΣ Νοέμβριος 1971 Ιστορική Αναδρομή 46 εντολές, «ταχύτητα» 740ΚΗz: ~5000 πιο αργός από τωρινούς μp Zilog Z80 Ιούνιος 1976 8-bit «ταχύτητα» 2.5MHz
Ιστορική Αναδρομή Σύγχρονοι μικροεπεξεργαστές
Αρχιτεκτονική Υπολογιστών
Αρχιτεκτονική Υπολογιστών Συσκευές εισόδου/ εξόδου : επικοινωνία με τον έξω κόσμο. Κύρια μνήμη : αποθήκευση τρεχόντων προγραμμάτων. Κεντρική μονάδα επεξεργασίας : κυκλώματα που εκτελούν εντολές των προγραμμάτων. Μονάδα ελέγχου. Αριθμητική και λογική μονάδα. Καταχωρητές
Κύρια μνήμη Η κύρια μνήμη είναι μια συλλογή από θέσεις αποθήκευσης, κάθε μία διαθέτει ένα μοναδικό αναγνωριστικό την διεύθυνση της. Τα δεδομένα μεταφέρονται μέσω του διαύλου από και προς την μνήμη σε ομάδες από bit οι οποίες ονομάζονται λέξεις.
Τύποι μνήμης Η εξωτερική μνήμη μπορεί να αποτελείται κυρίως από κάποια RAM ενώ συνήθως χρησιμοποιείται και ROM με προαποθηκευμένο πρόγραμμα για την εκκίνηση των βασικών λειτουργιών. RAM μνήμη τυχαίας προσπέλασης (Random Access Memory) Μπορεί να αναγνωστεί και να εγγραφεί από το χρήστη. Όταν διακόπτεται η τροφοδοσία του ρεύματος, οι πληροφορίες (πρόγραμμα ή δεδομένα) διαγράφονται. ROM μνήμη μόνο για ανάγνωση (Read-Only Memory) Ο χρήστης μπορεί να διαβάσει τη ROM αλλά όχι και να γράψει σε αυτή Χρησιμοποιείται για προγράμματα ή δεδομένα που δεν πρέπει να διαγραφούν ή να μεταβληθούν ακόμα και όταν ο υπολογιστής κλείνει.
Τύποι μνήμης EPROM (erasable programmable read-only memory) EEPROM(electrically erasable programmable read-only memory) Οι μνήμες EEPROM μπορούν να προγραμματιστούν και να διαγραφούν αρκετές χιλιάδες, έως και μερικά εκατομμύρια φορές. Σε μνήμες EEPROM γράφονται σήμερα τα προγράμματα λειτουργίας firmware πολλών ηλεκτρονικών ή ηλεκτρικών συσκευών Με την εφαρμογή της τροφοδοσίας ο μικροεπεξεργαστής ξεκινάει την εκτέλεση προγράμματος από τη ROM και στη συνέχεια φορτώνει στη μνήμη RAM από διάφορες εξωτερικές συσκευές τα υπόλοιπα προγράμματα που μπορεί να εκτελέσει.
Τύποι μνήμης EPROM (erasable programmable read-only memory) EEPROM(electrically erasable programmable read-only memory) Οι μνήμες EEPROM μπορούν να προγραμματιστούν και να διαγραφούν αρκετές χιλιάδες, έως και μερικά εκατομμύρια φορές. Σε μνήμες EEPROM γράφονται σήμερα τα προγράμματα λειτουργίας firmware πολλών ηλεκτρονικών ή ηλεκτρικών συσκευών Με την εφαρμογή της τροφοδοσίας ο μικροεπεξεργαστής ξεκινάει την εκτέλεση προγράμματος από τη ROM και στη συνέχεια φορτώνει στη μνήμη RAM από διάφορες εξωτερικές συσκευές τα υπόλοιπα προγράμματα που μπορεί να εκτελέσει.
Κρυφή μνήμης H κρυφή μνήμη είναι μια μνήμη η οποία συνήθως βρίσκεται ενσωματωμένη στο μικροεπεξεργαστή και είναι πολύ πιο γρήγορη από τη μνήμη RAM. Όταν ο μικροεπεξεργαστής ανακαλεί μια εντολή από τη RAM και την αποθηκεύσει στον ΙR τότε εκτός από αυτή την εντολή διαβάζει από τη RAM αρκετές από τις επόμενες και τις αποθηκεύει στην κρυφή μνήμη. Όταν αναζητήσει την επόμενη εντολή προς εκτέλεση πρώτα την αναζητεί στην cache και αν δεν βρίσκεται εκεί τότε την αναζητεί στη RAM πραγματοποιώντας ολόκληρο τον κύκλο ανάκλησης της εντολής.
Δίαυλος επικοινωνίας Υπεύθυνος για την μεταφορά δεδομένων, διευθύνσεων και εντολές ελέγχου.
Δίαυλος Δεδομένων (Data bus) Το εύρος του δίαυλου δεδομένων ενός μικροεπεξεργαστή μπορεί να είναι : 4-bit 8-bit 16-bit 32-bit 64-bit Χαρακτηρίζει το μέγιστο αριθμό ο οποίος μπορεί να μεταφερθεί ανάμεσα στις διάφορες μονάδες του μικροεπεξεργαστή. Αν ο επεξεργαστής είναι 4-bit τότε για να μεταφερθεί στη μνήμη ο αριθμός 100 (64 16 ) θα έχουμε δύο βήματα. Πρώτα θα μεταφερθεί το ένα μισό του αριθμού, π.χ. το 6 (0110 2 ) και στη συνέχεια το 4 (=0100 2 ). Αν ο δίαυλος δεδομένων ήταν 8-bit τότε η μεταφορά θα μπορούσε να γίνει σε ένα βήμα. Το ίδιο ισχύει και για τις πράξεις ανάμεσα σε αριθμούς. O επεξεργαστής με το μεγαλύτερο μήκος λέξης θα εκτελέσει μια λειτουργία με τη μεγαλύτερη ταχύτητα.
Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Ο δίαυλος διευθύνσεων (address bus) επιτρέπει την προσπέλαση μιας συγκεκριμένης λέξης στη μνήμη. Ο δίαυλος διευθύνσεων είναι το σύνολο των γραμμών που μεταφέρουν την πληροφορία στην περιοχή της μνήμης που θα χρησιμοποιηθεί, είτε για ανάγνωση είτε για γραφή.
Δίαυλος Ελέγχου (Control Bus) Ο δίαυλος ελέγχου χρησιμοποιείται από μεταφέρει σήματα ελέγχου στις συσκευές. Παράδειγμα, αν τα δεδομένα διαβάζονται ή γράφονται στην μονάδα, η κατάλληλη γραμμή (διάβασε ή γράψε) θα είναι ενεργοποιημένη. Address Data input Write 2 20 bytes of RAM (1 Megabyte) Data Output
Κεντρική Μονάδα Επεξεργασίας
Αριθμητική Λογική Μονάδα (ΑLU Arithmetic Logic Unit) Οι βασικές λειτουργίες που υποστηρίζει κάθε ALU είναι: Προσθέσεις Αφαιρέσεις Λογικές λειτουργίες (AND, OR, NOT, XOR κλπ) Ολισθήσεις Η Αριθμητική Λογική μονάδα αποτελείται αποκλειστικά από συνδυαστική λογική. Έχει δύο εισόδους και μία έξοδο οι οποίες συνδέονται με το δίαυλο δεδομένων ενώ διαθέτει επίσης καταχωρητές για να συγκρατεί τα δεδομένα στις εισόδους.
Memory Registers Μηχανοτρονική Καταχωρητές - Registers Σημαντικό ξεχωριστό μέρος της αρχιτεκτονικής του κάθε μικροεπεξεργαστή αποτελούν οι καταχωρητές. Αποτελούν προσωρινές συσκευές αποθήκευσης δεδομένων. Μπορούν να χρησιμοποιηθούν και για συγκεκριμένες λειτουργίες Ο κάθε μικροεπεξεργαστής διαθέτει πληθώρα καταχωρητών. Κάποιοι είναι διαθέσιμοι στον προγραμματιστή να αλλάξει τα δεδομένα τους ενώ κάποιοι άλλοι όχι. Register 0 Register 1 Register 2 Register 3 Temporary Memory. Computer Loads data from RAM to registers, performs operations on data in registers, and stores results from registers back to RAM
Συσσωρευτής (Accumulator) Καταχωρητές - Registers Ο συσσωρευτής είναι ένας από τους βασικότερους καταχωρητές. Οι πράξεις της ALU στους περισσότερους μικροεπεξεργαστές γίνονται ανάμεσα στο συσσωρευτή και σε κάποια θέση μνήμης. Συσσωρευτές μπορεί να υπάρχουν και περισσότεροι του ενός κάτι που παρέχει μεγαλύτερη ευελιξία στον προγραμματισμό. Καταχωρητής εντολών (Instruction Register ΙR) Ο καταχωρητής αυτός κρατάει την εντολή που εκτελείται εκείνη τη στιγμή για όλο το χρονικό διάστημα που χρειάζεται για να εκτελεστεί. Μετρητής Προγράμματος (Program Counter PC) Στον PC αποθηκεύεται κάθε φορά η διεύθυνση μνήμης της επόμενης εντολής που θα εκτελεστεί. Όταν ολοκληρωθεί η διαδικασία ανάκλησης της εντολής από τη μνήμη τότε η εντολή αποθηκεύεται στον IR και στον IP αποθηκεύεται η αμέσως επόμενη εντολή που θα εκτελεστεί. Ο PC αυξάνεται κάθε φορά κατά 1 εκτός και αν η εντολή που εκτελείται έχει ως αποτέλεσμα την αλλαγή των περιεχομένων του.
Καταχωρητές - Registers Προσωρινοί καταχωρητές στις εισόδους της ALU. Οι καταχωρητές αυτοί χρησιμοποιούνται για buffering των δεδομένων εισόδου της ALU. Καταχωρητές γενικής χρήσης (General Purpose Registers) Οι καταχωρητές χρησιμεύουν στον προγραμματιστή για αποθήκευση ενδιάμεσων αποτελεσμάτων σε διάφορες πράξεις. Έτσι αποφεύγεται η χρονοβόρα διαδικασία αποθήκευσης στη RAM και στη συνέχεια ξανά η ανάγνωσή τους για τις επόμενες πράξεις. Καταχωρητής διευθύνσεων μνήμης (Address Register) Ο καταχωρητής αυτός κρατάει τη διεύθυνση μνήμης από την οποία θέλουμε να γίνει κάποια ανάγνωση και οδηγεί τον δίαυλο διευθύνσεων.
Μονάδα ελέγχου Control Unit Μοιάζει με το τμήμα του ανθρώπινου εγκεφάλου που ελέγχει τη λειτουργία κάθε οργάνου του σώματος και ο έλεγχος αυτός επιτυγχάνεται μέσω διαύλων που είναι είτε ανοιχτοί είτε κλειστοί. Register 0 Register 1 Register 2 Register 3 Arithmetic / Logic Unit Control Unit (State Machine) 1) Fetch: Ask the RAM for the instruction whose address is stored in ΙR. 2) Execute: There are only a small number of possible instructions. Depending on which it is, do what is necessary to execute it. 3) Repeat: Add 1 to the address stored in IP, and go back to Step 1!
Ταχύτητα εκτέλεσης εντολών (Clock Frequency) Για τη σωστή λειτουργία της CPU απαιτείται ένα ρολόι για το συγχρονισμό των διάφορων λειτουργιών. Η συχνότητα λειτουργίας καθορίζει το πόσο γρήγορα εκτελεί εντολές ο μικροεπεξεργαστής. Όλες οι λειτουργίες στο μικροεπεξεργαστή γίνονται συγχρονισμένα με τους παλμούς ρολογιού. Η συχνότητα του ρολογιού και τα βήματα εκτέλεσης μιας εντολής καθορίζουν την ταχύτητα ενός μικροεπεξεργαστή. Παράδειγμα η εντολή πρόσθεσης απαιτεί 4 κύκλους μηχανής για να εκτελεστεί.
Πρόγραμμα Πρόσθεσης Ιδέα του αποθηκευμένου προγράμματος John von Neumann Δύο μεταβλητές a και b να προστεθούν και να κατοχυρωθεί το αποτέλεσμα στην μεταβλητή c. I.e. c a+b Εντολές στο πρόγραμμα: Load a into register r1 Load b into register r3 r2 r1 + r3 Store r2 in c
Instructions in program: - Load a into register r1 - Load b into register r3 - r2 r1 + r3 - Store r2 in c Μηχανοτρονική ΔΙΑΔΙΚΑΣΙΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΡΟΣΘΕΣΗΣ
Instructions in program: - Load a into register r1 - Load b into register r3 - r2 r1 + r3 - Store r2 in c Μηχανοτρονική
Instructions in program: - Load a into register r1 - Load b into register r3 - r2 r1 + r3 - Store r2 in c Μηχανοτρονική
Instructions in program: - Load a into register r1 - Load b into register r3 - r2 r1 + r3 - Store r2 in c Assembly code: - mov r1, (a) - mov r3, (b) - add r2, r1, r3 - mov (c), r2
Assembly instructions add r2, r1, r3 Opcode What to do with the data (Control Unit operation) Operands Where to get data and put the results
Assembly instructions add r2, r1, r3 Opcode What to do with the data (Control Unit operation) Operands Where to get data and put the results
Assembly and C++
Τεχνική Pipelining Η τεχνική pipelining είναι μια τεχνική με την οποία μπορούν να παραλληλιστούν κάποιες επαναληπτικές διαδικασίες με στόχο την επιτάχυνση της εκτέλεσής τους. Με την τεχνική pipelining ο μικροεπεξεργαστής εκμεταλλεύεται ταυτόχρονα όλο το hardware ξεκινώντας μια νέα διαδικασία πριν ολοκληρωθεί η προηγούμενη.
Τεχνική Pipelining Ας υποθέσουμε ότι ένας μικροεπεξεργαστής πρέπει να εκτελέσει τις παρακάτω λειτουργίες: 1. Ανάγνωση των περιεχομένων x από μία θέση μνήμης RAM και αποθήκευση σε εσωτερικό καταχωρητή R1. 2. Πολλαπλασιασμός των περιεχομένων x (R1) με το 16. 3. Άθροιση του αποτελέσματος στον συσσωρευτή για 10 θέσεις της μνήμης RAM.
Τεχνική Pipelining Ένας μικροεπεξεργαστής χωρίς pipelining εκτελεί ως εξής: Βήμα 1.1: Ανάγνωση της 1ης θέσης μνήμης της RAM Βήμα 1.2: Εκτέλεση 1ου πολλαπλασιασμού Βήμα 1.3: 1η άθροιση στο συσσωρευτή Βήμα 2.1: Ανάγνωση της 2ης θέσης μνήμης της RAM Βήμα 2.2: Εκτέλεση 2ου πολλαπλασιασμού Βήμα 2.3: 2η άθροιση στο συσσωρευτή...κ.ο.κ... Για την ολοκλήρωση των εντολών θα χρειαστεί 30 βήματα.
Ένας επεξεργαστής χρησιμοποιώντας pipelining εκτελεί ως εξής: Βήμα 1: Ανάγνωση της 1ης θέσης μνήμης της RAM Βήμα 2: Εκτέλεση 1ου πολλαπλασιασμού Ανάγνωση της 2ης θέσης μνήμης της RAM Βήμα 3: 1η Άθροιση στο συσσωρευτή Εκτέλεση 2ου πολλαπλασιασμού Ανάγνωση της 3ης θέσης μνήμης της RAM Βήμα 4: 2η Άθροιση στο συσσωρευτή Εκτέλεση 3ου πολλαπλασιασμού Ανάγνωση της 4ης θέσης μνήμης της RAM Βήμα 5: 3η Άθροιση στο συσσωρευτή Εκτέλεση 4ου πολλαπλασιασμού Ανάγνωση της 5ης θέσης μνήμης της RAM...κ.ο.κ... Έτσι θα χρειαστεί κάτι περισσότερο από 10 βήματα για την εκτέλεση της παραπάνω διαδικασίας. Τεχνική Pipelining Με την τεχνική pipelining ο μικροεπεξεργαστής εκμεταλλεύεται ταυτόχρονα όλο το hardware ξεκινώντας μια νέα διαδικασία πριν ολοκληρωθεί η προηγούμενη.