Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Σχετικά έγγραφα
Πανεπιστήµιο Θεσσαλίας

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής. Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 3 ο ΜΕΔ απλού κύκλου

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Πανεπιστήµιο Θεσσαλίας

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Κεφάλαιο 3 Κεντρική Μονάδα Επεξεργασίας

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο Σύντομη Επανάληψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 4 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 11 ο και 12 ο

Αριθμητική Υπολογιστών (Κεφάλαιο 3)

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής. Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο Σύντοµη Επανάληψη

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής. Εισαγωγή στους Η/Υ

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 6 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 4 ο ΜΕΔ πολλαπλών κύκλων

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής. Εισαγωγή στους Η/Υ

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήµιο Θεσσαλίας

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Μια Ανασκόπηση στην Οργάνωση Η/Υ. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

ξργ Μονάδα επεξεργασίας ξργ δδ δεδομένων Μονάδα ελέγχου

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Οργάνωση Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 3 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

3. Πρόσθεση Πολλαπλασιασμός 4. Πρόσθεση στο πρότυπο ΙΕΕΕ Πολλαπλασιασμός στο πρότυπο ΙΕΕΕ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Εντολές του MIPS (2)

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

Πράξεις με δυαδικούς αριθμούς

Chapter 3 Αριθμητική Υπολογιστών

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 3. Αριθµητική για υπολογιστές

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

Πανεπιστήµιο Θεσσαλίας

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017

ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα

Λογική Σχεδίαση Ι - Εξεταστική Φεβρουαρίου 2013 Διάρκεια εξέτασης : 160 Ονοματεπώνυμο : Α. Μ. Έτος σπουδών:

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Chapter 3. Αριθμητική Υπολογιστών. Έβδομη (7 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

Εισαγωγή στην επιστήμη των υπολογιστών

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Σχεδίαση της Μονάδας Ελέγχου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

Ελίνα Μακρή

Δείγμα Τελικής Εξέτασης στο ΗΜΥ213. Διδάσκοντας: Γιώργος Ζάγγουλος

Chapter 3. Αριθμητική Υπολογιστών. (συνέχεια)

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης Θέμα 1ο (3 μονάδες)

Αρχιτεκτονική Υπολογιστών

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Αρχιτεκτονική Η/Υ. Γιώργος ηµητρίου. Μια Ανασκόπηση στην Οργάνωση Η/Υ. Πανεπιστήµιο Θεσσαλίας - Τµήµα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Εντολές γλώσσας μηχανής

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

Αριθμητική Ανάλυση & Εφαρμογές

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 ΑΠΑΝΤΗΣΕΙΣ

2 η Ενδιάμεση Εξέταση Λύσεις/Απαντήσεις

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Αρχιτεκτονική Υπολογιστών. Data. Κείμενο. Βίντεο. Αριθμοί Εικόνες. Ήχοι

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Δυαδικό Σύστημα Αρίθμησης

Transcript:

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής 1 Νοεμβρίου 2017 Πρώτη Σειρά Ασκήσεων παράδοση: 29 Νοεμβρίου 3μμ Άσκηση 1 Θεωρήστε τη ΜΕΔ της αρχιτεκτονικής MIPS καλωδιωμένης λογικής για κύκλο εντολής τόσο απλού, όσο και πολλαπλών κύκλων μηχανής. Περιγράψτε την πλήρη ροή πληροφορίας και στις δύο περιπτώσεις υλοποίησης απλού και πολλαπλών κύκλων μηχανής για τις εντολές προσπέλασης μνήμης: lw $4, -128($2) sw $4, -128($2) όπου η σταθερά -128 αποτελεί τη μετατόπιση της έμμεσης διευθυνσιοδότησης. Συγκεκριμένα, για καθεμία από τις δύο εντολές να αναφέρετε όλες τις τιμές των σημάτων ελέγχου που παράγονται, καθώς και τις μικρολειτουργίες που εκτελούνται σε κάθε υπομονάδα της ΜΕΔ, είτε είναι χρήσιμες για τη συγκεκριμένη εντολή είτε όχι γεγονός το οποίο ζητείται να αναφέρετε, με τη σειρά που αυτές εκτελούνται. Ακόμη, να γράψετε τις τιμές πληροφορίας που φτάνουν σε κάθε υπομονάδα και κάθε πολυπλέκτη. Τέλος, για την περίπτωση πολλαπλών κύκλων μηχανής, να αναφέρετε τις εγγραφές των καταχωρητών Α, Β, C, IR και DR που συμβαίνουν, καθώς και τις τιμές που εγγράφονται. Θεωρήστε ότι στην αρχή του κύκλου κάθε εντολής οι καταχωρητές $2 και $4 περιέχουν τις τιμές 0x600006a8 και 0x8 αντίστοιχα, η θέση μνήμης στην οποία αναφέρεται η εντολή περιέχει την τιμή 0x2cb1f, ενώ ο PC περιέχει την τιμή 0x1480a004. Άσκηση 2 Θεωρήστε τη ΜΕΔ της αρχιτεκτονικής MIPS καλωδιωμένης λογικής για κύκλο εντολής τόσο απλού, όσο και πολλαπλών κύκλων μηχανής. Υποθέστε ότι θέλουμε να επεκτείνουμε το σύνολο εντολών, ώστε να περιλαμβάνει κάποιες πιο απλές, αλλά και κάποιες πιο ισχυρές εντολές, χρήσιμες για πολλές εφαρμογές: Α. Προσπέλαση μνήμης χωρίς μετατόπιση: lw $rt,($rs) sw $rt,($rs) όπου η τελική διεύθυνση προσπέλασης προέρχεται κατ ευθείαν από τον καταχωρητή $rs. Β. Προσπέλαση μνήμης με διευθυνσιοδότηση ενημέρωσης: lwp $rt,off($rs) swp $rt,off($rs) όπου η τελική διεύθυνση προσπέλασης υπολογίζεται όπως ακριβώς στην αρχιτεκτονική MIPS, αλλά επιπλέον η διεύθυνση αυτή αποθηκεύεται στον καταχωρητή $rs. Η πρώτη εντολή φορτώνει μια λέξη δεδομένων από τη μνήμη, ενώ η δεύτερη εντολή αποθηκεύει μια λέξη δεδομένων στη μνήμη. Γ. Διακλάδωση μετά από πρόσθεση, χωρίς ή με σύνδεση: baddz $rs,$rt,off baddzal $rs,$rt,off

2 όπου, αφού προστεθούν τα περιεχόμενα των καταχωρητών $rs και $rt, εκτελείται άλμα αν προκύπτει μηδενική τιμή, ενώ το αποτέλεσμα της πρόσθεσης αποθηκεύεται στον καταχωρητή $rt. Η διεύθυνση προορισμού άλματος υπολογίζεται με το γνωστό τρόπο, δηλαδή πρόσθεση της προέκτασης προσήμου της μετατόπισης off στην τρέχουσα τιμή του μετρητή προγράμματος. Η δεύτερη εντολή επιπρόσθετα αποθηκεύει την παλιά τιμή του PC στον καταχωρητή $31, μόνο όταν εκτελείται άλμα. Δ. Εναλλαγή περιεχομένου καταχωρητών: swap $rd,$rt όπου το περιεχόμενο του καταχωρητή $rt γράφεται στον καταχωρητή $rd, ενώ το αρχικό περιεχόμενο του $rd γράφεται στον $rt. Χωρίς να εισάγετε νέες υπομονάδες στη ΜΕΔ πλην πολυπλεκτών, εξηγήστε εάν και πώς μπορείτε να υποστηρίξετε τις παραπάνω εντολές, τόσο στην περίπτωση απλού, όσο και στην περίπτωση πολλαπλών κύκλων μηχανής για κάθε κύκλο εντολής. Πιο συγκεκριμένα, τι προσθήκες χρειάζεστε στη ΜΕΔ για την υποστήριξη των εντολών αυτών; Χρειάζεστε κάποιους νέους δρόμους μεταφοράς πληροφορίας; Χρειάζεστε κάποια νέα σήματα ελέγχου; Οι όποιες τροποποιήσεις θα πρέπει να ελαχιστοποιούν τη διάρκεια του κύκλου μηχανής στην πρώτη, και τον αριθμό κύκλων μηχανής για τις εμπλεκόμενες εντολές στη δεύτερη περίπτωση. Ειδικά για την περίπτωση πολλαπλών κύκλων, δε θα πρέπει να αυξάνεται η διάρκεια του κύκλου μηχανής. Στην περίπτωση των πολλαπλών κύκλων μηχανής, να δώσετε την απαραίτητη προσθήκη στη μηχανή καταστάσεων που να περιγράφει την εκτέλεση των εντολών. Να υποθέσετε ότι δε μπορείτε να αλλάξετε τον αριθμό θυρών ανάγνωσης και εγγραφής του ΦΚ από αυτόν της κλασικής αρχιτεκτονικής MIPS δύο θύρες ανάγνωσης και μία θύρα εγγραφής. Μπορείτε όμως να προσθέσετε επιλογές ή και πολυπλέκτες στις εισόδους διευθύνσεων του ΦΚ, ώστε να λάβετε τους αριθμούς καταχωρητών από οποιαδήποτε πεδία της λέξης εντολής. Να απαντήσετε ανεξάρτητα για καθένα από τα ερωτήματα Α-Δ. Άσκηση 3 Θεωρήστε για άλλη μια φορά τη ΜΕΔ της αρχιτεκτονικής MIPS καλωδιωμένης λογικής για κύκλο εντολής τόσο απλού, όσο και πολλαπλών κύκλων μηχανής. Στην απλουστευμένη υλοποίηση που μελετήσαμε στο μάθημα, δεν υπήρχαν εντολής ολίσθησης. Αν θέλουμε όμως να υποστηρίξουμε εντολές ολίσθησης, είναι απαραίτητο να προσθέσουμε στη ΜΕΔ μια μονάδα ολίσθησης (ΜΟΛ) με δύο εισόδους δεδομένων, οι οποίες να παρέχουν το δεδομένο που θα ολισθηθεί και τον αριθμό ψηφίων ολίσθησης, μία είσοδο ελέγχου, που να καθορίζει τη λειτουργία που θα εκτελεστεί, και μία έξοδο, η οποία να παράγει το ολισθημένο δεδομένο. Έστω ότι θέλουμε να υποστηρίξουμε τέσσερις τύπους εντολών ολίσθησης, σύμφωνα με τον παρακάτω πίνακα: Εντολή Συμβολισμός Περιγραφή Ολίσθησης με σταθερό αριθμό ψηφίων OP $rd,$rt,sh $rd = $rt ολ. κατά sh Ολίσθησης με μεταβλητό α- ριθμό ψηφίων OPv $rd,$rt,$rs $rd = $rt ολ. κατά $rs Ολίσθησης με σταθερό αριθμό ψηφίων και πρόσθεσης OPadd $rd,$rt,$rs,sh $rd = $rt + ($rs ολ. κατά sh) Ολίσθησης με σταθερό αριθμό ψηφίων και αφαίρεσης OPsub $rd,$rt,$rs,sh $rd = $rt - ($rs ολ. κατά sh) όπου OP μπορεί να είναι sll, srl, sra ή ror, για αριστερή, δεξιά λογική, δεξιά αριθμητική και δεξιά κυκλική ολίσθηση, αντίστοιχα.

3 Εισάγετε τη ΜΟΛ χωρίς να δείξετε λεπτομέρειες του εσωτερικού της στην άσκηση αυτή δεν μας απασχολεί η υλοποίησή της και δείξτε τη νέα ΜΕΔ που προκύπτει και για τις δύο περιπτώσεις ελέγχου. Προσθέστε ή τροποποιήστε πολυπλέκτες και όποια σήματα ελέγχου κρίνετε απαραίτητο, και δείξτε τις τιμές που αυτά λαμβάνουν κατά τη διάρκεια του κύκλου εντολής των παραπάνω τύπων εντολών. Για την περίπτωση πολλαπλών κύκλων μηχανής ανά κύκλο εντολής, δείξτε τις προσθήκες στη μηχανή καταστάσεων της αρχιτεκτονικής. Προσπαθήστε να ελαχιστοποιήσετε τη διάρκεια εκτέλεσης των εντολών και για τις δύο περιπτώσεις, χωρίς όμως να μεταβάλλετε τη διάρκεια του κύκλου μηχανής στη δεύτερη περίπτωση. Θεωρήστε ότι η διάρκεια εκτέλεσης μιας ολίσθησης στη ΜΟΛ είναι περίπου ίση με τη διάρκεια εκτέλεσης μιας πράξης στην ΑΛΜ. Άσκηση 4 Έστω ένας ψηφιακός ελεγκτής, ο οποίος οδηγούμενος από ένα ρολόι και δύο εισόδους Α και Β, παράγει τρεις εξόδους Χ, Υ και Ζ. Ο ελεγκτής διατρέχει συνεχώς την εξής ακολουθία γεγονότων: Κατά την έναρξη του πρώτου κύκλου ρολογιού, η γραμμή Χ τίθεται 1. Κατά την έναρξη του δεύτερου κύκλου ρολογιού, η γραμμή Υ, ή η Ζ, τίθεται 1, ανάλογα με το εάν η γραμμή Α είναι 1 ή 0, αντίστοιχα, στον προηγούμενο κύκλο ρολογιού. Ο ελεγκτής κατόπιν αναμένει, μέχρις ότου η γραμμή Β γίνει 1. Στην επόμενη θετική ακμή του ρολογιού, ο ελεγκτής θέτει την έξοδο Ζ στην τιμή 1, για τη διάρκεια ενός κύκλου ρολογιού και κατόπιν μηδενίζει όλα τα σήματα εξόδου για έναν κύκλο ρολογιού. Η ακολουθία αυτή επαναλαμβάνεται, ξεκινώντας στην πρώτη διαθέσιμη θετική ακμή του ρολογιού. Σχεδιάστε ένα διάγραμμα καταστάσεων και δώστε τις λογικές συναρτήσεις επόμενης κατάστασης και σημάτων εξόδου για τον ελεγκτή αυτόν. Άσκηση 5 Θεωρήστε έναν επεξεργαστή με έλεγχο πολλαπλών κύκλων μηχανής ανά κύκλο εντολής. Η αρχιτεκτονική του υλοποιεί αρχιτεκτονική στοίβας, με κάποιες όμως παραλλαγές που θα περιγραφούν στη συνέχεια. Η ΜΕΔ της αρχιτεκτονικής αυτής περιλαμβάνει εκτός από τη στοίβα, μια αριθμητική/λογική μονάδα ΑΛΜ, μια μονάδα μνήμης ΜΕΜ, τη μονάδα μετρητή προγράμματος PC, καθώς και έναν αριθμό από καταχωρητές ειδικού σκοπού, που χρησιμεύουν για αποθήκευση πληροφορίας που παράγεται και καταναλώνεται μέσα στην ίδια εντολή. Η στοίβα περιέχει ένα χώρο αποθήκευσης λέξεων και ένα δείκτη προς την κορυφή της, και λειτουργεί με βάση τέσσερις μικρολειτουργίες που ενεργοποιούνται με ομώνυμα σήματα ε- λέγχου: την up, η οποία ανεβάζει το δείκτη στοίβας κατά μία θέση, εισάγοντας μια λέξη δεδομένων στη θέση που αυτός έδειχνε προηγουμένως, την dn1, η οποία κατεβάζει το δείκτη στοίβας κατά μία θέση, την dn2, η οποία κατεβάζει το δείκτη στοίβας κατά δύο θέσεις, και την clr, η οποία θέτει το δείκτη στοίβας στην αρχική του τιμή. Όλες οι αλλαγές στην κατάσταση της στοίβας συμβαίνουν με την πτώση του παλμού του ρολογιού. Η στοίβα έχει δύο θύρες ανάγνωσης, έστω Α και Β, και μία θύρα εγγραφής, έστω S. Παρόλο που η εγγραφή στη στοίβα γίνεται μόνο με το σήμα up, η ανάγνωση γίνεται χωρίς σήμα ελέγχου και δεν κατεβάζει το δείκτη στοίβας, ενώ οι δύο τιμές που διαβάζονται και στέλνονται στις θύρες ανάγνωσης προέρχονται από τις δύο θέσεις που βρίσκονται αμέσως κάτω από την κορυφή της στοίβας. Έστω ότι θέλουμε να υποστηρίξουμε τις παρακάτω εντολές στον επεξεργαστή μας, με αντίστοιχες διευθυνσιοδοτήσεις: Διευθυνσιοδότηση Εντολή PUSH POP ADD SUB OR BEQ BNE JMP CLR Άμεση 1 0 1 1 1 0 0 0 0 Κατ ευθείαν 1 1 1 1 1 0 0 1 0 Έμμεση στοίβας 1 1 1 1 1 0 0 1 0 Έμμεση μνήμης 1 1 1 1 1 0 0 1 0

4 Διπλά έμμεση 1 1 1 1 1 0 0 1 0 Υπονοούμενη 0 1 1 1 1 0 0 0 1 Σχετική με PC 0 0 0 0 0 1 1 1 0 όπου 1 σημαίνει υποστήριξη, και 0 σημαίνει μη υποστήριξη του συνδυασμού εντολήςδιευθυνσιοδότησης. Πιο συγκεκριμένα: - Η εντολή PUSH εισάγει μια λέξη δεδομένων στη στοίβα, είτε από τη μνήμη με τρόπο που θα εξηγηθεί στη συνέχεια, είτε από τη λέξη εντολής με άμεση διευθυνσιοδότηση και προέκταση προσήμου. Το δεδομένο αποθηκεύεται στη στοίβα. - Οι εντολές ADD, SUB και OR εκτελούν μια πράξη στην ΑΛΜ, με τον πρώτο τελεστέο από τη θύρα Α της στοίβας, και το δεύτερο τελεστέο είτε ως άμεσο τελούμενο από τη λέξη εντολής με προέκταση προσήμου για τις δύο πρώτες εντολές, είτε ως υπονοούμενο τελούμενο από τη θύρα Β της στοίβας, είτε από τη μνήμη με τρόπο που θα εξηγηθεί στη συνέχεια, το δε αποτέλεσμα αποθηκεύεται στη στοίβα. - Η εντολή POP εξάγει μια λέξη δεδομένων από τη στοίβα. Υπονοούμενη διευθυνσιοδότηση εδώ σημαίνει ότι το δεδομένο απλά αφαιρείται και χάνεται. Σε κάθε άλλη περίπτωση, το δεδομένο στέλνεται στη μνήμη με τρόπο που θα εξηγηθεί στη συνέχεια. Το δεδομένο λαμβάνεται από τη θύρα Α της στοίβας, εκτός από την περίπτωση έμμεσης διευθυνσιοδότησης στοίβας, οπότε λαμβάνεται από τη θύρα Β της στοίβας. - Οι εντολές BEQ και BNE υλοποιούν διακλάδωση στον κώδικα, μετά από σύγκριση των δύο λέξεων δεδομένων που λαμβάνονται από τις θύρες Α και Β της στοίβας, και σε περίπτωση αληθούς συνθήκης, με άλμα σε διεύθυνση σχετική με τον PC. - Η εντολή JMP εκτελεί άλμα στον κώδικα, σε διεύθυνση που είτε δίνεται με τρόπο που θα εξηγηθεί στη συνέχεια, είτε είναι σχετική με τον PC. - Η εντολή CLR θέτει τη στοίβα στην αρχική της κατάσταση, αδειάζοντας το όποιο περιεχόμενό της. Υπονοούμενη διευθυνσιοδότηση εδώ σημαίνει ότι δεν υπάρχει τελούμενο. Σε όλες τις εντολές, ό,τι τελούμενο διαβάζεται από τη στοίβα, αφαιρείται από αυτήν. Κάθε λέξη εντολής περιέχει εκτός από τον κωδικό λειτουργίας και τα πιθανά τελούμενα, 7 ψηφία διευθυνσιοδότησης, έστω Δ 1 έως Δ 7, τα οποία δηλώνουν τη μέθοδο διευθυνσιοδότησης της εντολής, με τη σειρά που αυτές δίνονται στον παραπάνω πίνακα. Ειδικότερα για τη διευθυνσιοδότηση μνήμης έχουμε: - Στην κατ ευθείαν διευθυνσιοδότηση η διεύθυνση μνήμης λαμβάνεται από τη λέξη εντολής, ή συνδυασμό του τελούμενου της λέξης εντολής με τον PC. - Στην έμμεση διευθυνσιοδότηση στοίβας η διεύθυνση μνήμης λαμβάνεται από τη στοίβα. Ειδικότερα, στις εντολές PUSH και POP η διεύθυνση λαμβάνεται από τη θύρα Α της στοίβας, ενώ στις εντολές ADD, SUB και OR η διεύθυνση λαμβάνεται από τη θύρα Β της στοίβας. - Στην έμμεση διευθυνσιοδότηση μνήμης η διεύθυνση μνήμης λαμβάνεται από τη μνήμη, από διεύθυνση που δίνεται κατ ευθείαν από τη λέξη εντολής, ή συνδυασμό του τελούμενου της λέξης εντολής με τον PC. - Η διπλά έμμεση διευθυνσιοδότηση μνήμης είναι έμμεση μέσω μνήμης, στην οποία η διεύθυνση δίνεται με έμμεση διευθυνσιοδότηση μέσω στοίβας. Κάθε εντολή ενεργοποιεί ένα μόνο ψηφίο διευθυνσιοδότησης, το οποίο πρέπει να αντιστοιχεί σε μέθοδο που δέχεται η εντολή. Επίσης, οποτεδήποτε λαμβάνεται διεύθυνση μνήμης κατ ευθείαν από τη λέξη εντολής, αν ο χώρος διευθύνσεων δεν καλύπτεται από το εύρος του κατ ευθείαν τελούμενου, τα πιο σημαντικά ψηφία της διεύθυνσης λαμβάνονται από τον PC. Α. Δώστε το διάγραμμα της ΜΕΔ της αρχιτεκτονικής στοίβας για την υποστήριξη των παραπάνω εντολών. Προσθέστε όσους καταχωρητές ειδικού σκοπού κρίνετε απαραίτητο, ώστε να επιτύχετε το συντομότερο αριθμό κύκλων μηχανής για τις εντολές που υποστηρίζονται, μην επιτρέποντας όμως διαδοχικά εξαρτημένες μικρολειτουργίες να εκτελούνται στον ίδιο κύκλο μηχανής. Ορίστε τα σήματα ελέγχου της ΜΕΔ που σχεδιάσατε, που θα πρέπει να περιλαμβάνουν τα σήματα ελέγχου της στοίβας, όπως αυτά ορίστηκαν παραπάνω. Υποθέστε ότι αν

5 συμβεί υπερχείλιση ή υποχείλιση της στοίβας, σηματοδοτείται κατάλληλη εξαίρεση στον ε- πεξεργαστή. Υπόδειξη: Χρησιμοποιήστε το γεγονός ότι οι αλλαγές κατάστασης της στοίβας συμβαίνουν στην πτώση του ωρολογιακού παλμού. Β. Μελετήστε τη διαδοχή φάσεων των εντολών, για κάθε μέθοδο διευθυνσιοδότησης που υ- ποστηρίζουν, και δώστε το διάγραμμα καταστάσεων της αρχιτεκτονικής για υλοποίηση ελέγχου καλωδιωμένης λογικής. Επαναχρησιμοποιήστε όσες καταστάσεις μπορείτε. Σκεφτείτε αν μπορείτε να αναθέσετε κάποιες μικρολειτουργίες στη φάση αποκωδικοποίησης, και ποιες θα είναι αυτές, ώστε να κερδίσετε έναν κύκλο μηχανής στην εκτέλεση κάποιων από τις εντολές της αρχιτεκτονικής. Γ. Δώστε τις συνθήκες μετάβασης καταστάσεων για το διάγραμμα που σχεδιάσατε, καθώς και τις λογικές εκφράσεις για τα σήματα ελέγχου της αρχιτεκτονικής. Άσκηση 6 Σε πολλές εφαρμογές παράλληλης επεξεργασίας απαιτείται μια κατηγορία λειτουργιών υλοποιημένων σαν ακολουθίες μικρολειτουργιών που εκτελούνται σαν ένα αδιάσπαστο σύνολο (indivisible ή atomic operations). Αυτό σημαίνει ότι κατά την εκτέλεση αυτών των λειτουργιών δεν επιτρέπεται ανάμεσα στις μικρολειτουργίες της ακολουθίας να παρεμβαίνουν ξένες μικρολειτουργίες. Ένας τρόπος υλοποίησης τέτοιων αδιάσπαστων λειτουργιών είναι μέσω εντολών μηχανής της αρχιτεκτονικής, έτσι ώστε μία και μόνη εντολή να εκτελεί πλήρως μια τέτοια ακολουθία. Θεωρήστε τη ΜΕΔ της απλοποιημένης αρχιτεκτονικής MIPS πολλαπλών κύκλων μηχανής ανά κύκλο εντολής, με έλεγχο τόσο καλωδιωμένης όσο και μικροπρογραμματισμένης λογικής, και υλοποιήστε σε αυτή για κάθε περίπτωση ελέγχου την εντολή: cmpm&addiw $rd,($rs),($rt),($ru),immediateword η οποία δεδομένων τριών θέσεων μνήμης και της σταθεράς immediateword, συγκρίνει το περιεχόμενο της πρώτης θέσης μνήμης με τη σταθερά, και σε περίπτωση ισότητας το προσθέτει με το περιεχόμενο της δεύτερης θέσης και αποθηκεύει το αποτέλεσμα της πρόσθεσης στην τρίτη θέση μνήμης, επιστρέφοντας σε κάθε περίπτωση το λογικό αποτέλεσμα της σύγκρισης. Η σταθερά, μεγέθους λέξης, δε χωράει μέσα στην εντολή, αλλά τοποθετείται στη θέση μνήμης που ακολουθεί την εντολή. Η λειτουργία της εντολής cmpm&addiw περιγράφεται αναλυτικά από τα ακόλουθα βήματα: 1. Διαβάζει τη θέση μνήμης στην οποία αναφέρεται με έμμεση διευθυνσιοδότηση χωρίς μετατόπιση μέσω του καταχωρητή $rs. 2. Διαβάζει τη σταθερά immediateword από τη θέση μνήμης που ακολουθεί την εντολή. 3. Συγκρίνει την πρώτη τιμή που διάβασε από τη μνήμη με τη σταθερά. 4. Αν οι δύο τιμές είναι ίσες: Διαβάζει τη θέση μνήμης στην οποία αναφέρεται με έμμεση διευθυνσιοδότηση χωρίς μετατόπιση μέσω του καταχωρητή $rt. Προσθέτει τις δύο τιμές που διάβασε από τη μνήμη. Αποθηκεύει το αποτέλεσμα στη θέση μνήμης στην οποία αναφέρεται με έμμεση διευθυνσιοδότηση χωρίς μετατόπιση μέσω του καταχωρητή $ru. 5. Αποθηκεύει στον $rd το λογικό αποτέλεσμα της σύγκρισης. Για την υλοποίηση της εντολής cmpm&addiw τροποποιήστε κατάλληλα τους δρόμους πληροφορίας και τις επιλογές εισόδων υπομονάδων της ΜΕΔ, διευρύνοντας ή προσθέτοντας πολυπλέκτες όπου χρειαστεί. Όμως, δε μπορείτε να προσθέσετε υπομονάδες ή καταχωρητές ειδικού σκοπού, μπορείτε όμως να προσθέσετε επίτρεψη εγγραφής σε υπάρχοντες καταχωρητές. Επίσης, δε μπορείτε να αυξήσετε τις θύρες ανάγνωσης του ΦΚ. Γι αυτό διατίθενται δύο μικρολειτουργίες ανάγνωσής του, η πρώτη διαβάζει τους $rs και $rt, και η δεύτερη διαβάζει τους $rs και $ru, επιλέγοντας τα κατάλληλα πεδία ψηφίων από τη λέξη εντολής. Η επιλογή

6 ανάγνωσης του ΦΚ γίνεται με το σήμα read, το οποίο όταν ενεργοποιείται επιλέγει τη δεύτερη ανάγνωση, διαφορετικά επιλέγεται η πρώτη. Υποθέστε ότι η σύγκριση μεταξύ δύο τιμών για ισότητα γίνεται στην ΑΛΜ με τη μικρολειτουργία cmp. Το λογικό αποτέλεσμα της σύγκρισης αποθηκεύεται στον C και αντικατοπτρίζεται και στο ψηφίο Ζero της ΑΛΜ που γίνεται διαθέσιμο με το τέλος της αντίστοιχης μικρολειτουργίας. Για την υλοποίηση με έλεγχο καλωδιωμένης λογικής να δώσετε τις διαδοχικές καταστάσεις που ενεργοποιούν τα σήματα ελέγχου για την εντολή cmpm&addiw, καθώς και τις συνθήκες μετάβασης για όλες τις μεταβάσεις μεταξύ των καταστάσεων. Οι λογικές εκφράσεις των συνθηκών μετάβασης μπορούν να περιέχουν και το ψηφίο Ζero. Για την υλοποίηση με έλεγχο μικροπρογραμματισμένης λογικής, δώστε το αντίστοιχο μικροπρόγραμμα. Κατ αντιστοιχία με την καλωδιωμένη λογική, οι μικροεντολές μπορούν να περιέχουν άλμα με συνθήκη με βάση το ψηφίο Ζero της ΑΛΜ. Αν χρειαστεί, προσθέστε και νέα πεδία μικροεντολής, και ορίστε κατάλληλες μικρολειτουργίες γι αυτά. Να ελαχιστοποιήστε το χρόνο κύκλου εντολής και για τις δύο υλοποιήσεις της εντολής, χωρίς ωστόσο να αυξήσετε το χρόνο κύκλου μηχανής. Άσκηση 7 Έστω η υποθετική εντολή MIPS wcmp, η οποία συγκρίνει λέξεις μεταξύ δύο περιοχών μνήμης, μέχρι να βρει ένα μέγιστο επιτρεπόμενο πλήθος διαφορών, ή μέχρι ένα μέγιστο πλήθος λέξεων, και η οποία έχει τη μορφή: wcmp $rd,$rt,$rs,$ru όπου οι καταχωρητές $rs και $rt περιέχουν τις αρχικές διευθύνσεις των περιοχών μνήμης που συγκρίνονται, ο $ru περιέχει τη σταθερά που αποτελεί το μέγιστο επιτρεπόμενο αριθμό διαφορετικών λέξεων, και ο $rd περιέχει το μέγιστο αριθμό των λέξεων που συγκρίνονται. Με την ολοκλήρωση της εντολής, ο $rd περιέχει τον αριθμό των διαφορετικών λέξεων που βρέθηκαν. Α. Γράψτε το πρόγραμμα συμβολικής γλώσσας MIPS για την υλοποίηση (εξομοίωση της συμπεριφοράς) της παραπάνω υποθετικής εντολής wcmp. Ποιος είναι ο μέγιστος αριθμός εντολών που θα εκτελεστούν για τη σύγκριση δύο περιοχών μνήμης Ν λέξεων; Για έλεγχο καλωδιωμένης λογικής πολλαπλών κύκλων μηχανής, ποιος είναι ο αριθμός κύκλων που αντιστοιχεί στο μέγιστο αριθμό εντολών; Β. Μελετήστε την υλοποίηση της πιο πάνω εντολής σε μικροπρογραμματισμένη ΜΕΔ MIPS, τροποποιώντας τη ΜΕΔ, ώστε να υποστηρίζει τη ροή πληροφορίας που χρειάζεστε, χωρίς να προσθέσετε νέες υπομονάδες. Μπορείτε όμως να προσθέσετε καταχωρητές ειδικού σκοπού, να προσθέσετε επίτρεψη εγγραφής σε υπάρχοντες καταχωρητές, καθώς και να διευρύνετε ή να προσθέσετε πολυπλέκτες. Υποθέστε ότι δε μπορείτε να αυξήσετε τις θύρες ανάγνωσης και εγγραφής του ΦΚ, όμως διατίθενται δύο μικρολειτουργίες ανάγνωσής του, η πρώτη διαβάζει τους $rs και $rt, και η δεύτερη διαβάζει τους $rd και $ru, επιλέγοντας τα κατάλληλα πεδία ψηφίων από τη λέξη εντολής. Η επιλογή ανάγνωσης του ΦΚ γίνεται με το σήμα read, το οποίο όταν ενεργοποιείται επιλέγει τη δεύτερη ανάγνωση, διαφορετικά επιλέγεται η πρώτη. Εγγραφές σε πολλαπλούς καταχωρητές πρέπει να γίνονται σε διαφορετικούς κύκλους μηχανής, υποθέτοντας ότι μπορείτε να λάβετε καταχωρητή εγγραφής από όλα τα πεδία της λέξης εντολής, με κατάλληλο σήμα επιλογής. Στον ίδιο κύκλο μηχανής μπορεί να ενεργοποιείται μία μικρολειτουργία ανάγνωσης και μία μικρολειτουργία εγγραφής του ΦΚ, με την εγγραφή να γίνεται στο πρώτο και την ανάγνωση στο δεύτερο μισό του κύκλου. Υποθέστε ότι η σύγκριση μεταξύ δύο τιμών για ισότητα γίνεται στην ΑΛΜ με τη λογική μικρολειτουργία equ. Γενικά προσπαθήστε για την ελάχιστη δυνατή τροποποίηση της ΜΕΔ. Γ. Με βάση το πρόγραμμα του ερωτήματος Α και τις τροποποιήσεις της ΜΕΔ που προτείνατε στο ερώτημα Β, γράψτε ένα μικροπρόγραμμα για την υλοποίηση της εντολής wcmp. Αν χρειαστεί, προσθέστε νέα πεδία μικροεντολής, και ορίστε το συμβολισμό των αντίστοιχων

7 μικρολειτουργιών. Το πεδίο άλματος της μικροεντολής μπορεί να περιέχει άλμα με συνθήκη με βάση το ψηφίο Ζero της ΑΛΜ, και με πεδίο προορισμού τη διεύθυνση προορισμού σε περίπτωση αληθούς συνθήκης. Προσπαθήστε να γράψετε όσο πιο σύντομο μικροκώδικα μπορείτε. Μετρήστε το μέγιστο αριθμό κύκλων που απαιτούνται για τη σύγκριση δύο περιοχών μνήμης Ν λέξεων, και σχολιάστε το αποτέλεσμα σε σχέση με αυτό του ερωτήματος Α. Υπόδειξη: Θεωρήστε ότι οι καταχωρητές $rs, $rt, $ru και $rd δεν είναι απαραίτητο να διατηρήσουν τις αρχικές τιμές τους. Άσκηση 8 Μια αρχιτεκτονική RISC έχει το χαρακτηριστικό ότι διαθέτει περιορισμένες μεθόδους διευθυνσιοδότησης της μνήμης που εφαρμόζονται μόνο σε εντολές φόρτωσης-αποθήκευσης, ό- πως συμβαίνει για παράδειγμα στην αρχιτεκτονική MIPS. Το χαρακτηριστικό αυτό οδηγεί σε απλούστερο έλεγχο της ΚΜΕ, μια που δεν απαιτείται αποκωδικοποίηση διευθυνσιοδότησης, και επομένως σε πιο σύντομο κύκλο μηχανής. Έστω όμως ότι επιθυμούμε να ενισχύσουμε το σύνολο εντολών και να υποστηρίξουμε προσπέλαση στη μνήμη σε αριθμητικές/λογικές εντολές της αρχιτεκτονικής MIPS πολλαπλών κύκλων μηχανής ανά κύκλο εντολής, με τους ακόλουθους τρόπους: ALUm $rt,off($rs) ALUm $rd,$rt,($rs) ALUm ($rd),$rs,$rt όπου ως ALU υπονοούνται όλες οι διαφορετικές αριθμητικές/λογικές εντολές. Με τον πρώτο τρόπο διευθυνσιοδότησης, κάποιο δεδομένο διαβάζεται από τη διεύθυνση [$rs + off] της μνήμης και προστίθεται στον καταχωρητή $rt. Με τον δεύτερο τρόπο διευθυνσιοδότησης, κάποιο δεδομένο διαβάζεται από τη διεύθυνση [$rs] της μνήμης, προστίθεται με τον $rt και το αποτέλεσμα αποθηκεύεται στον καταχωρητή $rd. Τέλος, με τον τρίτο τρόπο διευθυνσιοδότησης, προστίθενται οι $rs και $rt και το αποτέλεσμα αποθηκεύεται στη διεύθυνση [$rd] της μνήμης. Ένα πλεονέκτημα που έχουμε από μια τέτοια εντολή είναι η αποφυγή μιας εντολής προσπέλασης μνήμης, καθώς αυτή συμπτύσσεται με την αριθμητική/λογική εντολή. Το βασικό μειονέκτημα από την άλλη μεριά είναι η αναγκαία επιμήκυνση του κύκλου μηχανής λόγω της πιο πολύπλοκης αποκωδικοποίησης, με αποτέλεσμα την αύξηση του μέσου χρόνου εκτέλεσης των παλαιών εντολών. Α. Να κάνετε τις ελάχιστες απαιτούμενες υποθέσεις τροποποίησης της ΜΕΔ MIPS πολλαπλών κύκλων μηχανής ανά κύκλο εντολής για την υποστήριξη των παραπάνω τύπων αριθμητικών/λογικών εντολών, και να βρείτε τον αριθμό κύκλων μηχανής ανά κύκλο εντολής για κάθε τύπο. Β. Έστω ότι διαθέτουμε τέσσερα προγράμματα, το gcc, το vortex, το perl και το spice, στα οποία οι διάφοροι τύποι παλαιών εντολών MIPS εμφανίζονται με τη συχνότητα που δίνει ο πιο κάτω πίνακας: Συχνότητα Τύπος εντολής gcc vortex perl spice Αριθμητική/Λογική 48% 42% 47% 54% Προσπέλαση Μνήμης 33% 46% 37% 39% Άλμα με συνθήκη 17% 11% 14% 6% Άλμα χωρίς συνθήκη 2% 1% 2% 1% Υποθέστε ότι από τις εντολές προσπέλασης μνήμης τα 2/3 είναι εντολές ανάγνωσης (φόρτωσης από τη μνήμη). Επίσης, το 1/2 των εντολών προσπέλασης μνήμης έχει μηδενική μετατόπιση. Από τις αριθμητικές/λογικές εντολές, στα 4/5 το ένα τελούμενο εισόδου αποτελεί μοναδική χρήση αποτελέσματος κάποιας προηγούμενης εντολής φόρτωσης, και το 1/4 αυτών έχει

8 κοινό καταχωρητή αποτελέσματος με το ένα τελούμενο εισόδου. Τέλος, από το υπόλοιπο 1/5 των αριθμητικών/λογικών εντολών, τα 2/3 στέλνουν το αποτέλεσμά τους στη μνήμη σε κάποια επόμενη εντολή αποθήκευσης, χωρίς να το χρησιμοποιούν με άλλον τρόπο. Αν οι νέοι τύποι εντολών οδηγούν σε επιμήκυνση του κύκλου μηχανής κατά 5%, βρείτε τι ποσοστό από τις εντολές προσπέλασης μνήμης πρέπει να καταργηθεί σε κάθε πρόγραμμα με χρήση των νέων τύπων αριθμητικών/λογικών εντολών, ώστε η επίδοση του συστήματος δηλαδή ο χρόνος εκτέλεσης του προγράμματος να μην είναι χειρότερη από προηγουμένως. Θεωρήστε ποσοστά x, y και z για κάθε νέο τύπο αριθμητικής/λογικής εντολής, και εκφράστε το ζητούμενο σε μορφή ανισότητας, εξετάζοντας όμως το δυνατό ικανοποίησης της ανισότητας με βάση τα στοιχεία που δίνονται. Προσοχή: Οι θεωρητικές ασκήσεις παραδίνονται μόνο χειρόγραφες, κάθε άσκηση σε ξεχωριστές σελίδες. Η παράδοση συνοδεύεται από υποχρεωτική σύντομη εξέταση.

9 Τρίτη Σειρά Ασκήσεων (Εργαστηριακές Ασκήσεις) παράδοση στο τέλος του εξαμήνου Άσκηση 1 Θεωρήστε την αναπαράσταση ΙΕΕΕ 754 των 32 bits για αριθμούς κινητής υποδιαστολής α- πλής ακρίβειας, σε μια αρχιτεκτονική MIPS που δε διαθέτει υλικό κινητής υποδιαστολής. Τα ερωτήματα που ακολουθούν σας ζητούν να γράψετε κώδικα συμβολικής γλώσσας για την αρχιτεκτονική αυτή, στον οποίο όλες οι λειτουργίες κινητής υποδιαστολής θα πρέπει να υλοποιηθούν με εντολές ακεραίων. Ο κώδικας θα πρέπει να γραφτεί για τον προσομοιωτή SPIM ή τον προσομοιωτή MARS. Για απλούστευση, εξαιρέστε μη κανονικοποιημένους αριθμούς από το πρότυπο της IEEE. Α. Να γράψετε ένα υποπρόγραμμα fread, το οποίο να διαβάζει έναν αριθμό κινητής υποδιαστολής απλής ακρίβειας, που δίνεται στο δεκαδικό σύστημα σε μορφή συμβολοσειράς, και να τον μετατρέπει στο παραπάνω πρότυπο. Αποδεκτές συμβολοσειρές είναι όσες αποτελούνται από σύμβολα ψηφίων ( 0-9 ) και περιέχουν υποχρεωτικά υποδιαστολή, με τουλάχιστον ένα ψηφίο πριν και μετά την υποδιαστολή, ή περιέχουν τουλάχιστον ένα ψηφίο και εκθέτη που δίνεται με το χαρακτήρα E ή e ακολουθούμενο από προαιρετικό πρόσημο και τουλάχιστον ένα ψηφίο, ή περιέχουν και υποδιαστολή και εκθέτη. Προαιρετικός χαρακτήρας προσήμου προηγείται του ακέραιου μέρους του αριθμού. Οι συμβολοσειρές έχουν μέγιστο μήκος 40 χαρακτήρων και τερματίζονται με το χαρακτήρα αλλαγής γραμμής \n. Το υποπρόγραμμα θα πρέπει να ελέγχει τη συμβολοσειρά αφού τη διαβάσει, και αν αυτή δεν είναι αποδεκτή, ή αν ο αριθμός βρίσκεται εκτός εύρους αναπαράστασης, θα πρέπει να επιστρέφεται η ειδική τιμή NaN. Κατά τη μετατροπή, ο αριθμός στρογγυλοποιείται προς τον πλησιέστερο άρτιο. Το αποτέλεσμα της μετατροπής επιστρέφεται στον καταχωρητή $v0. Β. Να γράψετε ένα υποπρόγραμμα fwrite, το οποίο να εκτυπώνει έναν αριθμό κινητής υποδιαστολής απλής ακρίβειας σε δεκαδικό σύστημα, όταν ο αριθμός δίνεται στο παραπάνω πρότυπο. Ο αριθμός δίνεται στον καταχωρητή $a0 και για τιμή εντός εύρους αναπαράστασης θα πρέπει να εκτυπώνεται ως συμβολοσειρά με πρόσημο, ένα ακέραιο ψηφίο, υποδιαστολή,, τουλάχιστον ένα κλασματικό ψηφίο και εκθέτη αποτελούμενο από το χαρακτήρα Ε, πρόσημο και τουλάχιστον ένα ψηφίο. Αν το πρόσημο είναι +, πρέπει να παραλείπεται. Αν το κλασματικό μέρος είναι 0, η υποδιαστολή και τα κλασματικά ψηφία πρέπει να παραλείπονται. Παρόμοια, αν ο εκθέτης είναι 0, πρέπει να παραλείπεται. Κατά τη μετατροπή στο δεκαδικό σύστημα θα πρέπει να διατηρούνται όλα τα κλασματικά ψηφία του αριθμού. Για τις ειδικές τιμές NaN, + και εκτυπώνεται αντί αριθμού κατάλληλο μήνυμα. Η εκτύπωση τερματίζεται με το χαρακτήρα \n. Γ. Να γράψετε ένα υποπρόγραμμα vfread, το οποίο να διαβάζει ένα διάνυσμα n αριθμών κινητής υποδιαστολής απλής ακρίβειας, καλώντας n φορές το υποπρόγραμμα fread. Το υποπρόγραμμα διαβάζει πρώτα τον ακέραιο αριθμό n και μετά το διάνυσμα των n αριθμών κινητής υποδιαστολής. Το διάνυσμα κινητής υποδιαστολής αποθηκεύεται σε διαδοχικές θέσεις σε κάποιο χώρο μνήμης, με αρχική διεύθυνση και μέγεθος (σε bytes) που παρέχονται στο υποπρόγραμμα ως παράμετροι μέσω των καταχωρητών $a0 και $a1, αντίστοιχα. Για κάθε αριθμό τιμής NaN που επιστρέφει το υποπρόγραμμα fread, ο αριθμός n μειώνεται κατά 1, και το vfread προχωράει στον επόμενο αριθμό, χωρίς να κάνει αποθήκευση της τιμής. Το υποπρόγραμμα vfread πρέπει να είναι φιλικό προς το χρήστη, δηλαδή να τον κατευθύνει με κατάλληλα μηνύματα, καθώς και να εκτυπώνει κάθε αριθμό που διάβασε, καλώντας το υποπρόγραμμα fwrite. Η τελική τιμή του n επιστρέφεται στον καταχωρητή $v0. Δ. Να γράψετε ένα υποπρόγραμμα vfwrite, το οποίο να εκτυπώνει ένα διάνυσμα n αριθμών κινητής υποδιαστολής απλής ακρίβειας, καλώντας n φορές το υποπρόγραμμα fwrite. Ο ακέραιος αριθμός n παρέχεται στο υποπρόγραμμα ως παράμετρος μέσω του καταχωρητή $a0. Το διάνυσμα κινητής υποδιαστολής βρίσκεται αποθηκευμένο σε διαδοχικές θέσεις σε κάποιο χώρο μνήμης, με αρχική διεύθυνση που παρέχεται στο υποπρόγραμμα ως παράμετρος μέσω του καταχωρητή $a1.

10 Ε. Να γράψετε ένα υποπρόγραμμα vfsort, το οποίο να ταξινομεί τα στοιχεία ενός διανύσματος n αριθμών κινητής υποδιαστολής απλής ακρίβειας που βρίσκονται στο παραπάνω πρότυπο σε φθίνουσα σειρά απόλυτου μεγέθους. Ο ακέραιος αριθμός n παρέχεται στο υποπρόγραμμα ως παράμετρος μέσω του καταχωρητή $a0. Το διάνυσμα κινητής υποδιαστολής βρίσκεται αποθηκευμένο σε διαδοχικές θέσεις σε κάποιο χώρο μνήμης, με αρχική διεύθυνση που παρέχεται στο υποπρόγραμμα ως παράμετρος μέσω του καταχωρητή $a1. Το υποπρόγραμμα vfsort αποθηκεύει το ταξινομημένο διάνυσμα στον ίδιο χώρο μνήμης στον οποίο βρισκόταν το αρχικό διάνυσμα, και μετά καλεί το υποπρόγραμμα vfwrite για να το εκτυπώσει. ΣΤ. Να γράψετε ένα υποπρόγραμμα vfsadd, το οποίο να προσθέτει μεταξύ τους τα στοιχεία ενός διανύσματος n αριθμών κινητής υποδιαστολής απλής ακρίβειας που βρίσκονται στο παραπάνω πρότυπο, και είναι ταξινομημένοι σε φθίνουσα σειρά απόλυτου μεγέθους. Ο ακέραιος αριθμός n παρέχεται στο υποπρόγραμμα ως παράμετρος μέσω του καταχωρητή $a0. Το διάνυσμα κινητής υποδιαστολής βρίσκεται αποθηκευμένο σε διαδοχικές θέσεις σε κάποιο χώρο μνήμης, με αρχική διεύθυνση που παρέχεται στο υποπρόγραμμα ως παράμετρος μέσω του καταχωρητή $a1. Η vfsadd θα πρέπει να εκμεταλλεύεται το γεγονός ότι οι n αριθμοί είναι ταξινομημένοι, ελαχιστοποιώντας τους υπολογισμούς που πρέπει να κάνει για την πρόσθεση. Το αποτέλεσμα της πρόσθεσης επιστρέφεται στον καταχωρητή $v0. Αν η πρόσθεση οδηγήσει σε υπερχείλιση, τότε η vfsadd επιστρέφει τιμή + ή, ενώ αν οδηγήσει σε υποχείλιση (ανεπάρκεια), τότε η vfsadd απλά επιστρέφει 0. Ζ. Να γράψετε ένα πρόγραμμα, το οποίο να καλεί το υποπρόγραμμα vfread για να διαβάσει ένα διάνυσμα n αριθμών κινητής υποδιαστολής απλής ακρίβειας που βρίσκονται στο παραπάνω πρότυπο, στη συνέχεια να καλεί το υποπρόγραμμα vfsort για να ταξινομήσει τα στοιχεία του σε φθίνουσα σειρά απόλυτου μεγέθους, να καλεί το υποπρόγραμμα vfsadd για να υπολογίσει το άθροισμα των στοιχείων του, και τέλος να καλεί την fwrite για να εκτυπώσει το τελι-κό αποτέλεσμα. Στο τμήμα δεδομένων του προσομοιωτή, το πρόγραμμα πρέπει να δηλώνει με την οδηγία space το χώρο μνήμης στον οποίο τοποθετείται το διάνυσμα, και μπορεί να δηλώνει και οποιουσδήποτε βοηθητικούς χώρους θέλετε. Άσκηση 2 Γράψτε σε συμβολική γλώσσα MIPS ένα πρόγραμμα προσομοίωσης για ένα υποσύνολο του συνόλου εντολών MIPS. Ειδικότερα, υλοποιήστε μια εικονική μηχανή MIPS με φάκελο καταχωρητών και μνήμη, η οποία να μπορεί να εκτελεί προγράμματα MIPS, τοποθετημένα στη μνήμη, από όπου θα τα ανακαλεί, θα τα αποκωδικοποιεί και θα τα εκτελεί, εντολή προς εντολή. Η υλοποίησή σας μπορεί να χρησιμοποιήσει οποιαδήποτε από τις εντολές MIPS, αλλά ο προσομοιωτής θα πρέπει να υποστηρίζει ένα υποσύνολο του συνόλου εντολών. Πιο συγκεκριμένα, θα πρέπει να υποστηρίζει τις εντολές: add, addu, sub, subu, slt, sltu, or, and, xor, addi, addiu, slti, sltiu, ori, andi, xori, lui, lw, sw, beq, bne, j, jr, jal, jalr, sll, srl, sra, sllv, srlv, srav Για την επαλήθευση του προσομοιωτή να χρησιμοποιήσετε ένα από τα δύο διαθέσιμα προγράμματα προσομοίωσης συμβολικής γλώσσας MIPS, το SPIM ή το MARS. Προσαρμόστε τον προσομοιωτή σας για το πρόγραμμα που προτιμάτε. Υλοποιήστε το φάκελο καταχωρητών και τη μνήμη της εικονικής μηχανής στο χώρο δεδομένων (data) του προγράμματος. Τοποθετήστε στη μνήμη της εικονικής μηχανής τουλάχιστον τρία προγράμματα MIPS. Τα προγράμματα θα πρέπει να είναι συμβολομεταφρασμένα με το χέρι και τοποθετημένα στη μνήμη σε μορφή γλώσσας μηχανής. Τα δεδομένα εισόδου των προγραμμάτων θα τοποθετηθούν επίσης στη μνήμη της μηχανής, μαζί με δήλωση χώρου (space) για πιθανά δεδομένα εξόδου. Άσκηση 3

11 Θέλουμε να υλοποιήσουμε μια γρήγορη μονάδα πολλαπλασιασμού προσημασμένων αριθμών σταθερής υποδιαστολής. Ανάμεσα στις διάφορες τεχνικές που υπάρχουν θα θεωρήσουμε τις ακόλουθες: 1. Τεχνική μείωσης αριθμού μερικών αθροισμάτων με έλεγχο 3 bit του πολλαπλασιαστή για κάθε άθροισμα, χρησιμοποιώντας το βελτιωμένο αλγόριθμο Booth. 2. Τεχνική διατήρησης κρατουμένου για την πρόσθεση των μερικών γινομένων, με ελαχιστοποίηση του αριθμού των επιπέδων διατήρησης. 3. Τεχνική μερικής επικάλυψης, με ανεξαρτητοποίηση της διάταξης διατήρησης κρατουμένου από τον τελικό αθροιστή, έτσι ώστε να μπορούμε να ξεκινήσουμε ένα νέο πολλαπλασιασμό στη διάταξη διατήρησης κρατουμένου, μόλις μπούμε στον τελικό αθροιστή. 4. Τεχνική πρόσθεσης με πρόβλεψη κρατουμένου για τον τελικό αθροιστή. Η τεχνική αυτή υλοποιείται ιεραρχικά για μεγάλο αριθμό bit. Όμως, ανάλογα με το περιθώριο που έχουμε στο χρόνο καθυστέρησης για τον υπολογισμό του αθροίσματος, μπορούμε από ένα επίπεδο ιεραρχίας πρόβλεψης και πάνω να χρησιμοποιήσουμε αθροιστή διάδοσης κρατουμένου για απλούστευση της υλοποίησης. Αντί δηλαδή να χρησιμοποιήσουμε νέα διάταξη πρόβλεψης κρατουμένου για να συνδυάσουμε τα επιμέρους κρατούμενα σε ανώτερο επίπεδο πρόβλεψης, συνδέουμε τους αθροιστές σε απλή διάταξη διάδοσης κρατουμένου. Υποθέστε ότι θέλουμε μια μονάδα πολλαπλασιασμού 64 64 bit, η οποία να υπολογίζει γινόμενο των 128 bit, χρησιμοποιώντας τις πιο πάνω τεχνικές. Υλοποιήστε τη μονάδα αυτή με τη βοήθεια μιας γλώσσας περιγραφής υλικού (VHDL ή Verilog), και του προγράμματος ModelSim. Προσέξτε ότι εφόσον η μονάδα είναι μη επαναληπτική, ο έλεγχος όλων των τριάδων ψηφίων γίνεται παράλληλα, και τα σήματα που παράγονται από τον έλεγχο οδηγούν τους αθροιστές διατήρησης κρατουμένου, καθορίζοντας δηλαδή αν σε κάθε επίπεδο θα γίνεται πρόσθεση ή αφαίρεση του πολλαπλασιαστέου ή του διπλάσιού του, ή αν δε θα γίνεται καμία πράξη. Η τελευταία επιλογή μπορεί να υλοποιηθεί απλά μηδενίζοντας την αντίστοιχη είσοδο του αθροιστή. Μπορείτε να προχωρήσετε με βάση τα ακόλουθα βήματα: 1. Υπολογίστε πόσα τουλάχιστον επίπεδα πρόβλεψης χρειαζόμαστε στην υλοποίηση του τελικού αθροιστή, ώστε η καθυστέρηση αυτού του αθροιστή να είναι το πολύ ίση με την καθυστέρηση των επιπέδων διατήρησης κρατουμένου. Θεωρήστε ότι κάθε κύκλωμα πλήρους αθροιστή χαρακτηρίζεται από καθυστέρηση 3 πυλών, και ότι κάθε επίπεδο πρόβλεψης κρατουμένου συνδυάζει 4 κρατούμενα του αμέσως προηγούμενου επιπέδου για να υπολογίσει 1 σούπερ-κρατούμενο. 2. Υπολογίστε το πλήθος των εισόδων της υπομονάδας διατήρησης κρατουμένου, λαμβάνοντας υπόψη τόσο τις επιλογές του αλγόριθμου Booth, όσο και τη λέξη συμπληρωμάτων που απαιτείται για την υλοποίηση αφαίρεσης. 3. Σχεδιάστε στο χαρτί το συνολικό διάγραμμα της μονάδας. Προσέξτε την ελαχιστοποίηση των επιπέδων διατήρησης κρατουμένου, καθώς και τον αριθμό επιπέδων πρόβλεψης κρατουμένου που προκύπτει, σύμφωνα με τους υπολογισμούς καθυστέρησης που κάνατε. 4. Γράψτε το πρόγραμμα που αντιστοιχεί σε έναν επιμέρους αθροιστή διατήρησης κρατουμένου μεταβλητού εύρους, χρησιμοποιώντας στιγμιότυπα κυκλωμάτων πλήρων αθροιστών του 1 bit. 5. Ορίστε τα ενδιάμεσα σήματα που χρειάζονται για να συνδέσετε μεταξύ τους τους επιμέρους αθροιστές διατήρησης κρατουμένου και δημιουργήστε όλη τη μονάδα διατήρησης κρατουμένου με στιγμιότυπα επιμέρους αθροιστών, με τις κατάλληλες συνδέσεις κατά την αντιστοίχηση των παραμέτρων. Προσέξτε ιδιαίτερα τα περισσότερο σημαντικά ψηφία του κάθε επιπέδου, επειδή οι αριθμοί είναι προσημασμένοι. 6. Υλοποιήστε μέσω κατάλληλης διαδικασίας το κύκλωμα που παράγει τις εισόδους των επιμέρους υπομονάδων διατήρησης κρατουμένου, με βάση το βελτιωμένο αλγόριθμο Booth, συναρτήσει του πολλαπλασιαστέου και του πολλαπλασιαστή. Μην ξεχάσετε την παραγωγή της λέξης συμπληρωμάτων! 7. Υλοποιήστε τον αθροιστή πρόβλεψης κρατουμένου για την πρόσθεση του τελευταίου επιπέδου, προσθέτοντας έναν καταχωρητή στην είσοδό του για το μηχανισμό επικάλυψης, και συνδέοντάς τον με την υπόλοιπη μονάδα.

12 8. Ελέγξτε την ορθότητα του κυκλώματός σας με χρήση κατάλληλων διανυσμάτων δοκιμής, τα οποία να δοκιμάζουν τόσο μεμονωμένες, όσο και διαδοχικές επικαλυπτόμενες πράξεις. Προσοχή: Οι εργαστηριακές ασκήσεις παραδίνονται μόνο ηλεκτρονικά. Η παράδοση συνοδεύεται από υποχρεωτική σύντομη επίδειξη.