ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Γενικό διάγραμμα υπολογιστικού συστήματος
Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε τον μικροεπεξεργαστή που μπορεί να προγραμματιστεί με εντολές σε γλώσσα μηχανής (π.χ. 00111001011). - Τα δεδομένα και οι εντολές αποθηκεύονται στην κύρια μνήμη (ROM και RAM). - Οι διευθύνσεις, τα δεδομένα και οι εντολές ελέγχου μεταφέρονται μέσω του διαδρόμου (BUS). - Στις θύρες εισόδου-εξόδου (USB, parallel, HDMI) συνδέονται οι μονάδες εισόδου-εξόδου (σκάνερ, πληκτρολόγιο, ποντίκι, εκτυπωτές, οθόνη, κτλ).
Βασικά χαρακτηριστικά της κύριας μνήμης - Μήκος λέξης (1 ή 2 ή 4 ή 8 Byte) - Χωρητικότητα (KB, MB, GB, TB) - Χρόνος προσπέλασης (nsec)
Διάδρομοι επικοινωνίας (Bus) - Διάδρομος διευθύνσεων (Address Bus) Μεταφέρει τις διευθύνσεις στις οποίες πρόκειται να εγγραφούν ή να αναγνωσθούν δεδομένα. - Διάδρομος δεδομένων (Data Bus) Μεταφέρει τα δεδομένα μεταξύ της ΚΜΕ, της κύριας μνήμης και των θυρών εισόδου-εξόδου. - Διάδρομος ελέγχου (Control Bus) Μεταφέρει τις εντολές ελέγχου (ανάγνωση, εγγραφή) από την ΚΜΕ στη μνήμη ή τις περιφερειακές συσκευές.
Τυπικό Μικροϋπολογιστικό Σύστημα
Μικροϋπολογιστικό Σύστημα vs Κύκλωμα με Λογικές Πύλες - Ένα ψηφιακό κύκλωμα με πύλες υλοποιεί μόνο μια συνάρτηση εξόδου Υ και άρα μπορεί να χρησιμοποιηθεί μόνο σε μια εφαρμογή. Για να χρησιμοποιηθεί σε διαφορετική εφαρμογή πρέπει να γίνουν αλλαγές στο κύκλωμα (hardware). - Ένα μικροϋπολογιστικό σύστημα μπορεί να χρησιμοποιηθεί για πολλές διαφορετικές εφαρμογές αλλάζοντας μόνο το πρόγραμμα (software).
Εξωτερικές συνδέσεις ενός τυπικού μικροεπεξεργαστή
Εσωτερική δομή ενός τυπικού μικροεπεξεργαστή
Εσωτερική δομή ενός τυπικού μικροεπεξεργαστή
Αριθμητική και Λογική Μονάδα (ALU - Arithmetic & Logic Unit) - Εκτελεί αριθμητικές (πρόσθεση, αφαίρεση) και λογικές (AND, OR, XOR, NOT, κτλ) πράξεις - Το αποτέλεσμα της πράξης αποθηκεύεται στο συσσωρευτή (ACC) - Οι πράξεις επηρεάζουν τις σημαίες (flags) του καταχωρητή κατάστασης, π.χ. ενεργοποιείται η σημαία κρατούμενου όταν προκύπτει κρατούμενο μετά από μια πρόσθεση δύο δυαδικών αριθμών.
Μονάδα ελέγχου (CU Control Unit) - Ελέγχει και συγχρονίζει τη μεταφορά και επεξεργασία των δεδομένων. - Όλες οι λειτουργίες ενός μ/ε πραγματοποιούνται υπό την επίβλεψή της. - Η ταχύτητα λειτουργίας της καθορίζεται από το εξωτερικό clock.
Καταχωρητές (Registers) Χρησιμεύουν ως χώροι αποθήκευσης δεδομένων ή διευθύνσεων μνήμης. - Απαριθμητής προγράμματος (Program Counter) - Καταχωρητής εντολών (Instruction Register) - Δείκτης στοίβας (Stack Pointer) - Καταχωρητής κατάστασης (Status Register)
Απαριθμητής προγράμματος (Program Counter - PC) - Καταχωρεί τη διεύθυνση από την οποία θα ανακληθεί η επόμενη εντολή του προγράμματος. - Όποτε γίνεται RESET, τότε ο PC=0000. Όταν φορτωθεί για να εκτελεστεί η εντολή της διεύθυνσης 0000, τότε ο PC=0001. Στις πρώτες διευθύνσεις μνήμης υπάρχουν οι βασικές ρουτίνες εισόδου και εξόδου δεδομένων (BIOS).
Καταχωρητής εντολών (Instruction Register - IR) - Κάθε εντολή μεταφέρεται από τη μνήμη στον καταχωρητή εντολών μέσω του διαδρόμου δεδομένων με σκοπό να αποκωδικοποιηθεί και να εκτελεστεί. - Όποτε ο καταχωρητής εντολών φορτώνεται με μια εντολή, ο απαριθμητής προγράμματος αυξάνεται κατά 1 (για να δείχνει τη διεύθυνση της επόμενης εντολής).
Δείκτης στοίβας (Stack Pointer - SP) - Είναι ένας δείκτης διευθύνσεων της κορυφής της στοίβας (που βρίσκεται στην κύρια μνήμη) και δείχνει τη διεύθυνση της τελευταίας καταχώρησης. - Κάθε φορά που διακόπτεται η ροή εκτέλεσης του προγράμματος, αποθηκεύεται η τρέχουσα διεύθυνση στη στοίβα και όταν χρειαστεί να συνεχιστεί το πρόγραμμα από το σημείο που έμεινε, γίνεται ανάκληση της τελευταίας διεύθυνσης, η οποία βρίσκεται στο σημείο της στοίβας που δείχνει ο Stack Pointer.
Καταχωρητής κατάστασης (Status Register - SR) Μας πληροφορεί με σημαίες συνθήκης (flags) για τα αποτέλεσματα από την εκτέλεση της τελευταίας εντολής. - Σημαία μηδενισμού (Ζ=1 όταν το αποτέλεσμα της πράξης είναι 0, αλλιώς Ζ=0) - Σημαία προσήμου (S=1 όταν το MSB=1) - Σημαία ισοτιμίας (P=1 όταν είναι άρτιος αριθμός) - Σημαία κρατούμενου (C=1 αν προκύψει κρατούμενο από πρόσθεση ή δανεικό από αφαίρεση)
Φάσεις εκτέλεσης μιας εντολής Η εκτέλεση μιας εντολής αναλύεται στις εξής φάσεις: - Κλήση της εντολής (ο κώδικας της εντολής μεταφέρεται από τη θέση της μνήμης που δείχνει ο απαριθμητής προγράμματος στον αποκωδικοποιητή) - Αποκωδικοποίηση της εντολής - Εκτέλεση της εντολής
Γλώσσα μηχανής (Machine language) Κάθε εντολή χωρίζεται σε δύο τμήματα: Ο κώδικας της εντολής ορίζει τη λειτουργία που πρέπει να εκτελεστεί από το μ/ε, ενώ το τμήμα διεύθυνσης περιέχει τα δεδομένα της.
Συμβολική γλώσσα (Assembly language) - Κάθε δυαδική εντολή αντιστοιχίζεται σε μια συμβολική φράση που θυμίζει τη λειτουργία της, π.χ. η συμβολική εντολή MOV αντιστοιχεί στο δυαδικό κώδικα μεταφοράς (MOVE) δεδομένων. - Ο συμβολομεταφραστής (assembler) μετατρέπει τις συμβολικές εντολές σε γλώσσα μηχανής πριν πάνε στον αποκωδικοποιητή. - Το σύνολο των εντολών ενός μ/ε ονομάζεται ρεπερτόριο εντολών.
Κύκλος εντολής & Κύκλος μηχανής - Η ανάκληση, αποκωδικοποίηση και εκτέλεση μιας εντολής αποτελεί ένα κύκλο εντολής. - Ένας κύκλος εντολής απαιτεί ένα ή παραπάνω κύκλους μηχανής (ρολογιού) ανάλογα με την εντολή. - Σε ένα κύκλο μηχανής γίνεται μόνο μια λειτουργία, π.χ. μια ανάκληση κώδικα ή μια ανάγνωση από τη μνήμη ή μια εγγραφή στη μνήμη ή μια διακοπή (interrupt) ή ένας άεργος κύκλος (bus idle).
Κατηγορίες εντολών - Εντολές μεταφοράς δεδομένων (μεταξύ καταχωρητών και μνήμης) - Εντολές αριθμητικών πράξεων (μεταξύ των καταχωρητών του μικροεπεξεργαστή) - Εντολές λογικών πράξεων (μεταξύ των καταχωρητών του μικοεπεξεργαστή) - Εντολές άλματος (υπό συνθήκη ανάλογα με τις τιμές των σημαίων ή χωρίς συνθήκη)
Τρόποι αναφοράς στη μνήμη - Άμεση αναφορά στη μνήμη (Immediate addressing) - Απευθείας αναφορά στη μνήμη (Direct addressing) - Αναφορά στη μνήμη των καταχωρητών (Register addressing) - Έμμεση αναφορά μέσω καταχωρητή (Register Indirect addressing)
Άμεση αναφορά στη μνήμη (Direct addressing) Η τιμή του δεδομένου ακολουθεί μετά τον κώδικα εντολής π.χ. ADD 30h, που σημαίνει πρόσθεσε στην υπάρχουσα τιμή του συσσωρευτή (ACC) τη δεκαεξαδική τιμή 30.
Απευθείας αναφορά στη μνήμη (Indirect addressing) Μετά τον κώδικα εντολής υπάρχει η διεύθυνση που περιέχει το δεδομένο, π.χ. ADD [30h], που σημαίνει ότι η τιμή που περιέχει η διεύθυνση 30h, πρέπει να προστεθεί στην υπάρχουσα τιμή του συσσωρευτή (ΑCC).
Αναφορά στη μνήμη καταχωρητών (Register addressing) Μετά τον κώδικα εντολής υπάρχει ο καταχωρητής που περιέχει το δεδομένο, π.χ. ADD Α, που σημαίνει ότι η τιμή που περιέχει ο καταχωρητής Α πρέπει να προστεθεί στην υπάρχουσα τιμή του συσσωρευτή (ΑCC).
Έμμεση αναφορά μέσω καταχωρητή (Register indirect addressing) Μετά τον κώδικα εντολής υπάρχει ο καταχωρητής που περιέχει τη διεύθυνση που περιέχει το δεδομένο, π.χ. ADD [Α], όπου ο καταχωρητής Α δείχνει τη διεύθυνση που περιέχει την τιμή που πρέπει να προστεθεί στην υπάρχουσα τιμή του συσσωρευτή (ΑCC).
Χαρακτηριστικά μικροεπεξεργαστών - Συχνότητα λειτουργίας (όσο μεγαλύτερη είναι η συχνότητα του ρολογιού, τόσο γρηγορότερα θα εκτελεί ο μ/ε τις εντολές) - Μήκος λέξης (το μήκος των καταχωρητών 8 ή 16 ή 32 bit επηρεάζει την ταχύτητα εκτέλεσης εντολών) - Ρεπερτόριο εντολών (διαφορετικό σε κάθε μ/ε, επιλογή μ/ε ανάλογα με την εφαρμογή, συμβατότητα με παλαιότερους μ/ε)
Κατηγορίες μικροεπεξεργαστών - CISC (Complex Instruction Set Computers Υπολογιστικά Συστήματα Διευρυμένου ρεπερτορίου εντολών) με πολλές και πολύπλοκες εντολές, π.χ. Pentium της Intel - RISC (Reduced Instruction Set Computer Υπολογιστικά Συστήματα Μειωμένου ρεπερτορίου εντολών) με λίγες, απλές και γρήγορες εντολές, π.χ. PIC της Microchip
Οικογένειες μικροεπεξεργαστών - Οικογένεια Intel: 4004 (1969), 8008 (1972), 8080 (1974), 8086 (1976), 80286 (1982), 80386 (1985), 80486 (1989), Pentium I (1993), Pentium Pro (1995), PII (1997), Celeron (1998), PIII (1999), P4 (2000), Centrino (2003), Core 2 Duo - Core 2 Quad (2006), Intel core vpro 3ης γενιάς i3-i5-i7 (2012), Ιntel core vpro 4ης γενιάς i3-i5-i7 (2013) - Οικογένεια AMD - Οικογένεια Motorola
Μικροελεγκτές Ο μικροελεγκτής περιέχει τον μ/ε, τους διαδρόμους και τις περιφερειακές μονάδες (μνήμες, θύρες, DAC, ADC, μετρητές χρόνου, κτλ.)