ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ. SimuMIPS: ΕΝΑΣ ΠΡΟΣΟΜΟΙΩΤΗΣ ΤΟΥ ΕΠΕΞΕΡΓΑΣΤΗ MIPS ΣΤΟ SIMULINK

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ. SimuMIPS: ΕΝΑΣ ΠΡΟΣΟΜΟΙΩΤΗΣ ΤΟΥ ΕΠΕΞΕΡΓΑΣΤΗ MIPS ΣΤΟ SIMULINK"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ SimuMIPS: ΕΝΑΣ ΠΡΟΣΟΜΟΙΩΤΗΣ ΤΟΥ ΕΠΕΞΕΡΓΑΣΤΗ MIPS ΣΤΟ SIMULINK ΣΙΔΕΡΟΠΟΥΛΟΣ ΘΩΜΑΣ Επιβλέπων καθηγητής: ΠΙΤΣΙΑΝΗΣ ΝΙΚΟΛΑΟΣ Θεσσαλονίκη, Νοέμβριος 2013

2

3 1 Περιεχόμενα Περιεχόμενα... 1 Πίνακας εικόνων... 3 Κεφάλαιο 1: Εισαγωγή... 7 Κεφάλαιο 2: Προσομοιωτές Εισαγωγή Βασικές κατηγορίες Δημοφιλέστεροι προσομοιωτές Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών Εισαγωγή Ιστορικά στοιχεία Αρχές σχεδιασμού RISC Αρχιτεκτονική του MIPS Κεφάλαιο 4: Simulink και Soft Processors Εισαγωγή Simulink Soft Processor Κεφάλαιο 5: Σχεδίαση του προσομοιωτή Εισαγωγή Διαδρομή δεδομένων ενός κύκλου Βασικές λειτουργικές μονάδες Σχεδίαση της διαδρομής δεδομένων Διαδρομή δεδομένων πολλών κύκλων και διοχέτευση Σχεδίαση της διοχέτευσης Κίνδυνοι διοχέτευσης και αντιμετώπιση των κινδύνων Ολοκλήρωση της σχεδίασης... 65

4 2 Περιεχόμενα 5.5 Μέθοδος προσομοίωσης Παραδοχές και απλοποιήσεις Μελλοντική ανάπτυξη Κεφάλαιο 6: Χρήση του προσομοιωτή και αποτελέσματα Εισαγωγή Χρήση του μοντέλου Σύνδεση με Compiler/Assembler Testing Παράρτημα A: Σχεδίαση στο Simulink και κώδικας MATLAB A.1 Τελική σχεδίαση A.2 Instruction Fetch (IF) A.3 Καταχωρητής διοχέτευσης IF/ID A.4 Instruction Decode (ID) A.5 Καταχωρητής διοχέτευσης ID/EX Α.6 Execute (ΕΧ) A.7 Καταχωρητής διοχέτευσης EX/MEM A.8 Memory (ΜΕΜ) Καταχωρητής MEM/WB Write Back (WB) A.9 Τελική σχεδίαση (μεγέθυνση) Παράρτημα B: Σύνολο των εντολών που υλοποιήθηκαν Βιβλιογραφία

5 3 Πίνακας εικόνων Εικόνα 2.1 Κατηγοριοποίηση προσομοιωτών αρχιτεκτονικής Εικόνα 2.2 Text editor του MARS Εικόνα 2.3 Περιβάλλον εκτέλεσης του MARS Εικόνα 3.1 Το επίπεδο ISA Εικόνα 3.2 Σύγκριση βασικών χαρακτηριστικών πυρήνων CISC και RISC Εικόνα 3.3 Εκδόσεις των αρχιτεκτονικών MIPS Εικόνα 3.4 Τυπική χρήση κάθε καταχωρητή Εικόνα 3.5 Αρχείο καταχωρητών MIPS Εικόνα 3.6 Χάρτης μνήμης του MIPS Εικόνα 3.7 Format των εντολών I, J, R Εικόνα 3.9 Απλή εκτέλεση εντολών χωρίς διοχέτευση Εικόνα 3.8 Βασική διαδρομή δεδομένων του MIPS Εικόνα 3.10 Parallel pipeline Εικόνα 3.11 Superpipeline Εικόνα 3.12 Superscalar pipeline Εικόνα 3.13 Διαδρομή δεδομένων με απλή διοχέτευση Εικόνα 4.1 Simulink Library Browser Εικόνα 4.2 Function Block Parameters Εικόνα 4.3 Configuration Parameters Εικόνα 4.4 Model Explorer Εικόνα 4.5 Components of an xpc Target real-time testing environment Εικόνα 4.6 Programming FPGA boards for xpc Target Turnkey real-time target machines Εικόνα 4.7 HDL Workflow Advisor Εικόνα 4.8 Generating HDL code from MATLAB or Simulink with HDL Coder Εικόνα 4.9 Soft Processors για FPGA Εικόνα 5.1 Instruction Memory model and source code Εικόνα 5.2 PC model and source code Εικόνα 5.3 Τυπική χρήση κάθε καταχωρητή Εικόνα 5.4 Register File model and source code Εικόνα 5.5 ALU and ALU Control Unit model and source code Εικόνα 5.6 Data Memory model and source code Εικόνα 5.7 Βασική διαδρομή δεδομένων και σήματα ελέγχου

6 4 Πίνακας εικόνων Εικόνα 5.8 Format των εντολών I, J, R Εικόνα 5.9 Πίνακας καταστάσεων της Control Unit Εικόνα 5.10 Τελική διαδρομή δεδομένων του MIPS στο Simulink Εικόνα 5.11 Memory Block model and parameters Εικόνα 5.12 Διαδρομή δεδομένων μαζί με τους καταχωρητές διοχέτευσης Εικόνα 5.13 Εκτέλεση ενός κύκλου χωρίς διοχέτευση και εκτέλεση με διοχέτευση Εικόνα 5.14 Διαδρομή δεδομένων με απλή διοχέτευση Εικόνα 5.15 Μονάδα Προώθησης Δεδομένων. Μοντέλο και κώδικας Εικόνα 5.16 Σχεδίαση του μηχανισμού προώθησης στο στάδιο EX Εικόνα 5.17 Χρησιμοποίηση του subsystem Signal Handler Εικόνα 5.18 Η Σχεδίαση του Signal Handler Εικόνα 5.19 Hazard Detection Unit. Σχεδίαση και μοντέλο Εικόνα 5.20 Branch Unit. Σχεδίαση και μοντέλο Εικόνα 5.21 Branch Unit Subsystem Εικόνα 5.22 Τελική διαδρομή δεδομένων του MIPS στο Simulink Εικόνα 5.23 Configuration Parameters Εικόνα 6.1 Εισαγωγή του αρχείου εντολών στο μοντέλο Εικόνα 6.2 Εξαγωγή δεδομένων στο Workspace. Subsystem dumpreg Εικόνα 6.3 Εξαγωγή δεδομένων στο Workspace. Block To Workspace Εικόνα 6.4 Φόρτωση εκτελέσιμου αρχείου και εντολή για προσομοίωση Εικόνα 6.5 Block Parameters: To Workspace Εικόνα 6.6 Αρχείο καταχωρητών σε κάθε κύκλο Εικόνα 6.7 Αρχείο καταχωρητών στο τέλος της προσομοίωσης Εικόνα 6.8 text editor του MARS. Επιλογή για assemble Εικόνα 6.9 dump program memory to text file Εικόνα 6.10 Compile, assemble and link Εικόνα 6.11 Compile only; do not assemble or link Εικόνα 6.12 Disassemble Εικόνα 6.13 Εκτέλεση του makefile Εικόνα A.1 Τελικό μοντέλο του πυρήνα MIPS στο Simulink Εικόνα A.3 Program Counter (PC) Εικόνα A.5 Hazard Detection Unit (HDU) Εικόνα A.4 Instruction Memory (IM) Εικόνα A.2 Στάδιο Instruction Fetch (IF) Εικόνα A.6 Καταχωρητής διοχέτευσης IF/ID Εικόνα A.8 Control Unit (CU) Εικόνα A.9 Register File (RegFile)... 93

7 5 Εικόνα A.7 Στάδιο Instruction Decode (ID) Εικόνα A.10 Καταχωρητής διοχέτευσης ID/EX Εικόνα A.11 Στάδιο Execute Εικόνα A.13 Forward Unit Εικόνα A.12 ALU Εικόνα A.14 Signal Handler Εικόνα A.15 Branch Unit Εικόνα A.16 Καταχωρητής διοχέτευσης EX/MEM Εικόνα A.18 Data Memory Εικόνα A.19 Καταχωρητής διοχέτευσης MEM/WB Εικόνα A.20 MUX Εικόνα A.17 Στάδιο Memory και στάδιο Write Back Εικόνα Β.1 Instruction Set για τον πυρήνα MIPS της εργασίας Εικόνα Β.2 MIPS32 Encoding of the Opcode Field Εικόνα Β.3 MIPS32 SPECIAL Opcode Encoding of Function Field Εικόνα Β.4 MIPS32 REGIMM Encoding of rt Field Εικόνα Β.5 MIPS32 SPECIAL2 Encoding of Function Field

8 6 Πίνακας εικόνων

9 7 Κεφάλαιο 1: Εισαγωγή Η προσομοίωση αποτελεί βασικό στάδιο της ανάπτυξης ενός συστήματος και σημαντικό εργαλείο ενός μηχανικού. Στην επιστήμη των υπολογιστών, ο προσομοιωτής ενός επεξεργαστή είναι το λογισμικό, το οποίο σχεδιάζεται κατά τέτοιο τρόπο, ώστε να εκτελεί και να αναπαράγει την λειτουργία μιας κεντρικής μονάδας επεξεργασίας, όσο το δυνατό πιο αξιόπιστα, βασισμένο πάντα στις αρχές σχεδίασης της αρχιτεκτονικής του υλικού. Η παρούσα διπλωματική εργασία πραγματεύεται τη συστηματική ανάλυση, σχεδίαση υλοποίηση και τον τελικό έλεγχο ενός προσομοιωτή επεξεργαστή. Πιο συγκεκριμένα μελετάται και αναπτύσσεται η αρχιτεκτονική MIPS32, δηλαδή η 32 bit έκδοση του πυρήνα MIPS. Το σύστημα σχεδιάζεται και υλοποιείται στην πλατφόρμα Simulink του MATLAB, σε υψηλό επίπεδο μικροαρχιτεκτονικής και όχι σε επίπεδο ψηφιακής λογικής. Στα πρώτα κεφάλαια γίνεται μια γενική αναφορά στους προσομοιωτές επεξεργαστών και αναλύεται η έννοια του cycle accurate simulator. Περιγράφεται η αρχιτεκτονική του MIPS και καταγράφονται οι αρχές σχεδιασμού πυρήνων RISC, ώστε να υπάρξει το απαραίτητο υπόβαθρο για τα επόμενα κεφάλαια που αναφέρονται στην ανάπτυξη του συστήματος. Ακολουθεί μία σύντομη περιγραφή του Simulink και των δυνατοτήτων που προσφέρει για αξιόπιστες προσομοιώσεις συστημάτων και εξηγείται η επιλογή που έγινε να σχεδιαστεί το σύστημα σε Simulink και όχι σε Java, όπως είναι η πλειοψηφία των προσομοιωτών MIPS που υπάρχουν μέχρι τώρα. Στη συνέχεια παρουσιάζεται η έννοια Soft-Core Microprocessor και οι δυνατότητες που υπάρχουν για τη σύνδεση προσομοιωτών, Simulink και ολοκληρωμένων κυκλωμάτων FPGA. Στο 5ο κεφάλαιο καταγράφεται η σταδιακή σχεδίαση και ανάπτυξη του συστήματος. Παρουσιάζεται αναλυτικά η διαδρομή δεδομένων του MIPS μαζί με τα βασικά δομικά στοιχεία του πυρήνα και περιγράφεται όλη η λειτουργία του μηχανισμού διοχέτευσης. Παράλληλα, γίνεται αναφορά σε χαρακτηριστικά του συστήματος που θα μπορούσαν να αναπτυχθούν μελλοντικά αλλά και στις δυνατότητες που δίνει το Simulink για αξιοποίηση του πυρήνα που σχεδιάστηκε σε διάφορα άλλα project, όπως μορφοποίηση πολυπύρηνων συστημάτων, εναλλακτικές αρχιτεκτονικές διοχέτευσης (pipelining) και ανάπτυξη Soft-Core ενσωματωμένων συστημάτων.

10 8 Κεφάλαιο 1: Εισαγωγή Κλείνοντας την εργασία, περιγράφεται η χρήση του προσομοιωτή. Καταγράφονται τα δοκιμαστικά τεστ, οι αλγόριθμοι που εκτελέστηκαν, καθώς και τα συμπεράσματα που προέκυψαν από τη διαδικασία του ελέγχου και αξιολόγησης του συνόλου εντολών που υλοποιήθηκε. Επιπρόσθετα, είναι αρκετά χρήσιμο να αναφερθούμε στη μεθοδολογία που ακολουθήθηκε για τη σύνδεση του πυρήνα με compiler και assembler για MIPS, ώστε να εκτελούμε αλγορίθμους σε γλώσσα C. Στο τέλος του 6ου κεφαλαίου, γίνεται εκτενής αναφορά στα τεστ που πραγματοποιήθηκαν σε γλώσσα C και παρουσιάζεται ο τρόπος με τον οποίο απλοί αλγόριθμοι μεταγλωττίστηκαν με χρήση cross-compiler για MIPS και εκτελέστηκαν με επιτυχία από τον προσομοιωτή.

11 9 Κεφάλαιο 2: Προσομοιωτές 2.1 Εισαγωγή Η κατασκευή ολοκληρωμένων κυκλωμάτων και ειδικότερα κεντρικών μονάδων επεξεργασίας αποτελεί βιομηχανία δισεκατομμυρίων παγκοσμίως. Γίνεται εύκολα κατανοητό ότι σφάλματα σχεδίασης, υλοποίησης ή λειτουργίας είναι απαγορευτικά και η αξιοπιστία του επεξεργαστή πρέπει να θεωρείται δεδομένη. Είναι λοιπόν αναγκαίο, πριν προχωρήσει η υλοποίηση ενός επεξεργαστή και προφανώς πολύ πριν οδηγηθεί στο εμπόριο, να γίνουν τα απαραίτητα τεστ, οι κατάλληλες δοκιμές και προσομοιώσεις για να επιβεβαιωθεί η αξιοπιστία και η ευρωστία του συστήματος. Σε αυτό το πρόβλημα έρχονται να δώσουν λύση οι προσομοιωτές αρχιτεκτονικής υπολογιστή. Βέβαια, η αξιοποίηση προσομοιωτών ξεπερνάει τη σχεδίαση νέων συστημάτων. Προσομοιωτές επεξεργαστών υλοποιούνται για υπάρχοντα συστήματα (emulators) ή για συστήματα που έχουν σταματήσει να παράγονται ή ακόμα και για εκπαιδευτικούς σκοπούς. Ξεκινώντας λοιπόν αυτό το κεφάλαιο, γίνεται μια πλήρης περιγραφή των πλεονεκτημάτων και των μειονεκτημάτων που συνεπάγεται η χρήση ενός προσομοιωτή. Μέσα από αυτή την ανάλυση γίνεται ξεκάθαρο σε ποιες περιπτώσεις αξίζει να επενδύσει κάποιος σε έναν προσομοιωτή, πριν ολοκληρώσει την υλοποίηση του συστήματός του, αλλά και ποια χαρακτηριστικά του συστήματος μας ενδιαφέρει να προσομοιώσουμε ανάλογα με την εφαρμογή. Η ανάπτυξη του τομέα της προσομοίωσης στην επιστήμη των υπολογιστών οδήγησε στην εμφάνιση διαφόρων ειδών προσομοιωτών αρχιτεκτονικής, ο καθένας με διαφορετικό αντικείμενο εργασίας, διαφορετική σχεδίαση και διαφορετικό μοντέλο αρχιτεκτονικής. Παρουσιάζονται λοιπόν οι βασικές κατηγορίες προσομοιωτών, ανάμεσά τους και ο cycle accurate simulator, που είναι το βασικό αντικείμενο μελέτης αυτής της εργασίας. Εν συντομία, ένας cycle accurate simulator προσομοιώνει το επίπεδο μικροαρχιτεκτονικής του επεξεργαστή κύκλο κύκλο και χρησιμοποιείται κυρίως στη σχεδίαση νέων μικροεπεξεργαστών. Σε αντίθεση ένας full system simulator ή ένας instruction set simulator προσομοιώνουν την αρχιτεκτονική με διαφορετικό τρόπο, θεωρώντας τον πυρήνα ως ένα ενιαίο σύστημα και αξιοποιούνται σε διαφορετικές εφαρμογές.

12 10 Κεφάλαιο 2: Προσομοιωτές Επιπρόσθετα, είναι αρκετά χρήσιμο να παρουσιαστούν οι επικρατέστεροι προσομοιωτές που υπάρχουν αυτή τη στιγμή και να συγκριθούν, ώστε να καταλήξουμε σε ορισμένα συμπεράσματα που θα βοηθήσουν τη δική μας σχεδίαση. Παράλληλα, περιγράφονται οι δύο δημοφιλέστεροι προσομοιωτές MIPS και παρουσιάζονται τα βασικά χαρακτηριστικά τους. Γρήγορα γίνεται αντιληπτό ότι η μεγάλη πλειοψηφία προσομοιωτών είναι σχεδιασμένοι σε Java, ενώ δεν υπάρχει κάποια υλοποίηση σε Simulink. Η χρήση προσομοιωτών στην ερευνητική περιοχή της επιστήμης των υπολογιστών, ενσωματώνει αρκετά πλεονεκτήματα, αλλά συνοδεύεται και από ορισμένα μειονεκτήματα. Για αυτό το λόγο, πρέπει να εξετάζεται προσεκτικά το ενδεχόμενο υλοποίησης ή χρήσης προσομοιωτή ανάλογα με την εκάστοτε εφαρμογή. Πλεονεκτήματα Το βασικότερο ίσως πλεονέκτημα της χρήσης προσομοιωτή είναι η πολύ εύκολη αξιολόγηση διαφόρων σχεδιαστικών επιλογών hardware, χωρίς να είναι απαραίτητη η κατασκευή τους στην πράξη. Κάτι τέτοιο θα ήταν όχι απλά χρονοβόρο αλλά και αρκετά δαπανηρό. Παράλληλα, δίνεται η δυνατότητα να προσομοιωθούν και να δοκιμαστούν συστήματα που έχουν σταματήσει να παράγονται. Πολλές φορές είναι χρήσιμο να εκτελεστεί λογισμικό στοχευμένο για μηχανές που δεν έχουμε άμεση πρόσβαση, είτε πλέον δεν παράγονται. Σε αυτές τις περιπτώσεις η χρήση του προσομοιωτή είναι ίσως η μόνη εφικτή λύση. Εξαιρετικά σημαντική είναι η βοήθεια που προσφέρουν οι προσομοιωτές στη συλλογή πολλαπλών δεδομένων που αφορούν τις επιδόσεις του συστήματος, χαρακτηριστικών λειτουργίας και φυσικών μετρήσεων όπως θερμοκρασιακές μεταβολές και κατανάλωση ισχύος. Είναι αρκετά χρήσιμο να υπάρχει μια πλήρης εικόνα σχετικά με την λειτουργία του πυρήνα, πριν παραχθεί το ολοκληρωμένο κύκλωμα. Άμεση επέκταση αυτού είναι και η αποσφαλμάτωση της σχεδίασης του πυρήνα, κάτι που θα ήταν αδύνατο να γίνει αν είχε υλοποιηθεί απευθείας το ολοκληρωμένο κύκλωμα. Τέλος, είναι πολύ σημαντική η βοήθεια που προσφέρουν στην αποσφαλμάτωση κώδικα, καθώς οι προσομοιωτές συνήθως συνοδεύονται από ολοκληρωμένο περιβάλλον ανάπτυξης λογισμικού.

13 2.2 Βασικές κατηγορίες 11 Μειονεκτήματα Όπως γίνεται κατανοητό, οι χρόνοι εκτέλεσης των προγραμμάτων σε έναν προσομοιωτή είναι αρκετά μεγαλύτεροι από τους χρόνους εκτέλεσης στο πραγματικό, φυσικό σύστημα. Ανάλογα με το είδος του προσομοιωτή, το σύστημα που προσομοιώνει και τον τρόπο που έχει αναπτυχθεί ως λογισμικό, οι χρόνοι εκτέλεσης μπορεί να διαφέρουν από 2 έως και 10 τάξεις μεγέθους. Τα αποτελέσματα του προσομοιωτή δεν μπορούν να θεωρηθούν τελείως αξιόπιστα και η δοκιμή σε πραγματικό σύστημα πρέπει να θεωρείται δεδομένη πριν οδηγηθεί ένας πυρήνας στο εμπόριο. Ο προσομοιωτής πρέπει να χρησιμοποιείται ως βοηθητικό εργαλείο σχεδίασης, ανάπτυξης και αξιολόγησης ενός πραγματικού συστήματος και όχι πιστή αναπαραγωγή του. 2.2 Βασικές κατηγορίες Οι προσομοιωτές αρχιτεκτονικής υπολογιστή, όπως και κάθε είδος λογισμικού, μπορούν να κατηγοριοποιηθούν ανάλογα με τα βασικά χαρακτηριστικά τους, τη λειτουργικότητα τους και τη χρήση τους. Όσον αφορά στη λειτουργικότητα, μπορούν να χωριστούν σε functional simulators και performance simulators. Οι πρώτοι αρκούνται μόνο στο να προσομοιώνουν τη λειτουργικότητα του συστήματος και χρησιμοποιούνται κυρίως όταν μας ενδιαφέρει να ελέγξουμε την ορθότητα του συνόλου εντολών ή εξετάζουμε τις βασικές λειτουργίες του πυρήνα. Αντίθετα, οι performance simulators λαμβάνουν υπόψη τους πολλά στοιχεία του υλικού και προσομοιώνουν τις δυνατότητες καλής επίδοσης του επεξεργαστή. Κατά αυτή την έννοια, μας ενδιαφέρει κυρίως η διεκπαιρεωτική ικανότητα του επεξεργαστή σε εντολές (throughput) και συνήθως έχουμε ήδη εξετάσει την λειτουργικότητά του. Η πιο σημαντική κατηγοριοποίηση αφορά το πεδίο δράσης των προσομοιωτών, οι οποίοι μπορούν να χωριστούν σε micro-architecture simulators και σε full-system simulators. Με τη σειρά τους οι προσομοιωτές μικροαρχιτεκτονικής μπορούν να χωριστούν σε προσομοιωτές συνόλου εντολών ( instruction set simulators ) και σε cycle-accurate simulators.

