3. Γλώσσα μηχανής IJVM 4. Σχεδιαστικές επιλογές 5. Κρυφή μνήμη



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

7. Ροή ελέγχου 8. Μηχανισμοί εισόδου/εξόδου

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

Θέµατα Φεβρουαρίου

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

6. Ακολουθίες μικροεντολών 7. Συμβολισμός μικροεντολών (MAL)

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

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

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

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

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

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

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

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

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

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

30 min κάθε «φάση» Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 1. Πλυντήριο. 2. Στεγνωτήριο. 3. ίπλωµα. 4. αποθήκευση. προσέγγιση για 4.

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

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

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

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

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

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

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

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

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

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

Chapter 6 Αύξηση της απόδοσης με διοχέτευση (pipeline)

Διάλεξη 12 Καθυστερήσεις (Stalls)

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

Pipeline: Ένα παράδειγμα από.τη καθημερινή ζωή. 30 min κάθε «φάση»

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

Αρχιτεκτονικές Συνόλου Εντολών

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ

Παραλληλισµός Εντολών (Pipelining)

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

Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ

5. Σχεδιάστε ένα κύκλωμα περιττής ισοτιμίας για το βασικό κώδικα ΑSCII (7 bits).

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

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

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

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

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

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

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

Υ- 07 Παράλληλα Συστήματα Αρχιτεκτονική σύγχρονων πυρήνων επεξεργαστών

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

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

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

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

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

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

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης

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

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

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

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

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

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Παραλληλισμός σε επίπεδο εντολών

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

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

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

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

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

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

Τεχνολογίες Κύριας Μνήμης

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Διακλαδώσεις. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

Arqitektonik Upologist n

Η ιεραρχία της μνήμης

