Προηγμένοι Μικροεπεξεργαστές 2006 – 2007 Παρουσίαση Projects
Γενικά 1 Θέμα για 1 άτομο 1 Θέμα για 1-2 άτομα 6 Θέματα για 2 άτομα 7 Θέματα για 2-3 άτομα
Γενικά Προθεσμία: Τέλος εξεταστικής (Hard Deadline) Τυπικός απαιτούμενος χρόνος: 1 Εβδομάδα Παραδοτέα: Κώδικας και Αναφορά
Γενικά Το debugging είναι επίσης κομμάτι της δουλειάς σας Θα σας βοηθήσουμε: Αφού έχετε ψάξει το manual της Intel Αφού έχετε ψάξει εξονυχιστικά για να βρείτε το πρόβλημα Αφού έχετε περιορίσει το που μπορεί να οφείλεται το πρόβλημα
Θέμα 1 ο – 2 Άτομα Μελέτη και υλοποίηση μέσω παραδείγματος της διαδικασίας περάσματος παραμέτρων μέσω στοίβας ανάμεσα σε διαφορετικά protection levels. Η πληροφορία για τον αριθμό των μεταβλητών που πρέπει να περαστούν στην συνάρτηση θα πρέπει να δίνεται μέσω του πεδίου Parameter Count που βρίσκεται στο call gate
Θέμα 1 ο – Εξήγηση Τουλάχιστον 4 Code Segments: Real Mode Protected mode 16bit – Privilege level 0 Protected mode 32bit – Privilege level 0 Protected mode 32bit – Privilege level 3 Μπαίνουμε σε protected mode – PL0 Ρυθμίζουμε GDT, IDT, TSS, Stacks για τα τρία privilege levels Επιθυμητό: Αυτές οι πληροφορίες να μπορούν να αλλάξουν μόνο από privilege level 0 Δημιουργούμε το κατάλληλο Call Gate
Θέμα 1 ο – Σχόλια Μπαίνουμε σε PL3 Εκτελούμε έναν αλγόριθμο ο οποίος χρησιμοποιεί μία συνάρτηση στο PL0 μέσω του Call Gate Επιστρέφουμε σε Real Mode Ρεαλιστικό Παράδειγμα: putchar(char c, int x, int y) putstring(char *str, int x, int y) Η εφαρμογή χρησιμοποιεί αυτές τις συναρτήσεις για να εκτυπώσει ένα μήνυμα στην οθόνη
Θέμα 2 ο – 1 Άτομο Υλοποίηση προγράμματος για την μελέτη των TLBs στην Pentium 4 αρχιτεκτονική. Λόγω του τρόπου λειτουργίας των TLBs για τον καθορισμό του περιεχομένου τους απαιτείται το πέρασμα όλων των δυνατών συνδυασμών των γραμμικών διευθύνσεων που ορίζουν το paging. Στην εργασία αυτή θα πρέπει να γίνει μια πλήρης αναφορά του τρόπου λειτουργίας του TLB στον Pentium 4 και να υλοποιηθεί ένα παράδειγμα χρήσης του TLB
Θέμα 2 ο – Σχόλια Μπαίνουμε σε protected mode Δημιουργούμε ένα page table που να καλύπτει όλες τις virtual addresses Ενεργοποιούμε το paging Εκτελούμε έναν αλγόριθμο που προσπελαύνει πολλά pages και με την χρήση των Test Registers 6 και 7 βλέπουμε τι περιέχουν τα TLBs στο τέλος και τι όχι ++ Θεωρητική Ανάλυση των TLBs
Θέμα 3 ο – 2 Άτομα Υλοποίηση ενός scheduler που θα λειτουργεί σε virtual mode. Η εργασία αυτή θα έχει ως στόχο την ταυτόχρονη (multi-tasking) εκτέλεση tasks υλοποιημένα σε real mode τρόπο λειτουργίας και protected mode τρόπο λειτουργίας.
Θέμα 3 ο – Σχόλια Το virtual mode επιτρέπει την εκτέλεση real mode εφαρμογών μέσα από protected mode Ο scheduler θα πραγματοποιεί task switching μεταξύ 4 tasks (2 γραμμένων σε real mode και 2 σε protected mode) Round Robin λογική Ιδιαίτερη βαρύτητα στη μελέτη και χρήση των protection μηχανισμών και στον χειρισμό του busy bit
Θέμα 4 ο – 2-3 Άτομα Χρήση των Performance Counters για την μελέτη της επίδρασης της εκτέλεσης δικτυακών εφαρμογών σε pentium αρχιτεκτονικές
Θέμα 4 ο – Σχόλια OProfile: Εργαλείο που χρησιμοποιεί τους performance counters για να πάρει στατιστικά για το πως χρησιμοποιεί ένα πρόγραμμα τον επεξεργαστή Ενδιαφέρουσες Ιδέες: Σύγκριση διαφορετικών Pentium αρχιτεκτονικών Μελέτη ενός απαιτητικού προγράμματος για διάφορα επίπεδα χρήσης
Θέμα 5 ο – 1-2 Άτομα Να υλοποιηθεί υπορουτίνα εξυπηρέτησης διακοπής (ISR) για το ΙΝΤ 8h η οποία θα κάνει Task Switching μεταξύ (Ν) άλλων υπορουτινών. Το Task Switching θα βασίζεται σε round robin αλγόριθμο και θα εκτελείται κάθε 55ms. Ο scheduler θα πρέπει να υποστηρίζει τις παρακάτω λειτουργίες μέσω της ανίχνευσης πατήματος συγκεκριμένων πλήκτρων: CreateTask για την δημιουργία νέων tasks, KillΤask για τον τερματισμό κάποιου task, Sleep(x) η οποία θα μπλοκάρει την εκτέλεση ενός task για Χ ms
Θέμα 5 ο – Σχόλια Απλό πρόγραμμα (είναι;) Χρησιμοποιεί το interrupt του πληκτρολογίου
Θέμα 6 ο – 2 Άτομα Υλοποίηση μηχανισμού προστασίας από stack overflow με χρήση του limit checking του stack segment descriptor σε protected mode
Θέμα 6 ο – Σχόλια Δημιουργούμε πρόγραμμα που κάνει βαριά χρήση της στοίβας, πχ κλήση recursive συνάρτησης και δεσμεύουμε ένα stack segment περιορισμένου μεγέθους. Έτσι προκαλούμε Limit Exception για το SS, το οποίο συλλαμβάνουμε και εξυπηρετούμε Πιθανοί τρόποι χειρισμού του exception: Εκτύπωση μηνύματος και τερματισμός Αύξηση του ορίου του segment Δέσμευση καινούργιου segment
Θέμα 7 ο – 2-3 Άτομα Μέτρηση των branches, exceptions και interrupts χρησιμοποιώντας το monitor performance hardware. Ο στόχος αυτής της εργασίας είναι η μέτρηση των προηγούμενων χαρακτηριστικών σε multimedia εφαρμογές
Θέμα 7 ο – Σχόλια Παρόμοιο με το 4 ο Θέμα, αλλά για multimedia εφαρμογές
Θέμα 8 ο – 2-3 Άτομα Μελέτη της απόδοσης της trace cache χρησιμοποιώντας το monitor performance hardware. Ο στόχος αυτής της εργασίας είναι να αξιολογηθεί η συμπεριφορά της trace cache για multimedia εφαρμογές
Θέμα 8 ο – Σχόλια Σαν το 7 ο Θέμα αλλά μελετάμε την trace cache
Θέμα 9 ο – 2-3 Άτομα Να υλοποιηθεί bootable κώδικας σε real mode, ο οποίος θα φορτώνει ένα στοιχειώδη kernel (π.χ. έναν task scheduler) και θα τον εκκινεί. Η υλοποίηση αυτή πρέπει να είναι ανεξάρτητη του μεγέθους του kernel. H φόρτωση του scheduler θα γίνεται από το floppy drive
Θέμα 9 ο - Σχόλια Μελέτη του τρόπου με τον οποίο είναι δομημένη μία boot δισκέτα. Μελέτη του τρόπου με τον οποίο χειρίζεται το BIOS την εκκίνηση. Η υλοποίηση πρέπει να προσπερνάει τυχόν όρια του BIOS στο μέγεθος που μπορεί να έχει ο boot κώδικας.
Θέμα 10 ο – 2 Άτομα Διερεύνηση του Ι/Ο MAP πεδίου του TSS. Υλοποίηση προγράμματος που θα δείχνει την δυνατότητα ελέγχου πρόσβασης στα Ι/Οs του υπολογιστή μεταξύ διαφορετικών tasks.
Θέμα 10 ο - Σχόλια Το Ι/Ο MAP πεδίο στο TSS περιορίζει την δυνατότητα ενός task να προσπελάσει θύρες εισόδου – εξόδου. Προσπάθεια να προσπελαστεί προστατευμένη θύρα προκαλεί General Protection Fault. Μπορεί να χρησιμοποιηθεί: Είτε για να δώσει τον αποκλειστικό έλεγχο της θύρας σε ένα task κάθε φορά Είτε για να παρεμβληθεί κάποιος driver ελέγχου της θύρας, ο οποίος θα καλείται από το GP Fault
Θέμα 11 ο – 2 Άτομα Χρήση debug registers για την μέτρηση της χρονικής απόστασης μεταξύ της επαναχρησιμοποίησης μίας μεταβλητής.
Θέμα 11 ο – Σχόλια Με τους debug registers μπορούμε να προκαλούμε breakpoint κατά την προσπέλαση μέχρι και τριών θέσεων μνήμης. Το breakpoint αυτό εξυπηρετείται μέσω του Debug Exception.
Θέμα 11 ο – Σχόλια Ένα πρόγραμμα θα προσπελαύνει συνέχεια ένα μικρό set τιμών με κάπως μεταβλητό τρόπο Ένας Debug Exception Handler Θα καλείται κάθε φορά που θα διαβάζεται κάποια από τις τιμές που παρακολουθούμε Θα υπολογίζει το πόσος χρόνος πέρασε από την προηγούμενη ανάγνωση της τιμής Θα σετάρει τον Debug Register για την επόμενη ανάγνωση της τιμής Ο χρόνος θα μετριέται μέσω του Time-Stamp Counter
Θέμα 12 ο – 2-3 Άτομα Δημιουργία paging σε protected mode ξεκινώντας από το flat memory architecture μοντέλο. Μελέτη εναλλακτικών τρόπων οργάνωσης του Page Table και χρήση του monitor performance hardware για την εύρεση της αποτελεσματικότερης δομής. Στην εργασία αυτή θα πρέπει να δοθεί βαρύτητα στον τρόπο διαχείρισης κοινών pages ανάμεσα σε διαφορετικά tasks και στον τρόπο τοποθέτησης του TSS στην μνήμη (δεδομένου των περιορισμών που υπάρχουν λόγω των ορίων στα pages)
Θέμα 12 ο - Σχόλια
Θέμα 13 ο – 2-3 Άτομα Χρήση των παράλληλων εντολών και εντολών κινητής υποδιαστολής (SIMD- MMX) που υπάρχουν στους επεξεργαστές τεχνολογίας Pentium 2 και άνω για την υλοποίηση multimedia αλγορίθμων. Εύρεση τρόπων μέτρησης της απόδοσης και της αποτελεσματικότητας της υλοποίησης χρησιμοποιώντας τις δυνατότητες του performance monitoring hardware
Θέμα 13 ο - Σχόλια
Θέμα 14 ο – 2 Άτομα Διαχείριση στοίβας. Υποθέτουμε ότι ένα συγκεκριμένο σημείο κώδικα ενός προγράμματος χρησιμοποιείται πολλές φορές από το υπόλοιπο πρόγραμμα και πρέπει να έχει (διαχειρίζεται) δική του στοίβα και διαφορετική από του υπόλοιπου προγράμματος. Απαραίτητες ενέργειες για την σωστή δήλωση και διαχείριση των δύο στοιβών και της σωστής εναλλαγής μεταξύ τους.
Θέμα 14 ο – Σχόλια
Θέμα 15 ο – 2-3 Άτομα Μελέτη του τρόπου εκκίνησης ενός υπολογιστή και χρήσης του MBR (Master Boot Record) για τον σκοπό αυτό. Υλοποίηση που θα αντιγράφει το MBR από το σκληρό δίσκο και θα το μετατρέπει κατάλληλα για εκτέλεση από την δισκέτα. Το αποτέλεσμα θα είναι ο Η/Υ να εκκινεί από δισκέτα αλλά να φορτώνει σαν να εκκινούσε από το σκληρό