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

Σχετικά έγγραφα
ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

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

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

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

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

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

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

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

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86

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

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

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

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

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

Σημειώσεις για τον 80x86

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος

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

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 3 Έλεγχος Ροής Προγράμματος

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

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

Καταχωρητές & τμήματα μνήμης του Ματθές Δημήτριος Καθηγητής Πληροφορικής

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

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

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

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

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

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

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

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

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

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

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

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

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

6. Επιστροφή ελέγχου στο σημείο εκκίνησης

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

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 2 Addressing

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή

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

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

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

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

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

MIPS functions and procedures

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

Υποστήριξη διαδικασιών στο υλικό των υπολογιστών

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

ΜΑΘΗΜΑ: ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΘΕΜΑΤΑ ΙΟΥΝΙΟΥ 2014

Τελική Εξέταση, Απαντήσεις/Λύσεις

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

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

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

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

Τεχνολογίες ημιαγωγών. Chapter 2 Instructions: Language of the Computer 1

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

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

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

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

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών. Αρχιτεκτονική Συνόλου Εντολών (Instruction Set Architecture)

Αρχιτεκτονική Υπολογιστών. Αρχιτεκτονική Συνόλου Εντολών (Instruction Set Architecture)

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

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

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

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

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

Συναρτήσεις-Διαδικασίες

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

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

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

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

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

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

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

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

Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers)

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

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 2. Οργάνωση και διαχείριση της Πληροφορίας στον. Υπολογιστή

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

Transcript:

Γιώργος Δημητρίου Μάθημα 6 ο και 7 ο

Μοντέλα Συνόλων Εντολών Συσσωρευτή Επέκτασης συσσωρευτή Στοίβας Καταχωρητών γενικού σκοπού Μνήμης-μνήμης Καταχωρητή-μνήμης Καταχωρητή-καταχωρητή Κατηγοριοποίηση RISC & CISC

Διαφορές Μοντέλων Μέθοδοι διευθυνσιοδότησης μνήμης Απλές για μεγαλύτερη ταχύτητα Σύνθετες για ισχυρότερες εντολές Πολυπλοκότητα εντολών Απλές για ταχύτητα, κατανάλωση ενέργειας Σύνθετες για μικρότερο κώδικα Σήμερα κυριαρχεί η απλότητα

Διευθυνσιοδότηση Μνήμης Κατ ευθείαν διευθυνσιοδότηση διεύθυνση μνήμης Έμμεση διευθυνσιοδότηση δείκτης προς τη διεύθυνση μνήμης Σχετική διευθυνσιοδότηση έμμεση με μετατόπιση Δεικτοδοτούμενη διευθυνσιοδότηση με χρήση καταχωρητή-δείκτη Διευθυνσιοδότηση στοίβας Συνδυασμός των παραπάνω

Κατ ευθείαν Διευθυνσιοδότηση Εντολές μεταφοράς δεδομένων lda $34f7 (6502) Ε/Ε με απεικόνιση στη μνήμη, για τους περισσότερους επεξεργαστές Γραφικά με απεικόνιση στη μνήμη, όταν δεν υπήρχε κάρτα ούτε μνήμη γραφικών Αλλά και εντολές άλματος jsr printf (6502) Προορισμός πιθανά με ετικέτα

Έμμεση Διευθυνσιοδότηση Μέσω καταχωρητή Μέσω μνήμης add ($4),$2 (68000) lw $8,24($5) (MIPS) lda ($5f04) (6502)

Σχετική Διευθυνσιοδότηση Μετατόπιση στην προσπέλαση μνήμης αναφορά σχετική με καταχωρητή lw $5, -204($22) (MIPS) Μετατόπιση σε εντολή διακλάδωσης αναφορά σχετική με μετρητή προγράμματος beq $2, $12, L100 (MIPS) bcs.-5 (6502)

Χρήση Καταχωρητή-Δείκτη Καταχωρητής που περιέχει μέρος ή όλη τη μετατόπιση μιας διευθυνσιοδότησης lda $250c,X (6502) move ($5,$8), ($10,$12) (68000) lwx $10, -8($5,$8) (PowerPC) πολλές φορές ο καταχωρητής-δείκτης αυξάνεται ή μειώνεται αυτόματα πχ σε άλματα υπό συνθήκη (68000, PowerPC) dbra $8, L (68000)

Διευθυνσιοδότηση Στοίβας στοίβας στοίβας Στοίβα στη μνήμη Υλοποίηση ελέγχου με υλικό Ειδικές εντολές ελέγχου pushl %ebx (IA-32) Υλοποίηση ελέγχου με λογισμικό lw $6, 104($sp) (MIPS)

