Ασκήσεις
Θέματα για σκέψη
-
Μεταγλωττίστε μια συνάρτηση της C που να εκτελεί κάποιους υπολογισμούς
(χωρίς πολλές κλήσεις σε άλλες συναρτήσεις) σε συμβολική γλώσσα
(διακόπτης /Fa σε μεταγλωττιστές της Microsoft, -S σε μεταγλωττιστές
στο Unix).
Τυπώστε τις εντολές και βάλτε σε κύκλο κάθε ομάδα εντολών που θα μπορούσαν
να εκτελεστούν παράλληλα.
Εντοπίστε και διαχωρίστε κινδύνους δεδομένων και ελέγχου στη διοχέτευση των
εντολών.
Προτείνετε συγκεκριμένο αριθμό και είδος από δομικές μονάδες που μπορούν να
εξυπηρετήσουν τη διοχέτευση χωρίς τη δημιουργία δομικών κινδύνων.
-
Υλοποιήστε μια κλάση σε C++ για προσομοίωση πίνακα μιας διάστασης με
την υποστήριξη κρυφής μνήμης.
Η συνάρτηση κατασκευής ορίζει το μέγεθος του πίνακα και τον τύπο και
τα χαρακτηριστική της κρυφής μνήμης.
Η κλάση περιέχει μεθόδους για πρόσβαση στα στοιχεία του πίνακα
(ανάγνωση και γράψιμο) καθώς και μέθοδο που επιστρέφει το χρόνο
που έχει καταναλωθεί από την ανάγνωση και το γράψιμο (με βάση τη
λειτουργία της κρυφής μνήμης).
Με τη χρήση της κλάσης αυτής υλοποιήστε μια συνάρτηση πολλαπλασιασμού
πινακών .
Μετρήστε και συγκρίνετε την απόδοση διαφορετικών τύπων κρυφής μνήμης.
Υποχρεωτική άσκηση
Να γράψετε ένα πρόγραμμα σε C για να μετρήσετε την ταχύτητα του
υπολογιστή ανάλογα με την ύπαρξη κρυφής μνήμης και του τρόπου πρόσβασης
σε στοιχεία στη μνήμη.
Δηλώστε έναν πίνακα Ν στοιχείων της παρακάτω μορφής:
volatile int array[N];
(Ο προσδιορισμός volatile επιβάλλει στο μεταγλωττιστή να μη βελτιστοποιήσει
την πρόσβαση στον πίνακα αυτό).
Στη συνέχεια με τη χρήση της συνάρτησης time() χρονομετρήστε την απόδοση του
προγράμματος:
- Όταν προσθέτει μεταξύ τους K στοιχεία από τις ίδιες θέσεις του πίνακα.
- Όταν προσθέτει μεταξύ τους K στοιχεία από τυχαίες θέσεις του πίνακα
(επιλεγμένες με τη χρήση της συνάρτησης rand()).
- Όταν προσθέτει μεταξύ τους K στοιχεία με άλλο τρόπο πρόσβασης που θα
επιλέξετε εσείς (μπορείτε να δοκιμάσετε να αλλάζετε και τις τιμές των στοιχείων).
Δοκιμάστε το πρόγραμμα με διάφορες τιμές του Ν και με ενεργοποιημένη ή
απενεργοποιημένη την κρυφή μνήμη (πρώτου ή/και δεύτερου επιπέδου)
του επεξεργαστή.
Καταγράψτε με ακρίβεια τα αποτελέσματα σε πίνακες και ερμηνεύστε τα ως
προς το είδος και την οργάνωση της κρυφής μνήμης που θα μπορούσε
(με βάση τα αποτελέσματα) να έχει ο υπολογιστής.
Σημείωση
Για να έχετε συγκρίσιμα και χρήσιμα αποτελέσματα:
- Το πρόγραμμα πρέπει να είναι έτσι γραμμένο ώστε οι διαφορετικές μορφές
(π.χ. με πρόσβαση στις ίδιες θέσεις και πρόσβαση σε τυχαίες θέσεις)
να ακολουθούν τις ίδιες ακριβώς εντολές
(μπορείτε να διαβάσετε τις εντολές σε επίπεδο συμβολικής
γλώσσας με το διακόπτη του μεταγλωττιστή /Fa).
- Το Κ πρέπει να είναι αρκετά μεγάλο έτσι ώστε ο χρόνος να μπορεί να
μετρηθεί σε δευτερόλεπτα.
Η απενεργοποίηση της κρυφής μνήμης γίνεται σε πολλούς υπολογιστές
μέσω της επιλογής BIOS features setup (όταν ανάβει ο υπολογιστής).
Μετά την άσκηση μην παραλείψετε να επαναφέρετε τις ρυθμίσεις στην αρχική
τους κατάσταση.
Η άσκηση μπορεί να γίνει από ομάδες των τριών ατόμων το πολύ.