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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

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

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

Τρόποι Διευθυνσιοδότησης

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

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

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

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

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

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

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

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

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

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

Μικροβιολογία & Υγιεινή Τροφίμων

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

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 3 : Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI. Μανόλης Γ.Η. Κατεβαίνης

ΗΥ 232. Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 1. Εισαγωγή στο μάθημα. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής. Αρχιτεκτονική Υπολογιστών. 3ο Μάθημα

Ηλεκτρονικοί Υπολογιστές IV

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

Ηλεκτρονικοί Υπολογιστές

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

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 : Πράξεις με bits. Δρ. Γκόγκος Χρήστος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Πιθανότητες. Συνδυαστική Ανάλυση Διδάσκων: Επίκουρος Καθηγητής Κωνσταντίνος Μπλέκας

Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1.

Ηλεκτρονικοί Υπολογιστές I

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Συστήματα αρίθμησης

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Ιστορία της μετάφρασης

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

Υπολογιστές Ι. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Ηλεκτρονικοί Υπολογιστές IV

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Αρχιτεκτονική Υπολογιστών. Data. Κείμενο. Βίντεο. Αριθμοί Εικόνες. Ήχοι

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

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 8: Μία Απλή Υλοποίηση του MIPS σε Έναν Κύκλο Ρολογιού ανά Εντολή

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

Συστήματα Μικροϋπολογιστών

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

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

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

MIPS functions and procedures

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών. Εισαγωγή. Αρης Ευθυμίου. Πηγές: μάθημα CS61C, UCB

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

ΗΥ 134. Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 1. Εισαγωγή. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Αρχιτεκτονικό σύνολο εντολών Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Αναπαράσταση εντολών Αρης Ευθυμίου

Το σημερινό μάθημα! Η ιδέα του αποθηκευμένου προγράμματος! Η γλώσσα μηχανής του MIPS! Εντολές μορφής R πεδία, χρήση καθενός! Εντολές μορφής I πεδία διευθύνσεις για διακλαδόσεις σχηματισμός μεγάλων σταθερών (εντολή lui)! Εντολές μορφής J 2

Γλώσσα μηχανής temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; Πρόγραμμα σε γλώσσα υψηλού επιπέδου (πχ C) Compiler Πρόγραμμα σε Assembly (π.χ. MIPS) Assembler Πρόγραμμα σε γλώσσα μηχανής (MIPS) lw lw sw sw 0000 1010 1100 0101 $t0, 0($2) $t1, 4($2) $t1, 0($2) $t0, 4($2) 1001 1111 0110 1000 1100 0101 1010 0000 Τα πάντα αναπαριστώνται ως αριθμοί, (δεδομένα, εντολές) 0110 1000 1111 1001 1010 0000 0101 1100 1111 1001 1000 0110 0101 1100 0000 1010 1000 0110 1001 1111! Machine Interpreta4on Hardware Architecture Descrip^on (e.g., block diagrams) Architecture Implementa4on Logic Circuit Descrip^on (Verilog, Circuit Schema^c Diagrams) Πηγή: CS61C, UCB 3

Stored- program computer! Από τις σημαντικότερες ιδέες στην ιστορία των υπολογιστών Πιστώνεται στον John von Neumann! Οι εντολές αναπαριστώνται ως σειρές από bits μπορεί να τις θεωρήσει κανείς «αριθμούς»! Τα προγράμματα αποθηκεύονται στη μνήμη διαβάζονται, γράφονται όπως και τα δεδομένα! Ο υπολογιστής μπορεί να ξαναπρογραμματιστεί σε δευτερόλεπτα παλιότερα έπρεπε να αλλάξει η καλωδίωση. Δουλειά ημερών! 4

Τα πάντα έχουν διεύθυνση! Πρόγραμμα και δεδομένα αποθηκεύονται στη μνήμη άρα έχουν διευθύνσεις! Προγράμματα: οι εντολές διακλάδωσης δείχνουν το στόχο δίνοντας τη διεύθυνση της επόμενης εντολής προς εκτέλεση! αν η συνθήκη είναι αληθινή! Δεδομένα: δείκτες στη μνήμη! Ειδικός καταχωρητής: διεύθυνση τρέχουσας εντολής λέγεται program counter, PC! για ιστορικούς λόγους η Intel τον ονομάζει instrucwon pointer, IP 5

