Lectures for 2nd Edition...HMY 212 –...

81
1 HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2 Εαρινό Εξάμηνο 2007, ΒΣ Κεφάλαιο 2 Εντολές Η γλώσσα της Μηχανής (Instructions – Language of the Computer)

Transcript of Lectures for 2nd Edition...HMY 212 –...

Page 1: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

1HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Κεφάλαιο 2

Εντολές – Η γλώσσα της Μηχανής

(Instructions – Language of the Computer)

Page 2: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

2HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Ανακοινώσεις

• Ιστοσελίδα μαθήματος ΗΜΥ 212, ενημερώνεταισυχνά:– http://www.ece.ucy.ac.cy/courses/ECE212/

• Ιστοσελίδα εργαστηρίου ΗΜΥ 213:– http://www.ece.ucy.ac.cy/courses/ECE213/

• Αλλαγές στο συμβόλαιο μαθήματος (δείτειστοσελίδα)

• ΗΜΥ 213: Ακυρώνεται η πρώτη συνάντηση τηΔευτέρα 29/01 και μεταφέρεται την Πέμπτη 01/02 στις8:00 π.μ. Λατσιά ΛΑ130, η παρουσία όλων είναιυποχρεωτική

• Πρόγραμμα εξετάσεων (δείτε ιστοσελίδα)• Πρόγραμμα κατ’ οίκον ασκήσεων (δείτε ιστοσελίδα)• Αλλαγή στις ώρες γραφείου (δείτε ιστοσελίδα)

Page 3: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

3HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Τι θα μάθουμε σε αυτό το Κεφάλαιο:

• Εντολές (Instructions): οι λέξεις της γλώσσας του υπολογιστή– Ανθρώπινη μορφή: Συμβολική γλώσσα (Assembly language)– Μορφή υπολογιστή: Γλώσσα μηχανής (Machine language), σε

δυαδικό• Σύνολο απλών εντολών (simple instruction set)

– Σχέση με γλώσσα προγραμματισμού ψηλού επιπέδου (γλώσσα C)– Υλοποίηση υλικού

• Αρχιτεκτονική MIPS– Δημοφιλής αρχιτεκτονική– Θα μελετήσουμε το MIPS ISA, βήμα-προς-βήμα

• Έννοια αποθηκεμένου προγράμματος– Εντολές και δεδομένα διαφορετικών τύπων αποθηκεύονται στη

μνήμη σε δυαδική μορφή

Page 4: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

4HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Αρχιτεκτονική MIPS • Αναπτύχθηκε στο Πανεπιστήμιο του Stanford από τον Καθ. John Hennessy και μια

ομάδα μεταπτυχιακών φοιτητών• Παρόμοια με τις άλλες αρχιτεκτονικές μικροεπεξεργαστών που αναπτύχθηκαν από

τη δεκαετία του 1980• Το 1984 δημιουργήθηκε η MIPS Computer Systems Corp., για την κατασκευή

υπολογιστών Unix υψηλής απόδοσης με MIPS μικροεπεξεργαστές1400

1300

1200

1100

1000

900

800

700

600

500

400

300

200

100

01998 2000 2001 20021999

OtherSPARCHitachi SHPowerPCMotorola 68KMIPSIA-32ARM

• Σχεδόν 100 εκατομμύριαεπεξεργαστών MIPSκατασκευάστηκαν το 2002

• Χρησιμοποιούνται από τιςεταιρίες DEC, NEC, Nintendo, Cisco, Silicon Graphics, Sony, Siemens, LSI Logic, …

Πωλήσεις μικροεπεξεργαστών ανά ISA

Page 5: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

5HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Αριθμητική MIPS

• Όλες οι εντολές έχουν 3 τελεστές (operands) και μπορούν ναεκτελέσουν μία μόνο πράξη κάθε φορά

• Η διάταξη των τελεστών είναι σταθερή (πρώτα ο τελεστής τουαποτελέσματος)

Παράδειγμα:

Κώδικας C: a = b + c;

Κώδικας MIPS: add $a, $b, $c

a, b, c είναι καταχωρητές (θα δούμε περισσότερα σε λίγο)

“The natural number of operands for an operation like addition isthree…requiring every instruction to have exactly three operands, no more and no less, conforms to the philosophy of keeping the hardware simple”

(Assembly)

Page 6: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

6HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Αριθμητική MIPS (συν.)

• Η πρόσθεση 2 ή περισσότερων αριθμών εκτελείται από μία σειράεντολών πρόσθεσης 2 αριθμών

Παράδειγμα:

Κώδικας C: a = b + c + d + e;

Κώδικας MIPS: add $a, $b, $c # a=b+cadd $a, $a, $d # a=b+c+dadd $a, $a, $e # a=b+c+d+e

• # -- το σύμβολο για τα σχόλια, ισχύει μέχρι το τέλος της γραμμής

• Σε αντίθεση με άλλες γλώσσες προγραμματισμού, η assembly επιτρέπει μόνο 1 εντολή ανά γραμμή

Page 7: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

7HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Αριθμητική MIPS (συν.)

• 1η Αρχή Σχεδιασμού:«Η απλότητα ευνοεί την κανονικότητα» (simplicity favors regularity)– Αυτό μπορεί και να περιπλέξει ορισμένα θέματα ...Απαιτεί μεγαλύτερο αριθμό εντολών(π.χ. n εντολές για την πρόσθεση n+1 αριθμών)

• Οι τελεστές πρέπει να είναι καταχωρητές, όχι διευθύνσεις μνήμης(σε αντίθεση με τους μικροεπεξεργαστές της Ιntel που επιτρέπουν σεαριθμητικές εντολές να έχουν κάποιους τελεστές στη μνήμη)

• Η MIPS παρέχει μόνο 32 καταχωρητές• Ο κάθε καταχωρητής έχει 32 bits

• Τα πιο πάνω ισχύουν για τη MIPS-32. Υπάρχει και η MIPS-64, με 32 καταχωρητές των 64ων bit.

Page 8: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

8HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Αριθμητική MIPS (συν.)

• Πιο είναι το αποτέλεσμα του μεταγλωττιστή για τα 2 πιο κάτω C προγράμματα;

Εντολές C Μεταγλωττιστής C Εντολές MIPS

a = b + c; d = a – e;

f = (g + h) – (j + j);

Page 9: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

9HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Αριθμητική MIPS (συν.)

• Πιο είναι το αποτέλεσμα του μεταγλωττιστή για τα 2 πιο κάτω C προγράμματα;

Εντολές C Μεταγλωττιστής C Εντολές MIPS

a = b + c; add $a, $b, $cd = a – e; sub $d, $a, $e

f = (g + h) – (i + j); add $t0,$g,$hadd $t1,$i,$jsub $f,$t0,$t1

Page 10: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

10HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Καταχωρητές (Registers)

• Οι τελεστές αριθμητικών εντολών πρέπει να είναι καταχωρητές, παρέχονται μόνο 32 καταχωρητές των 32-bit (= 1 λέξη)

• 2η Αρχή Σχεδιασμού:«Το μικρότερο είναι και το γρηγορότερο» (Smaller is faster)Γιατί;

• Σύμβαση MIPS για ονόματα καταχωρητών:– $s0, $s1, $s2, … για καταχωρητές που αντιστοιχούν σε μεταβλητές στο

πρόγραμμα υψηλού επιπέδου– $t0, $t1, $t2, … για προσωρινές μεταβλητές απαραίτητες για το

μεταγλωττισμό σε κώδικα MIPS– Παράδειγμα:

f = (g + h) – (i + j);

add $t0, $s1, $s2 # καταχωρητής $t0 = g+hadd $t1, $s3, $s4 # καταχωρητής $t1 = i+jsub $s0, $t0, $t1 # καταχωρητής $s0 = f

Page 11: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

11HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Καταχωρητές vs. Μνήμη

Processor I/O

Control

Datapath

Memory

Input

Output

• Ο μεταγλωττιστής συσχετίζει μεταβλητές (variables) με καταχωρητές (registers)• Τι συμβαίνει με προγράμματα που έχουν μεγάλο αριθμό μεταβλητών;

Βασική δομή ενός υπολογιστή

• Η μνήμη (memory) χρησιμοποιείται για αποθήκευση των εντολών, δεδομένωνκαι αποτελεσμάτων ενός προγράμματος

• Τα δεδομένα μεταφέρονται από την μνήμη στους καταχωρητές– Χρειαζόμαστε εντολές για μεταφορά δεδομένων (data transfer instructions) για

φόρτωση από και αποθήκευση στη μνήμη, όπως lw ( = load word) και sw ( = store word)

Page 12: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

12HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Οργάνωση Μνήμης – Εντολή Φόρτωσης (lw)• Η μνήμη θεωρείται ως ένας μεγάλος, μονοδιάστατος πίνακας λέξεων/bytes/bits

με συγκεκριμένη αρχική διεύθυνση (base address)• Για να έχει πρόσβαση στη μνήμη μια εντολή πρέπει να μπορεί να παρέχει τη

«διεύθυνση» των ζητούμενων δεδομένων• Μια διεύθυνση μνήμης (memory address) καθορίζεται με ένα δείκτη στον

πίνακα (0, 1, 2, …)• «Διευθυνσιοδότηση με Byte» (Byte addressing) υπονοεί ότι ο δείκτης δείχνει

