ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονικη υπολογιστων Τζαγκαράκης Χαράλαμπος hatzagarak@cs.teicrete.gr
Εισαγωγη: ο επεξεργαστης και η γλωσσα του 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+1addi $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
Ευχαριστώ πολύ!