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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

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

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

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

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

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

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

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

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

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

Τρόποι Διευθυνσιοδότησης

Παραδείγματα Assembly (Μέρος

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

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

Πολλαπλασιασμός και Διαίρεση Ακεραίων

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

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

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

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

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

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

με έμφαση στο MIPS R2000

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

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

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

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

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

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

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

ΠΛΕ- 027 Μικροεπεξεργαστές

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

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

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

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

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

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

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

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

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

Προτεινόμενες Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213 & Αποτελέσματα

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

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

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 5: Εντολές Συγκρίσεων και Μεταφοράς Ελέγχου. Μανόλης Γ.Η.

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

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

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

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

Κεφάλαιο 3. Αριθμητική για υπολογιστές

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

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

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

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

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

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

Δρ. Παναγιώτης Μ. Παπάζογλου Επίκουρος Καθηγητής ΤΕΙ Λαμίας. Διδακτικό βοήθημα γρήγορης μελέτης για τον προγραμματισμό του μικροεπεξεργαστή MIPS 32bit

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

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

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

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

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

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

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

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

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

Στοιχεία από Assembly Γιώργος Μανής

-Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

Οργάνωση Η/Υ. Ο Επεξεργαστής TRN. Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

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

Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1.

-Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

ΠΛΗΡΟΦΟΡΙΚΗ I Ενότητα 6

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

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

Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής. Αρχιτεκτονική Υπολογιστών. 3ο Μάθημα

ΑΡΙΘΜΗΤΙΚΗ ΓΙΑ ΥΠΟΛΟΓΙΣΤΕΣ

Transcript:

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών ΠΜΣ Εφαρμοσμένη Πληροφορική Οργάνωση και Σχεδίαση Η/Υ Πρώτη Σειρά Ασκήσεων 7 Απριλίου 2017 ενδεικτική παράδοση: 5 Μαΐου Για τις ασκήσεις 1-4 χρησιμοποιήστε μόνο τις εντολές της αρχιτεκτονικής MIPS που δίνονται στον Πίνακα 1. Άσκηση 1: Γράψτε έναν κώδικα συμβολικής γλώσσας MIPS, ο οποίος να προσθέτει ή αφαιρεί δύο προσημασμένους ακέραιους σε αναπαράσταση πρόσημο/μέτρο. Οι ακέραιοι βρίσκονται στους καταχωρητές γενικού σκοπού $a1 και $a2, ενώ η πράξη καθορίζεται από τον καταχωρητή $a0, με 0 για πρόσθεση και με 1 για αφαίρεση. Το αποτέλεσμα να τοποθετείται στον καταχωρητή $v0, επίσης σε αναπαράσταση πρόσημο/μέτρο. Υπόδειξη: Οι αριθμητικές πράξεις στο σύνολο εντολών MIPS γίνονται σε αναπαράσταση συμπληρώματος ως προς 2. Άσκηση 2: Θεωρήστε τον ακόλουθο κώδικα C: for (a[0] = 0, i = 1; i < 1000; i++) { if (c[i]!= 0) a[i] = a[i-1] + b[i]/c[i]; else a[i] = 0; } όπου a, b και c είναι διανύσματα ακεραίων των 32 bit, και i είναι βαθμωτή ακέραια μεταβλητή, επίσης των 32 bit. Ο κώδικας αυτός μεταφράζεται για εκτέλεση σε αρχιτεκτονική MIPS. Αν τα διανύσματα a, b και c τοποθετούνται στη μνήμη με αρχικές διευθύνσεις που περιέχονται στους καταχωρητές $a0, $a1 και $a2 αντίστοιχα, ενώ η μεταβλητή i αποθηκεύεται στον καταχωρητή $t5: Α. Γράψτε τον αντίστοιχο κώδικα σε συμβολική γλώσσα MIPS. Ποιος είναι ο ελάχιστος και ποιος είναι ο μέγιστος αριθμός εντολών MIPS που εκτελούνται από αυτόν τον κώδικα; Ποιος είναι ο μέσος αριθμός εντολών που εκτελούνται από τον κώδικα, εάν ο πίνακας c έχει μηδενικές τιμές κατανεμημένες ομοιόμορφα με πιθανότητα 2%; Πόσες αντίστοιχα προσπελάσεις στη μνήμη γίνονται από αυτόν τον κώδικα; Β. Υποθέστε ότι ο κώδικάς σας εκτελείται σε μια μηχανή 1,66GHz. Αν οι εντολές προσπέλασης μνήμης και διακλάδωσης απαιτούν 2, οι εντολές διαίρεσης απαιτούν 32 και οι υπόλοιπες 1 κύκλο μηχανής, ποιος είναι ο ελάχιστος και ποιος είναι ο μέγιστος χρόνος που απαιτείται για την εκτέλεση του κώδικα; Ποιος είναι ο μέσος χρόνος που απαιτείται, για την ίδια με την παραπάνω περίπτωση μηδενικών τιμών του πίνακα c; Γ (προαιρετικά). Σε μια πιο ρεαλιστική αξιολόγηση του χρόνου εκτέλεσης, οι 32 κύκλοι της διαίρεσης αφορούν την απόσταση από την εντολή διαίρεσης μέχρι την πρώτη εντολή που διαβάζει τον lo (mflo) ή τον hi (mfhi), για να λάβει το πηλίκο ή το υπόλοιπο της διαίρεσης, αντίστοιχα. Πιθανές εντολές που παρεμβάλλονται δεν προσθέτουν χρόνο εκτέλεσης, παρά μόνο αν

2 το σύνολο της διάρκειάς τους ξεπεράσει τους 32 κύκλους μηχανής. Προσπαθήστε τώρα να ξαναγράψετε τον κώδικα MIPS, ώστε να τοποθετήσετε κάποιες εντολές μεταξύ της εντολής διαίρεσης και της εντολής λήψης του πηλίκου, χωρίς να παραβιάζεται η ορθότητα του κώδικα. Στη συνέχεια ξαναϋπολογίστε τους χρόνους που ζητούνται στο προηγούμενο ερώτημα. Άσκηση 3 (προαιρετικά): Γράψτε ένα υποπρόγραμμα intstr σε συμβολική γλώσσα MIPS, το οποίο να μετατρέπει έναν ακέραιο των 32 bits στη συμβολοσειρά ASCII χαρακτήρων που τον αναπαριστάνει σε κάποιο σύστημα με βάση q. Ο ακέραιος είναι σε κανονική μορφή ακεραίων του συνόλου εντολών MIPS, δηλαδή προσημασμένος σε αναπαράσταση συμπληρώματος ως προς 2, ενώ το αποτέλεσμα θα πρέπει να δοθεί σε μορφή πρόσημο/μέτρο, όπου εκτυπώνεται μόνο το αρνητικό πρόσημο. Η βάση q μπορεί να είναι από 2 έως 16. Οι χαρακτήρες των ψηφίων θα πρέπει να είναι οι συνηθισμένοι αριθμητικοί χαρακτήρες 0 9 και αλφαβητικοί a f, ανάλογα με τη βάση q. Το υποπρόγραμμα δέχεται τρεις παραμέτρους στους καταχωρητές $4, $5 και $6, οι οποίες είναι αντίστοιχα: ένας ακέραιος, η διεύθυνση όπου αρχίζει η ζητούμενη συμβολοσειρά και η βάση q. Αυτό που πρέπει να κάνει το πρόγραμμα είναι, αφού επαληθεύσει ότι η βάση είναι μέσα στα επιτρεπτά όρια, να μετατρέψει την πρώτη παράμετρο στην αντίστοιχη συμβολοσειρά και να αποθηκεύσει τους χαρακτήρες που την αποτελούν στις διαδοχικές θέσεις μνήμης που ξεκινούν στη διεύθυνση που δίνεται με τη δεύτερη παράμετρο. Η συμβολοσειρά τελειώνει με το χαρακτήρα \0. Το υποπρόγραμμα επιστρέφει στον καταχωρητή $2 τον αριθμό των χαρακτήρων πλην του \0 που αποθήκευσε, και 0 αν δε μπόρεσε να κάνει τη μετατροπή. Παράδειγμα 1: με πρώτη παράμετρο τον ακέραιο 0xfffffffe (16) (= -2 (10)), δεύτερη τη διεύθυνση 0x400002a0 (16) και τρίτη το 10, το υποπρόγραμμα βρίσκει τη συμβολοσειρά -2, την οποία αποθηκεύει αρχίζοντας από τη δεδομένη διεύθυνση όπου τοποθετεί το χαρακτήρα -, και τελειώνοντας με το χαρακτήρα \0 στη διεύθυνση 0x400002a2 (16), επιστρέφει δε την τιμή 2. Παράδειγμα 2: με πρώτη παράμετρο τον ακέραιο 0xfffffffe (16) (= -2 (10)), δεύτερη τη διεύθυνση 0x400002a0 (16) και τρίτη το 2, το υποπρόγραμμα βρίσκει τη συμβολοσειρά -10, την οποία αποθηκεύει αρχίζοντας από τη δεδομένη διεύθυνση όπου τοποθετεί το χαρακτήρα -, και τελειώνοντας με το χαρακτήρα \0 στη διεύθυνση 0x400002a3 (16), επιστρέφει δε την τιμή 3. Παράδειγμα 3: με πρώτη παράμετρο τον ακέραιο 0xfffffffe (16) (= -2 (10)), δεύτερη τη διεύθυνση 0x400002a0 (16) και τρίτη το 18, το υποπρόγραμμα επιστρέφει την τιμή 0. Για να δοκιμάσετε τον κώδικά σας, να γράψετε ένα κυρίως πρόγραμμα σε κάποια διαθέσιμη πλατφόρμα προσομοίωσης κώδικα MIPS (πχ SPIM ή MARS), το οποίο να διαβάζει τον ακέραιο με τρόπο που υποδεικνύεται από την πλατφόρμα, να διαβάζει τη βάση q, να καλεί το υποπρόγραμμα intstr με τις προβλεπόμενες παραμέτρους, και στο τέλος να εκτυπώνει τα αποτελέσματά του. Να υποβάλετε τον κώδικα του υποπρογράμματος intstr, καθώς και του κυρίως προγράμματος, ηλεκτρονικά μέσω email, αναφέροντας και ποια πλατφόρμα MIPS χρησιμοποιήσατε. Υπόδειξη: Ανεξάρτητα του τρόπου ανάγνωσης του ακέραιου από την πλατφόρμα, αυτός καταχωρείται εσωτερικά με την κανονική μορφή αναπαράστασης συμπληρώματος ως προς 2. Άσκηση 4: Έστω ότι έχουμε έναν επεξεργαστή MIPS, ο οποίος δεν υλοποιεί τις εντολές ολίσθησης με μεταβλητό αριθμό ψηφίων ολίσθησης. Τότε η εντολή sllv $16, $17, $18

3 η οποία ολισθαίνει το περιεχόμενο του καταχωρητή $17 προς τα αριστερά τόσες θέσεις (μεταξύ 0 και 31), όσο καθορίζουν τα 5 λιγότερο σημαντικά ψηφία του καταχωρητή $18, και αποθηκεύει το αποτέλεσμα στον καταχωρητή $16, θα υλοποιηθεί στον επεξεργαστή μέσω λογισμικού, με βάση άλλες εντολές MIPS, ως εξής: start: lui $8, Upper(mask) ori $8, $8, Lower(mask) lw $8, 0($8) lui $9, Upper(shifter) ori $9, $9, Lower(shifter) lw $16, 0($9) and $16, $16, $8 andi $18, $18, 0x1f sll $18, $18, 6 or $16, $16, $18 sw $16, 0($9) shifter: sll $16, $17, 0 όπου με το συμβολισμό Upper(X) και Lower(X) εννοούμε τα 16 περισσότερο και τα 16 λιγότερο σημαντικά bits, αντίστοιχα, κάποιας σταθεράς Χ μεγέθους 32 bits. Οι mask και shifter είναι δύο γνωστές θέσεις μνήμης, από τις οποίες η δεύτερη αποτελεί ετικέτα του παραπάνω κώδικα. Για να κατανοήσετε καλύτερα τον κώδικα: Α. Γράψτε τον πρώτα σε γλώσσα μηχανής (δηλαδή σε δυαδική μορφή) MIPS, κάνοντας οποιαδήποτε υπόθεση για τις διευθύνσεις mask και shifter. Β. Στη συνέχεια εξηγήστε αναλυτικά τη λειτουργία του, εντολή προς εντολή. Γ. Τι φορτώνει στον καταχωρητή $8 η πρώτη, και τι φορτώνει στον καταχωρητή $16 η δεύτερη από τις δύο εντολές φόρτωσης; Δ. Τι αποθηκεύει και πού η εντολή αποθήκευσης; Ε. Λαμβάνοντας υπ όψη την κωδικοποίηση της εντολής sll σε γλώσσα μηχανής, ποια τιμή πρέπει να είναι αποθηκευμένη στη θέση μνήμης mask, ώστε ο κώδικας να υλοποιεί πραγματικά την εντολή sllv; Άσκηση 5: Εξετάστε την αλήθεια των πιο κάτω προτάσεων σχετικά με μη προσημασμένους δυαδικούς ακέραιους, χρησιμοποιώντας αντιπαραδείγματα για να βρείτε τις ψευδείς και αποδεικνύοντας λογικά τις αληθείς προτάσεις: Α. Όλοι οι μη μηδενικοί ακέραιοι που είναι πολλαπλάσια του 6 έχουν ακριβώς δύο ψηφία 1 στην αναπαράστασή τους. Β. Όλοι οι μη μηδενικοί ακέραιοι που είναι πολλαπλάσια του 7 έχουν τουλάχιστον τρία ψηφία 1 στην αναπαράστασή τους. Γ. Όλοι οι ακέραιοι που είναι πολλαπλάσια του 3 και έχουν ακριβώς δύο ψηφία με τιμή 1 στην αναπαράστασή τους, έχουν περιττή διαφορά σημαντικότητας στα δύο αυτά ψηφία. Σημείωση: Σημαντικότητα είναι η δύναμη του 2 που αντιστοιχεί στο ψηφίο. Άσκηση 6:

4 Θεωρήστε έναν υπολογιστή αρχιτεκτονικής συσσωρευτή. Το σύνολο εντολών του επεξεργαστή αυτού περιλαμβάνει τις εντολές load, store, multiply, add και sub, οι οποίες έχουν ένα τελούμενο Δ (κατ ευθείαν διευθυνσιοδότηση μνήμης) και αναφέρονται στο συσσωρευτή Σ ως εξής: load Δ store Δ multiply Δ add Δ sub Δ Σ = ΜΕΜ[Δ] ΜΕΜ[Δ] = Σ Σ = Σ * MEM[Δ] Σ = Σ + ΜΕΜ[Δ] Σ = Σ ΜΕΜ[Δ] Για τα ερωτήματα που ακολουθούν υποθέστε ότι η διευθυνσιοδότηση της μνήμης γίνεται σε λέξεις. Για κάθε περίπτωση, θεωρήστε βοηθητικές θέσεις μνήμης όπως τις χρειάζεστε. Α. Γράψτε ένα πρόγραμμα στη συμβολική γλώσσα της αρχιτεκτονικής αυτής, που να υπολογίζει την τιμή της παράστασης: n i S = ( A j B j ) i=1 j=1 για n = 3. Θεωρήστε τα A i, B i, i=1,,n, και S ως τις διευθύνσεις μνήμης όπου τοποθετούνται οι αντίστοιχες μεταβλητές. Τι παρατηρείτε στη μορφή του προγράμματος που γράψατε; Μπορείτε να χρησιμοποιήσετε το ίδιο πρόγραμμα για άλλη τιμή του n; Ποια προγραμματιστική δομή δεν μπορείτε να υλοποιήσετε με τις πιο πάνω εντολές; Β. Έστω ότι το σύνολο εντολών του επεξεργαστή επεκτείνεται, ώστε να περιλαμβάνει και τις εντολές inc, dec, cmp, beq και bne, με την ακόλουθη λειτουργία: n j=i inc Δ dec Δ cmp Δ beq E bne E MEM[Δ]++ ΜΕΜ[Δ]-- F = (Σ == MEM[Δ]) if (F) branch E if (!F) branch E όπου F κατάλληλο ψηφίο ελέγχου του επεξεργαστή, και Ε κάποια ετικέτα στον κώδικα που εκφράζει μετατόπιση σχετικά με την τιμή του μετρητή προγράμματος. Ο επεξεργαστής μπορεί τώρα να δεχτεί και έμμεση διευθυνσιοδότηση μνήμης για τις εντολές του που έχουν τελούμενο Δ, η οποία συμβολίζεται και περιγράφεται ως εξής: load (Δ) store (Δ) multiply (Δ) add (Δ) sub (Δ) inc (Δ) dec (Δ) cmp (Δ) Σ = ΜΕΜ[MEM[Δ]] ΜΕΜ[MEM[Δ]] = Σ Σ = Σ * MEM[MEM[Δ]] Σ = Σ + ΜΕΜ[MEM[Δ]] Σ = Σ ΜΕΜ[ΜΕΜ[Δ]] MEM[MEM[Δ]]++ MEM[MEM[Δ]]-- F = (Σ == MEM[MEM[Δ]]) Γράψτε το πρόγραμμα που υπολογίζει την πιο πάνω παράσταση για μεταβλητό n, η τιμή του οποίου βρίσκεται στη διεύθυνση μνήμης Ν. Υποθέστε ότι οι διευθύνσεις μνήμης Α και Β περιέχουν τις αρχικές διευθύνσεις των αντίστοιχων διανυσμάτων.

5 Γ. Επεκτείνετε την αρχιτεκτονική συσσωρευτή, ώστε να περιλαμβάνει έναν καταχωρητή δείκτη Χ, και οι παραπάνω εντολές να μπορούν να δεχτούν δεικτοδοτούμενη διευθυνσιοδότηση, που συμβολίζεται και περιγράφεται όπως φαίνεται στον ακόλουθο πίνακα: load Δ,Χ store Δ,Χ multiply Δ,Χ add Δ,Χ sub Δ,Χ inc Δ,X dec Δ,Χ cmp Δ,X Σ = ΜΕΜ[Δ+Χ] ΜΕΜ[Δ+Χ] = Σ Σ = Σ * MEM[Δ+Χ] Σ = Σ + ΜΕΜ[Δ+Χ] Σ = Σ ΜΕΜ[Δ+Χ] MEM[Δ+X]++ ΜΕΜ[Δ+Χ]-- F = (Σ == MEM[Δ+X]) όπου στη διεύθυνση Δ προστίθεται το περιεχόμενο του καταχωρητή Χ για τον υπολογισμό της τελικής διεύθυνσης προσπέλασης. Όλες οι εντολές του πίνακα μπορούν να δεχτούν και έμμεση διευθυνσιοδότηση, που εφαρμόζεται πριν τη δεικτοδοτούμενη. Το σύνολο εντολών του επεξεργαστή περιλαμβάνει τώρα και τις πιο κάτω εντολές: loadx Δ storex Δ cmpx Δ incx decx bnzx E bezx Ε X = MEM[Δ] MEM[Δ] = X F = (Χ == ΜΕΜ[Δ]) X++ X-- if (X!= 0) branch E if (X == 0) branch E Οι εντολές loadx, storex και cmpx δέχονται και έμμεση διευθυνσιοδότηση μνήμης. Ξαναγράψτε το πρόγραμμα που υπολογίζει την παραπάνω παράσταση για μεταβλητό n, χρησιμοποιώντας δεικτοδοτούμενη διευθυνσιοδότηση μέσω του καταχωρητή Χ. Όπως και πριν, υποθέστε ότι οι διευθύνσεις Α και Β περιέχουν τις αρχικές διευθύνσεις των διανυσμάτων. Άσκηση 7: Θεωρήστε την αρχιτεκτονική στοίβας της εικονικής μηχανής java. Μέρος από τη συμβολική γλώσσα αυτής της αρχιτεκτονικής δίνεται στον Πίνακα 2. Με βάση αυτόν τον πίνακα, γράψτε τον κώδικα που υπολογίζει την τιμή της ακέραιας παράστασης της προηγούμενης άσκησης, για τυχαία τιμή του n, με την υπόθεση ότι οι αρχικές διευθύνσεις των διανυσμάτων Α και Β είναι τοποθετημένες στις τοπικές μεταβλητές 11 και 12, η τιμή του n είναι τοποθετημένη στην τοπική μεταβλητή 10, οι τιμές των i και j τοποθετούνται στις τοπικές μεταβλητές 0 και 1, και το αποτέλεσμα S θέλουμε να αποθηκευτεί στην τοπική μεταβλητή 13. Άσκηση 8: Έστω οι προσημασμένοι σε αναπαράσταση συμπληρώματος ως προς 2 δυαδικοί αριθμοί των 12 bits Α = 010110100110 και Β = 101110010111. Α. Δείξτε πώς μια επαναληπτική μονάδα πολλαπλασιασμού σταθερής υποδιαστολής με διαδοχικές προσθέσεις και ολισθήσεις εκτελεί την πράξη Α Β (όπου Α ο πολλαπλασιαστέος και Β ο πολλαπλασιαστής), κατασκευάζοντας έναν πίνακα όπου δείχνονται οι τιμές των καταχωρητών της μονάδας (Κ1, Κ2, Κ3) σε κάθε φάση εκτέλεσης της πράξης. Θεωρήστε τρεις διαφορετικές περιπτώσεις για τον καθορισμό της πράξης κάθε επανάληψης:

6 1. Τον αυθεντικό αλγόριθμο Booth βήματος 1 ψηφίου, που ελέγχει 2 ψηφία του πολλαπλασιαστή ανά επανάληψη. 2. Τον βελτιωμένο αλγόριθμο Booth βήματος 2 ψηφίων, που ελέγχει 3 ψηφία του πολλαπλασιαστή ανά επανάληψη. 3. Έναν ακόμα πιο βελτιωμένο αλγόριθμο Booth βήματος 3 ψηφίων, που ελέγχει 4 ψηφία του πολλαπλασιαστή ανά επανάληψη. Στην περίπτωση αυτή θα πρέπει να καθορίσετε τι πράξεις πρέπει να γίνονται στην ΑΛΜ της μονάδας για κάθε τετράδα ψηφίων. Τα στοιχεία επεξεργασίας και αποθήκευσης δεδομένων της μονάδας πολλαπλασιασμού πρέπει να είναι όσο το δυνατό πιο μικρά, ώστε να παράγεται αποτέλεσμα των 24 bits. Ποιο είναι το ελάχιστο μέγεθος ΑΛΜ που απαιτείται για κάθε περίπτωση; Β (προαιρετικά). Θεωρήστε τώρα για την παραπάνω πράξη Α Β μια υλοποίηση συνδυαστικής μονάδας πολλαπλασιασμού σταθερής υποδιαστολής με μια διάταξη πρόσθεσης διατήρησης κρατουμένου (carry-save), και έναν τελικό αθροιστή επιλογής κρατουμένου με επιμέρους στοιχεία των 4 ψηφίων. Η μονάδα αυτή υλοποιεί το βελτιωμένο αλγόριθμο Booth βήματος 2 ψηφίων, που ελέγχει 3 ψηφία του πολλαπλασιαστή ανά επανάληψη. Με βάση τα λυμένα παραδείγματα που σας έχουν δοθεί, σχεδιάστε το διάγραμμα της μονάδας, τόσο για τη διάταξη πρόσθεσης διατήρησης κρατουμένου, όσο και για τον αθροιστή επιλογής κρατουμένου, και δείξτε σε κάθε σημείο της μονάδας την τιμή που λαμβάνει για την πράξη των παραπάνω δύο αριθμών.

7 Πίνακας 1: Βασικές Εντολές Σταθερής Υποδιαστολής Αρχιτεκτονικής MIPS των 32 bits Αντίστοιχος κώδικας μηχανής Ερμηνεία Α. Αριθμητικές και λογικές εντολές: add rd,rs,rt 0x0 rs rt rd 0 0x20 rd = rs+rt, με υπερχείλιση addu rd,rs,rt 0x0 rs rt rd 0 0x21 rd = rs+rt, χωρίς υπερχείλιση addi rt,rs,imm 0x8 rs rt imm rt = rs+imm, με υπερχείλιση addiu rt,rs,imm 0x9 rs rt imm rt = rs+imm, χωρίς υπερχείλιση and rd,rs,rt 0x0 rs rt rd 0 0x24 rd = rs AND rt andi rt,rs,imm 0xc rs rt imm rt = rs AND imm div rs,rt 0x0 rs rt 0 0 0x1a rs = lo*rt+hi, με πρόσημο divu rs,rt 0x0 rs rt 0 0 0x1b rs = lo*rt+hi, χωρίς πρόσημο lui rt,imm 0xf 0 rt imm rt = imm << 16 mult rs,rt 0x0 rs rt 0 0 0x18 hi,lo = rs*rt, με πρόσημο multu rs,rt 0x0 rs rt 0 0 0x19 hi,lo = rs*rt, χωρίς πρόσημο nor rd,rs,rt 0x0 rs rt rd 0 0x27 rd = rs NOR rt or rd,rs,rt 0x0 rs rt rd 0 0x25 rd = rs OR rt ori rt,rs,imm 0xd rs rt imm rt = rs OR imm sll rd,rt,sh 0x0 0 rt rd sh 0x0 rd = rt << sh sllv rd,rt,rs 0x0 rs rt rd 0 0x4 rd = rt << rs slt rd,rs,rt 0x0 rs rt rd 0 0x2a rd = rs<rt, με πρόσημο sltu rd,rs,rt 0x0 rs rt rd 0 0x2b rd = rs<rt, χωρίς πρόσημο slti rt,rs,imm 0xa rs rt imm rt = rs<imm, με πρόσημο sltiu rt,rs,imm 0xb rs rt imm rt = rs<imm, χωρίς πρόσημο sra rd,rt,sh 0x0 0 rt rd sh 0x3 rd = rt >> sh, με πρόσημο srav rd,rt,rs 0x0 rs rt rd 0 0x7 rd = rt >> rs, με πρόσημο srl rd,rt,sh 0x0 0 rt rd sh 0x2 rd = rt >> sh, χωρίς πρόσημο srlv rd,rt,rs 0x0 rs rt rd 0 0x6 rd = rt >> rs, χωρίς πρόσημο sub rd,rs,rt 0x0 rs rt rd 0 0x22 rd = rs-rt, με υπερχείλιση subu rd,rs,rt 0x0 rs rt rd 0 0x23 rd = rs-rt, χωρίς υπερχείλιση xor rd,rs,rt 0x0 rs rt rd 0 0x26 rd = rs XOR rt xori rt,rs,imm 0xe rs rt imm rt = rs XOR imm Β. Εντολές άλματος: beq rs,rt,label 0x4 rs rt off if (rs==rt) goto label bgez rs,label 0x1 rs 1 off if (rs>=0) goto label bgtz rs,label 0x7 rs 0 off if (rs>0) goto label blez rs,label 0x6 rs 0 off if (rs<=0) goto label bltz rs,label 0x1 rs 0 off if (rs<0) goto label bne rs,rt,label 0x5 rs rt off if (rs!=rt) goto label j target 0x2 target goto target jal target 0x3 target goto target, $31 = PC+1 jalr rs,rd 0x0 rs 0 rd 0 0x9 goto (rs), rd = PC+1 jr rs 0x0 rs 0 0 0 0x8 goto (rs) Γ. Εντολές μετακίνησης δεδομένων: lb rt,off(rs) 0x20 rs rt off rt = M[rs+off] 8,με προέκταση lbu rt,off(rs) 0x24 rs rt off rt = M[rs+off] 8,χωρίς προέκταση lh rt,off(rs) 0x21 rs rt off rt = M[rs+off] 16,με προέκταση lhu rt,off(rs) 0x25 rs rt off rt = M[rs+off] 16,χωρίς προέκταση lw rt,off(rs) 0x23 rs rt off rt = M[rs+off] 32 mfhi rd 0x0 0 0 rd 0 0x10 rd = hi mflo rd 0x0 0 0 rd 0 0x12 rd = lo sb rt,off(rs) 0x28 rs rt off M[rs+off] 8 = rt sh rt,off(rs) 0x29 rs rt off M[rs+off] 16 = rt

8 sw rt,off(rs) 0x2b rs rt off M[rs+off] 32 = rt Δ. Άλλες εντολές: syscall 0x0 0 0xc κλήση συστήματος $v0 Παρατηρήσεις: 1. Οι rd, rs και rt είναι καταχωρητές γενικού σκοπού των 32 bits. 2. Ο κώδικας κάθε εντολής σε γλώσσα μηχανής περιλαμβάνει 32 bits: 6 bits που είναι ο κωδικός λειτουργίας, ομάδες των 5 bits που είναι συνήθως διευθύνσεις καταχωρητών όπως οι παραπάνω, και είτε έναν κωδικό τελεστή των 6 bits είτε μια σταθερά των 16 bits. Μερικές εντολές περιέχουν διαφορετικά από τα πιο πάνω πεδία. 3. Οι εντολές αριθμητικών πράξεων στις οποίες υπάρχει η ένδειξη «με υπερχείλιση» οδηγούν σε ειδική περίπτωση (exception) όταν εμφανιστεί υπερχείλιση. Σε όσες υπάρχει η ένδειξη «χωρίς υπερχείλιση», δε γίνεται έλεγχος υπερχείλισης. 4. Οι εντολές αριθμητικών ή λογικών πράξεων στις οποίες υπάρχει η ένδειξη «με πρόσημο» λαμβάνουν τα τελούμενά τους σαν προσημασμένους ακέραιους. Ειδικότερα, ολίσθηση προς τα δεξιά στην περίπτωση αυτή εισάγει από τα αριστερά το πρόσημο του αριθμού. Η ένδειξη «χωρίς πρόσημο» λαμβάνει τα τελούμενα των πράξεων σα μη προσημασμένους ακέραιους αριθμούς. 5. Οι εντολές ολίσθησης με σταθερό αριθμό ψηφίων ολίσθησης sh κωδικοποιούν τον αριθμό αυτό στη λέξη εντολής στην τελευταία ομάδα των 5 bits πριν τον κωδικό τελεστή. 6. Οι εντολές πολλαπλασιασμού και διαίρεσης ακεραίων χρησιμοποιούν δύο καταχωρητές ειδικού σκοπού, τους lo και hi. Στον πολλαπλασιασμό, μετά την πράξη, ο lo περιέχει τα λιγότερο σημαντικά 32 bits του αποτελέσματος, ενώ ο hi τα υπόλοιπα. Στη διαίρεση, μετά την πράξη, ο lo περιέχει το πηλίκο και ο hi το υπόλοιπο. Ανάγνωση των καταχωρητών αυτών γίνεται με τις ειδικές εντολές μετακίνησης δεδομένων mflo και mfhi. 7. Στις εντολές άλματος υπό συνθήκη, η κωδικοποίηση γίνεται έτσι ώστε: off = label (PC + 1). Η διευθυνσιοδότηση εντολών στην παραπάνω σχέση γίνεται σε λέξεις. 8. Στις εντολές άμεσου άλματος η διεύθυνση λέξης του προορισμού άλματος (target) κωδικοποιείται στα 26 λιγότερο σημαντικά bits της λέξης εντολής. Τα 4 πλέον σημαντικά bits της διεύθυνσης target θεωρείται ότι είναι ταυτόσημα με τα αντίστοιχα της διεύθυνσης λέξης PC + 1. 9. Οι εντολές ανάγνωσης από τη μνήμη που έχουν ένδειξη «με προέκταση» εφαρμόζουν προέκταση προσήμου στην τιμή που φέρνουν από τη μνήμη. 10. Η αριθμητική ένδειξη στην περιγραφή των εντολών προσπέλασης της μνήμης δηλώνει το μέγεθος του δεδομένου που μεταφέρεται. Για δεδομένο μεγαλύτερο του 1 byte θεωρούμε ότι η τοποθέτησή του στη μνήμη γίνεται σε διαδοχικά bytes με τα πιο σημαντικά τμήματα αυτού να βρίσκονται στις μικρότερες διευθύνσεις (τοποθέτηση big endian). 11. Η προσπέλαση στη μνήμη θεωρείται ότι είναι ευθυγραμμισμένη. Αυτό σημαίνει ότι για προσπέλαση δεδομένου των 16 bits (2 bytes) η τελική διεύθυνση προσπέλασης είναι πολλαπλάσιο του 2, ενώ για προσπέλαση δεδομένου των 32 bits (4 bytes) η τελική διεύθυνση προσπέλασης είναι πολλαπλάσιο του 4.

9 Πίνακας 2. Επιλογή Εντολών Java Bytecode (από Wikipedia) Πρόσθετα bytes Στοίβα [πριν] [μετά] Περιγραφή aload 1: index objectref φόρτωση διεύθυνσης από την τοπική μεταβλητή #index aload_n objectref φόρτωση διεύθυνσης από την τοπική μεταβλητή n, όπου n = 0,1,2 ή 3 dup value value, value αντιγραφή της κορυφής στοίβας iadd value1, value2 result πρόσθεση ακεραίων iaload arrayref, index value φόρτωση ακεραίου από πίνακα iastore arrayref, index, value αποθήκευση ακεραίου σε πίνακα iconst_m1-1 φόρτωση της σταθεράς 1 iconst_n 0 φόρτωση της σταθεράς n, όπου n = 0,1,2,3,4 ή 5 idiv value1, value2 result διαίρεση ακεραίων if_icmpxx 2: branchbyte1, branchbyte2 value1, value2 αν value xx value2, άλμα σε μετατόπιση branchbyte1 << 8 + branchbyte2, όπου xx = eq, ge, gt, le, lt ή ne, για αντίστοιχη σύγκριση iinc 2: index, const αύξηση της τοπικής μεταβλητής #index κατά const iload 1: index value φόρτωση ακεραίου από την τοπική μεταβλητή #index iload_n value φόρτωση ακεραίου από την τοπική μεταβλητή n, όπου n = 0,1,2 ή 3 imul value1, value2 result πολλαπλασιασμός ακεραίων ineg value result αντίθετος ακέραιος irem value1, value2 result υπόλοιπο διαίρεσης ακεραίων ishl value1, value2 result αριστερή ολίσθηση ishr value1, value2 result δεξιά αριθμητική ολίσθηση istore 1: index value αποθήκευση στην τοπική μεταβλητή #index istore_n value αποθήκευση στην τοπική μεταβλητή n, όπου n = 0,1,2 ή 3 isub value1, value2 result αφαίρεση ακεραίων iushr value1, value2 result δεξιά λογική ολίσθηση pop value αφαίρεση κορυφής στοίβας swap value2, value1 value1, value2 εναλλαγή των δύο στοιχείων στην κορυφή της στοίβας