(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να

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

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

Ασκήσεις Caches

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

Σχεδίαση μονάδας ελέγχου επεξεργαστή

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

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

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

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXANIKO MHXANIK I O I Η/ Η Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Γ. Τσιατούχας ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ

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

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

Transcript:

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXANIKOI Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΙΠΕ Ο ΜΙΚΡΟΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Γ. Τσιατούχας 4 ο Κεφάλαιο. Στοίβες ιάρθρωση 2. Μοντέλο μνήμης IJVM. Γλώσσα μηχανής IJVM 4. Σχεδιαστικές επιλογές 5. Κρυφή μνήμη 6. Πρόγνωση διακλαδώσεων 2

ΣΤΟΙΒΕΣ Στοίβες / Οι γλώσσες προγραµµατισµού συνήθως υποστηρίζουν την έννοια των διαδικασιών (procedures) ή µεθόδων (methods), οι οποίες διαχειρίζονται µεταβλητές (variables). Οι µεταβλητές προσπελαύνονται µέσα από τη διαδικασία και παύουν να προσπελαύνονται µετά την επιστροφή από τη διαδικασία. Οι µεταβλητές δεν αποθηκεύονται σε απόλυτες διευθύνσεις της µνήµης καθώς πολλαπλές κλήσεις µιας διαδικασίας θα αλληλοεπηρέαζαν η µία την άλλη. Η πρακτική είναι να χρησιµοποιείται µια δεσµευµένη περιοχή της µνήµης, η οποία ονοµάζεται στοίβα (stack), όπου αποθηκεύονται οι µεταβλητές χωρίς να έχουν απόλυτες διευθύνσεις σε αυτή. Έτσι κατανέµεται µνήµη µόνο στις διαδικασίες που είναι ενεργές κάθε δεδοµένη στιγµή. Όταν µία διαδικασία επιστρέψει, η µνήµη που χρησιµοποιούσαν οι τοπικές µεταβλητές ελευθερώνεται. 4 2

Στοίβες /2 Υπάρχει ένας καταχωρητής (local variables τοπικές µεταβλητές) ο οποίος δείχνει στη βάση της στοίβας των τοπικών µεταβλητών της τρέχουσας ενεργής διαδικασίας. Επίσης, ένας δεύτερος καταχωρητής, (stack pointer δείκτης στοίβας), δείχνει στην υψηλότερη λέξη των τοπικών µεταβλητών (κορυφή της στοίβας). Αναφορά στις µεταβλητές γίνεται µε τη σχετική τους διεύθυνση (offset - απόσταση) ως προς τον. c2 c d5 b4 b4 d4 b b d Πλαίσιο Τοπικών Μεταβλητών b2 b2 d2 (Local Variable Frame) b b d a a2 a 08 a a 04 a2 a2 00 a a a a2 a ιαδικασία A B C D 5 Στοίβα Τελεστέων Χρησιµοποιούνται για τη φύλαξη τελεστών σε αριθµητικές πράξεις. Π.χ. έστω ότι η διεργασία Α πρέπει να κάνει τον ακόλουθο υπολογισµό: a = a2 + a a a2 a a a2 a a2 a a2 + a a a2 a a a2 a2 + a Απόθεση (push) του a2 στη στοίβα. Απόθεση (push) του a στη στοίβα. Απόσυρση (pop) των a2 και a από τη στοίβα, πρόσθεσή τους και απόθεση (push) του αποτελέσµατος στη στοίβα. Απόσυρση (pop) της λέξης (a2 + a) από την κορυφή της στοίβας και αποθήκευση του αποτελέσµατος στην θέση της τοπικής µεταβλητής a. 6

Μοντέλο Μνήµης IJVM Η διαχείριση της µνήµης µπορεί να γίνει µε δύο τόπους: ως πίνακας 4.294.967.296 byte (4GB) ως πίνακας.07.74.824 74 λέξεων των 4 bt byte Οι διευθύνσεις µνήµης δεν είναι άµεσα ορατές στο επίπεδο ISA, δηλ. στις εντολές της γλώσσας µηχανής. Υπάρχουν υπονοούµενες διευθύνσεις µε βάση δείκτες διευθύνσεων (pointers). Η προσπέλαση στη µνήµη γίνεται µόνο µε σχετική διευθυνσιοδότηση µε βάση τους δείκτες διευθύνσεων. 7 Περιοχές Μνήµης /2 Περιοχή µεθόδου (method area): Περιέχει το πρόγραµµα. Είναι η µόνη περιοχή που αντιµετωπίζεται ως πίνακας από bytes. Υπάρχει ένας καταχωρητής δείκτης, ο PC (program counter), που περιέχει τη δ/νση της επόµενης εντολής που θα προσκοµιστεί. εξαµενή σταθερών (constant pool): ιαµορφώνεται όταν το πρόγραµµα φορτώνεται στη µνήµη καιδεν µεταβάλλεται στη συνέχεια. εν περιέχει πρόγραµµα IJVM. Περιέχει σταθερές, αλφαριθµητικά και δείκτες προς άλλες περιοχές. Υπάρχει ένας καταχωρητής δείκτης, ο CPP (constant pool pointer), που περιέχει την δ/νση της πρώτης λέξης στη δεξαµενή σταθερών. Μνήµη PC περιοχή µεθόδου PC = PC + ; fetch προσκόµιση επόµενου byte δεξαµενή σταθερών Μνήµη CPP 8 4

Περιοχές Μνήµης 2/2 Πλαίσιο τοπικών µεταβλητών (local variable frame): Για κάθε κλήση µιας µεθόδου, δεσµεύεται/κατανέµεται µια περιοχή µνήµης για την αποθήκευση των µεταβλητών κατά το χρόνο ζωής της κλήσης. Στην αρχή του πλαισίου βρίσκονται οι παράµετροι (ορίσµατα) µεταοποία κλήθηκε η µέθοδος. Υπάρχει ένας καταχωρητής, ο (local variable), που περιέχει τη διεύθυνση της πρώτης θέσης του πλαισίου. Στοίβα τελεστέων (operant stack): Το µέγεθος του πλαισίου στοίβας τελεστέων είναι συγκεκριµένο και προυπολογίζεται από το µεταγλωττιστή της JAVA. Τοποθετείται ακριβώς πάνω από το πλαίσιο τοπικών µεταβλητών. Υπάρχει ένας καταχωρητής, ο (stack pointer), που περιέχει την δ/νση της λέξης στην κορυφή της στοίβας. Τρέχουσα στοίβα τελεστέων Υπάρχει ένας καταχωρητής, ο TOS (top of stack), που περιέχει την λέξη στην κορυφή της στοίβας. MAR = = + ; wr εγγραφή λέξης από MDR κορυφή της στοίβας Τρέχων πλαίσιο τοπικών µεταβλητών Πλαίσιο τοπικών µεταβλητών 2 Πλαίσιο τοπικών µεταβλητών Μνήµη 9 ΓΛΩΣΣΑ ΜΗΧΑΝΗΣ IJVM (ASSEMBLY LANGUAGE) 0 5

0x = σύµβολο δεκαεξαδικού αριθµού! Σύνολο Εντολών IJVM /2 Κωδικός Πράξης (δεκαεξαδικό) Μνηµονικό Επεξήγηση Τελεστέοι -byte: byte, σταθ., αρ-µεταβλητής Τελεστέοι 2-byte: µετατόπιση, δείκτηςθέσης, σχετ-δ/νση 20 εντολές! Σύνολο Εντολών IJVM 2/2 -byte operands : byte, const., varnum 2-byte operands : disp., index, offset push = απόθεση λέξης στην κορυφή της στοίβας pop = απόσυρση (διαγραφή) λέξης από την κορυφή της στοίβας απόθεση στην στοίβα απόθεση στην κορυφή της στοίβας 2 6

Εντολές BIPUSH, ISTORE, ILOAD BIPUSH: τοποθετεί ένα byte στην στοίβα (εννοείται στην κορυφή!) ISTORE: αφαιρεί την κορυφή της στοίβας και την αποθηκεύει σε µία µεταβλητή ILOAD: αντιγράφει µια µεταβλητή στην κορυφή της στοίβας Παράδειγµα: i = i + 2;. ILOAD #0 2. BIPUSH 2. IADD 4. ISTORE #0 #5 #4 # 5 k=9 #2 9 j= # i=5 #0 5 2 5 9 5 7 9 5 9 7 (αρχικά) () (2) () (4) Εντολές IADD, ISUB, IAND, IOR IADD: αποσύρει (pop) 2 λέξεις από την κορυφή, τις προσθέτει, τοποθετεί το αποτέλεσµα στηνκορυφή ISUB: όπως IADD αλλά το αποτέλεσµα είναι η διαφορά των 2 λέξεων IAND: όπως IADD αλλά το αποτέλεσµα είναι το λογικό AND των 2 λέξεων IOR: όπως IADD αλλά το αποτέλεσµα είναι το λογικό OR των 2 λέξεων Παράδειγµα: i = i 2;. ILOAD #0 2. BIPUSH 2. ISUB 4. ISTORE #0 9 5 2 5 5 #2 9 # #0 5 9 5 9 5 9 (αρχικά) () (2) () (4) 4 7

Παράδειγµα ILOAD, IADD, ISTORE Παράδειγµα: i=i+j; Συµβολικά:. ILOAD #0 // απόθεση i στην κορυφή 2. ILOAD # // απόθεση j στην κορυφή. IADD // 2 pop, πρόσθεση και απόθεση αποτελέσµατος στην κορυφή 4. ISTORE #0 // pop, αποθήκευση τιµής στο i. ILOAD i 2. ILOAD j. IADD #5 4. ISTORE i #4 # 5 k=9 #2 9 j= # i=5 #0 5 5 9 5 8 9 5 9 8 (αρχικά) () (2) () (4) 5 Εντολές DUP, SWAP, POP DUP: αντιγράφει την κορυφή της στοίβας και την αποθέτει στη στοίβα SWAP: αντιµεταθέτει δύο λέξεις στην κορυφή της στοίβας POP: αποσύρει - διαγράφει λέξη από την κορυφή στοίβας. DUP 2. POP. BIPUSH 4 4. SWAP #5 #4 # 9 k=9 #2 9 j= # i=5 #0 5 9 4 9 9 5 5 9 4 6 (αρχικά) () (2) () (4) 6 8

Εντολές ιακλάδωσης IFEQ: διαγράφει λέξη από τη στοίβα & διακλάδωση αν είναι µηδέν IFLT: διαγράφει λέξη από τη στοίβα & διακλάδωση αν είναι µικρότερη από µηδέν IF_ICMPEQ: διαγράφει 2 λέξεις από τη στοίβα& διακλάδωση αν είναι ίσες GOTO: διακλάδωση χωρίς συνθήκη. ILOAD j // τοποθέτησε το j στην κορυφή 2. IFEQ A // pop, σύγκριση j µε το 0 και αν είναι ίσο µετέφερε την εκτέλεση του προγράµµατος στη σχετική διεύθυνση Α προσηµασµένη λέξη των 6 bit. ILOAD j // τοποθέτησε το j στην κορυφή 2. BIPUSH 0 // τοποθέτησε το 0 στην κορυφή. IF_ICMPEQ Α // 2 pop, σύγκρινε το jµε το 0 και αν είναι ίσα µετέφερε την εκτέλεση του προγράµµατος στη σχετική διεύθυνση Α Αν πραγµατοποιηθεί η διακλάδωση τότε αναπροσαρµόζεται η τιµή του PC κατά το µέγεθος της προσηµασµένης σχετικής διεύθυνσης Α. Η σχετική διεύθυνση προστίθεται στη διεύθυνση του κωδικού πράξης! 7 Εντολές Κλήσης Μεθόδου / LDC_W: αντιγράφει µια σταθερά στην κορυφή της στοίβας INVOKEVIRTUAL: καλεί µια µέθοδο IRETURN: επιστρέφει από µια µέθοδο. LDC_W OBJREF // τοποθέτηση σταθεράς για την κλήση νέας µεθόδου 2. push param // τοποθέτηση παραµέτρου (π.χ. LDC_W, BIPUSH...). push param2 // τοποθέτηση παραµέτρου 4. push param // τοποθέτηση παραµέτρου 5.. Πλαίσιο τοπικών µεταβ βλητών καλούσας µεθόδο ου σχετική δ/νση ως προς CPP Προηγούµενος Προηγούµενος PC Τοπικές µεταβλητές καλούσας µεθόδου Παράµετρος 2 Παράµετρος είκτης διασύνδεσης Παράµετρος Παράµετρος 2 Παράµετρος OBJREF Προηγούµενος Το OBJREF καταµετράται ως παράµετρος! Προηγούµενος PC Τοπικές µεταβλητές καλούσας µεθόδου Παράµετρος 2 Βάση Παράµετρος Στοίβας Τρέχουσας είκτης (Καλούσας) διασύνδεσης Μεθόδου 8 9

Εντολές Κλήσης Μεθόδου 2/. LDC_W OBJREF // τοποθέτηση σταθεράς 2. push param // τοποθέτηση παραµέτρου. push param2 // τοποθέτηση παραµέτρου 4. push param // τοποθέτηση παραµέτρου 5.. καλούσας µεθόδου 6. INVOKEVIRTUAL X // κλήση µεθόδου PC καλούσας µεθόδου 2 byte σχετική δ/νση ως προς CPP Τοπικές µεταβλητές Μετατόπιση Χ σχετική δ/νση προς # Ν κληθείσας µεθόδου τον κώδικα της µεθόδου στην περιοχή Παράµετρος µεθόδων της µνήµης Παράµετρος 2 Τα 2 πρώτα bytes περιέχουν τον # Παράµετρος των παραµέτρων και είκτης OBJREF διασύνδεσης (Ν) Τα επόµενα 2bytesπεριέχουν τον Προηγούµενος # των µεταβλητών Προηγούµενος PC Ο κώδικας ξεκινά στο 5 ο byte. Τοπικές µεταβλητές ΣτηθέσητουOBJREF τοποθετείται το καλούσας µεθόδου άθροισµα (Ν) των δύο προηγούµενων Παράµετρος 2 Παράµετρος αριθµών ως δείκτης διασύνδεσης είκτης διασύνδεσης 9 Εντολές Κλήσης Μεθόδου /. LDC_W OBJREF // τοποθέτηση σταθεράς 2. push param // τοποθέτηση παραµέτρου. push param2 // τοποθέτηση παραµέτρου 4. push param // τοποθέτηση παραµέτρου 5.. 6. INVOKEVIRTUAL X // κλήση µεθόδου Ο δείκτης διασύνδεσης περιέχει τη σχετική δ/νση όπου θα τοποθετηθεί η τιµή τουpc της καλούσας µεθόδου. Στην αµέσως ψηλότερη θέση τοποθετείται η τιµή του της καλούσας µεθόδου. Αναπροσαρµόζονται οι τιµές των και, ενώ ο PC δείχνει στο 5 ο byte της µεθόδου όπου ξεκινάει ο κώδικάς της. Πλαίσιο τοπικών µεταβλητών κληθείσας µεθόδου καλούσας µεθόδου PC καλούσας µεθόδου # Ν Τοπικές µεταβλητές κληθείσας µεθόδου Παράµετρος Παράµετρος 2 Παράµετρος είκτης διασύνδεσης Προηγούµενος Προηγούµενος PC Τοπικές µεταβλητές καλούσας µεθόδου Παράµετρος 2 Παράµετρος είκτης διασύνδεσης 20 0

Επιστροφή από Μέθοδο /2. BIPUSH 0 // πρώτη εντολή καλούµενης µεθόδου 2.. // επόµενες εντολές. ILOAD result // τοποθέτηση αποτελέσµατος 4. IRETURN // επιστροφή από µέθοδο Επιστρεφόµενη τιµή καλούσας µεθόδου Με βάση τον και την τιµή του δείκτη PC καλούσας µεθόδου διασύνδεσης βρίσκεται ο και ο PC της καλούσας µεθόδου. Τοπικές µεταβλητές κληθείσας µεθόδου Ηεπιστρεφόµενη τιµή γράφεταιστηθέση Παράµετρος του και αποκαθίσταται ο και ο. Παράµετρος 2 Παράµετρος Επιστρεφόµενη τιµή είκτης διασύνδεσης Προηγούµενος Προηγούµενος Προηγούµενος PC Προηγούµενος PC Τοπικές µεταβλητές Τοπικές µεταβλητές καλούσας µεθόδου καλούσας µεθόδου Παράµετρος 2 Παράµετρος 2 Παράµετρος Παράµετρος είκτης διασύνδεσης είκτης διασύνδεσης 2 Επιστροφή από Μέθοδο 2/2. ISTORE i // 2. LDC_W OBJREF // τοποθέτηση σταθεράς για την κλήση νέας µεθόδου. push param // τοποθέτηση παραµέτρου 4. push param2 // τοποθέτηση παραµέτρου 5. push param // τοποθέτηση παραµέτρου 6.. 7. INVOKEVIRTUAL X // κλήση µεθόδου 8. ILOAD k // η εκτελούµενη εντολή της καλούσας µεθόδου µετά την επιστροφή 9. IADD 0... // επόµενες εντολές Επιστρεφόµενη τιµή Προηγούµενος Προηγούµενος PC Τοπικές µεταβλητές καλούσας µεθόδου Παράµετρος 2 Παράµετρος είκτης διασύνδεσης Μετά την επιστροφή ο PC έχει την παλιά του τιµή και δείχνει στην περιοχή µεθόδων της µνήµης την επόµενη εντολή µετά την INVOKEVIRTUAL, δηλ. την ILOAD. Συνεπώς ο έλεγχος επιστρέφει στην εντολή που είχε σειρά εκτέλεσης µετά την INVOKEVIRTUAL. 22

Εντολές WIDE, IINC WIDE: διευρυµένη πράξη (byte προθέµατος -prefix) IINC: αύξηση µεταβλητής κατά µία σταθερά Περιοχή Μνήµης Μεθόδων Περιοχή Μνήµης Μεθόδων. WIDE 2. ILOAD i, j. παρόµοια. WIDE 2. ISTORE i, j. WIDE -C4- ILOAD - 5 - INDEX BYTE INDEX BYTE2 byte ιακλάδωση στην µεντολή IINC wide_iload - 84 - (5) hex INDEX αντί της BYTE iload CONST (05) hex BYTE Παρόµοια για WIDE-ISTORE διακλάδωση στην wide_istore (6) hex αντί της istore (06) hex byte 2 Απόσπασµα Προγράµµατος Γλώσσα Προγραµµατισµού (JAVA) Συµβολική Γλώσσα (Assembly Language) Γλώσσα Μηχανής Συµβολική Γλώσσα µεντολών (µassembly Language) 0x5= Κωδικός Πράξης (Opcode) είκτης Θέσης 24 2

Το Σύνολο των Καταχωρητών Ολοκληρώνοντας την περιγραφή της λειτουργίας της µηχανής Mic- παραθέτουµε τα ονόµατα όλων των καταχωρητών που χρησιµοποιήσαµε. Καταχωρητές επικοινωνίας µε τη µνήµη: PC = program counter µετρητής προγράµµατος MBR = memory byte register καταχωρητής εντολών MAR = memory address register καταχωρητής διεύθυνσης µνήµης MDR = memory data register καταχωρητής δεδοµένων µνήµης Καταχωρητές ειδικής χρήσης: Η = hold register καταχωρητής κατακράτησης = stack pointer δείκτης στοίβας = local variables τοπικές µεταβλητές (δείκτης βάσης στοίβας) TOS = top of stack καταχωρητής περιεχοµένου κορυφής της στοίβας CPP = constant pool pointer δείκτης βάσης περιοχής µνήµης σταθερών OPC = optional program counter βοηθητικός µετρητής προγράµµατος 25 μαρχιτεκτονικη & ΣΧΕΔΙΑΣΤΙΚΕΣ ΕΠΙΛΟΓΕΣ 26

Παράµετροι Σχεδίασης Ταχύτητα Σχεδιαστικό και κατασκευαστικό κόστος Κατανάλωση ενέργειας Αξιοπιστία 27 Ταχύτητα Χρήση νεότερης (ταχύτερης) τεχνολογίας κατασκευής Απλοποίηση της οργάνωσης ή/και ταχύτερα κυκλώµατα για την αύξηση της συχνότητας του ρολογιού (µείωσηί κύκλου ρολογιού) ταχύτερος αθροιστής χρήση πολλαπλασιαστικής µονάδας Μείωση του αριθµού των κύκλων ρολογιού ανά εντολή(διαδροµή εκτέλεσης path length) Εκτέλεση εντολών µε επικάλυψη π.χ. δοµές διοχέτευσης 28 4

Μείωση ιαδροµής Εκτέλεσης / Ενσωµάτωση µεντολής σε άλλη µεντολή 29 Μείωση ιαδροµής Εκτέλεσης 2/ Αρχιτεκτονική τριών διαύλων Με τη χρήση τρίτου διαύλου τα περιεχόµενα των καταχωρητών και MBR είναι ταυτόχρονα διαθέσιµα στηνalu για πρόσθεση χωρίς την ενδιάµεση φόρτωση του καταχωρητή H. 0 5

Από/προς κύρια µνήµη Μείωση ιαδροµής Εκτέλεσης / Σε Χρήση κάθε εντολή µονάδας µπορεί προσκόµισης να συναντήσουµε εντολών τις (instruction ακόλουθες fetch πράξεις: unit IFU): καθιστά Ο PC οδηγείται πάντα διαθέσιµα στην ALUτοεπόµενο και αυξάνει και κατά το µία µεθεπόµενο µονάδα. byte, ερµηνεύει Ηνέατιµήκάθε τουpc κωδικό χρησιµοποιείται πράξης, προσδιορίζει για την προσκόµιση πρόσθετα του πεδία επόµενου που θα byte προσκοµιστούν, στο ρεύµα τωνεντολών. τα συναρµολογεί σε ένα καταχωρητή και τα καθιστά διαθέσιµα ιαβάζονται στηνcpu. οι τελεστέοι από τη µνήµη. Γράφονται τελεστέοι στην µνήµη. Μηχανή Πεπερασµένων Καταστάσεων Η ALU εκτελεί έναν υπολογισµό MBR2 και το αποτέλεσµα αποθηκεύεται. (Finite State Machine FSM) Καταχωρητής ολίσθησης 6 bytes Προσκόµιση λέξης Προσκόµιση λέξης Προσκόµιση λέξης 2 LSBs ίαυλος C ίαυλος B MBR: µετάβαση όταν διαβάζεται ο MBR MBR2: µετάβαση όταν διαβάζεται ο MBR2 Κατάσταση # bytes στον καταχωρητή ολίσθησης ιαδροµή εδοµένων Mic-2 προς / από την κύρ ρια µνήµη 2 2 Μονάδα Προσκό- µισης Εντολών (IFU) MAR MDR PC MBR MBR2 2 CPP TOS OPC Data Path καταχωρητές πρόσβασης στη µνήµη Έλεγχος ALU 6 Β ALU Α N Z H C Ολισθητής 2 2 2 6

Επικαλυπτόµενη Εκτέλεση Εντολών Βασικά µέρη κύκλου διαδροµής δεδοµένων: χρόνος οδήγησης διαύλων από επιλεγµένους καταχωρητές χρόνος υπολογισµού ALU και ολισθητή χρόνος επιστροφής και εγγραφής αποτελεσµάτων στους καταχωρητές Λύση: επικαλυπτόµενη εκτέλεση εντολών µε χρήση γραµµής διοχέτευσης (pipeline) µείωση του κύκλου ρολογιού (αύξηση συχνότητας) καθώς η καθυστέρηση είναι µικρότερη όλα τα µέρη της διαδροµής δεδοµένων είναι σε χρήση στη διάρκεια κάθε κύκλου Απαιτείται πρόσθετο υλικό: καταχωρητές διαύλων, πρόσθετοι καταχωρητές µεντολών (MIR)... Γενική Περίπτωση οµής ιοχέτευσης CLK IF ID OF EX WB ταχωρητής ταχωρητής ταχωρητής D 0 Q 0 Μονάδα D Q Μονάδα D 2 Q 2 Μονάδα D Q Μονάδα D 4 Q 4 D 5 Q αποκωδικοποίησης Μονάδα 5 προσκόµισης προσκόµισης εκτέλεσης εγγραφής εντολής τελεστέων εντολής αποτελέσµα- εντολής τος Κατ Κατ Κατ ταχωρητής Κατ ταχωρητής Κατ ταχωρητής Κατ Έστω µονάδα µε k στάδια όπου κάθε στάδιο έχει χρόνο απόκρισης τ και εκτελούνται σε αυτή n εντολές. Ισχύει: Επιτάχυνση : Με διοχέτευση απαιτείται χρόνος kτ+(n-)τ = (k+n-)τ nk k όταν n >> Χωρίς διοχέτευση απαιτείται χρόνος nkτ (k + n )? Εντολές ος 2ος ος 4ος 5ος 6ος 7ος 8ος η IF ID OF EX WB 2η η 4η IF ID OF EX WB IF ID OF EX WB IF ID OF EX WB Κύκλοι Ρολογιού 5η IF ID OF EX 4 7

προς / από την κύρια µνήµη 2 ιαδροµή εδοµένων Mic- 2 Μονάδα Προσκό- µισης Εντολών (IFU) MBR2 MAR MDR PC MBR Β 2 Α CPP TOS OPC καταχωρητές πρόσβασης στη µνήµη B-REG A-REG H Data Path µε γραµµή διοχέτευσης Έλεγχος ALU C 6 ALU Ολισθητής C-REG 2 N Z 2 5 Επικαλυπτόµενη Εκτέλεση της SWAP Χωρίς επικάλυψη απαιτείται ισοδύναµος χρόνος 8 κύκλων! κύκλος κύκλος ανάγνωσης 4 µβήµα εξάρτηση στάση 2 κύκλοι (stalling) Με επικάλυψη κύκλοι Μηχανή Mic- Προσπέλαση της µνήµης σε ένα κύκλο ρολογιού! Α, Β, C = καταχωρητές διαύλων Mem = κύρια µνήµη 6 8

Λειτουργία Γραµµής ιοχέτευσης κύκλος 2 4 εντολή 2 4 7 προς / από την κύρια µνήµη 2 2 Μονάδα Προσκόµισης Εντολών (IFU) Η Μηχανή Mic-4 Καταχωρητές (Register File) ν ιαδροµή εδοµένων (Data Path) C 2 Μονάδα Αποκωδικοποίησης Β B-REG 2 Α ALU Ολισθητής C-REG A-REG Οδηγεί το στάδιο 4 Οδηγεί το στάδιο 5 Οδηγεί το στάδιο 6 Μονάδα Ελέγχου Μνήµη Ελέγχου Ουρά µεντολών ALU C M A B ALU C M A B ALU C M A B ALU C M A B Οδηγεί το στάδιο 7 MΙR MΙR2 MΙR MΙR4 8 9

ΚΡΥΦΗ ΜΝΗΜΗ 9 Κρυφή Μνήµη Chip CPU Κρυφή Μνήµη Κύρια Μνήµη ίαυλος Η ταχύτητα της κύριας µνήµη υπολείπεται κατά πολύ αυτής της CPU. Η CPU απαιτεί: µικρό λανθάνοντα χρόνο (latency καθυστέρηση προσκόµισης τελεστέου) και µεγάλο εύρος ζώνης (bandwidth ποσότητα παρεχόµενων δεδοµένων ανά µονάδα χρόνου) Λύση: χρήση µιας µικρής, γρήγορης αλλά υψηλού κόστους µνήµης (SRAM) µεταξύ της κύριας µνήµης και του επεξεργαστή, η οποία ονοµάζεται κρυφή µνήµη (cache). Ηκρυφή µνήµη οργανώνεται συνήθως σε επίπεδα (L, L2, ) και αποθηκεύει προσωρινά πληροφορία συχνά χρησιµοποιούµενη από τον επεξεργαστή. Οι κρυφές µνήµες είναι γενικά εγκλειστικές, δηλ. όλα τα περιεχόµενα της L cache υπάρχουν στην L2 και όλα τα περιεχόµενα της L2 υπάρχουν στην L κ.ο.κ Οργάνωση Υπολογιστικών Συστηµάτων ΙΙ 40 20

Αρχές Τοπικότητας Χωρική τοπικότητα (spatial locality): αν η CPU προσπελάσει µια θέση µνήµης, τότε µε µεγάλη πιθανότητα θα προσπελάσει και τις γειτονικές της (π.χ. θέσεις κοντά στην κορυφή της στοίβας ή εντολές µέσα σε βρόχο). Χρονική τοπικότητα (temporal locality): αν η CPU προσπελάσει µια θέση µνήµης, τότε µε µεγάλη πιθανότητα θα την ξαναπροσπελάσει άµεσα στο µέλλον (καθορίζει τι θα διαγραφεί από την cache). Αρχές λειτουργίας της cache: εδοµένα που τοποθετούνται στην cache διατηρούνται για µεγάλο χρονικό διάστηµα (λόγω χρονικής τοπικότητας). Στην cache µεταφέρονται ολόκληρες ενότητες (block) δεδοµένων και όχι απλές λέξεις (λόγω χωρικής τοπικότητας). Οι αποθηκευµένες ενότητες στην cache ονοµάζονται γραµµές κρυφής µνήµης (cache lines) υποδιαιρέσεις της κύριας µνήµης. Π.χ. cache µε γραµµή 64byte: µια αναφορά στη διεύθυνση µνήµης 260 θα επιφέρει µεταφορά των διευθύνσεων από 256 9. Οργάνωση Υπολογιστικών Συστηµάτων ΙΙ 4 Θέµατα οµής και Οργάνωσης Cache Χωρητικότητα της κρυφής µνήµης, καθώς το κόστος είναι υψηλό. Μέγεθος της γραµµής κρυφής µνήµης, καθώς η καθυστέρηση µεταφοράς ενός block από την κύρια µνήµη είναισηµαντική. Οργάνωση της κρυφής µνήµης για τη διαχείριση της πληροφορίας. Τρόπος αποθήκευσης των δεδοµένων στην κρυφή µνήµη: Ενοποιηµένος (unified), εντολές & τελούµενα στο ίδιο τµήµα ιαµερισµένος (split), ξεχωριστά τµήµατα για εντολές & τελούµενα Αριθµός κρυφών µνηµών, καθώς χρησιµοποιούνται ευρύτατα σήµερα πολλαπλά επίπεδα (levels) κρυφής µνήµης (L, L2, L,...), εντός και εκτός του τσιπ του επεξεργαστή. Data cache Instruction cache Motherboard ιαµερισµένη L cache Οργάνωση Υπολογιστικών Συστηµάτων ΙΙ 42 2

Κρυφή Μνήµη Άµεσης Χαρτογράφησης 2048 2byte = 64ΚB Έγκυρο Ετικέτα εδοµένα ιευθύνσεις που χρησιµοποιούν την καταχώριση Καταχωρίσεις (2048=2 ) 2 bt byte Γραµµή κρυφής µνήµης (cache line) Εικονική δ/νση των 2-bit Ετικέτα Direct Mapped Cache Προσδιορίζει την γραµµή της κύριας µνήµης από την οποία προέρχονται τα δεδοµένα είχνει ποια καταχώριση της κρυφής µνήµης περιέχει τα δεδοµένα είχνει τη λέξη της γραµµής είχνει το byte της λέξης 4 Κρυφή Μνήµη Άµεσης Χαρτογράφησης Τέλος 2 6 - Line M, 2047 Line M, 2046 Line M, 2 Line M, Line M, 0 2 bytes Line 2, 2047 Line 2, 2046 Line 2, 2 Line 2, Line 2, 0 Line, 2047 Line, 2046 Μνήµη (4GB) M=2 6 Λέξη (Word) Γραµµή κρυφής µνήµης 64ΚΒ Ετικέτα (Tag) 0 0 Αρχή Line, 2 Line, Line, 0 Line, 2047 Line, 2046 Line,2 Line, Line,0 Line 2, 2047 Line 2, 2046 Line 2,2 Line 2, Line 2,0 Εικονική ιαµέριση Μνήµης ιεύθυνση 2 6 - M 8 Λέξεις = 2 bytes 6bit Line M, 2047 Line M, 2046 Line M,2 Line M, Line M,0 2 bit Byte Tag Line Word 2047 2046 2 0 bit bit 2bit Κρυφή Μνήµη 64ΚΒ V Tag Data 4 Line 4, 2047 0 22 Line 22, 2046 0 70 45 4275 2 Line 70, Line 45, 2 Line 4275, Line 2, 0 Μη έγκυρες γραµµές κρυφής µνήµης Αδιάφορες τιµές 44 22

Επιτυχία/Αποτυχία Κρυφής Μνήµης Όταν η CPU δίνει µια δ/νση µνήµης, το υλικό εξάγει τα -bit του πεδίου LINE και τα χρησιµοποιεί ως δείκτη θέσης στην cache για να βρει µια καταχώρηση. Αν η καταχώρηση είναι έγκυρη και το πεδίο ετικέτας συµφωνεί µε το καταχωρηµένο στην cache, τότε η cache περιέχει την ζητούµενη λέξη και έχουµε επιτυχία κρυφής µνήµης ή (cacheh hit). Ηλέξηχρησιµοποιείται χωρίς πρόσβαση στην κύρια µνήµη. Αν η καταχώρηση είναι άκυρη ή οι ετικέτες δεν ταιριάζουν τότε η λέξη δεν υπάρχει στην cache και έχουµε αποτυχία κρυφής µνήµης (cache miss). Ηγραµµή κρυφήςµνήµης των 2-byte προσκοµίζεται από την κύρια µνήµη και αποθηκεύεται στην συγκεκριµένη καταχώρηση της cache αντικαθιστώντας ότι υπήρχε σε αυτή. Αν η υπάρχουσα καταχώρηση έχει νωρίτερα τροποποιηθεί πρέπει να γραφεί στην κύρια µνήµη πρινδιαγραφεί. Το µη ταίριασµα ετικετών ονοµάζεται σύγκρουση κρυφής µνήµης (cache collision) Για αύξηση της ταχύτητας, η ζητούµενη λέξη στην καταχώρηση της cache αποστέλλεται στη CPU πριν ακόµη γίνει η σύγκριση της ετικέτας για τον προσδιορισµό της επιτυχίας ή της αποτυχίας κρυφής µνήµης. 45 Συνολοσυνειρµική Κρυφή Μνήµη n = 4 Καταχωρίσεις 2 byte 2 byte 2 byte 2 byte Σύνολο Καταχωρίσεων Α Σύνολο Καταχωρίσεων Β Σύνολο Καταχωρίσεων C Σύνολο Καταχωρίσεων D Μια κρυφή µνήµη που περιέχει (n) γραµµές κρυφής µνήµης στην κάθε καταχώρηση της κρυφής µνήµης ονοµάζεται συνολοσυνειρµική κρυφή µνήµη (n) δρόµων (n-way set-associative cache). Όταν προσκοµίζεται µια νέα καταχώριση πρέπει να αποφασιστεί ποιά από τις υπάρχουσες καταχωρίσεις θα διαγραφεί. Πρακτική επιλογή η λιγότερο πρόσφατα χρησιµοποιούµενη (least recently used LRU) καταχώρηση. Απαιτούνται πρόσθετα bits για το ιστορικό χρήσης κάθε γραµµής κρυφής µνήµης. 46 2

Τέλος 2 6 - Συνολοσυνειρµική Κρυφή Μνήµη Line Μ, 2047 Line Μ, 2046 Line Μ, 2 Line Μ, Line Μ, 0 Μνήµη (4GB) M=2 6 ιεύθυνση 2 bit 0 Αρχή 2 bytes Line 2, 2047 Line 2, 2046 Line 2, 2 Line 2, Line 2, 0 Line, 2047 Line, 2046 Line, 2 Line, Line, 0 Γραµµή κρυφής µνήµης 64ΚΒ Tag Line Word 6bit bit bit 2bit Κρυφή Μνήµη 256ΚΒ V Tag Data V Tag Data V Tag Data V Tag Data 55 Line 55, 2047 0 8 Line 8, 2047 4 Line 4, 2047 Line, 2047 0 Line, 2046 0 9 Line 9, 2046 76 Line 76, 2046 62 Line 62, 2046 0 0 40 002 7 407 Line 40, Line 002, 2 Line 7, Line 407, 0 0 0 46 46 4 26 Line 46, Line 46, 2 Line 4, Line 26, 0 705 76 6275 Line 705, Line 76, 2 Line 6275, Line, 0 0 529 62 475 2 Συνολοσυνειρµική κρυφή µνήµη 4 δρόµων Line 529, Line 62, 2 Line 475, Line 967, 0 47 Θέµατα Λειτουργίας Κρυφής Μνήµης Όταν γίνεται πράξη εγγραφής λέξης στην cache πρέπει να ενηµερωθεί και το αντίγραφο της λέξης στην κύρια µνήµη πριν διαγραφεί η σχετική γραµµή κρυφής µνήµης: άµεση ενηµέρωση της καταχώρισης στην κύρια µνήµη (διεγγραφή write through). h) o απλούστερη υλοποίηση, o αξιόπιστη λειτουργία, o µεγάλη κυκλοφορία δεδοµένων στους διαύλους (καθυστερήσεις) εναλλακτική πρακτική η αναβολή εγγραφής ή υστερεγγραφή (write-back) o ανάγκη για επιπλέον bit προσδιορισµού του αν η γραµµή κρυφής µνήµης είναι τροποποιηµένη χωρίς ενηµέρωση της κύριας µνήµης. Όταν γίνεται πράξη εγγραφής λέξης σε θέση που δεν υπάρχει την παρούσα στιγµή στηνcache, τότε δύο εναλλακτικές: έγγραφή των δεδοµένων στην κύρια µνήµη (άρα διεγγραφή), µεταφορά της σχετικής γραµµής κρυφής µνήµης από την κύρια µνήµη στην cache και εγγραφή της λέξης (τοποθέτηση κατά την εγγραφή write allocation). Η συνήθης πρακτική είναι η εγγραφή της λέξης να γίνεται αρχικά µόνο στην cache (συνεπώς έχουµε υστερεγγραφή). 48 24

