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

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

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

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

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

Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής. Mic-1 MMV. Προσομοιωτής Αρχιτεκτονικής H/Y

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

Arqitektonik Upologist n

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός

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

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

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

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

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

Τέτοιες λειτουργίες γίνονται διαμέσου του

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

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

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

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

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

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

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

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

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

Multi Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

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

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

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

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

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

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

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Αρχιτεκτονικη υπολογιστων

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

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ας ξεκινήσουμε. Macro-instructions. (Assembly level) Micro-instructions Main memory. (micro-code)

Μικροαρχιτεκτονική του LC3

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

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

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

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

Δομές Δεδομένων (Data Structures)

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

Σελίδα 1 από 12. Απαντήσεις στο φυλλάδιο 55. Ερώτηση 1 η : Ένα υπολογιστικό σύστηµα αποτελείται από:

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

MIPS functions and procedures

Το mic1 διανέμεται με τους όρους της GNU General Public License. Ο πηγαίος κώδικας περιέχεται στην έκδοση.

Απλός επεξεργαστής (Επανάληψη)

Ολοκληρωμένα Κυκλώματα - Φθινόπωρο 2014 Γ. Δημητρακόπουλος. Εργαστηριακή άσκηση 2

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

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

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

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

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

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

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

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

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

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

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

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

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

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

Transcript:

Αρχιτεκτονική Υπολογιστών Mic-1 και IJVM Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Organization, W. Robinson, CS-231, Vanderbildt Univesrity. Mic-1 Programming Simulator, D. Carlson, St. Vincents College. Priniciples of Computer Organization, R. Ontko, Earlham College. Mic-1 simulator http://www.ontko.com/mic1 Mic-1MMV simulator, Rick Salter, Oberlin College. http://www.cs.oberlin.edu/~rms/mic1/ Mic-1 Architecture, Monash University. Σύνθεση: Κ.Γ. Μαργαρίτης, Πανεπιστήμιο Μακεδονίας, Τμήμα Εφαρμοσμένης Πληροφορικής.

Αρχιτεκτονική Υπολογιστών Mic-1 και IJVM Περιγραφή και στοιχεία υλοποίησης του Mic-1 Παράδειγμα Αρχιτεκτονικής Συνόλου Εντολών: IJVM Προσομοιωτής Mic-1 και Προγραμματισμός JAS Υλοποίηση της IJVM στο Mic-1

Μικροαρχιτεκτονική Mic-1 Δύο βασικά τμήματα: Διαδρομή Δεδομένων (Datapath) = λογική αφαίρεση της CPU όπως τη 'βλέπει' η ISA. Έλεγχος (Control) = η υλοποίηση της διερμηνείας της ISA απο το επίπεδο της μικροαχιτεκτονικής.

Mic-1 Διαδρομή Δεδομένων Οι εσωτερικοί δίαυλοι και οι μονάδες επεξεργασίας και αποθήκευσης δεδομένων του επεξεργαστή Mic-1. Υλοποιεί την Αρχιτεκτονική Συνόλου Εντολών (ISA) Integer Java Virtual Machine (IJVM), υποσύνολο της JVM. Αρχιτεκτονική 32-bit word αλλά byte addressable.

Mic-1 Δίαυλοι Δίαυλος Α Έξοδος μόνο για καταχωρητή H. Είσοδος στην ALU. Δίαυλος Β Έξοδος για όλους τους άλλους καταχωρητές εκτός του MAR. Μόνο ένας καταχωρητής κάθε φορά. Είσοδος στην ALU. Δίαυλος C Είσοδος σε όλους τους καταχωρητές. Πολλοί καταχωρητές μαζί (ίσως). Έξοδος της ALU μέσω Ολισθητή.

Mic-1 Καταχωρητές (1) Καταχωρητής Διευθύνσεων Μνήμης Memory Address Register (MAR) * Περιέχει διευθύνσεις μνήμης 32 bits. Καταχωρητής Δεδομένων Μνήμης Memory Data Register (MDR) * Περιέχει δεδομένα από/προς τη μνήμη μεγέθους 32 bits. Μετρητής Προγράμματος Programm Counter (PC) * Περιέχει τη διεύθυνση της επόμενης προς εκτέλεση εντολής. Καταχωρητής Απομονωτή Μνήμης Μemory Buffer Register (MBR) * Περιέχει δεδομένα 1 byte από τη μνήμη (κωδικό λειτουργίας, opcode)

Mic-1 Καταχωρητές (2) Δείκτης Στοίβας Stack Pointer (SP) * Περιέχει τη διεύθυνση της κορυφής της στοίβας τοπικών μεταβλητών. Τοπικές Μεταβλητές Local Variables (LV) * Περιέχει τη διεύθυνση της βάσης τoυ χώρου τοπικών μεταβλητών. Δείκτης Δεξαμενής Σταθερών Constant Pool Pointer (CPP) * Περιέχει τη διεύθυνση της βάσης της περιοχής των σταθερών.

Mic-1 Καταχωρητές (3) Κορυφή της Στοίβας Top Of the Stack (TOS) * Περιέχει ή δείχνει τη κορυφή της στοίβας τοπικών μεταβλητών (διμελείς πράξεις στοίβας και κλήσεις μεθόδων). Προσωρινός Καταχωρητής Old Program Counter (OPC) * Προσωρινή αποθήκευση ενδιάμεσων αποτελεσμάτων για έλεγχο ροής προγράμματος (σε κλήσεις μεθόδων ο παλιός PC προς αποθήκευση). Καταχωτητής Βοήθειας Help regsiter (H) * Προσωρινή αποθήκευση ενδιάμεσων αποτελεσμάτων για πράξεις ALU.