Αφήνοντας το Μοντέλο του MIPS Θα δούμε εναλλακτικά μοντέλα συνόλων εντολών Κυρίως παλαιότερα Κάποιες φορές χρησιμοποιούνται και σήμερα Πολύπλοκες εντολές και διευθυνσιοδοτήσεις μνήμης Για πιο αργούς, αλλά πιο οικονομικούς και λιγότερο ενεργοβόρους επεξεργαστές

Αρχιτεκτονική Συσσωρευτή Ένας μοναδικός καταχωρητής αντί φακέλου καταχωρητών Δεν αρκεί, γι αυτό υλοποιήθηκε η επέκταση συσσωρευτή Καταχωρητές-δείκτες για διευθυνσιοδότηση μνήμης Γενικά δε χρησιμοποιείται σήμερα Εκτός ίσως από κάποιους ενσωματωμένους επεξεργαστές, αλλά και Intel

Αρχιτεκτονική Συσσωρευτή latch Συσσωρευτής b+c b Καταχωρητές Διευθύνσεων ΑΛΜ latch διεύθυνση Μνήμη a b+c Παράδειγμα κώδικα για τον υπολογισμό: a = b+c; load b ; ο συσσωρευτής είναι υπονοούμενο τελούμενο add c store a

Αρχιτεκτονική Συσσωρευτή Κώδικας πρόσθεσης διανυσμάτων ldx #0 ; X 0 Loop: load V1,X ; A V1[X] add V2,X ; A A + V2[X] store V3,X ; V3[X] A incx ; X X + 1 incx incx incx cmpx #400 ; S cmp (X == 400) bne Loop ; if (!S cmp ) goto Loop όπου V1, V2, V3 οι διευθύνσεις βάσης τριών διανυσμάτων 100 ακεραίων 32-bit, Α ο συσσωρευτής, Χ καταχωρητής-δείκτης και S cmp ψηφίο κατάστασης για συγκρίσεις

Στοίβα καταχωρητών αντί φακέλου και αντί συσσωρευτή Πιο γρήγορη προσπέλαση από φάκελο καταχωρητών Ευελιξία για προσωρινή αποθήκευση στην αποτίμηση εκφράσεων Όχι όμως τόση ευελιξία όση έχουμε με ΦΚ Χρησιμοποιείται σε επιμέρους δομές του επεξεργαστή Υλικό κινητής υποδιαστολής Intel Αλλά και Java Virtual Machine Αρχιτεκτονική Στοίβας

Αρχιτεκτονική Στοίβας latch latch Στοίβα ΑΛΜ latch c b+c b sp Μνήμη a b+c Παράδειγμα κώδικα για τον υπολογισμό: a = b+c; push b ; Η στοίβα είναι υπονοούμενο τελούμενο push c add pop a

Αρχιτεκτονική Στοίβας Κώδικας υπολογισμού παράστασης push A push B push C add push D mult sub pop E ; MEM[A] S[sp++] ; MEM[B] S[sp++] ; MEM[C] S[sp++] ; S[--sp] + S[--sp] S[sp++] ; MEM[D] S[sp++] ; S[--sp] * S[--sp] S[sp++] ; S[--sp] - S[--sp] S[sp++] ; S[--sp] MEM[E] όπου A,B,C,D,E οι διευθύνσεις πέντε ακέραιων μεταβλητών, S η στοίβα και sp ο δείκτης κορυφής της στοίβας Προσοχή: Ο sp υλοποιείται στο υλικό και δεν είναι ορατός στον κώδικα! Ποια παράσταση υπολογίζεται;

Αρχιτεκτονικές ΚΓΣ Μνήμης-μνήμης VAX Καταχωρητή-μνήμης ΙΑ-32, 68000 και άλλοι παλαιότεροι επεξεργαστές Φόρτωσης-αποθήκευσης MIPS, ARM, POWERPC, SPARC και οι περισσότεροι σύγχρονοι επεξεργαστές

Αρχιτεκτονική Μνήμης-Μνήμης Κώδικας υπολογισμού της έκφρασης: C = A + B Πολύ απλά: add C,A,B

Αρχιτεκτονική ΚΓΣ-Μνήμης Κώδικας υπολογισμού της έκφρασης: C = A + B Λιγότερο απλά: load r1,a add r1,b store C,r1

Αρχιτεκτονικές RISC/CISC Απλού συνόλου εντολών (RISC): Απλές εντολές Ένας τρόπος διευθυνσιοδότησης μνήμης Σταθερό μήκος λέξης εντολής Πολύπλοκου συνόλου εντολών (CISC): Πολύπλοκες εντολές Πολλοί τρόποι διευθυνσιοδότησης μνήμης Μεταβλητό μήκος λέξης εντολής

