Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


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

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

2 Στο προηγούμενο... Είδαμε εντολές μεταφοράς δεδομένων και βρόγχους στον MIPS: lw: Εντολή φόρτωσης δεδομένων από την μνήμη στον επεξεργαστή sw: Εντολή μεταφοράς και αποθήκευσης δεδομένων από τον επεξεργαστή στη μνήμη

3 Στο προηγούμενο... Εντολές διακλάδωσης υπό συνθήκη:
beq (branch if equal – διακλάδωση ΑΝ ΕΙΝΑΙ ίσο) Διαβάζει τις τιμές δύο καταχωρητών και τις συγκρίνει. Αν είναι ίσες το πρόγραμμα διακλαδίζεται στην θέση μνήμης που υποδεικνύει η συγκεκριμένη εντολή, πχ: beq $16, $17, label bne (branch if not equal – Διακλάδωση αν ΔΕΝ ΕΙΝΑΙ ΙΣΟ) Αντίστοιχα διαβάζει τις τιμές δύο καταχωρητών, τις συγκρίνει και αν ΔΕΝ είναι ίσες, διακλαδίζεται στην θέση μνήμης που υποδεικνύεται από την συγκεκριμένη εντολή

4 Επεξήγηση του προγράμματος του προηγούμενου μαθήματος
.data #o,ti akolouthei tin entoli ayti einai arxikopoiiseis str_n: .asciiz "n = " str_s: .asciiz " s = " str_nl: .asciiz "\n“ .text #meta apo auti tin entoli akolouthei to kirios programma globl main #orizontai san global metavlites oste na mporoume na tis globl loop #xrisimopoiisoume san breakpoint main: addi $2, $0, 4 #klisi gia ektiposi simvoloseiras (me to noumero 4) la $4, str_n #pseudoentoli pros assembler gia na tiposei o,ti syscall #iparxei sti tampela str_n (thesi mnimis tis str_n)

5 Επεξήγηση του προγράμματος του προηγούμενου μαθήματος
addi $2, $0, #klisi sistimatos gia anagnosi integer syscall #to programma diavazei ton integer add $16, $2, $ #Epistrefei tin timi int sto n ($16) add $17, $0, $ # s = 0 addi $18, $0, # i = 1 loop: add $17, $17, $18 # s = s + i addi $18, $18, 1 # i = i + 1 bne $18, $16, loop # Epanalamvanei oso i != n

6 Επεξήγηση του προγράμματος του προηγούμενου μαθήματος
addi $2, $0, 4 #kalei tin print_string la $4, str_s #orizei tin dieuthinsi tou string syscall #tiponei to string addi $2, $0, 1 #kalei tin print_int (me to noumero 1 ) add $4, $17, $0 #Antigrafei to s ($17) ston $4 syscall #tiponei to s addi $2, $0, 4 la $4, str_nl #kai allazei grammi syscall j main #kai xsana apo tin arxi

7 Πρόγραμμα για επανάληψη
Φτιάξτε πρόγραμμα το οποίο θα κάνει τα εξής: Θα ζητάει συνέχεια έναν ακέραιο αριθμό n μέχρι να του δώσουμε την τιμή -1. Μόλις γίνει αυτό, το πρόγραμμα θα τυπώνει το άθροισμα όλων των αριθμών που του έχουμε ως τώρα δώσει και θα επαναλαμβάνεται εις άπειρον

8 Βήματα Φτιάξτε τον κώδικα που να τυπώνει τα στοιχεία σας (Όνοματεπώνυμο, ΑΜ, Εξάμηνο) Πώς τυπώνουμε μια συμβολοσειρά; Διαμορφώστε τον κώδικα έτσι ώστε να ζητάει και να διαβάζει έναν ακέραιο n αριθμό και να τον τυπώνει Πώς διαβάζουμε ακέραιους αριθμούς;