14 12 Κεφάλαιο 2: Προσομοιωτές Computer Architecture Simulator Micro- Architecture Simulator Full-System Simulator Instruction Set Simulator Cycle-Accurate Simulator Εικόνα 2.1 Κατηγοριοποίηση προσομοιωτών αρχιτεκτονικής Πιο αναλυτικά, ένας full-system simulator πρακτικά προσομοιώνει τη λειτουργία ενός πλήρους συστήματος και όχι μόνο του κεντρικού επεξεργαστή. Έχει τη δυνατότητα να εκτελέσει ολόκληρα πακέτα λογισμικού χωρίς καμία τροποποίηση και ενσωματώνει όλους τους απαραίτητους εικονικούς πόρους (virtual hardware) κατά τον ίδιο τρόπου που θα λειτουργούσε μια εικονική μηχανή (virtual machine). Κυρίως χρησιμοποιούνται σε προσομοιωτές μεγάλων δικτύων ή γενικότερα σε περιπτώσεις όπου μας ενδιαφέρει να εκτελούμε μεγάλα πακέτα λογισμικού ή λειτουργικά συστήματα και όχι μόνο ορισμένα τμήματα κώδικα. Αντίθετα, οι micro-architecture simulators εστιάζουν στο επίπεδο μικροαρχιτεκτονικής του κεντρικού επεξεργαστή. Χρησιμοποιούνται κυρίως στον έλεγχο και τη σχεδίαση της διαδρομής δεδομένων του πυρήνα και στην προσομοίωση του συνόλου εντολών που υλοποιήθηκαν. Όπως είπαμε χωρίζονται σε instruction set simulators και cycle-accurate simulators. Instruction set simulators: Οι προσομοιωτές αυτοί στοχεύουν στην πολύ γρήγορη προσομοίωση ολόκληρου του συνόλου εντολών και των βασικών λειτουργιών του πυρήνα. Ωστόσο, δεν εξετάζουν λεπτομέρειες χρονισμού ή στοιχεία της διαδρομής δεδομένων. Cycle-accurate simulators: Οι προσομοιωτές αυτοί εξετάζουν την μικροαρχιτεκτονική του πυρήνα κύκλο-κύκλο και κυρίως χρησιμοποιούνται στη σχεδίαση νέων συστημάτων. Στους cycle-accurate simulators κυρίαρχο στοιχείο προσομοίωσης είναι η ορθότητα της διαδρομής δεδομένων αλλά και ο σωστός συγχρονισμός μεταξύ των λειτουργικών μονάδων του επεξεργαστή. Έτσι, εξασφαλίζεται ότι όλες οι λειτουργίες εκτελούνται στο

15 2.3 Δημοφιλέστεροι προσομοιωτές 13 σωστό χρόνο και τα δεδομένα ακολουθούν τη σωστή πορεία μέσα στον πυρήνα, κατά την εκτέλεση των εντολών σε κάθε κύκλο. 2.3 Δημοφιλέστεροι προσομοιωτές Στην επόμενη λίστα παρουσιάζονται συνοπτικά μερικοί από τους πιο συχνά χρησιμοποιούμενους προσομοιωτές αρχιτεκτονικής. SimNow: προσομοιωτής σχεδιασμένος από την AMD με σκοπό να προσομοιώνει ένα ακριβές μοντέλο πλήρους συστήματος AMD για 64bit επεξεργαστές. Προσφέρει δυνατότητες ελέγχου της μνήμης, φόρτωσης λειτουργικού συστήματος και τροποποίησης του BIOS, αλλά και δυνατότητες προσομοίωσης πολυπύρηνων συστημάτων. SimpleScalar: χρησιμοποιείται κυρίως για εκπαιδευτικούς σκοπούς και σε ερευνητικές εργασίες. Μοντελοποιεί έναν επεξεργαστή μονού πυρήνα με διοχέτευση και είναι γραμμένος σε γλώσσα C. Simics: ένας full-system simulator, που χρησιμοποιείται κυρίως για δοκιμές λειτουργικών συστημάτων. Με μεγάλη ευελιξία, έχει τη δυνατότητα να ενσωματώσει πολλούς σύγχρονους επεξεργαστές και διάφορες αρχιτεκτονικές όπως ARM, MIPS, PowerPC, AMD x64 και άλλους και να φορτώσει πολλά λειτουργικά συστήματα όπως MS-DOS, Windows, Linux, Solaris και άλλα. QEMU: συντομογραφία για Quick Emulator, αποτελεί έναν από τους πιο δημοφιλείς προσομοιωτές σε επίπεδο εικονικής μηχανής. Προσομοιώνει πλήρη συστήματα όπως και ο Simics, με σημαντική διαφορά ότι αποτελεί λογισμικό ανοιχτού κώδικα. SESC: ένας cycle-accurate προσομοιωτής για αρχιτεκτονική MIPS. Βασικό χαρακτηριστικό του είναι η ταχύτητα της προσομοίωσης, σε σύγκριση με παρόμοιους προσομοιωτές όπως ο SimpleScalar. CPU Sim: εφαρμογή σε Java που δίνει τη δυνατότητα στους χρήστες να σχεδιάσουν και να υλοποιήσουν απλές αρχιτεκτονικές και σετ εντολών και να εκτελέσουν εντολές για να δοκιμάσουν και να ελέγξουν τη σχεδίασή τους. SPIM: ίσως ο δημοφιλέστερος προσομοιωτής αρχιτεκτονικής MIPS. Προσομοιώνει τους επεξεργαστές R2000 και R3000 και είναι γραμμένος σε Java. Στοχεύει κυρίως σε εκπαιδευτικές εφαρμογές και παρουσιάζει γραφικά την εκτέλεση των εντολών σε κάθε κύκλο.

16 14 Κεφάλαιο 2: Προσομοιωτές MARS: επίσης πολύ δημοφιλής προσομοιωτής MIPS. Όπως και ο SPIM είναι γραμμένος σε Java και χρησιμοποιείται για εκπαιδευτικούς σκοπούς. Είναι πιο απλός στη χρήση του από τον SPIM και δίνει περισσότερες δυνατότητες για συγγραφή κώδικα assembly και debugging. Και οι δύο αυτοί προσομοιωτές χρησιμοποιούνται παγκοσμίως από πανεπιστήμια στην εκμάθηση γλώσσας assembly σε συνδυασμό με το βιβλίο Computer Organization and Design των J. Hennessy και D. Patterson. Στις δύο επόμενες εικόνες φαίνεται ο editor και το περιβάλλον εκτέλεσης του MARS. Εικόνα 2.2 Text editor του MARS

17 2.3 Δημοφιλέστεροι προσομοιωτές 15 Εικόνα 2.3 Περιβάλλον εκτέλεσης του MARS

18 16 Κεφάλαιο 2: Προσομοιωτές

19 17 Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών 3.1 Εισαγωγή Η ραγδαία ανάπτυξη των επεξεργαστών τις τελευταίες τέσσερις δεκαετίες οδήγησε πολύ γρήγορα στην ανάγκη για μια κατηγοριοποίηση τους σύμφωνα με τις τεχνικές σχεδίασης, τις διαφορετικές αρχιτεκτονικές ή τα μοντέλα μνήμης. Σύντομα εμφανίστηκαν οι έννοιες RISC (Reduced Instruction Set Computer) και CISC (Complex Instruction Set Computer) δημιουργώντας δύο μεγάλες οικογένειες επεξεργαστών, χωρίζοντας τους με βάση την πολυπλοκότητα του συνόλου εντολών που υλοποιούσαν. Η αρχιτεκτονική MIPS (ακρωνύμιο για Microprocessor without Interlocked Pipeline Stages ) βασίζεται σε περιορισμένο σύνολο εντολών (reduced instruction set computer RISC instruction set architecture ISA ) και αναπτύχθηκε από την εταιρεία MIPS Technologies, Inc. Στόχος αυτού του κεφαλαίου είναι να παρουσιάσει αναλυτικά την αρχιτεκτονική του πυρήνα MIPS32 και να περιγράψει τα κύρια χαρακτηριστικά της. Ξεκινώντας με ορισμένα ιστορικά στοιχεία, βλέπουμε την πορεία της τεχνολογίας του MIPS τα τελευταία 30 χρόνια από τη στιγμή που ξεκίνησε η σχεδίαση του πρώτου πυρήνα το 1981 μέχρι τις σημερινές εκδόσεις MIPS32, MIPS64 και micromips. Παράλληλα, βλέπουμε την εξέλιξη του πρώτου πυρήνα RISC, ο οποίος έδωσε το όνομά του στην ευρύτερη οικογένεια επεξεργαστών αυτού του τύπου. Στη συνέχεια, παρουσιάζεται η έννοια RISC και εξηγείται ο λόγος που είναι τόσο δημοφιλής επιλογή αρχιτεκτονικής σχεδίασης. Ο MIPS ανήκει στην ευρύτερη οικογένεια αρχιτεκτονικής RISC μαζί με επεξεργαστές όπως ARC, ARM, Atmel AVR, Intel i860 και i960, PowerPC και SPARC. Όπως ήδη αναφέραμε, σκοπός αυτής της εργασίας είναι η σχεδίαση και υλοποίηση ενός προσομοιωτή επεξεργαστή. Η επιλογή του πυρήνα MIPS ως βασικό μοντέλο σχεδίασης βασίστηκε τόσο στην απλότητα που προσφέρει η αρχιτεκτονική RISC για μια ακαδημαϊκή μελέτη, όσο και στην πληθώρα ενσωματωμένων συστημάτων που χρησιμοποιούν εκδόσεις του MIPS. Είναι χαρακτηριστικό ότι μέχρι τα τέλη της δεκαετίας του 1990 ένας στους τρείς επεξεργαστές RISC χρησιμοποιούσε πυρήνα MIPS. Η χαμηλή κατανάλωση ισχύος, τα θερμικά χαρακτηριστικά λειτουργίας και η πληθώρα εργαλείων ανάπτυξης για πυρήνες MIPS βοήθησαν στο να κυριαρχήσει σταδιακά στην αγορά ενσωματωμένων συστημάτων και

20 18 Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών παρότι τα τελευταία χρόνια έχει παραμεριστεί λόγο των πυρήνων ARM, συνεχίζει να αποτελεί βασικό ανταγωνιστή υλοποιώντας απλές αρχιτεκτονικές. Είναι λοιπόν αναγκαίο να αναλύσουμε σε βάθος την αρχιτεκτονική MIPS, παρουσιάζοντας την βασική διαδρομή δεδομένων μέσα στον πυρήνα, την διαδρομή δεδομένων με διοχέτευση και τα διαφορετικά format των εντολών. Στο παράρτημα ΙΙ καταγράφεται το σύνολο των εντολών αρχιτεκτονικής (ISA) για τον MIPS32, που υλοποιήθηκαν στα πλαίσια της εργασίας. 3.2 Ιστορικά στοιχεία Μέχρι και τη δεκαετία του 70, οι αρχιτεκτονικές με σύνθετες και πολύπλοκες εντολές κυριαρχούσαν στο χώρο των επεξεργαστών. Οι μνήμες ήταν τόσο ακριβές που έπρεπε να βρεθεί ένας τρόπος να ελαχιστοποιείται ο αριθμός των εντολών που περιέχει ένα πρόγραμμα, με αποτέλεσμα να σχεδιάζονται σύνολα εντολών με πολύπλοκες και σύνθετες εντολές οι οποίες εκτελούσαν πολλές ενέργειες ταυτόχρονα. Ακόμα και οι απλοί πυρήνες χρησιμοποιούσαν τεχνικές ερμηνείας (interpretation), ώστε να εκτελούν προγράμματα με πολύπλοκες εντολές. Ο ερμηνευτής πρακτικά υποδιαιρούσε τις εντολές της μηχανής προορισμού σε μικρά βήματα. Αυτό σημαίνει ότι μια εντολή που προέρχεται από ένα σύνθετο σετ εντολών μπορεί να ερμηνευτεί και να εκτελεστεί από μια πιο απλή μηχανή, με δεδομένο ωστόσο το κόστος απόδοσης. Παρόλα αυτά, επικρατούσε η άποψη ότι όσο πιο σύνθετο ήταν το σύνολο των εντολών, τόσο αυξημένη θα ήταν η απόδοση του επεξεργαστή, με αποτέλεσμα η έρευνα να στρέφεται προς ολοένα και πιο σύνθετες αρχιτεκτονικές. Η ονομασία CISC δόθηκε αργότερα για να διαχωρίσει τις υπάρχουσες σύνθετες σχεδιάσεις από τις πρώτες αρχιτεκτονικές RISC, που εμφανίστηκαν στις αρχές της δεκαετίας του 80. Οι περισσότερες αρχιτεκτονικές RISC εκείνης της περιόδου ήταν αποτέλεσμα πανεπιστημιακών ερευνητικών προγραμμάτων, χρηματοδοτούμενων από το πρόγραμμα DARPA VLSI του αμερικάνικου στρατού, το οποίο στόχευε στην ανάπτυξη νέων τεχνολογιών πάνω σε ολοκληρωμένα κυκλώματα VLSI. Δύο από τα σημαντικότερα αυτά προγράμματα αναπτύχθηκαν στα πανεπιστήμια Berkeley και Stanford, από όπου προέκυψαν δύο από τους σημαντικότερους επεξεργαστές στην ιστορία των ολοκληρωμένων κυκλωμάτων, οι πυρήνες SPARC και MIPS αντίστοιχα.

21 3.2 Ιστορικά στοιχεία 19 Εικόνα 3.1 Το επίπεδο ISA μπορεί να υλοποιηθεί απευθείας πάνω στο hardware, είτε μέσω μικροπρογράμματος. [2] Sivarama P. Dandamudi, Guide to RISC Processors for Programmers and Engineers, p.6 Το 1980 στο Berkeley η ερευνητική ομάδα με επικεφαλείς τους David Patterson και Carlo Sequin σχεδίασε έναν επεξεργαστικό πυρήνα με πολύ απλό σύνολο εντολών βασισμένο σε τεχνολογία VLSI. Επινόησαν τον όρο RISC και ονόμασαν τον νέο επεξεργαστή RISC I. Σύντομα ακολούθησε η αναβαθμισμένη έκδοση RISC II. Λίγο αργότερα, το 1981 στο Stanford, ο John Hennessy ξεκίνησε τη σχεδίαση του MIPS. Βασικός στόχος ήταν η υλοποίηση ενός επεξεργαστή με πολύ καλή απόδοση και αυξημένη διεκπαιρεωτική ικανότητα σε εντολές, χρησιμοποιώντας πιο αποτελεσματικό μηχανισμό διοχέτευσης. Και οι δύο σχεδιάσεις αποτελούσαν προϊόντα νέας έρευνας, οπότε δεν υπήρχε κάποιος περιορισμός στο να είναι συμβατές προς τα πίσω με υπάρχουσες τεχνολογίες. Έτσι, οι σχεδιαστές τους ήταν ελεύθεροι να επιλέξουν νέα σύνολα εντολών που θα μεγιστοποιούσαν την απόδοση των συστημάτων. Σύντομα διαπιστώθηκε, ότι από άποψη απόδοσης ήταν πιο σημαντικό οι εντολές να ξεκινούν γρήγορα την εκτέλεσή τους, παρά ο χρόνος που χρειαζόταν για την ολοκλήρωση μια εντολής. Άμεσο επακόλουθο της επιλογής για νέες αποδοτικές σχεδιάσεις ήταν ο μικρός αριθμός εντολών που διέθεταν (περίπου 50) σε αντίθεση με τα σύνθετα συστήματα της εποχής με 200 ή 300 εντολές, αλλά και οι ελάχιστες διαφορετικές μορφές εντολών που υλοποιούσε κάθε αρχιτεκτονική. Τη σχεδίαση του MIPS ακολούθησε ο MIPS-X και το 1984 o Hennessy και οι συνεργάτες του ίδρυσαν την εταιρεία MIPS Computer Systems. Από αυτήν προέκυψαν οι πρώτοι εμπορικοί επεξεργαστές MIPS, ο R2000 το 1985 και ο R3000 το Στις αρχές της δεκαετίας του 90 υλοποιήθηκε η πρώτη 64 bit αρχιτεκτονική για MIPS με τον επεξεργαστή R4000 και από εκείνο το σημείο η ανάπτυξη συστημάτων MIPS 32 bit και 64 bit

22 20 Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών εξελίχθηκαν παράλληλα. Την ίδια περίοδο, μέχρι και τα μέσα της δεκαετίας του 80 η αρχιτεκτονική RISC του Berkeley είχε γίνει αρκετά γνωστή, με αποτέλεσμα το 1987 η Sun Microsystems να παράγει τα πρώτα εμπορικά συστήματα που χρησιμοποιούσαν επεξεργαστές SPARC, βασισμένους στην αρχιτεκτονική RISC II. Οι δύο αρχιτεκτονικές είχαν πολύ λίγες διαφορές μεταξύ τους, με σημαντικότερες το αποδοτικότερο σύστημα διοχέτευσης του MIPS και τον διαφορετικό τρόπο χειρισμού των υπορουτίνων στον πυρήνα. Με εξαίρεση αυτές τις διαφορές, η σχεδίαση του MIPS ήταν κατά βάση μια τυπική σχεδίαση RISC και παρότι εξελίχθηκαν σχεδόν ταυτόχρονα, η ονομασία RISC δεν χρησιμοποιήθηκε ως εμπορική ονομασία όπως η ονομασία MIPS. Αντίθετα, χρησιμοποιήθηκε για να ορίσει την μεγάλη κατηγορία επεξεργαστών απλού συνόλου εντολών. Στην παρούσα εργασία, με εξαίρεση τη συγκεκριμένη παράγραφο, η χρησιμοποίηση της ονομασίας RISC θα δηλώνει την οικογένεια αρχιτεκτονικών απλών εντολών και όχι τον επεξεργαστή RISC του Berkeley. 3.3 Αρχές σχεδιασμού RISC Η ονομασία RISC (reduced instruction set computer) δεν αναφέρεται στο περιορισμένο ή μικρό σύνολο εντολών, αλλά στον απλό τύπο εντολών και στις περιορισμένες ενέργειες που εκτελεί κάθε εντολή. Ακόμα και αν μια μηχανή RISC χρειάζεται 4 ή 5 εντολές για να κάνει κάτι που μια μηχανή CISC χρειάζεται μόνο μία εντολή, οι μηχανές RISC εκτελούν ίσως και 10 φορές πιο γρήγορα τις εντολές τους, με αποτέλεσμα σε συνολική εικόνα να είναι ταχύτερες. Παρόλα αυτά οι μηχανές CISC παρέμειναν δυναμικά στην αγορά λόγω των εκατομμυρίων δολαρίων που είχαν ήδη επενδυθεί από εταιρείες σε λογισμικό, κυρίως για τους επεξεργαστές της Intel. Όλες οι αρχιτεκτονικές RISC βασίζονται σε κοινές σχεδιαστικές αρχές και σε συγκεκριμένους κανόνες οι οποίοι χαρακτηρίζουν την οικογένεια επεξεργαστών RISC. Στο παράδειγμα της επόμενης εικόνας φαίνεται χαρακτηριστικά η διαφορά ανάμεσα στις αρχιτεκτονικές RISC και CISC.

23 3.3 Αρχές σχεδιασμού RISC 21 Εικόνα 3.2 Σύγκριση βασικών χαρακτηριστικών πυρήνων CISC και RISC. [2] Sivarama P. Dandamudi, Guide to RISC Processors for Programmers and Engineers, p.41 Απλές εντολές Ένα από τα σημαντικότερα χαρακτηριστικά της αρχιτεκτονικής είναι οι απλές και λίγες μορφές εντολών. Η σχεδίαση απλών εντολών βοηθάει σημαντικά στην απλούστευση της σχεδίασης του επεξεργαστή. Θυμίζουμε ότι οι εντολές εκτελούνται απευθείας από το υλικό και δεν ερμηνεύονται μέσω μικροεντολών, όπως στις αρχιτεκτονικές CISC. Παράλληλα, γίνεται πιο εύκολη η αποκωδικοποίηση λόγω του σταθερού μήκος των εντολών, του μικρού αριθμού των πεδίων κάθε εντολής και των λίγων διαφορετικών τύπων εντολών. Εντολές Register-to-Register Είναι σημαντικό η προσπέλαση της μνήμης να γίνεται μόνο από τις εντολές load/store. Όλες οι υπόλοιπες εντολές πρέπει να είναι τύπου Register-to-Register, που σημαίνει ότι όλες οι ενέργειες πραγματοποιούνται με τελεστές που βρίσκονται στο αρχείο καταχωρητών και τα αποτελέσματα επιστρέφουν σε αυτό. Απλοί τρόποι διευθυνσιοδότησης Η απλούστερη διευθυνσιοδότηση επιτρέπει τον πιο γρήγορο υπολογισμό των διευθύνσεων. Στις αρχιτεκτονικές RISC, συνήθως, υπάρχουν δύο διαφορετικοί τρόποι διευθυνσιοδότησης, μια λίγο πιο σύνθετη για τις εντολές προσπέλασης μνήμης και μια σχετικά απλούστερη για την προσπέλαση των καταχωρητών. Μεγάλος αριθμός καταχωρητών Αρκετοί καταχωρητές γενικής χρήσης, τουλάχιστον 32, που μπορούν να χρησιμοποιηθούν ελεύθερα από κάθε εντολή, βοηθάνε τόσο τις επιλογές του compiler όσο και την καλύτερη

24 22 Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών οργάνωση του κώδικα. Επίσης, σημαντικό πλεονέκτημα των πολλών καταχωρητών είναι η ελαχιστοποίηση της καθυστέρησης που προκύπτει λόγω των διαδικασιών και των υπορουτίνων. Έτσι, μπορούμε να αποθηκεύσουμε εύκολα τις τοπικές μεταβλητές και τα ορίσματα κάθε ρουτίνας. Αυξημένη διεκπαιρεωτική ικανότητα Ο κύκλος της διαδρομής δεδομένων καθορίζει σε σημαντικό βαθμό τι μπορεί να κάνει η μηχανή. Όσο πιο γρήγορος είναι ο κύκλος διαδρομής δεδομένων τόσο πιο γρήγορη είναι η μηχανή. Ωστόσο, είναι κρίσιμο να μεγιστοποιείται ο ρυθμός με τον οποίο υποβάλλονται οι εντολές στη διαδρομή δεδομένων. Γενικά είναι πιο σημαντικό να εκτελούνται ταυτόχρονα πολλές εντολές και λιγότερο σημαντικό ο συνολικός χρόνος που απαιτείται για την ολοκλήρωση κάθε εντολής. Έτσι, είναι σημαντικό να υλοποιηθεί ένας αποδοτικός μηχανισμός διοχέτευσης. 3.4 Αρχιτεκτονική του MIPS Ένα βασικό πρόβλημα που αντιμετώπιζαν οι αρχιτεκτονικές με διοχέτευση ήταν το γεγονός ότι ορισμένες εντολές (όπως ο πολλαπλασιασμός ή η διαίρεση) χρειαζόταν περισσότερο χρόνο από τις υπόλοιπες για να εκτελεστούν. Έτσι, το σύστημα έπρεπε να περιμένει την ολοκλήρωση τους πριν προχωρήσει την εκτέλεση άλλων εντολών. Μια λύση ήταν να χρησιμοποιηθούν interlocks. Αυτά επέτρεπαν στα στάδια διοχέτευσης να αναγνωρίσουν ότι υπήρχε πρόβλημα καθυστέρησης με κάποια εντολή και να κλειδώνουν τα υπόλοιπα στάδια διοχέτευσης, ωστόσο κάτι τέτοιο δημιουργούσε αρκετά προβλήματα καθυστέρησης. Το βασικό πλεονέκτημα του MIPS ήταν ότι δεν απαιτούσε interlocks, καθώς όλες οι εντολές ήταν σχεδιασμένες να απαιτούν τον ίδιο χρόνο εκτέλεσης για κάθε στάδιο. Από αυτό προέκυψε και η ονομασία MIPS Microprocessor without Interlocked Pipeline Stages αν και επιλέχθηκε και ως λογοπαίγνιο με τη μονάδα μέτρησης ταχύτητας επεξεργαστών (Million Instructions Per Second). Από την πρώτη σχεδίαση του MIPS-I μέχρι σήμερα έχουν υλοποιηθεί αρκετές διαφορετικές εκδόσεις του πυρήνα τόσο για 32 bit όσο και για 64 bit συστήματα. Καθώς η αρχιτεκτονική των εντολών εξελισσόταν, ήταν αναγκαίο να υπάρχει συμβατότητα προς τα πίσω με τις παλαιότερες εκδόσεις. Στη σχεδίαση του MIPS-III προστέθηκαν 64 bit διευθύνσεις και