σε ένα byte (= 8 συνεχόμενα bits) του πίνακα

Θεωρήστε ένα πίνακα A με 100 λέξεις (όπου 1 λέξη= 1 byte), με g $s1, h $s2, και ο καταχωρητήςαρχικής διεύθυνσης (base register) $s3

g = h + A[5];

lw $t0, 5($s3) #lw = load wordadd $s1, $s2, $t0

base register: έχει την αρχική διεύθυνση του πίνακα, δηλ. τη διεύθυνση του 1ου στοιχείου (λέξης) του πίνακαoffset: ο δείκτης στον πίνακα, σταθερός στην εντολήδιεύθυνση = base register + offset

byte 0 8 bits of data

8 bits of data

8 bits of data

8 bits of data

8 bits of data

8 bits of data

8 bits of data

byte 1byte 2byte 3byte 4

byte 5byte 6

Διεύθυνση Μνήμη

Page 13: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

13HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Οργάνωση Μνήμης για ΜΙPS• Συνήθως μια «λέξη» (word) είναι μεγαλύτερη από 1 byte• Στη MIPS, οι καταχωρητές μπορούν να κρατήσουν μέχρι και 32 bits,

άρα, μια λέξη έχει 32 bits ή 4 bytes

• Έχουμε 232 bytes σε byte addresses: 0, 1, 2, …, 232-1• Έχουμε 230 λέξεις σε byte addresses: 0, 4, 8, ..., 232-4 (Big Endian)• Για το παράδειγμα της προηγούμενης διαφάνειας (g = h + A[5];):

lw $t0, 20($s3) # byte address του offset είναι 5x4=20add $s1, $s2, $t0

byte 0

...

32 bits of data

32 bits of data

32 bits of data

32 bits of data

Byte address της 0ης λέξης = 0 (= 0 x 4)Byte address της 1ης λέξης = 4 (= 1 x 4) Byte address της 2ης λέξης = 8 (= 2 x 4)…Byte address της nης λέξης = n x 4

Διεύθυνση Μνήμη

byte 4byte 8

byte 12

Page 14: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

14HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Εντολές Φόρτωσης και Αποθήκευσης - Παράδειγμα

Κώδικας C: A[12] = h + A[8];

Κώδικας MIPS: lw $t0, 32($s3) # 32 = 8x4add $t0, $s2, $t0sw $t0, 48($s3) # store word

• Ο μεταγλωττιστής συσχετίζει:– base register σε $s3

(έχει τη διεύθυνση της 1ης λέξης του πίνακα A)– μεταβλητή h στον καταχωρητή $s2

• Η εντολή sw έχει τον τελεστή αποτελέσματος τελευταίο• Θυμηθείτε ότι για αριθμητικές εντολές, όλοι οι τελεστές πρέπει να είναι

καταχωρητές, όχι διευθύνσεις μνήμης!

add 48($s3), $s2, 32($s3) -- Άκυρο

Page 15: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

15HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Αριθμητικές Εντολές με Σταθερούς -- Άμεσες Εντολές

• Θεωρήστε ότι ο αριθμός 4 είναι ένας σταθερός στη γλώσσα C καιέχει αποθηκευτεί στην διεύθυνση της μνήμης AddrConstant4. Ηαρχική διεύθυνση στη μνήμη που έχει τα δεδομένα τουπρογράμματος βρίσκεται στον καταχωρητή $s1.

Για να προσθέσουμε το 4 στον $s3:lw $t0, AddrConstant4($s1) # $t0 = constant 4add $s3, $s3, $t0 # $s3 = $s3 + $t0ήaddi $s3, $s3, 4 # $s3 = $s3 + 4

• Η εντολή addi ονομάζεται «άμεση εντολή» (immediate instruction). Επιτρέπει ένας τελεστής να είναι σταθερός.

• 3η Αρχή Σχεδιασμού:«Η συνήθης πράξη πρέπει να είναι γρήγορη»(Make the common case fast)

Page 16: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

16HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Άμεσες Εντολές MIPS (συν.)

• Δεν υπάρχει εντολή subi– Λιγότερο κοινή στη C, Java– Η εντολή addi μπορεί να χρησιμοποιηθεί αφού ο σταθερός

μπορεί να είναι και αρνητικός αριθμός

Page 17: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

17HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Μέχρι στιγμής έχουμε μάθει:

• MIPS— η φόρτωση/αποθήκευση γίνεται με λέξεις

(1 λέξη μεταφέρεται από/προς τη μνήμη)— η διευθυνσιοδότηση γίνεται με bytes (byte addressing)— αριθμητική μόνο με καταχωρητές

• Εντολή MIPS Πράξη που εκτελείταιadd $s1, $s2, $s3 $s1 = $s2 + $s3addi $s1, $s2, 100 $s1 = $s2 + 100sub $s1, $s2, $s3 $s1 = $s2 – $s3lw $s1, 100($s2) $s1 = Memory[$s2+100] sw $s1, 100($s2) Memory[$s2+100] = $s1

Page 18: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

18HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Οι εντολές κρατούνται στον υπολογιστή ως μια σειρά από ηλεκτρικά σήματαψηλής ή χαμηλής τάσης δυαδικά ψηφία

• Οι εντολές, όπως και οι καταχωρητές και οι λέξεις δεδομένων, αποτελούνταιαπό 32 bits

• Ο κάθε καταχωρητής έχει ένα αριθμό, από 1 σε 32. Π.χ. $t1=9, $s1=17, $s2=18 (θα δούμε ολοκληρωμένη λίστα σύντομα)

• Μορφή Εντολής (Instruction Format):καθορίζεται από τη διάταξη της εντολής

• Παράδειγμα: Θεωρήστε την αριθμητική εντολή add $t1, $s1, $s2

op rs rt rd shamt funct

0 17 18 9 0 32

000000 10001 10010 01001 00000 100000

• Μπορείτε να μαντέψετε τι σημαίνει το όνομα του κάθε πεδίου (field);

Γλώσσα Μηχανής – Διάταξη Εντολών

Γλώσσα Μηχανής (Δεκαδικό)

Διάταξη Αριθμητικής Εντολής

Γλώσσα Μηχανής (Δυαδικό)

Page 19: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

19HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Διάταξη Εντολών Μηχανής (συν.)

• Κάθε πεδίο έχει αμετάβλητο μέγεθος και παρέχει στονυπολογιστή συγκεκριμένη πληροφορία:

• op (6 bits): opcode -- βασική πράξη της εντολής• rs (5 bits): καταχωρητής για 1ο τελεστή• rt (5 bits): καταχωρητή για 2ο τελεστή• rd (5 bits): καταχωρητής αποτελέσματος• shamt (5 bits): ποσόν ολίσθησης• funct (6 bits): function code -- συγκεκριμένη αριθμητική λειτουργία

• Γιατί αναθέτουμε 5-bits για την αναπαράσταση τωνκαταχωρητών;

• Ποιος είναι ο μεγαλύτερος αριθμός πράξεων που μπορούννα εκτελεστούν;

Page 20: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

20HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Διάταξη Εντολών Μηχανής (συν.)

• Για λόγους απλότητας και καλύτερης/ευκολότερηςαναγνωσιμότητας, οι εντολές της μηχανής γράφονται στοδεκαεξαδικό (Hex) σύστημα, αντί στο δυαδικό.

Η εντολή

(000000 10001 10010 01001 00000 100000)2

γίνεται

(02324820)16

Page 21: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

21HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Τι συμβαίνει αν μια εντολή απαιτεί μεγαλύτερα πεδία;• Θεωρήστε τις εντολές load-word (lw) και store-word (sw), όπου πρέπει

να καθοριστούν 2 καταχωρητές και 1 σταθερός– Τι πρέπει να γίνει, βάση της Αρχής της Κανονικότητας;– Καινούρια Αρχή: «Ο καλός σχεδιασμό απαιτεί συμβιβασμό»

• Εισάγουμε ένα νέο τύπο διάταξης εντολής– I-type για άμεσες εντολές και εντολές μεταφοράς δεδομένων– Ο προηγούμενος τύπος ονομάζεται R-type για εντολές με 3 καταχωρητές

• Παράδειγμα: lw $t0, 32($s2)

35 18 9 32

op rs rt 16 bit number

• Ποιος είναι ο συμβιβασμός; Πως θα ξεχωρίζουμε μεταξύ των 2 τύπων;

Είδη Διατάξεων Εντολών (συν.)

6 bits 5 bits 5 bits 16 bits

Page 22: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

22HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Κωδικοποίηση (Encoding) Εντολών MIPS

Εντολή Τύπος op rs rt rd shamt funct Διεύθυνση

add R 0 Reg Reg Reg 0 32 -

sub R 0 Reg Reg Reg 0 34 -

addi I 8 Reg Reg - - - address

lw I 35 Reg Reg - - - address

sw I 43 Reg Reg - - - address

Πεδίο op rs rt rd shamt funct Διεύθυνση

Μέγεθος 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 16 bits