Mic-1: Έλεγχος Διαδρομής Δεδομένων Β bus enable * Επιλογή ενός καταχωρητή για εγγραφή στο Δίαυλο B. C bus enable * Επιλογή καταχωρητών για ανάγνωση από το Δίαυλο C. Έλεγχος ALU * 6 σήματα για επιλογή πράξεων ALU, τα F0, F1, ENA, ENB, INVA, INC. N και Ζ * Negative και Zero σήματα προς έλεγχοεπιλογή επόμενης λειτουργίας. Shifter Control * Έλεγχος Ολίσθησης SLL8 (Shift Left Logical 8 bits) SRA1(Shift Right Arithmetic 1 bit)

Έλεγχος Αριθμητικής Λογικής Μονάδας Συνδυασμοί σημάτων ελέγχου της ALU και οι πράξεις που αντιστοιχούν σε αυτούς.

Χρονισμός Διαδρομής Δεδομένων (1) Διάγραμμα χρονισμού ενός πλήρους κύκλου ρολογιού.

Χρονισμός Διαδρομής Δεδομένων (2) Κάθε κύκλος ρολογιού αντιστοιχεί σε μια μικροεντολή. Ο κύκλος χωρίζεται σε 5 'λογικούς' υπο-κύκλους: (Δw)σταθεροποίηση σημάτων, (Δx) έξοδος από καταχωρητές προς διαύλους Α, Β, (Δy) πράξεις και ολίσθηση, (Δz) είσοδος από δίαυλο C προς καταχωρητές, (..) σταθεροποίηση. Οι καταχωρητές ελέγχονται ουσιαστικά από την κάθοδο και την άνοδο της ακμής του ρολογιού: Kάθοδος = εγγραφή σε δίαυλο A, Β. Άνοδος = ανάγνωση από δίαυλο C. Η ALU δουλεύει συνεχώς αλλά η έξοδός της είναι ορθή μόνο στο τέλος του υποκύκλου (Δy). Απαιτείται: * Αυστηρός χρονισμός διαύλων * Σχετικά μακρός κύκλος ρολογιού * Ακριβής γνώση καθυστερήσεων διάδοσης σήματος στην ALU * Γρήγορη ανάγνωση / εγγραφή σε καταχωρητές.

Mic-1: Λειτουργία Μνήμης (1) Δύο θύρες μνήμης: * Μια R/W 32-bit (word addressable) για δεδομένα, MDR <=> mem(mar) bytes 0, 4, 8,... Σήματα ελέγχου READ, WRITE * Μια RΟ 8-bit (byte addressable) για εντολές, low-bytembr <= mem(pc) bytes 0, 1, 2... Σήμα ελέγχου FETCH. Ειδικός έλεγχος MBR (δυο βέλη): * απρόσημος (index/offset): 0x000low-byteMBR * προσημασμένος (sign extention): 0x000low-byteΜΒR ή 0x111low-byteMBR

Mic-1: Λειτουργία Μνήμης (2) word byte 000C 000C 0000 000D 0000 000E 0000 0000 000F 0008 0000 0008 0000 0009 0000 000A 000B 0004 0000 0004 0000 0005 0000 0006 0000 0007 0000 Διευθύνσεις 0000 0000 0001 0000 0002 0003 PC = 0000 PC+1 = 0001 MAR = 0000 MAR+1 = 0004 LV = 0004 LV+1 = 0008 SP = 0004 SP+1 = 0008 byte-addressable word-addessable

Mic-1: Λειτουργία Μνήμης (3) Απεικόνιση των bits του MAR στο δίαυλο διευθύνσεων ώστε η φυσική byte addressable μνήμη να αντιστοιχεί με λογική word addessable μνήμη για τα δεδομένα.

Μικροεντολές Η μορφή μικροεντολής του Mic-1. Addr : Διεύθυνση πιθανής επόμενης μικροεντολής. JAM : Προσδιορίζει πώς επιλέγεται η επόμενη μικροεντολή. ALU : Πράξεις ALU και Ολισθητή. C : Επιλογή καταχωρητών που θα διαβάσει δεδομένα από το δίαυλο C. Mem : Λειτουργίες Μνήμης Β : Επιλογή καταχωρητή που θα γράψει δεδομένα στο δίαυλο Β.

Ελεγχος Μικροεντολών *ROM μικροεντολών μεγέθους 512x36 bits. *H προς εκτέλεση μικροεντολή βρικεται στο Καταχωρητή Μικρο Εντολών (MIR). *Κάθε μικροεντολή ορίζει την επόμενη, όχι απαραίτητα ακολουθιακή εκτέλεση. * Ο Μετρητής Μικρο Προγράμματος (MPC) καθορίζεται από συνδυασμό - MBR - Addr - JAMN/JAMZ/JMPC - N/Z

Μικρο-εκτέλεση 1. Φόρτωση MIR από μικροrom(mpc). Σήματα ελέγχου Δw. 2. Σήματα προς διαδρομή δεδομένων, λειτουργίες διαύλων Α, Β. Δx. 3. Λειτουργίες ALU, Ολισθητή και Μνήμης. Δy. 4. Λειτουργίες διαύλου C, φόρτωση Ν/Ζ, φόρτωση καταχωρητών και MDR, MBR από Μνήμη. Δz. 5. Προετοιμασία νέου MPC.

Μάκρο-εκτέλεση Ανάκληση- Εκτέλεση 1. MBR = mem(pc); PC = PC + 1 2. Αποκωδικοποίηση (MBR). 3. Ανάκληση τελεστέων 4. Εκτέλεση εντολής 5. Αποθήκευση αποτελέσματος 6. Πίσω στο βήμα 11 Κάθε ένα από τα παραπάνω βήματα εκτελείται μέσω μιας σειράς μικρο-εκτελέσων. Κάθε εντολή IJVM μπορεί να απαιτεί ένα ή περισσότερους κύκλους μηχανής (clock cylcles).

Αρχιτεκτονική Υπολογιστών Mic-1 και IJVM Περιγραφή και στοιχεία υλοποίησης του Mic-1 Παράδειγμα Αρχιτεκτονικής Συνόλου Εντολών: IJVM Προσομοιωτής Mic-1και Προγραμματισμός JAS Υλοποίηση της IJVM στο Mic-1