Δύο Παραδείγματα ΙΑ-32 Μεταξύ αρχιτεκτονικής επέκτασης συσσωρευτή και ΚΓΣ-μνήμης JVM (Java Virtual Machine) Αρχιτεκτονική στοίβας αν και εικονική!

IA-32 Συνοπτικά Πολυπλοκότητα εντολών: Μέγεθος μεταβλητό από 1 μέχρι 17 bytes Μόνο δύο τελούμενα: το ένα είναι και εισόδου και εξόδου ADD EAX,EBX ; EAX = EAX+EBX Το ένα τελούμενο μπορεί να αναφέρεται στη μνήμη Σύνθετες μέθοδοι διευθυνσιοδότησης μνήμης Αιτία αυξημένης πολυπλοκότητας: Συμβατότητα! Ευτυχώς: Οι πιο συνήθεις εντολές υλοποιούνται εύκολα στο υλικό Οι μεταγλωττιστές αποφεύγουν τις πολύπλοκες (και άρα αργές) εντολές

IA-32 Καταχωρητές 16 8 8 ΚΓΣ AH BH CH AX BX CX AL BL CL EAX EBX ECX DH DX DL EDX ESI Δείκτες EDI EBP ESP CS SS Τμημάτων DS ES FS GS PC Κατάστασης EIP EFLAGS

IA-32 Διευθυνσιοδοτήσεις Άμεση (immediate) MOV EAX,10 ; EAX = 10 Κατ ευθείαν μνήμης (memory direct) MOV EAX,I ; EAX = Mem[i] Κατ ευθείαν καταχωρητή (register direct) MOV EAX,EBX ; EAX = EBX Έμμεση μέσω καταχωρητή (register indirect) MOV EAX,[EBX] ; EAX = Mem[EBX] Έμμεση με καταχ. βάσης και μετατόπιση 8 ή 32 bits MOV EAX,[EBX+8] ; EAX = Mem[EBX+8] Έμμεση με καταχ. βάσης και δείκτη με κλίμακα (0-3) MOV EAX,ECX[EBX]; EAX = Mem[EBX + 2 scale * ECX] Συνδυασμός των δύο προηγούμενων MOV EAX,ECX[EBX+8]

IA-32 Διευθυνσιοδοτήσεις Δε συνδυάζονται όλες οι μέθοδοι με όλες τις εντολές Το ένα τελούμενο πρέπει να είναι καταχωρητής Δε συνδυάζονται όλοι οι καταχωρητές με όλες τις εντολές Οι περιορισμοί οφείλονται στο πλήθος ψηφίων που κωδικοποιούν την εντολή

ΙΑ-32 Έλεγχος Κατάστασης Πολλές εντολές ορίζουν ψηφία ελέγχου στον καταχωρητή κατάστασης EFLAGS Τέτοια ψηφία είναι: sign: το αποτέλεσμα μιας πράξης είναι αρνητικό zero: το αποτέλεσμα μιας πράξης είναι μηδέν carry: η πράξη παράγει κρατούμενο εξόδου overflow: η πράξη παράγει υπερχείλιση parity: το αποτέλεσμα έχει άρτια ισοτιμία Επακόλουθες εντολές διακλάδωσης (δηλαδή άλματος υπό συνθήκη) ελέγχουν αυτά τα ψηφία για να αποφασίσουν εάν θα κάνουν άλμα

ΙΑ-32 Παράδειγμα Κώδικα Εντολή σύγκρισης που δίνει τιμή στα ψηφία κατάστασης (condition codes cc s) CMP SRC1,SRC2 ; set cc s based on SRC1-SRC2 Παράδειγμα for (i=0; i<10; i++) a[i]++; _L: _EXIT: MOV EAX,0 ; EAX = i = 0 CMP EAX,10 ; if (i<10) JNL _EXIT ; jump to _EXIT if i>=10 INC [EBX] ; Mem[EBX](=a[i])++ ADD EBX,4 ; EBX = &a[i+1] INC EAX ; EAX++ JMP _L ; goto _L

ΙΑ-32 Παράδειγμα Κώδικα Ειδική εντολή υποστήριξης βρόχων LOOP _LABEL ; decrease ECX, ; if (ECX!=0) goto _LABEL Το προηγούμενο παράδειγμα: for (i=0; i<10; i++) a[i]++; _L: MOV ECX,10 INC [EBX] ADD EBX,4 LOOP _L Λιγότερες εντολές, όμως η εντολή LOOP είναι αργή!