Προσδιορισµός Μεγεθών Έστω δίαυλος εκτός CPU µε εύρος ζώνης (bandwidth δηλ. διακίνηση λέξεων στη µονάδα του χρόνου) 2GB/sec=2 0 Β/sec. Να υπολογιστεί το ποσοστό του εύρους ζώνης που απαιτεί η CPU απότοδίαυλοκατάτηνεπικοινωνίατηςµε την κύρια µνήµη όταν: Ορυθµός αιτήσεων ανάγνωσης/εγγραφής της CPU είναι 2 22 /sec Το 75% των αιτήσεων της CPU είναι αναγνώσεις (και συνεπώς το υπόλοιπο 25% εγγραφές) Το ποσοστό επιτυχίας (hit ratio) της cache είναι 90% Το µέγεθος της γραµµής κρυφής µνήµης είναι 64Βytes Η cache χρησιµοποιεί πρωτόκολλο υστεροεγγραφών (write back) µε τοποθέτηση κατά την εγγραφή (write allocate) Πως θα αλλάξει το ποσοστό όταν το πρωτόκολλο είναι διεγγραφή (write through) µε τοποθέτηση κατά την εγγραφή (write allocate); 49 Υπολογισµός /2 Επιτυχής ανάγνωση στην cache: o ποσοστό 0.9 0.75 = 0.675 (67.5%) o διακίνηση 0bytes Αποτυχηµένη ανάγνωση στην cache : o ποσοστό 0. 0.75 = 0.075075 (7.5%) o διακίνηση 64 bytes Επιτυχής εγγραφή στην cache : o ποσοστό 0.9 0.25 = 0.225 (22.5%) o διακίνηση 0bytes Αποτυχηµένηεγγραφήστηνcache : o ποσοστό 0. 0.25 = 0.025 (2.5%) o διακίνηση 64 bytes Ο πραγµατικός ρυθµός διακίνησης δεδοµένων είναι: o στο 0% (7.5% + 2.5%) των αιτήσεων έχουµε διακίνηση 0. 28 bytes/αίτηση, συνεπώς: 2 22 αιτήσεις/sec 0. 28 bytes/αίτηση =0. 2 29 bytes/ sec Το χρησιµοποιούµενο εύρος ζώνης είναι: 0. 2 = 0. 05 ή 5% 0 2 29 50 25

