ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Εξαιρέσεις και Διακοπές (Exceptions and Interrupts)

Σχετικά έγγραφα
Μετάφραση ενός Προγράμματος Εξαιρέσεις

ΗΜΥ 213. Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών week 5. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

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

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

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

ΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

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

Εικονική Μνήμη (Virtual Μemory)

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

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

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

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

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

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

Μάθημα 8: Διαχείριση Μνήμης

Εικονική Μνήμη (Virtual Μemory)

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

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

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

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

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

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

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

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

Λειτουργικά Συστήματα (ΗΥ321)

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

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

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

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

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

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

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

Διοχέτευση (Pipeline)

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

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

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

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

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

Παραλληλισμός σε επίπεδο εντολών

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

Διασυνδετικοί Δίαυλοι. Τι διασυνδέει ένας δίαυλος; Μεταφορά δεδομένων. Διασύνδεση Εισόδου-Εξόδου. Μ.Στεφανιδάκης

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

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

Ενεργοποίηση και ιαχείριση σηµάτων διακοπής

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

Chapter 3 Αριθμητική Υπολογιστών

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4

Εισαγωγή στην πληροφορική -4

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΟΡΓΑΝΩΣΗ Η/Υ

Διασύνδεση Εισόδου-Εξόδου

Περιγραφή και Έλεγχος ιεργασιών

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 4 Real Mode Interrupts

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

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

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

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

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

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

DIRECT MEMORY ACCESS - DMA

ΠΡΟΒΛΗΜΑ ΕΠΕΓΕΡΓΑΣΙΑ. (Είναι οι σκέψεις και οι πράξεις που κάνουμε για να λυθεί το πρόβλημα) ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ

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

Εισαγωγή στην Πληροφορική

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

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

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

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

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

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Αριθμητική Υπολογιστών (Κεφάλαιο 3)

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

ΛΟΓΙΣΜΙΚΟ (software)

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

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

2. Σκοποί και Λειτουργίες των ΛΣ. Λειτουργικά Συστήματα Η/Υ. Περίληψη. Ι. Προστασία Υλικού ΚΕΦΑΛΑΙΟ 2 - ΕΞΕΛΙΞΗ ΚΑΙ ΣΚΟΠΟΙ ΛΣ

Κεφάλαιο 4. Ο επεξεργαστής

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία Διάλεξη 9

ΚΕΦΑΛΑΙΟ 3: Λειτουργικά Συστήµατα

Transcript:

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 13 Εξαιρέσεις και Διακοπές (Exceptions and Interrupts) Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση και Σχεδίαση Υπoλογιστών (HY232) 1

Γιατί χρειάζονται interrupts σε ένα υπολογιστικό σύστημα; Τα μοντέρνα λειτουργικά συστήματα (Operating Systems, OS) χρονο-προγραμματίζουν (schedule) διεργασίες χρησιμοποιώντας pre-emption: Κάθε φορά που ένας υπολογιστής θέλει να τρέξει δύο προγράμματα Α και Β, το λειτουργικό σύστημα περιοδικά μεταφέρει τον έλεγχο από το ένα στο άλλο. Πιο συγκεκριμένα, το λειτουργικό: Σταματάει το πρόγραμμα Α Μεταφέρει τα δεδομένα των καταχωρητών στην κύρια μνήμη Μεταφέρει τα δεδομένα του Β από την κύρια μνήμη στους καταχωρητές Ξεκινάει τον πρόγραμμα Β Πως σταματάει ένα λειτουργικό σύστημα το πρόγραμμα Α; Απάντηση: Χρησιμοποιεί ένα interrupt. 2

Προγραμματισμός Ι/Ο, Interrupts, Exceptions (Διακοπές και Εξαιρέσεις) Οι περισσότερες αιτήσεις για I/O γίνονται από το λογισμικό για να γίνουν μεταφορές δεδομένων μεταξύ Ι/O περιφερειακών και της κύριας μνήμης Οι δύο πιο συνηθισμένοι τρόποι επικοινωνίας με εξωτερικές συσκευές είναι: Memory-mapped I/O Isolated I/O Οι πιο συνηθισμένοι μέθοδοι για να προγραμματίσουμε την μεταφορά δεδομένων μεταξύ κύριας μνήμης και I/O περιφερειακών: Interrupt-driven I/O Programmed I/O Η χρήση Interrupt-driven I/O δημιουργεί την ανάγκη να συζητήσουμε: Διακοπές (Interrupts) Εξαιρέσεις (Exceptions) 3