Binary compawbility! Διανομή προγραμμάτων σε κώδικα μηχανής δεν χρειάζεται ο χρήστης να κάνει μεταγλώτιση! Τα προγράμματα δεσμεύονται από την ISA δεν τρέχουν σε διαφορετικό επεξεργαστή! Καινούριοι επεξεργαστές: πρέπει να τρέχουν παλιά προγράμματα (binaries) αλλά και καινούρια που εκμεταλεύονται νέες εντολές! Σύνολα εντολών με συμβατότητα προς τα πίσω (backwards compawble instrucwon sets) εντολές του 8086 (κατασκευή 1981) υποστηρίζονται ακόμη 6

Εντολές ώς «αριθμοί»! Στον MIPS οι εντολές αναπαριστώνται ώς λέξεις των 32 bit το ίδιο και στους περισσότερους RISC επεξεργαστές απλουστεύει την υλοποίηση! Οι λέξεις εντολών χωρίζονται σε πεδία (fields) κάθε πεδίο περιέχει μια πληροφορία σχετική με την εντολή! Στον MIPS υπάρχουν 3 πρότυπα με τα οποία κωδικοποιούνται οι εντολές (instrucwon format types) θα μπορούσε κάθε εντολή να έχει διαφορετική μορφή αλλά για απλοποίηση ακολουθούν ένα από τα 3 πρότυπα 7

Instrucwon formats! I- format: για εντολές με σταθερές (immediates), μεταφορά δεδομένων, και διακλαδόσεις π.χ. lw and sw (το offset είναι στην ουσία μια σταθερά) αλλά όχι για τις εντολές ολίσθησης! J- format: για την εντολή j! R- format: για όλες τις υπόλοιπες! Σε λίγο θα ξεκαθαρίσει γιατί χωρίζονται οι εντολές με αυτό τον τρόπο 8

Εντολές τύπου R Εχουν 6 πεδία: μερικά είναι των 5 bit και μερικά των 6 31 bit 0 5 6 5 5 5 5 6 Για την ευκολία μας, τα πεδία έχουν ονόματα: opcode rs rt rd shamt funct Κάθε πεδίο θα θεωρείται ένας απρόσημος ακέραιος αριθμός των 5, 6 bit Πεδία 5 bit: δυνατές τιμές 0 31 Πεδία 6 bit: δυνατές τιμές 0-63 9

Εντολές τύπου R! Πεδίο opcode καθορίζει, μερικώς, την εντολή πάντα 0 για εντολές τύπου R! Πεδίο funct μαζί με το opcode καθορίζει πλήρως την εντολή διαφορετικός κωδικός για κάθε εντολή, π.χ. 36ten (0x24) - add! Γιατί δεν συνδιάζονται σε ένα πεδίο με περισσότερα bits; θα δούμε σε λίγο...! Πώς μπορώ να βρώ τους κωδικούς; στην πράσινη κάρτα του βιβλίου υπάρχει link πάνω δεξιά στο ecourse 10

R- format, πεδία καταχωρητών! rs (Source Register) ο αριθμός καταχωρητή του πρώτου τελεσταίου πηγής! rt (Target Register) ο αριθμός καταχωρητή του δεύτερου τελεσταίου πηγής το όνομα είναι παραπλανητικό! rd (Deswnawon Register) ο αριθμός καταχωρητή που θα δεχθεί το αποτέλεσμα (καταχωρητής/τελεσταίος προορισμού)! Τα πεδία είναι 5 bit το καθένα κατάλληλα για να καθορίσουν έναν καταχωρητή MIPS (0-31)! Υπάρχουν λίγες εντολές που χρησιμοποιούν τα πεδία διαφορετικά 11