Υπολογισµός 2/2 Επιτυχής ανάγνωση στην cache: o ποσοστό 0.9 0.75 = 0.675 (67.5%) o διακίνηση 0bytes Αποτυχηµένη ανάγνωση στην cache : o ποσοστό 0. 0.75 = 0.075075 (7.5%) o διακίνηση 64 bytes Επιτυχής εγγραφή στην cache : o ποσοστό 0.9 0.25 = 0.225 (22.5%) o διακίνηση 64 bytes (εγγραφή στην cache µεταφορά στη µνήµη) Αποτυχηµένηεγγραφήστηνcache : o ποσοστό 0. 0.25 = 0.025 (2.5%) o διακίνηση 28 bytes (µεταφορά από τη µνήµη εγγραφή στην cache µεταφορά στη µνήµη) διεγγραφή Ο πραγµατικός ρυθµός διακίνησης δεδοµένων είναι: o στο 2.5% (7.5% + 2.5% + 22.5%) των αιτήσεων έχουµε διακίνηση 0.25 256 bytes/αίτηση, συνεπώς: 2 22 αιτήσεις/sec 0.25 256 bytes/αίτηση =0.25 2 0 bytes/sec 0. 25 2 Το χρησιµοποιούµενο εύρος ζώνης είναι: = 0. 25 ή 2. 5% 0 2 0 5 ΠΡΟΓΝΩΣΗ ΔΙΑΚΛΑΔΩΣΕΩΝ 52 26

