Computer Architecture 1 Lesson...• Οικογένειες επεξεργαστών binary...
Transcript of Computer Architecture 1 Lesson...• Οικογένειες επεξεργαστών binary...
Αρχιτεκτονικη υπολογιστων
Τζαγκαράκης Χαράλαμπος
ΤΕΙ Κρήτης
Τμ. Μηχανικών Πληροφορικής
Εισαγωγη: ο επεξεργαστης και η
γλωσσα του
• Eπεξεργαστής: MIPS – Microprocessor Without
Interlocked Pipeline Stages– RISC – Reduced Instruction Set Computer (Υπολογιστές Ελαττωμένου
Ρεπερτορίου Εντολών)
– Χρησιμοποιηθηκε μεταξύ άλλων από: SONY, Silicon Graphics,
Nintendo, NEC
– Μπορεί να λειτουργήσει σε ένα πλήρες σύστημα υπολογιστή
– Έχει πολύ απλό instruction set άρα πολύ καλό εργαλείο για
εκπαίδευση
• Instruction Set � Το λεξιλόγιο του επεξεργαστή
• Instructions � Οι εντολές (λέξεις) που καταλαβαίνει
Γλώσσα Μηχανής - Machine Language
• Οι εντολές που δέχεται και εκτελεί το hardware
είναι κωδικοποιημένες σαν δυαδικά σύμβολα
• Χαρακτηριστικό τους είναι ότι είναι
απλούστερες από τις HLL (C-C++)
• Οικογένειες επεξεργαστών binary compatible
(ίδια γλώσσα μηχανής)
• Υπολογιστές Ελαττωμένου Ρεπερτορίου Εντολών
(RISC - Reduced Instruction Set Computers) –
Λεξιλόγιο με απλές και λίγες εντολές
Ο υπολογιστής εκτελεί αριθμητικές
πράξεις!
• Χρησιμοποιείται συμβολικό όνομα για κάθε επιτρεπτό opcode (πράξη)
• δεκαδικό ή δεκαεξαδικό αριθμό με μερικά απλά σύμβολα για κάθε τελεστέο
• Γράφουμε αυτά τα στοιχεία της κάθε εντολής σε μία χωριστή γραμμή (Assembly)
• Assembler μετατρέπει το πρόγραμμα assembly σε γλώσσα μηχανής
• Compiler μετατρέπει το c-c++ πρόγραμμα σε γλώσσα Assembly
Από τι αποτελείται η γλώσσα
Μηχανής;
• Από Κώδικα Πράξης (opcode – operation
code)
• Τελεστέους (operands) που περιγράφουν
πάνω σε τι θα γίνει η πράξη
– Οι τελεστέοι είναι πάντα καταχωρητές γενικού
σκοπού (registers) του επεξεργαστή ή σταθερές
ποσότητες (αριθμοί) αλλά ΟΧΙ θέσεις μνήμης
– O MIPS έχει 32 καταχωρητές των 32 bits ο
καθένας (όσο το μέγεθος λέξης του MIPS)
Παράδειγμα:
• Η εντολή "add $17, $15, $16” τι
κάνει;– Προσθέτει το περιεχόμενο του καταχωρητή 15 με αυτό του 16 και τοποθετεί
το άθροισμα στον καταχωρητή 17
– 3 τελεστές για λόγους απλότητας (Σχεδιαστική αρχή 1: Simplicity favors
regularity)
– Οι τελεστές των αριθμητικών πράξεων πρέπει να είναι από ένα μικρό σύνολο
από θέσεις μνήμης που καλούνται registers
Άλλες εντολές
• Εντολή sub(subtract – αφαίρεση)
– sub $23, $16, $18 � γράφει στον καταχωρητή υπ' αριθμόν 23 το αποτέλεσμα της αφαίρεσης $16 - $18
• Εντολή addi (add immediate): Παρόμοια με add αλλά ο τρίτος καταχωρητής είναι σταθερό νούμερο
– addi $23, $16, 157 � διαβάζει το περιεχόμενο του καταχωρητή 16, προσθέτει τον αριθμό 157 σε αυτό, και γράφει το αποτέλεσμα στον καταχωρητή 23
Άλλες εντολές
• i=i+1 � addi $18, $18, 1
• Καταχωρητής $0 περιέχει την σταθερή
ποσότητα 0
– Επομένως, η αρχικοποίηση i = 1 γίνεται
addi $18, $0, 1
Πώς εκτελείται ένα πρόγραμμα;
• Οι εντολές γράφονται η μία κάτω από την άλλη στη κεντρική μνήμη
• Μετά την ανάγνωση και εκτέλεση της εντολής ο επεξεργαστής αυξάνει τον PC (Program Counter) ώστε να δείχνει την επόμενη προς εκτέλεση εντολή
• Η σειριακή εκτέλεση των εντολών διακόπτεται από Εντολή Μεταφοράς Ελέγχου (CTI –Control Transfer Instruction)
Πώς εκτελείται ένα πρόγραμμα;
• CTI εντολές είναι: Διακλαδώσεις (Branch),
Άλματα (jump). Πχ:
– j label � λειτουργεί με τέτοιο τρόπο ώστε η
επόμενη εντολή που θα εκτελεστεί να είναι η
εντολή στη διεύθυνση μνήμης "label", αντί να
είναι η "από κάτω" εντολή. Δηλαδή η παραπάνω
εντολή φορτώνει τη διεύθυνση "label" στον
καταχωρητή PC
Μερη του υπολογιστη
• Οι υπολογιστές αποτελούνται από:– Μονάδες Εισόδου – Εξόδου (Πληκτρολόγιο, ποντίκι, οθόνη, δίσκοι,
κλπ.)
– Κεντρική Μνήμη. Εκατομμύρια στοιχεία αποθήκευσης πληροφορίας
– Επεξεργαστής ή Κεντρική Μονάδα Επεξεργασίας (CPU – Central
Processing Unit)
• Περιέχει κυκλώματα ελέγχου. Καθοδηγούν την εκτέλεση των
λειτουργιών που θα πούμε πιο κάτω
• Δρόμους Δεδομένων (Datapath). Από εκεί περνάνε
πληροφορίες που ανταλλάσσει ο επεξεργαστής με τη μνήμη και
τις περιφερειακές συσκευές
• Καταχωρητές Γενικού Σκοπού (General- Purpose Registers).
Πρόκειται για μια πολύ μικρή μνήμη, μεγέθους συνήθως
κάμποσων δεκάδων λέξεων (π.χ. 32 λέξεων)
Registers
• Στη μνήμη του επεξεργαστή αποθηκεύονται
και τα δεδομένα και οι εντολές (instructions)
που πρόκειται να γίνουν.
– Αυτό γίνεται για να μπορεί να δει και να
επεξεργαστεί ο υπολογιστής τις ίδιες του τις
εντολές σαν δεδομένα. Ο μεταφραστής compiler)
είναι το πρώτο βασικό πρόγραμμα υπολογιστή
που γεννά εντολές υπολογιστή
Πώς λειτουργεί ο Υπολογιστής;
• Με επαναληπτικό τρόπο
– Διαβάζει εντολή
– Την αποκωδικοποιεί – εκτελεί (πχ: μεταφορά δεδομένων, πράξεις, αποφάσεις αλλαγής πορείας)
– Διαβάζει από τη μνήμη την επόμενη εντολή που θα εκτελέσει
• Αυτό γίνεται επ’αόριστο εκτός και αν εκτελεστεί εντολή που να λέει στον επεξεργαστή να αλλάξει πορεία!
Program Counter – Μετρητής
Προγράμματος
• Είναι ειδικός καταχωρητής
– Στο τέλος της εκτέλεσης μιας εντολής, ο PC
περιέχει τη διεύθυνση μνήμης της επόμενης
εντολής που πρέπει να διαβαστεί από τη μνήμη
και να εκτελεστεί
– Αν η μνήμη ήταν ένας μεγάλος πίνακας M[ ] τότε
ο PC θα ήταν ο δείκτης i ο οποίος μας λέει να
διαβάσουμε την επόμενη εντολή από τον πίνακα
M[ i ] .
Κώδικας Γνωριμίας με τον SPIM
• Αντιγράψτε σε ένα αρχείο ονόματος ask1.s (μέσω Notepad) τον παρακάτω κώδικα
• .text # program memory:
.globl main # label "main" must be global;
# bootstrap trap.handler calls main.
main:
# registers: $16: i; $17: j;
addi $16, $0, 10 # init. i=10; ($0==0 always)
addi $17, $0, 64 # init. j=64; (64 decimal = 40 hex)
add $18, $16, $17 # $18 <- i+j = 74 dec = 4a hex
add $18, $18, $18 # $18 <- 74+74=148 dec = 94 hex
add $18, $18, $17 # $18 <-148+64=212 dec = d4 hex
addi $17, $17, -1 # j <- j-1 = 63 dec = 3f hex
sub $17, $17, $16 # j <- j-i = 53 dec = 35 hex
j main # jump back to main (infinite loop)
Single Step to See
Program Running
Ευχαριστώ πολύ!