25 3.4 Αρχιτεκτονική του MIPS 23 σύντομα ακολούθησαν οι MIPS-IV και MIPS-V με εξελιγμένα συστήματα διαχείρισης δεκαδικών και διοχέτευσης δεδομένων. Ωστόσο, τέτοιες βελτιώσεις δεν ήταν εύκολο να γίνουν για τις 32 bit εκδόσεις MIPS-I και MIPS-II λόγω της ανάγκης για συμβατότητα με αποτέλεσμα η εξέλιξη τους να είναι πιο αργή. Εικόνα 3.3 Εκδόσεις των αρχιτεκτονικών MIPS. [15] MIPS Architecture for Programmers Volume I-A: Introduction to the MIPS32 Architecture, MIPS Technologies, Inc., p.19 Το 1999 παρουσιάστηκε ο MIPS32, ο οποίος ήταν βασισμένος στον MIPS-II, αλλά ενσωμάτωνε πολλά χαρακτηριστικά από τις προηγούμενες εκδόσεις των 64-bit. Σχεδόν ταυτόχρονα εκδόθηκε και η νέα 64-bit έκδοση MIPS64 βασισμένη στον MIPS-V. Αυτές οι δύο εκδόσεις, μαζί με τις νεότερες εκδόσεις micromips, αποτελούν τις βασικές σχεδιάσεις αρχιτεκτονικής MIPS μέχρι και σήμερα. Στο διάγραμμα της εικόνας 3.3 φαίνεται παραστατικά η εξελικτική πορεία των εκδόσεων του MIPS.

26 24 Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών Περιγραφή της αρχιτεκτονικής Όπως κάθε επεξεργαστής RISC, έτσι και ο MIPS είναι βασισμένος σε αρχιτεκτονική τύπου load/store. Κατά αυτή την έννοια, οι εντολές χρησιμοποιούν ως τελεστές δεδομένα από το αρχείο καταχωρητών και αποθηκεύουν αποτελέσματα πίσω σε αυτό. Έτσι, είναι απαραίτητες εντολές μεταφοράς δεδομένων μεταξύ των καταχωρητών και της μνήμης. Ως επακόλουθο, για να αναλύσουμε εξ ολοκλήρου την αρχιτεκτονική του MIPS, πρέπει να περιγράψουμε το αρχείο καταχωρητών και τη μνήμη του πυρήνα, να δούμε τους τρόπους διευθυνσιοδότησης και να καταγράψουμε τους διαφορετικούς τύπους εντολών. Καταχωρητές Η αρχιτεκτονική MIPS32 χρησιμοποιεί 32 καταχωρητές γενικής χρήσης και τρείς καταχωρητές ειδικής χρήσης. Ο ένας είναι ο μετρητής προγράμματος (PC) και ουσιαστικά δείχνει τη διεύθυνση μνήμης που βρίσκεται η εκάστοτε εντολή προς εκτέλεση. Οι άλλοι δύο καταχωρητές ειδικής χρήσης ονομάζονται HI και LO και χρησιμοποιούνται για την αποθήκευση του αποτελέσματος του πολλαπλασιασμού και της διαίρεσης. Παρόλο που δεν υπάρχει κάποιος περιορισμός σχεδίασης ή υλικού (με εξαίρεση τον καταχωρητή $0), έχει επιβληθεί μια σύμβαση ειδικής χρήσης για κάθε καταχωρητή. Η σύμβαση αυτή χρησιμοποιείται κυρίως στην υλοποίηση του compiler, ώστε να αξιοποιείται κάθε φορά ο κατάλληλος καταχωρητής. Εικόνα 3.4 Τυπική χρήση κάθε καταχωρητή. [18] MIPS32 Instruction Set Quick Reference, MIPS Technologies, Inc., p.2

27 3.4 Αρχιτεκτονική του MIPS 25 Όλοι οι καταχωρητές είναι των 32 bit. Από τους καταχωρητές γενικής χρήσης, ο πρώτος ($0) είναι μόνιμα γειωμένος, ώστε να δίνει πάντα 0 και είναι μόνο για ανάγνωση. Ο τελευταίος ($31) χρησιμοποιείται και ως καταχωρητής φόρτωσης από την εντολή jump and link (jal), η οποία χρησιμοποιείται όταν υπάρχει κάποια διαδικασία (procedure) προς εκτέλεση, για να αποθηκεύει τη διεύθυνση επιστροφής από την υπορουτίνα. Εικόνα 3.5 Αρχείο καταχωρητών MIPS. [15] MIPS Architecture for Programmers Volume I-A: Introduction to the MIPS32 Architecture, MIPS Technologies, Inc., p.34

28 26 Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών Τρόποι διευθυνσιοδότησης μνήμης Από το σύνολο εντολών του MIPS, μόνο οι εντολές load/store έχουν δικαίωμα προσπέλασης της μνήμης. Οι εντολές αυτές είναι τύπου Ι και χρησιμοποιούν για τον υπολογισμό της διεύθυνσης μνήμης τον καταχωρητή Rs και τον 16-bit ακέραιο, που βρίσκεται στο πεδίο immediate. Έτσι, η διεύθυνση μνήμης θα είναι το περιεχόμενο του καταχωρητή Rs προσαυξημένο κατά τον 16-bit ακέραιο, ο οποίος έχει υποστεί πρώτα επέκταση προσήμου των 16 bit. Για παράδειγμα, μια εντολή lw ορίζεται ως εξής: LW rt, offset(rs). Η διεύθυνση μνήμης που θα γίνει αναφορά θα είναι: sign_ext16(offset) + rs. Χρήση της μνήμης Η μνήμη του πυρήνα MIPS αποτελείται από τρία βασικά κομμάτια, το τμήμα δεδομένων, το τμήμα προγράμματος όπου βρίσκονται οι εντολές και την στοίβα. Το τμήμα προγράμματος ξεκινάει από τη διεύθυνση 0x Το τμήμα δεδομένων ξεκινάει από τη διεύθυνση 0x και χωρίζεται σε στατική και δυναμική περιοχή, όπου η δυναμική περιοχή μπορεί να αυξηθεί λόγο δυναμικής δέσμευσης μνήμης. Η περιοχή στοίβας ξεκινάει από τη διεύθυνση 0x7FFF FFFF και αυξάνεται προς τα κάτω. Εικόνα 3.6 Χάρτης μνήμης του MIPS. [5] MIPS Assembly Language Programmer s Guide, Silicon Graphics, Inc., p.7-16

29 3.4 Αρχιτεκτονική του MIPS 27 Τύποι εντολών Όπως είδαμε, βασικό χαρακτηριστικό στη σχεδίαση του MIPS είναι οι απλές και λίγες μορφές εντολών. Το σύνολο των εντολών αποτελείται από τρείς διαφορετικούς τύπους, τις εντολές τύπου-r, τις εντολές τύπου-j και τις εντολές τύπου-i. Εντολές τύπου καταχωρητή (Register) R-type Αυτός ο τύπος εντολών χρησιμοποιείται από αριθμητικές και λογικές εντολές, οι οποίες έχουν και τους δύο τελεστές αποθηκευμένους σε καταχωρητές. Εντολές τύπου άμεσης σταθεράς (Immediate) I-type Χρησιμοποιούνται από εντολές load/store, από αριθμητικές και λογικές εντολές με άμεσο όρισμα και από εντολές διακλάδωσης. Εντολές τύπου άλματος (Jump) J-type Οι εντολές άλματος χρησιμοποιούν ένα 26-bit όρισμα για την διεύθυνση προορισμού του άλματος. Εικόνα 3.7 Format των εντολών I, J, R. [15] MIPS Architecture for Programmers Volume I-A: Introduction to the MIPS32 Architecture, MIPS Technologies, Inc., p.66 opcode: 6-bit κωδικός λειτουργίας κάθε εντολής. Rd: 5-bit διεύθυνση καταχωρητή προορισμού για εγγραφή (destination register). Rs: 5-bit διεύθυνση καταχωρητή προέλευση για ανάγνωση (source register). Rt: 5-bit διεύθυνση καταχωρητή προορισμού/προέλευσης για διαφόρους τύπους εντολών (target register).

30 28 Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών immediate: 16-bit άμεσο όρισμα για λογικές και αριθμητικές εντολές (τελεστής), για εντολές load/store (διεύθυνση μνήμης), ή για εντολές διακλάδωσης (offset). instr_index: 26-bit διεύθυνση άλματος. sa: 5-bit shift amount. function: 6-bit κωδικός λειτουργίας για εντολές με ειδικό opcode Βασική διαδρομή δεδομένων και διοχέτευση Είναι σημαντικό, να διαχωρίσουμε ως έννοιες την αρχιτεκτονική του συνόλου εντολών με την υλοποίηση της διαδρομής δεδομένων του πυρήνα. Παρότι βασίζονται άμεσα η μία στην άλλη, η αρχιτεκτονική του σετ εντολών αναφέρεται στη σχεδίαση των εντολών και των διαφόρων τύπων εντολών και στην οργάνωση των πεδίων κάθε εντολής. Η διαδρομή δεδομένων αναφέρεται στη λογική σύνδεση των λειτουργικών στοιχείων του πυρήνα όπως οι καταχωρητές, η μνήμη και η αριθμητική και λογική μονάδα. Στην εικόνα 3.8 φαίνεται η βασική διαδρομή δεδομένων του MIPS. Όπως θα παρουσιαστεί αρκετά αναλυτικά στο κεφάλαιο 5, η διαδρομή δεδομένων χωρίζεται σε πέντε βασικά στάδια, την προσκόμιση εντολής, την αποκωδικοποίηση, την εκτέλεση, την προσπέλαση μνήμης και την εγγραφή στους καταχωρητές. Παρόλο που κάθε εντολή απαιτεί πέντε κύκλους μηχανής για την ολοκλήρωσή της, η απλή μορφή του σετ εντολών επιτρέπει την πολύ γρήγορη ολοκλήρωση κάθε σταδίου. Παράλληλα, ο μηχανισμός διοχέτευσης του MIPS αυξάνει ραγδαία την διεκπαιρεωτική ικανότητα του πυρήνα και αποτελεί ένα από τα βασικότερα στοιχεία της υλοποίησης. Έχουν αναπτυχθεί διάφορες τεχνικές για αποδοτικότερη διοχέτευση και κάθε επεξεργαστής MIPS χρησιμοποιεί κάποια μορφή αυτών των τεχνικών. Στη συνέχεια περιγράφουμε τις βασικότερες μορφές διοχέτευσης και τις συγκρίνουμε με την απλή εκτέλεση χωρίς διοχέτευση.

31 3.4 Αρχιτεκτονική του MIPS 29 Εικόνα 3.8 Βασική διαδρομή δεδομένων του MIPS. [1] David A. Patterson, John L. Hennessy, Οργάνωση και σχεδίαση υπολογιστών. Η διασύνδεση υλικού και λογισμικού, σελ. 325 Απλή εκτέλεση Εικόνα 3.9 Απλή εκτέλεση εντολών χωρίς διοχέτευση. MIPS Architecture for Programmers Volume I-A: Introduction to the MIPS32 Architecture, MIPS Technologies, Inc., p.29

32 30 Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών Parallel pipeline Αντί κάθε εντολή να περιμένει την ολοκλήρωση της προηγούμενης, προσκομίζεται κατευθείαν προς εκτέλεση στον επόμενο κύκλο. Έτσι, σε κάθε κύκλο ρολογιού μπορούν να εκτελούνται έως και τέσσερις εντολές ψευδοπαράλληλα, μια σε κάθε στάδιο επεξεργασίας. Εικόνα 3.10 Parallel pipeline. MIPS Architecture for Programmers Volume I-A: Introduction to the MIPS32 Architecture, MIPS Technologies, Inc., p.30 Superpipeline Κάθε στάδιο μιας εντολής σχεδιάζεται, ώστε να διαρκεί για ένα τμήμα του κύκλου. Έτσι, σε κάθε κύκλο ρολογιού μπορούν να εκτελεστούν ταυτόχρονα περισσότερα στάδια μια εντολής. Εικόνα 3.11 Superpipeline. MIPS Architecture for Programmers Volume I-A: Introduction to the MIPS32 Architecture, MIPS Technologies, Inc., p.30

33 3.4 Αρχιτεκτονική του MIPS 31 Superscalar pipeline Οι υπερβαθμωτές αρχιτεκτονικές επιτρέπουν σε κάθε κύκλο περισσότερες εντολές να ξεκινήσουν ταυτόχρονα την εκτέλεσή τους και να ολοκληρωθούν επίσης ταυτόχρονα. Εικόνα 3.12 Superscalar pipeline. MIPS Architecture for Programmers Volume I-A: Introduction to the MIPS32 Architecture, MIPS Technologies, Inc., p.31

34 32 Κεφάλαιο 3: Αρχιτεκτονική Συνόλου Εντολών Στην επόμενη εικόνα φαίνεται η διαδρομή δεδομένων του MIPS με απλή παράλληλη διοχέτευση. Εικόνα 3.13 Διαδρομή δεδομένων με απλή διοχέτευση. [1] David A. Patterson, John L. Hennessy, Οργάνωση και σχεδίαση υπολογιστών. Η διασύνδεση υλικού και λογισμικού, σελ. 445

35 Κεφάλαιο 4: Simulink και Soft Processors 4.1 Εισαγωγή Ο προσομοιωτής επεξεργαστή που σχεδιάστηκε, υλοποιήθηκε εξολοκλήρου στο Simulink, ένα από τα πιο δημοφιλή προγράμματα προσομοίωσης παγκοσμίως. Είναι λοιπόν σημαντικό να παρουσιαστούν τα βασικά χαρακτηριστικά του Simulink και οι δυνατότητες που προσφέρει για αξιόπιστες προσομοιώσεις με τη χρήση μοντέλων. Το λογισμικό Simulink αναπτύχθηκε από την εταιρεία Mathworks και είναι ένα γραφικό προγραμματιστικό περιβάλλον για υλοποίηση μοντέλων, προσομοιώσεων και ανάλυση πολυδιάστατων δυναμικών συστημάτων. Ανήκει στο πακέτο λογισμικού MATLAB με το οποίο συνεργάζεται στενά και αξιοποιεί την πληθώρα βιβλιοθηκών που προσφέρονται. Το λογισμικό περιλαμβάνει επίσης πολλά βοηθητικά πακέτα (add-on products) για επικοινωνία και σύνδεση με hardware και software τρίτων εταιρειών, με πιο σημαντικά τα xpc Target, Embedded Coder, HDL Coder και Simulink Coder, τα οποία και θα παρουσιαστούν συνοπτικά στη συνέχεια. Η δυνατότητα που έχει το Simulink, μέσω των add-on πακέτων, να παράγει κώδικα Verilog ή VHDL, δίνει την αφορμή για την παρουσίαση της έννοια του Soft Processor. Η ανάπτυξη των ενσωματωμένων συστημάτων έδωσε τη δυνατότητα στους σχεδιαστές επεξεργαστών να εφαρμόσουν λογική σύνθεση για την ανάπτυξη του πυρήνα. Έτσι, ένας Soft Processor ή αλλιώς Soft-Core Microprocessor είναι ένας επεξεργαστικός πυρήνας που έχει υλοποιηθεί εξολοκλήρου χρησιμοποιώντας λογική σύνθεση, δηλαδή υλοποίηση με λογικές πύλες, πάνω σε FPGA ή προγραμματιζόμενα κυκλώματα ASIC. Είναι λοιπόν εφικτό, ο πυρήνας που σχεδιάστηκε στο Simulink στα πλαίσια αυτής της εργασίας, να μεταγλωττιστεί σε VHDL, να υλοποιηθεί σε κύκλωμα FPGA και να δοκιμαστεί πλέον ως hardware. Είναι σημαντικό να τονίσουμε ξανά το καινοτόμο στοιχείο αυτής της εργασίας, που είναι η υλοποίηση ενός προσομοιωτή επεξεργαστή επιπέδου ISA σε Simulink. Οι περισσότεροι προσομοιωτές έχουν υλοποιηθεί σε γλώσσες C ή Java, ενώ δεν υπάρχει παρόμοια σχεδίαση σε Simulink. Τα κυριότερα πλεονεκτήματα της συγκεκριμένης επιλογής είναι: 33 Η ευελιξία που προσφέρει το Simulink για άμεση τροποποίηση της αρχιτεκτονικής ή του κυκλώματος σε οποιοδήποτε σημείο.

36 34 Κεφάλαιο 4: Simulink και Soft Processors Η εύκολη σχεδίαση του πυρήνα με χρήση MATLAB function blocks. Η δημιουργία βιβλιοθήκης με τα βασικά λειτουργικά στοιχεία του πυρήνα είναι εξαιρετικά χρήσιμη για την εύκολη σχεδίαση οποιασδήποτε αρχιτεκτονικής. Εύκολη εξαγωγή αποτελεσμάτων και δεδομένων από οποιοδήποτε σημείο του κυκλώματος, σε κάθε κύκλο ή στο τέλος της προσομοίωσης. Το εύχρηστο user interface που προσφέρει το MATLAB και το Simulink. Γρήγορο και εύκολο debug του κώδικα προς εκτέλεση αλλά και του μοντέλου κατά τη διάρκεια της σχεδίασης. Ο πυρήνας μπορεί να θεωρηθεί ως ένα subsystem με είσοδο τις εντολές προς εκτέλεση και έξοδο το αρχείο καταχωρητών ή τη μνήμη και να χρησιμοποιηθεί στη σχεδίαση μικροελεγκτών ή πολυπύρηνων συστημάτων. Με χρήση των βοηθητικών πακέτων του Simulink, ο πυρήνας μπορεί να ενσωματωθεί σε FPGA για την δημιουργία ενός soft processor. Σε γενικές γραμμές, η ευελιξία που προσφέρει το Simulink και το MATLAB στον χειρισμό του μοντέλου αλλά και η απουσία παρόμοιας υλοποίησης στο χώρο των επεξεργαστών ήταν οι βασικοί λόγοι που έγινε η συγκεκριμένη επιλογή. 4.2 Simulink Το Simulink είναι ένα γραφικό περιβάλλον ανάπτυξης, για σχεδίαση μοντέλων υπό μορφή μπλοκ διαγραμμάτων και για εκτέλεση προσομοιώσεων. Συνοδεύεται από βιβλιοθήκες διαφόρων μοντέλων και συστημάτων, ενώ παράλληλα, συνεργάζεται με το MATLAB για χρησιμοποίηση αλγορίθμων και συναρτήσεων αλλά και για εξαγωγή αποτελεσμάτων και δεδομένων για μετεπεξεργασία στο MATLAB. Κυριότερα στοιχεία του Simulink είναι: Πληθώρα βιβλιοθηκών με έτοιμα block για μοντελοποίηση συστημάτων συνεχούς και διακριτού χρόνου. Προσομοιώσεις με αρκετούς και διαφορετικούς solvers. Χρησιμοποίηση scopes και displays για την άμεση οπτικοποίηση των αποτελεσμάτων. Δυνατότητα εξαγωγής των δεδομένων και των αποτελεσμάτων της προσομοίωσης στο workspace του MATLAB.

37 4.2 Simulink 35 Δυνατότητα εισαγωγής κώδικα C και C++ στα μοντέλα. Δυνατότητα σύνδεσης με hardware για εφαρμογή των μοντέλων απευθείας στο υλικό. Στη συνέχεια, βλέπουμε πιο αναλυτικά τις βασικές λειτουργίες του Simulink. Σχεδίαση του μοντέλου Όπως είδαμε το Simulink περιλαμβάνει αρκετές βιβλιοθήκες με έτοιμα Block. Αυτά περιλαμβάνουν στοιχεία συνεχούς ή διακριτού χρόνου, όπως ολοκληρωτές ή μονάδες καθυστέρησης, αριθμητικά block, look-up tables, πολυπλέκτες, διαύλους επικοινωνίας και αρκετά άλλα. Παράλληλα, κάθε χρήστης μπορεί να ορίσει δικά του block χρησιμοποιώντας συναρτήσεις, όπου μπορεί να ενσωματώσει κώδικα MATLAB, C, Fortran ή άλλο. Επιπρόσθετα, το Simulink χρησιμοποιεί συγκεκριμένα add-on products, τα οποία περιλαμβάνουν βιβλιοθήκες με εξειδικευμένα block για τομείς όπως aerospace, communications, PID control, control logic, video/image processing, power systems και άλλα. Επίσης, υπάρχουν διαθέσιμα πακέτα για φυσικά συστήματα όπως μηχανικά, υδραυλικά ή ηλεκτρικά μοντέλα. Η σχεδίαση ενός μοντέλου μπορεί να γίνει απλά κάνοντας drag and drop τα block που επιθυμούμε να χρησιμοποιήσουμε από τον library browser στον Simulink editor. Στη συνέχεια συνδέουμε τα μοντέλα με γραμμές επικοινωνίας. Έτσι, δημιουργούνται μαθηματικές σχέσεις μεταξύ των στοιχείων του μοντέλου που χρησιμοποιούνται κατά τη διάρκεια της προσομοίωσης. Χρησιμοποιώντας υποσυστήματα για να ομαδοποιήσουμε block που έχουν φυσική ή λογική σχέση μεταξύ τους, μπορούμε να εισάγουμε μια μορφή ιεραρχίας στο μοντέλο. Εικόνα 4.1 Simulink Library Browser

38 36 Κεφάλαιο 4: Simulink και Soft Processors Τα μοντέλα του Simulink περιλαμβάνουν αρκετά σήματα και παραμέτρους με τα εξής χαρακτηριστικά: Data type: single, double, signed, unsigned, 8, 16, 32 bit, boolean, fixed-point. Dimensions: scalar, vector, matrix, N-D και άλλα. Complexity: real, complex values. Ελάχιστη, μέγιστη, αρχική και τελική τιμή. Αν κάποιο από τα παραπάνω χαρακτηριστικά δεν προσδιοριστεί, το Simulink αποφασίζει αυτόματα με χρήση αναδρομικών αλγορίθμων και εξετάζει τη συμβατότητα, εξασφαλίζοντας την ακεραιότητα των δεδομένων. Εικόνα 4.2 Function Block Parameters Προσομοίωση του μοντέλου και ανάλυση των αποτελεσμάτων Η προσομοίωση μπορεί να γίνει με χρήση fixed-step ή variable-step solver. Πρακτικά, ένας solver είναι ένας μαθηματικός αλγόριθμος ολοκλήρωσης, που υπολογίζει τα δυναμικά χαρακτηριστικά του συστήματος, χρησιμοποιώντας τις πληροφορίες και τις μαθηματικές εκφράσεις που περιέχονται στο μοντέλο.

39 4.2 Simulink 37 Εικόνα 4.3 Configuration Parameters Το Simulink ενσωματώνει διάφορους solvers για συστήματα συνεχούς ή διακριτού χρόνου, ή υβριδικά συστήματα και δίνονται αρκετές επιλογές για να εξακριβωθούν οι λεπτομέρειες της προσομοίωσης. Η προσομοίωση μπορεί να εκτελεστεί απευθείας από το Simulink, είτε από το command line του MATLAB. Πολύ χρήσιμη είναι η εισαγωγή εντολών για διάφορες προσομοιώσεις σε script MATLAB, για την αυτοματοποίηση της διαδικασίας αλλά και η επιλογή που δίνεται για τη μείωση του χρόνου των προσομοιώσεων με χρήση πολυπύρηνων υπολογιστών ή πολυεπίπεδων cluster. Τα αποτελέσματα της προσομοίωσης μπορούν να οπτικοποιηθούν με χρήση των scopes και των displays που προσφέρει το Simulink. Παράλληλα, μπορούν να εξαχθούν στο workspace του MATLAB για περαιτέρω ανάλυση με χρήση των αλγορίθμων του MATLAB. Το Simulink συνοδεύεται και από πολύ εύχρηστους debugger που επιτρέπουν την βηματική αναπαράσταση της προσομοίωσης και εξαγωγή επιμέρους αποτελεσμάτων. Έτσι, μπορεί κανείς να κατανοήσει τη συμπεριφορά του μοντέλου που σχεδίασε σε κάθε βήμα και να διορθώσει τυχόν σφάλματα. Σύνδεση με hardware Το μοντέλο που σχεδιάστηκε στο Simulink, αφού αποσφαλματωθεί και προσομοιωθεί επιτυχώς, μπορεί να ενσωματωθεί σε hardware για περεταίρω προσομοίωση απευθείας στο υλικό και δημιουργία ενσωματωμένου συστήματος. Το Simulink προσφέρει built-in support για δοκιμές μοντέλων σε target-hardware και είναι εφικτό να γίνει σύνδεση του μοντέλου με το hardware για real-time testing με χρήση του εργαλείου xpc Target. Επιπρόσθετα, το Simulink μπορεί να παράγει κώδικα C, HDL ή PLC απευθείας από το μοντέλο και να ενσωματωθεί το σύστημα σε FPGA ή μικροελεγκτή. Στη συνέχεια, παρουσιάζουμε τα