CLK οµές ιοχέτευσης IF ID OF EX WB Καταχωρητής Καταχωρητής Καταχωρητής D 0 Q 0 Μονάδα D Q Μονάδα D 2 Q 2 Μονάδα D Q Μονάδα D 4 Q 4 D 5 Q αποκωδικοποίησης Μονάδα 5 προσκόµισης προσκόµισης εκτέλεσης εγγραφής εντολής τελεστέων εντολής αποτελέσµατος εντολής Καταχωρητής Καταχωρητής Καταχωρητής Για µονάδα µε k στάδια όπου κάθε στάδιο έχει χρόνο απόκρισης τ και εκτελούνται σε αυτή n εντολές, έχουµε: Επιτάχυνση : Χρόνος εκτέλεσης µεδιοχέτευση: kτ+(n-)τ = (k+n-)τ nk Χρόνος εκτέλεσης χωρίς διοχέτευση: nkτ k όταν n >> (k + n ) Τι συµβαίνει όµως στην περίπτωση διακλαδώσεων; Εντολές η 2η η 4η ος 2ος ος 4ος 5ος 6ος 7ος 8ος IF ID OF EX WB IF ID OF EX WB IF ID OF EX WB IF ID OF EX WB Κύκλοι Ρολογιού 5η IF ID OF EX 5 Pipelining & Εντολές ιακλάδωσης Η επιτάχυνση που προσφέρει µια δοµή διοχέτευσης ισχύει όταν οι εντολές εκτελούνται σειριακά, η µία µετά την άλλη, που είναι και η συνήθης περίπτωση. Όµως υπό την παρουσία εντολών διακλάδωσης (άλµατος) µπορούν να δηµιουργηθούν άλµατα και η σειριακή εκτέλεση των εντολών καταστρατηγείται! Άλµατα χωρίς συνθήκη (π.χ. GOTO):όπου η επόµενη εντολή δεν είναι αυτή που έχει προσκοµιστεί στην pipeline. Άλµατα υπό συνθήκη (π.χ. IFEQ, IF_ICMPEQ): όπου η επόµενη εντολή ίσως να είναι αυτή που έχει προσκοµιστεί στην pipeline. if (i==0) k=; ILOAD IFEQ i label_then else BIPUSH 2 20% εντολές διακλάδωσης k=2; GOTO label_store label_then: BIPUSH label_store: ISTOR E k Στην περίπτωση που θα ενεργοποιηθεί µια διακλάδωση, οι εντολές που έχουν ήδη προσκοµιστεί στην pipeline δεν είναι οι σωστές και θα πρέπει να απορριφθούν (flush) και να προσκοµιστούν νέες εντολές από τη θέση του κώδικα στην οποία έγινε η διακλάδωση απώλεια κύκλων ρολογιού. 54 27