Στοίβες (1) Χρήση στοίβας για την αποθήκευση τοπικών μεταβλητών. (a) Ενεργή η κύρια μέθοδος A. (b) Η A έχει καλέσει τη B. (c) Η B έχει καλέσει τη C. (d) Οι C και B έχουν επιστρέψει και η A έχει καλέσει τη D.

Στοίβες (2) Χρήση μιας στοίβας τελεστέων (operands) για την εκτέλεση αριθμητικών πράξεων. (a) push LV+1 (εκεί που δείχνει ο LV συν μια θέση / word) (b) push LV+2 (c) add = (pop στην ALUinA, pop στην ALUinB, add, push ALUout) (d) pop LV

Το μοντέλο μνήμης της IJVM (1) Δεξαμενή Σταθερών Πλαίσιο Τοπικών Μεταβλητών Περιοχή Μεθόδων Στοίβα Τρεχόντων Τελεστέων Τα διάφορα μέρη του μοντέλου μνήμης της IJVM.

Το μοντέλο μνήμης της IJVM (2) Δεξαμενή Σταθερών * Δεν μπορεί να γραφεί από τη IJVM * Περιέχει σταθερές, συμβολοσειρές, δείκτες σε άλλες περιοχές μνήμη Πλαίσιο Τοπικών Μεταβλητών * Χώρος αποθήκευσης τοπικών μεταβλητών και παραμετρων για κάθε μέθοδο, όσο αυτή εκτελείται. Στοίβα Τρεχόντων Τελεστέων * Χώρος τελεστέων για τις πράξεις της τρέχουσας μεθόδου Περιοχή Μεθόδων * Περιέχει τον εκτελέσιμο κώδικα * Byte addressable

Το Σύνολο Εντολών της IJVM (1) opcode operand Οι τελεστέοι byte, const, και varnum έχουν μέγεθος 1 byte. Οι τελεστέοι disp, index, και offset έχουν μέγεθος 2 bytes.

Το Σύνολο Εντολών της IJVM (2) Αριθμητικές Πράξεις IADD pop a, pop b, c=a+b, push c ISUB pop a, pop b, c=a-b, push c IINC varnum const x = x+/-const (x τοπική μεταβλητή) varnum: σχετική διεύθυνση 1byte (από LV) const: ακέραιος 1 byte Λογικές Πράξεις IAND pop a, pop b, c=a AND b, push c IOR pop a, pop b, c=a OR b, push c

Το Σύνολο Εντολών της IJVM (3) Στοίβα και Μνήμη ILOAD varnum push x (x τοπική μεταβλητή) ISTORE varnum pop x (x τοπική μεταβλητή) BIPUSH byte push byte μετά από μετατροπή σε προσημασμένο 32 bit LDC_W index push x (x σταθερά) index: σχετική διεύθυνση 2 bytes (από CPP) Στοίβα DUP POP SWAP pop a, push a, push a (αντιγραφή) pop a (διαγραφή) pop a, pop b, push b, push a (ανταλλαγή)

Το Σύνολο Εντολών της IJVM (4) Έλεγχος Ροής GOTO offset IFEQ offset PC = PC +/- offset pop a if (a == 0) then PC = PC +/- offset IFLT offset pop a if (a < 0) then PC = PC +/- offset IF_ICMPEQ offset pop a, pop b, if (a == b) then PC = PC +/- offset offset: σχετική διεύθυνση 2bytes (PC) Βοηθητικές λειτουργίες NOP καμμία ενέργεια WIDE πρόθεμα για χρήση varnum 2 bytes αντί 1 byte

Το Σύνολο Εντολών της IJVM (5) Κλήση Μεθόδου INVOKEVIRUAL disp κλήση μεθόδου disp: σχετική έμμεση διεύθυνση 2bytes (CPP, PC) IRETURN επιστροφή από μέθοδο Οι εντολές αυτές αναλύονται παρακάτω.

Αρχιτεκτονική Υπολογιστών Mic-1 και IJVM Περιγραφή και στοιχεία υλοποίησης του Mic-1 Παράδειγμα Αρχιτεκτονικής Συνόλου Εντολών: IJVM Προσομοιωτής Mic-1 και Προγραμματισμός JAS Υλοποίηση της IJVM στο Mic-1

Εγκατάσταση και Χρήση (1) Μεταφόρτωση λογισμικού και οδηγιών στα ελληνικά από το http://www.it.uom.gr/teaching/tanenbaum/mic1mmv Ακολουθούμε τις οδηγίες εγκατάστασης, ελέγχου λειτουργίας και παροχής βοήθειας. Παρακολούθηση Μικροεντολών, Διαδρομής Δεδομένων, Περιοχής Μεθόδου, Στοίβας, Δεξαμενής Σταθερών, Εισόδου και Εξόδου. Ιδιαίτερα χρήσιμη βοήθεια, περιλαμβάνει και εγχειρίδια προγραμματισμού. Δυνατότητα μεταβολής assembler και μικροκώδικα. Διαθέσιμος ο πηγαίος κώδικας και τεκμηρίωση ανάπτυξης. Συλλογική έργασία με GNU Public Licence.

Εγκατάσταση και Χρήση (2) Πακέτο Jar σε δύο 'διανομές', Ms-Windows και Linux Δομή καταλόγων, Τύποι Αρχείων bin (εκτελέσιμα) Mic1MMV_hr.jar, Mic1MMV_lr.jar, runmic1.bat lib (διαμόρφωση) ijvm.conf, mic1.properties, GNU.TXT examples (παραδείγματα) MAL / microassembler code MAL -> microisntruction code MIC1 mic1ijvm.mal: προεπιλεγμένος microassembler code JAS-IJVM / assembler code JAS -> machine code IJVM doc (τεκμηρίωση) UserGuide.jar: java -jar UserGuide.jar, UserGuide_hs.jar (μαζί) src (πηγαίος κώδικας) Mic1MMV_xxx.zip (source code for Mic-1 MMV)

