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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην πληροφορική -4

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

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

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

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

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

MIPS functions and procedures

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

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 4: Το Προγραμματιστικό Μοντέλο του 8086

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μετάφραση ενός Προγράμματος Εξαιρέσεις

Transcript:

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ Γιώργος Δημητρίου Μάθημα 3 ο ΠΜΣ Εφαρμοσμένη Πληροφορική

ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΣΥΝΟΛΟΥ ΕΝΤΟΛΩΝ Αρχιτεκτονικές συσσωρευτή Αρχιτεκτονικές επέκτασης συσσωρευτή Αρχιτεκτονικές στοίβας Αρχιτεκτονικές καταχωρητών γενικού σκοπού (ΚΓΣ) Αρχιτεκτονικές καταχωρητή-μνήμης Αρχιτεκτονικές φόρτωσης-αποθήκευσης ή καταχωρητή-καταχωρητή

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΥΣΣΩΡΕΥΤΗ Ένας μοναδικός καταχωρητής αντί φακέλου καταχωρητών Δεν αρκεί, γι αυτό υλοποιήθηκε η επέκταση συσσωρευτή Καταχωρητές-δείκτες για διευθυνσιοδότηση μνήμης Γενικά δε χρησιμοποιείται σήμερα Εκτός ίσως από κάποιους ενσωματωμένους επεξεργαστές, αλλά και 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 ; MEM[A] S[sp++] push B ; MEM[B] S[sp++] push C ; MEM[C] S[sp++] add ; S[--sp] + S[--sp] S[sp++] push D ; MEM[D] S[sp++] mult ; S[--sp] * S[--sp] S[sp++] sub ; S[--sp] - S[--sp] S[sp++] pop E ; 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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΦΟΡΤΩΣΗΣ-ΑΠΟΘΗΚΕΥΣΗΣ Κώδικας υπολογισμού της έκφρασης: C = A + B Πιο σύνθετα: load r1,a load r2,b add r3,r1,r2 store r3,c

ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ 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]++; MOV EAX,0 ; EAX = i = 0 _L: 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 _EXIT:

ΙΑ-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 RET ; and goto AProcedure ; 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 Εικονική αρχιτεκτονική Ανεξάρτητη υλικού Java bytecode Στην ουσία η JVM είναι ένας προσομοιωτής της αρχιτεκτονικής (ή ισοδύναμα ένας διερμηνέας των bytecodes της Java) Αρκεί να γραφτεί ο προσομοιωτής για κάθε υλικό Η JVM είναι αρχιτεκτονικής στοίβας JVM (interpreter)

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: 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 usual

JVM ΠΑΡΑΔΕΙΓΜΑ 1 Μετάφραση σε Java bytecode της έκφρασης: v = 3*(x/y - 2/(u+y)) όπου x, y, u και v είναι οι τοπικές μεταβλητές 0, 1, 3 και 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 ΣΥΜΠΕΡΑΣΜΑΤΑ Η JVM είναι αργή από τη στιγμή που είναι εικονική και προσομοιώνει την αρχιτεκτονική Αυτό δε συμβαίνει σε πραγματικές αρχιτεκτονικές στοίβας Σήμερα, αντί για εκτέλεση των bytecodes, τις περισσότερες φορές γίνεται μετάφραση με την τεχνική Just In-time Compilation (JIT) Οπότε τελικά εκτελείται κώδικας μηχανής του επεξεργαστή που έχουμε (native code), και όχι τα bytecodes της εικονικής μηχανής!