Άλµατα χωρίς Συνθήκη Στην περίπτωση των διακλαδώσεων χωρίς συνθήκη το πρόβληµα είναι σχετικά µικρό καθώς η εντολή αποκωδικοποιείται στο δεύτερο στάδιο. Μέγιστη απώλεια ενός κύκλου. Αυτός ο κύκλος µπορεί να κερδηθεί µε βοήθεια από το µεταφραστή, όπου µε κατάλληλη αναδιάταξη των εντολών, η επόµενη εντολή που έχει ήδη προσκοµιστεί, δεν θα απορριφθεί και θα εκτελεστεί κανονικά! Αρχικός κώδικας ILOAD i ILOAD i Νέος κώδικας ILOAD j Παρέµβαση µεταφραστή ILOAD j ADD GOTO label GOTO label ADD label: l BIPUSH SWAP label: l BIPUSH SWAP Μεταφορά της εντολής πριν τη διακλάδωση, στη θέση µετά τη διακλάδωση (θυρίδα διακλάδωσης delay slot). Η εντολή θα προσκοµιστεί και θα εκτελεστεί σωστά και ακολούθως θα εκτελεστεί η πρώτη εντολή στη θέση της διακλάδωσης (label). Αν αυτή η αλλαγή δεν είναι εφικτή, εισάγεται µια εντολή NOP (no operation) µετά την εντολή διακλάδωσης. 55 Άλµατα υπό Συνθήκη Στην περίπτωση των διακλαδώσεων υπό συνθήκη το πρόβληµα είναι µεγάλο καθώς η απόφαση θα παρθεί σε µεθεπόµενο στάδιο της pipeline. Π.χ. για την εντολή IF_ICMPEQ η διακλάδωση θα καθοριστεί στο στάδιο της εκτέλεσης, που στο προηγούµενο µ παράδειγµα της µηχανής 5 σταδίων είναι το 4 ο στάδιο. Συνεπώς, µέχρι και εντολές µπορεί να έχουν αρχίσει να εκτελούνται ενώ δεν θα έπρεπε. Υπάρχουν µηχανές όπου η συνθήκη διακλάδωσης λαµβάνει υπόψιν της το αποτέλεσµα προηγούµενης εντολής. Για να αποφύγουµε την λανθασµένη εκτέλεση του προγράµµατος εξ αιτίας της εκτέλεσης εντολών που δεν προβλέπονται στην τρέχουσα ροή, απαιτείται να βρεθούν λύσεις διαχείρισης των διακλαδώσεων υπό συνθήκη. Σά Στάση (stall) εκτέλεσης εντολών Καθυστερηµένη διακλάδωση (delayed branching) Πρόγνωση διακλάδωσης (branch prediction) Χρήση ειδικών εντολών 56 28