Προγραμματισμός σε JAS Από το Help του Mic-1 πηγαίνουμε στο Program Operation Using Mic1-MMV Writing JAS Programs Πρέπει να μελετήσουμε το JAS Language Specification. * Δομή και σύνταξη της JAS (μακρο εντολές assembly) * IJVM και τρείς επιπλέον εντολές HALT IN OUT Τερματισμός προγράμματος Είσοδος byte/char από το πληκτρολόγιο (Input Area) Έξοδος byte/char στην οθόνη (Output Area)

Είσοδος και Έξοδος Παραδείγματα OUT και IN BIPUSH Ox41 // Load stack A OUT // Output A getch: reread: done: IN DUP IFEQ reread GOTO done POP GOTO getch... // Input char // Duplicate char for checking // If char = 0 read again // Valid char read // Discard 0 char // Read again // Done reading

Δομή Προγράμματος JAS // All constants declared within.constant and.end-constant.constant one 1 start 32 stop 126.end-constant // Main program starts here.main // All variables declared within.var and.end-var.var j i n.end-var // Main program goes here // Program execution is terminated with a HALT statement.end-main

Εκχώρηση Με BIPUSH βάζουμε μια τιμή στη στοίβα τελεστέων Με ISTORE τη μεταφέρουμε στη στοίβα τοπικών μεταβλητών BIPUSH 32 Δεκαδικό BIPUSH 032 Οκταδικό BIPUSH 0x32 Δεκαεξαδικό BIPUSH 'M Χαρακτήρας // i = 3 BIPUSH 3 ISTORE i Χρήση ΟΝΟΜΑΤΩΝ και δεκαδικών τιμών (σε JAS)

Πολύ Απλό Πρόγραμμα JAS // ****** main ( ) {.main // ****** int x;.var x.end-var // ****** x = 10; BIPUSH 10 ISTORE x HALT // ****** }.end-main

Εκχώρηση, Εκφράσεις (1) // i = 3; j = 4; n = i + j; // i = 3; j = 4; n = j i; BIPUSH 3 ISTORE i BIPUSH 3 ISTORE i BIPUSH 4 ISTORE j BIPUSH 4 ISTORE j ILOAD i ILOAD j IADD ISTORE n ILOAD j ILOAD i ISUB ISTORE n

Εκχώρηση, Εκφράσεις (2) // i = 3; j = 4; k = 5; n = i + j k + 2; // Reverse Polish Notation n = i j + k 2 + (βλ. ISA) BIPUSH 3 ISTORE i BIPUSH 4 ISTORE j BIPUSH 5 ISTORE k ILOAD i ILOAD j IADD ILOAD k ISUB BIPUSH 2 IADD ISTORE n

Απόφαση // if (i!= 3) k = 0; // if (i == 3) k =0 else k = 1; ILOAD i BIPUSH 3 IF_ICMPEQ L1 BIPUSH 0 ISTORE k L1:... ILOAD i BIPUSH 3 IF_ICMPEQ L1 BIPUSH 1 ISTORE k GOTO L2 L1:BIPUSH 0 ISTORE k L2:.. Χρήση LABELS για ονομασία σχετικών διευθύνσεων (σε JAS) Πιθανή αντιστροφή συνθήκης για απόδοση.

Επανάληψη (1) x = 0; while (x < n) {... x = x+1; } x = 0; L1: if ((x-n) < 0) goto L2 else goto L3 L2:... x = x+1; goto L1; L3:... // x = 1; BIPUSH 0 ISTORE x // if ((x-n) < 0) L1:ILOAD x ILOAD n ISUB IFLT L2 GOTO L3 L2:... // x = x+1; IINC x 1 GOTO L1 L3:...

Επανάληψη (2) x = 0; while (x < n) {... x = x+1; } x = 0; L1: if ((x-n) >= 0) goto L2... x = x+1; goto L1; L2:... // x = 1; BIPUSH 0 ISTORE x // if ((x-n) < 0) L1:ILOAD x ILOAD n ISUB IFGE L2... // x = x+1; IINC x 1 GOTO L1 L2:...

Μεταγλώττιση Java σε εντολές JAS/IJVM (1)

Μεταγλώττιση Java σε εντολές JAS/IJVM (2) (a) Τμήμα κώδικα Java. (b) Η αντίστοιχη συμβολική μορφή (IJVM assembly ή JAS). (c) Ο κώδικας σε γλώσσα μηχανής IJVM (δεκαεξαδική μορφή) - σχέση μία προς μια εντολή IJVM με JAS. Συνέχεια.. (d) Κάθε εντολή σε γλώσσα μηχανής IJVM μετά την ανάκλησή της από τη μνήμη διερμηνεύεται (αποκωδικοποιείται και εκτελείται) με βάση το μικροκώδικα που βρίσκεται στη ROM του μικροπρογράμματος.

Μεταγλώττιση Java σε εντολές JAS/IJVM (3) SP k LV j i Αρχική κατάσταση και πλαίσιο τοπικών μεταβλητών Η στοίβα τελεστέων μετά από την εκτέλεση κάθε εντολής του κώδικα.

Μεταγλώττιση Java σε εντολές JAS/IJVM (4) 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x02 0x15 0x03 0x60 0x36 0x01 0x15 0x01 0x10 0x03 0x9F 0x00 0x0D 0x15 0x02 0x10 0x01 0x64 0x36 0x02 0001 0101 0000 0010 0001 0101 0000 0011 0110 0000 0011 0110 0000 0001 0001 0101 0000 0001 0001 0000 0000 0011 1001 1111 0000 0000 0000 1011 0001 0101 0000 0010 0001 0000 0000 0001 0110 0100 0011 0110 0000 0010 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0xA7 0x00 0x07 0x10 0x00 0x36 0x03 Byte no Hex 1010 0111 0000 0000 0000 0111 0001 0000 0000 0000 0011 0110 0000 0011 Binary 0x0B+0x0D = 11+13 = 24 = 0x18 0x15+0x07 = 21+7 = 28 = 0x1C Υπολογισμός offset

