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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
Advertisements

Βήματα στην εκτέλεση μιας διαδικασίας (procedure) 1.Τοποθέτηση παραμέτρων 2.Μεταβίβαση ελέγχου στη διαδικασία 3.Λήψη πόρων αποθήκευσης.
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) Σχεδίαση datapath 4 κατηγορίες εντολών: Αριθμητικές-λογικές.
Αρχιτεκτονικές Συνόλου Εντολών
Ανίχνευση κίνδυνου Επίλυση με προώθηση. Μπλέ: Εξαρτήσεις. Εξαρτήσεις προς προηγούμενα CC είναι κίνδυνοι δεδομένων Kόκκινο: Προώθηση IF/ID ID/EX EX/MEM.
Λύση: Multicycle υλοποίηση Single-cyle υλοποίηση: Διάρκεια κύκλου ίση με τη μεγαλύτερη εντολή-worst case delay (εδώ η lw) = χαμηλή.
© Οργάνωση Υπολογιστών 5 “συστατικά” στοιχεία -Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές.
© Pipeline: Ένα παράδειγμα από ….τη καθημερινή ζωή 1.Πλυντήριο 2.Στεγνωτήριο 3.Δίπλωμα 4.αποθήκευση 30 min κάθε «φάση» Σειριακή προσέγγιση.
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
1 Pipeline: Ένα παράδειγμα από ….τη καθημερινή ζωή 1.Πλυντήριο 2.Στεγνωτήριο 3.Δίπλωμα 4.αποθήκευση 30 min κάθε «φάση» Σειριακή προσέγγιση για 4 φορτία.
1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Pipelining –
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Οργάνωση Υπολογιστών 5 “συστατικά” στοιχεία -Επεξεργαστής:
1 Κλήσεις συναρτήσεων και προγραμματισμός με μηχανές καταστάσεων.
Οργάνωση Υπολογιστών 5 “συστατικά” στοιχεία -Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές.
1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Οι κίνδυνοι της.
1 Οργάνωση Υπολογιστών 5 “συστατικά” στοιχεία -Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές Εισόδου (4), Εξόδου (5)
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κ.ΑΛΑΦΟΔΗΜΟΣ καθηγητής Δ.Παπαχρήστος μέλος ΕΔΙΠ ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΠΑΝΕΠΙΣΤΗΜΙΟ Α ΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.
ΕΙΣΑΓΩΓΉ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΉ ΝΊΚΟΣ ΠΑΠΑΔΆΚΗΣ Αρχιτεκτονική Υπολογιστών.
Αρχιτεκτονική Υπολογιστών Ενότητα # 5: DEMO Διδάσκων: Γεώργιος Κ. Πολύζος Τμήμα: Πληροφορικής.
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών 10 ο Μάθημα.
Γιώργος Μαγουλάκης Εξάμηνο: Εαρινό 2015 ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Τμ. Μηχανικών Πληροφορικής.
Αρχιτεκτονική Υπολογιστών DATAPATH & CONTROL. Αρχιτεκτονική Υπολογιστών DATAPATH & CONTROL Για κάθε εντολή υπάρχουν δυο βήματα που πρέπει να γίνουν: –Προσκόμιση.
Click to add Text Σπάνια ζώα Μαργιάννα,Ελεάννα. Λεοπάρδαλη Αμούρ Ρινόκερος της Σουμάτρα Γιγαντιαίο καλαμάρι Αγριόγατα Πρίστης ή «ξυλουργός καρχαρίας.
Click to add Text Φυσικά φαινόμενα Μαργιάννα Άννα ΣΤ’1.
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών 9 ο Μάθημα.
Υπολογιστικά συστήματα: Στρώματα
Προγραμματιζόμενοι Λογικοί Ελεγκτές (P.L.C.)
Morgan Kaufmann Publishers Ο επεξεργαστής
Καθηγητής Σταύρος Α. Κουμπιάς
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Ενότητα 5 : Οργάνωση Υλικού Υπολογιστών Δρ. Γκόγκος Χρήστος
Εισαγωγή στους Η/Υ Ενότητα 7: Η οργάνωση ενός Η/Υ Ιωάννης Σταματίου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
INSTRUCTIONS LANGUAGE OF THE MACHINE
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
Single-cyle υλοποίηση:
MIPS: Σύνολο εντολών, γλώσσα μηχανής & μεθοδολογία σχεδίασης
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
Αρχιτεκτονικές Συνόλου Εντολών
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
Παράγοντες που επηρεάζουν την επίδοση της CPU
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
ΗΜΥ 007 – Τεχνολογία Πληροφορίας Διάλεξη 5
Pipeline: Ένα παράδειγμα από ….τη καθημερινή ζωή
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Αριθμητική για υπολογιστές
Θέματα Φεβρουαρίου
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
Single-cyle υλοποίηση:
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Ι
Τα θέματα μας σήμερα Ηλεκτρονικοί υπολογιστές Υλικό και λογισμικό
Άσκηση Pipeline 1 Δεδομένα Έχουμε ένα loop... Rep: lw $2,100($3)
Αρχιτεκτονική ΙΑ-64 Προηγμένες Αρχιτεκτονικές Υπολογιστών
Άσκηση Pipeline 1 Δεδομένα Έχουμε ένα loop... Rep: lw $2,100($3)
Single-cyle υλοποίηση:
Увод у организацију и архитектуру рачунара 2
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Single-cyle υλοποίηση:
Single-cyle υλοποίηση:
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Άσκηση Pipeline 1 Δεδομένα Έχουμε ένα loop... Rep: lw $2,100($3)
Runtime Access to Variables
Principles of Computers 19th Lecture
Μεταγράφημα παρουσίασης:

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