Επικοινωνία με περιφερειακές συσκευές Περιφερειακές συσκευές όπως το πληκτρολόγιο, ποντίκι, οθόνη, κάρτα δικτύου κλπ. θεωρούνται από τoν επεξεργαστή σαν μνήμες. Ο επεξεργαστής μπορεί να τις διαβάσει ή να γράψει σε αυτές όπως ακριβώς κάνει και σε οποιαδήποτε μνήμη Στο παράδειγμα, η κάρτα γραφικών μπορεί να προσπελαστεί μέσω των διευθύνσεων 3B0-3BB, 3C0-3DF και A0000-BFFFF. Αυτές οι διευθύνσεις μπορούν να προσπελαστούν με δύο τρόπους: Memory-mapped I/O Isolated I/O 4

Memory-mapped I/O Σύμφωνα με το μοντέλο memory-mapped I/O, ο χώρος διευθύνσεων της μνήμης διαιρείται σε 2 τμήματα: Ένα τμήμα που αναφέρεται στην φυσική κύρια μνήμη Ένα τμήμα που αναφέρεται σε περιφερειακές συσκευές. Για παράδειγμα, ο παλιός Apple IIe είχε 16-bit χώρο διευθύνσεων και μπορούσε να προσπελάσει 64 KB κύριας μνήμης. Οι διευθύνσεις C000-CFFF χρησιμοποιούνταν για να προσπελασθούν οι περιφερειακές συσκευές. Η διεύθυνση C010 αναφέρεται στο πληκτρολόγιο ενώ η C030 αναφέρεται στo ηχείο. Μερικές σε περιφερειακές συσκευές χρειάζονται πολλαπλές θέσεις μνήμης Memory I/O Memory FFFF D000 C000 0000 5

Προγραμματισμός memory-mapped I/O Control Address Data CPU Memory Hard disks CD-ROM Network Display Για να γράψει σε μια περιφερειακή συσκευή, η CPU στέλνει πρώτα την διεύθυνση που αντιστοιχεί στην συσκευή στον Δίαυλο Διευθύνσεων (Address Bus). Ταυτόχρονα, στέλνει και τα δεδομένα στο Δίαυλο Δεδομένων (Data Bus). Για παράδειγμα, για να γράψουμε 0xΑΒΑΒ στο ηχείο, η CPU θέτει Address Bus = 0xC030, Data Bus = 0xΑΒΑΒ Aπό την πλευρά της, κάθε περιφερειακή συσκευή παρακολουθεί το Address Bus για να διαπιστώσει εάν είναι ο παραλήπτης μιας προσπέλασης. Το ηχείο αποκρίνεται σε μια εγγραφή μόνο όταν η τιμή C030 εμφανίζεται στο Address Bus. 6

Isolated I/O Σε αντιδιαστολή με την προηγούμενη μέθοδο, το isolated I/O, υποστηρίζει διαφορετικούς χώρους διευθύνσεων για την κύρια μνήμη και τις περιφερειακές συσκευές. Ειδικές εντολές assembly χρησιμοποιούνται για την προσπέλαση αυτή. H αρχιτεκτονική 8086 έχει 32-bit χώρο διευθύνσεων: Η εντολή MOV χρησιμοποιείται για την προσπέλαση της κύριας μνήμης RAM. Οι ειδικές εντολές IN και OUT για την προσπέλαση ενός ξεχωριστού 64KB χώρου περιφερειακών συσκευών. Η διεύθυνση 0000FFFF μπορεί να αντιστοιχεί είτε στην κύρια μνήμη είτε σε κάποια περιφερειακή συσκευή Main memory I/O devices FFFFFFFF 00000000 0000FFFF 00000000 7