Κλήση Μεθόδου στη IJVM (1) INVOKEVIRTUAL methodname * Όνομα methodname = δείκτης στη (διεύθυνση στη) Περιοχή Μεθόδων, στην αρχή της μεθόδου (PC μετά τη κλήση). Έχει μέγεθος 2 bytes και προστίθεται στο CPP για να δώσει τη νέα τιμή του PC. * Φορτώνει τη σταθερά OBJREF στη στοίβα πριν από τη κλήση * Φορτώνει παραμέτρους που πρέπει να περάσουν στη μέθοδο * Εκτελεί την κλήση: - ρύθμιση νέων PC, SP, LV - αποθήκευση παλιών PC, SP, LV - μεταφορά ελέγχου OBJREF * Δείκτης σε Object (αντικείμενο): στη Java κάθε μέθοδος σχετίζεται με αντικείμενα. * Στη IJVM χρησιμοποιούμε ένα ψευδο-δείκτη

Κλήση Μεθόδου στη IJVM (2) Bytes 0,1 = no of params Bytes 2,3 = local var frame size Byte 4 = first instruction New Method methodname New PC Δεξαμενή Σταθερών Στοίβα Τοπικών Μεταβλητών Περιοχή Μεθόδων Στοίβα Τρεχόντων Τελεστέων Υπολογισμός PC κατά τη κλήση μεθόδου με όνομα methodname. Τα πρώτα 4 bytes έχουν ειδική σημασία.

Κλήση Μεθόδου στη IJVM (4) Πρόγραμμα: 1. Εισαγωγή OBJREF 2. Εισαγωγή Παραμέτρων με Σειρά κλήσης Σύστημα: 1. Ενημέρωση SP 2. Αποθήκευση PC, LV 3. Ενημέρωση OBJREF Νέος Χώρος Εργασίας (a) Η μνήμη πριν την εκτέλεση της INVOKEVIRTUAL. (b) Η μνήμη μετά την εκτέλεσή της.

Επιστροφή Μεθόδου στη IJVM (2) Πρόγραμμα: 1. Τοποθέτηση τιμής επιστροφής Σύστημα: 1. Φόρτωση LV, PC 2. Μετακίνηση τιμής επιστροφής 3. Ενημέρωση SP που δείχνει στη τιμή επιστροφής Επιστροφή στο παλιό Χώρο Εργασίας (a) Η μνήμη πριν την εκτέλεση της IRETURN. (b) Η μνήμη μετά την εκτέλεσή της.

Μέθοδοι σε JAS (1)... μετά το end-main // All methods declared within method declaration.method methodname1 (param-1, param-2..).var // Local variables.end-var // A method ends with IRETURN.end-method.method methodname2 (param-1, param-2..).var // Local variables.end-var // A method ends with IRETURN.end-method

Πολύ Απλή Μέθοδος JAS (1) // ***** OBJREF.constant objref 0xCAFE.end-constant // ****** main ( ) {.main // ****** int x, y, z;.var x y z.end-var // ****** x = 10; BIPUSH 10 ISTORE x // ****** y = 11; BIPUSH 11 STORE y // ****** z = cmp (x, y); LDC_W objref ILOAD x ILOAD y NVOKEVIRTUAL cmp ISTORE z HALT // ****** }.end-main

Πολύ Απλή Μέθοδος JAS (2) // ***** int cmp (int p1, int p2) {.method cmp(p1,p2).var temp.end-var // ***** temp = p1 - p2 ILOAD p1 ILOAD p2 ISUB ISTORE temp // ***** if (temp < 0) go to lt ILOAD temp IFLT lt // ***** if (temp == 0) go to eq ILOAD temp IFEQ eq // ***** return 1 (temp > 0) gt: BIPUSH 1 GOTO done // ***** return -1 (temp < 0) lt: BIPUSH -1 GOTO done // ***** return0 (temp == 0) eq: BIPUSH 0 // ***** }; done: IRETURN.end-method

Αρχή main SP LV runtime PC tuntime z y x LV Link ptr runtime Πριν το invokevirtual SP y x 0XCAFE LV runtime PC runtime z y x LV Link ptr runtime Αρχή μεθόδου SP LV main PC main temp p2 (y) p1 (x) LV Link ptr main LV runtime PC runtime z y x Link ptr runtime Πολύ Απλή Μέθοδος JAS (3) Μετά το return SP 0x0000 ή 0x0001 ή FFFF LV runtime PC tuntime z y x LV Link ptr runtime Eπιστροφή μεθόδου SP 0x0000 ή 0x0001 ή FFFF LV του main PC toy main temp p2 (y) p1 (x) LV Link ptr main LV runtime PC runtime z y x Link ptr runtime

Περιορισμοί * Τύποι δεδομένων (πχ float). * Δείκτες (Pointers = Διευθύνσεις). * Call by Reference (Παράμετρος τύπου Δείκτη) άρα και επιστροφή τιμών. * Πίνακες (Αύξηση Δείκτη). * Δυναμική Διαχείριση Μνήμης.

Αρχιτεκτονική Υπολογιστών Mic-1 και IJVM Περιγραφή και στοιχεία υλοποίησης του Mic-1 Παράδειγμα Αρχιτεκτονικής Συνόλου Εντολών: IJVM Προσομοιωτής Mic-1 και Προγραμματισμός IJVM/JAS Υλοποίηση της IJVM στο Mic-1

Μικροαρχιτεκτονική Mic-1 * ΜικροROM μικροεντολών (MROM) μεγέθους 512x36 bits. * Ο Μετρητής Μικρο Προγράμματος (MPC) δείχνει τη προς εκτέλεση μικροεντολή. * Η μικροεντολή προσκομίζεται στο Καταχωρητή Μικρο Εντολών (MIR). * Κάθε μικροεντολή ορίζει την επόμενη, όχι απαραίτητα ακολουθιακή εκτέλεση.