Στάση Εκτέλεσης Μια πρώτη απλή λύση είναι η αναστολή προσκόµισης εντολών (στάση stall) από την µονάδα προσκόµισης (instruction fetch unit - IFU) µόλις εντοπιστεί (αποκωδικοποιηθεί) µια εντολή άλµατος υπό συνθήκη. Πρόβληµα, η σηµαντική µείωση των επιδόσεων: Αν σε µηχανή k σταδίων, το στάδιο της εκτέλεσης είναι το k-, τότε σε περίπτωση υπό συνθήκη διακλάδωσης θα χαθούν k-2 κύκλοι. Αν Ρ b είναι η πιθανότητα µία εντολή να είναι εντολή υπό συνθήκη διακλάδωσης, τότε στο συνολικό αριθµό κύκλων για την εκτέλεση n εντολών στην pipeline (n+k-), θα προστεθούν (np b )(k-2) κύκλοι. Συνεπώς, ηεπιτάχυνσησεσχέσηµε τηµη χρήση διοχέτευσης θα είναι: nk k η οποία τείνει στο n + k + np (k 2) + P (k 2) b b όταν n >> Για k=5 και Ρ b =0.6, προκύπτει ότι η επιτάχυνση θα είναι ~,8 αντί για 5. ηλ. µε ένα ποσοστό 6% των εντολών να είναι εντολές υπό συνθήκη διακλάδωσης, έχουµε µείωση των επιδόσεων κατά 2,5%! Συνεπώς, η στάση δεν είναι η ιδανική επιλογή. 57 Καθυστερηµένα Άλµατα Η CPU δεν σταµατά την εκτέλεση των εντολών όταν εντοπιστεί µια εντολή υπό συνθήκη διακλάδωσης. Όπως και στην περίπτωση των διακλαδώσεων χωρίς συνθήκη, απαιτείται βοήθεια από το µεταφραστή για την αναδιάταξη των εντολών. Έτσι στην περίπτωση µηχανής όπου το στάδιο εκτέλεσης είναι το 5 ο στάδιο, ο µεταφραστής µεταφέρει µέχρι και 4 εντολές µετά την εντολή διακλάδωσης, οι οποίες ήταν πριν τη συγκεκριµένη εντολή, εφ όσων αυτό είναι εφικτό. Σε άλλη περίπτωση µεταφέρει όσες εντολές είναι εφικτό ( ) και συµπληρώνει µε NOP, αλλιώς εισάγει µόνο εντολές NOP. Αρχικός κώδικας ILOAD i Παρέµβαση µεταφραστή ILOAD k Νέος κώδικας ILOAD j IFEQ label ADD ILOAD i label: ILOAD IFEQ POP ISTORE k SUB ISTORE k k label label: ILOAD j ADD NOP POP ISTORE k SUB ISTORE k 58 29

Πρόγνωση Η CPU προβλέπει την ικανοποίηση ή όχι της συνθήκης διακλάδωσης και είτε συνεχίζει µε την εκτέλεση των επόµενων εντολών είτε συνεχίζει µε την εκτέλεση των εντολών από τη θέση που καθορίζεται στην εντολή διακλάδωσης. Αν η πρόγνωση είναι λανθασµένη, η pipeline αδειάζει και προσκοµίζονται οι σωστές εντολές. ιαµόρφωση των επιδόσεων: Έστω πάλι µηχανή k σταδίων, όπου το στάδιο της εκτέλεσης είναι το k-. Αν Ρ b είναι η πιθανότητα εντολής υπό συνθήκη διακλάδωσης και Ρ p η πιθανότητα λανθασµένης πρόβλεψης, τότε το πρόσθετο κόστος των (nρ b )(k-2) κύκλων θα υπάρξει µόνο σε ποσοστό Ρ p. Οσυνολικόςαριθµός τωνκύκλωνγιατηνεκτέλεσηn εντολών στην pipeline θα είναι: (n+k-)+nρ b Ρ p (k-2) κύκλοι. Συνεπώς, ηεπιτάχυνσησεσχέσηµε τηνµη χρήση διοχέτευσης θα είναι: nk k τείνει στο όταν n >> n + k + np P (k 2) + P P (k 2) b p p b p Για k=5, Ρ b =0.6 και Ρ p =0.5, προκύπτει ότι η επιτάχυνση θα είναι ~4 αντί για 5. ηλ. η µείωση των επιδόσεων περιορίζεται σε ~20%, παρόλο που µε Ρ p =0.5 η πρόγνωση είναι ισοδύναµη µε κορώνα/γράµµατα!! 59 Τεχνικές Πρόγνωσης Οι τεχνικές πρόγνωσης διακρίνονται σε δύο γενικές κατηγορίες: Στατικές: προκαθορισµένες ανεξάρτητες του εκτελούµενου προγράµµατος. υναµικές: επανακαθορίζονται κατά τη διάρκεια της εκτέλεσης. Στατική πρόγνωση: Ποτέ δεν ικανοποιείται η συνθήκη διακλάδωσης (never-taken). Η απλούστερη επιλογή καθώς δεν τροποποιείται η pipeline. Πάντα ικανοποιείται η συνθήκη διακλάδωσης (always-taken). Απαιτείται έξυπνη IFU η οποία πάντα φέρνει εντολές από τον προορισµό της διακλάδωσης. Η συνθήκη διακλάδωσης προς τα πίσω ικανοποιείται πάντα ενώ η συνθήκη διακλάδωσης προς τα εµπρός δεν ικανοποιείται ποτέ (backward- always-taken and forward-never-taken). Τα άλµατα προς τα πίσω (προς εντολές σε προηγούµενες διευθύνσεις µνήµης) έχουν µεγάλη πιθανότητα καθώς οι διακλαδώσεις συχνά είναι στο τέλος ενός βρόχου. Η συνθήκη για τα άλµατα προς τα εµπρός είναι πιο αµφίβολη αν και συχνά επαληθεύεται καθώς αφορά έλεγχο συνθηκών σφάλµατος. 60 0

Αποτυχία Πρόγνωσης Αν η πρόγνωση είναι επιτυχής, τότε απλά η εκτέλεση συνεχίζεται κανονικά από τη διεύθυνση προορισµού. Όταν η πρόγνωση είναι λανθασµένη, η δυσκολία έγκειται στο να αναιρεθούν οι εντολές που ήδη εκτελέστηκαν ενώ δεν έπρεπε. Λύση: Οι εντολές που προσκοµίζονται µετάά από µια εντολή διακλάδωσης υπό συνθήκη εκτελούνται κανονικά µέχρι να επιχειρήσουν να µεταβάλουν την κατάσταση της µηχανής (να µεταβάλλουν την τιµή ενός καταχωρητή). Ο καταχωρητής δεν µεταβάλλεται αλλά χρησιµοποιείται ένας καταχωρητής ειδικού σκοπού για να την προσωρινή αποθήκευση της κατάστασης µέχρι να διευκρινιστεί η επιτυχία της πρόγνωσης. Αν η πρόγνωση είναι σωστή, τότε το αποτέλεσµα αντιγράφεται από τον καταχωρητή ειδικού σκοπού στον κανονικό καταχωρητή. Ητιµή του καταχωρητή που πρέπει να αλλάξει µεταφέρεται σε έναν καταχωρητή ειδικού σκοπού ώστε να µπορεί η µηχανή να επανέλθει στην πρότερη κατάσταση. Ακολούθως η τιµή του καταχωρητή µεταβάλλεται. Και οι δύο λύσεις είναι πολύπλοκες στην υλοποίηση και δεν καλύπτουν διαδοχικές υπό συνθήκη διακλαδώσεις πριν γίνει γνωστό αν η πρόβλεψη της πρώτης διακλάδωσης ήταν σωστή ή όχι. 6 υναµική Πρόγνωση /2 Με στόχο την ακρίβεια των προγνώσεων, η CPU διατηρεί ένα πίνακα ιστορικού όπου καταγράφει τις υπό συνθήκη διακλαδώσεις καθώς εµφανίζονται. Η καταχώρηση περιέχει τη διεύθυνση της εντολής διακλάδωσης µαζί µε ένα ή περισσότερα bit που προσδιορίζουν αν η διακλάδωση πραγµατοποιήθηκε την προηγούµενη φορά που εκτελέστηκε η εντολή. Ως πρόγνωση θεωρούµε ότι η διακλάδωση θα ακολουθήσει τη ίδια πορεία µε την προηγούµενη φορά. Αν η πρόγνωση βγει λανθασµένη αλλάζει η τιµή του bit στον πίνακα. Συχνά ο πίνακας ιστορικού κρατάει και τη διεύθυνση προορισµού του άλµατος. Παρόµοια οργάνωση µε την κρυφή µνήµη! 62