Εντολές του Προηγούμενου Μαθήματος add Προσθέτει την τιμή ενός καταχωρητή με την τιμή ενός άλλου καταχωρητή και αποθηκεύει το αποτέλεσμα σε έναν τρίτο καταχωρητή addi Προσθέτει την τιμή ενός καταχωρητή με ένα σταθερό νούμερο και το αποθηκεύει σε έναν άλλο καταχωρητή

Εντολές του Προηγούμενου Μαθήματος sub Αφαιρεί την τιμή ενός καταχωρητή από την τιμή ενός άλλου καταχωρητή και αποθηκεύει το αποτέλεσμα σε έναν τρίτο καταχωρητή j (jump) Δημιουργεί έναν βρόγχο, κάτι σαν την while() στη C-C++

Το Πρόγραμμα του Μαθήματος 1 .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)

Αποτελέσματα Καταχωρητής Πράξη $16 addi $16, $0, 10 $17 $18 add $18, $16, $17 add $18, $18, $18 add $18, $18, $17 addi $17, $17, -1 sub $17, $17, $16 Αποτέλεσμα (dec) Αποτέλεσμα (Hex) 10 a 64 40 74 4a 148 94 212 d4 63 3f 53 35

Εντολές μεταφοράς δεδομένων και βρόχοι στον MIPS Στις γλώσσες προγραμματισμού εκτός από μεταβλητές υπάρχουν σύνθετες μορφές δεδομένων (πχ. οι Πίνακες) Χαρακτηριστικό τους: Πολύ μεγαλύτερο αριθμό δεδομένων από ότι οι registers Για την προσπέλαση των δεδομένων, χρειάζονται οι εντολές μεταφοράς δεδομένων (data transfer instructions)

Εντολές Μεταφοράς Δεδομένων Μνήμη Οι εντολές αυτές χρειάζονται να τους παρέχουμε την διεύθυνση της μνήμης, των δεδομένων που πρέπει να μεταφέ- ρουν Διεύ- θυνση Τιμές $0 $1 $2 $3 $4 $5 $6 $7 2 3 1 5 7 Εντολή Φόρτωσης (load)  Φέρνει δεδομένα από την Μνήμη στον Επεξεργαστή (Στον MIPS: lw ) Εντολή Αποθήκευσης (store)  Μεταφέρει και αποθηκεύει δεδομένα από τον Επεξεργαστή στη Μνήμη (Στον MIPS: sw )