9 Βήματα Διαμορφώστε τον κώδικα έτσι ώστε να ζητάει συνέχεια τον ακέραιο n μέχρι να του δώσετε -1. Όταν του δώσετε -1 να τυπώνει το άθροισμα x όσων αριθμών έχετε δώσει Το πρόγραμμα πρέπει να ξεκινάει ξανά Ατέρμονας βρόγχος

10 Προσπελάσεις Μνήμης στον MIPS
Εντολές load και store Οι επεξεργαστές κατηγορίας RISC δεν μπορούν να κάνουν πράξεις απ’ευθείας σε νούμερα μέσα στη μνήμη Για αυτό το λόγο είναι απαραίτητο να Μπορούν να διαβάσουν στοιχεία από τη μνήμη του υπολογιστή, Να τα αντιγράψουν σε έναν καταχωρητή μέσα στον επεξεργαστή για να κάνει αυτός τις απαραίτητες πράξεις Να επιστρέψει στην μνήμη δεδομένα που έχουν υπολογιστεί και έχουν προσωρινά καταχωρηθεί σε έναν καταχωρητή, στην κεντρική μνήμη

11 Προσπελάσεις Μνήμης: Εντολές load και store
Από την μνήμη μπορούν να διαβαστούν είτε Ολόκληρη λέξη (32 bits – 4 byte) Μισή λέξη (16 bit) Ένα byte (8 bit) Αντιγραφή λέξης από μνήμη σε καταχωρητή: lw $rd, imm($rx) όπου: $rd  ο καταχωρητής προορισμού $rx  καταχωρητής index register. imm  σταθερός αριθμός

12 Πώς λειτουργεί η αντιγραφή από μνήμη σε καταχωρητή
lw $rd, imm($rx) Όταν θέλουμε να καλέσουμε ένα στοιχείο από την μνήμη για επεξεργασία, πρέπει πρώτα να πούμε πού βρίσκεται. Αυτό γίνεται με την πράξη imm($rx)όπου όταν ορίσουμε έναν δείκτη καταχωρητή και την σταθερή τιμή imm τότε ορίζουμε την ακριβή θέση μνήμης που ο MIPS θα καλέσει το δεδομένο για να το αποθηκεύσει στον καταχωρητή του $rd Η εντολή αυτή δηλαδή προκαλεί ανάγνωση από την θέση imm($rx) της μνήμης

13 Η μνήμη σαν πίνακας Η μνήμη μπορεί εύκολα να συμβολιστεί σαν ένας πίνακας M [ ]. Μ [Α] δείχνει ότι έχουμε έναν πίνακα που συμβολίσουμε ότι το περιεχόμενο που εμείς ζητάμε τώρα είναι στη θέση μνήμης με διεύθυνση A. Η προηγούμενη εντολή σε πιο κατανοητή γλώσσα μεταφράζεται σε Μ [imm($rx)]

14 Αντιγραφή από καταχωρητή στη μνήμη
sw $rs, imm($rx) Όπου: $rs  Καταχωρητής πηγής Imm($rx)  η θέση μνήμης που θα αποθηκευτεί ένα δεδομένο Αντίστοιχα με την lw, η sw γράφει στη θέση μνήμης με διεύθυνση (imm + $rx), δηλαδή προκαλεί την αντιγραφή M[imm + $rx] <-- $rs

15 Διευθύνσεις Bytes και Περιορισμοί Ευθυγράμμισης
“Ο MIPS είναι byte addressable” Μία λέξη καταλαμβάνει 4 θέσεις μνήμης (λόγω του ότι είναι 4 bytes) Άρα όταν λέμε ότι ένας πίνακας καταλαμβάνει 100 θέσεις ακεραίων στη μνήμη, πιάνει 400 συνεχόμενες διευθύνσεις σ’αυτή Η θέση ενός ακεραίου διαφέρει από αυτή του διπλανού του κατά 4

16 Διευθύνσεις Bytes και Περιορισμοί Ευθυγράμμισης
00 12 20 02 2E 07 3A 12 32 558 1955


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

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google