R- format, πεδίο shamt! shamt (shi amount) Αριθμός ολίσθησης (σταθερά) Δεν έχει νόημα ολίσθηση μιας 32 bit λέξης για περισσότερες από 31 θέσεις. 5 bit είναι αρκετά! Είναι πάντα 0 για όλες τις εντολές εκτός από ολισθήσεις 12

Παράδειγμα 1/2 Κωδικοποίηση: add $t0,$s1,$s2 Οι κωδικοί βρίσκονται στην πράσινη κάρτα MIPS opcode = 0 funct = 32 rd = προορισμός: $t0 είναι ο καταχωρητής 8 rs = πηγή 1η: $s1 είναι ο 17 rt = πηγή 2η: $s2 είναι ο 18 shamt = 0. Δεν είναι ολίσθηση 13

Παράδειγμα 2/2 add $t0,$s1,$s2 add $8,$17,$18 Κωδικοποίηση με τα πεδία σε δεκαδικό σύστημα: 0 17 18 8 0 32 Κωδικοποίηση με τα πεδία σε δυαδικό σύστημα: 000000 10001 10010 01000 00000 100000 Ολόκληρη η λέξη εντολής σε δεκαεξαδικό (γλώσσα μηχανής): 0232 4020hex 14

Εντολές τύπου I! Για εντολές με σταθερές (I immediate)! Οι εντολες τύπου R έχουν χώρο για μικρές σταθερές (shamt) αλλά τα 5 bit είναι πολύ λίγα για το εύρος τιμών που χρειάζονται! Συνάδει μερικώς με τον τύπο R κάποια πεδία είναι ίδια! Παρατήρηση: οι εντολές που έχουν σταθερές χρησιμοποιούν το πολύ 2 καταχωρητές! Εντολές I- format: addi, beq, lw, sw, 15

Πεδία εντολών τύπου Ι 31 bit 0 15 6 5 5 16 Πάλι τα πεδία έχουν ονόματα: opcode rs rt immediate Μόνο 1 πεδίο (immediate) είναι διαφορετικό από τη μορφή- R Το opcode βρίσκεται στην ίδια θέση και έχει ίδιο «πλάτος» Οι εντολές R, ξεχωρίζουν από το 0 στο opcode! Με το πεδίο funct (R- type), υπάρχουν περισσότερες επιλογές για κωδικοποίηση εντολών τύπου I 16

Εντολές τύπου I! rs ο αριθμός καταχωρητή του πρώτου τελεσταίου πηγής! rt καταχωρητής προορισμού (target register)! εντολές addi, lw 2ος καταχωρητής πηγής για άλλες εντολές! sw, beq, 17

Πεδίο immediate! Με 16 bit μπορεί να αναπαρασταθούν ως 216 τιμές αρκετά μεγάλος εύρος για offset σε lw, sw ή για σύγκριση, slw! Η σταθερά μετατρέπεται σε 32 bit ανάλογα με την εντολή με επέκταση προσήμου! για lw, sw, addi, slw, με επέκταση με μηδενικά (στα αριστερά)! για addiu,! Αν χρειαζόμαστε μεγαλύτερες σταθερές; αρχή: κάνε τη συνηθισμένη περίπτωση γρήγορη υπάρχουν τρόποι, αλλά χρειάζονται περισσότερες εντολές! συνεχίζεται μετά το επόμενο παράδειγμα. 18

Παράδειγμα 1/2 Κωδικοποίηση: addi $t0,$s1,- 50 Οι κωδικοί βρίσκονται στην πράσινη κάρτα MIPS opcode = 8 rs = πηγή 1η: $s1 είναι ο 17 rt = προορισμός: $t0 είναι ο 8 immediate = - 50ten = FFCEhex συμπλήρωμα ως προς 2 19

Παράδειγμα 2/2 addi $t0,$s1,- 50 add $8,$17,- 50 Κωδικοποίηση με τα πεδία σε δεκαδικό σύστημα: 8 17 8-50 Κωδικοποίηση με τα πεδία σε δυαδικό σύστημα: 001000 10001 01000 1111 1111 1100 1110 Ολόκληρη η λέξη εντολής σε δεκαεξαδικό (γλώσσα μηχανής): 2228 FFCEhex 20

