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

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

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

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

Περιγραφή αρχιτεκτονικής MIPS MIPS assembly (1o και 2o μέρος)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 2 Εντολές Η γλώσσα της Μηχανής (Instructions Language of the Computer)

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

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

Κεφάλαιο 3. Αριθμητική Υπολογιστών Review. Hardware implementation of simple ALU Multiply/Divide Real Numbers

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Προχωρηµένα Θέµατα Αρχιτεκτονικής

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

ΠΛΕ- 027 Μικροεπεξεργαστές

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

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

Εργαστήριο Αρ. 1. Εισαγωγή στην Αρχιτεκτονική MIPS. Πέτρος Παναγή Σελ. 1

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

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

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

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

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

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

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Κεφ. 4: Ο επεξεργαστής 1. Διάδρομος δεδομένων και μονάδα ελέγχου 2.

ΠΛΕ- 027 Μικροεπεξεργαστές

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

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

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

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

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

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

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

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

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

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

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

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

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

Παραδείγματα Assembly (Μέρος

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

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

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

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Κεφ. 2 Εντολές: H γλώσσα μηχανής

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

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

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

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

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

Σχεδίαση της Διόδου Δεδομένων

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

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

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

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

O επεξεπγαζηήρ: Η δίοδορ δεδομένων (datapath) θαη ε μονάδα ελέγσος (control)

Κεφάλαιο 2 Εντολές Η γλώσσα της Μηχανής (Instructions Language of the Computer)

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

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

Chapter 3. Αριθμητική Υπολογιστών. Έβδομη (7 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

Chapter 3 Αριθμητική Υπολογιστών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Transcript:

Οργάνωση Υπολογιστών 5 συστατικά στοιχεία -Επεξεργαστής: datapath (δίοδος δεδοµένων) (1) και control (2) -Μνήµη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!) Συσκευές γρήγορες π.χ. κάρτες γραφικών, αργές π.χ. πληκτρολόγιο. Για το Ι/Ο έχει γίνει η λιγότερη έρευνα..(i/o busses, I/O switched fabrics ) Ιεραρχία Μνήµης: καταχωρητές, κρυφή µνήµη (L1), κρυφή µνήµη (L2), κύρια Μνήµη- ΠΟΛΥ ΣΗΜΑΝΤΙΚΟ ΣΤΟΙΧΕΙΟ! 1

Instruction Fetch (IF) Instruction Decode (ID) Operand Fetch (OF) Execute (Ex) Result Store (WB) Next Instruction Αρχιτεκτονικές Συνόλου Εντολών Αριθµός εντολών Instruction Set Architectures Μορφή Εντολών: µεταβλητό ή σταθερό µέγεθος bytes για κάθε εντολή; (8086 1-17 bytes, MIPS 4 bytes) Πώς γίνεται η αποκωδικοποίηση (ID); Που βρίσκονται τα ορίσµατα (operands) και το αποτέλεσµα: Μνήµη-καταχωρητές, πόσα ορίσµατα, τι µεγέθους; Ποια είναι στη µνήµη και ποια όχι; Πόσοι κύκλοι για κάθε εντολή; 2

Κατηγορίες Αρχιτεκτονικών Συνόλου Εντολών (ISA Classes) 1. Αρχιτεκτονικές Συσσωρευτή (accumulator architectures) (µας θυµίζει κάτι?) 2. Αρχιτεκτονικές επεκταµένου συσσωρευτή ή καταχωρητών ειδικού σκοπού (extended accumulator ή special purpose register) 3. Αρχιτεκτονικές Καταχωρητών Γενικού Σκοπού 3α. register-memory 3b. register-register (RISC) 3

Αρχιτεκτονικές Συσσωρευτή (1) 1η γενιά υπολογιστών: h/w ακριβό, µεγάλο µέγεθος καταχωρητή. Ένας καταχωρητής για όλες τις αριθµητικές εντολές (συσσώρευε όλες τις λειτουργίες Συσσωρευτής (Accum) Σύνηθες: 1ο όρισµα είναι ο Αccum, 2o η µνήµη, αποτέλεσµα στον Accum π.χ. add 200 Παράδειγµα: A = B + C Accum = Memory(AddressB); Accum = Accum + Memory(AddressC); Memory(AddressA) = Accum; Load AddressB Add AddressC Store AddressA Όλες οι µεταβλητές αποθηκεύονται στη µνήµη. εν υπάρχουν βοηθητικοί καταχωρητές 4

Αρχιτεκτονικές Συσσωρευτή (2) Κατά: Χρειάζονται πολλές εντολές για ένα πρόγραµµα Κάθε φορά πήγαινε-φέρε από τη µνήµη (? Κακό είναι αυτό) Bottleneck o Accum! Υπέρ: Εύκολοι compilers, κατανοητός προγραµµατισµός, εύκολη σχεδίαση h/w Λύση; Πρόσθεση καταχωρητών για συγκεκριµένες λειτουργίες (ISAs καταχωρητών ειδικού σκοπού) 5

Αρχιτεκτονικές Επεκταµένου Συσσωρευτή Καταχωρητές ειδικού σκοπού π.χ. δεικτοδότηση, αριθµητικές πράξεις Υπάρχουν εντολές που τα ορίσµατα είναι όλα σε καταχωρητές Κατά βάση (π.χ. σε αριθµητικές εντολές) το ένα όρισµα στη µνήµη. 6

Αρχιτεκτονικές Καταχωρητών γενικού σκοπού Register-memory Αφήνουν το ένα όρισµα να είναι στη µνήµη (πχ. 80386) Load R1, B Add R1, C Store A, R1 A=B+C extended-accumulator Register-register (load store) (1980+) Load R1, B Load R2, C Add R3, R1, R2 Store A, R3 register-register Memory-memory accumulator register-memory 7

Αρχιτεκτονική Στοίβας Καθόλου registers! Stack model ~ 1960!!! Στοίβα που µεταφέρονται τα ορίσµατα που αρχικά βρίσκονται στη µνήµη. Καθώς βγαίνουν γίνονται οι πράξεις και το αποτέλεσµα ξαναµπαίνει στη στοίβα. Θυµάστε τα HP calculators µε reverse polish notation A=B+C push Address C push AddressB add pop AddressA 8

Εντολές µεταβλητού µήκους: 1-17 bytes 80x86 1-54 bytes VAX, IBM Γιατί?? Ιnstruction Memory ακριβή, οικονοµία χώρου!!!! Εµείς στο µάθηµα: register-register ISA! (load- store) 1. Οι καταχωρητές είναι γρηγορότεροι από τη µνήµη 2. Μειώνεται η κίνηση µε µνήµη 3. υνατότητα να υποστηριχθεί σταθερό µήκος εντολών 4. (τα ορίσµατα είναι καταχωρητές, άρα ό αριθµός τους (πχ. 1-32 καταχωρητές) όχι δ/νσεις µνήµης 9 Compilers πιο δύσκολοι!!!

Βασικές Αρχές Σχεδίασης (patterson-hennessy COD2e) 1. Η οµοιοµορφία των λειτουργιών συµβάλλει στην απλότητα του υλικού (Simplicity favors Regularity) 2. Όσο µικρότερο τόσο ταχύτερο! (smaller is faster) 3. H καλή σχεδίαση απαιτεί σηµαντικούς συµβιβασµούς (Good design demands good compromises) Γενικότητες? Θα τα δούµε στη συνέχεια... 10

MIPS σύνολο εντολών: Λέξεις των 32 bit (µνήµη οργανωµένη σε bytes, ακολουθεί το µοντέλο big Εndian) 32 καταχωρητές γενικού σκοπού - REGISTER FILE Θα µιλήσουµε για: εντολές αποθήκευσης στη µνήµη (lw, sw) Αριθµητικές εντολές (add, sub κλπ) Εντολές διακλάδωσης (branch instructions) εν αφήνουµε τις εντολές να έχουν µεταβλητό πλήθος ορισµάτων- π.χ. add a,b,c πάντα: a=b+c Θυµηθείτε την 1η αρχή: H οµοιοµορφία των λειτουργιών συµβάλλει στην απλότητα του h/w 11

Αφού οι καταχωρητές είναι τόσο...«γρήγοροι» γιατί να µην µεγαλώσουµε το µέγεθος του register file? 2η αρχή: Όσο µικρότερο τόσο ταχύτερο! Αν το register file πολύ µεγάλο, πιο πολύπλοκη η αποκωδικοποίηση, πιο µεγάλος ο κύκλος ρολογιού (φάση ID) άρα...υπάρχει tradeoff Μνήµηοργανωµένη σε bytes: (Κάθε byte και ξεχωριστή δνση) 2 30 λέξεις µνήµης των 32 bit (4 bytes) κάθε µια Memory [0] Memory [4] Memory [8] Memory [12] $s0, $s1, καταχωρητές (µεταβλητές συνήθως) $t0, $t1, καταχωρητές (προσωρινές τιµές) $zero ειδικός καταχωρητής περιέχει το 0 32 bits 32 bits 32 bits 32 bits 12

Κανόνες Ονοµατοδοσίας και Χρήση των MIPS Registers Εκτός από το συνήθη συµβολισµό των καταχωρητών µε $ ακολουθούµενο από τον αριθµό του καταχωρητή, µπορούν επίσης να παρασταθούν και ως εξής : Αρ. Καταχωρητή Όνοµα Χρήση Preserved on call? 0 1 2-3 4-7 8-15 16-23 24-25 26-27 28 29 30 31 $zero $at $v0-$v1 $a0-$a3 $t0-$t7 $s0-$s7 $t8-$t9 $k0-$k1 $gp $sp $fp $ra Constant value 0 Reserved for assembler Values for result and expression evaluation Arguments Temporaries Saved More temporaries Reserved for operating system Global pointer Stack pointer Frame pointer Return address n.a. όχι όχι ναι όχι ναι όχι ναι ναι ναι ναι ναι 13

Big Endian vs Little Endian Big Endian: H δνση του πιο σηµαντικού byte (MSB) είναι και δνση της λέξης Little Endian: H δνση του λιγότερο σηµαντικού byte (LSB) είναι και δνση της λέξης H λέξη αποθηκεύεται πάντα σε συνεχόµενες θέσεις: δνση, δνση+1,..,δνση+3 BIG_ENDIAN LITTLE_ENDIAN A[0] A[1] A[2] 0 1 2 3 4 5 6 7 8 9 10 11 MSB LSB MSB LSB MSB LSB 8 bits A[0] A[1] A[2] 0 1 2 3 4 5 6 7 8 9 10 11 LSB MSB LSB MSB LSB MSB 14

MIPS ISA (βασικές εντολές) Αριθµητικές εντολές add, sub: πάντα τρία ορίσµατα - ποτέ δνση µνήµης! add $s1, $s2, $s3 # $s1 = $s2+$s3 sub $s1, $s2, $s3 # $s1 = $s2-$s3 Εντολές µεταφοράς δεδοµένων (load-store): Εδώ έχουµε αναφορά στη µνήµη (πόσοι τρόποι? Θα το δούµε στη συνέχεια) lw $s1, 100($s2) # $s1 = Memory(100+$s2) (load word) sw $s1, 100($s2) # Memory(100+$s2) = $s1(store word) 15

MIPS Arithmetic Instructions Παραδείγµατα Instruction Παράδειγµα Έννοια Σχόλια add add $1,$2,$3 $1 = $2 + $3 3 operands; exception possible subtract sub $1,$2,$3 $1 = $2 $3 3 operands; exception possible add immediate addi $1,$2,100 $1 = $2 + 100 + constant; exception possible add unsigned addu $1,$2,$3 $1 = $2 + $3 3 operands; no exceptions subtract unsigned subu $1,$2,$3 $1 = $2 $3 3 operands; no exceptions add imm. unsign. addiu $1,$2,100 $1 = $2 + 100 + constant; no exceptions multiply mult $2,$3 Hi, Lo = $2 x $3 64-bit signed product multiply unsigned multu$2,$3 Hi, Lo = $2 x $3 64-bit unsigned product divide div $2,$3 Lo = $2 $3, Lo = quotient, Hi = remainder Hi = $2 mod $3 divide unsigned divu $2,$3 Lo = $2 $3, Unsigned quotient & remainder Hi = $2 mod $3 Move from Hi mfhi $1 $1 = Hi Used to get copy of Hi Move from Lo mflo $1 $1 = Lo Used to get copy of Lo 16

MIPS Logic/Shift Instructions Παραδείγµατα Instruction Παράδειγµα Έννοια Σχόλια and and $1,$2,$3 $1 = $2 & $3 3 reg. operands; Logical AND or or $1,$2,$3 $1 = $2 $3 3 reg. operands; Logical OR xor xor $1,$2,$3 $1 = $2 $3 3 reg. operands; Logical XOR nor nor $1,$2,$3 $1 = ~($2 $3) 3 reg. operands; Logical NOR and immediate andi $1,$2,10 $1 = $2 & 10 Logical AND reg, constant or immediate ori $1,$2,10 $1 = $2 10 Logical OR reg, constant xor immediate xori $1, $2,10 $1 = ~$2 &~10 Logical XOR reg, constant shift left logical sll $1,$2,10 $1 = $2 << 10 Shift left by constant shift right logical srl $1,$2,10 $1 = $2 >> 10 Shift right by constant shift right arithm. sra $1,$2,10 $1 = $2 >> 10 Shift right (sign extend) shift left logical sllv $1,$2,$3 $1 = $2 << $3 Shift left by variable shift right logical srlv $1,$2, $3 $1 = $2 >> $3 Shift right by variable shift right arithm. srav $1,$2, $3 $1 = $2 >> $3 Shift right arith. by variable 17

MIPS data transfer instructions Παραδείγµατα Instruction Σχόλια sw 500($4), $3 Store word sh 502($2), $3 Store half sb 41($3), $2 Store byte lw $1, 30($2) Load word lh $1, 40($3) Load halfword lhu $1, 40($3) Load halfword unsigned lb $1, 40($3) Load byte lbu $1, 40($3) Load byte unsigned lui $1, 40 Load Upper Immediate (16 bits shifted left by 16) LUI R5 R5 0000 0000 18

MIPS Branch, Compare, Jump Παραδείγµατα Instruction Παράδειγµα Έννοια branch on equal beq $1,$2,100 if ($1 == $2) go to PC+4+100 Equal test; PC relative branch branch on not eq. bne $1,$2,100 if ($1!= $2) go to PC+4+100 Not equal test; PC relative branch set on less than slt $1,$2,$3 if ($2 < $3) $1=1; else $1=0 Compare less than; 2 s comp. set less than imm. slti $1,$2,100 if ($2 < 100) $1=1; else $1=0 Compare < constant; 2 s comp. set less than uns. sltu $1,$2,$3 if ($2 < $3) $1=1; else $1=0 Compare less than; natural numbers set l. t. imm. uns. sltiu $1,$2,100 if ($2 < 100) $1=1; else $1=0 Compare < constant; natural numbers jump j 10000 go to 10000 Jump to target address jump register jr $31 go to $31 For switch, procedure return jump and link jal 10000 $31 = PC + 4; go to 10000 For procedure call 19

Παράδειγµα: υποθέτουµε ότι η µεταβλητή h είναι αποθηκευµένη στον καταχωρητή $s2 και η αρχή του πίνακα Α (base address) βρίσκεται στο καταχωρητή $s3 O A είναι πίνακας 100 λέξεων των 32 bit εκάστη. Πώς γράφεται το: A[12]= h + A[8] ; lw $t0, 32($s3) # temporary reg. $t0 gets A[8] add $t0, $s2, $t0 # temporary reg. $t0 gets h + A[8] sw $t0, 48($s3) # stores h+a[8] back into A[12] 20

Μορφή Εντολής - Instruction Format Θυµηθείτε το 1ο κανόνα: Η οµοιοµορφία των λειτουργιών συµβάλλει στην απλότητα του υλικού R-Type (register type) op 6 bits rs 5bits rt 5bits rd 5bits shamt 5bits Op: opcode rs,rt: register source operands Rd: register destination operand Shamt: shift amount Funct: op specific (function code) add $rd, $rs, $rt funct 6bits 21

MIPS R-Type (ALU) R-Type: Όλες οι εντολές της ALU που χρησιµοποιούν 3 καταχωρητές OP rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Παραδείγµατα : add $1,$2,$3 and $1,$2,$3 sub $1,$2,$3 or $1,$2,$3 Destination register in rd Operand register in rt Operand register in rs 22

Ερώτηση: Μας αρκεί το R-Type? Τι γίνεται µε εντολές που θέλουν ορίσµατα διευθύνσεις ή σταθερές? Θυµηθείτε, θέλουµε σταθερό µέγεθος κάθε εντολής (32 bit) Απάντηση: Μάλλον όχι Άρα: H καλή σχεδίαση απαιτεί σηµαντικούς συµβιβασµούς (3η αρχή) Ι-Type: op rs rt address_offset 6 bits 5 bits 5 bits 16 bits lw $rt, address_offset($rs) Τα 3 πρώτα πεδία (op,rs, rt) έχουν το ίδιο όνοµα και µέγεθος όπως και πριν 23

MIPS I-Type : Load/Store OP rs rt address 6 bits 5 bits 5 bits 16 bits address: 16-bit memory address offset in bytes added to base register. Παραδείγµατα : Offset base register in rs source register in rt Store word: sw 500($4), $3 Load word: lw $1, 30($2) Destination register in rt Offset base register in rs 24

MIPS ALU I-Type Οι I-Type εντολές της ALU χρησιµοποιούν 2 καταχωρητές και µία σταθερή τιµή I-Type είναι και οι εντολές Loads/stores, conditional branches. OP rs rt immediate 6 bits 5 bits 5 bits 16 bits immediate: Constant second operand for ALU instruction. Παραδείγµατα : add immediate: addi $1,$2,100 and immediate andi $1,$2,10 Result register in rt Constant operand in immediate Source operand register in rs 25

Εντολές διακλάδωσης-branching instructions branch if equal beq $s3, 4s4, L1 # goto L1 if $s3 equals $s4 branch if!equal bne $s3, 4s4, L1 # goto L1 if $s3 not equals $s4 unconditional Jump jr $t1 # goto $t1... είναι I Type εντολές slt $t0, $s3, $s4 #set $t0 to 1 if $s3 is less than $s4;else set $t0 to 0 Όµως: j L1 # goto L1 Πόσο µεγάλο είναι το µήκος του address L1; Πόσο «µεγάλο» µπορεί να είναι το άλµα; 26

MIPS Branch I-Type OP rs rt address 6 bits 5 bits 5 bits 16 bits address: 16-bit memory address branch target offset in words added to PC to form branch address. Παραδείγµατα : Register in rs Register in rt offset in bytes equal to instruction field address x 4 Branch on equal beq $1,$2,100 Branch on not equal bne $1,$2,100 27

MIPS J-Type J-Type: jump j, jump and link jal OP jump target 6 bits 26 bits jump target: jump memory address in words. Παραδείγµατα : Jump memory address in bytes equal to instruction field jump target x 4 Branch on equal j 10000 Branch on not equal jal 10000 28

Απ ευθείας διευθυνσιοδότηση- Σταθερές Οι πιο πολλές αριθµητικές εκφράσεις σε προγράµµατα, περιέχουν σταθερές: π.χ. index++ Στον κώδικα του gcc: 52% εκφράσεων έχουν constants Στον κώδικα του spice: 69% των εκφράσεων! Τι κάνουµε µε τις σταθερές (και αν είναι > 16bit;) Θέλουµε: $s3=$s3+2 lw $t0, addr_of_constant_2($zero) add $s3,$s3,$t0 Αλλιώς: addi $s3,$s3,2 (add immediate) Όµοια: slti $t0,$s2, 10 # $t0=1 if $s2<10 29

Τρόποι ιευθυνσιοδότησης στον MIPS: 1. Register Addressing 2. Base or Displacement Addressing 3. Immediate Addressing 4. PC-relative addressing (address is the sum of the PC and a constant in the instruction) 5. Pseudodirect addressing (the jump address is the 26 bits of the instruction, concatenated with the upper bits of the PC) 30

1. Immediate addressing op rs rt Immediate addi $rt,$rs,immediate π.χ. lui $t0, 255 slti $t0, $s1, 10 2. Register addressing op rs rt 3. Base addressing op rs rt rd... funct add $rd,$rs,$rt π.χ. add $t0, $s1,$s2 Address Registers Register Memory Register + Byte Halfword Word 4. PC-relative addressing op lw $rt, address($rs) π.χ. lw $t1,100($s2) rs rt Address Memory PC + Word bne $rs, $rt, address π.χ. bne $s0,$s1,l2 5. Pseudodirect addressing op Address Memory PC Word j address # goto (4 x address)(0:28)-(29:32) (PC) I-Type R-Type I-Type I-Type J-Type 31

Addr. mode Register Immediate Displacement Reg. indirect Indexed Direct Mem. Indirect Autoincrement Autodecrement Scaled Addressing Modes : Παραδείγµατα Παράδειγµα Έννοια χρήση add r4,r3 Regs[r4] Regs[r4]+ Regs[r3] a value is in register add r4,#3 Regs[r4] Regs[r4]+3 for constants add r4,100(r1) Regs[r4] Regs[r4]+Mem[100+ Regs[r1]] local variables add r4,(r1) add r4,(r1+r2) add r4,(1001) Regs[r4] Regs[r4]+Mem[Regs[r1]] Regs[r4] Regs[r4]+Mem[Regs[r1]+ Regs[r2]] Regs[r4] Regs[r4]+Mem[1001] accessing using a pointer or comp. address array addressing (base +offset) addr. static data add r4,@(r3) Regs[r4] Regs[r4]+Mem[Mem[Regs[r3]]] if R3 keeps the address of a pointer p, this yields *p add r4,(r3)+ Regs[r4] Regs[r4]+Mem[Regs[r3]] Regs[r3] Regs[r3]+d add r4,-(r3) Regs[r3] Regs[r3]-d Regs[r4] Regs[r4]+Mem[Regs[r3]] add r4,100(r2)[r3] Regs[r4] Regs[r4]+ Mem[100+Regs[r2]+Regs[r3]*d] stepping through arrays within a loop; d defines size of an element similar as previous to index arrays 32

Επεξεργαστής EDSAC IBM 701 CDC 6600 IBM 360 DEC PDP-8 DEC PDP-11 Intel 8008 Motorola 6800 DEC VAX Intel 8086 Motorola 68000 Intel 80386 MIPS HP PA-RISC SPARC PowerPC DEC Alpha Αριθµός καταχωρητών γενικού σκοπού 1 1 8 16 1 8 1 2 16 8 16 8 32 32 32 32 32 Αρχιτεκτονική Έτος accumulator 1949 accumulator 1953 load-store 1963 register-memory 1964 accumulator 1965 Register-memory 1970 accumulator 1972 accumulator 1974 register-memory, memory-memory 1977 extended accumulator 1978 register-memory 1980 register-memory 1985 load-store load-store load-store load-store load-store 1985 1986 1987 1992 1992 Στοιχεία από το: COD2e Patterson & Hennessy 33