υναµική Πρόγνωση 2/2 Αν µια διακλάδωση βρεθεί στον πίνακα ιστορικού τότε το bit πρόγνωσης χρησιµοποιείται για την πρόγνωση της διακλάδωσης. Αν η διακλάδωση δεν βρεθεί στον πίνακα µπορεί να χρησιµοποιηθεί προσωρινά άλλος κανόνας (π.χ. κανόνας στατικής πρόγνωσης) και η διακλάδωση προστίθεται στον πίνακα. Υπάρχει ένα συστηµατικό πρόβληµα: Στην έξοδο από έναν βρόχο λογικά η πρόβλεψη είναι λανθασµένη και το bit θα αλλάξει. Την επόµενη φορά που θα εκτελεστεί ο βρόχος, ηπρόγνωσηστοτέλος της πρώτης επανάληψης θα είναι λάθος. Η διαδοχική είσοδος/έξοδος στο βρόχο δηµιουργεί πρόβληµα. Λύση: η παραχώρηση δεύτερης ευκαιρίας. Η πρόγνωση αλλάζει µόνο µετά από δύο διαδοχικές αποτυχίες. Χρήση 2bitπρόγνωσης, ένα για το τι έγινε και ένα για το τι πρέπει να γίνει. 6 Πρόγνωση µε Χρήση FSM Εναλλακτική χρήση µηχανής πεπερασµένων καταστάσεων (FSM) για τον καθορισµό τωνbit πρόγνωσης. Αλλαγή πρόγνωσης συµβαίνει µόνο αν υπάρξουν δύο λανθασµένες προγνώσεις στη σειρά. Όχι ιακλάδωση ιακλάδωση 00 0 0 Πρόγνωση µη διακλάδωσης Όχι 2 η πρόγνωση µη διακλάδωσης 2 η πρόγνωση διακλάδωσης Όχι Πρόγνωση διακλάδωσης ιακλάδωση ιακλάδωση Όχι ιακλάδωση ιακλάδωση 64 2

Ειδικές Εντολές Χρήση ειδικών εντολών και βοήθεια από το µεταφραστή (π.χ. UltraARC-II). Οι εντολές έχουν ένα πρόσθετο bit πρόγνωσης. Ο µεταφραστής εκτιµά κάθε εντολή διακλάδωσης ανάλογα µε το βρόχο στον οποίο συµµετέχει και καθορίζει την τιµή τουbit (/0) ανάλογα µε το αν η πρόβλεψη άλµατος είναι θετική ή όχι. Εναλλακτικά, χρήση προσοµοιωτή εκτέλεσης του προγράµµατος για τη συλλογή πληροφορίας που θα βοηθήσει τον µεταφραστή στον καθορισµό του bit πρόγνωσης. 65 Εξαρτήσεις σε οµές ιοχέτευσης Υπάρχουν διάφορα είδη εξαρτήσεων (hazards) σε µια pipeline: οµικές: αφορούν συγκρούσεις µεταξύ σταδίων για την χρήση του υλικού επανάληψη του υλικού για κάθε στάδιο κόστος Ελέγχου: αφορούν τα άλµατα µ (διακλαδώσεις) στη ροή εκτέλεσης χρήση τεχνικών πρόγνωσης εδοµένων: αφορούν εξαρτήσεις µεταξύ των τελεστέων (δεδοµένων) που διαχειρίζονται οι εντολές στην pipeline, π.χ. αλλαγή αποτελεσµάτων τα οποία δεν έχουν ακόµη χρησιµοποιηθεί. χρήση ειδικού σκοπού, κρυφών-µυστικών, καταχωρητών για την προσωρινή αποθήκευση αποτελεσµάτων εκτέλεση εκτός σειράς: εκτέλεση µε αναδιάταξη των εντολών καθώς πολλές φορές η αναδιάταξη αποτρέπει τις εξαρτήσεις. Επιπρόσθετα, καθώς οι εντολές δεν έχουν την ίδια διάρκεια, µπορεί να επιτραπούν για λόγους ταχύτητας οι ακόλουθες ενέργειες: o Απόσυρση εντολών εκτός σειράς, µε την έννοια της ολοκλήρωσης και αποχώρησης (out-of-order-retire) o Υποβολή εντολών εκτός σειράς (out-of-order-issue) 66

Εξαρτήσεις εδοµένων Εξαρτήσεις RAW (Read After Write ανάγνωση µετά από εγγραφή): όπου µια εντολή χρειάζεται να χρησιµοποιήσει ένα αποτέλεσµα που µια προηγούµενη εντολή δεν έχει ακόµη υπολογίσει. Εξαρτήσεις WAR (Write After Read εγγραφή µετάά από ανάγνωση): ) όπου µια εντολή επιχειρεί να γράψει σε ένα καταχωρητή που η ανάγνωσή του από µια προηγούµενη εντολή δεν έχει ακόµη τελειώσει. Εξαρτήσεις WAW (Write After Write εγγραφή µετά από εγγραφή): όπου µια εντολή επιχειρεί να γράψει σε ένα καταχωρητή που η εγγραφή του από µια προηγούµενη εντολή δεν έχει ακόµη τελειώσει. Οι εξαρτήσεις WAR και WAW µπορεί συχνά να εξαλειφθούν µε την τεχνική της µετονοµασίας καταχωρητών (register renaming). Σύµφωνα µε αυτή την τεχνική, η µονάδα αποκωδικοποίησης εντολών αλλάζει σε κάποιες εντολές τον χρησιµοποιούµενο καταχωρητή µε ένα κρυφό (στον προγραµµατιστή) καταχωρητή ώστε να αποφευχθούν οι ανωτέρω εξαρτήσεις όπου αυτό είναι εφικτό. 67 Εικαζόµενη Εκτέλεση Εικαζόµενη εκτέλεση (speculative execution) είναι η εκτέλεση κώδικα πριν καταστεί γνωστό αν θα χρειαστεί. Απαιτείται βοήθεια από τον µεταγλωττιστή και το υλικό. Πρόβληµα : πως ακυρώνονται τα αποτελέσµατα της εκτέλεσης αν αποδειχθεί τελικά ότι ο κώδικας δεν έπρεπε να εκτελεστεί; Χρήση καταχωρητών ειδικού σκοπού (κρυφοί καταχωρητές). Πρόβληµα 2: παρουσία παγίδων (traps) στον κώδικα. if (x>0) z=y/x (x, y, z µεταβλητές κινητής υποδιαστολής) Ηπροσκόµιση των µεταβλητών και η εκτέλεση της διαίρεσης πριν τον έλεγχο της ανισότητας (εικαζόµενη εκτέλεση µε ανύψωση κώδικα - hoisting), µε στόχο την επιτάχυνση της διαδικασίας, θα προκαλέσει παγίδα αν x = 0 και συνεπώς τερµατισµό του προγράµµατος!! Λύση: η χρήση ειδικών εκδόσεων των επικίνδυνων εντολών και ενός πρόσθετου bit δηλητηρίου (poison bit) στους καταχωρητές. Ηεντολήδεν προκαλεί παγίδα αλλά θέτει το bit δηλητηρίου στο στον καταχωρητή του αποτελέσµατος. Αν άλλη εντολή επιχειρήσει να διαβάσει τον καταχωρητή τότε προκαλείται παγίδα. Το bit καθαρίζεται µετά την ολοκλήρωση του ελέγχου της ανισότητας. 68 4