Μεγάλες σταθερές! Πώς μπορούμε να έχουμε μια σταθερά 32 bit; π.χ. για μια μάσκα για την εντολή andi που κρατάει το πιο σημαντικό byte μιας λέξης! Δεν χωράει στις εντολές του MIPS όλη η εντολή είναι 32bit. Δεν θα υπάρχει χώρος για opcode! δεν θέλουμε εντολές με μεταβλητό μέγεθος (άλλες 32, άλλες 64)! Λύση: νέα εντολή lui load upper immediate lui rdst, imm Γράφει («φορτώνει») τη σταθερά στα 16 περισσότερο σημαντικά bit του καταχωρητή (31-16) και μηδενίζει τα υπόλοιπα bit (15-0) 21

Παράδειγμα: 32bit σταθερά! Θέλουμε μια σταθερά: FF0000FFhex για να πάρουμε το 1ο και το τελευταίο byte μιας λέξης εντολή: andi $t0, $s0, 0xff0000ff αλλά δεν γίνεται γιατί η σταθερά είναι πολύ μεγάλη! Γράφουμε: lui $at, 0xff00 ori $at, $at, 0x00ff # όχι addi and $t0, $s0, $at! Νέος καταχωρητής at assembler temporary μόνο για τον assembler. Μη τον πειράζετε! 22

Ψευτοεντολή li! Σύνταξη: li rdest, σταθερά! Γράφει μια σταθερά σε ένα καταχωρητή οποιουδήποτε μεγέθους σταθερά! Ο assembler την μετατρέπει σε μία εντολή (π.χ. ori) αν η σταθερά είναι μικρή (και στα 16 lsb) σε 2 εντολές (π.χ. lui, ori) αλλιώς! γι αυτό χρειάζεται ο καταχωρητής at! Το ίδιο κάνει και η la που έχουμε ήδη δεί η la αντί για σταθερά παίρνει label! Αυτήν επιτρέπεται να την χρησιμοποιείτε στις ασκήσεις 23

Κωδικοποίηση εντολών διακλάδοσης! Εντολές beq, bne τύπου Ι 2 καταχωρητές για σύγκριση (δεν γράφεται αποτέλεσμα) 1 σταθερά για να δείξει τον στόχο της διακλάδωσης (branch target)! από που θα συνεχιστεί η εκτέλεση αν η συνθήκη αληθεύει! Πώς χρησιμοποιείται η σταθερά για να δείξει τη διεύθυνση; 24

Χρήση εντολών διακλάδοσης! Οι εντολές διακλάδωσης χρησιμοποιούνται για if- then, if- then- else, επαναλήψεις: while, for, do- while! Οι ακολουθίες εντολών σε loops, τμήματα then, else είναι σχετικά μικρές π.χ. οι περισσότεροι βρόγχοι είναι < 50 εντολές! Συμπέρασμα: ο στόχος της διακλάδωσης βρίσκεται κάπου κοντά στην εντολή διακλάδοσης και η τρέχουσα διεύθυνση κρατιέται στον Program Counter (PC) 25

PC- relawve addressing! Χρησιμοποιούμε τη σταθερά (immediate) των εντολών διακλάδοσης ως offset του PC μας δείχνει πόσο μακριά (offset) θα πάμε από εδώ που βρισκόμαστε τώρα (PC)! Το offset μπορεί να είναι θετικός ή αρνητικός αριθμός άρα η σταθερά είναι σε συμπλήρωμα ως προς 2! Ο στόχος της διακλάδοσης είναι ± 215 από το PC 26

Απόσταση διακλάδοσης! Μπορούμε να αυξήσουμε λίγο παραπάνω την απόσταση που μπορεί να έχει ο στόχος από την εντ. διακλάδοσης! Ισχύουν τα παρακάτω: Οι διευθύνσεις αναφέρονται σε (χωριστά) bytes Οι εντολές του MIPS είναι πάντα 32bit (4 byte) Ο MIPS απαιτεί οι λέξεις να είναι ευθυγραμμισμένες! Αρα: ο αριθμός των bytes που πρέπει να προστεθούν στο PC θα είναι πάντα πολλαπλάσιος του 4 τα 2 λιγότερο σημαντικά bit του offset θα είναι πάντα 0! Θεωρούμε ότι η σταθερά αναφέρεται σε απόσταση εντολών (λέξεων) όχι σε bytes μπορούμε να φτάσουμε σε ± 215 εντολές από το PC ή ± 218 bytes 27

