Εισαγωγή Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Σκοπός του εργαστηρίου είναι να κατανοήσουµε τους τρόπους προσπέλασης της µνήµης (µέθοδοι διευθυνσιοδότησης) σε ένα υπολογιστικό σύστηµα. Η Μνήµη 1 Ψηφιακή Λογική 4 2 Λογικά Κυκλώµατα 3 Οργάνωση της ΚΜΕ 4 ιαχείριση Μνήµης 5 Προγραµµατισµός σε Συµβολική Γλώσσα 6 Η Γλώσσα Assembly των Επεξεργαστών της Intel 7 Intel Assembly Λογικές Πράξεις 8 Intel Assembly Έλεγχος Ροής 9 Intel Assembly ιευθυνσιοδότηση Μνήµης 10 Intel Assembly Υπορουτίνες & Μακροεντολές 11 Χρήση της Assembly µε την C/C++ 12 Ολοκληρωµένα Συστήµατα - Εφαρµογές Η µνήµη είναι εκείνος ο χώρος στον υπολογιστή που χρησιµοποιείται για την καταχώρηση και αποθήκευση δεδοµένων. Τα δεδοµένα αυτά µπορεί να είναι εντολές, αριθµοί, κωδικοί, χαρακτήρες, κλπ. Όλα τα δεδοµένα κατά την καταχώρησή τους στην µνήµη βρίσκονται σε δυαδική µορφή (δηλ. σε συνδυασµούς των δύο ψηφίων 0 και 1). Ο µικρότερος χώρος µνήµης, το κελί (cell) µπορεί να περιέχει µόνο ένα δυαδικό ψηφίο, 1bit (binary digit ή bit) το 0 ή το 1. Έχει καθιερωθεί ως µονάδα µέτρησης της χωρητικότητας της µνήµης το 1byte, το οποίο είναι ίσο µε 8bits 1. 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0................ Η µνήµη στον υπολογιστή είναι δύο ειδών: µνήµη τύπου RAM (µνήµη τυχαίας προσπέλασης) και µνήµη τύπου ROM (µνήµη µόνο για ανάγνωση). Η µνήµη τύπου RAM είναι ο χώρος όπου καταχωρούνται προσωρινά τα διάφορα προγράµµατα που δηµιουργεί ή χειρίζεται ο χρήστης. Είναι ο χώρος δηλαδή όπου µπορούν να καταχωρηθούν δεδοµένα προσωρινά, και στην συνέχεια επίσης να διαβαστούν τα δεδοµένα αυτά όποτε χρειαστεί. Χαρακτηριστικό είναι ότι η µνήµη αυτή έχει την ιδιότητα να διατηρεί τα δεδοµένα που έχει καταχωρηµένα σε αυτή µόνο για όσο ο υπολογιστής παραµένει ανοιχτός και τροφοδοτείται µε ενέργεια κανονικά. Από την στιγµή που κλείσουµε τον υπολογιστή τα δεδοµένα που έχουν καταχωρηθεί σε αυτή τη µνήµη χάνονται. Ένα άλλο χαρακτηριστικό αυτής της µνήµης είναι η µικρή της χωρητικότητα (64MB, 128MB, 256MB) σε σχέση µε άλλα µέσα αποθήκευσης (ή αλλιώς βοηθητικές µνήµες), όπως για παράδειγµα είναι ο σκληρός δίσκος µε χωρητικότητες 20GB, 40GB και µεγαλύτερες, και τα τελευταία χρόνια και ο συµπιεσµένος δίσκος (CD - Compact Disc) µε επίσης µεγάλες χωρητικότητες (700MB). Ο τύπος µνήµης ROM είναι ο χώρος στον υπολογιστή όπου υπάρχουν (µόνιµα) καταχωρηµένα προγράµµατα από τον κατασκευαστή του υπολογιστή και τα οποία χρησιµοποιούνται από το σύστηµα για την σωστή λειτουργία του υπολογιστή, και κυρίως κατά την εκκίνησή του. Συνήθως σε αυτόν τον χώρο µνήµης δεν έχει το δικαίωµα να γράψει κάποια δεδοµένα ο χρήστης, παρά µόνο να διαβάσει αυτά που ήδη υπάρχουν. $02 $01 $00 1 1BYTE = 8bits ~ ένας χαρακτήρας 1MB=1024KB ~ 333 σελίδες 1KB=1024Bytes ~ 1/3 της σελίδας 1GB=1024MB ~ 333333 σελίδες 1
Θα πρέπει ίσως εδώ απλώς να αναφέρουµε και έναν άλλο τύπο µνήµης, τον γνωστό ως γρήγορη ή κρυφή µνήµη (cache memory), η οποία µνήµη είτε βρίσκεται µεταξύ του επεξεργαστή και της κεντρικής µνήµης RAM, είτε βρίσκεται ενσωµατωµένη στον επεξεργαστή, και χρησιµεύει για επιτάχυνση των δεδοµένων που γράφονται ή διαβάζονται πιο συχνά από την κύρια µνήµη RAM. Μέθοδοι διευθυνσιοδότησης Μια εντολή έχει πάντα ένα κωδικό πράξης (opcode) που προσδιορίζει τι κάνει η εντολή, και ο οποίος ακολουθείται από διευθύνσεις των τελεστέων (operands). OPCODE OPERANDS Οι µέθοδοι διευθυνσιοδότησης αποτελούν τους τρόπους προσδιορισµού του τελεστέου. Για παράδειγµα στον Pentium II, η µορφή των εντολών µπορεί να περιέχει µέχρι έξι πεδία µεταβλητού µήκους, όπως: -prefix byte (byte προθέµατος) -opcode (κωδικός πράξης) -mode byte (byte σχετικά µε το τελεστέο) -Scale,Index,Base -SIB byte (για κάποιες µεθόδους διευθυνσιοδότησης) -displacement bytes (bytes σχετικής µετατόπισης, για τον καθορισµό διεύθυνσης) -immediate bytes (άµεσα καθοριζόµενος τελεστέος σταθερά) Ενδεικτικά οι πιο γνωστές µέθοδοι διευθυνσιοδότησης είναι οι ακόλουθες: Με άµεσο καθορισµό τιµής (Immediate addressing) Άµεσα καθοριζόµενος τελεστέος: προσκοµίζεται αυτόµατα από τη µνήµη µαζί µε την ίδια την εντολή. Π.χ. µια εντολή µε άµεσο καθορισµό τιµής για τη φόρτωση του 4 στον καταχωρητή R1: MOV R1 4 Με άµεση διευθυνσιοδότηση (Direct addressing) Μια άλλη µέθοδος για τον καθορισµό του τελεστέου µνήµης είναι απλώς να δίνεται άµεσα η πλήρης διεύθυνσή του. Μέσω καταχωρητή (Register addressing) Η µέθοδος αυτή είναι εννοιολογικά ταυτόσηµη µε την άµεση διευθυνσιοδότηση, µόνο που καθορίζεται ένας καταχωρητής αντί για µια θέση µνήµης. 2
Έµµεση διευθυνσιοδότηση µέσω καταχωρητή (Register indirect addressing) Σε αυτόν τον τρόπο διευθυνσιοδότησης, ο καθοριζόµενος τελεστέος προέρχεται από τη µνήµη ή πηγαίνει στη µνήµη, αλλά η διεύθυνσή του δεν είναι συνδεδεµένη στην εντολή, αλλά περιέχεται σε ένα καταχωρητή. Π.χ., έµµεση διευθυνσιοδότηση µέσω του καταχωρητή R2 για προσκόµιση τελεστέου: ADD R1, (R2) Με δείκτη θέσης (Indexed addressing) Συχνά είναι χρήσιµο να µπορούµε να αναφερόµαστε σε λέξεις µνήµης που βρίσκονται σε µια γνωστή σχετική διεύθυνση ως προς ένα καταχωρητή. Π.χ. ο προορισµός χρησιµοποιεί τον R4 για διευθυνσιοδότηση µέσω καταχωρητή, και η πηγή χρησιµοποιεί διευθυνσιοδότηση µε δείκτη θέσης, µε το Α ως σχετική διεύθυνση και τον R2 ως καταχωρητή. MOV R4, A(R2) Με βάση και δείκτη θέσης (Based-indexed addressing) LOOP: MOV R4,(R2+R5) AND R4,(R2+R6) Μέσω στοίβας/σωρού (Stack addressing) Οι εντολές µηδενικών διευθύνσεων είναι δυνατές µε τη χρήση στοίβας/σωρού. Μια συνοπτική περιγραφή των παραπάνω µεθόδων διευθυνσιοδότησης δίνεται στον πίνακα που ακολουθεί: 3
Μια σχηµατική περιγραφή ορισµένων από τις παραπάνω µεθόδους διευθυνσιοδότησης δίνεται στο σχήµα που ακολουθεί: ΠΑΡΑ ΕΙΓΜΑ 1 ίνονται οι παρακάτω τιµές µνήµης και µιας µηχανής µιας διεύθυνσης µε ένα συσσωρευτή. Η λέξη 20 περιέχει 40. 4
Η λέξη 40 περιέχει 60. Τι τιµές θα φορτώσουν στον συσσωρευτή οι παρακάτω εντολές; 1. LOAD IMMEDIATE 20 2. LOAD DIRECT 20 3. LOAD INDIRECT 20 Η πρώτη εντολή θα φορτώσει άµεσα την τιµή του τελεστέου στην εντολή δηλαδή την τιµή της λέξης 20, το 40. Η δεύτερη εντολή θα φορτώσει το περιεχόµενο της διεύθυνσης που ακολουθεί ως τελεστέος, δηλαδή της διεύθυνσης της λέξης 20, η οποία περιέχει το 40. Η τρίτη εντολή θα φορτώσει µε βάση τη διεύθυνση στην οποία περιέχεται η διεύθυνση του τελεστέου που ενδιαφέρει, δηλαδή τη διεύθυνση της λέξης 20, η οποία περιέχει τη διεύθυνση 40 µε περιεχόµενο το 60. Μέθοδοι διευθυνσιοδότησης στον Pentium II Για παράδειγµα, στον Pentium II υποστηρίζονται οι ακόλουθοι τρόποι διευθυνσιοδότησης: άµεσος καθορισµός τιµής (immediate) άµεση διευθυνσιοδότηση (direct) διευθυνσιοδότηση µέσω καταχωρητή (register) έµµεση διευθυνσιοδότηση µέσω καταχωρητή (register indirect) διευθυνσιοδότηση µε δείκτη θέσης (indexed) εν ισχύουν όλοι οι τρόποι για όλες τις εντολές, ούτε µπορούν να χρησιµοποιούνται όλοι οι καταχωρητές σε όλους τους τρόπους. Στην πράξη δεν είναι όλοι οι τρόποι απόδοσης διευθύνσεων το ίδιο σηµαντικοί. Οι µεταγλωττιστές γλωσσών υψηλού επιπέδου χρησιµοποιούν κυρίως τους παρακάτω τρόπους απόδοσης διευθύνσεων: Αυτοδεικτοδοτούµενη -τοποθέτηση & αφαίρεση από τη στοίβα παραµέτρων διαδικασιών Άµεση -προσπέλαση καθολικών µεταβλητών Με άµεσο καθορισµό τιµής -µετακίνηση σταθερών είκτη -προσπέλαση τοπικών µεταβλητών Καταχωρητή -αποθήκευση τοπικών µεταβλητών Έµµεση µέσω καταχωρητή -αποθήκευση δεικτών σε δοµές ΠΑΡΑ ΕΙΓΜΑ 2 Θεωρείστε µια αρχιτεκτονική µε τις εξής εντολές και µεθόδους διευθυνσιοδότησης: ιευθυνσιοδότηση Εντολή LOAD STORE ADD SUB JMP Κατ ευθείαν 1 1 1 1 1 Άµεση 1 0 1 0 0 Έµµεση 1 1 1 1 1 εικτοδoτούµενη 1 0 0 0 1 Υπονοούµενη 0 1 0 0 0 Σχετική 0 0 0 0 0 5
Όπου η δεικτοδοτούµενη διευθυνσιοδότηση γίνεται µέσω του συσσωρευτή, ενώ η υπονοούµενη διευθυνσιοδότηση γίνεται στην τελική διεύθυνση της πιο πρόσφατης εντολής LOAD. Έµµεση δεικτοδοτούµενη διευθυνσιοδότηση δεν υποστηρίζεται.. Στα 32 bits κάθε εντολής, τα 3 πιο σηµαντικά περιέχουν τον κωδικό λειτουργίας, τα 6 επόµενα τη µέθοδο διευθυνσιοδότησης και τα υπόλοιπα το πιθανό τελούµενο. Αν αυτό είναι διεύθυνση, τα πιο σηµαντικά ψηφία του παίρνονται από το µετρητή προγράµµατος. Επίσης µια εντολή χωρίζεται στις γνωστές φάσεις ενός κύκλου µηχανής: 1.Ανάκληση, 2.Αποκωδικοποίηση, 3.Εύρεση τελικής διεύθυνσης τελούµενου, 4.Ανάγνωση/αποθήκευση, και 5.Εκτέλεση. Σχεδιάστε µια µονάδα ελέγχου για αυτή την αρχιτεκτονική. Παρά το απλοποιηµένο σετ εντολών, παρατηρούµε ότι οι πολλές µέθοδοι διευθυνσιοδότησης δηµιουργούν την ανάγκη για αρκετούς καταχωρητές ειδικού σκοπού µε πολύπλοκη ροή πληροφορίας. Το διάγραµµα µιας απλοποιηµένης αρχιτεκτονικής που µας ζητείται, δίνεται στο παρακάτω σχήµα. Έτσι: Ο καταχωρητής IR περιέχει τη λέξη εντολής που διαβάζεται από τη µνήµη στη φάση ανάκλησης κάθε εντολής. Το περιεχόµενό του χρησιµοποιείται από τη Μονάδα Ελέγχου (ΜΕ), τόσο για την αποκωδικοποίηση της εντολής, όσο και για την PC Μ Μ & Μονάδα Μνήµης IR DR Μονάδα Ελέγχου ΜΕ ΑΛΜ Σ AR LR ιακοπή περαιτέρω προώθηση τµηµάτων της λέξης εντολής σε άλλες υποµονάδες. Ο καταχωρητής DR περιέχει τη λέξη δεδοµένων που διαβάζεται από τη µνήµη τόσο στη φάση τελικής προσπέλασης στη µνήµη (δηλαδή της προσπέλασης που µας επιστρέφει το ζητούµενο δεδοµένο), όσο και στη φάση υπολογισµού τελικής διεύθυνσης τελούµενου, όταν έχουµε έµµεση διευθυνσιοδότηση. Σε περίπτωση έµµεσης αναφοράς στη µνήµη, το περιεχόµενο του DR προωθείται στην είσοδο διεύθυνσης της Μονάδας ιαχείρισης Μνήµης (Μ Μ). Σε εντολή έµµεσου άλµατος, το περιεχόµενο του DR προωθείται στο µετρητή προγράµµατος. Τέλος, στην εντολή LOAD το περιεχόµενο του DR µετά την τελική προσπέλαση στέλνεται στο συσσωρευτή Σ. Ο καταχωρητής AR αποθηκεύει την ενδιάµεση διεύθυνση κάποιου τελούµενου σε περίπτωση που έχουµε δεικτοδοτούµενη διευθυνσιοδότηση. Η εύρεση αυτής της διεύθυνσης γίνεται µε πρόσθεση στην Αριθµητική Λογική Μονάδα (ΑΛΜ) της τιµής του συσσωρευτή Σ µε την τιµή που παραλαµβάνεται από τη Μονάδα Ελέγχου (ΜΕ). Ο AR στέλνει το περιεχόµενό του στην Μ Μ για ανάγνωση, ή στον PC όταν έχουµε δεικτοδοτούµενη εντολή άλµατος. 6
Ο καταχωρητής LR είναι απαραίτητος για την υλοποίηση υπονοούµενης διευθυνσιοδότησης. Σ αυτόν γράφεται η τελική διεύθυνση ανάγνωσης από τη µνήµη σε εντολές LOAD. Η διεύθυνση αυτή µπορεί να προέλθει από οποιονδήποτε καταχωρητή ειδικού σκοπού που χρησιµοποιήθηκε για τον υπολογισµό αυτής της διεύθυνσης, και ο οποίος θα είναι ένας από τους IR, DR και AR. Όπως θα δούµε αργότερα, µας είναι πιο εύκολο να αποθηκεύσουµε αυτή τη διεύθυνση στον AR και από αυτόν να την προωθήσουµε στον LR. Το περιεχόµενο του LR στέλνεται µόνο στην είσοδο διεύθυνσης της Μ Μ. Ο µετρητής προγράµµατος PC δέχεται πληροφορία τόσο από τους καταχωρητές IR, DR και AR, όσο και (α) από το συσσωρευτή Σ, απ όπου δέχεται την τιµή της συνθήκης που ελέγχεται σε εντολή άλµατος µε συνθήκη (τιµή συσσωρευτή είτε διάφορη είτε µικρότερη του 0), και (β) απ ευθείας από την ΑΛΜ, απ όπου δέχεται τη διεύθυνση προορισµού ενός σχετικού άλµατος σαν το άθροισµα της τρέχουσας τιµής του µε την προέκταση των ψηφίων του IR22-0. Ο συσσωρευτής Σ που είναι ο µόνος καταχωρητής άµεσα προσπελάσιµος από κάποιο πρόγραµµα σε γλώσσα µηχανής της αρχιτεκτονικής, δέχεται τιµές από την ΑΛΜ και από όλους τους υπόλοιπους καταχωρητές εκτός των AR και LR. Το περιεχόµενό του το στέλνει είτε πίσω στην ΑΛΜ είτε στη Μ Μ για αποθήκευση σε εντολή STORE. Επίσης στέλνει και στον PC την πληροφορία για µηδενική ή αρνητική τιµή, χρησιµοποιώντας για το σκοπό αυτό δύο ψηφία ελέγχου της τιµής του, το Ζ για µηδενική και το Ν για αρνητική τιµή. Ρυθµός µεταφοράς δεδοµένων Βελτίωση ρυθµού µεταφοράς δεδοµένων µε αύξηση του εύρους της αρτηρίας και µε την εφαρµογή διακριτών γραµµών διευθύνσεων και δεδοµένων. ΠΑΡΑ ΕΙΓΜΑ 3 Ένας µικροεπεξεργαστής των 8bits µε χώρο µνήµης 64Kbytes πόσες θέσεις µνήµης µπορεί να διευθυνσιοδοτήσει; Ο παραπάνω µικροεπεξεργαστής µπορεί να διευθυνσιοδοτήσει 128K θέσεις µνήµης. ΠΑΡΑ ΕΙΓΜΑ 4 Ένας µικροεπεξεργαστής των 16bits µε δίαυλο µνήµης των 20bits, µέχρι πόσα byte µνήµης µπορεί να διευθυνσιοδοτήσει, και πόσα εάν ο δίαυλος µνήµης ήταν 32 bits ; Ο παραπάνω µικροεπεξεργαστής µπορεί να διευθυνσιοδοτήσει µέχρι 1Mbyte µνήµης (2 20 = 1048576 bytes), ενώ µε δίαυλο µνήµης των 32 bits µέχρι 4GB µνήµης (2 32 ). ΠΑΡΑ ΕΙΓΜΑ 5 Ας υποθέσουµε ότι έχουµε ένα σύστηµα κάρτας µνήµης το οποίο χρησιµοποιεί τρεις οµάδες µνηµών DRAM των 256K για µια συνολική µνήµη 768Kbytes, και το οποίο µπορεί να διευθυνσιοδοτήσει το πολύ 620Kbytes µνήµης. Πόσες θέσεις µνήµης είναι αχρησιµοποίητες; 7
Υπάρχει πιο αποτελεσµατικός τρόπος για την κατασκευή αυτής της µνήµης; Έχουµε από 768-640 = 148K µνήµης δεν χρησιµοποιείται. Το σύστηµα µπορεί να κατασκευαστεί µε δύο οµάδες των 256K και δύο οµάδες των 64K (2 x 256K + 2 x 64K = 640K). Όταν δεν έχουµε χαµένο χρόνο λειτουργίας στον επεξεργαστή, διαδοχικές εντολές του επεξεργαστή ολοκληρώνονται ανά έναν κύκλο µηχανής. Η ιδανική αυτή συµπεριφορά διαταράσσεται µε διάφορους τρόπους. Εκτός από περιπτώσεις εξαρτήσεων στην εκτέλεση διαδοχικών εντολών, έχουµε και παράγοντες εκτός του επεξεργαστή που οδηγούν σε απώλεια κύκλων µηχανής στην εκτέλεση ενός προγράµµατος εφαρµογής. Για παράδειγµα, µια λειτουργία εισόδου-εξόδου απαιτεί πολλές φορές χιλιάδες κύκλους µηχανής, ενώ µια προσπέλαση κεντρικής µνήµης απαιτεί µερικές δεκάδες κύκλους για να ολοκληρωθεί. Σε όλες αυτές τις περιπτώσεις, κάποια εντολή του προγράµµατος είναι αναγκασµένη να διακοπεί µέχρι την ολοκλήρωση της συγκεκριµένης λειτουργίας εισόδου-εξόδου ή της προσπέλασης κεντρικής µνήµης. Ο χρόνος που µεσολαβεί κατά την αναµονή του προγράµµατος εφαρµογής είναι χαµένος χρόνος για το συγκεκριµένο πρόγραµµα. ΠΑΡΑ ΕΙΓΜΑ 6 Έστω ότι ο χρόνος προσπέλασης µιας λέξης κεντρικής µνήµης σε ένα υπολογιστικό σύστηµα 1GHz είναι 50ns. Να βρεθεί το ελάχιστο ποσοστό χαµένου χρόνου λειτουργίας για ένα πρόγραµµα εφαρµογής, όταν η µέση συχνότητα προσπέλασης στη µνήµη είναι µία κάθε πέντε εντολές και διαδοχικές εντολές χωρίς προσπέλαση µνήµης ολοκληρώνονται ανά έναν κύκλο µηχανής. Με ρολόι 1GHz ο χρόνος του κύκλου µηχανής είναι 1ns. Έτσι, στην περίπτωση που η προσπέλαση της κεντρικής µνήµης ολοκληρώνεται σε χρόνο 50ns, η επιβάρυνση του χρόνου εκτέλεσης του προγράµµατος για την προσπέλαση αυτή είναι 50ns για κάθε 5 εντολές, εφόσον κάθε προσπέλαση γίνεται στην κεντρική µνήµη. Αν υποθέσουµε ότι ο χρόνος προσπέλασης µνήµης δεν περιλαµβάνει τον ένα κύκλο για την ολοκλήρωση των αντίστοιχων εντολών, θα απαιτούνται συνολικά 55ns για ολοκλήρωση 5 διαδοχικών εντολών, όταν ιδανικά θα θέλαµε χρόνο ίσο µε 5ns. Εποµένως, και δεδοµένου ότι πιθανά να έχουµε και άλλες απώλειες χρόνου, όπως για παράδειγµα για λειτουργίες εισόδου-εξόδου, ο ελάχιστος χαµένος χρόνος είναι 50ns ανά 55ns, σε ποσοστό δηλαδή: 50/55 = 90.91%, του συνολικού χρόνου εκτέλεσης του προγράµµατος. ΠΑΡΑ ΕΙΓΜΑ 7 Βρείτε το ρυθµό µεταφοράς δεδοµένων σε µια αρτηρία επεξεργαστή-µνήµης για ανάγνωση από τη µνήµη όταν η αρτηρία (σύγχρονη) έχει κύκλο 50ns, και κάθε µεταφορά στην αρτηρία απαιτεί χρόνο ενός κύκλου. Η αρτηρία έχει 32 γραµµές δεδοµένων και ανεξάρτητες γραµµές διευθύνσεων. Κάθε προσπέλαση γίνεται για λέξεις των 32 bits. Ο χρόνος ανάγνωσης της µνήµης είναι 200ns ανά λέξη. 8
Εάν τώρα η προσπέλαση στη µνήµη γίνεται για µπλοκ των 8 λέξεων, έτσι ώστε µετά την πρώτη, κάθε επόµενη λέξη του µπλοκ να διαβάζεται σε 20ns, βρείτε και το ρυθµό µεταφοράς δεδοµένων. Σε µια (σύγχρονη) αρτηρία η επικοινωνία µεταξύ δύο µονάδων που συνδέονται µεταξύ τους µέσω αυτής γίνεται σε προκαθορισµένους κύκλους του κοινού ρολογιού των µονάδων. Έτσι για µια σύγχρονη αρτηρία κύκλου 50ns η προσπέλαση της µνήµης για ανάγνωση γίνεται ως εξής: 1. Αποστολή διεύθυνσης προσπέλασης Η ΚΜΕ τοποθετεί στην αρτηρία τη διεύθυνση προσπέλασης, ενώ ταυτόχρονα ενεργοποιεί όποια σήµατα ελέγχου απαιτούνται για την προσπέλαση. Η µνήµη αντιλαµβάνεται τα σήµατα ελέγχου και παραλαµβάνει τη διεύθυνση σε χρόνο ενός κύκλου της αρτηρίας, δηλαδή σε 50ns. 2. Ανάγνωση της µνήµης και αποστολή δεδοµένων στην ΚΜΕ Η µνήµη ολοκληρώνει την ανάγνωση και τοποθετεί στην αρτηρία τη λέξη που διάβασε στον προκαθορισµένο κύκλο µετά την παραλαβή της διεύθυνσης, σε χρόνο δηλαδή τόσων κύκλων, όσων απαιτούνται για να καλυφτεί ο χρόνος ανάγνωσης των 200ns. 3. Ολοκλήρωση προσπέλασης Η ΚΜΕ παραλαµβάνει τη λέξη από την αρτηρία µετά από έναν ακόµα κύκλο, δηλαδή σε 50ns, και απενεργοποιεί τα σήµατα ελέγχου. Ταυτόχρονα η µνήµη απελευθερώνει την αρτηρία. Ο συνολικός χρόνος προσπέλασης θα είναι εποµένως: Τ1 = 50ns + 4x50ns + 50ns = 300ns και ο αντίστοιχος ρυθµός µεταφοράς δεδοµένων: Β1 = 1λέξη / Τ1(σύγχρονη) = 4bytes / 300ns = 13.3MB/sec Άµεση προσπέλαση µνήµης Ένας ελεγκτής που διαβάζει ή γράφει τα δεδοµένα προς και από τη µνήµη χωρίς καµία ανάµιξη της CPU λέµε ότι κάνει άµεση προσπέλαση µνήµης (DMA Direct Memory Access). Όταν ολοκληρωθεί η µεταφορά, συνήθως ο ελεγκτής προκαλεί µια διακοπή (interrupt), η οποία αναγκάζει τη CPU να αναστείλει προσωρινά την εκτέλεση του τρέχοντος προγράµµατος και να αρχίσει να εκτελεί µια ειδική διαδικασία, που ονοµάζεται χειριστής διακοπών (interrupt handler), η οποία ελέγχει για σφάλµατα και πληροφορεί το λειτουργικό σύστηµα ότι η είσοδος/έξοδος ολοκληρώθηκε. Όταν τελειώσει ο χειριστής διακοπών, η CPU συνεχίζει την εκτέλεση του προγράµµατος που είχε ανασταλεί όταν συνέβη η διακοπή. ΠΑΡΑ ΕΙΓΜΑ 8 Σε τι είδος συσκευών εισόδου-εξόδου είναι προτιµότερη η επικοινωνία αυτών µε τη µνήµη µέσω της µεθόδου Άµεσης Προσπέλασης Μνήµης (DMA -Direct Memory Access); Είναι δυνατόν µια συσκευή να επιβαρύνει την ΚΜΕ περισσότερο µε DMA παρά µε προγραµµατισµένη είσοδο-έξοδο; 9
Η DMA εξυπηρετεί την επικοινωνία της συσκευής εισόδου-εξόδου µε τη µνήµη, και αφαιρεί από την ΚΜΕ το βάρος της µεταφοράς δεδοµένων µεταξύ της συσκευής και της µνήµης. Για κάθε όµως λειτουργία εισόδου-εξόδου υπάρχει υψηλό κόστος αρχικοποίησης και ολοκλήρωσης της διαδικασίας DMA. Έτσι, η ΚΜΕ διευκολύνεται ουσιαστικά µε την DMA, µόνο όταν η συσκευή που χρησιµοποιεί DMA µεταφέρει µεγάλο όγκο δεδοµένων από και προς τη µνήµη, όπως συµβαίνει χαρακτηριστικά µε τις συσκευές αποθήκευσης, π.χ. τις µονάδες δίσκου. Όταν από την άλλη µεριά η λειτουργία εισόδου-εξόδου δε συνοδεύεται από µεταφορά µεγάλου όγκου δεδοµένων µεταξύ της συσκευής και της µνήµης, όπως συµβαίνει π.χ. µε το ποντίκι, το κόστος αρχικοποίησης και ολοκλήρωσης της διαδικασίας DMA είναι απαγορευτικό για την DMA καθώς γίνεται υψηλότερο από το κόστος της προγραµµατισµένης εισόδουεξόδου. ΠΑΡΑ ΕΙΓΜΑ 9 Υποθέστε ότι ο ελεγκτής DMA και το σύστηµα µνήµης επιτρέπουν µεταφορά δεδοµένων 1.000.000 bytes/sec. Αν µεταφέρουµε δεδοµένα από µια ταινία 800bpi 75in/sec µε ένα ελεγκτή DMA, ποια συσκευή θα καθυστερήσει τη µεταφορά: η ταινία ή το σύστηµα DMA; Έχουµε ότι DMA = 1.000.000 µεταφορές ανά δευτερόλεπτο, Ταινία = 800bpi x 75in/sec = 60.000 µεταφορές ανά δευτερόλεπτο. Εποµένως η ταινία είναι ο περιοριστικός παράγων. 10