40 38 Κεφάλαιο 4: Simulink και Soft Processors σημαντικότερα add-on πακέτα που αξιοποιούνται μεταξύ άλλων και για την σύνδεση Simulink και hardware. Simulink Coder Είναι ένα εργαλείο για παραγωγή κώδικα C και C++ από μοντέλα του Simulink, διαγράμματα Stateflow και συναρτήσεις του MATLAB. Ο παραγόμενος κώδικας χρησιμοποιείται από real-time και nonreal-time συστήματα, δοκιμές hardware και επιτάχυνση προσομοιώσεων. Μπορεί εύκολα να εκτελεστεί από το Simulink ή από εξωτερικό compiler και να συνενωθεί με άλλο κώδικα C ή C++. Ο Simulink coder προσφέρει αρκετές επιλογές για την εκτέλεση του κώδικα από ολοκληρωμένα πακέτα ανάπτυξης λογισμικού όπως Eclipse IDE, Visual Studio και από λειτουργικά συστήματα Linux και Windows. Embedded Coder Ο Embedded Coder παράγει κώδικα C και C++ για χρήση σε ενσωματωμένα συστήματα, μικροελεγκτές και πλακέτες ανάπτυξης (on-target prototyping boards), αξιοποιώντας αρκετές επιλογές που προσφέρουν τα εργαλεία MATLAB coder και Simulink coder. Ο μικροεπεξεργαστής, όπου θα εκτελεστεί ο παραγόμενος κώδικας, επιλέγεται από μια λίστα καθώς ο Embedded coder έχει τη δυνατότητα να παράγει κώδικα για αρκετούς τύπους επεξεργαστών, συμπεριλαμβάνοντας συστήματα 8, 16 και 32 bit. Εικόνα 4.4 Model Explorer

41 4.2 Simulink 39 xpc Target Επιτρέπει την εκτέλεση μοντέλων Simulink και διαγραμμάτων Stateflow σε άλλα (target) συστήματα για προσομοιώσεις απευθείας σε hardware και δοκιμές πραγματικού χρόνου. Συνοδεύεται από βιβλιοθήκη με αρκετούς drivers, έναν real-time kernel και διεπαφή για άμεση εξαγωγή δεδομένων και παρατήρηση διαφόρων μετρήσεων. Το συγκεκριμένο εργαλείο επιτρέπει την δημιουργία περιβάλλοντος για δοκιμές πραγματικού χρόνου, συνδέοντας τον host computer, τον target computer και το hardware υπό εξέταση. Η σύνδεση μπορεί να γίνει μέσω TCP/IP ή RS232. Εικόνα 4.5 Components of an xpc Target real-time testing environment. [23] xpc Target Data Sheet, The MathWorks, Inc., p.2 Παράλληλα, χρησιμοποιώντας και το εργαλείο HDL Coder είναι δυνατό να προγραμματιστούν πλακέτες FPGA απευθείας από ένα μοντέλο Simulink. Εικόνα 4.6 Programming FPGA boards for xpc Target Turnkey real-time target machines. [23] xpc Target Data Sheet, The MathWorks, Inc., p.5

42 40 Κεφάλαιο 4: Simulink και Soft Processors HDL Coder Ο HDL Coder χρησιμοποιείται για την παραγωγή κώδικα Verilog και VHDL από συναρτήσεις MATLAB, μοντέλα Simulink και διαγράμματα Stateflow. Ο παραγόμενος κώδικας μπορεί να ενσωματωθεί σε FPGA ή να χρησιμοποιηθεί για τη σχεδίαση κυκλωμάτων ASIC, αυτοματοποιώντας κυρίως τη διαδικασία προγραμματισμού συστημάτων Xilinx και Altera. Εικόνα 4.7 HDL Workflow Advisor. [22] HDL Coder Data Sheet, The MathWorks, Inc., p.3

43 4.3 Soft Processor 41 Εικόνα 4.8 Generating HDL code from MATLAB or Simulink with HDL Coder. [22] HDL Coder Data Sheet, The MathWorks, Inc., p Soft Processor Όπως είδαμε, ένας soft processor είναι ένας επεξεργαστικός πυρήνας, που υλοποιείται εξολοκλήρου χρησιμοποιώντας λογική σύνθεση, σε προγραμματιζόμενα κυκλώματα FPGA ή ASIC. Κατά αυτή την έννοια, ο επεξεργαστής υλοποιείται εξ ολοκλήρου με λογικές πύλες, αξιοποιώντας τα logic-cells γενικής χρήσης ενός FPGA. Αντίθετα, ένας κλασικός hard CPU core υλοποιείται ως ολοκληρωμένο κύκλωμα VLSI αποτελούμενο από συγκεκριμένα λειτουργικά στοιχεία. Στον επόμενο πίνακα φαίνονται ορισμένοι από τους πιο δημοφιλείς soft processor για FPGA.

44 42 Κεφάλαιο 4: Simulink και Soft Processors CPU core Architectur e Bit s License Pipelin e depth Cycles per instructio n S1 Core SPARC-v9 64 Open-source (GPL) LEON3 SPARC-v8 32 Open-source (GPL) LEON2 SPARC-v8 32 OpenRISC 1200 OpenRISC Open-source (LGPL) Open-source (LGPL) MM U MU L FP U ext MicroBlaze MicroBlaze 32 Proprietary 3, 5 1 opt opt opt aemb MicroBlaze 32 Open-source (LGPL) opt - OpenFire MicroBlaze 32 Open-source (MIT) opt - Nios II/f Nios II 32 Proprietary opt Nios II/s Nios II 32 Proprietary opt Nios II/e Nios II 32 Proprietary no opt LatticeMico3 2 LatticeMico32 32 Open-source opt - Cortex-M1 ARMv6 32 Proprietary DSPuva16 DSPuva16 16 Open-source no PicoBlaze PicoBlaze 8 Proprietary, zerocost no PacoBlaze PicoBlaze 8 Open-source (BSD) no LatticeMico8 LatticeMico8 8 Open-source no Comments Single-core version of UltraSPARC T1 Unmaintained in favor of LEON3 Limited to Xilinx devices Open-source clones of MicroBlaze Limited to Altera devices Not limited to Lattice devices (can be used elsewhere) Limited to Xilinx devices An opensource clone of PicoBlaze Not limited to Lattice devices (can be used elsewhere) Εικόνα 4.9 Soft Processors για FPGA. [13] Soft CPU Cores for FPGA, CORE Technologies, p.2 Η χρήση soft processor σε FPGA έχει γίνει αρκετά δημοφιλής επιλογή σχεδίασης ενσωματωμένων συστημάτων. Το βασικό πλεονέκτημα αυτής της επιλογής είναι η ευελιξία που προσφέρουν καθώς μπορούν να τροποποιηθούν ανάλογα με την κάθε χρήση. Έτσι, είναι αρκετά εύκολο να γίνουν αλλαγές στο Instruction set, να χρησιμοποιηθούν διάφορες αρχιτεκτονικές και να προστεθούν περιφερειακά hardware απευθείας στο κεντρικό bus, ώστε να μεγιστοποιηθεί η απόδοση του ενσωματωμένου συστήματος. Έτσι, οι σχεδιαστές ενσωματωμένων συστημάτων έχουν τη δυνατότητα να σχεδιάσουν εύκολα μικροεπεξεργαστές με όποια και όσα περιφερειακά απαιτούνται και να μην στηρίζονται στις περιορισμένες επιλογές των μικροεπεξεργαστών του εμπορίου. Για

45 4.3 Soft Processor 43 παράδειγμα, ένας σχεδιαστής δεν θα μπορέσει να βρει εύκολα στο εμπόριο μικροελεγκτή με δέκα θύρες UART. Ωστόσο, με χρήση soft core FPGA κάτι τέτοιο είναι αρκετά εύκολο να υλοποιηθεί. Το Simulink, όπως είδαμε, δίνει τη δυνατότητα να παράγουμε κώδικα HDL από ένα μοντέλο για τον προγραμματισμό ενός FPGA. Έτσι, ο προσομοιωτής MIPS που υλοποιείται στα πλαίσια αυτής της εργασίας μπορεί να εξαχθεί σε FPGA, ώστε να υλοποιηθεί ένας soft processor για MIPS και να δοκιμαστεί ο επεξεργαστής στην πράξη ως φυσικό κύκλωμα hardware.

46 44 Κεφάλαιο 4: Simulink και Soft Processors

47 45 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή 5.1 Εισαγωγή Στο παρόν κεφάλαιο αναλύεται όλη η μεθοδολογία που ακολουθήθηκε κατά τη διάρκεια της σχεδίασης και καταγράφεται η ανάπτυξη του λογισμικού. Ξεκινώντας με απλά μοντέλα, σχεδιάστηκε η μνήμη δεδομένων και το αρχείο καταχωρητών. Σταδιακά, προστέθηκε η ALU, η control unit και η μνήμη προγράμματος, καταλήγοντας σε μια λειτουργική αρχιτεκτονική, με αρκετά περιορισμένο σετ εντολών και παρουσιάζονται οι βελτιώσεις και οι σχεδιαστικές επιλογές που έγιναν μέχρι την υλοποίηση ενός πυρήνα πολλών κύκλων. Στη συνέχεια, αναλύεται η μέθοδος προσομοίωσης που χρησιμοποιήθηκε. Πρακτικά, κάθε κύκλος ρολογιού αντιστοιχεί σε ένα βήμα προσομοίωσης και πάνω σε αυτό στηρίχτηκαν πολλές από τις επιλογές που έγιναν κατά τη διάρκεια της σχεδίασης. Με χρήση στοιχείων μνήμης, τα δεδομένα προωθούνται στο τέλος κάθε κύκλου στο επόμενο λειτουργικό block (προσκόμιση εντολής, αποκωδικοποίηση εντολής, εκτέλεση, προσπέλαση μνήμης, εγγραφή στους καταχωρητές). Με αυτό τον τρόπο, κάθε εντολή απαιτεί τέσσερις κύκλους μηχανής για να ολοκληρωθεί η εκτέλεση της και η μετάβαση από το ένα στάδιο στο επόμενο είναι ξεκάθαρη, χωρίς λογικά κενά. Παράλληλα, δεν απαιτείται εξωτερικό ρολόι, ώστε να συγχρονίζονται τα στοιχεία του κυκλώματος μεταξύ τους. Αυτή η επιλογή συμβαδίζει με την αρχική υπόθεση που είχαμε κάνει, ότι θα σχεδιάζαμε τον πυρήνα σε επίπεδο αρχιτεκτονικής και όχι σε επίπεδο πυλών ή μικροηλεκτρονικής, όπου η χρήση ρολογιού θα ήταν απαραίτητη. Σημαντικό στάδιο της σχεδίασης ήταν η ανάπτυξη του συστήματος διοχέτευσης (pipeline). Αναλύεται η σχεδίαση και η υλοποίηση των διαδρόμων διοχέτευσης, παρουσιάζονται οι τεχνικές που χρησιμοποιήθηκαν για την αντιμετώπιση των κινδύνων, που προκύπτουν κατά την προώθηση των δεδομένων και περιγράφονται οι μονάδες που προστέθηκαν για την αντιμετώπιση αυτών των κινδύνων. Τέλος, παρουσιάζονται οι παραδοχές και οι απλοποιήσεις που έγιναν κατά τη σχεδίαση του μοντέλου και οι δυνατότητες που υπάρχουν για περαιτέρω μελλοντική ανάπτυξη του συστήματος. Το σύνολο των εντολών που υλοποιήθηκαν και η τελική σχεδίαση του μοντέλου στο Simulink παρουσιάζονται στα παράρτημα Α και Β με όλα τα υποσυστήματα και τον τελικό κώδικα MATLAB.

48 46 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή 5.2 Διαδρομή δεδομένων ενός κύκλου Όπως είδαμε στο κεφάλαιο 2, μια πλήρης αρχιτεκτονική RISC με συστήματα διοχέτευσης μπορεί να γίνει αρκετά πολύπλοκη και σύνθετη. Είναι λογικό, η σχεδίασή μας να ξεκινήσει από μια απλή προσέγγιση, υλοποιώντας αρχικά, τα βασικά στοιχεία του πυρήνα και προσθέτοντας στη συνέχεια τις πιο σύνθετες λειτουργικές μονάδες. Η αρχική σχεδίαση περιλαμβάνει ένα υποσύνολο του πυρήνα του συνόλου εντολών MIPS. Πιο συγκεκριμένα υλοποιούνται: οι εντολές αναφοράς στη μνήμη δεδομένων load word (lw) και store word (sw), οι αριθμητικές λογικές εντολές τύπου R, η εντολή διακλάδωσης υπό συνθήκη ισότητας, branch if equal (beq). Η διαδρομή δεδομένων που σχεδιάζεται είναι ενός κύκλου, δηλαδή κάθε εντολή απαιτεί μόνο έναν μεγάλο κύκλο μηχανής για να ολοκληρωθεί. Αυτή η παραδοχή, αν και φαίνεται αυθαίρετη, γίνεται μόνο για την αρχική απλή σχεδίαση καθώς στη συνέχεια μετατρέπουμε τη διαδρομή δεδομένων σε διαδρομή πολλών κύκλων. Επίσης, παρότι είναι πιο κατανοητή σχεδίαση, δεν αποτελεί πρακτική υλοποίηση, καθώς, όπως θα δούμε στη συνέχεια, μια υλοποίηση πολλών μικρότερων κύκλων με μηχανισμό διοχέτευσης, μπορεί να εκτελεί πολύ πιο γρήγορα περισσότερες εντολές Βασικές λειτουργικές μονάδες Πριν ξεκινήσουμε τη σχεδίαση της διαδρομής δεδομένων, είναι σημαντικό να μελετήσουμε τις βασικές λειτουργικές μονάδες του πυρήνα. Στη συνέχεια παρουσιάζονται οι μονάδες αυτές, περιγράφεται η λειτουργία τους και παρατίθεται ο κώδικας MATLAB που τις υλοποιεί και η βασική σχεδίαση της κάθε μιας, με όλα τα σήματα δεδομένων και ελέγχου. Μνήμη Εντολών (Instruction Memory) Το πρώτο στοιχείο που χρειαζόμαστε είναι μια μονάδα μνήμης για την αποθήκευση των εντολών του προγράμματος. Η λειτουργία της μνήμης προγράμματος είναι πολύ απλή, καθώς δέχεται ως είσοδο τη διεύθυνση της εντολής προς εκτέλεση και δίνει στην έξοδο την 32 bit λέξη της εντολής. Στο μοντέλο του Simulink που σχεδιάσαμε υπάρχει και μια δεύτερη είσοδος από την οποία εισάγονται στη μνήμη, στον πρώτο κύκλο, όλες οι εντολές από το

49 5.2 Διαδρομή δεδομένων ενός κύκλου 47 workspace. Το πως γίνεται αυτή η εισαγωγή και πως χρησιμοποιούμε το workspace ως linker-loader παρουσιάζεται αναλυτικά στο κεφάλαιο 6, χρήση του προσομοιωτή. function instruct = instrmem(pc, hexfile) persistent instructions if (isempty(instructions)) instructions = hexfile; instruct = instructions(pc); Εικόνα 5.1 Instruction Memory model and source code. Μετρητής Προγράμματος (Program Counter PC) Βασικό στοιχείο σε οποιαδήποτε μικροαρχιτεκτονική σχεδίαση είναι ο μετρητής προγράμματος, που πρακτικά είναι ένας καταχωρητής 32 bit, στον οποίο είναι αποθηκευμένη η διεύθυνση της τρέχουσας εντολής. Ο PC συνεργάζεται στενά με την μνήμη εντολών και ουσιαστικά δείχνει τη διεύθυνση της εκάστοτε εντολής. Η χρησιμότητά του φαίνεται κυρίως με την εισαγωγή των εντολών διακλάδωσης, όπου δεν αρκεί μια απλή αύξηση του μετρητή κατά ένα, αλλά απαιτείται μετάβαση σε διαφορετική διεύθυνση. Είναι απαραίτητο, λοιπόν, να γνωρίζουμε σε κάθε κύκλο τη διεύθυνση της προηγούμενης εντολής, ώστε να μεταβούμε με βεβαιότητα στην επόμενη. Παρακάτω, φαίνεται η σχεδίαση του PC μαζί με τον αθροιστή που βοηθάει στην λειτουργία του. Αργότερα, καθώς αυξάνεται η πολυπλοκότητα της σχεδίασης προστίθενται πολυπλέκτες για τον έλεγχο των σημάτων, αλλά προς το παρόν αυτή η σχεδίαση είναι ικανοποιητική. function pcout = PC(pcin) persistent pc if (isempty(pc)) pc = 1; else pc = pcin; pcout = pc; Εικόνα 5.2 PC model and source code.

50 48 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή Αρχείο Καταχωρητών (Register File) Το αρχείο καταχωρητών περιλαμβάνει τους 32 καταχωρητές γενικής χρήσης του πυρήνα. Όπως είδαμε στο κεφάλαιο 3, όπου αναλύσαμε την αρχιτεκτονική του MIPS, κάθε καταχωρητής χρησιμοποιείται διαφορετικά ανάλογα με την εκάστοτε εντολή. Ωστόσο, το ποιος καταχωρητής θα χρησιμοποιηθεί σε κάθε εντολή προσδιορίζεται από τον compiler και δεν επηρεάζει τη δική μας σχεδίαση. Έτσι, αντιμετωπίζουμε με τον ίδιο τρόπο όλους τους καταχωρητές γενικής χρήσης, με εξαίρεση τον καταχωρητή $0, ο οποίος έχει μόνιμα τιμή 0 (επιλογή υλικού, με την έννοια ότι είναι μόνιμα γειωμένος) και τον οποίο μπορούμε μόνο να διαβάσουμε. Με τον παρακάτω πίνακα θυμίζουμε τις τυπικές χρήσεις κάθε καταχωρητή. Εικόνα 5.3 Τυπική χρήση κάθε καταχωρητή. [18] MIPS32 Instruction Set Quick Reference, MIPS Technologies, Inc., p.2 Παράλληλα, είναι σημαντικό να τονίσουμε ότι πρώτα γίνεται εγγραφή και μετά ανάγνωση από το αρχείο, καθώς στον ίδιο κύκλο μπορούν να γίνουν και οι δυο ενέργειες. Η επιλογή αυτή είναι απαραίτητη στη συνέχεια της σχεδίασης κατά την υλοποίηση του μηχανισμού διοχέτευσης.

51 5.2 Διαδρομή δεδομένων ενός κύκλου 49 function [readdata1, readdata2, dumpreg] = registers(regwrite, readaddr1, readaddr2, writeaddr, writedata) persistent regfile N=31; if (isempty(regfile)) regfile = zeros(n,1); %write if(regwrite==1) if(writeaddr~=0) regfile(writeaddr)=writedata; %read if(readaddr1~=0) readdata1=regfile(readaddr1); else readdata1=0; %R0 = 0 hardwired if(readaddr2~=0) readdata2=regfile(readaddr2); else readdata2=0; %R0 = 0 hardwired dumpreg = regfile; Εικόνα 5.4 Register File model and source code. Αριθμητική και Λογική Μονάδα (Arithmetic and Logic Unit ALU) Η αριθμητική και λογική μονάδα αποτελεί θεμελιώδες δομικό στοιχείο κάθε επεξεργαστή και είναι το σύστημα, όπου γίνονται όλες οι αριθμητικές και λογικές πράξεις που απαιτεί μια εντολή. Ως εισόδους δέχεται τις δυο λέξεις 32 bit που πρόκειται να υποστούν κάποια πράξη και ένα σήμα ελέγχου που προσδιορίζει τη λειτουργία της μονάδας. Το σήμα ελέγχου προκύπτει από την μονάδα ελέγχου της ALU, η οποία αποφασίζει κατάλληλα, ανάλογα με τον κωδικό λειτουργίας (operation code) και το πεδίο function της εκάστοτε εντολής. Η υλοποίηση μας δεν περιλαμβάνει σύνθετες σχεδιάσεις υλικού με πύλες, αλλά αποτελείται από απλές εντολές MATLAB. Παράλληλα, υπάρχει ένα σήμα εξόδου zero το οποίο ενεργοποιείται όταν το αποτέλεσμα της ALU γίνεται 0. Αυτό χρειάζεται στην σχεδίαση της εντολής διακλάδωσης, που θα δούμε στη συνέχεια.

52 50 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή function [zero, aluout_t] = ALU(in1t, in2t, alu_ctrl) in1=uint32(in1t); in2=uint32(in2t); zero = 0; switch alu_ctrl case 0 %and aluout = bitand(in1, in2); case 1 %or aluout = bitor(in1, in2); case 2 %add aluout = in1 + in2; case 6 %sub aluout = in1 - in2; otherwise aluout = uint32(1001); %debug if (aluout==0) zero = 1; aluout_t = double(aluout); function aluctrl = ALUCtrlUnit(aluOp, funct) switch aluop case 0 %load store aluctrl = 2; %add case 1 %branch aluctrl = 6; %sub case 2 %type R switch funct case 32 %add aluctrl = 2; case 34 %sub aluctrl = 6; case 36 %and aluctrl = 0; case 37 %or aluctrl = 1; otherwise aluctrl = -2; %debug otherwise aluctrl = -1; %debug Εικόνα 5.5 ALU and ALU Control Unit model and source code. Μνήμη Δεδομένων (Data Memory) Η δεύτερη αυτή μονάδα μνήμης είναι απαραίτητη για την αποθήκευση δεδομένων, καθώς οι 32 καταχωρητές γενικής χρήσης, σπάνια, επαρκούν για την εκτέλεση ενός λογικού όγκου εντολών. Πολλές υλοποιήσεις αρχιτεκτονικής, συχνά, χρησιμοποιούν μόνο μια κοινή μνήμη για την αποθήκευση του προγράμματος και των δεδομένων, αλλά για λόγους απλότητας επιλέξαμε τη σχεδίαση με δύο ξεχωριστές μνήμες. Η μνήμη δεδομένων δέχεται ως είσοδο τη διεύθυνση που θέλουμε να προσπελάσουμε και τα δεδομένα προς εγγραφή, ενώ ως έξοδο παίρνουμε τα δεδομένα που αναγνώστηκαν. Η

53 5.2 Διαδρομή δεδομένων ενός κύκλου 51 λειτουργία της μνήμης προσδιορίζεται από δυο σήματα ελέγχου, ένα για ανάγνωση και ένα για εγγραφή. Υπάρχουν ξεχωριστοί έλεγχοι ανάγνωσης και εγγραφής, παρόλο που μόνο ένας από αυτούς μπορεί να είναι ενεργοποιημένος σε έναν κύκλο ρολογιού. Η μνήμη δεδομένων, αντίθετα με το αρχείο καταχωρητών, χρειάζεται επιπλέον ένα σήμα ανάγνωσης καθώς η ανάγνωση από μια μη έγκυρη διεύθυνση μπορεί να προκαλέσει πολλά προβλήματα στην εκτέλεση της εντολής. function [dataout, dumpmem] = mem(memwrite, memread, addr, data) persistent memory N=400; if (isempty(memory)) memory = zeros(n,1); dataout=-1; %default output & debug if(memwrite==1) memory(addr)=data; if(memread==1) dataout=memory(addr); dumpmem=memory; Εικόνα 5.6 Data Memory model and source code. Μονάδα Ελέγχου (Control Unit) Οι περισσότερες λειτουργικές μονάδες που είδαμε μέχρι τώρα χρησιμοποιούν ένα ή περισσότερα σήματα ελέγχου. Τα σήματα αυτά παράγονται και αποφασίζονται από την μονάδα ελέγχου. Δεχόμενη μόνο τον κωδικό εντολής (operation code OP), η μονάδα ελέγχου προσδιορίζει τη λειτουργία κάθε άλλης μονάδας αλλά και την έξοδο των πολυπλεκτών που συμπληρώνουν τη διαδρομή δεδομένων. Η σχεδίαση της μονάδας ελέγχου θα παρουσιαστεί αναλυτικά στην επόμενη παράγραφο, όταν θα έχουμε ορίσει τη βασική διαδρομή δεδομένων.