ΙΑ-32 Υποπρογράμματα Ειδικές εντολές κλήσεων CALL Aprocedure ; push return address on stack ; and goto AProcedure RET ; pop return address from ; stackand jump to it Ο καταχωρητής EBP χρησιμοποιείται ως δείκτης στο πλαίσιο δεδομένων της συνάρτησης (όπως ο $fp στον MIPS) Ο καταχωρητής ESP χρησιμοποιείται ως δείκτης στοίβας (όπως ο $sp στον MIPS) Ειδικές εντολές στοίβας: PUSH EAX ; ESP -= 4, Mem[ESP] = EAX POP EAX ; EAX = Mem[ESP], ESP += 4

IA-32 Γλώσσα Μηχανής Bytes 0-5 1-2 0-1 0-1 0-4 0-4 prefix opcode mode sib displ imm Bits 6 1 1 Source operand Byte/word Bits 2 3 3 mod reg r/m Bits 2 3 3 scale index base 00 memory 01 memory+d8 10 memory+d16/d32 11 register

ΙΑ-32 Συμπεράσματα Εμφανώς CISC Μεταβλητό μέγεθος Πολλές διαφορετικές μορφές εντολών Πολύπλοκες μέθοδοι διευθυνσιοδότησης Πολλές ιδιαίτερες εντολές που δε συναντήσαμε στον MIPS (λόγω CISC έναντι RISC) Αργή εκτέλεση αλλά εσωτερική μετατροπή σε εντολές RISC!! Άρα γρήγορη εκτέλεση για τις κοινές εντολές

JVM Συνοπτικά Java program Java compiler Java bytecode JVM (interpreter) Σκοπός η φορητότητα των προγραμμάτων JAVA Εικονική αρχιτεκτονική Ανεξάρτητη υλικού Στην ουσία η JVM είναι ένας προσομοιωτής της αρχιτεκτονικής (ή ισοδύναμα ένας διερμηνέας των bytecodes της Java) Αρκεί να γραφτεί ο προσομοιωτής για κάθε υλικό Η JVM είναι αρχιτεκτονικής στοίβας

JVM Ενδεικτικές Εντολές iload_n: push local variable n onto the stack iconst_n: push constant n onto the stack (n=-1,0,,5) bipush imm8: push byte onto stack sipush imm16: push short onto stack istore_n: pop word from stack into local variable n iadd, isub, ineg, imul, idiv, irem: usual arithmetic operations if_icmpxx offset16 (XX can be eq, ne, lt, gt, le, ge): pop TOS into a pop TOS into b if (b XX a) PC = PC + offset16 goto offset16 : PC = PC + offset16

JVM Παράδειγμα 1 Μετάφραση σε Java bytecode της έκφρασης: v = 3*(x/y - 2/(u+y)) όπου x είναι η τοπική μεταβλητή 0, y η τοπική μεταβλητή 1, u η τοπική μεταβλητή 3, και v η τοπική μεταβλητή 4 (Οι τοπικές μεταβλητές είναι στην ουσία προσωρινές μεταβλητές στη μνήμη και όχι στη στοίβα εκτέλεσης πράξεων) Στοίβα iconst_3 ; 3 iload_0 ; x 3 iload_1 ; y x 3 idiv ; x/y 3 iconst_2 ; 2 x/y 3 iload_3 ; u 2 x/y 3 iload_1 ; y u 2 x/y 3 iadd ; u+y 2 x/y 3 idiv ; 2/(u+y) x/y 3 isub ; x/y - 2/(u+y) 3 imul ; 3*(x/y - 2/(u+y)) istore_4 ; v = 3*(x/y - 2/(u+y))

JVM Παράδειγμα 2 Μετάφραση σε Java bytecode του κώδικα Java: if (x < 2) x = 0; όπου x η τοπική μεταβλητή 0 Στοίβα iload_0 ; x iconst_2 ; 2 x if_icmpge endif ; if (x>=2) goto endif iconst_0 ; 0 istore_0 ; endif:

Η JVM είναι αργή από τη στιγμή που είναι εικονική και προσομοιώνει την αρχιτεκτονική Αυτό δε συμβαίνει σε πραγματικές αρχιτεκτονικές στοίβας Σήμερα, αντί για εκτέλεση των bytecodes, τις περισσότερες φορές γίνεται μετάφραση με την τεχνική Just In-time Compilation (JIT) Οπότε τελικά εκτελείται κώδικας μηχανής του επεξεργαστή που έχουμε, και όχι τα bytecodes της εικονικής μηχανής! JVM Συμπεράσματα