Υπολογισμός στόχου! Αν δεν ακολουθηθεί η διακλάδωση (branch not taken) η συνθήκη δεν αληθεύει διεύθυνση στόχου: PC + 4 η διεύθυνση της επόμενης εντολής! Αν ακολουθηθεί η διακλάδωση (branch taken) η συνθήκη αληθεύει δεύθυνση στόχου: (PC + 4) + immediate * 4! Υπενθύμιση το immediate μετράει απόσταση εντολών (λέξεων)! μπορεί να είναι θετικό ή αρνητικό η διευθύνση στόχου είναι σε bytes (μνήμη byte addressable)! Γιατί πάντα PC+4; θέμα υλοποίησης σε υλικό 28

Παράδειγμα κωδικ. διακλάδοσης! Κώδικας MIPS: Loop: beq add addi j End: $9,$0,End $8,$8,$10 $9,$9,-1 Loop Μετράμε από την εντολή μετά την διακλάδοση 1 2 3! Πεδία I- Format: opcode = 4 rs = 9 rt = 0 immediate =??? (από το πράσινη κάρτα) (πρώτη πηγή) (δεύτερη πηγή) 29

Παράδειγμα 2/2 beq $9, $0, 3 31 Κωδικοποίηση με τα πεδία σε δεκαδικό σύστημα: 4 9 0 3 Κωδικοποίηση με τα πεδία σε δυαδικό σύστημα: 31 000100 01001 00000 0 0 0000000000000011 Ολόκληρη η λέξη εντολής σε δεκαεξαδικό (γλώσσα μηχανής): 1120 0003hex 30

Εντολές τύπου J! Οι εντολή άλματος (j) χρειάζεται να μπορεί να πάει οπουδήποτε στο πρόγραμμα Ιδανικά χρειάζεται 32bit σταθερά bit 0 25 31 6 26 Ονόματα πεδίων: opcode target address Το opcode βρίσκεται στην ίδια θέση και έχει ίδιο «πλάτος» Μένουν 26 bit για τη σταθερά 31

Διευθύνσεις εντολών J! Χρησιμοποιούμε το ίδιο τρικ με τις διακλαδόσεις η σταθερά αναφέρεται σε λέξεις αντί για bytes έτσι κερδίζουμε 2 bits επιπλέον! Τα υπόλοιπα 4, τα συμπληρώνουμε από τα περισσότερο σημαντικά bit του PC στόχος = { (PC+4)[31..28], target address, 00two } Το {} σημαίνει ένωσε τα bits (Verilog)! Μπορεί να φτάσει μέχρι 256ΜΒ μακριά 32

Σύνοψη γλώσσα μηχανής I- Format: Εντολές με σταθερές (π.χ. addi), lw/sw,beq/bne Αλλά όχι για τις εντολές ολίσθησης (sll, srl, sra) Οι διακλαδόσεις χρησιμοποιούν PC- relawve addressing I: opcode rs rt immediate J- Format: j J: opcode target address R- Format: όλες οι υπόλοιπες εντολές R: opcode rs rt rd shamt funct 33

Ανακοινώσεις! 1η εργαστηριακή άσκηση Πολλά άδεια repositories στο GitHub Μόνο μία μέρα μένει!! Η 2η εργαστηριακή άσκηση διαθέσιμη (βλ ecourse) παράδοση μέχρι την Παρασκευή 6/3 ώρα 20.00 34

Επόμενο μάθημα MIPS assembly Φροντιστήριο (στείλτε απορίες μέχρι την Τρίτη το μεσημέρι) 35

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1307.

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου. «Αρχιτεκτονική Υπολογιστών. Αρχιτεκτονικό σύνολο εντολών». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1307.

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/.