Χρονισμός Mic-1 Διάγραμμα χρονισμού ενός πλήρους κύκλου ρολογιού.

Μικρο-εκτέλεση Mic-1 1. Φόρτωση MIR από μικροrom(mpc). Σήματα ελέγχου Δw. 2. Σήματα προς διαδρομή δεδομένων, λειτουργίες διαύλων Α, Β. Δx. 3. Λειτουργίες ALU, Ολισθητή και Μνήμης. Δy. 4. Λειτουργίες διαύλου C, φόρτωση Ν/Ζ, φόρτωση καταχωρητών και MDR, MBR από Μνήμη. Δz. 5. Προετοιμασία νέου MPC. Κάθε Μικροεντολή = 'Ενας κύκλος ρολογιού

Μικροεντολές Η μορφή μικροεντολής του Mic-1. Addr : Διεύθυνση πιθανής επόμενης μικροεντολής (9) JAM : Προσδιορίζει πώς επιλέγεται η επόμενη μικροεντολή (3) ALU : Πράξεις ALU και Ολισθητή (6 ALU και 2 Shit) C : Επιλογή καταχωρητών που θα διαβάσει δεδομένα από το δίαυλο C (9). Mem : Λειτουργίες Μνήμης (3) Β : Επιλογή καταχωρητή που θα γράψει δεδομένα στο δίαυλο Β (4).

Συμβολισμός Μικροεντολών Ετικέτα: Διεύθυνση ΜROM (NEXT_ADDRESS) πχ iadd1 Λειτουργίες: Σε μορφή Register Transfer Language (MAL) πχ MAR = SP = SP 1; rd Σχόλια: Εξήγηση των λειτουργιών Και οι δύο μορφές ορατές στο Προσομοιωτή.

Μικροεντολές και Λειτουργίες (1) Όλες οι επιτρεπόμενες λειτουργίες σε επίπεδο μικροεντολής. Ουσιαστικά εκτελούνται όλες μέσω της ALU και του Ολισθητή. Κάθε λειτουργία μπορεί να επεκταθεί προσθέτοντας << 8 στο τέλος ώστε το αποτέλεσμα ολισθαίνει αριστερά κατά 1 byte. Για παράδειγμα, μια συνηθισμένη λειτουργία είναι η παρακάτω: H = MBR << 8

Μικροεντολές και Λειτουργίες (2) Συνδυασμοί σημάτων ελέγχου της ALU και οι πράξεις που αντιστοιχούν σε αυτούς. Για τις λειτουργίες RTL/MAL, όπου A θέτουμε H και όπου B Source.

