Επίπεδο μικροπρογραμματισμού
Διομήδης Σπινέλλης
Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας
Οικονομικό Πανεπιστήμιο Αθηνών
dds@aueb.gr
Στοιχεία στο ψηφιακό επίπεδο
Εσωτερική δομή επεξεργαστή
Δομικά στοιχεία της μικροαρχιτεκτονικής ενός επεξεργαστή της Intel P6
Λειτουργικό διάγραμμα της μικροαρχιτεκτονικής ενός επεξεργαστή της Intel P6
Προγραμματισμός με μικροεντολές
Πιθανά πεδία για μια μικροεντολή (microcode):
- Πηγή 1
- Πηγή 2
- Προορισμός
- Σταθερή ποσότητα
- Λειτουργία ALU
- Συνθήκη
- Επόμενη εντολή
Η αντιστοίχιση μεταξύ εντολών μηχανής και μικροεντολών μπορεί να γίνει
με τη χρήση πίνακα που που περιέχει τη διεύθυνση της μικροεντολής για κάθε
ομάδα εντολών μηχανής.
Σχεδίαση μικροπρογραμματισμού
- Ορίζοντιος μικροπρογραμματισμός:
τα (πολλα) πεδία κάθε εντολής αντιστοιχούν στα αντίστοιχα σήματα ελέγχου.
- Κατακόρυφος μικροπρογραμματισμός:
τα (λίγα) πεδία κάθε εντολής αντιστοιχούν σε κωδικοποιημένα σήματα ελέγχου.
- Νανοπρογραμματισμός (nanoprogramming):
Οι (λίγες σχετικά) μικροεντολές που χρησιμοποιούνται αποθηκεύονται κωδικοποιημένες.
Βελτίωση απόδοσης
- Διοχέτευση (pipelining) με παράλληλη επεξεργασία
σταδίων των εντολών.
- Χρήση πολλαπλών λειτουργικών μονάδων
- Χρήση κρυφής μνήμης
Κρυφή μνήμη
Διάκριση ανάλογα με την οργάνωση αποθήκευσης των δεδομένων:
Πολιτικές αντικατάστασης στοιχείων από την κρυφή μνήμη:
Χειρισμός εγγραφών:
Διάγραμμα ολοκληρωμένου κυκλώματος κρυφής μνήμης δευτέρου επιπέδου για επεξεργαστές
PowerPC (MPC2605).
Προβλήματα διοχέτευσης
Η υλοποίηση επεξεργαστών με τη χρήση διοχέτεσης πρέπει να αντιμετωπίσει
μια σειρά από πιθανούς κινδύνους (hazards).
Προδιαγραφές στο Internet
Βιβλιογραφία
- Andrew S. Tanenbaum
Η αρχιτεκτονική των υπολογιστών: μια δομημένη προσέγγιση.
Τρίτη αμερικάνικη έκδοση. σ. 197-272. Κλειδάριθμος 1995.
- Doug Burger.
Memory systems.
ACM Computing Surveys, 28(1):63–65, March 1996.
- Carole Dulong.
The IA-64 architecture at work.
IEEE Computer, 31(7):24–32, July 1998.
- John L. Hennessy
and David A. Patterson.
Computer Architecture: A Quantitative Approach, pages 199–214, 251–255,
408–425.
Morgan Kaufmann Publishers, 1990.
- Bruce Shriver and
Bennett Smith.
The
Anatomy of a High-Performance Microprocessor.
IEEE Computer Society Press, 1998.
- Richard L. Sites.
Alpha AXP architecture.
Communications of the ACM, 36(2):33–44, February 1993.
Ασκήσεις
Θέματα για σκέψη
-
Μεταγλωττίστε μια συνάρτηση της C που να εκτελεί κάποιους υπολογισμούς
(χωρίς πολλές κλήσεις σε άλλες συναρτήσεις) σε συμβολική γλώσσα
(διακόπτης /Fa σε μεταγλωττιστές της Microsoft, -S σε μεταγλωττιστές
στο Unix).
Τυπώστε τις εντολές και βάλτε σε κύκλο κάθε ομάδα εντολών που θα μπορούσαν
να εκτελεστούν παράλληλα.
Εντοπίστε και διαχωρίστε κινδύνους δεδομένων και ελέγχου στη διοχέτευση των
εντολών.
Προτείνετε συγκεκριμένο αριθμό και είδος από δομικές μονάδες που μπορούν να
εξυπηρετήσουν τη διοχέτευση χωρίς τη δημιουργία δομικών κινδύνων.
-
Υλοποιήστε μια κλάση σε C++ για προσομοίωση πίνακα μιας διάστασης με
την υποστήριξη κρυφής μνήμης.
Η συνάρτηση κατασκευής ορίζει το μέγεθος του πίνακα και τον τύπο και
τα χαρακτηριστική της κρυφής μνήμης.
Η κλάση περιέχει μεθόδους για πρόσβαση στα στοιχεία του πίνακα
(ανάγνωση και γράψιμο) καθώς και μέθοδο που επιστρέφει το χρόνο
που έχει καταναλωθεί από την ανάγνωση και το γράψιμο (με βάση τη
λειτουργία της κρυφής μνήμης).
Με τη χρήση της κλάσης αυτής υλοποιήστε μια συνάρτηση πολλαπλασιασμού
πινακών .
Μετρήστε και συγκρίνετε την απόδοση διαφορετικών τύπων κρυφής μνήμης.
Υποχρεωτική άσκηση
Να γράψετε ένα πρόγραμμα σε C για να μετρήσετε την ταχύτητα του
υπολογιστή ανάλογα με την ύπαρξη κρυφής μνήμης και του τρόπου πρόσβασης
σε στοιχεία στη μνήμη.
Δηλώστε έναν πίνακα Ν στοιχείων της παρακάτω μορφής:
volatile int array[N];
(Ο προσδιορισμός volatile επιβάλλει στο μεταγλωττιστή να μη βελτιστοποιήσει
την πρόσβαση στον πίνακα αυτό).
Στη συνέχεια με τη χρήση της συνάρτησης time() χρονομετρήστε την απόδοση του
προγράμματος:
- Όταν προσθέτει μεταξύ τους K στοιχεία από τις ίδιες θέσεις του πίνακα.
- Όταν προσθέτει μεταξύ τους K στοιχεία από τυχαίες θέσεις του πίνακα
(επιλεγμένες με τη χρήση της συνάρτησης rand()).
- Όταν προσθέτει μεταξύ τους K στοιχεία με άλλο τρόπο πρόσβασης που θα
επιλέξετε εσείς (μπορείτε να δοκιμάσετε να αλλάζετε και τις τιμές των στοιχείων).
Δοκιμάστε το πρόγραμμα με διάφορες τιμές του Ν και με ενεργοποιημένη ή
απενεργοποιημένη την κρυφή μνήμη (πρώτου ή/και δεύτερου επιπέδου)
του επεξεργαστή.
Καταγράψτε με ακρίβεια τα αποτελέσματα σε πίνακες και ερμηνεύστε τα ως
προς το είδος και την οργάνωση της κρυφής μνήμης που θα μπορούσε
(με βάση τα αποτελέσματα) να έχει ο υπολογιστής.
Σημείωση
Για να έχετε συγκρίσιμα και χρήσιμα αποτελέσματα:
- Το πρόγραμμα πρέπει να είναι έτσι γραμμένο ώστε οι διαφορετικές μορφές
(π.χ. με πρόσβαση στις ίδιες θέσεις και πρόσβαση σε τυχαίες θέσεις)
να ακολουθούν τις ίδιες ακριβώς εντολές
(μπορείτε να διαβάσετε τις εντολές σε επίπεδο συμβολικής
γλώσσας με το διακόπτη του μεταγλωττιστή /Fa).
- Το Κ πρέπει να είναι αρκετά μεγάλο έτσι ώστε ο χρόνος να μπορεί να
μετρηθεί σε δευτερόλεπτα.
Η απενεργοποίηση της κρυφής μνήμης γίνεται σε πολλούς υπολογιστές
μέσω της επιλογής BIOS features setup (όταν ανάβει ο υπολογιστής).
Μετά την άσκηση μην παραλείψετε να επαναφέρετε τις ρυθμίσεις στην αρχική
τους κατάσταση.
Η άσκηση μπορεί να γίνει από ομάδες των τριών ατόμων το πολύ.