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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

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

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

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

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

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

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

Arqitektonik Upologist n

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

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

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

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

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

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

Υλοποίηση Mικροεπεξεργαστή MIPS -16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

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

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

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

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 Εισαγωγή στους Eπεξεργαστές Παράδειγμα Αρχιτεκτονικής: Mic-1 Παράδειγμα Γλώσσας Μηχανής: IJVM Προγραμματισμός JAS και IJVM Εισαγωγή στη Μικροαρχιτεκτονική Παράδειγμα Μικροαρχιτεκτονικής: Mic-1 Μέτρηση Απόδοσης

Aρχιτεκτονική απλού υπολογιστή Τυπικό σύστημα υπολογιστή με πολλαπλούς διαύλους.

Αρχιτεκτονική απλής CPU

Λειτουργία απλού συστήματος CPU-Μνήμης Address Content 00..0 01100..0 MAR MDR PC IR General Purpose Registers SP BP Special Purpose Registers FF..F 0100..0 Memory CPU Διαδρομές δεδομένων (Data paths) σε μια τυπική CPU, οι βασικοί καταχωρητές και η επικοινωνία με τη μνήμη.

Βασικοί Καταχωρητές Μετρητής Προγράμματος (Program Counter, PC) Καταχωρητής Εντολών (Instruction Register, IR) Καταχωρητής Διευθύνσεων Μνήμης (Memory Address Register, MAR) Καταχωρητής Δεδομένων Μνήμης (Memory Data Register, MDR) Δείκτης Στοίβας (Stack Pointer, SP) Δείκτης Βάσης (Base Pointer, BP) και Offset, Index κλπ Registers Συσσωρευτής (Accumulator, AC) Ή Α, Β, C... (ή Register Bank) Ή μηχανή στοίβας = 1 καταχωρητής = πολλοί γενικοί καταχωρητές = κανένας καταχωρητής Καταχωρητής Κατάστασης (Status Register, SR)

Ανάκληση Εκτέλεση (Fetch Execute) (1) A. Ανάκληση της εντολής που δείχνει ο Μετρητής Προγράμματος από τη μνήμη και τοποθέτησή της στον Καταχωρητή Εντολών B. Τροποποίηση του Μετρητή Προγράμματος ώστε να δείχνει την επόμενη εντολή C. Αποκωδικοποίηση της εντολής που βρίσκεται στον Καταχωρητή Εντολών D. (Πιθανή) ανάκληση των δεδομένων από τη μνήμη σε καταχωρητή(ές) E. Εκτέλεση της εντολής και αποθήκευση του αποτελέσματος σε καταχωρητή F. (Πιθανή) αποθήκευση του αποτελέσματιος στη μνήμη G. Επανάληψη από το βήμα Α

Ανάκληση Εκτέλεση (Fetch Execute) (2)... Διερμηνέας για έναν απλό υπολογιστή (σε Java).

Ανάκληση Εκτέλεση (Fetch Execute) (3) data_loc = store_data(instr, instr_type); memory[data_loc] = data;.. private static int store_data(int instr, int type) {...}

Βασικοί Tύποι CPU από πλευράς γενικών καταχωρητών Συσσωρευτή (Accumulator) Μόνο ένας καταχωρητής γενικού σκοπού. Απλό μοντέλο αλλά πολλές μεταφορές από-προς μνήμη και πολλές εντολές. Μικρές CPU's. Στοίβας (Stack) Οι καταχωρητές (ή η μνήμη) προσπελαύνονται μόνο μέσω εντολών διαχείρισης μιας στοίβας (Push, Pop). Απλή στη σύλληψη αλλά δύσκολη στη προσπέλαση, πολλές μετακινήσεις δεδομένων στη στοίβα. JVM. Πολλαπλών Καταχωρητών (Register Bank) Σύγχρονοι υπολογιστές. Πολλοί όμοιοι (γενικά) καταχωρητές. Προσοχή στις πολλές διευθύνσεις και τύπους εντολών (RISC, CISC). Βοήθεια από compiler και CPU.

Παράδειγμα CPU Συσσωρευτή (Accumulator)

Παράδειγμα CPU Μηχανής Στοίβας (Stack)

Παράδειγμα CPU Πολλών Καταχωρητών (Register Bank)

