ΑΡΧΙΤΕΚΤΟΝΙΚΗ & ΟΡΓΑΝΩΣΗ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 3 Περιγραφή του Κορυφαίου Επιπέδου Λειτουργίας & Διασύνδεσης
Σε υψηλό επίπεδο ένας υπολογιστής μπορεί να περιγραφεί από την: Αφαιρετική Περιγραφή Σε υψηλό επίπεδο ένας υπολογιστής μπορεί να περιγραφεί από την: Εξωτερική συμπεριφορά κάθε υπομονάδας του Σήματα δεδομένων και ελέγχου που ανταλλάσσει με τις υπόλοιπες υπομονάδες Περιγραφή της λειτουργίας κάθε υπομονάδας Περιγραφή των διασυνδέσεων όλων των υπομονάδων και των σημάτων ελέγχου
Αρχές von Neumann Όλοι σχεδόν οι σύγχρονοι υπολογιστές βασίζονται στις τρεις αρχές που διατυπώθηκαν από τον John von Neumann το 1945 Αρχές von Neumann: Τα δεδομένα και οι εντολές αποθηκεύονται σε μια μοναδική μνήμη Τα περιεχόμενα της μνήμης μπορούν να διευθυνσιοδοτηθούν κατά θέση Η εκτέλεση των εντολών γίνεται με ακολουθιακό τρόπο (εκτός ρητών εξαιρέσεων)
Κυκλώματα Ειδικού Σκοπού Αποτελούνται από ένα σύνολο κυκλωματικών διατάξεων που δέχονται δυαδικά δεδομένα είναι κατάλληλα συνδεδεμένα εκτελούν συγκεκριμένες πράξεις αποθηκεύουν δυαδικά δεδομένα Για διαφορετικούς υπολογισμούς απαιτείται διαφορετικό κύκλωμα Για νέους υπολογισμούς απαιτείται ο σχεδιασμόs νέου κυκλώματος Έλλειψη ευελιξίας
Συστήματα Γενικού Σκοπού – Η Έννοια του Προγράμματος Συστήματα Γενικού Σκοπού – Η Έννοια του Προγράμματος Τα συστήματα γενικού σκοπού εκτελούν πλήθος διαφορετικών λειτουργιών Αποτελούνται από κυκλώματα που εκτελούν πλήθος αριθμητικών και λογικών πράξεων Αντί να αλλάζει η συνδεσμολογία των κυκλωμάτων, δέχονται κατάλληλα σήματα ελέγχου που καθορίζουν ποιες πράξεις θα γίνουν και με ποια δεδομένα– δηλαδή προγραμματίζονται !!! Το ίδιο κύκλωμα χρησιμοποιείται για την εκτέλεση διαφορετικών λειτουργιών (πράξεων) Ευέλικτα συστήματα
Τι είναι πρόγραμμα ? Ένα σύνολο βημάτων που αντιστοιχούν στις απαιτούμενες από την εφαρμογή λειτουργίες Σε κάθε βήμα επιτελείται μια λειτουργία (αριθ./λογική πράξη, προσπέλαση μνήμης ...) Κάθε λειτουργία διακρίνεται από ένα σύνολο σημάτων ελέγχου που αντιστοιχούν σε μια κωδικοποιημένη λέξη – Εντολή Αντί να ξανακατασκευάσουμε το κύκλωμα για κάθε νέα λειτουργία δίνουμε μια διαφορετική ακολουθία εντολών
Υπομονάδες Υπολογιστή (Components) Κεντρική Μονάδα Επεξεργασίας – Κ.Μ.Ε (CPU) Αριθμητική / λογική μονάδα (Arithmetic Logic Unit–ALU) Μονάδα ελέγχου (Control Unit) Ερμηνεύει / αποκωδικοποιεί την εντολή και παράγει τα σήματα ελέγχου Μονάδες Εισόδου / Εξόδου (Ι/Ο Units) Επικοινωνία με το περιβάλλον, αποθήκευση και διάβασμα τιμών από εξωτερικές συσκευές Μνήμη Αποθήκευση / διάβασμα προγράμματος, δεδομένων
Οργάνωση Υπολογιστή – Ανώτερο Επίπεδο Computer Peripherals Central Processing Unit Main Memory Computer Systems Interconnection Input Output Communication lines
Η Κεντρική Μονάδα Επεξεργασίας (CPU) Computer Arithmetic and Login Unit Registers I/O System Bus CPU Internal CPU Interconnection Memory Control Unit
H Μονάδα Ελέγχου (Control Unit) CPU Sequencing Login ALU Control Unit Internal Bus Control Unit Registers and Decoders Registers Control Memory
Λειτουργία της μονάδας ελέγχου Για κάθε λειτουργία υπάρχει μια μοναδική κωδικοποιημένη λέξη – Εντολή Παράδειγμα: ADD, MOVE Η μονάδα ελέγχου αποκωδικοποιεί την εντολή και παράγει τα κατάλληλα σήματα ελέγχου Κάθε υπομονάδα δέχεται τα σήματα ελέγχου και εκτελεί τις αντίστοιχες πράξεις Έχουμε ένα υπολογιστικό σύστημα γενικού σκοπού δηλαδή ένα υπολογιστή
Υπομονάδες Υπολογιστή: Ανώτερο Επίπεδο (Top Level View)
Κύκλος εντολής (Instruction Cycle) Κάθε εντολή αποτελείται / εκτελείται σε δύο φάσεις: Προσκόμιση εντολής (Fetch) Εκτέλεση Εντολής (Execute) Η επεξεργασία που απαιτείται για μία εντολή ονομάζεται Κύκλος Εντολής
Κύκλος Προσκόμισης (Fetch Cycle) Σε κάθε επεξεργαστή υπάρχει ένας καταχωρητής που καλείται Απαριθμητής Προγράμματος (-PC) Περιέχει τη διεύθυνση μνήμης της επόμενης εντολής Βήματα εκτέλεσης εντολής: Ο επεξεργαστής προσκομίζει την εντολή που καθορίζει ο PC Αυξάνει τον PC κατά 1- Εκτός αν του δοθεί διαφορετική οδηγία από το πρόγραμμα (jump) Η εντολή φορτώνεται στον καταχωρητή εντολής – (Instruction Register-IR) Ο επεξεργαστής διαβάζει τον IR, ερμηνεύει την εντολή και καθορίζει τις ενέργειες που θα γίνουν Εκτέλεση απαιτούμενων πράξεων / ενεργειών Αποθήκευση αποτελεσμάτων
Κύκλος Εκτέλεσης (Execute Cycle) Κατά την εκτέλεση της εντολής ο επεξεργαστής εκτελεί κάποιες λειτουργίες από τις παρακάτω κατηγορίες: Επεξεργαστής-Μνήμη Μεταφορά δεδομένων μεταξύ μνήμης και CPU Επεξεργαστής- I/O Μεταφορά δεδομένων μεταξύ μνήμης και I/O Επεξεργασία δεδομένων Εκτέλεση αριθμητικών και λογικών πράξεων Έλεγχος Αλλαγή της ακολουθίας εκτέλεσης των εντολών (π.χ. Jump)
Παράδειγμα Εκτέλεσης Προγράμματος
Κύκλος Εντολής-Διάγραμμα Καταστάσεων
Διακοπές (Interrupts) Η κανονική λειτουργία μπορεί να διακοπεί λόγω: Προγράμματος Συνθήκη εξαίρεσης που προκύπτει κατά την εκτέλεση του προγράμματος (π.χ.υπερχείλιση, διαίρεση με μηδέν) Χρονισμού Από εσωτερικό χρονιστή (π.χ. για περιοδικό έλεγχο από το λειτουργικό σύστημα) Εξυπηρέτηση εξωτερικών (Ι/Ο) συσκευών Σημαντική αύξηση της απόδοσης - Οι Ι/Ο συσκευές είναι πολύ πιο αργές από ότι η CPU Βλάβης υλικού
Ροή Προγράμματος & Έλεγχος (Program Flow Control)
Χρονισμός Προγράμματος Μικρή I/O Αναμονή
Χρονισμός Προγράμματος Μεγάλη I/O Αναμονή
Κύκλος Διακοπής (Interrupt Cycle) Ο επεξεργαστής ελέγχει για αίτηση διακοπής (interrupt request) Καθορίζεται από την τιμή σήματος (interrupt signal) Εάν δεν υπάρχει αίτηση διακοπής συνεχίζεται η εκτέλεση του προγράμματος Εάν υπάρχει αίτηση διακοπής: Διακοπή της εκτέλεσης του κυρίως προγράμματος Αποθήκευση της κατάστασης σε καταχωρητές Ο PC φορτώνει τη διεύθυνση της ρουτίνας εξυπηρέτησης της διακοπής Εκτέλεση της ρουτίνας διακοπής Επαναφορά της αρχικής κατάστασης και συνέχιση της εκτέλεσης του κυρίως προγράμματος
Κύκλος Εντολής με Διακοπές (Instruction Cycle with Interrupts)
Κύκλος Εντολής (με διακοπές) – Διάγραμμα Καταστάσεων
Ζητήματα λόγω των interrupts Πως ξέρουμε σε ποιο σημείο θα μεταφερθεί ο έλεγχος (εκτέλεση) του προγράμματος ? ποια είναι η αρχική διεύθυνση της ρουτίνας εξυπηρέτησης των διακοπών (ISR-Interrupt Service Routine) ? Τι συμβαίνει όταν εμφανιστούν πολλαπλά interrupts? Μπορούμε να αποφύγουμε την εκτέλεση ενός interrupt σε ένα κρίσιμο σημείο του προγράμματος? Μπορούμε να χειριζόμαστε εξωτερικές αιτήσεις διακοπών (εξυπηρέτησης) χωρίς το μηχανισμό του interrupt?
Ειδικές προφυλάξεις Ερώτηση: Χρειάζεται ειδική προφύλαξη επειδή δεν ξέρουμε σε ποιο σημείο του προγράμματος θα εμφανιστεί το interrupt? Πρόβλημα: Η ρουτίνα ISR αλλάζει τις τιμές των καταχωρητών που χρησιμοποιούνται από το κύριο πρόγραμμα Λύση: Η ISR δεν πρέπει να αλλάζει τις τιμές των καταχωρητών που χρησιμοποιεί το κύριο πρόγραμμα Αποθήκευση των τιμών στο stack και ανάκτηση στο τέλος εξυπηρέτησης της διακοπής Συμπέρασμα: η τιμές των καταχωρητών πρέπει να είναι διαθέσιμες μετά την εκτέλεση της ISR
Διασφάλιση της κατάστασης (τιμές καταχωρητών) Μέθοδος 1: Χρήση ειδικών καταχωρητών για την ISR Πλεονέκτημα Ταχύτητα: Δε χρειάζεται αντιγραφή στο stack Μειονέκτημα: Κακή χρήση των καταχωρητών: οι καταχωρητές της ISR είναι άχρηστοι κατά την εκτέλεση του κυρίως προγράμματος Λίγοι καταχωρητές μπορεί να είναι διαθέσιμοι για την ISR Χρήση: Όταν οι διακοπές εμφανίζονται πάρα πολύ συχνά
Διασφάλιση της κατάστασης (τιμές καταχωρητών) Μέθοδος 2: όλοι οι καταχωρητές αποθηκεύονται αυτόματα στο stack με την εκκίνηση της ISR Πλεονεκτήματα: Ασφάλεια Δε χρειάζονται ειδικές επιπλέον εντολές Όλοι οι καταχωρητές είναι διαθέσιμοι στην ISR Μειονεκτήματα: Αργό όταν οι καταχωρητές είναι πολλοί και ειδικά όταν η ISR χρησιμοποιεί λίγους Χρήση: Όταν η καθυστέρηση λόγω των διακοπών δεν είναι κρίσιμη Όταν το αρχείο καταχωρητών (register file) είναι μικρό
Διασφάλιση της κατάστασης (τιμές καταχωρητών) Μέθοδος 3: Ο προγραμματιστής με επιπλέον εντολές καθορίζει ποιοι καταχωρητές θα αποθηκευθούν στην εκκίνηση της ISR και ποιοι θα ανακτηθούν στο τέλος της ISR Πλεονεκτήματα : Ποιο γρήγορο από την αποθήκευση όλου του μεγάλου register file Όλοι οι καταχωρητές είναι διαθέσιμοι στο κύριο πρόγραμμα και στη ISR Μειονεκτήματα : Δύσκολη αποσφαλμάτωση (debugging) Αργό λόγω επιπλέον εντολών – ειδικά όταν η ISR χρησιμοποιεί πολλούς καταχωρητές (πρέπει να αποθηκευθούν πολλοί καταχωρητές)
Διασφάλιση της κατάστασης (τιμές καταχωρητών) Μέθοδος 4: Αυτόματη αποθήκευση λίγων και συγκεκριμένων καταχωρητών (π.χ. PC, status, …) και αποθήκευση επιπλέον καταχωρητών με εντολές Πλεονεκτήματα : Γρήγορη όση η μέθοδος 2 (hardware copying) για ISRs που χρησιμοποιούν λίγους καταχωρητές Ευέλικτη όσο η μέθοδος 3 (programmatic copying) για ISRs που χρησιμοποιούν πολλούς καταχωρητές Μειονεκτήματα : Δύσκολη αποσφαλμάτωση (debugging) Αργή όταν η ISR χρησιμοποιεί πολλούς καταχωρητές (αποθήκευση πολλών καταχωρητών) Χρήση: Επεξεργαστές με μεγάλο register file Διαφορετικού τύπου ISRs: Μικρής καθυστέρησης, λίγοι καταχωρητές –μεγάλης καθυστέρησης, πολλοί καταχωρητές
Αρχική διεύθυνση της ISR Ερώτηση: Πως ξέρουμε σε ποιο σημείο θα μεταφερθεί ο έλεγχος (εκτέλεση) του προγράμματος ? ποια είναι η αρχική διεύθυνση της ρουτίνας εξυπηρέτησης των διακοπών (ISR-Interrupt Service Routine) ? Πρόβλημα: δεν μπορούμε να κωδικοποιήσουμε στο κύριο πρόγραμμα μία jump-to-ISR εντολή, επειδή δεν ξέρουμε ποτέ θα γεννηθεί η αίτηση για interrupt Δεν ξέρουμε σε ποιο σημείο του προγράμματος να βάλουμε την jump-to-ISR εντολή Λύση: Το κύκλωμα ελέγχου (controller) πρέπει να αναγνωρίζει την αίτηση διακοπής και να ενεργεί ανάλογα (hardware solution)
Μεταβίβαση Ελέγχου μέσω Διακοπών
Αρχική διεύθυνση της ISR – Μέθοδος 1 Η διεύθυνση της ISR είναι αποθηκευμένη (hard coded) στον controller π.χ. 0xFFFC Memory map Prog. ROM Data RAM 0xFFFF 0xFFFE 0xFFFD 0xFFFC 0xC000 0xC0D3 0xC0D4 0xA000 0xA001 0xA002 0x0000 JMP 0xA000 Αρχική διεύθυνση του προγράμματος π.χ.ο PC ξεκινά με την διεύθυνση 0xFFFE Αρχική διεύθυνση της ISR – o PC παίρνει την τιμή 0xFFFC Όταν το σήμα INT ενεργοποιείται JISR 0xC000 RTI POP R1 PUSH R1 ISR ADD R1 Program Data 0x0000
Αρχική διεύθυνση της ISR – Μέθοδος 1 Η αρχική διεύθυνση της ISR είναι αποθηκευμένη (hard coded) στον controller, π.χ. 0xFFFC Πλεονέκτημα: Απλός και εύκολος μηχανισμός Μειονέκτημα: Μη εύελικτος Πρόβλημα με μη πτητικές μνήμες Not flexible to choose where in the memory map the non-volatile memory is placed; 0xFFFC should be non-volatile Υποστηρίζεται μόνο μία ISR. Η ISR θα πρέπει να εξετάσει μετά ποιο περιφερειακό ζητά διακοπή (επόμενη διαφάνεια)
Αρχική διεύθυνση της ISR – Μέθοδος 1 Save status ISR: PUSH R1 Read StatusReg(Dev1),R1 AND R1,0x0001 BEZ Dev2 …process Device 1 interrupt Read Datareg1(Dev1),R1 …do something useful Write Datareg2(Dev1),R1 …end processing Device 1 JMP Done Dev2: Read StatusReg(Dev2),R1 BEZ Done …process Device 2 interrupt …uses also R2 PUSH R2 POP R2 Done: POP R1 RTI ISR: PUSH R1 Read StatusReg(Dev1),R1 AND R1,0x0001 BEZ Dev2 …process Device 1 interrupt Read Datareg1(Dev1),R1 …do something useful Write Datareg2(Dev1),R1 …end processing Device 1 JMP Done Dev2: Read StatusReg(Dev2),R1 BEZ Done …process Device 2 interrupt …uses also R2 PUSH R2 POP R2 Done: POP R1 RTI ISR: PUSH R1 Read StatusReg(Dev1),R1 AND R1,0x0001 BEZ Dev2 …process Device 1 interrupt Read Datareg1(Dev1),R1 …do something useful Write Datareg2(Dev1),R1 …end processing Device 1 JMP Done Dev2: Read StatusReg(Dev2),R1 BEZ Done …process Device 2 interrupt …uses also R2 PUSH R2 POP R2 Done: POP R1 RTI ISR: PUSH R1 Read StatusReg(Dev1),R1 AND R1,0x0001 BEZ Dev2 …process Device 1 interrupt Read Datareg1(Dev1),R1 …do something useful Write Datareg2(Dev1),R1 …end processing Device 1 JMP Done Dev2: Read StatusReg(Dev2),R1 BEZ Done …process Device 2 interrupt …uses also R2 PUSH R2 POP R2 Done: POP R1 RTI ISR: PUSH R1 Read StatusReg(Dev1),R1 AND R1,0x0001 BEZ Dev2 …process Device 1 interrupt Read Datareg1(Dev1),R1 …do something useful Write Datareg2(Dev1),R1 …end processing Device 1 JMP Done Dev2: Read StatusReg(Dev2),R1 BEZ Done …process Device 2 interrupt …uses also R2 PUSH R2 POP R2 Done: POP R1 RTI ISR: PUSH R1 Read StatusReg(Dev1),R1 AND R1,0x0001 BEZ Dev2 …process Device 1 interrupt Read Datareg1(Dev1),R1 …do something useful Write Datareg2(Dev1),R1 …end processing Device 1 JMP Done Dev2: Read StatusReg(Dev2),R1 BEZ Done …process Device 2 interrupt …uses also R2 PUSH R2 POP R2 Done: POP R1 RTI ISR: PUSH R1 Read StatusReg(Dev1),R1 AND R1,0x0001 BEZ Dev2 …process Device 1 interrupt Read Datareg1(Dev1),R1 …do something useful Write Datareg2(Dev1),R1 …end processing Device 1 JMP Done Dev2: Read StatusReg(Dev2),R1 BEZ Done …process Device 2 interrupt …uses also R2 PUSH R2 POP R2 Done: POP R1 RTI Check if Dev1 calls attention Service Dev1 Check if Dev2 calls attention Service Dev2 Restore status
Αρχική διεύθυνση της ISR – Μέθοδος 2 Χρήση πίνακα διακοπών στη μνήμη H διεύθυνση της ISR του περιφερειακού που ζητάει διακοπή προστίθεται σε πίνακα (Interrupt Vector Table - IVT); Η τιμή της κάθε θέσης του IVT φορτώνεται στον PC, αναγκάζοντας το πρόγραμμα να μεταβεί στην διεύθυνση της ISR 0xC100 ISR3 0xC040 ISR2 0xC0A0 ISR1 IVT base often at 0x0000 0xC000 ISR0
Αρχική διεύθυνση της ISR – Μέθοδος 2 IVT Πλεονεκτήματα Ταχύτητα – δε χρειάζεται έλεγχος για την εύρεση του περιφεραικού που προκάλεσε αίτηση διακοπής Υπερφόρτωση των interrupts μπορεί να προκληθεί εύκολα Μειονεκτήματα Περιορισμοί λόγω του μεγέθους του IVT
Αρχική διεύθυνση της ISR – Μέθοδος 3 Κατανεμημένος IVT INT’ IACK IVEC Data Dev2 Dev1 INT’ IACK IVEC Data Dev2 Dev1 INT’ IACK IVEC Data Dev2 Dev1 INT’ IACK IVEC Data Dev2 Dev1 INT’ IACK IVEC Data Dev2 Dev1 INT’ IACK IVEC Data Dev2 Dev1
Προτεραιότητες διακοπών Ερώτηση: τι συμβαίνει όταν πολλαπλά interrupts προκαλούνται ταυτόχρονα? Πρόβλημα: ποιο θα εξυπηρετηθεί πρώτο? Λύση: εξυπηρέτηση με βάση προτεραιότητες
Πολλαπλές Διακοπές - Απενεργοποίηση των διακοπών Ο επεξεργαστής αγνοεί νέα interrupts κατά τη διάρκεια εξυπηρέτησης ενός interrupt Τα νέα interrupts αποθηκεύονται και εξετάζονται στο τέλος της εξυπηρέτησης του τρέχοντος interrupt και εξυπηρετούνται ακολουθιακά Πλεονεκτήμα: Απλός αλγόριθμός και απλή κυκλωματική υλοποίηση Μειονέκτημα: Δε λαμβάνει υπόψη προτεραιότητες ή κρίσιμες ανάγκες
Multiple Interrupts - Sequential
Πολλαπλές Διακοπές (2) - Καθορισμός προτεραιοτήτων Διακοπές χαμηλής προτεραιότητας μπορούν να διακοπούν από διακοπές υψηλότερες προτεραιότητας Στο τέλος της εξυπηρέτησης μιας αίτησης διακοπής ο επεξεργαστής συνεχίζει την εξυπηρέτηση του interrupt που διακόπηκε Πλεονεκτήμα: Ικανοποίηση προτεραιοτήτων Μειονέκτημα: Σχετικά πολύπλοκοι αλγόριθμοι, αύξηση της πολυπλοκότητας του λογισμικού / υλικού
Κωδικοποίηση προτεραιοτήτων-1 Intel (cf. PC) mP Encoder INT INTA D INT0: clock INT1: keyboard INT2 INT3: COM2 INT4: COM1 INT5 INT6 INT7 highest lowest 3 mP Encoder INT INTA D INT0: clock INT1: keyboard INT2 INT3: COM2 INT4: COM1 INT5 INT6 INT7 highest lowest mP Encoder INT INTA D INT0: clock INT1: keyboard INT2 INT3: COM2 INT4: COM1 INT5 INT6 INT7 highest lowest mP Encoder INT INTA D INT0: clock INT1: keyboard INT2 INT3: COM2 INT4: COM1 INT5 INT6 INT7 highest lowest mP Encoder INT INTA D INT0: clock INT1: keyboard INT2 INT3: COM2 INT4: COM1 INT5 INT6 INT7 highest lowest
Κωδικοποίηση προτεραιοτήτων-1 Εξέταση με λογισμικό (software polling) mP INT StatusReg Peripheral 1 2 mP INT StatusReg Peripheral 1 2 mP INT StatusReg Peripheral 1 2 Η σειρά με την οποία το λογισμικό εξετάζει τα περιφερειακά καθορίζει και τις προτεραιότητες
Pre-emption Ερώτηση: τι συμβαίνει όταν ενώ εκτελείται ένα interrupt συμβαίνει και ένα δεύτερο? Μπορεί το δεύτερο να διακόψει το πρώτο? Λύση: Η εξυπηρέτηση γίνεται ανάλογα με τις προτεραιότητες των interrupts Ένα interrupt υψηλής προτεραιότητας μπορεί να διακόψει ένα χαμηλής Αν οι προτεραιότητες είναι ίδιες αναλαμβάνει το λειτουργικό σύστημα
Multiple Interrupts – Nested
Time Sequence of Multiple Interrupts
Διασύνδεση Όλες οι μονάδες υλικού πρέπει είναι συνδεδεμένες μεταξύ τους Απαιτούνται διαφορετικού τύπου διασυνδέσεις για τις διαφορετικές μονάδες Μνήμη Κυκλώματα Ι/Ο Κεντρική Μονάδα Επεξεργασίας
Computer Modules
Λαμβάνει κατάλληλα σήματα ελέγχου Διασύνδεση της Μνήμης Η μνήμη λαμβάνει και στέλνει δεδομένα στις υπόλοιπες μονάδες του συστήματος Λαμβάνει μια λέξη (διεύθυνση) που καθορίζει τη θέση μνήμης στην οποία θα εγγραφούν ή από την οποία θα διαβαστούν τα δεδομένα Λαμβάνει κατάλληλα σήματα ελέγχου Εγγραφής (Read) Ανάγνωσης (Write) Χρονισμού (Timing)
Διασύνδεση Μονάδων Εισόδου / Εξόδου Παρόμοια με αυτή της μνήμης Λαμβάνει σήματα ελέγχου Στέλνει σήματα ελέγχου στα περιφερειακά Στέλνει σήματα αίτησης διακοπής στη CPU Συσκευή Εξόδου Λαμβάνει δεδομένα από τη CPU/μνήμη Στέλνει δεδομένα στα περιφερειακά Λαμβάνει διευθύνσεις από τη CPU Συσκευή Εισόδου Λαμβάνει δεδομένα από τα περιφερειακά Στέλνει δεδομένα στη CPU/μνήμη
Διαβάζει εντολές και δεδομένα Γράφει δεδομένα μετά από επεξεργασία Διασύνδεση της CPU Διαβάζει εντολές και δεδομένα Γράφει δεδομένα μετά από επεξεργασία Στέλνει σήματα ελέγχου σε άλλες μονάδες Λαμβάνει σήματα διακοπών
Δίαυλοι Επικοινωνίας (Buses) Κοινό μέσο μετάδοσης το οποίο μοιράζονται διάφορες υπομονάδες / συσκευές Ένα bus είναι σύνολο ηλεκτρικών γραμμών για την επικοινωνία των μονάδων του υπολογιστή Μια συσκευή έχει κάθε φορά τον έλεγχο του bus Αλγόριθμοι διαιτησίας Γενικά κάθε υπολογιστής περιέχει τρεις διάυλους Data Bus – Μεταφορά δεδομένων Address Bus - Μεταφορά διευθύνσεων. Καθορίζει και το μέγεθος της μνήμης Control Bus – Μεταφορά σημάτων ελέγχου
Δίαυλος Δεδομένων (Data Bus) Χρησιμοποιείται για τη μεταφορά δεδομένων μεταξύ των υπομονάδων του υπολογιστή Το εύρος του διαύλου δεδομένων επηρεάζει σημαντικά την απόδοση του όλου συστήματος Π,χ. 8-bit data bus, 16-bit CPU => 2 προσπελάσεις στη μνήμη => μείωση της απόδοσης Συνήθως το εύρος του διαύλου δεδομένων είναι ίσο ή μεγαλύτερο με το εύρος των τελεστών της CPU
Δίαυλος Διευθύνσεων (Address Bus) Χρησιμοποιείται για τον καθορισμό της πηγής ή του προορισμού (διεύθυνση) των δεδομένων του διαύλου δεδομένων Αντιστοιχεί μια μοναδική διεύθυνση σε κάθε θέση μνήμης, Ι/Ο συσκευής Το εύρος του διαύλου διευθύνσεων καθορίζει και τη μέγιστη ποσότητα μνήμης του συστήματος Π.χ. s-bit address bus => 2s θέσεις μνήμης
Δίαυλος Ελέγχου (Control Bus) Χρησιμοποιείται για έλεγχο της πρόσβασης στους δίαυλους δεδομένων και διευθύνσεων Υπάρχουν σήματα ελέγχου που Μεταδίδουν πληροφορίες εντολών – Τι πρόκειται να γίνει Πληροφορίες χρονισμού – Υποδεικνύουν την εγκυρότητα των δεδομένων και διευθύνσεων Τυπικές γραμμές ελέγχου: RDMem, WRMem, RDI/O, WRI/O, INT, CLK, RST
Δίαυλοι Επικοινωνίας - Bus Interconnection Scheme
Ιεραρχίες Πολλών Διαύλων Η χρήση ενός δίαυλου στον οποίο είναι συνδεδεμένες πολλές υπομονάδες οδηγεί σε: Αύξηση του μήκους του δίαυλου και της καθυστέρησης Μποτιλιάρισμα καθώς η συνολική ζήτηση μεταφοράς δεδομένων προσεγγίζει τη μέγιστη ικανότητα μεταφοράς δεδομένων του διαύλου Τα περισσότερα συστήματα υπολογιστών χρησιμοποιούν πολλαπλούς διαύλους
Traditional (ISA) (with cache)
Υψηλής απόδοσης Bus
Τύποι Διαύλων Αφοσιωμένος (Dedicated) Πολυπλεγμένος (Multiplexed) Π.χ Διακριτά data & address buses Πολυπλεγμένος (Multiplexed) Κοινές γραμμές που μοιράζονται περισσότεροι από ένας δίαυλοι (address & data) Χρήση σημάτων ελέγχου για τον καθορισμό του τύπου της πληροφορίας που βρίσκεται στο δίαυλο (δεδομένα / διεύθυνση) Πλεονέκτημα: Λιγότερες διασυνδέσεις (καλώδια) => Μείωση κόστους και επιφάνειας Μειονεκτήματα: Πολύπλοκα κυκλώματα, μη υποστήριξη παραλληλίας
Διαιτησία Διαύλου (Bus Arbitration) Πολλές συσκευές έχουν πρόσβαση στους δίαυλους Απαιτείται μια μέθοδος διαιτησίας που θα εξασφαλίζει ότι μια συσκευή θα έχει τον έλεγχο του δίαυλου Κεντρική διαιτησία: Ειδικό κύκλωμα (Bus Controller, Arbiter) ελέγχει τις προσπελάσεις στο δίαυλο Μπορεί να είναι μέρος της CPU ή ξεχωριστό κύκλωμα Κατανεμημένη διαιτησία: Δεν υπάρχει κεντρικός ελεγκτής Κάθε μονάδα έχει κυκλώματα ελέγχου και πρόσβασης Χρήση κατάλληλων πρωτοκόλλων
Διαιτησία Διαύλου (Bus Arbitration)
Χρονισμός Συντονισμός των γεγονότων Σύγχρονος Τα γεγονότα καθορίζονται από το σήμα του ρολογιού Ο δίαυλος ελέγχου περιέχει clock Όλες οι συσκευές αναγνωρίζουν το clock Συνήθως ο συγχρονισμός γίνεται στην ανιούσα παρυφή του clock Συνήθως ένα συμβάν λαμβάνει χώρα σε ένα κύκλο ρολογιού
Synchronous Timing Diagram
Asynchronous Timing – Read Diagram
Asynchronous Timing – Write Diagram
Σύνοψη (1/2) Κυκλώματα ειδικού σκοπού & συστήματα γενικού σκοπού Η έννοια του προγράμματος Εντολή => εκτέλεση μιας σειράς ενεργειών από το σύστημα Μονάδες υπολογιστικού συστήματος Κεντρική Μονάδα Επεξεργασίας (CPU) Μονάδα Ελέγχου Μονάδες Εισόδου / Εξόδου Μνήμη Κύκλος εντολής (2 φάσεις) Προσκόμιση εντολής Εκτέλεση εντολής
Σύνοψη (2/2) Διακοπές Διασύνδεση – Δίαυλοι επικοινωνίας Χρονισμός Αιτίες Αντιμετώπιση με στόχο την ταχύτητα Κύκλος διακοπής Πολλαπλές Διακοπές – Διαχείρηση Διασύνδεση – Δίαυλοι επικοινωνίας Δίαυλος δεδομένων, ελέγχου και διευθύνσεων Ιεραρχίες διαύλων Τύποι διαύλων (αφοσιωμένος, πολυπλεγμένος) Διαιτησία Χρονισμός Σύγχρονός / ασύγχρονος