Μεταφορά Δεδομένων από Περιφερειακές Συσκευές με Polling O επεξεργαστής κάνει αίτηση για δεδομένα και περιμένει μέχρι η Not ready περιφερειακή συσκευή να είναι έτοιμη CPU waits να διαβάσει ή να γράψει τα δεδομένα for device Για μεταφορά μεγάλου όγκου δεδομένων, αυτή η διαδικασία πρέπει να επαναληφθεί πολλές φορές Αυτό δεν είναι και πολύ έξυπνη προσέγγιση Εάν η περιφερειακή συσκευή είναι αργή σε σχέση με τον επεξεργαστή, ο επεξεργαστής περιμένει πολύ ώρα. Ο επεξεργαστής μπλοκάρει περιμένοντας μην μπορώντας να κάνει τίποτε άλλο No CPU sends read request to device CPU reads word from device CPU writes word to main memory Done? Ready Yes 8

Polling Ο συνεχής έλεγχος για να ελέγξουμε εάν κάτι έχει λάβει χώρα ονομάζεται polling Δεν είναι ο καλύτερος τρόπος για να χρησιμοποιήσετε την CPU. H CPU μπλοκάρει σε ένα while (1) loop ελέγχοντας συνεχώς εάν η περιφερειακή συσκευή είναι έτοιμη να διαβάσει ή να στείλει δεδομένα. Σκεφτείτε να θέλατε να ελέγξετε εάν έχουν βγει ιατρικά αποτελέσματα από εξετάσεις που έχετε κάνει Me to polling θα παίρνατε τηλ. τον γιατρό κάθε 1-2 λεπτά. Μια καλύτερη ιδέα ήταν να σας τηλεφωνούσε ο γιατρός όταν τα αποτελέσματα ήταν έτοιμα Not ready CPU sends read request to device CPU waits for device Ready 9

Interrupt-driven I/O Χρησιμοποιώντας διακοπές (interrupts) λύνουμε το πρόβλημα τις μη-αποδοτικής χρήσης του επεξεργαστή Μετά την αίτηση σε μια συσκευή, ο επεξεργαστής μπορεί να συνεχίσει ελεύθερα με άλλες εργασίες. Η συσκευή διακόπτει τον επεξεργαστή όταν τα δεδομένα είναι έτοιμα. Η μεταφορά δεδομένων μπορεί να γίνει πάλι από τον επεξεργαστή memcpy() Μπορεί όμως να γίνει και με την χρήση DMA (Direct Memory Access) Υλικό αυτόματης μεταφοράς δεδομένων μεταξύ Ι/O και μνήμης No CPU sends read request to device CPU does other stuff... CPU receives interrupt CPU reads word from device CPU writes word to main memory Done? Yes 10

Διακοπές - Interrupts Οι διακοπές (Interrupts) είναι γεγονότα που συμβαίνουν εκτός του επεξεργαστή και χρειάζονται την προσοχή του. Περιφερειακές συσκευές που χρειάζονται να επικοινωνήσουν με τον επεξεργαστή δημιουργούν interrupts Timers (χρονομέτρες) είναι συσκευές που ειδοποιούν ότι έχει περάσει ένα συγκεκριμένο χρονικό διάστημα. Οι διακοπές είναι φυσιολογικές λειτουργίες του συστήματος Δεν είναι λάθη Όλες οι διακοπές είναι εξυπηρετήσιμες και η κανονική ροή του προγράμματος συνεχίζει μετά την εξυπηρέτηση της διακοπής Το λειτουργικό σύστημα είναι υπεύθυνο για την εξυπηρέτηση της διακοπής 11