Γλώσσα Μηχανής (1) Οι παρακάτω έννοιες θα εξηγηθούν αναλυτικότερα στην ενότητα της Αρχιτεκτονικής Συνόλου Εντολών (ISA Level). Κωδικοποίηση: 'Aυθαίρετη' χρήση δυαδικού συστήματος. Διαφορετική για κάθε αρχιτεκτονική CPU. Χρήση μνημονικών συμβόλων (mnemonics) για ευκολία Το μνημονικό iadd στο Mic-1 αντιστοιχεί στην εντολή πρόσθεσης της γλώσσας μηχανής με δυαδική παράσταση 0x60 ή 0110 0000 Γλώσσα Αssembly = Συμβολική γλώσσα. Σχέση εντολών μια-προς-μια με Γλώσσα μηχανής. Αssembler = Συμβολομεταφραστής

Γλώσσα Μηχανής (2) Σύνταξη: Kωδικός Εντολής (op code) Έντελα /τελεστές /τελεστέοι (operands) Τα operands μπορεί να είνα από 0 έως 3, ανάλογα με την εντολή και το τύπο της CPU (ΑC, Stack ή Regs). Πχ iadd iload x iinc x 1 0 operands 1 operand 2 operands Τρόποι Διεθυνσιοδότησης (Addressing Modes): Οι συμβάσεις ονοματοδοσίας και χρήσης των operands. Τα οperands μπορεί να είναι αριθμοί, διευθύνσεις, καταχωρητές ή συνδυασμός. Μεταβλητό μήκος εντολών σε αριθμό bytes σε γλώσσα μηχανής.

Γλώσσα Μηχανής (3) Τύποι (Λειτουργίες, Σημασία): Μετακίνηση Δεδομένων (από/προς μνήμη/καταχωρητές) Πχ iload x Αριθμητικές - Λογικές Πράξεις, Συγκρίσεις Πχ iadd Έλεγχος ροής προγράμματος (μεταβολή PC) με συνθήκη ή χωρίς Πχ goto label iflt label Κλήση ρουτίνας και Επιστροφή Πχ invokevirual ireturn -------------------------------------------------------------------------Κατάσταση Επεξεργαστή - Διαχείριση Διακοπών

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

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) * Προσωρινή αποθήκευση ενδιάμεσων αποτελεσμάτων για

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)

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 μνήμη για τα δεδομένα.

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

Αρχιτεκτονική Υπολογιστών Mic-1 και IJVM Εισαγωγή στους Eπεξεργαστές Παράδειγμα Αρχιτεκτονικής: Mic-1 Παράδειγμα Γλώσσας Μηχανής: IJVM Προγραμματισμός 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 επιστροφή από μέθοδο Οι εντολές αυτές αναλύονται παρακάτω. Για κάθε εντολή: προσέξτε τη σύνταξη (τους operands) και τη διευθυνσιοδότηση.

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

Δομή Προγράμματος 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 = 0; 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 = 0; 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

Είσοδος και Έξοδος Εντολές 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 Προσοχή: Δουλεύουν ΜΟΝΟ με ένα ΑSCII κάθε φορά!

Κλήση Μεθόδου στη 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 // ***** int temp; 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 0 (temp == 0) eq: BIPUSH 0 GOTO done // ***** return -1 (temp < 0) lt: BIPUSH -1 // ***** }; 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 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 Πολύ Απλή Μέθοδος JAS (3) Μετά το return SP 0x0000 ή 0x0001 ή FFFF LV runtime PC tuntime z y x LV Link ptr runtime

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

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

Άμεση Εκτέλεση (1) Άμεση εκτέλεση: O Eπεξεργαστής είναι μια (περίπλοκη) Μηχανή Πεπερασμένων Καταστάσεων. Έχουμε 2 βασικές καταστάσεις που επαναλαμβάνονται συνεχώς: Ανάκληση (FETCH) Εκτέλεση (EXECUTE) Η Εκτέλεση αναλύεται σε επιμέρους καταστάσεις (βήματα), ανάλογα με τη συνθετότητα του Επεξεργαστή -και της Γλώσσας Μηχανής. Σε κάθε βήμα της εκτέλεσης, η τρέχουσα κατάσταση, σε συνδυασμό με την είσοδο (το opcode, τους operands και άλλα στοιχεία, πχ τα αποτελέσματα μιας πράξης στην ΑLU), παράγει σήματα ελέγχου προς τα μέρη της CPU (έξοδος) και οδηγεί σε νέα κατάσταση, μέχρι την επιστροφή στην κατάσταση Ανάκλησης.

Άμεση Εκτέλεση (2) Clocked Cοntrol signals to CPU parts FSM From ALU