Βασικός Κύκλος Επαναλαμβάνεται στην αρχή διερμηνείας κάθε εντολής IJVM/JAS. Αποτελεί τη βάση της αποκωδικοποίησης της εντολής. Αυξάνεται ο PC και ανακαλείται η εντολή από τη μνήμη. Ο MPC λαμβάνει ως τιμή το opcode της εντολής. Main1 PC = PC+1; fetch; goto(mbr) Άρα ο opcode της εντολής δίνει τη διεύθυνση της MROM όπου βρίσκεται η πρώτη μικροεντολή διερμηνείας της υπο εκτέλεση IJVM εντολής. Παρατηρείστε την αρχική τιμή του PC καθώς και την αρχική ακολουθία μικροεντολών ('Ασκηση).

Παράδειγμα Μικροεντολών σε RTL/MAL (1) Ετικέτα Λειτουργία Σχόλια op1 SP = MAR = SP 1;rd O SP και ο MAR λαμβάνουν τη τρέχουσα τιμή του SP μειωμένη κατά ένα. Ανάγνωση από τη θέση μνήμης που δείχνει ο ΜΑR. op2 Η = ΤΟS O H λαμβάνει τη τιμή του TOS δηλαδή Top Of Stack. op3 MDR = TOS = MDR + H; wr; goto Main1 Ο MDR έχει λάβει το αποτέλεσμα της ανάγνωσης. O MDR και ο TOS λαμβάνουν τη τιμή του MBR + H. Εγγραφή στη θέση μνήμης που δείχνει o MAR. Επιστροφή στην αρχική θέση της MROM. Ποιά εντολή είναι; Ποια η σημασία της διπλής εκχώρησης; Ποια η σημασία του TOS;

Παράδειγμα Μικροεντολών σε RTL/MAL (2) Ετικέτα Λειτουργία Σχόλια op1 SP = MAR = SP + 1 O SP και ο MAR λαμβάνουν τη τρέχουσα τιμή του SP αυξημένη κατά ένα. op2 PC = PC + 1; fetch O PC αυξάνεται κατά ένα. Προσοκόμιση byte από μνήμη σε MBR. op3 MDR = TOS = MBR; wr; goto Main1 O MDR και ο TOS λαμβάνουν τη τιμή του MBR. Εγγραφή στη θέση μνήμης που δείχνει o MAR. Επιστροφή στην αρχική θέση της MRΟM. Ποιά εντολή είναι; Ποια η σημασία του PC=PC+1; fetch;

Παράδειγμα Μικροεντολών σε mic1 (1) 16 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0100 17 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0001 02 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0010 Εργαζόμαστε και με τη βοήθεια του προσομοιωτή. Προσοχή στην ομαδοποίηση των καταχωρητών στο C, το δεκαεξαδικό. Έχει τη Μορφή 1 4 4-1 bits (επειδή τα 36 bits υπολογίζονται συνολικά από το LSbit).

Παράδειγμα Μικροεντολών σε mic1 (2) 1C 1D 1E 1F 20 02 0 0 0 0 0 0 0 0 0 0 0 0 000 000 000 000 000 000 0 1 0 1 1 0 10 11 10 10 10 10 1 1 1 1 1 1 00 00 00 10 01 00 1000000000 0000000001 0000000010 0000001001 0000000100 0010000000 000 000 100 010 001 000 0101 0011 0111 0100 0001 0000 Με τη βοήθεια του προσομοιωτή να γράψετε τον αντίστοιχο κώδικα σε MAL και στη συνέχεια να βρείτε ποια εντολή ΙJVM/JAS είναι η παραπάνω.

RTL/MAL: Στοίβα (0) NOP καμμία ενέργεια IADD ISUB IAND IOR DUP POP SWAP pop a, pop b, c=a+b, push c pop a, pop b, c=a-b, push c pop a, pop b, c=a AND b, push c pop a, pop b, c=a OR b, push c pop a, push a, push a pop a pop a, pop b, push b, push a

RTL/MAL: Στοίβα (1)

RTL/MAL: Στοίβα (2) Με τη βοήθεια του παραπάνω πίνακα και του προσομοιωτή μελετήστε τα παρακάτω: * Τη κωδικοποίηση των μικροεντολών που παρουσιάζονται. * Τη λειτουργία των μικροεντολών σε επίπεδο κύκλου και υποκύκλων ρολογιού. * Τη μετατροπή των διευθύνσεων με χρήση offset (MAR=SP+/-1). * Την αυξομείωση του SP και τη χρήση του καταχωρητή TOS. * Ποιά είναι η αρχική ακολουθία μικροεντολών που εκτελείται; * Τι σημαίνει το goto(mbr);

Mic-1: Λειτουργία Μνήμης Απεικόνιση των bits του MAR στο δίαυλο διευθύνσεων ώστε η φυσική byte addressable μνήμη να αντιστοιχεί με λογική word addessable μνήμη για τα δεδομένα.

RTL/MAL: Στοίβα - Μνήμη (0) ILOAD varnum push x (x τοπική μεταβλητή) ISTORE varnum pop x (x τοπική μεταβλητή) BIPUSH byte push byte μετά από μετατροπή σε προσημασμένο 32 bit LDC_W index push x (x σταθερά) index: σχετική διεύθυνση 2 bytes (από CPP) WIDE πρόθεμα για χρήση varnum 2 bytes αντί 1 byte IINC varnum, const x = x+/-const (x τοπική μεταβλητή) varnum: σχετική διεύθυνση 1byte (από LV) const: ακέραιος 1 byte

RTL/MAL: Στοίβα - Μνήμη (1)

RTL/MAL: Στοίβα - Μνήμη (2)

RTL/MAL: Στοίβα - Μνήμη (3) Με τη βοήθεια του παραπάνω πίνακα και του προσομοιωτή μελετήστε τα παρακάτω: * Την υλοποίηση της εντολής BIPUSH. Χρήση operand (τελεστέου) ως τιμή (value) και όχι αναφορά (διεύθυνση, reference). * Την επικοινωνία Στοίβας Τελεστέων και Τοπικών Μεταβλητών μέσω των καταχωρητών SP και LV. * Τι σημαίνει το MBRU; Δείτε το μοντέλο μνήμης από τη πλευρά της IJVM και της JAS.

Το μοντέλο μνήμης της IJVM Δεξαμενή Σταθερών Στοίβα Τοπικών Μεταβλητών Περιοχή Μεθόδων Στοίβα Τρεχόντων Τελεστέων Τα διάφορα μέρη του μοντέλου μνήμης της IJVM.

RTL/MAL: Στοίβα - Μνήμη (4) * Την υλοποίηση των εντολών WIDE ILOAD και WIDE ISTORE σε σχέση με τις αντίστοιχες ILOAD και ISTORE (οχι το wide1) Μελετήστε την ακολουθία μικροεντολών Η = MBRU << 8 H = MBRU OR H MAR = H + LV ή MAR = H + CPP

RTL/MAL: Στοίβα - Μνήμη (5) Η αρχική ακολουθία μικροεντολών για τις εντολές ILOAD και WIDE ILOAD. Οι διευθύνσεις είναι ενδεικτικές.

RTL/MAL: Έλεγχος Ροής (0) GOTO offset IFEQ offset PC = PC +/- offset pop a if (a == 0) then PC = PC +/- offset IFLT offset pop a if (a < 0) then PC = PC +/- offset IF_ICMPEQ offset pop a, pop b, if (a == b) then PC = PC +/- offset offset: σχετική διεύθυνση 2bytes (PC)

RTL/MAL: Έλεγχος Ροής (1)

Ελεγχος Μικροεντολών (1) * Κάθε μικροεντολή ορίζει την επόμενη, όχι απαραίτητα ακολουθιακή εκτέλεση. * Το περιεχμενο του MPC καθορίζεται από συνδυασμό - MBR - Addr - JAMN/JAMZ/JMPC - N/Z

Έλεγχος Mικροεντολών (2) Μια μικροεντολή με το πεδίο JAMZ ίσο με 1 μπορεί να έχει δύο πιθανές επόμενες εντολές, ανάλογα με τη τιμή του Ζ. FZ = (JAMZ AND Z) OR NEXT_ADDRESS Παρόμοια μια μικροεντολή με το πεδίο JAMΝ ίσο με 1 μπορεί να έχει δύο πιθανές επόμενες εντολές, ανάλογα με τη τιμή του Ζ FN = (JAMN AND N) OR NEXT_ADRESS

Έλεγχος Mικροεντολών (3) Νέα τιμή του MPC: * Αν JAM = 000 τότε NEXT_ADDRESS * Aν JAM = 001 ή 010 τότε (JAMZ AND Z) OR (JAMN AND N) OR NEXT_ADDRES όπου OR: high_order bit OR * ΑΝ JAM = 100 τότε MBR OR NEXT_ADDRESS όπου OR: 8 low_order bit OR Για τη υλοποίηση δείτε λεπτομέρειες στο βιβλίο.

Έλεγχος Mικροεντολών (4) Η κατάσταση κατά την εκκίνηση διαφόρων μικροεντολών. a) Main1. b) goto1. c) goto2. d) goto3. e) goto4. Με τη βοήθεια του προσομοιωτή μελετήστε την μικρο-εκτέλεση της εντολής IJVM/JAS goto σε ένα πραγματικό απλό πρόγραμμα.