54 52 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή Σχεδίαση της διαδρομής δεδομένων Έχοντας εξετάσει τα βασικά λειτουργικά στοιχεία της διαδρομής δεδομένων, μπορούμε πλέον να τα συνδυάσουμε σε μια ενιαία σχεδίαση και να προσθέσουμε τη μονάδα ελέγχου. Στην επόμενη εικόνα φαίνεται η βασική υλοποίηση του υποσυνόλου του MIPS μαζί με τους απαραίτητους πολυπλέκτες και τις γραμμές ελέγχου. Κατόπιν, περιγράφονται ορισμένα στοιχεία της σχεδίασης, που δεν παρουσιάστηκαν μέχρι τώρα, όπως οι πολυπλέκτες και οι αθροιστές. Εικόνα 5.7 Βασική διαδρομή δεδομένων και σήματα ελέγχου. MUX0: ελέγχει αν ο καταχωρητής προορισμού για τον καταχωρητή εγγραφής προέρχεται από το πεδίο Rt ή από το πεδίο Rd, ανάλογα με τον τύπο της εντολής. MUX1: χρησιμοποιείται για να προσδιορίσει αν η δεύτερη έξοδος της ALU προέρχεται από τους καταχωρητές (για μια μη άμεση αριθμητική εντολή) ή από το πεδίο σχετικής απόστασης (offset) της εντολής (για μια άμεση πράξη, μια εντολή load store, ή μια διακλάδωση). MUX2: χρησιμοποιείται για να οδηγήσει την έξοδο της ALU (σε περίπτωση αριθμητικής εντολής) ή την έξοδο της μνήμης δεδομένων (σε περίπτωση εντολής φόρτωσης load), για εγγραφή στο αρχείο καταχωρητών.

55 5.2 Διαδρομή δεδομένων ενός κύκλου 53 MUX3: ελέγχει ποια τιμή θα αντικαταστήσει τον PC (η τιμή PC+1 ή η διεύθυνση προορισμού της διακλάδωσης). Ο πολυπλέκτης ελέγχεται από μια πύλη που εκτελεί λογικό AND μεταξύ της εξόδου zero της ALU και του σήματος ελέγχου διακλάδωσης. Αθροιστής 1: αυξάνει τη διεύθυνση του PC κατά 1. Αθροιστής 2: αυξάνει τη διεύθυνση του PC+1 κατά το άμεσο πεδίο σχετικής απόστασης (offset). Το αποτέλεσμα του αθροιστή έχει φυσική σημασία μόνο όταν πρόκειται για εντολή διακλάδωσης. Σε αυτό το σημείο είναι σημαντικό να θυμηθούμε τους βασικούς τύπους εντολών που παρουσιάστηκαν στο κεφάλαιο 3. Από τους τύπους εντολών και τα πεδία που περιλαμβάνουν, προκύπτουν χρήσιμα συμπεράσματα για τον τρόπο που έγινε η σχεδίαση. Εικόνα 5.8 Format των εντολών I, J, R. [15] MIPS Architecture for Programmers Volume I-A: Introduction to the MIPS32 Architecture, MIPS Technologies, Inc., p.66 opcode: 6-bit κωδικός λειτουργίας κάθε εντολής. Rd: 5-bit διεύθυνση καταχωρητή προορισμού για εγγραφή (destination register). Rs: 5-bit διεύθυνση καταχωρητή προέλευση για ανάγνωση (source register). Rt: 5-bit διεύθυνση καταχωρητή προορισμού/προέλευσης για διαφόρους τύπους εντολών (target register). immediate: 16-bit άμεσο όρισμα για λογικές και αριθμητικές εντολές (τελεστής), για εντολές load/store (διεύθυνση μνήμης), ή για εντολές διακλάδωσης (offset). instr_index: 26-bit διεύθυνση άλματος. sa: 5-bit shift amount. function: 6-bit κωδικός λειτουργίας για εντολές με ειδικό opcode.

56 54 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή Πλέον, μπορούμε να σχεδιάσουμε τη μονάδα ελέγχου και να ολοκληρώσουμε την αρχική υλοποίηση. Γνωρίζοντας όλα τα σήματα ελέγχου που χρειάζονται μπορούμε να σχηματίσουμε ένα πίνακα καταστάσεων για τη λειτουργία της μονάδας ελέγχου. Στη συνέχεια, περιγράφεται συνοπτικά η λειτουργία κάθε σήματος και παρατίθεται ο πίνακας καταστάσεων της CU. Όνομα Σήματος RegDst RegWrite AluSrc Branch MemRead MemWrite MemtoReg Αποτέλεσμα όταν είναι απενεργοποιημένο Ο αριθμός καταχωρητή προορισμού για τον καταχωρητή εγγραφής προέρχεται από το πεδίο Rt. Κανένα. Ο δεύτερος τελεστέος της ALU προέρχεται από τη δεύτερη έξοδο του αρχείου καταχωρητών. Κανένα. Κανένα. Κανένα. Η τιμή που εγγράφεται στο αρχείο καταχωρητών προέρχεται από την έξοδο της ALU. Αποτέλεσμα όταν είναι ενεργοποιημένο Ο αριθμός καταχωρητή προορισμού για τον καταχωρητή εγγραφής προέρχεται από το πεδίο Rd. Γίνεται εγγραφή στο αρχείο καταχωρητών. Ο δεύτερος τελεστέος της ALU είναι το πεδίο immediate. Η διεύθυνση του PC θα αλλάξει λόγω διακλάδωσης, εφόσον προκύψει zero από την ALU. Γίνεται ανάγνωση της μνήμης δεδομένων. Γίνεται εγγραφή στη μνήμη δεδομένων. Η τιμή που εγγράφεται στο αρχείο καταχωρητών προέρχεται από την μνήμη δεδομένων. AluOp Κωδικός λειτουργίας προς την μονάδα ελέγχου της ALU. Δεν αποτελεί λογικό σήμα παρόλα αυτά το θεωρούμε σήμα ελέγχου. Εικόνα 5.9 Πίνακας καταστάσεων της Control Unit

57 5.3 Διαδρομή δεδομένων πολλών κύκλων και διοχέτευση 55 Με τη μονάδα ελέγχου πλήρως προσδιορισμένη μπορούμε να δούμε την τελική σχεδίαση της διαδρομής δεδομένων. Εικόνα 5.10 Τελική διαδρομή δεδομένων του MIPS στο Simulink. 5.3 Διαδρομή δεδομένων πολλών κύκλων και διοχέτευση Παρότι η διαδρομή δεδομένων ενός κύκλου θα λειτουργήσει σωστά, δεν χρησιμοποιείται σε σύγχρονες σχεδιάσεις λόγω μειωμένης αποδοτικότητας. Γενικά, είναι προτιμότερο μια εντολή να εκτελείται σε πολλούς μικρότερους κύκλους παρά σε έναν μεγάλο, αργό κύκλο μηχανής. Το όφελος αυτής της επιλογής γίνεται εμφανές στη συνέχεια με τον μηχανισμό διοχέτευσης. Στη σχεδίασή μας κάθε εντολή διέρχεται από πέντε βασικά στάδια επεξεργασίας στις πέντε βασικές μονάδες του πυρήνα. Αυτά είναι:

58 56 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή Προσκόμιση Εντολής (Instruction Fetch IF): Ο PC δείχνει τη διεύθυνση της επόμενης εντολής και η μνήμη εντολών δίνει την κατάλληλη εντολή προς εκτέλεση. Αποκωδικοποίηση Εντολής (Instruction Decode ID): Ο κωδικός εντολής εισέρχεται στην μονάδα ελέγχου και παράγονται τα σήματα ελέγχου. Παράλληλα, γίνεται ανάγνωση ενός ή δυο καταχωρητών, ανάλογα με τον τύπο της εντολής. Εκτέλεση (Execute EX): Οι τιμές των καταχωρητών εισέρχονται στην ALU για εκτέλεση της κατάλληλης πράξης. Προσπέλαση μνήμης (Memory MEM): Γίνεται ανάγνωση ή εγγραφή στη μνήμη δεδομένων. Εγγραφή στους καταχωρητές (Write Back WB): Το αποτέλεσμα της ALU ή η έξοδος της μνήμης δεδομένων, εγγράφονται πίσω στο αρχείο καταχωρητών Σχεδίαση της διοχέτευσης Με την τοποθέτηση καταχωρητών ή κάποιου στοιχείου μνήμης στην πορεία των σημάτων που μεταβαίνουν από το ένα στάδιο επεξεργασίας στο επόμενο, πετυχαίνουμε την μετατροπή της διαδρομής δεδομένων από ενός κύκλου σε διαδρομή πολλών κύκλων. Οι καταχωρητές αυτοί ονομάζονται καταχωρητές διοχέτευσης καθώς χρησιμοποιούνται κυρίως στην διοχέτευση δεδομένων. Με αυτό τον τρόπο, σε κάθε κύκλο τα δεδομένα δεν διατρέχουν όλη τη διαδρομή αλλά περνούν από το ένα στάδιο στο επόμενο. Στην υλοποίηση μας χρησιμοποιήσαμε τα στοιχεία μνήμης του Simulink. Εικόνα 5.11 Memory Block model and parameters

59 5.3 Διαδρομή δεδομένων πολλών κύκλων και διοχέτευση 57 Στη συνέχεια, βλέπουμε τη νέα διαδρομή δεδομένων μαζί με τους καταχωρητές διοχέτευσης. Χρησιμοποιούνται τέσσερις τέτοιοι καταχωρητές, με αποτέλεσμα πλέον κάθε εντολή να διαρκεί 4 κύκλους μηχανής. Εικόνα 5.12 Διαδρομή δεδομένων μαζί με τους καταχωρητές διοχέτευσης Με αυτό τον τρόπο, όχι μόνο έγινε πιο κατανοητή η πορεία της εντολής μέσα στη διαδρομή δεδομένων, αλλά έγινε και το πρώτο βήμα για την σχεδίαση του μηχανισμού διοχέτευσης. Παράλληλα, τροποποιούμε και τη σχεδίαση του PC. Στη διαδρομή δεδομένων πολλών κύκλων που είδαμε, ο PC αυξανόταν κάθε 4 κύκλους, ώστε να ολοκληρωθεί πλήρως η προηγούμενη εντολή. Μεταφέροντας τον PC και τον αθροιστή στο πρώτο στάδιο IF πετυχαίνουμε το βασικό ζητούμενο της διοχέτευσης, δηλαδή κάθε εντολή να ξεκινάει την εκτέλεσή της αμέσως μετά την προηγούμενη, χωρίς να περιμένει την συμπλήρωση τεσσάρων κύκλων. Έχοντας υλοποιήσει τη διαδρομή δεδομένων πολλών κύκλων, μπορούμε πλέον να μελετήσουμε πιο αναλυτικά το μηχανισμό της διοχέτευσης. Διοχέτευση είναι η τεχνική υλοποίησης της διαδρομής δεδομένων, στην οποία η εκτέλεση των εντολών γίνεται σε επικάλυψη. Κατά αυτή την έννοια, μια εντολή δεν περιμένει να ολοκληρωθεί η εκτέλεση της προηγούμενης και να διέλθει από όλα τα στάδια επεξεργασίας. Αντίθετα, ξεκινάει την

60 58 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή εκτέλεση της στον αμέσως επόμενο κύκλο και ενώ η προηγούμενη εντολή βρίσκεται ακόμα στο 2 ο στάδιο. Αυτό φαίνεται παραστατικά στο παράδειγμα της επόμενης εικόνας για μια ακολουθία τριών εντολών φόρτωσης lw. Εικόνα 5.13 Εκτέλεση ενός κύκλου χωρίς διοχέτευση (επάνω) και εκτέλεση με διοχέτευση (κάτω). [1] David A. Patterson, John L. Hennessy, Οργάνωση και σχεδίαση υπολογιστών. Η διασύνδεση υλικού και λογισμικού, σελ. 391 Έτσι, γίνεται κατανοητό ότι κάτω από ιδανικές συνθήκες και με μεγάλο αριθμό εντολών, η επιτάχυνση λόγω διοχέτευσης είναι περίπου ίση με τον αριθμό των σταδίων διοχέτευσης. Ωστόσο, πρέπει να σημειώσουμε ότι η διοχέτευση βελτιώνει την απόδοση αυξάνοντας τη διεκπαιρεωτική ικανότητα του πυρήνα σε εντολές και δεν μειώνει το χρόνο εκτέλεσης της κάθε εντολής. Γενικά μπορούμε να πούμε πως ισχύει: Χρόνος Μεταξύ εντολών με διοχέτευση Χρόνος μεταξύ εντολών χωρίς διοχέτευση αριθμός σταδίων διοχέτευσης Επίσης, παρατηρούμε ότι παράλληλα με τα σήματα δεδομένων πρέπει να διοχετευτούν και τα σήματα ελέγχου. Για αυτό το λόγο, ομαδοποιούμε τα σήματα ελέγχου ανάλογα με το στάδιο επεξεργασίας που οδηγούνται και έπειτα τα προωθούμε μέσω των καταχωρητών διοχέτευσης.

61 5.3 Διαδρομή δεδομένων πολλών κύκλων και διοχέτευση 59 Σημαντική τροποποίηση αποτελεί και η μετακίνηση του MUX0 στο στάδιο EX. Η διεύθυνση του καταχωρητή εγγραφής πρέπει να ακολουθήσει τη διαδρομή δεδομένων μέχρι το τέλος, ώστε να μην υπάρχουν προβλήματα συγχρονισμού και να επιστρέψει από το στάδιο WB μαζί με τα δεδομένα που θα εγγραφούν στον αντίστοιχο καταχωρητή. Εικόνα 5.14 Διαδρομή δεδομένων με απλή διοχέτευση Κίνδυνοι διοχέτευσης και αντιμετώπιση των κινδύνων Υπάρχουν πολλές περιπτώσεις στη διοχέτευση, όπου η επόμενη εντολή δεν μπορεί να εκτελεστεί στον κύκλο ρολογιού που ακολουθεί. Αυτό συμβαίνει κυρίως γιατί η επόμενη εντολή απαιτεί για την εκτέλεσή της, το αποτέλεσμα μιας ή περισσότερων εντολών που ακόμα δεν έχουν ολοκληρωθεί. Αυτά τα συμβάντα ονομάζονται κίνδυνοι (hazards) και υπάρχουν δύο βασικοί τύποι που θα εξετάσουμε, οι κίνδυνοι δεδομένων και οι κίνδυνοι ελέγχου. Οι κίνδυνοι δεδομένων προκύπτουν όταν μια εντολή απαιτεί δεδομένα από μια προηγούμενη, που ακόμα εκτελείται. Οι κίνδυνοι ελέγχου ή αλλιώς κίνδυνοι διακλάδωσης, προκύπτουν από την ανάγκη να πάρουμε μια απόφαση με βάση το αποτέλεσμα μια εντολής, ενώ εκτελούμε ακόμα άλλες εντολές. Για παράδειγμα, πρέπει να εξετάσουμε τι θα συμβεί με τις εντολές που βρίσκονται στα δύο πρώτα στάδια, όταν ληφθεί μια διακλάδωση στο τρίτο στάδιο EX.

62 60 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή Η υλοποίησή μας μέχρι τώρα λειτουργεί για πολύ συγκεκριμένους συνδυασμούς εντολών, όπου δεν εμφανίζονται κίνδυνοι διοχέτευσης. Ωστόσο, στην πράξη κάτι τέτοιο συμβαίνει πολύ σπάνια με αποτέλεσμα να είναι αναγκαία η σχεδίαση ενός μηχανισμού αντιμετώπισης. Το παρακάτω παράδειγμα δείχνει χαρακτηριστικά το πρόβλημα που εμφανίζεται πιο συχνά. sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) #Ο καταχωρητής $2 γράφεται από τη sub #O πρώτος τελεστέος $2 εξαρτάται από τη sub #Ο δεύτερος τελεστέος $2 εξαρτάται από τη sub #Kαι οι δύο τελεστέοι εξαρτώνται από τη sub #H βάση ($2) εξαρτάται από τη sub Οι τέσσερις τελευταίες εντολές εξαρτώνται άμεσα από το αποτέλεσμα της πρώτης. Γίνεται εύκολα κατανοητό, ότι το αποτέλεσμα δε θα βρίσκεται στον καταχωρητή $2 παρά μόνο στο τέλος του 4 ου κύκλου. Έτσι, οι εντολές and, or και add θα εκτελεστούν με λάθος περιεχόμενο καταχωρητή. Για να αντιμετωπίσουμε αυτό το πρόβλημα αρκεί να παρατηρήσουμε, ότι το αποτέλεσμα της πρώτης εντολής είναι στην πραγματικότητα διαθέσιμο μετά από δύο κύκλους, δηλαδή μετά το στάδιο EX. Αυτό που έχουμε να κάνουμε είναι να προωθήσουμε το αποτέλεσμα στο σημείο, όπου απαιτείται από μια επόμενη εντολή. Πιο αναλυτικά, αρχικά αναγνωρίζουμε αν υπάρχει ανάγκη για προώθηση. Υπάρχουν τέσσερις διαφορετικές περιπτώσεις, όπου ο καταχωρητής προορισμού Rd είναι ίδιος με τους καταχωρητές Rs, Rt. Οι περιπτώσεις αυτές είναι: 1.α ΕΧ/ΜΕΜ.Rd = ID/EX.Rs 1.β ΕΧ/ΜΕΜ.Rd = ID/EX.Rt 2.α MEM/WB.Rd = ID/EX.Rs 2.β MEM/WB.Rd = ID/EX.Rt Οι συνθήκες 1.α, 1.β αναφέρονται στην περίπτωση όπου το αποτέλεσμα απαιτείται στην αμέσως επόμενη εντολή και άρα θα βρίσκεται στον καταχωρητή EX/MEM. Οι συνθήκες 2.α, 2.β αναφέρονται στην περίπτωση, όπου το αποτέλεσμα απαιτείται στην μεθεπόμενη εντολή και άρα θα βρίσκεται στον καταχωρητή MEM/WB. Η μόνη περίπτωση προώθησης που δεν αντιμετωπίζουν οι παραπάνω συνθήκες είναι όταν έχουμε αποθήκευση στη μνήμη, μετά από αριθμητική πράξη. Σε αυτή την περίπτωση οι συνθήκες που ανιχνεύουν την ανάγκη για προώθηση είναι πιο σύνθετες και απαιτείται ένας επιπλέον πολυπλέκτης για την επιλογή του καταχωρητή προορισμού.

63 5.3 Διαδρομή δεδομένων πολλών κύκλων και διοχέτευση 61 Αναγνωρίζοντας λοιπόν, την ανάγκη για προώθηση, σχεδιάζουμε τη μονάδα προώθησης (Forward Unit). Σε συνδυασμό με δύο πολυπλέκτες στις εισόδους της ALU και έναν για την επιλογή του καταχωρητή προορισμού αντιμετωπίζεται το μεγαλύτερο μέρος των προβλημάτων διοχέτευσης και παρακάτω βλέπουμε τη συνολική σχεδίαση μαζί με τον κώδικα της μονάδας προώθησης. function [ForwardA, ForwardB, ForwardC] = ForwardUnit(MEMWB_Rd, IDEX_Rs, IDEX_Rt, IDEX_MemWrite, MEMWB_RegWrite, EXMEM_Rd, EXMEM_RegWrite) ForwardA = 0; ForwardB = 0; ForwardC = 0; %--Kindynos EX: if ( (EXMEM_RegWrite==1) && (EXMEM_Rd~=0) && (EXMEM_Rd==IDEX_Rs) ) ForwardA = 2; if ( (EXMEM_RegWrite==1) && (EXMEM_Rd~=0) && (EXMEM_Rd==IDEX_Rt) ) ForwardB = 2; %--Kindynos MEM: if ( (MEMWB_RegWrite==1) && (MEMWB_Rd~=0) && (MEMWB_Rd==IDEX_Rs) ) if (EXMEM_RegWrite==1) if (EXMEM_Rd~=IDEX_Rs) ForwardA = 1; else ForwardA = 1; if ( (MEMWB_RegWrite==1) && (MEMWB_Rd~=0) && (EXMEM_Rd~=IDEX_Rt) && (MEMWB_Rd==IDEX_Rt) ) ForwardB = 1; %--Kindynos sw: if ( (IDEX_MemWrite==1) && (EXMEM_Rd==IDEX_Rt) ) if (EXMEM_RegWrite==1) ForwardC = 2; %t1 else if (MEMWB_Rd==IDEX_Rt) ForwardC = 1; %t2 if ( (IDEX_MemWrite==1) && (MEMWB_Rd==IDEX_Rt) ) if (EXMEM_RegWrite==1) ForwardC = 2; %t1 else ForwardC = 1; %t2 Εικόνα 5.15 Μονάδα Προώθησης Δεδομένων. Μοντέλο και κώδικας

64 62 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή Εικόνα 5.16 Σχεδίαση του μηχανισμού προώθησης στο στάδιο EX. Όπως βλέπουμε από την παραπάνω σχεδίαση, το κύκλωμα αρχίζει να γίνεται αρκετά πολύπλοκο με την παρουσία τόσων σημάτων. Ακόμα και με την απόκρυψη της μονάδας ελέγχου της ALU στο υποσύστημα ID/EX, είναι απαραίτητη η τακτοποίηση του κυκλώματος και η προσθήκη ενός διαχειριστή σημάτων (Signal Handler). Στις παρακάτω εικόνες φαίνεται η νέα σχεδίαση και η υλοποίηση του διαχειριστή σημάτων.

65 5.3 Διαδρομή δεδομένων πολλών κύκλων και διοχέτευση 63 Εικόνα 5.17 Χρησιμοποίηση του subsystem Signal Handler για την καλύτερη οργάνωση του κυκλώματος. Εικόνα 5.18 Η Σχεδίαση του Signal Handler.

66 64 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή Μια περίπτωση που δεν μπορεί να διορθώσει η προώθηση, είναι όταν μια εντολή προσπαθεί να διαβάσει έναν καταχωρητή, μετά από μία εντολή load που γράφει στον ίδιο καταχωρητή. Σε αυτή την περίπτωση η προώθηση από το στάδιο EX δεν αρκεί, καθώς το αποτέλεσμα της load θα βρίσκεται έτοιμο στο στάδιο MEM και όχι στο στάδιο EX όπως πριν. Το πρόβλημα επιλύεται καθυστερώντας τη διοχέτευση κατά έναν κύκλο κα στη συνέχεια η μονάδα προώθησης αναλαμβάνει τα υπόλοιπα. Για να αναγνωρίσουμε την περίπτωση αυτή και να υλοποιήσουμε την καθυστέρηση, εισάγουμε μια μονάδα ανίχνευσης κινδύνων (Hazard Detection Unit). Η μονάδα αυτή λειτουργεί στη διάρκεια του σταδίου ID και πρακτικά μόλις ανιχνεύσει κάποιο κίνδυνο καθυστερεί τις εντολές που βρίσκονται στα στάδιο ID και IF, απλώς αποτρέποντας την αλλαγή του PC και του καταχωρητή IF/ID. Η σχεδίαση της μονάδας ανίχνευσης κινδύνων φαίνεται στη συνέχεια και παρατίθεται και ο κώδικας MATLAB που την υλοποιεί. Εικόνα 5.19 Hazard Detection Unit. Σχεδίαση και μοντέλο.