Άμεση Εκτέλεση (3) Παρακάτω απαριθμούνται ορισμένες από τις επιμέρους καταστάσεις της Εκτέλεσης: Αποκωδικοποίηση (Decode) Ανάκληση τελεστέων (Operand fetch) Yπολογισμός νέου PC (PC=PC+1 ή PC+ GOTO offset ή IF offset) Ανάγνωση δεδομένων από Μνήμη (Mem Read) Φόρτωση από Καταχωρητές σε διαύλους ALU (REG Read) Εκτέλεση πράξης ALU (ALU op) Αποθήκευση στους Καταχωρητές απο έξοδο ALU (Reg WriteBack) Εγγραφή δεδομένων στη Μνήμη (Mem Write) Το opcode της εντολής μπορεί να περιέχει σε κωδικοποιημένη μορφή τη διαδοχή των καταστάσεων κάθε εντολής. Οι τελεστέοι περιέχουν κωδικοποιημένα (με βάση τη μορφή διευθυνσιοδότησης) τις διευθύνσεις μνήμης ή αριθμούς καταχωρητών ή απόλυτες τιμές δεδομένων.

Άμεση Εκτέλεση (4) Ενδεικτικός Γράφος Μετάβασης Καταστάσεων Μονάδας Ελέγχου CPU υλοποιημένης μέσω Μηχανής Πεπερασμένων Καταστάσεων.

'Αμεση Εκτέλεση (5) Χρήση PLA για υλοποίηση FSM

Άμεση Εκτέλεση (6) Υπέρ: Άμεση υλοποίηση στο υλικό (ταχύτητα). Βελτιστοποίηση λογικών κυκλωμάτων (οικονομία). Κατά: Δυσκολία τροποποιήσεων και επεκτάσεων (νέο υλικό). Δυσκολία υλοποίησης σύνθετων εντολών γλώσσας μηχανής. Καλή λύση για επεξεργαστές ειδικού σκοπού και σχετικά περιορισμένου ρεπερτορίου εντολών.

Διερμηνεία και Μικροκώδικας (1) Διερμηνεία: H εντολή γλώσσας μηχανής χρησιμοποιείται ώς δείκτης (διεύθυνση) για τη προσπέλαση μιας μικρο-μνήμης (μικρο-rom ή μικρο-prom) που βρίσκεται στη CPU και αντικαθιστά τη Μηχανή Πεπερασμένων Καταστάσεων στη Μονάδα Ελέγχου. Κάθε εντολή γλώσσας μηχανής αναλύεται σε βήματα από στοιχειώδη σήματα ελέχου που υλοποιούνται σε διαδοχικούς κύκλους μηχανής. Κάθε βήμα είναι μια μικροεντολή και και το σύνολο των μικροεντολών είναι ο μικροκώδικας. Ο μικροκώδικας στην ουσία περιλαμβάνει τα ίδια σήματα που παρήγαγε η FSM αλλά τώρα αυτά προέρχονται από μια ROM. Με αλλα λόγια η FSM υλοποιείται με Συνδυαστική Λογική και Μνήμη.

Διερμηνεία και Μικροκώδικας (2) Micro Program Counter Instruction Register Microcode memory Status Register From ALU Micro Address Generation Logic Microcode Instruction Register Goto/IF ALU Shift Regs Mem Control Signals to CPU parts Σχηματική διάταξη Μονάδας Ελέγχου CPU με μικροκώδικα

Διερμηνεία και Μικροκώδικας (3) Επομένως η Γλώσσα Μηχανής αναφέρεται σε μια Εικονική Μηχανή η οποία διερμηνεύεται από το Μικροκώδικα ο οποίος αναλαμβάνει πλέον την ουσιαστική εκτέλεση της εντολής Γλώσσας Μηχανής. Ο Μικροκώδικας, πέρα από τη μορφή σημάτων (0 1) προς τα τμήματα της CPU, συνήθως παρουσιάζεται για λόγους εποπτικούς και ελέγχου μέσω μιας Γλώσσας Μεταφοράς Καταχωρητών (Register Transfer Language, RTL). Πχ MAR = SP = SP - 1 Το περιεχόμενο του καταχωρητή SP εισάγεται στην ΑLU, μέσω του διαύλου της CPU, ακολουθεί πράξη Αφαίρεσης μιας μονάδας, και το αποτέλεσμα αποθηκεύευαι στους καταχωρητές MAR και SP.

Διερμηνεία και Μικροκώδικας (4) Οριζόντιος (Horizontal) Μικροκώδικας Λέγεται ο τύπος μικροκώδικα που περιγράψαμε. Κάθε γραμμή μικροκώδικα περιλαμβάνει σήματα (bits) για όλα τα τμήματα της CPU, ανεξάρτητα αν αυτά χρησιμοποιούνται όχι, δίνοντας έτσι τη δυνατότητα πχ παράλληλης λειτουργίας διαφόρων τμημάτων. Κατακόρυφος (Vertical) Mικροκώδικας Για να μειώσουμε το μήκος λέξης του μικροκώδικα (πολλά ανενεργά bits σε κάθε γραμμή) κωδικοποιούμε τα bits του μικροκώδικα ώστε σε διαδοχικά βήματα (κύκλους ρολογιού) ελέγχουν διαφορετικά τμήματα της CPU. Απαιτεί λιγότερα bits αλλα περισσότερη συνδυαστική λογική.