RTL/MAL: Κλήση/Επιστροφή Μεθόδου INVOKEVIRUAL disp κλήση μεθόδου disp: σχετική έμμεση διεύθυνση 2bytes (CPP, PC) IRETURN επιστροφή από μέθοδο Άσκηση: Με τη βοήθεια του προσομοιωτή μελετήστε τις μικροακολουθίες για την κλήση και επιστροφή μεθόδου. Αντικαταστήστε τα ονόματα στα διαγράμματα με πραγματικές δεκαεξαδικές τιμές από το παράδειγμά σας.

RTL/MAL: Κλήση Μεθόδου

Κλήση Μεθόδου στη IJVM (1) Bytes 0,1 = no of params Bytes 2,3 = local var frame size Byte 4 = first instruction New Method methodname New PC Δεξαμενή Σταθερών Στοίβα Τοπικών Μεταβλητών Περιοχή Μεθόδων Στοίβα Τρεχόντων Τελεστέων Υπολογισμός PC κατά τη κλήση μεθόδου με όνομα methodname. Τα πρώτα 4 bytes έχουν ειδική σημασία.

Κλήση Μεθόδου στη IJVM (2) Εκτέλεση INVOKEVIRTUAL methodname * O PC της καλούσας μεθόδου αυξάνεται κατά ένα, ώστε να είναι έτοιμος για την επιστροφή. Αποθηκεύεται προσωρινά στο OPC. * Φορτώνεται ο νέος PC. * Φορτώνεται ο αριθμός των παραμέτρων και ο αριθμός των τοπικών μεταβλητών ώστε να καθοριστούν οι νέες τιμές των SP, LV. * Φορτώνεται ο νέος SP. * Οι PC, LV της καλούσας μεθόδου σώζονται στη κορυφή του νέου stack. * Στη θέση του OBJREF σώζεται η διεύθυνση του PC της καλούσας μεθόδου (link ptr) * O PC της νέας μεθόδου αυξάνεται κατά ένα, δείχνει στη πρώτη εντολή. * Φορτώνεται νέος LV. *...

Κλήση Μεθόδου στη IJVM (3) 2.Φόρτωση νέου PC μέσω CPP 3.Υπολογισμός και φόρτωση νέου SP 4. Σώσιμο παλιών PC,LV 1.Εισαγωγή OBJREF + Εισαγωγή Παραμέτρων Σειρά κλήσης 5. Link προς παλιό PC 6. Φόρτωση νέου LV (a) Η μνήμη πριν την εκτέλεση της INVOKEVIRTUAL. (b) Η μνήμη μετά την εκτέλεσή της.

RTL/MAL: Επιστροφή Μεθόδου

Επιστροφή Μεθόδου στη IJVM (1) Εκτέλεση IRETURN * Ο τρέχων SP αποθηκεύεται προσωρινά στο TOS. * Φορτώνεται ως προηγούμενος SP ο τρέχων LV. * Φορτώνεται o ποηγούμενος PC μέσω του LV. * Φορτώνεται ο προηγούμενος LV (πάνω από προηγούμενο PC). * Στη θέση του δείκτη θέσης (εκεί που δείχνει ο SP) αποθηκεύεται η επιστρεφόμενη τιμή (αυτή που δείχνει ο TOS). Όλες οι άλλες τιμές χάνονται, μόνο μια τιμή επιστρέφεται. *...

Επιστροφή Μεθόδου στη IJVM (2) 3. Πρώην LV πάνω από πρώην PC 2. Πρώην PC εκεί που δείχνει ο πρώην SP ή ο LV 4. Τιμή Επιστροφής 1. Πρώην SP εκεί που δείχνει ο o LV πρώην SP (a) Η μνήμη πριν την εκτέλεση της IRETURN. (b) Η μνήμη μετά την εκτέλεσή της.

Τροποποίηση Mic-1 (1) 1. Τροποποίηση Μικροαρχιτεκτονικής: αλλαγή του τρόπου εκτέλεσης μιας εντολής από το Επίπεδο Συνόλου Εντολών, χωρίς αυτό να γίνει αντιληπτό στον προγραμματιστή ανωτέρου επιπέδου (τυπική περίπτωση backward compatibility). Θα αναλυθεί στη επόμενη ενότητα. 2. Τροποποίηση Συνόλου Εντολών: αλλαγή (προσθήκη συνήθως) νέας εντολής στο Επίπεδο Συνόλου Εντολών, και συνακόλουθη εισαγωγή του αντίστοιχου μικροπρογράμματος στην μικροrom. Η αλλαγή αυτή μπορεί να βασίζεται στην υπάρχουσα μικροαρχιτεκτονική ή να συνδυάζεται με αλλαγή της όπως στο 1. Θα εξετάσουμε τη περίπτωση που βασιζόμαστε στην υπάρχουσα μικροαρχιτεκτονική. Απαιτείται αλλαγή (δες Help του προσομοιωτή) : - στο κώδικα της μικροαρχιτεκτονικής (αρχείο mic1ijvm.mal) - στο αρχείο διαμόρφωσης του assemlbler (αρχείο ijvm.conf)

Τροποποίηση Mic-1 (2) Δημιουργία εντολής IJVM/JAS IFNEQ offset 1. Τροποποίηση αρχείου mic1ijvm.mal 1.1. Εισαγωγή label ifneq1 0x9A // opcode της εντολής 1.2. Εισαγωγή RTL/MAL κώδικα ifneq1 ifneq2 ifneq3 ifneq4 MAR = SP = SP -1; rd OPC = TOS TOS = MDR Z = OPC; if (Z) goto F; else goto T 2. Τροποίηση αρχείου διαμόρφωσης ijvm.conf Εισαγωγή γραμμής 0x9A IFNEQ label