67 5.4 Ολοκλήρωση της σχεδίασης 65 function [CUnop, IFIDWrite, PCWrite] = hazarddetection(id_memread, IF_Rs, IF_Rt, ID_Rt) if ( (ID_MemRead==1) && ((ID_Rt==IF_Rs) (ID_Rt==IF_Rt)) ) PCWrite = 1; IFIDWrite = 1; CUnop = 1; else PCWrite = 0; IFIDWrite = 0; CUnop = 0; Η πιο εύκολα αντιμετωπίσιμη κατηγορία κινδύνων είναι οι κίνδυνοι διακλάδωσης ή αλλιώς κίνδυνοι ελέγχου. Το πρόβλημα βρίσκεται στο γεγονός ότι, παρόλο που έχει ληφθεί μια διακλάδωση στο στάδιο EX (μετά από αποτέλεσμα zero της ALU), έχουν ήδη ξεκινήσει να εκτελούνται οι δύο επόμενες εντολές. Το πρόβλημα λύνεται απλώς αποτρέποντας την εκτέλεσή αυτών των εντολών. Η εκτέλεση της σωστής εντολής στην οποία έχει οδηγήσει η διακλάδωση θα καθυστερήσει αναπόφευκτα 2 κύκλους μηχανής, αλλά αυτό δεν είναι κάτι που θα επιβαρύνει την απόδοση της διοχέτευσης. 5.4 Ολοκλήρωση της σχεδίασης Σε αυτό το σημείο, έχοντας μια πλήρως λειτουργική σχεδίαση, μπορούμε να υλοποιήσουμε το υπόλοιπο σετ εντολών και να εισάγουμε μια μονάδα διαχείρισης διακλαδώσεων και εντολών άλματος. Η μέχρι τώρα σχεδίαση, μας επιτρέπει να προσθέσουμε με ευκολία, χωρίς κάποια αλλαγή στο υλικό, τις αριθμητικές και λογικές εντολές, αλλά και τις εντολές σύγκρισης και μετακίνησης υπό συνθήκη. Ωστόσο, για να καλύψουμε το μεγαλύτερο και το πιο βασικό μέρος του συνόλου εντολών, πρέπει να υλοποιήσουμε τις εντολές πολλαπλασιασμού, την σχεδίαση του 64bit accumulator και τις εντολές μετακίνησης από και προς αυτόν και να εισάγουμε τις υπόλοιπες εντολές διακλάδωσης. Στους πίνακες της τελευταίας παραγράφου, φαίνονται όλες οι εντολές που υλοποιούνται πλέον από τον επεξεργαστή και παρατίθενται οι κωδικοί λειτουργίας και τα σήματα ελέγχου της ALU. Όσον αφορά στη σχεδίαση του accumulator, χρησιμοποιούμε στην ALU δύο καταχωρητές hi και lo των 32 bit. Η πράξη του πολλαπλασιασμού αποθηκεύει τα 32 low bits στον καταχωρητή lo και τα 32 high bits στον καταχωρητή hi. Το αποτέλεσμα μπορεί να γίνει

68 66 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή προσβάσιμο με τις εντολές move from high (mfhi) και move from low (mflo) και παραμένει εκεί μέχρι να έρθει κάποια άλλη εντολή και να γράψει σε αυτούς τους καταχωρητές. Ένα σημείο που πρέπει να παρατηρήσουμε είναι η αδυναμία χρήσης μεταβλητών 64 bit στο Simulink, με αποτέλεσμα να πρέπει να εκτελέσουμε έμμεσα τον πολλαπλασιασμό δυο 32 bit μεταβλητών. Πρακτικά, αρκεί να θυμηθούμε ότι μια μεταβλητή X των 32 bit μπορεί να γραφεί ως: Aν έχουμε δύο μεταβλητές X, Y των 32 bit, με X hi, X lo, Y hi, Y lo τα 16 bit τμήματα high και low των X, Y, τότε ισχύει: Ο παρακάτω κώδικας MATLAB χρησιμοποιεί αυτή την θεωρία και υλοποιεί τον 64bit πολλαπλασιασμό στην ALU. X=in1; Y=in2; xhi=uint32(bitshift(x,-16)); xlo=uint32(bitand(uint32(hex2dec('ffff')),x)); ylo=uint32(bitand(uint32(hex2dec('ffff')),y)); yhi=uint32(bitshift(y,-16)); hi=uint32(xhi*yhi); lo=uint32(xlo*ylo); mid=uint32(xhi*ylo+xlo*yhi); midhi=uint32(bitshift(mid,-16)); midlo=uint32(bitshift(mid,16)); Ovf=double(midlo)+double(lo); if(ovf>intmax('uint32')) lo=uint32(ovf-intmax('uint32')-1); hi=hi+midhi+1; else hi=hi+midhi; lo=lo+midlo; Τέλος, είναι απαραίτητο, όπως και σε κάθε μικροαρχιτεκτονική συνόλου εντολών, να εμπλουτίσουμε τη σχεδίασή μας με περισσότερες εντολές διακλάδωσης αλλά και με εντολές άλματος. Προφανώς, η συνθήκη zero της ALU δεν αρκεί για την πλειοψηφία των εντολών διακλάδωσης και χρησιμοποιείται μόνο από την εντολή branch if equal (beq). Προσθέτουμε λοιπόν στη σχεδίασή μας, μια μονάδα διακλάδωσης (Branch Unit). Η μονάδα αυτή δέχεται

69 5.4 Ολοκλήρωση της σχεδίασης 67 τον κωδικό διακλάδωσης από την CU, ελέγχει τους τελεστές της ALU και αποφασίζει κατάλληλα αν έχει συμβεί διακλάδωση. Εικόνα 5.20 Branch Unit. Σχεδίαση και μοντέλο. Εικόνα 5.21 Branch Unit Subsystem. Για την εντολή άλματος jump υπάρχει ένας πολυπλέκτης, που αποφασίζει αν η διακλάδωση προέρχεται από άλμα ή από εντολή διακλάδωσης υπό συνθήκη. Είναι σημαντικό να τονίσουμε, ότι οι διευθύνσεις που χρησιμοποιούνται στην πράξη από τους assembler δεν ξεκινάνε από το 0. Για αυτό πρέπει να προσέξουμε στη χρήση αλμάτων και να αφαιρέσουμε

70 68 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή την αρχική διεύθυνση, ώστε να συμβαδίζει με την δική μας υπόθεση, ότι ξεκινάμε να μετράμε από τη διεύθυνση 1 (απαίτηση του MATLAB). Στην επόμενη εικόνα βλέπουμε την τελική σχεδίαση του προσομοιωτή με όλες τις απαραίτητες μονάδες. Οι λεπτομέρειες της σχεδίασης με όλα τα υποσυστήματα παρατίθενται στο παράρτημα Ι. Εικόνα 5.22 Τελική διαδρομή δεδομένων του MIPS στο Simulink, με τον μηχανισμό διοχέτευσης, τις μονάδες αντιμετώπισης κινδύνων και τη μονάδα διακλάδωσης. 5.5 Μέθοδος προσομοίωσης Σημαντικό στάδιο της σχεδίασης ήταν και η επιλογή της μεθόδου προσομοίωσης. Ας μην ξεχνάμε, ότι το σύστημά μας αναπτύσσεται σο Simulink και ουσιαστικά αποτελεί έναν προσομοιωτή επεξεργαστή. Στη συγκεκριμένη μέθοδο προσομοίωσης στηρίχθηκαν πολλές από τις επιλογές σχεδίασης που έγιναν και παρουσιάζονται σε αυτή την παράγραφο.

71 5.5 Μέθοδος προσομοίωσης 69 Η προσομοίωση που επιλέξαμε αποτελείται από διακριτά βήματα, ξεκινώντας από τη χρονική στιγμή 1 και συνεχίζοντας για απεριόριστο χρόνο. Έτσι, ταυτίσαμε το βήμα προσομοίωση με το clock του συστήματος, δηλαδή τους κύκλους μηχανής. Παράλληλα, δεν ήταν απαραίτητη η χρήση κάποιου εξωτερικού ρολογιού (external clock) για τον συγχρονισμό των μονάδων του πυρήνα. Τα δεδομένα μεταβαίνουν σε κάθε βήμα προσομοίωσης από αριστερά προς τα δεξιά και περιμένουν το επόμενο βήμα μόλις βρεθούν σε στοιχείο μνήμης του Simulink. Ξεκινήσαμε λοιπόν τη σχεδίαση έχοντας ως προϋπόθεση αυτή τη μέθοδο χρονισμού, η οποία αποτελεί θεμελιώδες στοιχείο για τη λειτουργία του προσομοιωτή. Στην επόμενη εικόνα φαίνονται οι βασικές επιλογές στην αντίστοιχη καρτέλα του Simulink. Εικόνα 5.23 Configuration Parameters. Επιλέξαμε infinite stop time καθώς επιθυμούμε να αποφασίζει ο χρήστης πότε θα ολοκληρωθεί η προσομοίωση. Έτσι, έχει δύο επιλογές. Να τερματίζει την εκτέλεση του κώδικα assembly με εντολή break ή να τερματίζει την εκτέλεση με την επιλογή Stop του Simulink. Σε αυτήν την περίπτωση, στον κώδικα assembly πρέπει να υπάρχει κάποια εντολή : jump ή οποιαδήποτε άλλη εντολή while(1), ώστε να μην προκύψει υπερχείλιση της μνήμης προγράμματος. Τέλος, είναι σημαντικό πριν ξεκινήσουμε την προσομοίωση να επιλέξουμε ένα τυπικό μέγεθος μνήμης προγράμματος και μνήμης δεδομένων. Στο κεφάλαιο χρήση του προσομοιωτή περιγράφεται αναλυτικά όλη η διαδικασία εκτέλεσης και λειτουργίας του προσομοιωτή.

72 70 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή 5.6 Παραδοχές και απλοποιήσεις Μέχρι αυτό το σημείο παρακολουθήσαμε ολόκληρη τη διαδικασία της σχεδίασης έως και το τελικό μοντέλο του επεξεργαστή. Ωστόσο, κατά τη διάρκεια της υλοποίησης έγιναν ορισμένες παραδοχές και απλοποιήσεις, αφενός για την καλύτερη λειτουργία του συστήματος, αφετέρου για την μείωση της πολυπλοκότητας του μοντέλου. Σε αυτή την παράγραφο καταγράφονται οι βασικότερες από αυτές τις παραδοχές και εξηγείται σύντομα για ποιο λόγο επιλέχθηκαν, με τις πιο σημαντικές να αφορούν τη μνήμη δεδομένων και τη μνήμη προγράμματος. Tα μεγέθη μνήμης που επιλέχθηκαν είναι της τάξης των εκατοντάδων θέσεων των 32 bit. Πιο συγκεκριμένα, επιλέξαμε οι μνήμες να είναι πίνακες 4092x1 για δεδομένα uint32. Βέβαια, κάτι τέτοιο αλλάζει εύκολα και ο κάθε χρήστης μπορεί να αυξήσει ή να μειώσει το μέγεθος αυτό ανάλογα με την εφαρμογή του. Μια άλλη παραδοχή που έγινε αφορά στον τρόπο αρίθμησης των διευθύνσεων. Το MATLAB κατά σύμβαση ξεκινάει την αρίθμηση των πινάκων από το 1 και για κάθε επόμενο στοιχείο αρκεί να προσθέσουμε 1. Στην πραγματική σχεδίαση του MIPS, η μνήμη προγράμματος ξεκινάει από τη διεύθυνση 0x και αυξάνεται κατά 4 (κάθε εντολή είναι των 32bit ή αλλιώς 4 byte), ενώ η μνήμη δεδομένων ξεκινάει από τη θέση 0x και εκτείνεται μέχρι τη διεύθυνση 0x7FFF EFFF. Αυτή η αλλαγή δε δημιουργεί κάποιο πρακτικό πρόβλημα, με εξαίρεση τις εντολές άλματος όπου επιδιώκουν διακλάδωση σε πραγματική διεύθυνση MIPS, την οποία έχουν λάβει ως όρισμα από τον assembler. Για να μην υπάρχουν προβλήματα συμβατότητας, πριν γίνει προσπέλαση αφαιρούμε την αρχική διεύθυνση της κάθε μνήμης και διαιρούμε δια 4, ώστε να μεταβαίνουμε από πραγματικές διευθύνσεις στις διευθύνσεις των πινάκων του MATLAB. Επίσης, δεν υλοποιείται ολόκληρη η μνήμη δεδομένων αλλά μόνο μια περιοχή στοίβας (θέσεις 0x7FFF E000 0x7FFF EFFC) και η global area για τις global/static μεταβλητές (θέσεις 0x x1000 0FFC). Μια άλλη παραδοχή αφορά στα σήματα δεδομένων και ελέγχου μέσα στη διαδρομή δεδομένων. Κατά σύμβαση τα σήματα αυτά έχουν μέγεθος uint32 για τα σήματα δεδομένων και boolean για τα σήματα ελέγχου. Παρόλα αυτά, το Simulink χρησιμοποιεί κατά δική του σύμβαση σήματα double. Έτσι, για να μην υπάρχουν προβλήματα συμβατότητας μεταξύ των μονάδων και για να μην εμφανίζονται

73 5.7 Μελλοντική ανάπτυξη 71 ανεπιθύμητα warnings ή errors κατά την προσομοίωση, χρησιμοποιούμε όπου δεν ήταν κρίσιμο σήματα double και όχι uint32. Εξαίρεση αποτελούν η μνήμη δεδομένων και η μνήμη προγράμματος, ο πίνακας των καταχωρητών και η ALU, όπου ήταν απαραίτητο να λειτουργήσουν με σήματα uint32, όπως και όλα τα σήματα εισόδου-εξόδου. Η εντολή break που σχεδιάστηκε δεν εκτελεί την πραγματική της λειτουργία. Η break οδηγεί την εκτέλεση σε διακοπή και εκτελεί την ρουτίνα εξυπηρέτησης διακοπής SignalException(Breakpoint). Στη σχεδίαση μας δεν υπάρχει μονάδα διαχείρισης διακοπών και η break χρησιμοποιείται για τον τερματισμό της προσομοίωσης στο Simulink. Αν και αποτελεί λεπτομέρεια, αξίζει να αναφερθούμε στα delay slots των εντολών διακλάδωσης και άλματος. Όταν συμβαίνει μια διακλάδωση, στην πραγματική υλοποίηση του MIPS η επόμενη εντολή που ακολουθεί εκτελείται πάντα, ώστε να υπάρξει καθυστέρηση ενός κύκλου. Γι αυτό οι σχεδιαστές compiler MIPS επιλέγουν να προσθέτουν μια εντολή nop μετά την εντολή διακλάδωσης. Στη δική μας σχεδίαση οι επόμενες δύο εντολές δεν εκτελούνται, αλλά γίνεται flush και αντικαθιστούνται εσωτερικά με nop. Έτσι, υπάρχει καθυστέρηση 2 κύκλων μετά από κάθε διακλάδωση. Τέλος, μια σημαντική απλοποίηση που θεωρήθηκε αφορά στις εντολές που οδηγούν σε υπερχείλιση και διαχωρίζονται σε signed και unsigned. Λόγω της αρχιτεκτονικής του MIPS, οι εντολές που οδηγούν σε υπερχείλιση δε διαχειρίζονται άμεσα το κρατούμενο που προκύπτει, αλλά οδηγούν σε μία εξαίρεση (exception). Κατά αυτή την έννοια, δημιουργείται μια διακοπή (interrupt) στην εκτέλεση του προγράμματος και η μονάδα διαχείρισης εξαιρέσεων θα εκτελέσει τις κατάλληλες ενέργειες για τον χειρισμό της υπερχείλισης. Η σχεδίαση και η υλοποίηση των interrupts θα ήταν αρκετά πολύπλοκη και παραλήφτηκε, οπότε όλες οι εντολές signed και unsigned, εκτελούνται με τον ίδιο τρόπο ως unsigned και αγνοούνται οι περιπτώσεις υπερχείλισης. 5.7 Μελλοντική ανάπτυξη Στα πλαίσια της συγκεκριμένης εργασίας, οι δυνατότητες ανάπτυξης του μοντέλου του πυρήνα δεν ήταν απεριόριστες. Η πολυπλοκότητα μιας ολοκληρωμένης σύγχρονης αρχιτεκτονικής MIPS θα απαιτούσε αρκετά περισσότερες ανθρωποώρες σχεδίασης και η ανάπτυξη σύνθετων χαρακτηριστικών θα ξέφευγε από τα πλαίσια της συγκεκριμένης εργασίας. Αυτό που μας ενδιαφέρει κυρίως είναι η μελέτη μια βασικής αρχιτεκτονικής RISC

74 72 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή και η υλοποίηση ενός λειτουργικού προσομοιωτή επεξεργαστή. Ωστόσο, υπάρχουν αρκετά σημεία του υλικού και χαρακτηριστικά του συστήματος που μπορούν να αναπτυχθούν περαιτέρω και αξίζει να αναφερθούμε και να καταγράψουμε ορισμένα από αυτά, ώστε μελλοντικά να καταλήξουμε σε έναν πιο πλήρη πυρήνα. Παράλληλα, είναι χρήσιμο να περιγράψουμεν πως θα μπορούσε να αξιοποιηθεί ο επεξεργαστής που σχεδιάστηκε σε άλλα μεγαλύτερα project. Η δυνατότητα που προσφέρει το Simulink να θεωρήσουμε το μοντέλο του πυρήνα ως ένα αυτόνομο σύστημα, μπορεί να χρησιμοποιηθεί σε πολυπύρηνες εφαρμογές, αλλά και στη μελέτη και προσομοίωση διαφορετικών αρχιτεκτονικών υπολογιστικών συστημάτων. Οι περισσότερες από τις επιλογές για περαιτέρω ανάπτυξη σχετίζονται άμεσα με τις παραδοχές που έγιναν κατά τη διάρκεια της υλοποίησης του προσομοιωτή και αναφέρθηκαν στην προηγούμενη παράγραφο. Επιπρόσθετα, υπάρχουν πολλές προσθήκες σε επίπεδο IS και υλικού, ώστε να καταλήξουμε σε μια πλήρως ρεαλιστική αναπαράσταση του επεξεργαστή MIPS. Από τις πρώτες βελτιώσεις που θα μπορούσαν να γίνουν είναι η προσθήκη όλων των υπόλοιπων εντολών της CPU που αγνοήθηκαν μέχρι τώρα. Σε αυτές περιλαμβάνονται: Οι εντολές MADD, MSUB, όπου το αποτέλεσμα του πολλαπλασιασμού προστίθεται ή αφαιρείται από τον accumulator και δεν αποθηκεύεται απλά. Ορισμένες εντολές διακλάδωσης και σύνδεσης. Υλοποιήθηκε η εντολή jump and link (jal) αλλά αγνοήθηκαν οι εντολές jalr, bgezal, bltzal. Η πλειοψηφία των εντολών load/store. Υλοποιήθηκαν μόνο οι εντολές που διαχειρίζονται λέξεις 32 bit (load word, store word), ενώ αγνοήθηκαν οι εντολές που διαχειρίζονται byte ή half-word. Όλες οι εντολές trap, μιας και δεν υλοποιήθηκε κάποια μονάδα για να τις διαχειρίζεται, όπως και μονάδα διαχείρισης εξαιρέσεων. Η εντολή συστήματος syscall. Όλες οι εντολές floating point και οι εντολές που αφορούν τον έλεγχο των coprocessor. Όλες οι privileged instructions. Όπως για παράδειγμα cache, wait και eret (exception return).

75 5.7 Μελλοντική ανάπτυξη 73 Όπως και σε κάθε επεξεργαστή, είναι αρκετά κρίσιμο να υπάρχει μια floating point unit (FPU). Πρέπει, λοιπόν, να γίνει μια πλήρης σχεδίαση της FPU του MIPS και να ενσωματωθούν οι δύο co-processors κατάλληλα στο σύστημα. Επίσης, είναι αρκετά χρήσιμο η μνήμη να υλοποιείται σε ρεαλιστικά μεγέθη, ώστε να μην υπάρχουν θέματα υπερχείλισης. Κάτι τέτοιο θα μπορούσε να γίνει με χρήση ενός sparse array. Ένα sparse array ουσιαστικά κρατάει μόνο την χρήσιμη, μη μηδενική πληροφορία. Έτσι, δεν θα δημιουργούνται προβλήματα μεγέθους μνήμης στο MATLAB. Όπως είδαμε, η πλειοψηφία των σημάτων εσωτερικά του επεξεργαστή είναι τύπου double ως default προεπιλογή του Simulink. Αν επανασχεδιάζαμε το σύστημα θα μπορούσαμε με typecasting σε όλα τα σημεία του κώδικα, να ζητήσουμε τα σήματα να μετατρέπονται σε uint32. Κάτι τέτοιο θα καθιστούσε άμεσα πιο τυπική όλη την πληροφορία που υπάρχει στο εσωτερικό του συστήματος. Μια σχεδιαστική αλλαγή αφορά την Branch Unit. Μεταφέροντας τη μονάδα διακλαδώσεων από το στάδιο EX στο στάδιο ID, μπορούμε να έχουμε καθυστέρηση μιας μόνο εντολής, όπως συμβαίνει στο πραγματικό σύστημα και δεν θα απαιτείται διπλό flush. Οι τιμές των καταχωρητών προς εξέταση μπορούν να προέλθουν απευθείας από την έξοδο του αρχείου των καταχωρητών και όχι από την είσοδο της ALU, είναι δηλαδή διαθέσιμες ένα κύκλο ρολογιού νωρίτερα. Θα ήταν αρκετά χρήσιμο, να οργανωθεί μια βιβλιοθήκη στο Simulink με όλα τα λειτουργικά block που υλοποιήθηκαν. Έτσι, θα μπορούσε κάποιος να χρησιμοποιήσει απευθείας αυτά τα block για μια νέα σχεδίαση του πυρήνα ή για τη σχεδίαση κάποιας άλλης αρχιτεκτονικής. Πολύ σημαντικό στοιχείο κάθε επεξεργαστή είναι η μονάδα διαχείρισης εξαιρέσεων και διακοπών. Είναι αρκετά κρίσιμο να μπορούν να γίνουν διακοπές (interrupts) στην εκτέλεση του κώδικα και να οδηγείται η εκτέλεση στις κατάλληλες ρουτίνες εξυπηρέτησης. Έτσι, θα μπορούσε μελλοντικά να υλοποιηθεί η μονάδα διαχείρισης εξαιρέσεων του MIPS, ώστε να εκτελούνται με επιτυχία οι κλήσεις συστήματος, οι περιπτώσεις υπερχείλισης και άλλου είδους διακοπές. Σε οποιοδήποτε στάδιο της ανάπτυξης θα μπορούσε, όπως είδαμε, να εξαχθεί το μοντέλο του Simulink σε hardware και να δοκιμαστεί ο επεξεργαστής σε πραγματικό χρόνο. Έτσι, με χρήση του HDL Coder είναι εφικτό να ενσωματωθεί το σύστημα σε FPGA, ενώ με χρήση του Embedded Coder μπορεί να μετατραπεί το σύστημα σε κώδικα C και να ενσωματωθεί σε κάποιον μικροεπεξεργαστή.