Εντολές Διακλάδωσης υπό Συνθήκη στον MIPS Κανονικά το πρόγραμμα εκτελείται σειριακά (σε συνεχόμενες θέσεις μνήμης) Ο Program Counter (PC) δείχνει πάντα την επόμενη προς εκτέλεση εντολή PC Εδώ γίνεται κλήση της jump – Εντολής μεταφοράς ελέγχου (CTI - control transfer instruction) οπότε ο PC δείχνει την διεύθυνση που του λέει η εκτελούμενη εντολή (Ατέρμονας Βρόγχος) Εντολή Εντολή Εντολή Εντολή Εντολή

Εντολές Διακλάδωσης υπό Συνθήκη στον MIPS Χρησιμεύουν για να φτιάξουμε κανονικό (όχι άπειρο) βρόγχο Εκτελούνται εντολές σε δύο περιπτώσεις: Είτε να ισχύει μία συνθήκη Είτε να μην ισχύει beq (Branch if Equal – διακλάδωση αν είναι ίσο) beq $16, $17, label  Διαβάζει τους καταχωρητές 16 και 17, και τους συγκρίνει. Εάν τους βρει ίσους (equal) διακλαδίζεται στη θέση label, δηλαδή κάνει τον επεξεργαστή να διαβάσει και εκτελέσει την εντολή από εκείνη τη διεύθυνση σαν επόμενη εντολή. Αλλιώς, δεν κάνει τίποτα, οπότε επόμενη εντολή θα διαβαστεί και εκτελεστεί η "από κάτω" εντολή

Εντολές Διακλάδωσης υπό Συνθήκη στον MIPS bne – (Branch if not Equal – Διακλάδωση αν δεν ειναι ίσο) Κάνει το ανάποδο από την beq Διακλαδίζεται εάν βρει τους καταχωρητές άνισους (not equal) αλλιώς συνεχίζει «από κάτω»

Κώδικας Βρόχου και Εισόδου / Εξόδου Κονσόλας Γιά να επικοινωνούν τα προγράμματα που τρέχουμε στον SPIM με τον έξω κόσμο, ο SPIM προσομοιώνει μερικές υποτυπώδεις υπηρεσίες λειτουργικού συστήματος για είσοδο / έξοδο (I/O) στην "κονσόλα" (ένα απλό τερματικό ASCII). Δεν είναι ανάγκη προς στιγμήν να καταλάβετε όλες τις λεπτομέρειες του πώς γίνεται η κλήση αυτών των λειτουργιών (system call)

Επεξηγήσεις Κώδικα Υπολογίζει το άθροισμα s=1+2+3+...+(n-1), για n >=2 Προσοχή: αν δοθεί n < 2, ο κώδικας θα μπει σε (σχεδόν) άπειρο βρόγχο! Η "καρδιά" του κώδικα είναι τα κομμάτια (3) --αρχικοποιήσεις-- και (4) --βρόγχος υπολογισμού. Προσέξτε τις παρακάτω εξηγήσεις: Οι γραμμές που αρχίζουν με τελεία (".") είναι οδηγίες (directives) προς τον Assembler, και όχι εντολές Assembly του MIPS Η οδηγία “.data” σημαίνει ότι ό,τι ακολουθεί είναι δεδομένα (και όχι εντολές), και πρέπει να τοποθετηθούν στο κομμάτι της μνήμης που προορίζεται για αυτά (data segments) (στον SPIM αυτό αρχίζει από τη διεύθυνση 10000000 δεκαεξαδικό). Η οδηγία “.asciiz” σημαίνει να αρχικοποιήσει ο Assembler τις επόμενες θέσεις (bytes) μνήμης με το ASCII string που ακολουθεί, τερματισμένο με ένα NULL. Οι ετικέτες (labels) str_n, str_s, και str_nl, ακολουθούμενες από άνω-κάτω τελεία ":", ορίζουν την κάθε ετικέτα σαν την διεύθυνση μνήμης όπου ο Assembler βάζει το αντίστοιχο string (τη διεύθυνση μνήμης του πρώτου byte του string).