Εξαιρέσεις (Exceptions) Oι εξαιρέσεις (exceptions) είναι συνήθως λάθη κατά την διάρκεια εκτέλεσης ενός προγράμματος από τον επεξεργαστή Ο επεξεργαστής προσπαθεί να εκτελέσει μια εντολή με μη-έγκυρο opcode. Overflow σε μια αριθμητική πράξη ή διαίρεση με το 0. Μια εντολή load ή store δεν μπορεί να ολοκληρωθεί γιατί η διεύθυνση που προσπαθεί να προσπελάσει δεν είναι στην μνήμη αλλά στον σκληρό δίσκο Εικονική μνήμη (virtual memory) Θα επανέλθουμε σε αυτό αργότερα. Υπάρχουν δύο πιθανοί τρόποι αντιμετώπισης των εξαιρέσεων Εάν το λάθος ΔΕΝ είναι επανορθώσιμο, το λειτουργικό σύστημα τερματίζει το πρόγραμμα. Εάν το λάθος είναι επανορθώσιμο το λειτουργικό σύστημα ή το ίδιο το πρόγραμμα μπορεί να διορθώσει την κατάσταση. 12

Παράδειγμα εξαίρεσης: Προσομοίωση εντολών (Instruction emulation) Πολλές φορές σύνολα εντολών επεκτείνονται με νέες εντολές Πχ. MMX, SSE, SSE2, για τις εντολές 80x86 της Intel Προγράμματα που χρησιμοποιούν αυτές τις νέες εντολές δεν μπορούν να εκτελεσθούν σε παλαιότερους επεξεργαστές Αυτό είναι μεγάλο πρόβλημα. Πρόβλημα forward compatibility. Ειδικό software προσομοίωσης εντολών χρησιμοποιείται για την εκτέλεση τέτοιων εντολών σε παλαιότερους επεξεργαστές. Kernel Decode inst in software; Perform its functionality Return from exception User Execute Application Illegal opcode exception Execute Application 13

Διακοπές και εξαιρέσεις στον ΜΙPS Σημαντικότεροι καταχωρητές του συνεπεξεργαστή 0: Register name Register # Usage $badvaddr 8 address at which erroneous memory reference occurred $status 12 interrupt enable and kernel/user bits $cause 13 exception type and pending interrupts $epc 14 address of instruction that caused exception (or that was executing when interrupt occurred) Εντολές μεταφοράς δεδομένων από και προς το συνεπεξεργαστή 0: mfc0 $s0,$epc $s0 = $epc mtc0 $s0,$epc $epc = $s0 lwc0 $epc,100($s1) $epc = Mem[$s1+100] swc0 $epc,100($s1) Mem[$s1+100] = $epc Εισαγωγή στους Η/Υ (HY134) 14

Διακοπές και εξαιρέσεις στον ΜΙPS Status register (6 hard - 2 soft) Cause register (6 hard - 2 soft) Εισαγωγή στους Η/Υ (HY134) 15

Διακοπές και εξαιρέσεις Διακόπτουν την κανονική ροή εκτέλεσης του προγράμματος και εκτελούν άλμα σε μια διαδικασία χειρισμού εξαίρεσης (exception handler), η οποία βρίσκεται στο χώρο του λειτουργικού συστήματος (kernel) και όχι στο χώρο του χρήστη (user) Βήματα που εκτελούνται από το hardware όταν προκληθεί μια εξαίρεση/διακοπή: Αποθήκευση του PC στον καταχωρητή $epc (ενδεχομένως και της λανθασμένης διεύθυνσης αναφοράς στον καταχωρητή $badvaddr). Για παράδειγμα, εάν η εντολή lw $s0, 0($sp) δημιούργησε μιά εξαίρεση, τότε $badvaddr 0($sp) Καταγραφή του κωδικού εξαίρεσης στον καταχωρητή $cause Γενική απενεργοποίηση των διακοπών και ανάθεση kernel/user λειτουργίας σε kernel mode στον καταχωρητή $status Εκκένωση του pipeline (flush) από την εντολή που δημιούργησε την εξαίρεση και όλες τις επόμενες εντολές. Άλμα στη δεκαεξαδική διεύθυνση 0x80000180 όπου βρίσκεται ο exception handler Εισαγωγή στους Η/Υ (HY134) 16