Διερμηνεία και Μικροκώδικας (5) Oριζόντια Μικροεντολή Απαιτείται Αποκωδικοποίηση Κατακόρυφη Μικροεντολή

Διερμηνεία και Μικροκώδικας (6) Yπέρ: Υλοποίηση του ίδιου συνόλου εντολών από διαφορετικό υλικό. Υλοποίηση σύνθετων εντολών χωρίς απαραίτητα να υπάρχει σύνθετο υλικό (περισσότεροι κύκλοι μηχανής). Τροποποίηση συνόλου εντολών χωρίς αλλαγή υλικού. Δομημένος / εύκολος σχεδιασμός (πρόσθετο επίπεδο αφαίρεσης). Κατά: Κόστος απόδοσης (κύκλοι ανάκλησης εκτέλεσης μικρο-rom ) Τάση για υπερβολική ανάπτυξη της Γλώσσας Μηχανής, αφού είναι 'ανέξοδη' η πρόσθεση εντολών.

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

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

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

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

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

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

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

Μικροεντολές Η μορφή μικροεντολής του 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 λαμβάνουν τη τιμή του MDR + 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 Με τη βοήθεια του προσομοιωτή να γράψετε τον αντίστοιχο κώδικα σε MAL και στη συνέχεια να βρείτε ποια εντολή ΙJVM/JAS είναι η παραπάνω. 0101 0011 0111 0100 0001 0000

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

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

Απόδοση (1) Time = I x CPI x Clock Cycle Time - I: Instrumentation (Ενοργάνωση: αρχιτεκτονική, μεταγλωττιστής) - CPI: Cycles Per Instruction (μικροαρχιτεκτονική, oργάνωση) - Clock Cycle Time: τεχνολογία (ταχύτητα ρολογιού) Αλληλεπιδράσεις μεταξύ Ι, CPI και Clock Cycle Time (ίσως και αλληλοσυγκρουόμενοι στόχοι). Για κάθε κατηγόρια εντολών: μέσος όρος κύκλων ανά εντολή (CPI) επί το μέσο ποσοστό εντολών ανά πρόγραμμα.

Παράδειγμα Χρήσης Εντολών: Top 10 Intel X86 Instructions Κατηγορία Εντολή Μέσο ποσοστό συνολικής εκτέλεσης 1 load 22% 2 conditional branch 20% 3 compare 16% 4 store 12% 5 add 8% 6 and 6% 7 sub 5% 8 move register-register 4% 9 call 1% 10 return 1% Total 96% Κινήσεις = 38% Πράξεις = 35% Διακλαδώσεις = 20% Κλήσεις = 2%

Απόδοση (2) FLOPs: Floating Point Operations per Second MIPs: Million Instructions per Second MIPs = Εντολές/Χρόνος Χ 106 ή Συχνότητα/CPI X 106 Έστω ότι έχουμε έναν επεξεργαστή που κάνει 1 πράξη κινητής υποδιαστολής (απλής ακρίβειας) σε κάθε κύκλο ρολογιού: Αν η συχνότητά του είναι 1GHz, τότε έχει απόδοση 1 GFLOP Αν ολοκληρώνει 1 εντολή σε κάθε κύκλο, τότε έχει απόδοση 1000MIPs 4 x freq FLOPS < {single Core 2 @ 2.93GHz} < 8 x freq FLOPs Εξαρτάται από την πράξη, FPADD, FPMUL, FPDIV (απλής ακριβείας). Για σύγχρονους επεξεργαστές τουλάχιστον 12 GFLOPs/cpu

Απόδοση (3) SPEC Benchmark (Μετροπρόγραμμα) www.spec.org Γιά κάθε πρόγραμμα i υπολόγιζει το execution ratio (ER) ERi=(χρονος σε 300 MHz UltraSun 5_10 / Χρονος μηχανής μέτρησης )* 100 Γεωμετρικός Μέσος των Execution Ratios n προγραμμάτων με Γεωμετρικό Μέσο SpecRatio = Π (ERi) i=1,2,..,n - SPEC CPU2006: 12 integer και 17 floating point εφαρμογές - SPECThroughput, SPECJava... κλπ