Μέγεθος πεδίων (σε # bits):

• Οι εντολές add και sub έχουν το ίδιο πεδίο op• Το πεδίο funct καθορίζει την αριθμητική εντολή

(sub, add) που θα εκτελεστεί

Page 23: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

23HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Μια εντολή είναι ουσιαστικά μια στοιχειοσειρά δυαδικών ψηφίων(string of bits)

• Τα προγράμματα (εντολές) φυλάγονται στην μνήμη για γρήγορη ανάγνωσηκαι γραφή, όπως γίνεται για τα δεδομένα

• Κύκλος Προσκόμισης και Εκτέλεσης (Fetch & Execute Cycle)– Η κάθε εντολή προσκομίζεται και τοποθετείται σε ειδικό καταχωρητή– Κάποια bits του καταχωρητή «ελέγχουν» την ακόλουθη δραστηριότητα– Προσκομίζεται η «επόμενη» εντολή– Ο μετρητής προγράμματος (program counter) είναι ειδικός καταχωρητής που

διατηρεί την διεύθυνση της επόμενης εντολής προς εκτέλεση

Μικροεπεξεργαστής(Processor)

Μνήμη

Η έννοια του Αποθηκεμένου Προγράμματος

Πρόγραμμα ΕπεξεργασίαςΚειμένου (σε γλώσσα μηχανής)

Μεταγλωττιστής C(σε γλώσσα μηχανής)

Κείμενο ΒιβλίουΠηγαίος Κώδικας C

για Πρόγραμμα Επεξ. Κειμένου

Page 24: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

24HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Εντολές Λογικής (Logic Instructions)

• Το not υλοποιείται με nor και ένα τελεστή ίσο με μηδέν• Για λειτουργίες ολίσθησης (sll, srl), πλήρωση με μηδέν• and/or/not είναι πράξεις 3ων-τελεστών/καταχωρητών, π.χ.

– and $t0, $t1, $t2 # $t0 = $t1 & $t2– nor $t0, $t1, $t2 # $t0 = ~( $t1 | $t2 )– Ποιος τύπος διάταξης εντολής μπορεί να χρησιμοποιηθεί για αυτές τις εντολές

λογικής (I-type of R-type);

Λογικές Πράξεις Τελεστής C ΤελεστήςJava Εντολή MIPS

Ολίσθηση αριστερά << << sll

Ολίσθηση δεξιά >> >>> srl

Bit-by-bit AND & & and, andi

Bit-by-bit OR | | or, ori

Bit-by-bit NOT ~ ~ nor

Page 25: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

25HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Εντολές Λογικής (συν.)

• Υπάρχουν επίσης και οι εντολές andi και ori για άμεσες εντολέςλογικής με σταθερό– andi $s1, $s2, 100 # $s1 = $s2 & 100– ori $s1, $s2, 100 # $s1 = $s2 | 100– Ποιος τύπος διάταξης εντολής μπορεί να χρησιμοποιηθεί για αυτές τις εντολές

λογικής (I-type of R-type);

• Εντολές Ολίσθησης (Shift):– sll $t2, $s0, 4 # $t2 = $s0 << 4– Το περιεχόμενο του $s0 μετακινείται 4 bits αριστερά, τα 4 bits στα

δεξιά παίρνουν την τιμή 0 και το αποτέλεσμα αποθηκεύεται στον $t2– Το 4 ονομάζεται το «ποσό ολίσθησης» (shift amount) και δηλώνεται

στο πεδίο shamt της διάταξης εντολής R-type– Ολίσθηση αριστερά κατά i bits δίνει πολλαπλασιασμό επί 2i

Page 26: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

26HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Εντολές Λήψεως Αποφάσεων ή Εντολές Ελέγχου– Αλλάζουν την ροή εκτέλεσης των εντολών– Απαραίτητες αφού η σειρά εκτέλεσης των εντολών μπορεί να εξαρτάται

από τις τιμές δεδομένων που πιθανόν να αλλάζουν κατά τη διάρκεια ενόςπρογράμματος

– Δηλ., καθορίζουν την «επόμενη» εντολή προς εκτέλεση

• Εντολές MIPS με διακλάδωση υπό συνθήκη (conditional branch):

bne $t0, $t1, L1 # Εάν $t0 ≠ $t1 η επόμενη εντολή# βρίσκεται στη διεύθυνση L1

beq $t0, $t1, L1 # Εάν $t0 = $t1 η επόμενη εντολή# βρίσκεται στη διεύθυνση L1

• Παράδειγμα: if (i==j) h = i + j; (i $s0, j $s1, h $s3)...

bne $s0, $s1, L1add $s3, $s0, $s1

L1: ....

Εντολές Ελέγχου (Control Instructions)

Page 27: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

27HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Εντολές MIPS με διακλάδωση χωρίς συνθήκη (unconditional branch):j label

• Ονομάζεται και εντολή άλματος (jump instruction)

• Παράδειγμα:

if (i!=j) beq $s4, $s5, Elseh=i+j; add $s3, $s4, $s5

else j Exith=i-j; Else: sub $s3, $s4, $s5

Exit: ...

• Μπορείτε να υλοποιήσετε ένα απλό βρόγχο (for loop);

Εντολές Ελέγχου (συν.)

Page 28: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

28HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Εντολές Ελέγχου (συν.)

• Γλώσσα C While (save[i] == k)

i += 1;

i $s3k $s5Βάση/αρχική διεύθυνση του save[ ] στο $s6

• Assembly (ΜΙPS)…

0123...

n

kkkj

x

save[ ]

Page 29: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

29HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Μέχρι στιγμής έχουμε εξετάσει:

Εντολή Πράξη που εκτελείταιadd $s1,$s2,$s3 $s1 = $s2 + $s3sub $s1,$s2,$s3 $s1 = $s2 – $s3lw $s1,100($s2) $s1 = Memory[$s2+100] sw $s1,100($s2) Memory[$s2+100] = $s1bne $s4,$s5,L Επόμενη εντολή στο L εάν $s4 ≠ $s5beq $s4,$s5,L Επόμενη εντολή στο L εάν $s4 = $s5j Label Επόμενη εντολή στο LabelΕντολές Λογικής (and, or, nor, sll, srl)Άμεσες Εντολές (addi, andi, ori)

Διατάξεις Εντολών:

op rs rt rd shamt funct

op rs rt 16 bit address

op 26 bit address

R

I

J

Page 30: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

30HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Μέχρι στιγμής έχουμε τις εντολές ελέγχου beq και bneΥπάρχει και η λειτουργία branch-if-less-than (blt), συχνά χρήσιμη!

• Νέα εντολή (ανάθεση σε 0/1 εάν μικρότερο από):slt $t0, $s1, $s2 #$t0=1 εάν $s1<$s2, αλλιώς $t0=0slti $t0, $s2, 10 #$t0=1 εάν $s2<10, αλλιώς $t0=0

• Η MIPS δεν περιλαμβάνει την εντολή blt (branch-if-else) Αυτό γίνεται για λόγους απλότητας, για να διατηρηθεί ο κύκλοςτου ρολογιού μικρότερος

• Εναλλακτικά, στη MIPS χρησιμοποιούνται οι εντολές beq, bne, slt, slti και ο καταχωρητής $zero (πάντα περιέχει την τιμή0) για την υλοποίηση της πράξης blt.– Πως μπορεί να γίνει αυτή η υλοποίηση?

Ροή Ελέγχου

Page 31: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

31HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

ΚατηγορίαΤελεστών

Παράδειγμα Σχόλια

32 καταχωρητές $s0, $s1, … $s7$t0, $t1, … $t7$zero

-- Γρήγορος εντοπισμός δεδομένων. Τα δεδομέναπρέπει να βρίσκονται σε καταχωρητή γιαεκτέλεση αριθμητικής εντολής.

-- Ο καταχωρητής $zero έχει πάντα την τιμή 0. -- Οι καταχωρητές $s0--$s7 αντιστοιχούν σε 16-23και οι καταχωρητές $t0--$t7 σε 8-15.

230 32-μπιτεςλέξεις στη μνήμη

Memory[0],Memory[4],…Memory[4292967292]

-- Πρόσβαση μόνο από εντολές μεταφοράςδεδομένων.

-- Η διεύθυνση δίνεται σε bytes, δηλ. δύοσυνεχόμενες λέξεις διαφέρουν κατά 4.

-- Στη μνήμη αποθηκεύονται δομές δεδομένωνόπως πίνακες, στοίβες, περιεχόμενακαταχωρητών.

Μέχρι στιγμής έχουμε μάθει για τη ΜΙPS:

Τελεστές (operands) MIPS

Page 32: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

32HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Μέχρι στιγμής έχουμε μάθει για τη ΜΙPS (συν.):

Κατηγορία Εντολές Παράδειγμα Πράξη ΣχόλιαΠρόσθεση add $s1, $s2, $s3 $s1 = $s2 + $s3 3 τελεστές, δεδομένα σε

καταχωρητέςΑφαίρεση sub $s1, $s2, $s3 $s1 = $s2 - $s3 3 τελεστές, δεδομένα σε

καταχωρητέςΆμεσηΠρόσθεση

addi $s1, $s2, 100 $s1 = $s2 + 100 Πρόσθεση με σταθερό

ΦόρτωσηΛέξης

lw $s1, 100($s2) $s1 = Memory[$s2+100] Δεδομένα από μνήμη σεκαταχωρητή

ΑποθήκευσηΛέξης

sw $s1, 100($s2) Memory[$s2+100] = $s1 Δεδομένα από καταχωρητή σεμνήμη

And and $s1, $s2, $s3 $s1 = $s2 & $s3 AND

Or or $s1, $s2, $s3 $s1 = $s2 | $s3 OR

Nor nor $s1, $s2, $s3 $s1 =~( $s2 | $s3) NOR

Άμεσο And andi $s1, $s2, 100 $s1 = $s2 & 100 AND με σταθερό

Άμεσο Or ori $s1, $s2, 100 $s1 = $s2 | 100 OR με σταθερό

ΟλίσθησηΑριστερά

sll $s1, $s2, 10 $s1 = $s2 << 10 Ολίσθηση αριστερά από σταθερό

ΟλίσθησηΔεξιά

slr $s1, $s2, 10 $s1 = $s2 >> 10 Ολίσθηση δεξιά από σταθερό

Λογικής

ΜεταφοράςΔεδομένων

Αριθμητικές

Γλώσσα MIPS Assembly (Εντολές)

Page 33: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

33HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Μέχρι στιγμής έχουμε μάθει για τη ΜΙPS (συν.):

Κατηγορία Εντολές Παράδειγμα Πράξη Σχόλια

Διακλάδωσηαν ισούνται

beq $s1, $s2, L if ($s1 == $s2) go to L Έλεγχος ισότητας. Διεύθυνσησχετική με PC.

Διακλάδωσηαν δενισούνται

bne $s1, $2, L if ($s1 != $s2) go to L Έλεγχος ανισότητας. Διεύθυνσησχετική με PC.

Ανάθεση βάσητιμής

slt $s1, $s2, $s3 if ($s2<$s3) $s1 = 1;else $s1 = 0

Σύγκριση για μικρότερο: για beq, bne

Άμεση ανάθσηβάση τιμής

slti $s1, $s2, 100 if ($s2<100) $s1 = 1;else $s1 = 0

Σύγκριση για μικρότερο, μεσταθερό: για beq, bne

Διακλάδωσηχωρίς

συνθήκη

Άλμα j L go to L Άλμα στη διεύθυνση.

Διακλάδωσηυπό συνθήκη

Γλώσσα MIPS Assembly(Εντολές) – συν.

Page 34: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

34HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Μέχρι στιγμής έχουμε μάθει για τη ΜΙPS (συν.):Γλώσσα Μηχανής MIPS (σε δεκαδικό)

Όνομα ΤύποςΔιάταξης

Παράδειγμα Σχόλια

Add R 0 2 3 1 0 32 add $s1, $s2, $s3Sub R 0 2 3 1 0 34 sub $s1, $s2, $s3Addi I 8 2 1 100 addi $s1, $s2, 100Lw I 35 2 1 100 lw $s1, 100($s2)Sw I 43 2 1 100 sw $s1, 100($s2)Beq I 4 1 2 100 beq $s1, $s2, 100Bne I 5 1 2 100 bne $s1, $s2, 100Slt R 0 2 3 1 0 42 slt $s1, $s2, $s3Slti I 10 2 1 100 slti $s1, $s2, 100J J 2 10000 j 10000

ΜέγεθοςΠεδίου

6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Όλες οι εντολές MIPS έχουν 32 bits

Διάταξη R R op rs rt rd Shamt funct

rt Διεύθυνση / Σταθερός

Διάταξη για αριθμητικέςεντολές

Διάταξη I I op rs Διάταξη για εντολέςμεταφοράς, διακλάδωσης, καιάμεσες εντολές

Διάταξη J J op Διεύθυνση Διάταξη για εντολήάλματος

Page 35: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

35HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Συνάρτηση (Procedure ή Function ή Routine):Αποθηκεμένη μονάδα προγράμματος που υλοποιεί συγκεκριμένηεργασία βάση των παραμέτρων με τους οποίους καλείται

• Πλεονεκτήματα χρήσης συναρτήσεων:– Καλύτερη δομή προγράμματος– Αυξάνει την αναγνωσιμότητα του προγράμματος– Επαναχρησιμοποίηση!

Υποστήριξη Συναρτήσεων από Υλικό

Page 36: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

36HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Τα 6 βήματα που πάντοτε ακολουθούνταιγια την εκτέλεση μιας συνάρτησης:

1. Αποθήκευση παραμέτρων σε χώρο που έχει πρόσβαση ησυνάρτηση

2. Μεταφορά ελέγχου στη συνάρτηση3. Απόκτηση αποθηκευτικών χώρων που απαιτούνται για την

εκτέλεση της συνάρτησης4. Διεξαγωγή (εκτέλεση) των εντολών της συνάρτησης5. Αποθήκευση αποτελεσμάτων σε χώρο που έχει πρόσβαση το

κύριο πρόγραμμα (calling program)6. Επιστροφή ελέγχου στο σημείο προέλευσης του κύριου

προγράμματος

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

Page 37: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

37HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Καταχωρητές για κλήση συνάρτησης:– $a0 - $a3: καταχωρητές μεταβίβασης παραμέτρων στη

συνάρτηση (4)– $v0 - $v1: καταχωρητές αποθήκευσης αποτελεσμάτων

προς το κύριο πρόγραμμα (2) – $ra : καταχωρητής διεύθυνσης επιστροφής στο

σημείο προέλευσης του κύριου προγράμματος

• Εντολή Κλήσης Συνάρτησης:jal ProcedureAddressεντολή jump-and-link: προχωρεί στη διεύθυνση της συνάρτησηςενώ συγχρόνως αποθηκεύει την διεύθυνση της εντολής πουακολουθεί τη συνάρτηση στον ειδικό καταχωρητή $ra, δηλ., καλεί τη συνάρτηση

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

Page 38: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

38HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

• Η έννοια του αποθηκεμένου προγράμματος υπονοεί ότι ηδιεύθυνση της εντολής που εκτελείται είναι πάντα γνωστή

Φυλάγεται σε ένα καταχωρητή που ονομάζεται ΜετρητήςΠρογράμματος (Program Counter -- PC) jal αποθηκεύει PC + 4 στον $ra. Γιατί?

• Πως επιστρέφουμε στο κύριο πρόγραμμα από μια συνάρτηση?jr $ra # άλμα (χωρίς συνθήκη) στη διεύθυνση

# στον καταχωρητή $ra

Page 39: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

39HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Υποστήριξη Διαδικασιών από Υλικό (συν.)

• Συνοπτικά:

Caller (= Κύριο Πρόγραμμα ή άλλη Συνάρτηση)– Αποθηκεύει παραμέτρους στους $a0 - $a3– Εκτελεί την εντολή jal ProcedureAddress για να καλέσειτην συνάρτηση

Callee (= Συνάρτηση που καλείται)– Εκτελεί τους υπολογισμούς της συνάρτησης– Αποθηκεύει τα αποτελέσματα στους $v0 - $v1– Εκτελεί την εντολή jr $ra για να επιστρέψει στο κύριοπρόγραμμα ή την εντολή που την κάλεσε

Page 40: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

40HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

• Τι συμβαίνει αν η συνάρτηση απαιτεί περισσότερουςκαταχωρητές;

Το περιεχόμενο των καταχωρητών που χρησιμοποιούνται από τησυνάρτηση αποθηκεύονται πριν αυτή καλεστεί, για να μπορούν ναεπαναφερθούν όταν η συνάρτηση τερματίσει/επιστρέψειΗ αποθήκευση του περιεχόμενου καταχωρητών στη μνήμηονομάζεται memory (or register) spillingΧρησιμοποιούμε τη στοίβα (stack) = δομή δεδομένων για αποθήκευσηκαταχωρητών, μέρος της μνήμης, δομή LIFO Δείκτης Στοίβας (Stack Pointer -- $sp)δείχνει στην πιο πρόσφατα καταχωρημένη διεύθυνση στη στοίβα(most recently allocated address in the stack)Χρησιμοποιούμε pop και push λειτουργίες για στοίβες

Page 41: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

41HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Παράδειγμα

• Θεωρήστε την πιο κάτω συνάρτηση σε C:

int leaf_example (int g, int h, int i, int j){

int f;

f = (g + h) – (i + j);return f;

}

g $a0, h $a1, I $a2, j $a3, f $s0

Δώστε τον μεταγλωττισμένο κώδικα σε MIPS Assembly …

Page 42: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

42HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

δεδομένακαταχωρητή $s0

Leaf_example: # καλεί την συνάρτηση

addi $sp, $sp, -12 # κρατά χώρο στη στοίβα για 3 δεδομένα

sw $t1, 8($sp) # φύλαξη (push) $t1 στη στοίβα

sw $t0, 4($sp) # φύλαξη (push) $t0 στη στοίβα

sw $s0, 0($sp) # φύλαξη (push) $s0 στη στοίβα

Παράδειγμα (συν.)R

egis

ter s

pilli

ngστηστοίβα

(pus

h)

Μεγάληδιεύθυνση

Μικρήδιεύθυνση

$sp

$sp-4

$sp-8

$sp-12

addi $sp, $sp, -12

Μεγάληδιεύθυνση

Μικρήδιεύθυνση

$sp

$sp+8

$sp+4

sw $t1, 8($sp)sw $t0, 4($sp)sw $s0, 0($sp)

Μεγάληδιεύθυνση

Μικρήδιεύθυνση

$sp

$sp+8

$sp+4

Αρχικά η στοίβα είναι άδεια

δεδομένακαταχωρητή $t0

δεδομένακαταχωρητή $t1

$sp+12 $sp+12

Page 43: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

43HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Παράδειγμα (συν.)

add $t0, $a0, $a1 # $t0 = g + hadd $t1, $a2, $a3 # $t1 = i + jsub $s0, $t0, $t1 # f = (g + h) – (i + j)

add $v0, $s0, $zero # επιστροφή αποτελέσματος στον $v0 = f = $s0 + 0

lw $s0, 0($sp) # επαναφορά $s0 από στοίβα

lw $t1, 4($sp) # επαναφορά $t1 από στοίβα

lw $t0, 8($sp) # επαναφορά $t0 από στοίβα

addi $sp, $sp, 12 # αφαίρεση 3 στοιχείων από την στοίβα

jr $ra # επιστροφή = jump πίσω στον caller

ΚυρίωςΜέρος

τηςσυνάρτησ

ηςΑποθήκευση

τιμής

αποτελέσματος

Επαναφ

ορά

καταχω

ρητώ

ν(p

op)

Επιστροφ

ή

Page 44: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

44HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Επαναφορά καταχωρητών από στοίβα

δεδομένακαταχωρητή $s0

sw $t1, 8($sp)sw $t0, 4($sp)sw $s0, 0($sp)

Μεγάληδιεύθυνση

Μικρήδιεύθυνση

$sp

$sp+8

$sp+4δεδομένα

καταχωρητή $t0

δεδομένακαταχωρητή $t1

$sp+12

push(αποθήκευση)

δεδομένακαταχωρητή $s0

lw $s0, 0($sp)lw $t0, 4($sp) lw $t1, 8($sp)

Μεγάληδιεύθυνση

Μικρήδιεύθυνση

$sp

$sp+8

$sp+4δεδομένα

καταχωρητή $t0

δεδομένακαταχωρητή $t1

$sp+12

pop(επαναφορά)

δεδομένααπό τη διεύθυνση $sp+0

δεδομένααπό τη διεύθυνση $sp+4

δεδομένααπό τη διεύθυνση $sp+8$t1

$s0

$t0

δεδομένα $s0

δεδομένα $t0

δεδομένα $t1$t1

$s0

$t0

Μεγάληδιεύθυνση

Μικρήδιεύθυνση

$sp

$sp-4

$sp-8

$sp-12

addi $sp, $sp, 12Αφαίρεση στοιχείων απόστοίβα, επαναφορά δείκτηστοίβας στην αρχική τιμή

Page 45: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

45HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

• Πως γνωρίζουμε ποιος καταχωρητής πρέπει να φυλαχθεί πριντην εκτέλεση μιας συνάρτησης;

• Στη MIPS, οι καταχωρητές χωρίζονται σε 2 κατηγορίες:

1. $t0 - $t9: προσωρινοί καταχωρητές, δεν διατηρούνται

2. $s0 - $s7: αποθηκεμένοι (saved) καταχωρητές, πρέπει ναδιατηρηθούν αν χρησιμοποιούνται από συνάρτηση

Page 46: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

46HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

Φωλιασμένες Συναρτήσεις:– Μια συνάρτηση που ΔΕΝ καλεί άλλη συνάρτηση ή δεν έχει αναδρομή

ονομάζεται leaf συνάρτηση– Στην πράξη, πολλές συναρτήσεις δεν είναι αυτού του τύπου

• Είτε καλούν άλλες συναρτήσεις• και/ή καλούν αναδρομικά τον εαυτό τους

Θεωρήστε το πιο κάτω:– Συνάρτηση A με παράμετρο 5 ($a0 = 5, $ra αναθέτεται) καλείται

από το κύριο πρόγραμμα– Συνάρτηση B με παράμετρο 10 (($a0 = 10, $ra αναθέτεται ξανά)

καλείται από την συνάρτηση A– Μπορεί η A να συνεχίσει με έγκυρα δεδομένα;– Μπορεί η A να επιστρέψει στο κύριο πρόγραμμα;

Χρησιμοποιούμε στοίβες ξανά (περισσότερα στο Εργαστήριο !!)

Page 47: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

47HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

Στατικά (Static) Vs Αυτόματα (Automatic) δεδομένα:

• Θυμηθείτε την κατηγορία μεταβλητών στατικής μνήμης(static storage class) στη C

οι μεταβλητές ισχύουν για ολόκληρο το πρόγραμμα(συμπεριλαμβανομένων όλων των συναρτήσεων) – κοινές (public) μεταβλητές

• Σε αντίθεση, η κατηγορία μεταβλητών αυτόματης μνήμης(automatic storage class):

οι μεταβλητές ισχύουν μόνο μέσα στη συνάρτηση από τηνοποία έχουν οριστεί – τοπικές (local) μεταβλητές

H MIPS ορίζει τον καταχωρητή $gp ως γενικό δείκτη (global pointer) ο οποίος χρησιμοποιείται για να δείχνει στο κομμάτι τηςμνήμης που περιέχει τα στατικά δεδομένα/μεταβλητές

Page 48: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

48HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Πολιτική Χρήσης Καταχωρητών

Όνομα Αρ. Καταχωρητή ΧρήσηΦυλάγεται από συναρτήσεις;

$zero 0 έχει πάντα την τιμή 0 -

$v0-$v1 2-3κρατούν τιμές αποτελεσμάτων που επιστρέφονται από συναρτήσεις όχι

$a0-$a3 4-7 παραμέτροι συναρτήσεων όχι$t0-$t7 8-15 προσωρινοί όχι$s0-$s7 16-23 αποθηκεμένοι ναι$t8-$t9 24-25 επιπρόσθετοι προσωρινοί όχι$gp 28 γενικός δείκτης (global pointer) ναι$sp 29 δείκτης στοίβας (stack pointer) ναι

$fp 30δείκτης πλαισίου διαδικασίας (frame pointer) ναι

$ra 31 διεύθυνση επιστροφής ναι

Ο καταχωρητής 1 (ή $at) χρησιμοποιείται αποκλειστικά από τονσυμβολομεταφραστή και οι καταχωρητές 26-27 (ή $k0-$k1) χρησιμοποιούνται αποκλειστικά από το λειτουργικό σύστημα

Page 49: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

49HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

• Κατανομή μνήμης στη στοίβα για επιπρόσθεταδεδομένα από συναρτήσεις:

– Οι στοίβα μπορεί να χρησιμοποιηθεί και για αποθήκευση τοπικώνδεδομένων/μεταβλητών μιας συνάρτησης. Αυτό συμβαίνει όταν τατοπικά δεδομένα/μεταβλητές μιας συνάρτησης δεν μπορούν όλα νααποθηκευτούν σε καταχωρητές (π.χ. πίνακες)

– Πλαίσιο Συνάρτησης (procedure frame ή activation record):κομμάτι της στοίβας που περιέχει τους αποθηκεμένους καταχωρητέςκαι τα τοπικά δεδομένα μιας συνάρτησης

– Δείκτης Πλαισίου (frame pointer) -- $fp:ο καταχωρητής που δείχνει στο πλαίσιο μιας συνάρτησης (δηλ., έχειτην αρχική διεύθυνση που δείχνει στην 1η λέξη του πλαισίου μιαςσυνάρτησης)

Page 50: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

50HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

Κατανομή στοίβας (α) πριν, (β) μετά, και (γ) κατά τη διάρκεια κλήσεως συνάρτησης:• $fp δείχνει στην 1η λέξη του πλαισίου της συνάρτησης• $sp δείχνει στην αρχή της στοίβας• $sp αλλάζει κατά τη διάρκεια εκτέλεσης της συνάρτησης ενώ ο $fp είναι αμετάβλητος,

άρα, για πρόσβαση στα δεδομένα χρησιμοποιείται ο $fp• $fp αρχικοποιείται με την τιμή του $sp και η τιμή του $sp επαναφέρεται στο τέλος

από τον $fp

Αποθηκεμένοικαταχωρητές

Μεγάληδιεύθυνση

Μικρήδιεύθυνση

$sp

Διεύθυνσηεπιστροφής

Καταχωρητέςπαραμέτρων

$fp

Μεγάληδιεύθυνση

Μικρήδιεύθυνση

$sp, $fp

$sp-4

$sp-8

$sp-12

Μεγάληδιεύθυνση

Μικρήδιεύθυνση

$sp, $fp

$sp-4

$sp-8

$sp-12Τοπικά Δεδομένα

Συνάρτησης

(α) (β) (γ)

Page 51: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

51HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Υποστήριξη Συναρτήσεων από Υλικό (συν.)

• Κατανομή μνήμης για επιπρόσθετα δεδομένα στησωρό (heap)

Μνήμη

Σωρός: κομμάτι της μνήμηςπου παραχωρείται γιαδυναμικά δεδομένα (dynamicdata) (malloc(), free())

Γλώσσα μηχανής τουπρογράμματος που εκτελείται

$sp 7fff fffchex

$gp 1000 8000hex1000 0000hex

$pc 0040 0000hex0hex

Στοίβα (Stack)

Δυναμικά Δεδομένα(Dynamic Data)Στατικά Δεδομένα

(Static Data)

Εντολές (Text)

Λειτουργικό

Page 52: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

52HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Επεξεργασία κειμένου

• Η αρχιτεκτονική MIPS παρέχει εντολές χρήσιμες για επεξεργασία κειμένου

• Θυμάστε τον κώδικα ASCII; 8-bit κώδικες για χαρακτήρες– lb : φορτώνει ένα byte από τη μνήμη στα 8 πιο δεξιά bits ενός καταχωρητή– sb: αποθηκεύει τα 8 πιο δεξιά bits ενός καταχωρητή στη μνήμη

• Για αντιγραφή ενός byte από ένα μέρος της μνήμης σε ένα άλλο μέρος τηςμνήμης:lb $t0, 0($sp) # διαβάζει 1 byte (= 1 χαρακτήρας) από $sp+0 στο $t0

sb $t0, 0($gp) # γράφει 1 byte από $t0 (= 1 χαρακτήρας) στη $gp+0

• H MIPS επίσης υποστηρίζει εντολές για φόρτωση/αποθήκευση μισών λέξεων(half words = 16 bits), χρήσιμες για τον κώδικα Unicode που χρησιμοποιεί η Javalh $t0, 0($sp) # διαβάζει 2 bytes (= 1 χαρακτήρας) από $sp+0 στο $t0

sh $t0, 0($gp) # γράφει 2 bytes από $t0 (= 1 χαρακτήρας) στη $gp+0

Page 53: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

53HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Σταθεροί και Διευθύνσεις 32-bit

• Θέλουμε να φορτώσουμε ένα σταθερό με 32-bits σε ένα καταχωρητή, π.χ. 10101010101010100000000011111111 στον καταχωρητή $t0

• Χρειαζόμαστε 2 εντολές:– Καινούρια εντολή "load upper immediate" (φορτώνει στα 16 πιο σημαντικά bits)

lui $t0, 1010101010101010

– Για να πάρουμε τα 16 λιγότερο σημαντικά bitsχρησιμοποιούμε την λογική εντολή:ori $t0, $t0, 0000000011111111

1010101010101010 0000000000000000

0000000000000000 0000000011111111

1010101010101010 0000000011111111

ori

1010101010101010 0000000000000000Συμπλήρωση με μηδενικά

001111 101010101010101000000 01000Machine

code

$t0

$t0

$t0

Στη MIPS, ο assemblerείναι υπεύθυνος για τηδημιουργία των«μεγάλων» σταθερών ήδιευθύνσεων (long constants/addresses)χρησιμοποιώντας τονειδικό καταχωρητή $at

Page 54: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

54HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Η Assembly παρέχει συμβολική αναπαράσταση των εντολών, γιαλόγους διευκόλυνσης του προγραμματιστή– Πολύ πιο εύκολο από το να γράφουμε με δυαδικούς / δεκαεξαδικούς

αριθμούς– Τυποποίηση, π.χ. ο καταχωρητής του αποτελέσματος πάντα πρώτος

• Η γλώσσα μηχανής (Machine language) είναι η πραγματικότηταπου κρύβεται πίσω από την Assembly– Π.χ. ο καταχωρητής του αποτελέσματος ΔΕΝ είναι πάντα πρώτος

• Η Assembly παρέχει «ψευδοεντολές» (pseudoinstructions)– Π.χ., η εντολή move $t0, $t1 υπάρχει μόνο στην Assembly – Η υλοποίηση της (== γλώσσα μηχανής) γίνεται με την εντολή

add $t0,$t1,$zero

• Για ανάλυση απόδοσης πρέπει να μετρούμε τον αριθμό τωνπραγματικών εντολών, όχι των ψευδοεντολών

Κώδικας Assembly vs. Γλώσσα Μηχανής

Page 55: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

55HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Απλές εντολές, όλες των 32 bits • Δομημένες εντολές, τυποποίηση• Μόνο τρεις διαφορετικές διατάξεις εντολών

• Βασιζόμαστε στον μεταγλωττιστή για επίτευξη απόδοσης— ποιοι θα πρέπει να είναι οι στόχοι του μεταγλωττιστή;

• Πρέπει να βοηθούμε τον μεταγλωττιστή, όπου χρειάζεται, μέσω σωστού προγραμματισμού

op rs rt rd shamt funct

op rs rt 16 bit address

op 26 bit address

R

I

J

Επισκόπηση MIPS για διατάξεις εντολών

Page 56: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

56HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Εντολές:bne $t4,$t5,Label # Επόμενη εντολή στο Label εάν $t4 ≠ $t5

beq $t4,$t5,Label # Επόμενη εντολή στο Label εάν $t4 = $t5

j Label # Επόμενη εντολή στο Label

• Διατάξεις εντολών:

• Οι διευθύνσεις στις δύο πιο πάνω διατάξεις δεν μπορούν ναείναι 32 bits (μέγιστο 216 για I-type και 226 για J-type) – Υποδηλώνει ότι κανένα πρόγραμμα δεν μπορεί να είναι μεγαλύτερο από

216 bytes ή 226 bytes (γιατί bytes και όχι bits;)– Η μνήμη στη MIPS έχει 232 bytes (ή 230 words = 4Gbytes).

Πως μπορούμε να έχουμε πρόσβαση σε ολόκληρη τη μνήμη από εντολέςμεταφοράς δεδομένων (load/store);

op rs rt 16 bit address

op 26 bit address

I

J

Διευθύνσεις για Branches και Jumps

Page 57: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

57HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Εντολές διακλάδωσης υπό συνθήκη :bne $t4,$t5,Label # Επόμενη εντολή στο Label εάν $t4≠$t5beq $t4,$t5,Label # Επόμενη εντολή στο Label εάν $t4=$t5

(το Label είναι ουσιαστικά διεύθυνση που θα αποφασιστεί σε μεταγενέστερο στάδιοαπό τον μεταγλωττιστή/συμβολομεταφραστή)

• Διάταξη εντολής:

• Μπορούμε να καθορίσουμε ένα καταχωρητή του οποίου τα δεδομένα θαπροστεθούν στην διεύθυνση της διακλάδωσης (όπως γίνεται για τις εντολέςlw και sw). Έτσι, η εντολή διακλάδωσης θα υπολογίσει:– PC = τιμή καταχωρητή + διεύθυνση διακλάδωσης– Αυτό επιτρέπει σε ένα πρόγραμμα να είναι μέχρι και 232 bytes και συγχρόνως να

μπορεί να χρησιμοποιεί διακλαδώσεις υπό συνθήκη– Αυτός ο τρόπος διευθυνσιοδότησης ονομάζεται relative addressing mode (η

πραγματική διεύθυνση διακλάδωσης υπολογίζεται σχετικά με τα δεδομένα ενόςκαταχωρητή)

– Οι περισσότερες διακλαδώσεις υπό συνθήκη είναι τοπικές (ακολουθούν την αρχήτης τοπικότητας), και επομένως χρησιμοποιούμε:PC-relative addressing: PC = PC + διεύθυνση διακλάδωσης

op rs rt 16 bit addressI

Διευθύνσεις για Branches και Jumps (συν.)

Διεύθυνση διακλάδωσης

Page 58: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

58HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Εντολή άλματος (jump):j Label # Επόμενη εντολή στο Labeljal Label # Καλεί την συνάρτηση Label

• Διάταξη εντολής:

• Ψευδοάμεση Διευθυνσιοδότηση (Pseudodirect addressing)PC = 4 MSBs του PC && διεύθυνση άλματος

• Οι εντολές άλματος χρησιμοποιούν τα 4 πιο σημαντικά ψηφία (MSBs) του PC – Παρέχει πρόσβαση στις διευθύνσεις μεταξύ των 64 Mbytes … 1Gbyte.

Γιατί; – Ποιο είναι το μέγιστο της διεύθυνσης άλματος;

(226-1 ≈ 64 Mbyte?)

J op 26-bit address

Διευθύνσεις για Branches και Jumps (συν.)

Διεύθυνση Άλματος

Page 59: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

59HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• H MIPS αυξάνει την απόσταση των διακλαδώσεων καιτων αλμάτων περαιτέρω:– Η διεύθυνση MIPS είναι σχετική με την επόμενη εντολή (PC+4) αντί την τρέχουσα εντολή (PC)

– Η διεύθυνση αναφέρεται σε λέξεις (words - w) αντί σε bytes (b, όπου w = b*4)Έτσι, η διεύθυνση διακλάδωσης ή άλματος μπορεί να είναι 4 φορές μεγαλύτερη

PC-relative addressing γίνεται:PC = (PC+4) + (διεύθυνση διακλάδωσης * 4)

Pseudodirect addressing γίνεται:PC = 4 MSBs του PC && (διεύθυνση άλματος * 4)

Διευθύνσεις για Branches και Jumps (συν.)

Page 60: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

60HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Θυμηθείτε τον βρόχο (σελ. 74): while (save[i] == k) i++;

Loop: sll $t1, $s3, 2 # $t1 = 4*iadd $t1, $t1, $s6 # $t1 = address of save[i]lw $t0, 0($t1) # $t0 = save[i]bne $t0, $s5, Exit # go to Exit if save[i] ≠ kaddi $s3, $s3, 1 # i++j Loop # loop again

Exit: # out of the loop

Μεταγλωττισμένες εντολές και οι διευθύνσεις αποθήκευσής τους

Παράδειγμα

80000 0 0 19 9 2 0

80004 0 9 22 9 0 32

80008 35 9 8 0

80012 5 8 21 2

80016 8 19 19 1

80020 2 20000

80024 …

Loop: slladdlwbneaddijExit: …

Page 61: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

61HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• PC-relative addressing για bne $t0, $s5, Exit

PC = (PC+4 ) + (διεύθυνση διακλάδωσης * 4)PC = (80012+4) + (2*4) = 80024 (διεύθυνση του Exit)

• Pseudodirect addressing για j Loop

PC = (4 MSBs of PC) + (διεύθυνση άλματος * 4)PC = (0000)2 && (20000*4)10 = 8000010 (διεύθυνση του Loop)

Μεταγλωττισμένες εντολές και οι διευθύνσεις αποθήκευσής τους

Παράδειγμα (συν.)

80000 0 0 19 9 2 0

80004 0 9 22 9 0 32

80008 35 9 8 0

80012 5 8 21 2

80016 8 19 19 1

80020 2 20000

80024 …

Loop: slladdlwbneaddijExit: …

Page 62: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

62HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Εναλλακτικός τρόπος για μακρινή διακλάδωση

• Θεωρήστε ότι $s0 = $s1. Αντικαταστήστε την πιο κάτωεντολή με μία ή περισσότερες εντολές έτσι ώστε νααυξηθεί η απόσταση της διακλάδωσης (branching distance)

beq $s0, $s1, L1

Page 63: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

63HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Εναλλακτικός τρόπος για μακρινή διακλάδωση

• Θεωρήστε ότι $s0 = $s1. Αντικαταστήστε την πιο κάτωεντολή με μία ή περισσότερες εντολές έτσι ώστε νααυξηθεί η απόσταση της διακλάδωσης (branching distance)

beq $s0, $s1, L1

• Λύση:

bne $s0, $s1, L2j L1

L2:

• Μπορεί κάποιος να εξηγήσει τι έγινε?

Page 64: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

64HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Συνοπτικά:MIPS operands

Name Example Comments$s0-$s7, $t0-$t9, $zero, Fast locations for data. In MIPS, data must be in registers to perform

32 registers $a0-$a3, $v0-$v1, $gp, arithmetic. MIPS register $zero always equals 0. Register $at is $fp, $sp, $ra, $at reserved for the assembler to handle large constants.Memory[0], Accessed only by data transfer instructions. MIPS uses byte addresses, so

230 memory Memory[4], ..., sequential words differ by 4. Memory holds data structures, such as arrays,words Memory[4294967292] and spilled registers, such as those saved on procedure calls.

MIPS assembly languageCategory Instruction Example Meaning Comments

add add $s1, $s2, $s3 $s1 = $s2 + $s3 Three operands; data in registers

Arithmetic subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 Three operands; data in registers

add immediate addi $s1, $s2, 100 $s1 = $s2 + 100 Used to add constantsload word lw $s1, 100($s2) $s1 = Memory[$s2 + 100] Word from memory to registerstore word sw $s1, 100($s2) Memory[$s2 + 100] = $s1 Word from register to memory

Data transfer load byte lb $s1, 100($s2) $s1 = Memory[$s2 + 100] Byte from memory to registerstore byte sb $s1, 100($s2) Memory[$s2 + 100] = $s1 Byte from register to memoryload upper immediate lui $s1, 100 $s1 = 100 * 216 Loads constant in upper 16 bits

branch on equal beq $s1, $s2, 25 if ($s1 == $s2) go to PC + 4 + 100

Equal test; PC-relative branch

Conditional

branch on not equal bne $s1, $s2, 25 if ($s1 != $s2) go to PC + 4 + 100

Not equal test; PC-relative

branch set on less than slt $s1, $s2, $s3 if ($s2 < $s3) $s1 = 1; else $s1 = 0

Compare less than; for beq, bne

set less than immediate

slti $s1, $s2, 100 if ($s2 < 100) $s1 = 1; else $s1 = 0

Compare less than constant

jump j 2500 go to 10000 Jump to target addressUncondi- jump register jr $ra go to $ra For switch, procedure returntional jump jump and link jal 2500 $ra = PC + 4; go to 10000 For procedure call

Page 65: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

65HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Byte Halfword Word

Registers

Memory

Memory

Word

Memory

Word

Register

Register

1. Immediate addressing

2. Register addressing

3. Base addressing

4. PC-relative addressing

5. Pseudodirect addressing

op rs rt

op rs rt

op rs rt

op

op

rs rt

Address

Address

Address

rd . . . funct

Immediate

PC

PC

+

+

Τρόποι Καθορισμού Διεύθυνσης (Συνοπτικά):

Page 66: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

66HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Μετάφραση και Εκτέλεση Προγράμματος

Πρόγραμμα C

Μεταγλωττιστής

Συμβολομετα-φραστής

ΣυνδετικόςΣυντάκτης

ΦορτωτήςΜνήμη

Πρόγραμμα Assembly

Γλώσσα Μηχανήςγια Πρόγραμμα C

Βιβλιοθήκες σεΓλώσσα Μηχανής

Εκτελέσιμο Πρόγραμμα(Γλώσσα Μηχανής)

(Αρχεία Unix Αρχεία Dos)(x.c x.c)

(x.s x.asm)

(x.o x.obj) (x.a,x.so x.lib, x.dll)

(a.out x.exe)

Page 67: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

67HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Μεταγλωττιστής (Compiler)

• Μεταφράζει από γλώσσα υψηλού επιπέδου σε κώδικα assembly

• Πολύπλοκο πρόγραμμα (η ανάπτυξη μεταγλωττιστών αποτελείσυνήθως ολόκληρο μάθημα που διδάσκεται στο 4ο έτος, θεωρείταιως ένα από τα πιο δύσκολα μαθήματα!)

Πρόγραμμα C

Μεταγλωττιστής Πρόγραμμα Assembly

Page 68: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

68HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Συμβολομεταφραστής (Assembler)

• Διασύνδεση μεταξύ του λογισμικού και του υλικού ενόςυπολογιστή

• Μπορούμε να χρησιμοποιήσουμε ψευδοεντολές, όπως:– move add με $zero– blt slt, bne– mult sll

• Ο συμβολομεταφραστής της MIPS χρησιμοποιεί το δεκαεξαδικόσύστημα αριθμών

Συμβολομετα-φραστής

Πρόγραμμα Assembly

Γλώσσα Μηχανήςγια Πρόγραμμα C

Page 69: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

69HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Συμβολομεταφραστής (συν.)

Το αρχείο του εκτελέσιμου κώδικα περιέχει (στο Unix):

1. Κεφαλίδα (Header): καθορίζει το μέγεθος/τοποθεσία τωνυπολοίπων μερών

2. Κείμενο (Text segment): περιέχει τη γλώσσα μηχανής (εκτελέσιμοκώδικα)

3. Στατικά δεδομένα (Static data segment): τα στατικά δεδομένα τουπρογράμματος

4. Πληροφορίες μετατόπισης (Relocation information): προσδιορίζειλέξεις εντολών/δεδομένων βάση απόλυτων διευθύνσεων

5. Πίνακας συμβόλων (Symbol table): ταιριάζει τα ονόματα τωνlabels με απόλυτες διευθύνσεις (word addresses) στη μνήμη

6. Πληροφορίες αποσφαλμάτωσης (Debugging information): περιγραφή του τρόπου μεταγλωττισμού ώστε να μπορεί νασυσχετιστεί η γλώσσα της μηχανής με τις εντολές γλώσσαςυψηλού επιπέδου (π.χ. C).

Page 70: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

70HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Συνδετικός Συντάκτης (Linker or Link Editor)

• Συνδυάζει προγράμματα που έχουν μεταγλωττιστεί καισυμβολομεταφραστεί ανεξάρτητα σε ένα ενιαίο εκτελέσιμο κώδικα

• Επιτρέπει τη χρήση προκαθορισμένων και ήδησυμβολομεταφρασμένων βιβλιοθηκών κώδικα

• Επιλύει όλα τα ακαθόριστα labels (σε απόλυτες διευθύνσεις)– Χρησιμοποιεί τις πληροφορίες μετατόπισης και τον πίνακα συμβόλων

που είναι μέρη του εκτελέσιμου αρχείου (object file)• Καθορίζει την απόλυτη διεύθυνση στη μνήμη για την κάθε

συνάρτηση / ενότητα

(δείτε περισσότερα στο βιβλίο σας, παράδειγμα στις σελ. 109-111)

ΣυνδετικόςΣυντάκτης

Γλώσσα Μηχανήςγια Πρόγραμμα C

Βιβλιοθήκες σεΓλώσσα Μηχανής

Εκτελέσιμο Πρόγραμμα(Γλώσσα Μηχανής)

Page 71: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

71HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Φορτωτής (Loader)

• Τοποθετεί το εκτελέσιμο πρόγραμμα (machine code με απόλυτεςδιευθύνσεις) στην κυρίως μνήμη

• Πρέπει να εντοπίσει αρκετό χώρο στη μνήμη που να μπορεί νακρατήσει ολόκληρο το πρόγραμμα

• Αντιγράφει τα δεδομένα από τον δίσκο στη μνήμη• Αντιγράφει τις παραμέτρους του προγράμματος στη στοίβα• Αρχικοποιεί τους καταχωρητές και θέτει τον δείκτη στοίβας• Πηδά στην διεύθυνση της αρχικής συνάρτησης

ΦορτωτήςΜνήμηΕκτελέσιμο Πρόγραμμα

(Γλώσσα Μηχανής)

Page 72: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

72HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Στατικές και Δυναμικές Βιβλιοθήκες(Static vs. Dynamic Libraries)

Στατικές ΔυναμικέςΟι βιβλιοθήκες συνδέονται και

φορτώνονται πριν τηνεκτέλεση του προγράμματος

Οι βιβλιοθήκες ΔΕΝσυνδέονται ΟΥΤΕ

φορτώνονται ΜΕΧΡΙ τη στιγμήπου εκτελείται το πρόγραμμα

Γρηγορότερη εκτέλεση Πιο αργή εκτέλεση

Καινούριες εκδόσεις πρέπεινα ξανα-συνδεθούν και να

ξανα-φορτωθούν

Οι καινούριες εκδόσειςυποστηρίζονται αυτόματα

Απαιτεί περισσότερο χώρο(φορτώνεται ολόκληρη η

βιβλιοθήκη)

Μειωμένος χώρος

Σύνδεση Lazy procedure: μια ρουτίνα συνδέεται μόνοαφότου έχει καλεστεί, έτσι δενσυνδέονται/φορτώνονταιαχρησιμοποίητες ρουτίνες

Page 73: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

73HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Εναλλακτικές Σχεδιασμού:– Παροχή πιο ισχυρών εντολών

– Ο στόχος είναι να μειωθεί ο αριθμός των εντολών που εκτελούνται γιανα διεκπεραιωθεί μια λειτουργία

– Ο κίνδυνος έγκειται στην αύξηση της περιόδου του ρολογιού (cycle time) και/ή του CPI(CPI = αριθμός Clock cycles Per Instruction)

• Θα δούμε σε συντομία το ISA της Intel IA-32

Άλλες Αρχιτεκτονικές (ISAs)

“The path toward operation complexity is thus fraught with peril. To avoid these problems, designers have moved toward simpler instructions”

Page 74: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

74HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Intel IA - 32• 1978: Ανακοινώνεται ο Intel 8086 (16 bit architecture), προέκταση του 8080 (8-bit

architecture). Όχι γενικής χρήσεως καταχωρητές.• 1980: Προσθήκη του 8087 με δυνατότητα αναπαράστασης κινητής υποδιαστολής (60

καινούριες fp εντολές)• 1982: Ο 80286 αυξάνει το μέγεθος των διευθύνσεων σε 24 bits, + νέες εντολές• 1985: Ο 80386 επεκτείνει σε 32 bits, νέους τρόπους διευθυνσιοδότησης

μηχανή με καταχωρητές γενικής χρήσεως• 1989-1995: Οι 80486, Pentium, Pentium Pro προσθέτου κάποιες καινούριες εντολές

(έχουν βελτιστοποιηθεί κυρίως για μεγαλύτερη απόδοση)• 1997: 57 νέες “MMX” (Multi Media eXtension) εντολές στον Pentium II• 1999: Ο Pentium III πρόσθεσε άλλες 70 εντολές (SSE=Streaming SIMD), και 8

ξεχωριστούς καταχωρητές των 128-bits• 2001: Άλλες 144 εντολές (SSE2) στον Pentium 4• 2003: AMD επεκτείνει την αρχιτεκτονική και αυξάνει το μέγεθος των διευθύνσεων σε

64 bits, πλάτυνε όλους τους καταχωρητές σε 64 bits, κτλ (AMD64)• 2004: Η Intel συνθηκολογεί και ενστερνίζεται τον AMD64 (τον ονομάζει EM64T) και

προεκτείνει με επιπρόσθετες εντολές για πολυμέσα

“This history illustrates the impact of the “golden handcuffs” of compatibility” (keep extending architecture for software’s sake)

“adding new features as someone might add clothing to a packed bag”“an architecture that is difficult to explain and impossible to love”

Page 75: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

75HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

IA-32 - Συνοπτικά

• Πολυπλοκότητα:– Οι εντολές διαφέρουν σε μέγεθος από 1 σε 17 bytes– Ένας τελεστής λειτουργεί και ως τελεστής πηγής και τελεστήςαποτελέσματος

– Ένας τελεστής μπορεί να έρθει απευθείας από τη μνήμη– Πολύπλοκοι τρόποι διευθυνσιοδότησηςπ.χ., “βάση ή κλιμακωτός δείκτης με μετακίνηση 8 ή 32 bit”

• Για εύκολη μεταχείριση :– Οι πιο συχνο-χρησιμοποιημένες εντολές δεν είναι δύσκολο ναυλοποιηθούν

– Οι μεταγλωττιστές αποφεύγουν τα μέρη της αρχιτεκτονικήςπου είναι αργά

“what the 80x86 lacks in style is made up in quantity, making it beautiful from the right perspective”

Page 76: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

76HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

IA-32: Καταχωρητές και ΤρόποςΚαθορισμού Διεύθυνσης Δεδομένων

• Οι καταχωρητές των 32-bit προέρχονται από τον 80386

GPR 0

GPR 1

GPR 2

GPR 3

GPR 4

GPR 5

GPR 6

GPR 7

Code segment pointer

Stack segment pointer (top of stack)

Data segment pointer 0

Data segment pointer 1

Data segment pointer 2

Data segment pointer 3

Instruction pointer (PC)

Condition codes

Use031

Name

EAX

ECX

EDX

EBX

ESP

EBP

ESI

EDI

CS

SS

DS

ES

FS

GS

EIP

EFLAGS

Page 77: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

77HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

IA-32 Περιορισμοί Καταχωρητών

• Οι καταχωρητές δεν είναι όλοι γενικής χρήσεως –προσέξετε τους περιορισμούς που φαίνονται πιο κάτω

Page 78: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

78HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

IA-32 Τυπικές Εντολές

• 4 βασικά είδη εντολών ακεραίων:– Μεταφορά δεδομένων, συμπεριλαμβανομένων των move,

push, pop– Αριθμητικές και λογικές (αποτέλεσμα σε καταχωρητή ή μνήμη)– Ροή Ελέγχου (χρήση condition codes / flags )– Εντολές στοιχειοσειρών, συμπεριλαμβανομένων των string

move και string compare

Page 79: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

79HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

IA-32 Διατάξεις Εντολών

• Τυπικές μορφές: (προσέξετε το διαφορετικό μέγεθος, σε αντίθεση μετη MIPS όπου το μέγεθος είναι σταθερό)

a. JE EIP + displacement

b. CALL

c. MOV EBX, [EDI + 45]

d. PUSH ESI

e. ADD EAX, #6765

f. TEST EDX, #42

ImmediatePostbyteTEST

ADD

PUSH

MOV

CALL

JE

w

w ImmediateReg

Reg

wd Displacementr/mPostbyte

Offset

DisplacementCondi-tion

4 4 8

8 32

6 81 1 8

5 3

4 323 1

7 321 8

Page 80: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

80HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

• Η πολυπλοκότητα του συνόλου εντολών είναι μόνο έναςπαράγοντας που επηρεάζει την απόδοση ενός υπολογιστή– Μικρότερος αριθμός εντολών vs. Μεγαλύτερο CPI ή μικρότερο

κύκλο/περίοδο ρολογιού

• Αρχές Σχεδιασμού:– «Η απλότητα ευνοεί την κανονικότητα» (simplicity favors regularity)– «Το μικρότερο είναι και το γρηγορότερο» (smaller is faster)– «Ο καλός σχεδιασμό απαιτεί συμβιβασμό» (good design demands

compromise)– «Η συνήθης πράξη πρέπει να είναι γρήγορη» (Make the common

case fast)

• Αρχιτεκτονική Συνόλου Εντολών(Instruction Set Architecture – ISA)– Ένα σημαντικότατο μοντέλο αφαιρετικότητας!

Βασικά συμπεράσματα 2ου Κεφαλαίου

Page 81: Lectures for 2nd Edition...HMY 212 – ΟργάνωσηΥπολογιστώνκαιΜικροεπεξεργαστές, Κεφάλαιο2 4 ΕαρινόΕξάμηνο2007, ΒΣ ...

81HMY 212 – Οργάνωση Υπολογιστών και Μικροεπεξεργαστές, Κεφάλαιο 2Εαρινό Εξάμηνο 2007, ΒΣ

Άλλα σημαντικά θέματα

• Βελτιστοποίηση Μεταγλωττιστή• Πίνακες vs. Δείκτες σε γλώσσα υψηλού επιπέδου και οαντίκτυπός τους στην Assembly

• Μεγαλύτερα/ολοκληρωμένα παραδείγματα μετάφρασηςαπό υψηλή γλώσσα επιπέδου σε Assembly καιγλώσσα μηχανής

Όλα τα πιο πάνω θέματα θα εξεταστούν μεπερισσότερη λεπτομέρεια στο εργαστήριο (ΗΜΥ 213).