Διακοπές και εξαιρέσεις Βήματα που εκτελούνται από το λειτουργικό σύστημα όταν προκληθεί μια εξαίρεση/διακοπή: Ανάγνωση του καταχωρητή $cause για προσδιορισμό του κωδικού εξαίρεσης Άλμα σε μια ρουτίνα του λειτουργικού συστήματος ανάλογα με τον κωδικό εξαίρεσης (πιθανόν με τη βοήθεια ενός jump address table) Χειρισμός εξαίρεσης (ή εξυπηρέτηση της συσκευής που προκάλεσε διακοπή) Επιστροφή στη ρουτίνα του exception handler Eντολή eret (exception return) για επιστροφή στο πρόγραμμα του χρήστη - εφόσον δεν χρειάστηκε αυτό να τερματίσει κατά το χειρισμό της εξαίρεσης - η οποία βασικά εκτελεί: mfc0 $k0,$epc addi $k0,$k0,4 jr $k0 Εντολή break n προκαλεί εξαίρεση με τον κωδικό n Εισαγωγή στους Η/Υ (HY134) 17

Εξαιρέσεις και Αρχιτεκτονική Διοχέτευσης Η εντολή που δημιούργησε την εξαίρεση θα πρέπει να εκκενωθεί (flushed) και μαζί με αυτήν όλες οι μεταγενέστερες εντολές που έχουν μπει στο pipeline. H εκτέλεση θα πρέπει να συνεχιστεί με την ρουτίνα εξυπηρέτησης εξαίρεσης (handler routine) από μια προκαθορισμένη διεύθυνση μνήμης Εάν η ρουτίνα εξυπηρέτησης καθορίσει ότι το κανονικό πρόγραμμα μπορεί να συνεχίσει εκεί που διακόπηκε, τότε Κάνει τις απαραίτητες διορθώσεις και επιστρέφει Αλλιώς τερματίζει το πρόγραμμα και κάνει report το λάθος και τα αίτιά του Τι αλλαγές απαιτούνται από την μικρο-αρχιτεκτονική του επεξεργαστή μας για να εξυπηρετήσουμε εξαιρέσεις; Οργάνωση και Σχεδίαση Η/Υ (HY232) 18

Εξαιρέσεις και μικρο-αρχιτεκτονική Η αντιμετώπιση των εξαιρέσεων είναι όμοια με την αντιμετώπιση control και data hazards που έχουμε ήδη περιγράψει. Ας θεωρήσουμε ένα παράδειγμα πρόσθεσης με υπερχείλιση που δημιουργεί εξαίρεση στο στάδιο EX του pipeline. add $1, $2, $1 Τι πρέπει να γίνει σε αυτήν την περίπτωση; H εντολή add πρέπει να γίνει nop για να μην μεταφερθεί η λανθασμένη τιμή του $1 στους καταχωρητές και στις υπόλοιπες εντολές. Όλες οι εντολές πριν την add θα πρέπει να τερματιστούν κανονικά Όλες οι εντολές μετά την add και η ίδια η add θα πρέπει να γίνουν flush από το pipeline (δηλ. nops) Ή μικρο-αρχιτεκτονική θα πρέπει να θέσει τους καταχωρητές Cause και EPC με τις κατάλληλες τιμές Η ρουτίνα εξυπηρέτησης εξαίρεσης (handler) θα πρέπει να αρχίζει να εκτελείται Οργάνωση και Σχεδίαση Η/Υ (HY232) 19

Παράδειγμα εξαίρεσης Η εντολή add δημιουργεί εξαίρεση υπερχείλισης 40 sub $11, $2, $4 44 and $12, $2, $5 48 or $13, $2, $6 4C add $1, $2, $1 50 slt $15, $6, $7 54 lw $16, 50($7) Handler routine 80000180 sw $25, 1000($0) 80000184 sw $26, 1004($0) Οργάνωση και Σχεδίαση Η/Υ (HY232) 20

80000180 η standard διεύθυνση του handler Παράδειγμα εξαίρεσης (I) Extra πολυπλέκτες για να θέτουμε 0 τα σήματα ελέγχου (flush) στο στάδιο ΕΧ και στο στάδιο ID. Καταχωρητής EPC που παίρνει την τιμή PC+4 όταν γίνει εξαίρεση Οργάνωση και Σχεδίαση Η/Υ (HY232) 21

Παράδειγμα εξαίρεσης (II) Οργάνωση και Σχεδίαση Η/Υ (HY232) 22