Επεξηγήσεις Κώδικα Η οδηγία “.text” σημαίνει, ότι ό,τι ακολουθεί είναι εντολές (και όχι δεδομένα), και πρέπει να τοποθετηθούν στο κομμάτι της μνήμης που προορίζεται για αυτές (text segments) Οι οδηγίες .globl λένε στον Assembler να βάλει τις ετικέτες (labels) main και loop στον πίνακα καθολικών (global) συμβόλων. Για την ετικέτα loop (που είναι η αρχή του βρόχου μας), με το να την κάνουμε global, μπορούμε να την δίνουμε και συμβολικά --όχι μόνο αριθμητικά-- σαν διεύθυνση breakpoint στον SPIM.

Επεξηγήσεις Κώδικα Το κομμάτι (1) του κώδικα είναι ένα κάλεσμα του λειτουργικού συστήματος (system call) τυπώνει το string str_n στην κονσόλα (πρόκειται για το string "n = " που ορίστηκε παραπάνω). Για να καταλάβει το λειτουργικό σύστημα ποιο από όλα τα system calls ζητάμε, βάζουμε στον καταχωρητή $2 σαν παράμετρο (argument) τον αριθμό 4, που σημαίνει ότι ζητάμε το system call υπ' αριθμό 4, που είναι το print_string. Επίσης, για να ξέρει το λειτουργικό σύστημα ποιο string θέλουμε να τυπώσει στην κονσόλα, βάζουμε στον καταχωρητή $4 σαν παράμετρο (argument) τη διεύθυνση μνήμης αυτού του string (δηλ. έναν pointer σε αυτό το string), που στην περίπτωσή μας είναι η ετικέτα str_n που ορίσαμε παραπάνω (το "la" είναι ψεύδοεντολή (pseudoinstruction) του Assembler του SPIM, και όχι κανονική εντολή του MIPS, και λεει στον Assembler να γεννήσει μία ή δύο πραγματικές εντολές που τοποθετούν τη διεύθυνση της ετικέτας str_n στον καταχωρητή $4, ανάλογα αν η διεύθυνση αυτή χωρά ή όχι στα 16 bits μίας σταθεράς "immediate" όπως θα δούμε αργότερα).

Επεξηγήσεις Κώδικα Το κομμάτι (2) του κώδικα είναι ένα ανάλογο κάλεσμα (το κάλεσμα υπ' αριθμό 5, δηλαδή read_int), που περιμένει να διαβάσει έναν ακέραιο από την κονσόλα: ο προσομοιωτής θα περιμένει εκεί μέχρι να πληκτρολογήστε έναν ακέραιο και ένα RETURN στο παράθυρο "SPIM Console". Μέσω της επόμενης εντολής, add, ο ακέραιος που επιστρέφει το κάλεσμα (στον καταχωρητή $2) αρχικοποιεί τη μεταβλητή μας n (στον καταχωρητή $16). Το κομμάτι (3) του κώδικα είναι η αρχικοποίηση των μεταβλητών s (καταχωρητής $17) και i (καταχωρητής $18) πριν μπούμε στο βρόχο.

Επεξηγήσεις Κώδικα Το κομμάτι (4) του κώδικα είναι ο κυρίως βρόχος υπολογισμού. Σε κάθε επανάληψή του αυξάνει το s κατά i και το i κατά 1, και στη συνέχεια συγκρίνει το i (καταχωρητής $18) με το n (καταχωρητής $16) και διακλαδίζεται (πηγαίνει) πίσω στην ετικέτα loop, δηλαδή στην αρχή του βρόχου, όσο αυτές οι δύο μεταβλητές δεν είναι ίσες μεταξύ τους, δηλαδή όσο το i δεν έφτασε ακόμα το n. Αλλιώς, μόλις το (ήδη αυξημένο) i γίνει ίσο με n, δεν διακλαδιζόμαστε πίσω, αλλά συνεχίζουμε με την επόμενη εντολή, δηλαδή το κομμάτι (5) του κώδικα. Το κομμάτι (5) του κώδικα είναι τρία καλέσματα συστήματος για να τυπωθούν το string str_s, η απάντηση s, και το string str_nl. Τέλος, η εντολή jump στο (6) μας επιστρέφει πάντα πίσω στο main, ώστε το πρόγραμμα να ξανατρέχει συνεχώς μέχρι να τερματίσετε τον SPIM.