76 74 Κεφάλαιο 5: Σχεδίαση του προσομοιωτή Έχοντας ένα πλήρες σύστημα, τόσο σε επίπεδο προσομοιωτή, όσο και σε επίπεδο hardware (FPGA, μικροεπεξεργαστής) μπορούν να γίνουν δοκιμές απόδοσης και ταχύτητας. Κατά τη διάρκεια όλης της ανάπτυξης, η ταχύτητα του συστήματος ήταν μια παράμετρος που δεν αξιολογήθηκε και είναι αρκετά σημαντικό να δούμε τι επίπεδα απόδοσης μπορούν να επιτευχθούν σε κάθε υλοποίηση. Η ευχέρεια που προσφέρει το Simulink στον χειρισμό των μοντέλων, δίνει την δυνατότητα να θεωρήσουμε τον πυρήνα ως ένα υποσύστημα ενός μεγαλύτερου project. Έτσι, μπορούμε να σχεδιάσουμε πολυπύρηνα συστήματα και μικροελεγκτές, έχοντας έτοιμο το μοντέλο μιας RISC CPU. Από εκεί και πέρα, το Simulink δίνει τη δυνατότητα να προσθέσουμε κεντρικά bus, μονάδες ελέγχου των πυρήνων και τα περιφερειακά συστήματα ενός μικροελεγκτή.

77 Κεφάλαιο 6: Χρήση του προσομοιωτή και αποτελέσματα 6.1 Εισαγωγή Όπως σε κάθε έργο λογισμικού, ένα βασικό κομμάτι της ανάπτυξης είναι η αποσφαλμάτωση και ο έλεγχος. Έτσι, είναι σημαντικό να αναφερθούμε στη μεθοδολογία που ακολουθήθηκε και στους αλγορίθμους που χρησιμοποιήθηκαν για τον εντοπισμό και τη διόρθωση των σφαλμάτων. Αρχικά, παρουσιάζεται η χρήση του προσομοιωτή μέσω του Simulink και περιγράφεται η διαδικασία που ακολουθείται, ώστε να παρακολουθούμε τα επιθυμητά σήματα σε οποιοδήποτε σημείο του πυρήνα, με πιο βασικά βέβαια, τα περιεχόμενα της μνήμης δεδομένων και του αρχείου των καταχωρητών. Αρκετά σημαντικό κομμάτι της ανάπτυξης του συστήματος ήταν η σύνδεση με assembler και compiler για MIPS. Περιγράφεται, λοιπόν, ο τρόπος που χρησιμοποιείται ο assembler του προσομοιωτή MARS για παραγωγή εκτελέσιμου κώδικα και η διαδικασία μεταγλώττισης προγραμμάτων C με χρήση crosscompiler. Παράλληλα, είναι χρήσιμο να αξιολογήσουμε τα αποτελέσματα που προκύπτουν από την τελική έκδοση του πυρήνα. Για αυτόν τον λόγο, παρουσιάζονται οι δοκιμές, τα τεστ και οι αλγόριθμοι που εκτελέστηκαν από τον προσομοιωτή, ώστε να καταλήξουμε σε ένα αξιόπιστο, ευσταθές σύστημα. Βέβαια, εκτός από απλές εντολές assembly, σχεδιάστηκαν πιο σύνθετοι αλγόριθμοι σε γλώσσα C για την εξακρίβωση της αξιοπιστίας του συστήματος σε μια πληθώρα πρακτικών προβλημάτων Χρήση του μοντέλου Το Simulink διευκολύνει σε μεγάλο βαθμό τη διαδικασία της προσομοίωσης. Αρχικά, επιλέγουμε τα στοιχεία του πυρήνα που θέλουμε να παρακολουθούμε, όπως για παράδειγμα τα περιεχόμενα των καταχωρητών και της μνήμης δεδομένων. Παράλληλα, επιλέγουμε την είσοδο του συστήματος. Το μοντέλο διαβάζει το αρχείο των εντολών και το αποθηκεύει στη μνήμη προγράμματος.

78 76 Κεφάλαιο 6: Χρήση του προσομοιωτή και αποτελέσματα Εικόνα 6.1 Εισαγωγή του αρχείου εντολών στο μοντέλο. Εικόνα 6.2 Εξαγωγή δεδομένων στο Workspace. Subsystem dumpreg Εικόνα 6.3 Εξαγωγή δεδομένων στο Workspace. Block To Workspace Ανάλογα με τον τύπο του αρχείου, μπορούμε να φορτώσουμε το αρχείο εντολών στη μεταβλητή hexfile, την οποία και διαβάζει το μοντέλο. Χρησιμοποιούμε μία από τις παρακάτω εντολές. hexfile = loadasm ( hex.txt ); hexfile = loadbin ( hex.out ); Στη συνέχεια εκτελούμε την προσομοίωση, είτε με το Run του Simulink, είτε με την εντολή SimOut = sim ( model.mdl );

79 6.2 Χρήση του μοντέλου 77 Εικόνα 6.4 Φόρτωση εκτελέσιμου αρχείου και εντολή για προσομοίωση. Η προσομοίωση τερματίζει, είτε με το Stop του Simulink, είτε με εντολή break μέσα στον κώδικα assembly. Όπως αναφέρθηκε, το αρχείο εντολών μπορεί να φορτωθεί με δύο διαφορετικές εντολές. Στην περίπτωση που η λίστα εντολών προέρχεται από αρχείο κειμένου, χρησιμοποιείται η εντολή hexfile = loadasm ( hex.txt ). Όπως θα δούμε στη συνέχεια, ο assembler του MARS δίνει τις εντολές σε αρχείο κειμένου, οπότε είναι χρήσιμο να μπορούμε να διαβάσουμε τις εντολές με αυτό τον τρόπο. Στη συνέχεια παρατίθεται ο κώδικας MATLAB της συνάρτησης loadasm. function hexfile = loadasm (a) h = fopen(a,'r'); nextline = ''; str=''; while ischar(nextline) nextline = fgetl(h); if ischar(nextline) str = [str;nextline]; hexfile = zeros(400,1,'uint32'); for i=1:(size(str,1)) hexfile(i)=hex2dec(str(i,:)); Στην περίπτωση που η λίστα εντολών προέρχεται από δυαδικό (binary) αρχείο, χρησιμοποιείται η εντολή hexfile = loadbin ( hex.out ). Ένας gcc crosscompiler για MIPS δίνει ως έξοδο τις εντολές σε εκτελέσιμα αρχεία.out και αυτά πρέπει να διαβάσουμε πριν την προσομοίωση. Στη συνέχεια, παρατίθεται ο κώδικας MATLAB της συνάρτησης loadbin. function hexfile = loadbin (a) fid = fopen(a,'r'); hexfile = fread(fid,'*uint32','b'); fclose(fid);

80 78 Κεφάλαιο 6: Χρήση του προσομοιωτή και αποτελέσματα Τέλος, αξίζει να αναφερθούμε στις επιλογές που υπάρχουν για την παρακολούθηση των σημάτων του πυρήνα. Για την έξοδο των δεδομένων χρησιμοποιούμε το block To Workspace. Αφού επιλέξουμε ένα σημείο του κυκλώματος που θέλουμε να δούμε στην έξοδο, μπορούμε να επιλέξουμε αν θα κρατήσουμε μόνο την τελική τιμή στο τέλος της προσομοίωσης ή αν θα παρακολουθούμε όλες τις αλλαγές που έγιναν σε κάθε κύκλο. Έτσι, στις επιλογές του block To Workspace επιλέγουμε Limit data points to last να ισούται με inf ή 1. Εικόνα 6.5 Block Parameters: To Workspace

81 6.2 Χρήση του μοντέλου 79 Εικόνα 6.6 Αρχείο καταχωρητών σε κάθε κύκλο. Εικόνα 6.7 Αρχείο καταχωρητών στο τέλος της προσομοίωσης.

82 80 Κεφάλαιο 6: Χρήση του προσομοιωτή και αποτελέσματα 6.3 Σύνδεση με Compiler/Assembler Όπως αναφέρθηκε, εάν επιθυμούμε να γράψουμε κώδικα assembly χρησιμοποιούμε τον assembler του MARS. Θυμίζουμε ότι ο MARS είναι ένας προσομοιωτής MIPS γραμμένος σε Java και αναπτύχθηκε από το πανεπιστήμιο του Missouri. Ενσωματώνει text editor και assembler για MIPS, τους οποίους και χρησιμοποιούμε στη συγκεκριμένη εργασία για συγγραφή προγραμμάτων assembly και παραγωγή κώδικα μηχανής σε δεκαεξαδική μορφή. Στο παράδειγμα της επόμενης εικόνας φαίνεται η λειτουργία του assembler και πως παίρνουμε το αρχείο hex.txt που χρησιμοποιείται από το MATLAB στη συνάρτηση loadasm που σχεδιάσαμε. Εικόνα 6.8 text editor του MARS. Επιλογή για assemble.

83 6.3 Σύνδεση με Compiler/Assembler 81 Εικόνα 6.9 dump program memory to text file. Εάν θέλουμε να βρεθούμε ένα επίπεδο υψηλότερα και να χρησιμοποιήσουμε κώδικα C, η διαδικασία είναι αρκετά πιο σύνθετη. Για να μεταγλωττίσουμε κώδικα C και να τον εκτελέσουμε στον προσομοιωτή MIPS που σχεδιάσαμε, πρέπει να χρησιμοποιήσουμε έναν cross-compiler. Πρακτικά, ένας cross-compiler έχει τη δυνατότητα να παράγει εκτελέσιμο κώδικα για σύστημα διαφορετικό από αυτό που τρέχει ο ίδιος ο compiler. Για την εγκατάσταση του cross-compiler απαιτείται η εγκατάσταση και η διασύνδεση μια σειράς εργαλείων (toolchain) όπως gcc, gdb και binutils. Βέβαια, υπάρχουν και αρκετά pre-build toolchain σε εμπορικό αλλά και open-source λογισμικό. Στη σελίδα υπάρχουν όλα τα prebuild toolchain για gcc cross-compiler που προτείνει η MIPS Technologies.

84 82 Κεφάλαιο 6: Χρήση του προσομοιωτή και αποτελέσματα Για τη συγκεκριμένη εργασία επιλέχθηκε η υλοποίηση της Mentor Graphics Sourcery CodeBench Lite Edition for MIPS ELF για Windows και χρησιμοποιήθηκε το terminal του Cygwin για την εκτέλεση της διαδικασίας. Στη συνέχεια καταγράφουμε τις πιο χρήσιμες εντολές του compiler. mips-sde-elf-gcc S test.c: Compile only; do not assemble or link. Παράγει αρχείο κειμένου.s που περιέχει τον κώδικα assembly που παρήχθη από την μεταγλώττιση. mips-sde-elf-gcc c test.c: Compile and assemble, but do not link. Παράγει binary αρχείο μερικώς εκτελέσιμο, καθώς λείπουν οι πληροφορίες και ο κώδικας που προσθέτει ο linker. mips-sde-elf-gcc test.c: Compile, assemble and link. Παράγει το τελικό εκτελέσιμο αρχείο.out. mips-sde-elf-objdump d test.out: Disassemble. Παράγει τον κώδικα μηχανής σε δεκαεξαδική μορφή, μαζί με τις αντίστοιχες εντολές assembly. Εικόνα 6.10 Compile, assemble and link.

85 6.3 Σύνδεση με Compiler/Assembler 83 Εικόνα 6.11 Compile only; do not assemble or link. Εικόνα 6.12 Disassemble.

86 84 Κεφάλαιο 6: Χρήση του προσομοιωτή και αποτελέσματα Για την αυτοματοποίηση της διαδικασίας του ελέγχου και την εκτέλεση αρκετών προγραμμάτων C, σχεδιάστηκε ένα script στο terminal του cygwin, που μεταγλωττίζει αυτόματα μια λίστα αρχείων.c και καλεί ένα script MATLAB με την εντολή matlab -nodesktop -nosplash -r "runtests, quit" wait. Το script στο MATLAB συλλέγει τα αρχεία.out και για το καθένα εκτελεί την προσομοίωση. Κάθε πρόγραμμα C ελέγχεται αυτόματα. Η main επιστρέφει τον κωδικό 1001 για επιτυχή εκτέλεση και τον κωδικό 1000 για αποτυχία στην εκτέλεση, συγκρίνοντας το τελικό αποτέλεσμα με μια προεπιλεγμένη τιμή. Για παράδειγμα: res = fib (15); //fib (15) = 610 if (res == 610){ return 1001; }else{ return 1000; } Η τιμή που γίνεται return από την main βρίσκεται στο τέλος της προσομοίωσης στον καταχωρητή $2. Έτσι, το script καταγράφει μετά από κάθε προσομοίωση την τιμή του καταχωρητή $2, δηλαδή τον κωδικό που επέστρεψε η main. Τα αποτελέσματα μπορούν να καταγραφούν σε ένα αρχείο κειμένου μαζί με το όνομα του μοντέλου που χρησιμοποιήθηκε και την ημερομηνία της προσομοίωσης. Στη συνέχεια, το αρχείο κειμένου προβάλλεται στο terminal, ώστε να ξέρουμε ποια αρχεία εκτελέστηκαν με επιτυχία και ποια όχι ή απλώς παρατηρούμε τα αποτελέσματα στην κονσόλα του MATLAB. Παρακάτω, καταγράφεται ο κώδικας των δύο script και ένα τυπικό αρχείο αποτελεσμάτων. Πρέπει να σημειώσουμε, ότι το shell script, επειδή τροποποιείται σε περιβάλλον Windows, πιθανώς πριν την εκτέλεση να πρέπει να περάσει από την εντολή dos2unix, ώστε να αλλάξει το format του κειμένου. runtests.m % Simple script to run all.out in a directory % Display PASS or FAIL deping on the return code in R2 clear modelname = 'SimuMIPS.mdl'; testdir = 'test/c/'; passfail char(x*'pass' + (1-x)*'FAIL'); binfile = dir([testdir '*.out']); datetime = datestr(clock); fid = 1; % fopen('res.txt','w'); fprintf(fid,'\n%s \n', datetime);

87 6.4 Testing 85 fprintf(fid,'model: %s \n\n', modelname); for i = 1:length(binFile) S = [testdir binfile(i).name]; disp (['Simulating ' S '...']); hexfile = loadbin(s); SimOut = sim(modelname); fprintf(fid,'%s: \t%s \n', S,passFail(RegFile(2) == 1001)); if fid>1, fclose(fid); Makefile: # Compile for MIPS-ELF CC = mips-sde-elf-gcc SRC = $(wildcard *.c) OUT = $(patsubst %.c, %.out, $(SRC)) all: $(OUT) matlab -nodesktop -nosplash -r "runtests, quit" -wait #cat res.txt %.out: %.c $(CC) -o $@ $< Εικόνα 6.13 Εκτέλεση του makefile; Compile όλων των αρχείων σε ένα directory και κλήση του script runtests.m 6.4 Testing Από τα σημαντικότερα στάδια της ανάπτυξης του συστήματος ήταν η σχεδίαση δοκιμαστικών τεστ και αλγορίθμων για την επαλήθευση της σωστής λειτουργίας του προσομοιωτή και την ανίχνευση πιθανών σφαλμάτων. Οι αλγόριθμοι αυτοί υλοποιήθηκαν σε assembly και εξετάζουν το σύνολο των εντολών που σχεδιάστηκαν και συνδυασμούς

88 86 Κεφάλαιο 6: Χρήση του προσομοιωτή και αποτελέσματα εντολών για την επαλήθευση της επιτυχούς προώθησης δεδομένων κατά τη διαδικασία της διοχέτευσης. Με αυτά τα τεστ επιδιώκουμε να ανιχνεύσουμε σφάλματα λειτουργίας και σχεδίασης, ώστε στη συνέχεια να τα διορθώσουμε, προτού εκτελέσουμε πιο σύνθετους αλγορίθμους. Για αυτό το λόγο είναι σημαντικό να παρακολουθούμε τα σήματα υπό εξέταση σε κάθε κύκλο, ώστε να ελέγξουμε τη συμπεριφορά του συστήματος κάθε στιγμή. Πιο αναλυτικά, τα προγράμματα ελέγχου σε assembly χωρίζονται σε: Έλεγχος συνόλου εντολών αριθμητικές εντολές, λογικές εντολές, εντολές μεταφοράς δεδομένων, εντολές ολίσθησης, εντολές ελέγχου και μεταφοράς δεδομένων υπό συνθήκη, εντολές πολλαπλασιασμού, διαίρεσης και προσπέλαση του accumulator, διακλαδώσεις και άλματα. Έλεγχος συνδυασμού εντολών αριθμητικές εντολές και εντολές μεταφοράς, αριθμητικές εντολές και διακλαδώσεις, εντολές μεταφοράς και διακλαδώσεις. Είναι σημαντικό ότι οι αριθμητικές εντολές μπορούν να υποκαταστήσουν λογικές εντολές, εντολές ολίσθησης, εντολές πολλαπλασιασμού και εντολές μεταφοράς υπό συνθήκη, λόγο της ομοιομορφίας που υπάρχει στις εντολές τύπου R και I. Εκτός από τα προγράμματα σε assembly είναι χρήσιμο να γίνουν τεστ και να εκτελεστούν αλγόριθμοι που αφορούν πιο πρακτικά προβλήματα σε γλώσσα C. Έτσι, οργανώθηκε μια συλλογή απλών προγραμμάτων σε C, που ελέγχουν τις βασικές δομές μιας γλώσσας υψηλού επιπέδου. Πιο συγκεκριμένα, εξετάζονται περιπτώσεις: δομών επανάληψης, δομών ελέγχου, κλήση συναρτήσεων, αναδρομικές συναρτήσεις,

89 6.4 Testing 87 χρήση static και global μεταβλητών, χρήση πινάκων και pointer, συνδυασμοί όλων των παραπάνω. Σε αυτό το σημείο, καταγράφουμε τη λίστα προγραμμάτων C που εκτελέστηκαν με επιτυχία από τον προσομοιωτή: c1. Addition of n numbers by recursion & without using recursion c2. LCM (least common multiple) of two numbers by recursion and without recursion c3. Determinant of a matrix using recursion c4. Largest element of an array by recursion and without recursion c5. Check if a number is prime number or not by recursion c6. Convert decimal number to binary number by recursion c7. Fibonacci series using recursion c8. Factorial using recursion c9. GCD of a number using recursion c10. Sum of digits in c using recursion c11. Power of a number using recursion c12. Binary search using recursion c13. Reverse the digits of a number c14. Generic root c15. ncr value using recursive factorial c16. Swapping two arrays c17. Armstrong numbers from 1 to 500 c18. Prime numbers between 1 to 100 c19. Matrix addition c20. Matrix multiplication c21. Sum of diagonal elements of a matrix c22. Transpose of a matrix c23. Quick sort c24. Merge sort c25. Selection sort c26. Bubble sort c27. Shell sort

90 88 Κεφάλαιο 6: Χρήση του προσομοιωτή και αποτελέσματα c28. Cocktail sort c29. Heap sort c30. Gnome sort c31. Linear search c32. Interpolation search c33. The integer Knapsack problem c34. Travel Salesman problem Παρόλη την επιτυχία στην εκτέλεση της πλειοψηφίας των προγραμμάτων, υπάρχουν ορισμένα σημεία που πρέπει να προσέξουμε κατά τη συγγραφή του κώδικα C. Καθώς το σύστημα δεν έχει αναπτυχθεί πλήρως, ακολουθούμε κάποιες παραδοχές, ώστε να μπορεί να εκτελείται με επιτυχία ο κώδικας, έως ότου διορθωθούν όλα τα σφάλματα και υλοποιηθεί ένας 100% ευσταθής πυρήνας. Αυτές οι παραδοχές αφορούν κυρίως στην ανάγνωση και εκτέλεση του header ενός εκτελέσιμου αρχείου.out. Στην υλοποίηση μας ξεκινάμε την ανάγνωση του αρχείου από την εντολή με διεύθυνση 0x C0, όπου ξεκινάει ο κώδικας της main. Έτσι, αν υπάρχουν δεδομένα στο πεδίο.data αγνοούνται τελείως, όπως αγνοούνται και όσες εντολές C βρίσκονται εκτός εμβέλειας main ή κάποιας συνάρτησης. Τέλος, θυμίζουμε, ότι το σύστημα υποστηρίζει μόνο ακεραίους, οπότε δεν θα λειτουργήσουν προγράμματα με float ή double μεταβλητές. Εικόνα 6.14 Αποτελέσματα εκτέλεσης

91 Παράρτημα A: Σχεδίαση στο Simulink και κώδικας MATLAB 89 A.1 Τελική σχεδίαση Εικόνα A.1 Τελικό μοντέλο του πυρήνα MIPS στο Simulink

92 90 Παράρτημα A: Σχεδίαση στο Simulink και κώδικας MATLAB A.2 Instruction Fetch (IF) Εικόνα A.3 Program Counter (PC) Εικόνα A.4 Instruction Memory (IM) Εικόνα A.2 Στάδιο Instruction Fetch (IF) Εικόνα A.5 Hazard Detection Unit (HDU)

93 91 Program Counter function PC = PC(pcWrite, pcin) %#codegen persistent pc0 if (isempty(pc0)) pc0 = hex2dec('400000'); else pc0 = pcin; if (pcwrite == 1) pc0 = pc0-4; PC = pc0; function out = adder(in) %#codegen out = in + 4; function out = mux3(cs, in0, in1) %#codegen if(cs==0) out=in0; else out=in1; Instruction Memory function instruct = instrmem(pc, hexfile) %#codegen persistent instructions if (isempty(instructions)) instructions = hexfile; pc = ( pc-hex2dec('400000') )/4 + 1; if (pc>176) instruct = instructions(pc); else instruct = uint32(0); Hazard Detection Unit function [CUnop, IFIDWrite, PCWrite] = hazarddetection(id_memread, IF_Rs, IF_Rt, ID_Rt, IF_Op, PCcs) %#codegen

94 92 Παράρτημα A: Σχεδίαση στο Simulink και κώδικας MATLAB if ( (ID_MemRead==1) && ((ID_Rt==IF_Rs) (ID_Rt==IF_Rt)) ) PCWrite = 1; IFIDWrite = 1; CUnop = 1; else PCWrite = 0; IFIDWrite = 0; CUnop = 0; if(if_op==43 && PCcs==1) PCWrite = 1; IFIDWrite = 1; CUnop = 1; A.3 Καταχωρητής διοχέτευσης IF/ID Εικόνα A.6 Καταχωρητής διοχέτευσης IF/ID

95 93 IF/ID function out = br0(instr) %#codegen if (instr==13) out=1; else out=0; function out = cs0(cs, in) %#codegen if (cs==1) out=0; else out=in; A.4 Instruction Decode (ID) Εικόνα A.8 Control Unit (CU) Εικόνα A.9 Register File (RegFile) Εικόνα A.7 Στάδιο Instruction Decode (ID)

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΟΡΓΑΝΩΣΗ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Ι Γ. Τσιατούχας 2 ο Κεφάλαιο ιάρθρωση 1. Οργάνωση της 2. εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I MIPS Η MIPS (Microprocessor without Interlocked Pipeline Stages) είναι μία αρχιτεκτονική συνόλου εντολών (ISA) γλώσσας μηχανής που αναπτύχθηκε από την εταιρεία

Διαβάστε περισσότερα

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ.

Διαβάστε περισσότερα

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 5 Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου Ενδέκατη (11 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από το

Διαβάστε περισσότερα

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή

Διαβάστε περισσότερα

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

Διαβάστε περισσότερα

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

Διαβάστε περισσότερα

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing) ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 2 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing) Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Καθυστερήσεις και Εκκενώσεις Εντολών

Διαβάστε περισσότερα

Διάλεξη 12 Καθυστερήσεις (Stalls)

Διάλεξη 12 Καθυστερήσεις (Stalls) ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 12 Καθυστερήσεις (Stalls) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ 1 Καθυστερήσεις και Εκκενώσεις Εντολών Οι κίνδυνοι δεδομένων (data

Διαβάστε περισσότερα

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Σχεδίαση datapath Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) R Type Εντολές αναφοράς στη μνήμη (lw,

Διαβάστε περισσότερα

Τεχνολογίες ημιαγωγών. Chapter 2 Instructions: Language of the Computer 1

Τεχνολογίες ημιαγωγών. Chapter 2 Instructions: Language of the Computer 1 Τεχνολογίες ημιαγωγών Chapter 2 Instructions: Language of the Computer 1 Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή Διαφάνειες

Διαβάστε περισσότερα

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση Αρης Ευθυμίου Απόδοση απλής υλοποίησης Υλοποίηση ενός κύκλου είναι πολύ αργή κάθε κύκλος είναι τόσο μεγάλος όσο χρειάζεται

Διαβάστε περισσότερα

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή 1 Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή μνήμη(cache). Η cache είναι πολύ σημαντική, πολύ γρήγορη,

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών Ενότητα 3: Χειρισμός δεδομένων, 2ΔΩ Τμήμα: Αγροτικής Οικονομίας & Ανάπτυξης Διδάσκων: Θεόδωρος Τσιλιγκιρίδης Μαθησιακοί Στόχοι Η Ενότητα 3 διαπραγματεύεται θέματα

Διαβάστε περισσότερα

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath O επεξεργαστής: Η δίοδος δεδοµένων (path) και η µονάδα ελέγχου (control) Σχεδίαση path 4 κατηγορίες εντολών: Αριθµητικές-λογικές εντολές (add, sub, slt κλπ) R Type Εντολές αναφοράς στη µνήµη (lw, sw) I

Διαβάστε περισσότερα

Κεντρική Μονάδα Επεξεργασίας

Κεντρική Μονάδα Επεξεργασίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κεντρική Μονάδα Επεξεργασίας (Σχεδιασμός και λειτουργία μιας απλής ΚΜΕ) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης

Διαβάστε περισσότερα

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Συστήματα σε Ολοκληρωμένα Κυκλώματα Συστήματα σε Ολοκληρωμένα Κυκλώματα Κεφάλαιο 4: Αρχιτεκτονική των Embedded Μικροεπεξεργαστών Διδάσκων: Καθηγητής Οδυσσέας Κουφοπαύλου Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών ΕΙΣΑΓΩΓΗ Παρουσιάζεται

Διαβάστε περισσότερα

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

Διαβάστε περισσότερα

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Σχεδίαση datapath Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) R Type Εντολές αναφοράς στη μνήμη (lw,

Διαβάστε περισσότερα

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη. Chapter 5 Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου Ενδέκατη (11 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης,

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Α Γενικού Λυκείου Κεφάλαιο 1 1.1 Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Ιδιαίτερη θέση έχουν οι Υπολογιστικές συσκευές. Μηχανισμός

Διαβάστε περισσότερα

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους; Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Δομή Εντολών και Παραδείγματα) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική

Διαβάστε περισσότερα

Αρχιτεκτονικη υπολογιστων

Αρχιτεκτονικη υπολογιστων ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονικη υπολογιστων Τζαγκαράκης Χαράλαμπος hatzagarak@cs.teicrete.gr Εισαγωγη: ο επεξεργαστης και η γλωσσα του Eπεξεργαστής: MIPS Microprocessor Without Interlocked

Διαβάστε περισσότερα

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας Κεφάλαιο 3 ο Αρχιτεκτονική Υπολογιστών Μάθημα 3.: Κεντρική Μονάδα Επεξεργασίας Όταν ολοκληρώσεις το κεφάλαιο θα μπορείς: Να σχεδιάζεις την εσωτερική δομή της ΚΜΕ και να εξηγείς τη λειτουργία των επιμέρους

Διαβάστε περισσότερα

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης Αρχιτεκτονική Υπολογιστών 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: 2014-2015 Νεκ. Κοζύρης nkoziris@cslab.ece.ntua.gr Single Cycle Datapath http://www.cslab.ece.ntua.gr/courses/comparch/ Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 2. Εντολές : Η γλώσσα του υπολογιστή

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 2. Εντολές : Η γλώσσα του υπολογιστή Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή Δεύτερη (2 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο

Διαβάστε περισσότερα

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Τι εννοούμε με τον όρο υπολογιστικό σύστημα και τι με τον όρο μικροϋπολογιστικό σύστημα; Υπολογιστικό

Διαβάστε περισσότερα

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Σύγχρονες Αρχιτεκτονικές Υπολογιστών ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ Σύγχρονες Αρχιτεκτονικές Υπολογιστών ΑΚΑ ΗΜΑΪΚΟ ΕΤΟΣ 2014-2015 Αρχιτεκτονική Συνόλου Εντολών (Instruction Set Architecture-ISA) 1 Ένας υπολογιστής

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:

Διαβάστε περισσότερα

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

Διαβάστε περισσότερα

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες! Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κεντρική Επεξεργασίας (Σχεδιασμός και λειτουργία μιας απλής ΚΜΕ) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Η υπολογιστική

Διαβάστε περισσότερα

Multi Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Multi Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης Αρχιτεκτονική Υπολογιστών 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: 2014-2015 Νεκ. Κοζύρης nkoziris@cslab.ece.ntua.gr Multi Cycle Datapath http://www.cslab.ece.ntua.gr/courses/comparch/ Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual MILE Simulator Version 1.0 User's Manual Νοέμβριος, 2011 Περιεχόμενα 1. Εισαγωγή στον προσομοιωτή...2 1.1 Εγκατάσταση...2 1.2 Βοήθεια Διευκρινήσεις...2 2. Ξεκινώντας με τον προσομοιωτή...3 2.1 Το memory

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής) ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α Γενικού Λυκείου (Μάθημα Επιλογής) Σύγχρονα Υπολογιστικά Συστήματα τους υπερυπολογιστές (supercomputers) που χρησιμοποιούν ερευνητικά εργαστήρια τα μεγάλα συστήματα (mainframes)

Διαβάστε περισσότερα

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Λογιστικής Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Μάθημα 8 Κεντρική Μονάδα Επεξεργασίας και Μνήμη 1 Αρχιτεκτονική του Ηλεκτρονικού Υπολογιστή Μονάδες Εισόδου Κεντρική

Διαβάστε περισσότερα

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Οργάνωση Υπολογιστών (Ι) (η κεντρική μονάδα επεξεργασίας) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Ένα

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών (Ι)

Οργάνωση Υπολογιστών (Ι) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Οργάνωση Υπολογιστών (Ι) (η κεντρική μονάδα επεξεργασίας) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Ένα

Διαβάστε περισσότερα

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 6-7 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας 4.1 Γενικά Ο υπολογιστής επεξεργάζεται δεδομένα ακολουθώντας βήμα βήμα, τις εντολές ενός προγράμματος. Το τμήμα του υπολογιστή, που εκτελεί τις εντολές και συντονίζει

Διαβάστε περισσότερα

Αρχιτεκτονικές Συνόλου Εντολών

Αρχιτεκτονικές Συνόλου Εντολών Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Αρχιτεκτονικές Συνόλου Εντολών (Instruction Set Architectures - ISA) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Ο

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232) ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232) Δευτέρα, 3 Νοεμβρίου 25 ΔΙΑΡΚΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ 3 ΛΕΠΤΑ Για πλήρη

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις

Διαβάστε περισσότερα

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

Διαβάστε περισσότερα

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Δομή Εντολών και Παραδείγματα) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική

Διαβάστε περισσότερα

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης! Single-cyle υλοποίηση: Διάρκεια κύκλου ίση με τη μεγαλύτερη εντολή-worst case delay (εδώ η lw) = χαμηλή απόδοση! Αντιβαίνει με αρχή: Κάνε την πιο απλή περίπτωση γρήγορη (ίσως και εις βάρος των πιο «σύνθετων»

Διαβάστε περισσότερα

Χρήση του Simulation Interface Toolkit για την Εξομοίωση και Πειραματισμό Συστημάτων Αυτομάτου Ελέγχου

Χρήση του Simulation Interface Toolkit για την Εξομοίωση και Πειραματισμό Συστημάτων Αυτομάτου Ελέγχου Χρήση του Simulation Interface Toolkit για την Εξομοίωση και Πειραματισμό Συστημάτων Αυτομάτου Ελέγχου Γ. Νικολακόπουλος, Μ. Κουνδουράκης, Α. Τζες και Γ. Γεωργούλας Πανεπιστήμιο Πατρών Τμήμα Ηλεκτρολόγων

Διαβάστε περισσότερα

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 2 ο Σύνολα Εντολών Οι εντολές που εκτελεί ο κάθε επεξεργαστής (ή οικογένεια επεξεργαστών) MIPS ARM SPARC PowerPC IA-32 Αρχιτεκτονικές συνόλου εντολών Βασικές Έννοιες Εντολές μηχανής

Διαβάστε περισσότερα

Chapter 6 Αύξηση της απόδοσης με διοχέτευση (pipeline)

Chapter 6 Αύξηση της απόδοσης με διοχέτευση (pipeline) Chapter 6 Αύξηση της απόδοσης με διοχέτευση (pipeline) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης, Τμήματος Ηλεκτρονικών Μηχανικών

Διαβάστε περισσότερα

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή Τρίτη (3 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο

Διαβάστε περισσότερα

*Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους.

*Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους. Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους. *Τα φυσικά μέρη που μπορούμε να δούμε και να αγγίξουμε ονομάζονται συνολικά υλικό (hardware). * * υπερυπολογιστές

Διαβάστε περισσότερα

Παραλληλισµός Εντολών (Pipelining)

Παραλληλισµός Εντολών (Pipelining) ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Παραλληλισµός Εντολών (Pipelining) Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapter 3: Section 3.4,

Διαβάστε περισσότερα

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό

Διαβάστε περισσότερα

Υλοποίηση Mικροεπεξεργαστή MIPS -16

Υλοποίηση Mικροεπεξεργαστή MIPS -16 Υλοποίηση Mικροεπεξεργαστή MIPS -16 Διάδρομος Δεδομένων και Μονάδα Ελέγχου 1 Περίληψη Μνήμη RAM Εκτέλεση εντολών με πολλαπλούς κύκλους Σχεδιασμός Διαδρόμου Δεδομένων (Data Path) Καταχωρητής Εντολών (Instruction

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών Εισαγωγή Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Architecture and Engineering, K. Asanovic, CS1/2-52,

Διαβάστε περισσότερα

30 min κάθε «φάση» Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 1. Πλυντήριο. 2. Στεγνωτήριο. 3. ίπλωµα. 4. αποθήκευση. προσέγγιση για 4.

30 min κάθε «φάση» Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 1. Πλυντήριο. 2. Στεγνωτήριο. 3. ίπλωµα. 4. αποθήκευση. προσέγγιση για 4. Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή Time 6 PM 7 8 9 10 11 12 1 2 AM 1. Πλυντήριο 2. Στεγνωτήριο 3. ίπλωµα 4. αποθήκευση Task order A B C D Σειριακή προσέγγιση για 4 φορτία =8h 30 min κάθε «φάση»

Διαβάστε περισσότερα

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Ταχύτητα εκτέλεσης Χρόνος εκτέλεσης = (αριθμός εντολών που εκτελούνται) Τί έχει σημασία: Χ (χρόνος εκτέλεσης εντολής) Αριθμός

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ ΜΑΘΗΜΑ 3 ο ΛΕΙΤΟΥΡΓΙΚΗ ΔΟΜΗ ΥΠΟΛΟΓΙΣΤΗ ΒΑΣΙΚΗ ΜΟΝΑΔΑ ΜΝΗΜΗ & CPU Λειτουργική Δομή Αρχιτεκτονική Von Neumann Όλοι οι υπολογιστές ακολουθούν την αρχιτεκτονική κατά Von-Neumann

Διαβάστε περισσότερα

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 9 Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Ti είναι Αρχιτεκτονική και τι Μικροαρχιτεκτονική

Διαβάστε περισσότερα

Τέτοιες λειτουργίες γίνονται διαμέσου του

Τέτοιες λειτουργίες γίνονται διαμέσου του Για κάθε εντολή υπάρχουν δυο βήματα που πρέπει να γίνουν: Προσκόμιση της εντολής (fetch) από τη θέση που δείχνει ο PC Ανάγνωση των περιεχομένων ενός ή δύο καταχωρητών Τέτοιες λειτουργίες γίνονται διαμέσου

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 11-12 : Δομή και Λειτουργία της CPU Ευάγγελος Καρβούνης Παρασκευή, 22/01/2016 2 Οργάνωση της CPU Η CPU πρέπει:

Διαβάστε περισσότερα

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2017-18 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Αρχιτεκτονική x86-64) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική

Διαβάστε περισσότερα

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2017-18 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Αρχιτεκτονική x86-64) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 3 : Μια άποψη του κορυφαίου επιπέδου λειτουργίας και διασύνδεσης του υπολογιστή Καρβούνης Ευάγγελος Η έννοια

Διαβάστε περισσότερα

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα; Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Αρχιτεκτονικές Συνόλου Εντολών (Instruction Set Architectures - ISA) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Τι

Διαβάστε περισσότερα

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

Διαβάστε περισσότερα

ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας

ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Βελτιστοποίηση κώδικα σε επεξεργαστές ΨΕΣ Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kehtarnavaz [2005]: Chapter

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΑΝΤΩΝΗΣ ΠΑΣΧΑΛΗΣ

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΑΝΤΩΝΗΣ ΠΑΣΧΑΛΗΣ ΕΘΝΙΚΟΝ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟΝ ΠΑΝΕΠΙΣΤΗΜΙΟΝ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΥΛΙΚΟ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΠΣ Πληροφορικής και Τηλεπικοινωνιών, E Εξάμηνο

Διαβάστε περισσότερα

Εισαγωγή Συμβόλαιο Μαθήματος

Εισαγωγή Συμβόλαιο Μαθήματος ΗΜΥ 212 Οργάνωση Υπολογιστών και Μικροεπεξεγραστές Εαρινό Εξάμηνο 2007 Συμβόλαιο Μαθήματος 1 Γενικές Πληροφορίες Διαλέξεις: Διδάσκων: Βοηθός Μαθήματος: Δευτέρα και Πέμπτη, 16:30 18:00 μ.μ. Πανεπιστημιούπολη,

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών. ηµήτρης Γκιζόπουλος Καθηγητής

Αρχιτεκτονική Υπολογιστών. ηµήτρης Γκιζόπουλος Καθηγητής Αρχιτεκτονική Υπολογιστών ΙI ηµήτρης Γκιζόπουλος Καθηγητής Γενικά ηµήτρης Γκιζόπουλος, Καθηγητής http://www.di.uoa.gr/~dgizop γραφείο Α32 ιδασκαλία στο αµφιθέατρο Α2 ευτέρα 11 00 13 00 Πέµπτη 13 00 15

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα 4o Εργαστήριο Σ.Α.Ε Ενότητα : Μελέτη και Σχεδίαση Σ.Α.Ε Με χρήση του MATLAB Aναστασία Βελώνη Τμήμα Η.Υ.Σ Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

Αρχιτεκτονικές Υπολογιστών

Αρχιτεκτονικές Υπολογιστών ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΥΠΟΛΟΓΙΣΤΩΝ Μάθηµα: Αρχιτεκτονικές Υπολογιστών Βασικά Συστατικά ενός Υπολογιστικού Συστήµατος ( οµή Οργάνωση) ιδάσκων:αναπλ.καθ. Κ. Λαµπρινουδάκης clam@unipi.gr Αρχιτεκτονικές Υπολογιστών

Διαβάστε περισσότερα

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Πληροφορική Ι Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ Δρ. Γκόγκος Χρήστος Εκτέλεση προγραμμάτων Πρόγραμμα: Ένα σύνολο από εντολές.

Διαβάστε περισσότερα

Διάλεξη 11 Προώθηση (Forwarding)

Διάλεξη 11 Προώθηση (Forwarding) ΗΥ 3 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη Προώθηση (Forwarding) Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων (HY3) Η μέχρι τώρα μικρο-αρχιτεκτονική του MIPS ID/EX PCSrc Control WB

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 7: Αποκωδικοποίηση Εντολής x86 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI. Μανόλης Γ.Η. Κατεβαίνης

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI. Μανόλης Γ.Η. Κατεβαίνης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Οργάνωση Υπολογιστών Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI Μανόλης Γ.Η. Κατεβαίνης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

Κεφάλαιο 4. Ο επεξεργαστής. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση

Κεφάλαιο 4. Ο επεξεργαστής. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση Κεφάλαιο 4 Ο επεξεργαστής ιαφάνειες διδασκαλίας του πρωτότυπου βιβλίου µεταφρασµένες στα ελληνικά και εµπλουτισµένες (µετάφραση,

Διαβάστε περισσότερα

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος ΕΣ 08 Επεξεργαστές Ψηφιακών Σημάτων Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος Κλήμης Νταλιάνης Λέκτορας Π.Δ.407/80 Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου Αρχιτεκτονική

Διαβάστε περισσότερα

Μικροαρχιτεκτονική του LC3

Μικροαρχιτεκτονική του LC3 ΆδειαΧρήσης Τοπαρόνεκπαιδευτικόυλικόυπόκειταισε άδειεςχρήσηςcrea vecommons. Γιαεκπαιδευτικόυλικό,όπωςεικόνες,που υπόκειταισεάδειαχρήσηςάλλουτύπου, αυτήπρέπεινααναφέρεταιρητώς. Μικροαρχιτεκτονική του LC3

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ 1.1 ΕΙΣΑΓΩΓΙΚΗ ΑΝΑΦΟΡΑ ΣΤΑ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ 1 1.1.1 Σήματα ψηφιακών συστημάτων 1 1.1.2 Παράλληλη και σειριακή μεταφορά πληροφορίας 2 1.1.3 Λογική τριών

Διαβάστε περισσότερα

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Μαθηµα 2 ηµήτρης Λιούπης 1 Intel SA-1110 µc StrongARM core. System-on-Chip. Εξέλιξη των SA-110 και SA-1100. 2 ARM cores ARM: IP (intellectual

Διαβάστε περισσότερα

Chapter 4 ( ή 1 στο βιβλίο σας)

Chapter 4 ( ή 1 στο βιβλίο σας) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 4 ( ή 1 στο βιβλίο σας) Αξιολόγηση και κατανόηση της απόδοσης Δέκατη (10 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από

Διαβάστε περισσότερα

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2018-2019 Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD ΗΥ220 - Βασίλης Παπαευσταθίου 1 Transistor: Δομική μονάδα κυκλωμάτων Τα ολοκληρωμένα κυκλώματα

Διαβάστε περισσότερα

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται

Διαβάστε περισσότερα

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ηλεκτρονική Υγεία Εργαστήριο 4 ο : MATLAB Αν. καθηγητής Αγγελίδης Παντελής e-mail: paggelidis@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες

Διαβάστε περισσότερα

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2017-2018 Ροή Σχεδίασης Κυκλωμάτων και Εργαλεία CAD ΗΥ220 - Γιώργος Καλοκαιρινός & Βασίλης Παπαευσταθίου 1 Transistor: Δομική μονάδα κυκλωμάτων Τα

Διαβάστε περισσότερα

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ II. χειμερινό εξάμηνο & εαρινό εξάμηνο (σε κίτρινο υπόβαθρο)

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ II. χειμερινό εξάμηνο & εαρινό εξάμηνο (σε κίτρινο υπόβαθρο) I χειμερινό εξάμηνο & ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ II εαρινό εξάμηνο (σε κίτρινο υπόβαθρο). Νικολός Καθηγητής ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στην ομή, Οργάνωση, Λειτουργία και Αξιολόγηση Υπολογιστών Ενότητα 1.1 Υλικό

Διαβάστε περισσότερα

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Διακλαδώσεις. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Διακλαδώσεις. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 13 Διακλαδώσεις Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Η μέχρι τώρα μικρο-αρχιτεκτονική (Eντολές Διακλάδωσης) Η μικρο-αρχιτεκτονική

Διαβάστε περισσότερα

Βασικές Σχεδίασης Υπολογιστών Αριθμητική Μονάδα Επεξεργασίας Κεφάλαιο 10

Βασικές Σχεδίασης Υπολογιστών Αριθμητική Μονάδα Επεξεργασίας Κεφάλαιο 10 Βασικές Σχεδίασης Υπολογιστών Αριθμητική Μονάδα Επεξεργασίας Κεφάλαιο 10 Chapter 10 Part 1 1 Περιεχόμενο Εισαγωγή Παράδειγμα Διαδρομής Δεδομένων Αριθμητική Λογική Μονάδα (Arithmetic Logic Uit - ALU) Μονάδα

Διαβάστε περισσότερα

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Διοχέτευση

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Διοχέτευση Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Διοχέτευση Αρης Ευθυμίου Το σημερινό μάθημα Υπόβαθρο: Διοχέτευση (Pipelining) Βασική οργάνωση Δομικοί κίνδυνοι Κίνδυνοι δεδομένων (hazards): RAW, WAR, WAW Stall

Διαβάστε περισσότερα

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXANIKO MHXANIK I O I Η/ Η Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Γ. Τσιατούχας ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXANIKO MHXANIK I O I Η/ Η Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Γ. Τσιατούχας ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXNIKOI Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Γ. Τσιατούχας ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ Εκτέλεση Προγραµµάτων 1. Ο υπολογιστής εκτελεί λίπρογράµµατα που συνθέτονται από εντολές

Διαβάστε περισσότερα

Pipeline: Ένα παράδειγμα από.τη καθημερινή ζωή. 30 min κάθε «φάση»

Pipeline: Ένα παράδειγμα από.τη καθημερινή ζωή. 30 min κάθε «φάση» Pipeline: Ένα παράδειγμα από.τη καθημερινή ζωή 1. Πλυντήριο 2. Στεγνωτήριο 3. Δίπλωμα 4. αποθήκευση Σειριακή προσέγγιση για 4 φορτία = 8h 30 min κάθε «φάση» Pipelined προσέγγιση για 4 φορτία = 3.5h Το

Διαβάστε περισσότερα

Εφαρμογές μικροελεγκτών

Εφαρμογές μικροελεγκτών Μικροελεγκτές Έναν ορισμό που θα μπορούσαμε να δώσουμε για τους μικροελεγκτές είναι ο εξής: Μικροελεγκτής είναι ένα προγραμματιζόμενο ολοκληρωμένο κύκλωμα το οποίο διαθέτει επεξεργαστή, μνήμη, διάφορα

Διαβάστε περισσότερα

KOIOS SUMMER INTERNSHIP NETWORKS ON CHIP (NoC)

KOIOS SUMMER INTERNSHIP NETWORKS ON CHIP (NoC) KOIOS SUMMER INTERNSHIP NETWORKS ON CHIP (NoC) ΑΝΔΡΕΑΣ ΠΡΟΔΡΟΜΟΥ prodromou.andreas@ucy.ac.cy ΚΑΘΗΓΗΤΕΣ: ΓΙΩΡΓΟΣ ΕΛΛΗΝΑΣ ΧΡΥΣΟΣΤΟΜΟΣ ΝΙΚΟΠΟΥΛΟΣ ΘΕΟΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Αρχικοί στόχοι Οι πρώτοι στόχοι ήταν:

Διαβάστε περισσότερα

Εντολές γλώσσας μηχανής

Εντολές γλώσσας μηχανής Εντολές γλώσσας μηχανής Στον υπολογιστή MIPS η εντολή πρόσθεσε τα περιεχόμενα των καταχωρητών 17 και 20 και τοποθέτησε το αποτέλεσμα στον καταχωρητή 9 έχει την μορφή: 00000010001101000100100000100000 Πεδία

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

Διαβάστε περισσότερα

"Σχεδίαση και Υλοποίηση Μονάδας Επεξεργασίας για Αριθμούς 8-bit με την Γλώσσα VHDL και το Λογισμικό Quartus II" ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Σχεδίαση και Υλοποίηση Μονάδας Επεξεργασίας για Αριθμούς 8-bit με την Γλώσσα VHDL και το Λογισμικό Quartus II ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ "Σχεδίαση και Υλοποίηση Μονάδας Επεξεργασίας για Αριθμούς 8-bit με την Γλώσσα VHDL και το Λογισμικό

Διαβάστε περισσότερα