Aρχιτεκτονική Yπολογιστών I
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών
ΠΛHPOΦOPIKH Θεµατική Ενότητα
ΨHΦIAKA ΣYΣTHMATA Τόµος B'
Aρχιτεκτονική Yπολογιστών I ∆HMHTPIOΣ NIKOΛOΣ Kαθηγητής Tµήµατος Mηχανικών H/Y & Πληροφορικής Πανεπιστηµίου Πατρών
ΠATPA 2001
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα ΨHΦIAKA ΣYΣTHMATA Τόµος B' Aρχιτεκτονική Yπολογιστών I Συγγραφή ∆HMHTPIOΣ NIKOΛOΣ Kαθηγητής Tµήµατος Mηχανικών H/Y & Πληροφορικής Πανεπιστηµίου Πατρών Κριτική Ανάγνωση XAPI∆HMOΣ BEPΓOΣ Λέκτορας Tµήµατος Mηχανικών H/Y & Πληροφορικής Πανεπιστηµίου Πατρών Ακαδηµαϊκός Υπεύθυνος για την επιστηµονική επιµέλεια του τόµου ΣΩKPATHΣ KATΣIKAΣ Καθηγητής Tµήµατος Mαθηµατικών Πανεπιστηµίου Aιγαίου Επιµέλεια στη µέθοδο της εκπαίδευσης από απόσταση ΓEPAΣIMOΣ MΩPAΪTHΣ Γλωσσική Επιµέλεια EΛΠI∆A BAKAΛOΓΛOY Τεχνική Επιµέλεια ΕΣΠΙ ΕΚ∆ΟΤΙΚΗ Ε.Π.Ε. Καλλιτεχνική Επιµέλεια – Σελιδοποίηση TYPORAMA Συντονισµός ανάπτυξης εκπαιδευτικού υλικού και γενική επιµέλεια των εκδόσεων ΟΜΑ∆Α ΕΚΤΕΛΕΣΗΣ ΕΡΓΟΥ ΕΑΠ / 1997–2001 ISBN: 960–538–196–6 Kωδικός Έκδοσης: ΠΛH 21/2 Copyright 2000 για την Ελλάδα και όλο τον κόσµο ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Οδός Παπαφλέσσα & Υψηλάντη, 26222 Πάτρα – Τηλ: (0610) 314094, 314206 Φαξ: (0610) 317244 Σύµφωνα µε το Ν. 2121/1993, απαγορεύεται η συνολική ή αποσπασµατική αναδηµοσίευση του βιβλίου αυτού ή η αναπαραγωγή του µε οποιοδήποτε µέσο χωρίς την άδεια του εκδότη.
Aφιερώνεται στη µνήµη της µητέρας µου Eυαγγελίας, στον πατέρα µου Bασίλη, στη σύζυγό µου Γιώτα και στις κόρες µου Eυαγγελία και Eλένη
¶ÂÚȯfiÌÂÓ· K∂º∞§∞π√ 1
∂ÈÛ·ÁˆÁ‹ ÛÙËÓ ‰ÔÌ‹, ÔÚÁ¿ÓˆÛË, ÏÂÈÙÔ˘ÚÁ›· Î·È ·ÍÈÔÏfiÁËÛË ÙˆÓ ˘ÔÏÔÁÈÛÙÒÓ
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................... 13 1.1 1.2 1.3
1.4 1.5
Υλικό και λογισµικό .............................................................................................................. 14 Αρχιτεκτονική υπολογιστών .......................................................................................... 16 ∆οµή, οργάνωση και λειτουργία υπολογιστών .............................................. 21 1.3.1 ∆οµή του υπολογιστή ............................................................................................. 22 1.3.2 Κεντρική µονάδα επεξεργασίας .................................................................... 24 1.3.3 Σύστηµα µνήµης ......................................................................................................... 28 1.3.4 Κρυφή µνήµη (Cache memory) .................................................................... 33 1.3.5 Ιδεατή µνήµη (Virtual Memory) ................................................................... 37 Σύνοψη ενότητας ........................................................................................................................ 39 Μονάδες εισόδου/εξόδου .................................................................................................. 40 Απόδοση υπολογιστών ........................................................................................................ 42
Σύνοψη κεφαλαίου .................................................................................................................................... 44 K∂º∞§∞π√ 2
√ÚÁ¿ÓˆÛË Ù˘ ÏËÚÔÊÔÚ›·˜ ÛÙÔÓ ˘ÔÏÔÁÈÛÙ‹
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................... 47 2.1
2.2
∆εδοµένα ......................................................................................................................................... 48 2.1.1 Αριθµητικά δεδοµένα ............................................................................................. 48 2.1.2 Αλφαριθµητικά σύµβολα .................................................................................... 57 Σύνοψη ενότητας ........................................................................................................................ 60 Εντολές ............................................................................................................................................. 61 2.2.1 Είδη εντολών γλώσσας µηχανής .................................................................. 61 2.2.2 Τρόποι διευθυνσιοδότησης της κύριας µνήµης (Addressing Modes) ................................................................................................ 63 2.2.3 Είδη και µέγεθος τελούµενων ......................................................................... 68 2.2.4 Ταξινόµηση υπολογιστών βάσει του συνόλου εντολών .......... 69 2.2.5 Κωδικοποίηση του συνόλου εντολών ...................................................... 72
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
8
Σύνοψη ενότητας ........................................................................................................................ 74 Σύνοψη κεφαλαίου .................................................................................................................................... 74 K∂º∞§∞π√ 3
∫ÂÓÙÚÈ΋ ÌÔÓ¿‰· ÂÂÍÂÚÁ·Û›·˜
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................... 77 3.1
Μονάδα επεξεργασίας δεδοµένων ............................................................................ 78 3.1.1 ∆οµή της µονάδας επεξεργασίας δεδοµένων ................................... 78 3.1.2 Μονάδα επεξεργασίας δεδοµένων σταθερής υποδιαστολής ..... 79 3.1.3 Μονάδα επεξεργασίας δεδοµένων κινητής υποδιαστολής .... 94 Σύνοψη ενότητας ........................................................................................................................ 98 3.2 Μονάδα Ελέγχου ...................................................................................................................... 98 3.2.1 ∆οµή της µονάδας ελέγχου ............................................................................... 98 3.2.2 Υλοποίηση της µονάδας ελέγχου σαν ακολουθιακό κύκλωµα ......................................................................................................................... 101 3.2.3 Υλοποίηση της µονάδας ελέγχου µε την τεχνική του µικροπρογραµµατισµού .......................................................................... 102 3.2.4 Παραµένων έλεγχος .............................................................................................. 114 Σύνοψη ενότητας ..................................................................................................................... 115 Σύνοψη κεφαλαίου ................................................................................................................................. 115 K∂º∞§∞π√ 4
™‡ÛÙËÌ· ÌÓ‹Ì˘
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................ 117 4.1
4.2
Τεχνολογία µνηµών ............................................................................................................. 119 4.1.1 Ηµιαγωγικές µνήµες ............................................................................................. 119 4.1.2 Μαγνητικές µνήµες ............................................................................................... 129 4.1.3. Οπτικές µνήµες ....................................................................................................... 132 Σύνοψη ενότητας ..................................................................................................................... 134 Ιεραρχία µνήµης .................................................................................................................... 136 4.2.1. Τοπικότητα των αναφορών ........................................................................... 138 4.2.2. Σχεδιαστικοί σκοποί ........................................................................................... 140 4.2.3. Κόστος ............................................................................................................................ 141 4.2.4. Απόδοση ιεραρχικής µνήµης ...................................................................... 141
¶EPIEXOMENA
Σύνοψη ενότητας ..................................................................................................................... 142 4.3 Κρυφή µνήµη ........................................................................................................................... 143 4.3.1 Τακτική προσκόµισης µπλοκ πληροφορίας (fetch policy) ............................................................................................................... 144 4.3.2 Τρόπος απεικόνισης µπλοκ της κύριας µνήµης σε πλαίσια της κρυφής µνήµης ................................................................. 145 4.3.3 Στρατηγική απελευθέρωσης πλαισίων της κρυφής µνήµης για προσκόµιση µπλοκ της κύριας µνήµης ...................................... 159 4.3.4 Τακτική ενηµέρωσης του επόµενου επιπέδου της ιεραρχικής µνήµης ....................................................................................... 160 Σύνοψη ενότητας ..................................................................................................................... 164 4.4 Κύρια µνήµη ............................................................................................................................. 166 Σύνοψη κεφαλαίου ................................................................................................................................. 169 K∂º∞§∞π√ 5
™‡ÛÙËÌ· ‰È·Û‡Ó‰ÂÛ˘ Î·È ÂÈÛfi‰Ô˘–ÂÍfi‰Ô˘
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................ 171 5.1 Αρτηρίες (Buses) .................................................................................................................. 172 5.1.1 Είδη αρτηριών ........................................................................................................... 172 5.1.2 Σύγχρονες και ασύγχρονες αρτηρίες ..................................................... 179 5.1.3 Ταχύτητα αρτηρίας ................................................................................................ 183 5.1.4 Χρήση της αρτηρίας και διαιτησία ......................................................... 183 Σύνοψη ενότητας ..................................................................................................................... 187 5.2 Μέθοδοι ελέγχου της διαδικασίας εισόδου/εξόδου ................................. 188 5.2.1 ∆ιευθυνσιοδότηση των µονάδων εισόδου/εξόδου ..................... 188 5.2.2 Ο ρόλος του λειτουργικού συστήµατος στην διαδικασία εισόδου/εξόδου ......................................................................................................... 190 5.2.3 Συµµετοχή της ΚΜΕ στη διαδικασία εισόδου/εξόδου .......... 191 Σύνοψη ενότητας ..................................................................................................................... 198 Σύνοψη κεφαλαίου ................................................................................................................................. 198 ¶ A PA P T H M A A
∞ÚÈıÌËÙÈο Û˘ÛÙ‹Ì·Ù·
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................ 201 Α.1 Χρήση αριθµητικών συστηµάτων ............................................................................... 201
9
10
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
Α.2 Μετατροπή αριθµών από ένα αριθµητικό σύστηµα σε άλλο ............... 204 Aπαντήσεις Aσκήσεων Aυτοαξιολόγησης ..................................................................... 209 Eνδεικτικές Aπαντήσεις ∆ραστηριοτήτων ..................................................................... 237 Γλωσσάρι / Eυρετήριο ...................................................................................................................... 239 Bιβλιογραφία ............................................................................................................................................ 243
¶ÚfiÏÔÁÔ˜
Το βιβλίο αυτό αναφέρεται στην Αρχιτεκτονική Υπολογιστών µε την ευρύτερη έννοια του όρου, που περιλαµβάνει τη δοµή, την οργάνωση και τη λειτουργία του υπολογιστή. Έχει γίνει προσπάθεια να αποτελέσει ένα αυτοτελές κείµενο. Τα µόνα προαπαιτούµενα είναι κάποιες στοιχειώδεις γνώσεις λογικού σχεδιασµού και προγραµµατισµού. Το βιβλίο αποτελείται από πέντε κεφάλαια και ένα παράρτηµα. Στο πρώτο κεφάλαιο γίνεται µία εισαγωγή στη δοµή, οργάνωση, λειτουργία και απόδοση των υπολογιστών. Επίσης γίνεται η διαµέριση του υπολογιστή σε τρία υποσυστήµατα, την Κεντρική Μονάδα Επεξεργασίας, το Σύστηµα Μνήµης και το Σύστηµα ∆ιασύνδεσης των Μονάδων και τις Μονάδες Εισόδου/Εξόδου. Το δεύτερο κεφάλαιο αναφέρεται στην οργάνωση της πληροφορίας στον υπολογιστή. Σαν πληροφορία θεωρούµε τόσο τα προγράµµατα όσο και τα δεδοµένα, αριθµητικά και µη. Στο τρίτο κεφάλαιο γίνεται η παρουσίαση της Κεντρικής Μονάδας Επεξεργασίας. Το πρώτο µέρος αφιερώνεται στη µονάδα επεξεργασίας δεδοµένων και το δεύτερο στη µονάδα ελέγχου. Στο τέταρτο κεφάλαιο παρουσιάζεται το σύστηµα της µνήµης, ενώ στο πέµπτο κεφάλαιο παρουσιάζεται το σύστηµα διασύνδεσης των µονάδων ενός συστήµατος και η διαδικασία εισόδου/εξόδου πληροφοριών από τον υπολογιστή. Στο παράρτηµα παρουσιάζονται διάφορα αριθµητικά συστήµατα και µέθοδοι µετατροπής από ένα σύστηµα σε άλλο. Θεωρώ ότι η εµπειρία και η γνώση που απεκόµισα τα τελευταία δέκα χρόνια που διδάσκω το µάθηµα Αρχιτεκτονική Υπολογιστών στο τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής της Πολυτεχνικής Σχολής του Πανεπιστηµίου Πατρών ήταν καθοριστική για τη συγγραφή αυτού του βιβλίου. Εύχοµαι το βιβλίο αυτό να φανεί χρήσιµο στους αναγνώστες. Τελειώνοντας θα ήθελα να ευχαριστήσω τη σύζυγό µου για την κατανόηση που έδειξε όλο το διάστηµα της συγγραφής του βιβλίου. Οι κόρες µου ήταν και είναι πολύ µικρές για να δείξουν κατανόηση. Ελπίζω να µην ταύτισαν το Ελληνικό Ανοικτό Πανεπιστήµιο µε την κακιά µάγισσα των παραµυθιών.
Πάτρα 5 Ιουνίου 2000 ∆ηµήτρης Νικολός
∫
∂ÈÛ·ÁˆÁ‹ ÛÙË ¢ÔÌ‹, √ÚÁ¿ÓˆÛË, §ÂÈÙÔ˘ÚÁ›· Î·È ∞ÍÈÔÏfiÁËÛË ÙˆÓ ÀÔÏÔÁÈÛÙÒÓ
™ÎÔfi˜ Σκοπός του κεφαλαίου αυτού είναι να µάθετε από τι αποτελείται ένας υπολογιστής, πώς λειτουργεί και ποια είναι τα χαρακτηριστικά, που καθορίζουν την αρχιτεκτονική του. Επίσης να καταστείτε ικανοί να εκτιµήσετε την απόδοση ενός υπολογιστή. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει αυτό το κεφάλαιο, θα µπορείτε να : • περιγράψετε τις µονάδες από τις οποίες αποτελείται ένας υπολογιστής • περιγράψετε τον τρόπο λειτουργίας ενός υπολογιστή • εκτιµήσετε την απόδοσή του ŒÓÓÔȘ ÎÏÂȉȿ • Yλικό
• Kύρια µνήµη
• Λογισµικό
• Bοηθητική µνήµη
• Aρχιτεκτονική υπολογιστών
• Aρτηρία διασύνδεσης
• Oικογένεια υπολογιστών
• Mονάδες εισόδου και εξόδου
• Kεντρική µονάδα επεξεργασίας
• Aπόδοση υπολογιστή
∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Το κεφάλαιο αυτό αποτελείται από πέντε ενότητες. Στην πρώτη ενότητα κάνουµε µία εισαγωγή στο υλικό και το λογισµικό του υπολογιστή. Στη δεύτερη ενότητα παρουσιάζουµε τις έννοιες της αρχιτεκτονικής των υπολογιστών και οικογένειας υπολογιστών. Στην τρίτη ενότητα περιγράφουµε τη δοµή, οργάνωση και λειτουργία του υπολογιστή, ενώ στην τέταρτη ενότητα ασχολούµαστε µε τις µονάδες εισόδου/εξόδου. Τέλος, στην πέµπτη ενότητα περιγράφονται τρόποι εκτίµησης της απόδοσης του υπολογιστή.
1 ∂
º
∞
§
∞
π
√
14
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
1.1 ÀÏÈÎfi Î·È ÏÔÁÈÛÌÈÎfi
™ÎÔfi˜ Σκοπός της ενότητας είναι να κατανοήσετε τι είναι το υλικό (hardware) και τι το λογισµικό (software). Επίσης να καταστείτε ικανοί να διακρίνετε το λογισµικό σε διάφορες κατηγορίες. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει αυτή την ενότητα ,θα µπορείτε να : • διακρίνετε τι είναι υλικό και τι είναι λογισµικό • ταξινοµείτε τα προγράµµατα, που εκτελούνται σε ένα υπολογιστικό σύστηµα, ανάλογα µε το σκοπό που αυτά εξυπηρετούν À§π∫√ ∫∞π §√°π™ªπ∫√
Ο υπολογιστής είναι ένα σύστηµα επεξεργασίας πληροφοριών, που παίρνει ως είσοδο την προς επεξεργασία πληροφορία και προγράµµατα, τα οποία καθορίζουν το είδος της επεξεργασίας που θα λάβει χώρα, και παράγει ως έξοδο τα αποτελέσµατα αυτής της επεξεργασίας. Οι πληροφορίες, που εισάγονται στον υπολογιστή προς επεξεργασία καθώς και τα αποτελέσµατα αυτής της επεξεργασίας, µπορεί να έχουν την µορφή αριθµών, κειµένου, εικόνας, σχηµάτων, φωνής ή ενός συνδυασµού αυτών. Τα προγράµµατα είναι µία ακολουθία εντολών, που περιγράφονται χρησιµοποιώντας µια συγκεκριµένη γλώσσα. Όπως µία φυσική γλώσσα, για παράδειγµα η Ελληνική και η Αγγλική, η γλώσσα, που χρησιµοποιούµε για να γράφουµε προγράµµατα, έχει τη δική της γραµµατική και το δικό της συντακτικό. Πρέπει να σηµειώσουµε ότι υπάρχουν περισσότερες από µία γλώσσες συγγραφής προγραµµάτων. Κάθε υπολογιστικό σύστηµα αποτελείται από το υλικό (hardware) και το λογισµικό (software). Το υλικό περιλαµβάνει το σύνολο των συσκευών, που αποτελούν το υπολογιστικό σύστηµα, για παράδειγµα τα ολοκληρωµένα κυκλώµατα, τους δίσκους, το πληκτρολόγιο και την οθόνη. Το λογισµικό µπορεί να ορισθεί σαν το σύνολο των προγραµµάτων, που εκτελούνται στο υπολογιστικό σύστηµα. Ένα υπολογιστικό σύστηµα µπορούµε να πούµε ότι αποτελείται από την κεντρική µονάδα και τις περιφερειακές µονάδες. Όσον αφορά το λογισµικό, µπορούµε να διακρίνουµε τρεις κατηγορίες:
À§π∫√ ∫∞π §√°π™ªπ∫√
• Tο λογισµικό του συστήµατος (system software) • Tο διαγνωστικό λογισµικό (diagnostic software) • Tο λογισµικό των εφαρµογών (application software) Το λογισµικό του συστήµατος διαχειρίζεται και κατανέµει τα αγαθά του συστήµατος και προσφέρει στον προγραµµατιστή τα αναγκαία εργαλεία για τη συγγραφή των προγραµµάτων εφαρµογών. Το λογισµικό του συστήµατος αποτελείται από : 1. Λειτουργικό σύστηµα (operating system). Το λειτουργικό σύστηµα είναι υπεύθυνο για την καλύτερη κατανοµή και εκµετάλλευση του υλικού, όπως επίσης και για τη φιλικότερη εµφάνιση του υπολογιστή στο χρήστη. 2. Βοηθητικά προγράµµατα (utility programs). Από τα πιο γνωστά προγράµµατα, που ανήκουν στην κατηγορία αυτή, είναι : • Προγράµµατα που δίνουν τη δυνατότητα στο χρήστη να δηµιουργήσει νέα αρχεία ή να σβήσει ήδη υπάρχοντα, να αντιγράψει αρχεία από µία θέση σε κάποια άλλη θέση του συστήµατος αρχείων κλπ. Σαν παράδειγµα αναφέρουµε το πρόγραµµα "explorer" των WINDOWS 95. • Προγράµµατα που βοηθάνε τον προγραµµατιστή να γράψει, τροποποιήσει και αποθηκεύσει προγράµµατα και δεδοµένα, χρησιµοποιώντας το πληκτρολόγιο και τη οθόνη (editors). • Τα προγράµµατα βιβλιοθήκης (library routines). Εδώ περιλαµβάνονται προγράµµατα ταξινόµησης των εγγραφών ενός αρχείου, υπολογισµού κλασσικών αριθµητικών συναρτήσεων κλπ. • Οι µεταφραστές (translators) και οι διερµηνείς (interpreters). Το διαγνωστικό λογισµικό αποτελείται από ένα σύνολο προγραµµάτων, που µε τη χρήση τους µπορούµε να ελέγξουµε την ορθή λειτουργία των διάφορων µονάδων του υπολογιστικού συστήµατος. Το διαγνωστικό λογισµικό βοηθάει στη γρήγορη ανίχνευση και τον εντοπισµό της θέσης εµφάνισης βλαβών. Η αύξηση του κόστους παροχής υπηρεσιών αλλά και το κόστος, που συνεπάγεται η αδυναµία χρήσης του υπολογιστή µας λόγω βλάβης, οδηγεί σε αύξηση των απαιτήσεων υλοποίησης υπολογιστικών συστηµάτων στα οποία η διάγνωση βλαβών και η συντήρηση να γίνεται εύκολα. Εποµένως, η σπουδαιότητα του διαγνωστικού λογισµικού αυξάνεται συνεχώς. Προγράµµατα εφαρµογών. Ο αριθµός των προγραµµάτων εφαρµογών είναι
15
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
16
τεράστιος. Σαν παραδείγµατα µπορούµε να αναφέρουµε τα συστήµατα διαχείρισης βάσεων δεδοµένων (Data Base Management Systems), τα λογιστικά φύλλα, τους εξοµοιωτές, τα προγράµµατα που προσφέρονται για σχεδίαση µε τη βοήθεια του υπολογιστή (Computer Aided Design), τις εφαρµογές πολυµέσων και τις δικτυακές εφαρµογές. ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.1 ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.2
α. Αναφέρετε τις κύριες κατηγορίες, στις οποίες διακρίνεται το λογισµικό.
Τι είναι σωστό και τι είναι λάθος από τα παρακάτω; α. Το πληκτρολόγιο και η οθόνη ανήκουν στο υλικό του υπολογιστή. β. Σε κάθε εν χρήσει υπολογιστή σήµερα υπάρχει κάποιο λειτουργικό σύστηµα. γ. Όλοι οι εν χρήσει υπολογιστές είναι αναγκαίο να διαθέτουν τα ίδια βοηθητικά προγράµµατα.
1.2 ∞Ú¯ÈÙÂÎÙÔÓÈ΋ ˘ÔÏÔÁÈÛÙÒÓ
™ÎÔfi˜ Σκοπός της ενότητας είναι να κατανοήσετε ποια είναι τα χαρακτηριστικά που ορίζουν την αρχιτεκτονική ενός υπολογιστή και τη χρησιµότητα της οικογένειας υπολογιστών. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει αυτή την ενότητα, θα µπορείτε να: • διακρίνετε τις διαφορές µεταξύ δοµής, οργάνωσης, υλοποίησης και αρχιτεκτονικής σε επίπεδο γλώσσας µηχανής • ταξινοµήσετε ένα σύνολο υπολογιστών σε οικογένειες ∞ƒÃπ∆∂∫∆√¡π∫∏ À¶√§√°π™∆ø¡
Αν και ο όρος αρχιτεκτονική υπολογιστών χρησιµοποιείται για πολλά χρόνια, δεν υπάρχει ένας γενικά αποδεκτός ορισµός. Για πολλούς υπάρχουν πολ-
∞ƒÃπ∆∂∫∆√¡π∫∏ À¶√§√°π™∆ø¡
17
λές διάκριτες αρχιτεκτονικές, που περιγράφουν ένα υπολογιστικό σύστηµα σε διάφορα επίπεδα. Η αρχιτεκτονική σε ένα επίπεδο µπορεί να θεωρηθεί σαν η λειτουργική εµφάνιση του συστήµατος, που βρίσκεται κάτω από αυτό το επίπεδο, σ' ένα χρήστη, που βρίσκεται πάνω από το επίπεδο αυτό. Η λειτουργική εµφάνιση, δηλαδή συµπεριφορά, ιδιότητες και δυνατότητες του συστήµατος σ' ένα επίπεδο, καθορίζεται από τη δοµή και οργάνωση του συστήµατος κάτω από αυτό το επίπεδο. Η δοµή περιγράφει τις µονάδες, από τις οποίες αποτελείται το σύστηµα, και τον τρόπο διασύνδεσής τους, ενώ η οργάνωση περιγράφει τη δυναµική αλληλεπίδραση και τη διαχείριση των µονάδων. Πρέπει να σηµειώσουµε ότι η απόδοση του υπολογιστή σ' ένα επίπεδο καθορίζεται από τη δοµή και την οργάνωση του συστήµατος κάτω από αυτό το επίπεδο, καθώς και τον τρόπο υλοποίησής του. Ο χρήστης, που βρίσκεται πάνω από ένα επίπεδο αρχιτεκτονικής, συνήθως δεν ενδιαφέρεται για τις λεπτοµέρειες του συστήµατος κάτω από αυτό το επίπεδο, παρά µόνο για τις ιδιότητες επικοινωνίας µε τον υπολογιστή σ' αυτό το επίπεδο.
APXITEKTONIKH
XPHΣTEΣ
επίπεδο συστήµατος
χρήστες z εφαρµογών προγράµµατα εφαρµογών
επίπεδο γλωσσώνz προγραµµατισµού
προγραµµατιστέςz εφαρµογών µεταφραστές γλωσσώνz προγραµµατισµού
επίπεδο λειτουργικούz συστήµατος
προγραµµατιστέςz συστήµατος διαχείρηση αγαθών
επίπεδο συνόλουz εντολών γλώσσαςz µηχανής
προγραµµατιστέςz σε γλώσσαz µηχανής µικροκώδικας προγραµµατιστέςz σε επίπεδοz µικροπρογράµµατος
επίπεδο µικρο-z προγραµµατισµού υλικό
™¯‹Ì· 1.1
∆ιάφορα επίπεδα αρχιτεκτονικής υπολογιστών.
18
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
Στο σχήµα 1.1 δίνεται µία εικόνα διαφόρων επιπέδων αρχιτεκτονικής και οι χρήστες κάθε επιπέδου. Τα χαρακτηριστικά της αρχιτεκτονικής σε επίπεδο συστήµατος καθορίζονται από το σύνολο των προγραµµάτων εφαρµογής. Χρήστες είναι οι χρήστες εφαρµογών και το προσωπικό συντήρησης. Η αρχιτεκτονική σε επίπεδο γλωσσών προγραµµατισµού περιγράφει όλα τα εργαλεία και τις υπηρεσίες, που προσφέρονται στον προγραµµατιστή εφαρµογών. Τα χαρακτηριστικά της αρχιτεκτονικής σε επίπεδο γλωσσών προγραµµατισµού καθορίζονται από το σύνολο των µεταφραστών και οποιωνδήποτε άλλων προγραµµάτων υποστήριξης ανάπτυξης λογισµικού εφαρµογών. Σ' αυτό το επίπεδο χρήστες είναι οι προγραµµατιστές εφαρµογών. Η αρχιτεκτονική σε επίπεδο λειτουργικού συστήµατος αφορά τα χαρακτηριστικά του λειτουργικού συστήµατος. Τα χαρακτηριστικά του λειτουργικού συστήµατος καθορίζονται από τον τρόπο που γίνεται η διαχείριση των αγαθών του συστήµατος, για παράδειγµα διαχείριση µνήµης, χρονοκατανοµή των διατάξεων (device allocation) και χρονοπρογραµµατισµός (scheduling). Σ' αυτό το επίπεδο χρήστες είναι οι προγραµµατιστές συστήµατος. Η αρχιτεκτονική σε επίπεδο εντολών γλώσσας µηχανής περιγράφει την οργάνωση της κύριας µνήµης, τους καταχωρητές που είναι προσπελάσιµοι από τον προγραµµατιστή σε γλώσσα µηχανής, τα διαθέσιµα είδη δεδοµένων και δοµών δεδοµένων, όπως και τον τρόπο κωδικοποίησής τους και αναπαράστασής τους, τη µορφή και το σύνολο των εντολών και τους τρόπους καθορισµού διευθύνσεων (addressing modes). Χρήστες στην προκειµένη περίπτωση είναι οι προγραµµατιστές σε γλώσσα µηχανής. Το όριο, στο οποίο ορίζεται η αρχιτεκτονική σε επίπεδο εντολών γλώσσας µηχανής, είναι το κλασσικό όριο διασύνδεσης υλικού–λογισµικού. Η αρχιτεκτονική σε επίπεδο µικροπρογραµµατισµού δίνει όλη την πληροφορία που χρειάζεται κάποιος, για να γράψει µικροπρογράµµατα ή να γράψει έναν µεταφραστή για µία υψηλού επιπέδου γλώσσα µικροπρογραµµατισµού. Είναι φανερό ότι αυτό το επίπεδο αρχιτεκτονικής υπάρχει µόνο στους υπολογιστές, που χρησιµοποιούν την τεχνική του µικροπρογραµµατισµού. Στην πλειοψηφία των σύγχρονων εµπορικών επεξεργαστών δεν χρησιµοποιείται η τεχνική αυτή. Στο βιβλίο αυτό, όπως και σε πολλά άλλα σύγχρονα βιβλία αρχιτεκτονικής υπολογιστών, θα θεωρήσουµε την αρχιτεκτονική υπολογιστών µε την ευρεία της έννοια που περικλείει την αρχιτεκτονική σε επίπεδο εντολών γλώσσας µηχανής, τη δοµή, την οργάνωση, την υλοποίηση (implementation) και την
∞ƒÃπ∆∂∫∆√¡π∫∏ À¶√§√°π™∆ø¡
απόδοση (performance). Η δοµή δίνει τις µονάδες υλικού, από τις οποίες αποτελείται ο υπολογιστής, και τον τρόπο που συνδέονται µεταξύ τους, η οργάνωση περιγράφει τη δυναµική αλληλεπίδραση και τη διαχείριση των µονάδων και η υλοποίηση δίνει τον ακριβή σχεδιασµό των διαφόρων µονάδων του υπολογιστή και την τεχνολογία που χρησιµοποιείται, CMOS, BiCMOS κλπ. Σαν παράδειγµα αναφέρουµε ότι η πληροφορία σχετικά µε το εάν ένας αθροιστής είναι διαδοχικού κρατουµένου (ripple carry) ή πρόβλεψης κρατουµένου (carry lookahead) αφορά την υλοποίηση του υπολογιστή. Ένα σύνολο υπολογιστών, που έχουν την ίδια αρχιτεκτονική υπολογιστή σε επίπεδο εντολών γλώσσας µηχανής, λέµε ότι αποτελούν µία οικογένεια ή σειρά υπολογιστών. Το κύριο χαρακτηριστικό της οικογένειας υπολογιστών είναι ότι το λογισµικό, που είναι γραµµένο για κάποιον υπολογιστή της οικογένειας, θα εκτελείται σωστά, αν και συνήθως µε διαφορετική ταχύτητα, σε κάθε άλλο µέλος της οικογένειας. Σαν παραδείγµατα µπορούµε να αναφέρουµε τις οικογένειες υπολογιστών που βασίζονται αντίστοιχα στις αρχιτεκτονικές ΙΒΜ/4300, (IBM, Motorola, Apple)/PowerPC και Hewlett–Packard/PA–RISC. Οι υπολογιστές που ανήκουν σε µία οικογένεια, µπορεί να έχουν διαφορετική δοµή ή/και διαφορετική οργάνωση ή/και διαφορετική υλοποίηση, εποµένως η ταχύτητα εκτέλεσης προγραµµάτων και η τιµή αγοράς τους µπορεί να διαφέρει σηµαντικά. Μερικές φορές στα χαρακτηριστικά µιας αρχιτεκτονικής προστίθενται και κάποια νέα, χωρίς να αφαιρεθεί κάποιο από τα υπάρχοντα. Για παράδειγµα µπορεί να προστεθούν κάποιες νέες εντολές ή και κάποιοι νέοι τρόποι καθορισµού διευθύνσεων της µνήµης χωρίς να αφαιρεθεί κάποιος από τους ήδη υπάρχοντες. Σ' αυτή την περίπτωση τα προγράµµατα, που εκτελούνταν σε υπολογιστές που υλοποιούσαν την παλαιά αρχιτεκτονική, µπορούν να εκτελεστούν και σε υπολογιστές που υλοποιούν τη νέα αρχιτεκτονική, χωρίς να µπορεί να συµβεί και το αντίθετο. Σ' αυτή την περίπτωση λέµε ότι επεκτείναµε την αρχιτεκτονική µε έναν προς τα άνω συµβατό τρόπο. Σαν παράδειγµα αναφέρουµε την αρχιτεκτονική PA–2.0 της Hewlett–Packard, που είναι µία επέκταση της αρχιτεκτονικής PA–RISC. Θα πρέπει να τονίσουµε ότι η συµβατότητα, µε την οποία ασχοληθήκαµε, αναφέρεται σε επίπεδο εκτελέσιµου προγράµµατος. Προγράµµατα που είναι γραµµένα σε κάποια γλώσσα προγραµµατισµού υψηλού επιπέδου, µπορούν να µεταφραστούν, εφόσον βέβαια είναι διαθέσιµος ο κατάλληλος µεταφραστής (compiler), για το συγκεκριµένο υπολογιστή και να εκτελεστούν κανονικά.
19
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
20
Όταν λαµβάνουν χώρα εξελίξεις στη βασική τεχνολογία, οι υπολογιστές εξελίσσονται συνήθως προς δύο κατευθύνσεις. Η µία κατεύθυνση είναι προς υπολογιστές χαµηλότερου κόστους, που µπορούν να χρησιµοποιηθούν σε εφαρµογές όπου το κόστος χρησιµοποίησης των προηγούµενων υπολογιστών ήταν απαγορευτικό, διευρύνοντας έτσι το πεδίο εφαρµογών των υπολογιστών και εποµένως αυξάνοντας τον αριθµό των πωλήσεων. Κάθε χρόνο οι τιµές των υπολογιστών µειώνονται και γίνεται οικονοµικά βιώσιµη η χρήση τους σε νέες εφαρµογές. Η άλλη κατεύθυνση είναι προς υπολογιστές µε βελτιωµένη λειτουργικότητα και απόδοση, ώστε να είναι δυνατόν να λυθούν προβλήµατα που η επίλυσή τους µε τους προηγούµενους υπολογιστές ήταν απαγορευτικά χρονοβόρα. Για παράδειγµα, εάν χρησιµοποιώντας κάποιον υπολογιστή για την πρόβλεψη του καιρού της επόµενης ηµέρας απαιτούνταν επεξεργασία των δεδοµένων διάρκειας δύο ηµερών, η πρόβλεψη δεν θα είχε καµία αξία.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.3
∆ώστε τον ορισµό καθεµίας από τις επόµενες έννοιες : α. αρχιτεκτονική σε επίπεδο εντολών γλώσσας µηχανής β. δοµή γ. οργάνωση δ. υλοποίηση
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.4
α. Είναι σωστό ή λάθος ότι δύο υπολογιστές, που ανήκουν στην ίδια οικογένεια, έχουν την ίδια αρχιτεκτονική σε επίπεδο εντολών γλώσσας µηχανής; β. Ο υπολογιστής Β προέκυψε προσθέτοντας στην αρχιτεκτονική σε επίπεδο εντολών γλώσσας µηχανής του υπολογιστή Α δύο νέους τρόπους καθορισµού διευθύνσεων. Τι είναι σωστό από τα παρακάτω; i. Ένα πρόγραµµα που έχει γραφτεί για να εκτελεστεί στον υπολογιστή Α, όταν εκτελείται στον Β θα χρησιµοποιεί όλους τους τρόπους καθορισµού διευθύνσεων του Β. ii. Ένα πρόγραµµα που έχει γραφτεί για να εκτελεστεί στον υπολογιστή Β, µπορεί να εκτελεστεί και στον Α.
¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ ∫ ∞ π § ∂ π ∆ √ À ƒ ° π ∞ À ¶ √ § √ ° π ™ ∆ ø ¡
iii. Ένα πρόγραµµα που έχει γραφτεί για να εκτελεστεί στον υπολογιστή Α, µπορεί να εκτελεστεί και στον Β, αλλά δεν θα χρησιµοποιεί τους δύο νέους τρόπους καθορισµού διευθύνσεων.
1.3 ¢ÔÌ‹, ÔÚÁ¿ÓˆÛË Î·È ÏÂÈÙÔ˘ÚÁ›· ˘ÔÏÔÁÈÛÙÒÓ
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να κατανοήσετε από ποιες µονάδες αποτελείται ο υπολογιστής και πώς αυτές οι µονάδες συνδέονται µεταξύ τους (δοµή). Επίσης τον τρόπο, µε τον οποίο οι µονάδες αλληλεπιδρούν µεταξύ τους (οργάνωση) και πώς οι χρήστες επικοινωνούν µε τον υπολογιστή διαµέσου των µονάδων εισόδου και εξόδου. Η ενότητα αυτή, επίσης, θα βοηθήσει στο να κατανοήσετε τον τρόπο που η δοµή και η οργάνωση του υπολογιστή επηρεάζει την απόδοσή του, µε την οποία θα ασχοληθούµε στην ενότητα 1.5. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει αυτή την ενότητα, θα µπορείτε να: • περιγράψετε τις µονάδες από τις οποίες αποτελείται ένας υπολογιστής • κατανοήσετε τη σηµασία των βασικών χαρακτηριστικών κάθε µονάδας • περιγράψετε τις διαδικασίες που λαµβάνουν χώρα στον υπολογιστή κατά την εκτέλεση ενός προγράµµατος ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή αποτελείται από πέντε υποενότητες. Στην υποενότητα 1.3.1 παρουσιάζονται οι µονάδες, από τις οποίες αποτελείται ο υπολογιστής. Στην υποενότητα 1.3.2 δίνονται τα βασικά χαρακτηριστικά της Κεντρικής Μονάδας Επεξεργασίας, ενώ στην 1.3.3 παρουσιάζεται το σύστηµα µνήµης του υπολογιστή. Στις υποενότητες 1.3.4 και 1.3.5 γίνεται µία εισαγωγή στη λειτουργία της κρυφής και της ιδεατής µνήµης και τους σκοπούς, για τους οποίους τις χρησιµοποιούµε.
21
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
22
1.3.1 ¢ÔÌ‹ ÙÔ˘ ˘ÔÏÔÁÈÛÙ‹
Ένας υπολογιστής αποτελείται από την Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ), τη µνήµη, τις µονάδες εισόδου/εξόδου και το σύστηµα διασύνδεσης των µονάδων. Στο σχήµα 1.2 δίνεται η δοµή ενός τυπικού προσωπικού υπολογιστή. Η ΚΜΕ είναι η πλέον πολύπλοκη µονάδα του υπολογιστή και έχει την όλη υπευθυνότητα για την εκτέλεση των προγραµµάτων. Αποτελείται από τη Μονάδα Επεξεργασίας ∆εδοµένων (Data Path) και τη Μονάδα ελέγχου (Control Unit). Η Μονάδα Επεξεργασίας ∆εδοµένων µε τη σειρά της αποτελείται από κυκλώµατα για την εκτέλεση αριθµητικών και λογικών πράξεων και ένα σύνολο καταχωρητών, που ο αριθµός τους ποικίλλει από υπολογιστή σε υπολογιστή.
Mνήµηz µαγνητικούz δίσκου
Kύριαz µνήµη
Eλεγκτήςz µονάδαςz δίσκου
Kρυφή µνήµη
Aρτηρία συστήµατος ™¯‹Ì· 1.2
∆οµή ενός προσωπικού υπολογιστή.
Στη µνήµη ενός υπολογιστή αποθηκεύονται τα δεδοµένα, που θα επεξεργαστεί ο υπολογιστής, και τα προγράµµατα, που καθορίζουν την επεξεργασία που θα γίνει. Είναι γενικά επιθυµητό η µνήµη να είναι πολύ µεγάλης χωρητικότητας και τόσο γρήγορη όσο και η ΚΜΕ, ώστε η ΚΜΕ να µην καθυστερεί κατά την επικοινωνία της µε τη µνήµη. ∆υστυχώς, αφενός οι πολύ γρήγορες µνήµες είναι πολύ ακριβές αφετέρου, για κατασκευαστικούς
¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ ∫ ∞ π § ∂ π ∆ √ À ƒ ° π ∞ À ¶ √ § √ ° π ™ ∆ ø ¡
λόγους, µνήµες µεγάλης χωρητικότητας είναι πιο αργές από µνήµες µικρότερης χωρητικότητας της ίδιας τεχνολογίας. ∆εν είναι, λοιπόν, δυνατό (εκτός από πολύ µικρά συστήµατα ειδικού σκοπού) να χρησιµοποιούµε µία µόνο µνήµη υψηλής ταχύτητας. Γι’ αυτό, λοιπόν, το λόγο τα προς επεξεργασία δεδοµένα και τα προγράµµατα αποθηκεύονται σε µία ποικιλία από διαφορετικές µονάδες µνήµης µε πολύ διαφορετικά χαρακτηριστικά. Αυτές οι µονάδες µαζί µε τους αλγόριθµους που χρειάζονται για τον έλεγχο και τη διαχείριση της µνήµης αποτελούν το σύστηµα µνήµης του υπολογιστή. Μεταξύ των µονάδων µνήµης διακρίνουµε τους καταχωρητές, την κύρια µνήµη και τη βοηθητική ή δευτερεύουσα µνήµη. Θα πρέπει να σηµειώσουµε ότι, αν και η φυσική θέση των καταχωρητών είναι στην ΚΜΕ, οι καταχωρητές ανήκουν στο σύστηµα της µνήµης. Στον υπολογιστή του σχήµατος 1.2 το σύστηµα µνήµης αποτελείται από τους καταχωρητές, που δεν φαίνονται στο σχήµα διότι περιέχονται στην ΚΜΕ, την Μ∆Μ ( θα αναφερθούµε σ' αυτή στην υποενότητα 1.3.5), την κρυφή µνήµη ( µ' αυτή θα ασχοληθούµε στην υποενότητα 1.3.4), την κύρια µνήµη και τη µνήµη µαγνητικού δίσκου συµπεριλαµβανοµένου του ελεγκτή της. Η χωρητικότητα κάθε καταχωρητή µετριέται µε το πλήθος των δυαδικών ψηφίων (bits) ή ψηφιολέξεων (bytes), που µπορούν να αποθηκευτούν σ’ αυτόν. Το δυαδικό ψηφίο παίρνει την τιµή 0 ή 1 και µία ψηφιολέξη αποτελείται από οκτώ δυαδικά ψηφία. Η χωρητικότητα της κύριας µνήµης, όπως και της κρυφής και της βοηθητικής µνήµης ενός υπολογιστή, µετριέται σε: • Kbytes ή KB, 1 KB = 210 bytes =1024 bytes • Mbytes ή MB, 1 MB = 220 bytes =1024 Kbytes • Gbytes ή GB, 1 GB = 230 bytes =1024 Mbytes Συνήθως, λόγω του µεγέθους της, η χωρητικότητα της κρυφής µνήµης µετράται σε ΚΒ, της κύριας σε ΜΒ και της βοηθητικής σε GΒ. Οι µονάδες εισόδου/εξόδου χρησιµοποιούνται για την επικοινωνία του υπολογιστή µε τον εξωτερικό κόσµο. Η κύρια λειτουργία των µονάδων εισόδου/εξόδου είναι να µετατρέπουν την πληροφορία από µία φυσική αναπαράσταση σε κάποια άλλη. Οι µονάδες εισόδου µετατρέπουν την πληροφορία από µια από τις µορφές που χρησιµοποιούνται στην κοινωνία µας, σε µια από τις µορφές που χρησιµοποιεί ο υπολογιστής για την εσωτερική αναπαράσταση της πληροφορίας. Οι µονάδες εξόδου κάνουν το αντίστροφο. Με την αναπαράσταση της πληροφορίας στον υπολογιστή θα ασχοληθούµε στο κεφάλαιο 2. Στον υπολογιστή του σχήµατος 1.2 µονάδες εισόδου/εξόδου είναι η οθόνη
23
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
24
και το πληκτρολόγιο συµπεριλαµβανοµένων των ελεγκτών τους. Το σύστηµα διασύνδεσης αποτελείται από τις αρτηρίες διασύνδεσης των διαφόρων µονάδων του συστήµατος. Για παράδειγµα, στο σχήµα 1.2 η αρτηρία του συστήµατος, η αρτηρία εισόδου/εξόδου, οι µονάδες διασύνδεσης και ο ελεγκτής δικτύου (κάρτα δικτύου) ανήκουν στο σύστηµα διασύνδεσης. Ο ελεγκτής δικτύου µπορεί να θεωρηθεί και σαν µονάδα εισόδου/εξόδου. ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.5
Αναφέρετε τις µονάδες, από τις οποίες αποτελείται ένα υπολογιστικό σύστηµα.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.6
Αναφέρετε δύο λόγους, για τους οποίους δεν είναι δυνατόν η µνήµη ενός υπολογιστή γενικού σκοπού να υλοποιείται µε µία µόνον τεχνολογία.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.7
Αναφέρετε τρεις µονάδες µνήµης, που υπάρχουν στο σύστηµα µνήµης κάθε ενός υπολογιστή.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.8
Συµπληρώστε κάθε πρόταση επιλέγοντας το σωστό όρο: GBytes, ∆υαδικά ψηφία (bits), Kbytes, ψηφιολέξεις (bytes), Mbytes. • H χωρητικότητα των καταχωρητών µετράται σε ________. • H χωρητικότητα της κρυφής µνήµης, που βρίσκεται µεταξύ ΚΜΕ και κύριας µνήµης, µετράται σε ________. • H χωρητικότητα της κύριας µνήµης µετράται σε ________. • H χωρητικότητα της βοηθητικής µνήµης µετράται σε ________.
1.3.2 ∫ÂÓÙÚÈ΋ ÌÔÓ¿‰· ÂÂÍÂÚÁ·Û›·˜
Η Κεντρική Μονάδα Επεξεργασίας, ΚΜΕ, αποτελείται από τη Μονάδα Επεξεργασίας ∆εδοµένων (Data Path) και τη Μονάδα Ελέγχου (Control Unit). Η ΚΜΕ κατασκευάζεται συνήθως σήµερα σε ένα ολοκληρωµένο κύκλωµα (Integrated Circuit, IC) και ονοµάζεται επεξεργαστής (processor). Βέβαια,
¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ ∫ ∞ π § ∂ π ∆ √ À ƒ ° π ∞ À ¶ √ § √ ° π ™ ∆ ø ¡
επιπλέον της Μονάδας Επεξεργασίας ∆εδοµένων και της Μονάδας Ελέγχου, µπορεί στο ίδιο ολοκληρωµένο µε τον επεξεργαστή να υπάρχουν και άλλες υποµονάδες, όπως η κρυφή µνήµη (cache memory) και η µονάδα διαχείρισης µνήµης, Μ∆Μ, (Memory Managment Unit, MMU). Η Μονάδα Επεξεργασίας ∆εδοµένων αποτελείται από κυκλώµατα για την εκτέλεση αριθµητικών και λογικών πράξεων και ένα σύνολο καταχωρητών, που ο αριθµός τους ποικίλλει από υπολογιστή σε υπολογιστή. Η Μονάδα Επεξεργασίας ∆εδοµένων στους σύγχρονους επεξεργαστές αποτελείται από δύο υποµονάδες, τη Μονάδα Επεξεργασίας ∆εδοµένων σταθερής υποδιαστολής (fixed point arithmetic) και τη Μονάδα Επεξεργασίας ∆εδοµένων κινητής υποδιαστολής (floating point arithmetic) (Η παρουσίαση της αριθµητικής σταθερής και κινητής υποδιαστολής γίνεται στο κεφάλαιο 2.). Σε κάποιες εφαρµογές, όπως για παράδειγµα εφαρµογές επεξεργασίας κειµένου, δεν χρησιµοποιούνται καθόλου πράξεις κινητής υποδιαστολής, ενώ υπάρχουν και εφαρµογές που χρησιµοποιούνται ελάχιστα. Παλαιότερα οι κατασκευαστές υπολογιστών, για να ελαττώσουν το κόστος των υπολογιστών και να τους κάνουν πιο προσιτούς στους χρήστες, σε πολλά συστήµατα γενικού σκοπού δεν ενσωµάτωναν τη µονάδα κινητής υποδιαστολής στον επεξεργαστή, αλλά την υλοποιούσαν σε άλλο ολοκληρωµένο κύκλωµα, που ονοµάζεται συν–επεξεργαστής (coprocessor) ή µαθηµατικός συνεπεξεργαστής. Με αυτόν τον τρόπο έδιναν τη δυνατότητα στον αγοραστή να αγοράσει τον συν–επεξεργαστή και να τον προσθέσει στο σύστηµά του, µόνο όταν τον χρειαζόταν. Ένας υπολογιστής που δεν είναι εφοδιασµένος µε επεξεργαστή κινητής υποδιαστολής, εκτελεί τις εντολές κινητής υποδιαστολής εκτελώντας προγράµµατα σταθερής υποδιαστολής, που έχουν σαν αποτέλεσµα τον υπολογισµό του αποτελέσµατος της πράξης κινητής υποδιαστολής. Αντίθετα, στον υπολογιστή που είναι εφοδιασµένος µε επεξεργαστή κινητής υποδιαστολής, εκτελούνται κατευθείαν στο υλικό σε πολύ µικρότερο χρονικό διάστηµα. Οι καταχωρητές της Μονάδας Επεξεργασίας ∆εδοµένων σταθερής υποδιαστολής διακρίνονται σε καταχωρητές ειδικού και γενικού σκοπού. Οι καταχωρητές ειδικού σκοπού επιτελούν κάποια συγκεκριµένη λειτουργία, ενώ οι καταχωρητές γενικού σκοπού µπορούν να χρησιµοποιηθούν για µία ποικιλία λειτουργιών, ανάλογα µε τη θέληση του προγραµµατιστή, για παράδειγµα για την αποθήκευση δεδοµένων, ενδιάµεσων αποτελεσµάτων και τη διευθυνσιοδότηση της µνήµης. Το πλήθος των καταχωρητών ποικίλλει από υπολογιστή σε υπολογιστή. Σαν παραδείγµατα καταχωρητών ειδικού σκοπού αναφέρουµε το µετρητή προγράµµατος (program counter), που κάθε φορά
25
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
26
περιέχει τη διεύθυνση της θέσης µνήµης που περιέχει την επόµενη προς εκτέλεση εντολή, τους καταχωρητές δείκτη (index registers), που χρησιµοποιούνται στον καθορισµό διευθύνσεων, το δείκτη σωρού (stack pointer), που χρησιµοποιείται στο µηχανισµό σωρού, και τον καταχωρητή κατάστασης (status register), που περιγράφει την τρέχουσα κατάσταση διαφόρων υλικών στοιχείων και αποτελεσµάτων υπολογισµών. Στον Πίνακα 1.1 δίνεται το πλήθος των καταχωρητών γενικού σκοπού της Μονάδας Επεξεργασίας ∆εδοµένων σταθερής υποδιαστολής και το πλήθος των καταχωρητών της Μονάδας Επεξεργασίας ∆εδοµένων κινητής υποδιαστολής, που συνήθως καλούνται καταχωρητές κινητής υποδιαστολής, διαφόρων σύγχρονων επεξεργαστών. ¶›Ó·Î·˜ 1.1
Αριθµός καταχωρητών σε αντιπροσωπευτικούς επεξεργαστές. Επεξεργαστής / εταιρεία / έτος πρώτης εµφάνισης
καταχωρητές γενικού σκοπού
καταχωρητές κινητής υποδιαστολής
21064 / DEC / 1992
32 των 64 δυαδικών ψηφίων
32 των 64 δυαδικών ψηφίων
PowerPC 601 / IBM, Motorola, Apple / 1993
32 των 32 δυαδικών ψηφίων
32 των 64 δυαδικών ψηφίων
Pentium / Intel / 1993
8 των 32 δυαδικών ψηφίων
8 των 80 δυαδικών ψηφίων
PowerPC 620 / IBM, Motorola, Apple / 1996
32 των 64 δυαδικών ψηφίων
32 των 64 δυαδικών ψηφίων
Η Μονάδα Ελέγχου αναλύει την εντολή, που πρέπει να εκτελεστεί, και ανάλογα µε το είδος της εντολής παράγει ακολουθίες από σήµατα, που έχουν σαν συνέπεια την επιλογή της µεταφοράς των δεδοµένων µεταξύ των µονάδων ή των υποµονάδων του υπολογιστή και την εκτέλεση συγκεκριµένων πράξεων. Ο χρόνος που απαιτείται για την πιο σύντοµη, χρονικά, λειτουργία της ΚΜΕ, καλείται χρόνος κύκλου της ΚΜΕ (CPU cycle time) και είναι η βασική µονάδα για τη µέτρηση όλων των ενεργειών της ΚΜΕ. Το αντίστροφο του χρόνου κύκλου της ΚΜΕ καλείται συχνότητα λειτουργίας της ΚΜΕ (CPU clock rate) και σήµερα είναι της τάξης των µεγακύκλων. Η λειτουργία της ΚΜΕ είναι να εκτελεί εντολές, που είναι αποθηκευµένες στην κύρια µνήµη του υπολογιστή. Μία εντολή καταλαµβάνει µία ή περισσότερες θέσεις και έχει σαν σκοπό να προσδιορίζει τη λειτουργία που θα εκτελεστεί, καθώς και το σύνολο των δεδοµένων που θα χρησιµοποιηθούν στην εκτέλεση της εντολής. Η ΚΜΕ εκτελεί µία εντολή σε µία σειρά από βήµατα:
¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ ∫ ∞ π § ∂ π ∆ √ À ƒ ° π ∞ À ¶ √ § √ ° π ™ ∆ ø ¡
27
1. Φέρνει στην ΚΜΕ την εντολή, που είναι αποθηκευµένη στη θέση µνήµης, που δείχνει ο µετρητής προγράµµατος. 2. Αλλάζει το περιεχόµενο του µετρητή προγράµµατος, ώστε να δείχνει τη θέση µνήµης που περιέχει την επόµενη προς εκτέλεση εντολή. 3. Αναλύει την εντολή και ελέγχει εάν η εντολή χρειάζεται δεδοµένα από τη µνήµη και εάν ναι, προσδιορίζει τη διεύθυνση που είναι αποθηκευµένα. 4. Φέρνει τα δεδοµένα σε κάποιους από τους καταχωρητές της. 5. Εκτελεί την εντολή. 6. Αποθηκεύει τα αποτελέσµατα. 7. Πηγαίνει στο βήµα 1 για να αρχίσει την εκτέλεση της επόµενης εντολής. Σηµειώνουµε ότι, ανάλογα µε την εντολή, τα βήµατα 4 και 6 ή ένα από αυτά είναι δυνατόν να µη χρησιµοποιηθούν. Για παράδειγµα, κατά την εκτέλεση µιας εντολής διακλάδωσης στο βήµα 5, η διεύθυνση της επιθυµητής επόµενης προς εκτέλεση εντολής φορτώνεται στο µετρητή προγράµµατος και ακολουθεί το βήµα 7.
α. Αναφέρετε τις υποµονάδες, από τις οποίες αποτελείται η ΚΜΕ. β. Περιγράψτε τη χρησιµότητα κάθε υποµονάδας. γ. Η ΚΜΕ εκτελεί µία εντολή σε µία ακολουθία από 7 βήµατα. Τοποθετήστε τα ακόλουθα βήµατα στη σωστή τους σειρά. • Εκτελεί την εντολή. • Φέρνει τα δεδοµένα σε κάποιους από τους καταχωρητές της. • Φέρνει στην ΚΜΕ την εντολή, που είναι αποθηκευµένη στη θέση µνήµης που δείχνει ο µετρητής προγράµµατος. • Αποθηκεύει τα αποτελέσµατα. • Αλλάζει το περιεχόµενο του µετρητή προγράµµατος, ώστε να δείχνει τη θέση µνήµης που περιέχει την επόµενη προς εκτέλεση εντολή. • Αναλύει την εντολή και ελέγχει εάν η εντολή χρειάζεται δεδοµένα από τη µνήµη και εάν ναι, προσδιορίζει τη διεύθυνση που είναι αποθηκευµένα. • Πηγαίνει στο πρώτο βήµα για να αρχίσει την εκτέλεση της επόµενης εντολής.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.9
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
28
1.3.3 ™‡ÛÙËÌ· ÌÓ‹Ì˘
∫Àƒπ∞ ª¡∏ª∏
Η κύρια µνήµη αποτελείται από έναν αριθµό θέσεων που σε καθεµία από αυτές αποθηκεύεται και ένα τµήµα πληροφορίας (εντολή, µέρος εντολής ή δεδοµένα) µε τη µορφή µιας ακολουθίας δυαδικών ψηφίων. Σε κάθε θέση της µνήµης αντιστοιχεί ένας αριθµός, που καλείται φυσική διεύθυνση της θέσης µνήµης, και χρησιµοποιείται για να αναφερθούµε στη συγκεκριµένη θέση. Το σύνολο των φυσικών διευθύνσεων της κύριας µνήµης καλείται χώρος φυσικών διευθύνσεων της µνήµης. Εάν η µνήµη έχει ν θέσεις, τότε οι φυσικές τους διευθύνσεις θα είναι από 0 µέχρι ν–1 (βλέπε σχήµα 1.3.). Γειτονικές θέσεις µνήµης έχουν διαδοχικές διευθύνσεις. Το κύριο χαρακτηριστικό της θέσης µνήµης είναι ότι περιέχει τη µικρότερη ποσότητα πληροφορίας, που µπορεί να µεταφερθεί στην ΚΜΕ. Ο αριθµός των δυαδικών ψηφίων που περιέχεται σε µία θέση µνήµης, διαφέρει από υπολογιστή σε υπολογιστή.
µία θέση µνήµης
ένα δυαδικό ψηφίο
™¯‹Ì· 1.3
H φυσική οργάνωση µιάς µνήµης ν θέσεων, µε θέση µνήµης των 8 δυαδικών ψηφίων.
ν ν ν ν
Οι βασικότερες ιδιότητες της κύριας µνήµης είναι ότι: α) οι θέσεις της µπορούν να προσπελαστούν άµεσα από την ΚΜΕ, αντίθετα η πληροφορία που είναι αποθηκευµένη στη βοηθητική µνήµη θα πρέπει πρώτα να µεταφερθεί
¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ ∫ ∞ π § ∂ π ∆ √ À ƒ ° π ∞ À ¶ √ § √ ° π ™ ∆ ø ¡
στην κύρια µνήµη, β) οι θέσεις της µπορούν να προσπελαστούν µε οποιαδήποτε σειρά και γ) ο χρόνος προσπέλασης µίας θέσης είναι σταθερός και ανεξάρτητος από τη διεύθυνση της θέσης. Η ταχύτητα της κύριας µνήµης µετριέται µε το χρόνο προσπέλασης ανάγνωσης ή, όπως πιο συχνά λέγεται, το χρόνο προσπέλασης (access time) µιας θέσης της κύριας µνήµης. Ο χρόνος προσπέλασης εγγραφής είναι συνήθως ίσος µε το χρόνο προσπέλασης ανάγνωσης. Ο χρόνος προσπέλασης ισούται µε το χρόνο που παρέρχεται από τη στιγµή, που η µνήµη λαµβάνει µία απαίτηση διαβάσµατος µέχρι τη στιγµή που η απαιτούµενη πληροφορία είναι διαθέσιµη στις εξόδους της µνήµης. Ο χρόνος προσπέλασης της κύριας µνήµης εξαρτάται από την τεχνολογία των ολοκληρωµένων κυκλωµάτων, µε τα οποία υλοποιείται, το µέγεθός της και τον τρόπο σχεδιασµού της. Σε µερικές διατάξεις µνήµης, όπως οι δυναµικές µνήµες (θα µιλήσουµε στη συνέχεια γι’ αυτές), ο χρόνος που πρέπει να περάσει από τη στιγµή που ξεκίνησε µία προσπέλαση της µνήµης µέχρι τη στιγµή που επιτρέπεται να ξεκινήσουµε µία άλλη προσπέλαση, είναι µεγαλύτερος του χρόνου προσπέλασης της µνήµης και καλείται χρόνος κύκλου της µνήµης (cycle time of the memory). Είναι προφανές ότι το µέγιστο ποσό πληροφορίας, που µπορεί να µεταφερθεί προς ή από τη µνήµη κάθε δευτερόλεπτο, είναι το αντίστροφο του χρόνου κύκλου της µνήµης. Η ποσότητα αυτή καλείται ρυθµός µεταφοράς δεδοµένων (data transfer rate ή bandwidth). Ο ρυθµός µεταφοράς δεδοµένων µετριέται σε ψηφιολέξεις ανά δευτερόλεπτο. Η ΚΜΕ επικοινωνεί µε την κύρια µνήµη µέσω δύο καταχωρητών, του καταχωρητή διευθύνσεων και του καταχωρητή δεδοµένων. Ανάλογα µε τον υπολογιστή, οι καταχωρητές διευθύνσεων και δεδοµένων µπορεί να είναι καταχωρητές ειδικού σκοπού ή οποιοιδήποτε από τους καταχωρητές γενικού σκοπού, συνήθως στα σηµερινά συστήµατα συµβαίνει το δεύτερο. Όταν πρόκειται να διαβαστεί µία λέξη από την κύρια µνήµη, η διεύθυνση της µνήµης τοποθετείται στον καταχωρητή διευθύνσεων και στέλνεται ένα σήµα από τη µονάδα ελέγχου στη µνήµη, που δηλώνει ότι πρέπει να γίνει ανάγνωση. Μετά από ένα χρονικό διάστηµα ίσο µε τον χρόνο προσπέλασης, η λέξη µεταφέρεται στον καταχωρητή δεδοµένων. Για να αποθηκευτεί µία λέξη στη µνήµη, πρέπει η διεύθυνση της θέσης στην οποία πρόκειται να γίνει η αποθήκευση, να τοποθετηθεί στον καταχωρητή διευθύνσεων, η λέξη να τοποθετηθεί στον καταχωρητή δεδοµένων και να σταλεί σήµα από την µονάδα ελέγχου στη µνήµη, για να δηλώσει ότι πρέπει να γίνει εγγραφή.
29
30
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
Σηµειώνουµε ότι ο αριθµός των δυαδικών ψηφίων του καταχωρητή διευθύνσεων καθορίζει το µέγιστο αριθµό θέσεων µνήµης που µπορούν να αναφερθούν άµεσα. Εάν ο αριθµός των δυαδικών ψηφίων του καταχωρητή διευθύνσεων της µνήµης είναι µ, ο µέγιστος αριθµός των θέσεων µνήµης που µπορεί να αναφερθεί άµεσα από την ΚΜΕ, είναι 2µ . Ο συνολικός αριθµός των θέσεων της κύριας µνήµης εξαρτάται από την σύνθεση του συστήµατος (system configuration), µε άλλα λόγια ο αγοραστής δύναται να αγοράσει περισσότερη ή λιγότερη, ανάλογα µε τα χρήµατα που µπορεί να διαθέσει και τις απαιτήσεις του. Θα δούµε αργότερα πως το ελάχιστο µέγεθος κύριας µνήµης που µπορεί να διαθέτει ένας υπολογιστής, καθορίζεται από τα προγράµµατα που πρόκειται να εκτελούνται στο συγκεκριµένο υπολογιστή. Επίσης, θα δούµε αργότερα πως το µέγεθος της κύριας µνήµης ενός υπολογιστή επηρεάζει την ταχύτητα εκτέλεσης κάποιων προγραµµάτων. Η µέγιστη χωρητικότητα κύριας µνήµης, που µπορούµε να βάλουµε σε έναν υπολογιστή, εξαρτάται από το συγκεκριµένο υπολογιστή και συγκεκριµένα από τη σχεδίαση της ΚΜΕ. Η κύρια µνήµη µπορεί να υλοποιηθεί µε ηµιαγωγικές µνήµες ανάγνωσης και εγγραφής άµεσης προσπέλασης (Random Access Memory, RAM). Υπάρχουν δύο κατηγορίες µνηµών RAM, οι στατικές, SRAM, και οι δυναµικές, DRAM. Συγκρίνοντας µία SRAM, µε µία DRAM της ίδιας χωρητικότητας, η SRAM είναι ακριβότερη και πιό γρήγορη από την DRAM. Λόγω των απαιτήσεών µας για κύρια µνήµη πολύ µεγάλης χωρητικότητας, η κύρια µνήµη υλοποιείται συνήθως µε DRAM. Ένα µικρό τµήµα της υλοποιείται από µνήµη µόνο ανάγνωσης (Read Only Memory, ROM), δηλαδή µία µνήµη που τα περιεχόµενά της µπορούν να διαβάζονται, αλλά δεν είναι δυνατόν να τροποποιηθούν µέσα από τα προγράµµατα που εκτελούνται στον υπολογιστή. Το χαρακτηριστικό της ROM, που µας κάνει να τη χρησιµοποιούµε για την υλοποίηση ενός τµήµατος της κύριας µνήµης, είναι ότι, όταν διακοπεί η τάση τροφοδοσίας του υπολογιστή µας είτε λόγω βλάβης στο δίκτυο της ∆ΕΗ είτε διότι κλείσαµε τον υπολογιστή µας, όλη η πληροφορία, που ήταν αποθηκευµένη στη µνήµη ROM διατηρείται, ενώ η πληροφορία που ήταν αποθηκευµένη στη µνήµη RAM χάνεται. Στη ROM µεταξύ των άλλων είναι αποθηκευµένο ένα µικρό πρόγραµµα που αναλαµβάνει, όταν ανοίξουµε την τάση τροφοδοσίας του υπολογιστή µας, να φέρει από τη βοηθητική µνήµη στην κύρια µνήµη ένα τµήµα του λειτουργικού συστήµατος, το οποίο αναλαµβάνει στη συνέχεια την επικοινωνία του υπολογιστή µε το χρήστη.
¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ ∫ ∞ π § ∂ π ∆ √ À ƒ ° π ∞ À ¶ √ § √ ° π ™ ∆ ø ¡
31
µ√∏£∏∆π∫∏ ª¡∏ª∏
Οι διατάξεις που χρησιµοποιούνται για την υλοποίηση της βοηθητικής ή δευτερεύουσας µνήµης, είναι σηµαντικά φθηνότερες από αυτές που χρησιµοποιούνται για την υλοποίηση της κύριας µνήµης. Σαν µέτρο σύγκρισης του κόστους χρησιµοποιούµε το ανηγµένο κόστος, δηλαδή το κόστος ανά δυαδικό ψηφίο. Εποµένως, είναι δυνατόν, µε χαµηλό κόστος, να προµηθεύσουµε τον υπολογιστή µας µε βοηθητική µνήµη µεγάλης χωρητικότητας. Όµως η βοηθητική µνήµη είναι από τρεις έως έξι τάξεις µεγέθους πιο αργή από την κύρια µνήµη. Η βοηθητική µνήµη υλοποιείται µε µνήµες µαγνητικών δίσκων, µαγνητικών ταινιών και οπτικών δίσκων. Στο σχήµα 1.4 δίνεται η σχέση χρόνου προσπέλασης και κόστους ανά δυαδικό ψηφίο των αντιπροσωπευτικών τεχνολογιών, που χρησιµοποιούνται για την υλοποίηση του συστήµατος µνήµης. Η πληροφορία που είναι αποθηκευµένη στη βοηθητική µνήµη διατηρείται και µετά τη διακοπή της τάσης τροφοδοσίας, εποµένως, πριν κλείσουµε τον υπολογιστή µας, θα πρέπει να αποθηκεύουµε στη βοηθητική µνήµη την πληροφορία που έχουµε στην κύρια µνήµη.
100
Xρόνος προσπέλασης σε δευτερόλεπτα
10
Mνήµες µαγνητικών ταινιών
1 10–1
Oπτικοί δίσκοι
10–2 10
Σκληροί µαγνητική δίσκοι
–3
10–4 ™¯‹Ì· 1.4
10–5 10–6 10–7 10–8 10
DRAM ολοκληρωµένα SRAM ολοκληρωµένα
–9
Kόστος ανά δυαδικό ψηφίο
Η βοηθητική µνήµη χρησιµοποιείται για την αποθήκευση προγραµµάτων και αρχείων δεδοµένων, που δεν χρειάζονται συνεχώς από την ΚΜΕ. Επίσης χρησιµεύει και σαν µνήµη υπερχείλισης (overflow), όταν ξεπερνιέται η χωρη-
Σχέση χρόνου προσπέλασης και κόστους ανά δυαδικό ψηφίο αντιπροσωπευτικών τεχνολογιών, που χρησιµοποιούνται για την υλοποίηση του συστήµατος µνήµης.
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
32
τικότητα της κύριας µνήµης, ο,τι δεν χωράει δηλαδή στην κύρια µνήµη µεταφέρεται στη βοηθητική. Σε πολλές από τις συσκευές βοηθητικής µνήµης το µέσο πάνω στο οποίο γράφεται η πληροφορία, π.χ. µαγνητική ταινία, µαγνητικός δίσκος, όταν γεµίσει αντικαθίσταται και φυλάσσεται. Με αυτό τον τρόπο µπορούµε να δηµιουργήσουµε τεράστιες αποθήκες πληροφορίας. Οι διατάξεις που χρησιµοποιούνται για την υλοποίηση της βοηθητικής µνήµης, διακρίνονται σε διατάξεις σειριακής προσπέλασης (serial access) και διατάξεις κατευθείαν προσπέλασης (direct access). Σειριακής προσπέλασης καλούνται οι µνήµες, που η αποθηκευµένη πληροφορία µπορεί να προσπελαστεί µόνο µε κάποια προκαθορισµένη σειρά. Σαν παράδειγµα αναφέρουµε τις µνήµες µαγνητικής ταινίας. Μερικές διατάξεις Μνήµης, όπως οι µαγνητικοί δίσκοι, περιέχουν ένα µεγάλο αριθµό οµόκεντρων κύκλων (tracks), κατά µήκος των οποίων γράφεται η πληροφορία. Κάθε οµόκεντρος κύκλος µπορεί να προσπελαστεί άµεσα, ενώ η προσπέλαση της πληροφορίας σ’ έναν οµόκεντρο κύκλο γίνεται σειριακά. Οι διατάξεις αυτές καλούνται µνήµες κατευθείαν προσπέλασης. Με τις µονάδες µνήµης µαγνητικών δίσκων, οπτικών δίσκων και µαγνητικών ταινιών θα ασχοληθούµε στο κεφάλαιο 4.
¢Ú·ÛÙËÚÈfiÙËÙ· 1.1
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.10
Απευθυνόµενοι σε ένα κατάστηµα πώλησης υπολογιστών, συλλέξτε την απαιτούµενη πληροφορία, ώστε να υπολογίσετε το κόστος ανά ψηφιολέξη της κύριας µνήµης και της µνήµης µαγνητικού δίσκου ενός προσωπικού υπολογιστή.
Α. Αναφέρετε: α. Τρεις βασικές ιδιότητες της κύριας µνήµης. β. Τα µέτρα χαρακτηρισµού της ταχύτητας της κύριας µνήµης. γ. ∆ύο κοινά χαρακτηριστικά και δύο διαφορές µεταξύ των µνηµών τεχνολογίας RAM και ROM. Β. Είναι σωστό ή λάθος ότι σε έναν υπολογιστή γενικού σκοπού όλη η κύρια µνήµη θα µπορούσε να υλοποιηθεί µε µνήµες ROM;
¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ ∫ ∞ π § ∂ π ∆ √ À ƒ ° π ∞ À ¶ √ § √ ° π ™ ∆ ø ¡
Αναφέρετε τα κύρια πλεονεκτήµατα και µειονεκτήµατα της µνήµης µαγνητικών δίσκων σε σχέση µε την τεχνολογία που χρησιµοποιείται για την υλοποίηση της κύριας µνήµης.
Είναι σωστό ή λάθος ότι η µονάδα µνήµης µαγνητικών δίσκων και µαγνητικής ταινίας είναι σειριακής προσπέλασης;
1.3.4 ∫Ú˘Ê‹ ÌÓ‹ÌË (Cache memory)
Η κύρια µνήµη είναι σχετικά αργή, για το λόγο αυτό, όταν η ΚΜΕ χρειάζεται να διαβάσει κάτι από την κύρια µνήµη αναγκάζεται να περιµένει. Η κατάσταση γίνεται ακόµη χειρότερη όταν πληροφορία πρέπει να µεταφερθεί στην κύρια µνήµη από τη βοηθητική µνήµη, για παράδειγµα από µία µονάδα δίσκων. Η τεχνική που έχει προταθεί για τη βελτίωση της κατάστασης, είναι η χρησιµοποίηση κρυφής µνήµης (cache memory). Η κρυφή µνήµη είναι µία σχετικά µικρής χωρητικότητας µνήµη, που χρησιµοποιείται για την αποθήκευση πληροφορίας, που αναµένεται ότι θα χρησιµοποιηθεί άµεσα ή µε µεγάλη συχνότητα στο µέλλον. Η επιτυχία της βασίζεται στην τοπικότητα των αναφορών (principle of locality) που χαρακτηρίζει την πλειονότητα των προγραµµάτων. Σύµφωνα µε την τοπικότητα των αναφορών η πληροφορία (εντολές ή δεδοµένα) που χρησιµοποιήθηκε πρόσφατα είναι πιθανόν να ξαναχρησιµοποιηθεί στο άµεσο µέλλον και η πληροφορία που βρίσκεται κοντά στην πληροφορία που χρησιµοποιείται τώρα, είναι πιθανό να χρησιµοποιηθεί στο άµεσο µέλλον. Κρυφή µνήµη χρησιµοποιείται συνήθως µεταξύ ΚΜΕ και κύριας µνήµης, καθώς και µεταξύ κύριας µνήµης και της βοηθητικής µνήµης, της µονάδας δίσκων. ∫ƒÀº∏ ª¡∏ª∏ ª∂∆∞•À ∫ª∂ ∫∞π ∫Àƒπ∞™ ª¡∏ª∏™
Η κρυφή µνήµη µεταξύ ΚΜΕ και κύριας µνήµης υλοποιείται µε SRAM, που είναι πιο γρήγορη από τη DRAM, που χρησιµοποιείται για την υλοποίηση της κύριας µνήµης. Επίσης, το γεγονός ότι η κρυφή µνήµη είναι σηµαντικά µικρότερης χωρητικότητας από την κύρια µνήµη συµβάλλει, ώστε η προσπέλαση της κρυφής µνήµης να είναι πολύ πιο γρήγορη από της κύριας µνήµης.
33
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.11
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.12
34
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
Η κρυφή µνήµη µπορεί να βρίσκεται στο ίδιο ολοκληρωµένο κύκλωµα µε την ΚΜΕ ή σε ένα ή περισσότερα άλλα ολοκληρωµένα κυκλώµατα στην ίδια πλακέτα. Στην πρώτη περίπτωση το µέγεθός της είναι σταθερό, ενώ στη δεύτερη περίπτωση ο χρήστης µπορεί να αγοράσει και τοποθετήσει στον υπολογιστή του από καθόλου µέχρι µία µέγιστη χωρητικότητα, που εξαρτάται από το συγκεκριµένο υπολογιστή. Στην κρυφή µνήµη υπάρχουν αντίγραφα µέρους της πληροφορίας, που υπάρχει στην κύρια µνήµη. Όταν η ΚΜΕ χρειάζεται κάποια πληροφορία, εάν η πληροφορία βρίσκεται στην κρυφή µνήµη προσπελαύνεται πολύ γρήγορα, αποφεύγοντας τις καθυστερήσεις που θα συνεπάγονταν η προσπέλαση της κύριας µνήµης. Εάν η ζητούµενη πληροφορία δεν υπάρχει στην κρυφή µνήµη, προσπελαύνεται από την κύρια µνήµη, ενώ ένα τµήµα πληροφορίας που περιέχει και τη ζητούµενη πληροφορία, µεταφέρεται στην κρυφή µνήµη (βλέπε σχήµα 1.5). Το ποσοστό των προσπελάσεων, που ικανοποιούνται από την κρυφή µνήµη χωρίς να γίνεται προσπέλαση στην κύρια µνήµη, καλείται ρυθµός επιτυχίας (hit rate). Η τιµή του ρυθµού επιτυχίας εξαρτάται από τη χωρητικότητα της κρυφής µνήµης και τον τρόπο οργάνωσής της, αλλά και από το είδος του προγράµµατος που εκτελείται. Στο κεφάλαιο 4 θα ασχοληθούµε εκτεταµένα µε τη δοµή, οργάνωση και απόδοση της κρυφής µνήµης. Άλλοι υπολογιστές έχουν µία κρυφή µνήµη που χρησιµοποιείται για την αποθήκευση τόσο δεδοµένων όσο και εντολών (προγραµµάτων) και καλείται ενοποιηµένη (unified cache memory), ενώ άλλοι έχουν άλλη κρυφή µνήµη για την αποθήκευση δεδοµένων (data cache) και άλλη για αποθήκευση εντολών (instruction cache). Επίσης, πρέπει να αναφέρουµε ότι πολλοί υπολογιστές έχουν δύο επίπεδα κρυφής µνήµης. Το πρώτο επίπεδο, συνήθως, αποτελείται από δύο µικρές µνήµες, µία δεδοµένων και µία εντολών, που βρίσκεται στο ίδιο ολοκληρωµένο κύκλωµα µε την ΚΜΕ, ενώ το δεύτερο επίπεδο αποτελείται από µία ενοποιηµένη κρυφή µνήµη. Σε όλες τις ανωτέρω περιπτώσεις ότι αφορά την υλοποίηση της κρυφής µνήµης γίνεται µε κυκλώµατα και η ύπαρξη ή απουσία της δεν γίνεται αντιληπτή ούτε από τα προγράµµατα εφαρµογών ούτε από το λειτουργικό ή τα άλλα προγράµµατα του συστήµατος. ∫ƒÀº∏ ª¡∏ª∏ ¢π™∫√À
Όπως έχουµε αναφέρει στην ενότητα 1.3.3, ο µέσος χρόνος προσπέλασης πληροφορίας που βρίσκεται σε κάποια µονάδα δίσκων, είναι πολύ µεγαλύ-
¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ ∫ ∞ π § ∂ π ∆ √ À ƒ ° π ∞ À ¶ √ § √ ° π ™ ∆ ø ¡
35
καταχωρητές της KME εντολή ή δεδοµένα
κρυφή µνήµη
µπλοκ
κύρια µνήµη
σελίδα µνήµη µαγνητικών δίσκων
™¯‹Ì· 1.5
Μεταφορά πληροφορίας µεταξύ διαδοχικών επιπέδων µνήµης.
τερος του χρόνου προσπέλασης της κύριας µνήµης (βλέπε σχήµα 1.4). Το πρόβληµα, που δηµιουργείται, είναι ότι συχνές προσπελάσεις του δίσκου αφήνουν τον επεξεργαστή ανενεργό και αυξάνουν το χρόνο αναµονής των αποτελεσµάτων. Σε υπολογιστές που χρησιµοποιούν την τεχνική του πολυπρογραµµατισµού (multiprogramming) υπάρχουν περισσότερα από ένα προ-
36
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
γράµµατα στην κύρια µνήµη του υπολογιστή και, όταν κατά την εκτέλεση κάποιου προγράµµατος απαιτείται προσπέλαση του δίσκου, η διαδικασία εισόδου/εξόδου υλοποιείται από το σύστηµα εισόδου/εξόδου και ο επεξεργαστής ασχολείται µε την εκτέλεση άλλου προγράµµατος. Εάν όµως όλα τα ενεργά προγράµµατα περιµένουν για την ολοκλήρωση διαδικασιών εισόδου/εξόδου, ο επεξεργαστής µένει πάλι ανενεργός. Ο µηχανισµός που έχει προταθεί για να λύσει το πρόβληµα, είναι η κρυφή µνήµη του δίσκου (disk cache). Το ερώτηµα που τίθεται άµεσα είναι πού θα τοποθετηθεί η κρυφή µνήµη. Η απάντηση στο ερώτηµα αυτό καθορίζει και τον τρόπο υλοποίησής της. Μία θέση είναι να τοποθετηθεί στη µονάδα του δίσκου. Όταν η µονάδα ελεγκτή δίσκου ελέγχει περισσότερους από έναν δίσκους, µία άλλη θέση είναι η κρυφή µνήµη να τοποθετηθεί στον ελεγκτή των µονάδων δίσκου. Και στις δύο περιπτώσεις υλοποιείται µε DRAM. Μία ακόµη δυνατότητα είναι ένα τµήµα της κύριας µνήµης να χρησιµοποιείται σαν κρυφή µνήµη του δίσκου. Σε αυτή την περίπτωση χρησιµοποιείται κυρίως ο όρος κρυφή µνήµη αρχείων (file cache). Είναι, επίσης, δυνατόν να χρησιµοποιείται σ’ έναν υπολογιστή τόσο κρυφή µνήµη στο δίσκο όσο και στην κύρια µνήµη. Σ’ έναν υπολογιστή που χρησιµοποιεί κρυφή µνήµη στη µονάδα δίσκου, ο χρήστης µπορεί να αντικαταστήσει τη µονάδα δίσκου µε άλλη µονάδα δίσκου που µπορεί να περιλαµβάνει κρυφή µνήµη διαφορετικού µεγέθους ή και οργάνωσης απ’ότι η προηγούµενη µονάδα δίσκου ή να µην διαθέτει καθόλου κρυφή µνήµη. Όταν η κρυφή µνήµη υλοποιείται στην κύρια µνήµη, την ευθύνη της διαχείρισής της την έχει το λειτουργικό σύστηµα. Το λειτουργικό σύστηµα φροντίζει να υπάρχουν στην κρυφή µνήµη τα προγράµµατα, δεδοµένα και αρχεία που χρησιµοποιούνται πιο συχνά. Σε κάποια συστήµατα µπορεί ο χρήστης να δηλώσει το ποσοστό της κύριας µνήµης, που θα χρησιµοποιηθεί σαν κρυφή µνήµη. Για παράδειγµα, στους προσωπικούς υπολογιστές µέσα από το λειτουργικό σύστηµα WINDOWS 95 µπορεί να γίνει αυτή η δήλωση. Σε κάποια συστήµατα το µέγεθος της κρυφής µνήµης στην κύρια µνήµη είναι ένα σταθερό ποσοστό, συνήθως 8%~10% του συνολικού µεγέθους της κύριας µνήµης, ενώ σε κάποια άλλα αλλάζει δυναµικά. Για παράδειγµα, στα WINDOWS 95 µπορεί ο χρήστης να ορίσει ένα ελάχιστο και ένα µέγιστο µέγεθος κρυφής µνήµης και το πραγµατικό µέγεθος της κρυφής µνήµης αλλάζει δυναµικά µέσα σ’ αυτά τα όρια.
¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ ∫ ∞ π § ∂ π ∆ √ À ƒ ° π ∞ À ¶ √ § √ ° π ™ ∆ ø ¡
α. Κατατάξτε τους καταχωρητές, τη βοηθητική µνήµη, την κύρια µνήµη και την κρυφή µνήµη µεταξύ ΚΜΕ και κύριας µνήµης αρχικά κατά σειρά αύξοντος χρόνου προσπέλασης και στη συνέχεια κατά σειρά αύξουσας χωρητικότητας.
37
¢Ú·ÛÙËÚÈfiÙËÙ· 1.2
β. Αναφέρετε τι παρατηρείτε.
Αναφέρετε: α. το σκοπό της κρυφής µνήµης β. πού βασίζεται η επιτυχία της
1.3.5 π‰Â·Ù‹ ÌÓ‹ÌË (Virtual Memory)
Με την πάροδο των χρόνων η χωρητικότητα της κύριας µνήµης που µπορούµε, λόγω κόστους υλοποίησης, να διαθέσουµε στους υπολογιστές αυξάνεται. Αυξάνονται όµως επίσης και οι απαιτήσεις των χρηστών. Η τεχνική, που χρησιµοποιείται για την αντιµετώπιση του προβλήµατος, είναι η ιδεατή µνήµη (virtual memory). Η ιδεατή µνήµη κάνει το χρήστη να βλέπει την κύρια µνήµη και ένα µέρος της µνήµης στο δίσκο σαν µία ενιαία, πολύ µεγάλη άµεσα προσπελάσιµη από την ΚΜΕ µνήµη. Σε αυτή την περίπτωση οι διευθύνσεις, που παράγει η ΚΜΕ, καλούνται λογικές διευθύνσεις (logical addresses) και το σύνολο των λογικών διευθύνσεων λογικός χώρος διευθύνσεων (logical address space). H µονάδα διαχείρισης µνήµης (Memory Management Units, MMU) σε συνεργασία µε το λειτουργικό σύστηµα είναι υπεύθυνα για τη διαχείριση της ιδεατής µνήµης. Η µονάδα διαχείρισης µνήµης παίρνει σαν εισόδους λογικές διευθύνσεις και παράγει φυσικές διευθύνσεις. Όταν η πληροφορία, εντολή ή δεδοµένα, που ζητείται από την ΚΜΕ βρίσκεται στην κύρια µνήµη, προσπελαύνεται άµεσα, διαφορετικά µεταφέρεται µε ευθύνη του λειτουργικού συστήµατος ένα τµήµα πληροφορίας, που περιλαµβάνει και τη ζητούµενη πληροφορία, από την µνήµη δίσκου στην κύρια µνήµη. Ο προγραµµατιστής εφαρµογών δεν αντιλαµβάνεται τη διαφορά. Βέβαια, η µεταφορά πληροφορίας από τη µνήµη δίσκου στην κύρια µνήµη συνεπάγεται καθυστέρηση στο χρόνο προσπέλασης της πληροφορίας. Εποµένως, η ιδεατή µνήµη γίνεται
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.13
38
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
αντιληπτή από το λογισµικό του συστήµατος, αλλά όχι και από το λογισµικό των εφαρµογών. Με την υλοποίηση της ιδεατής µνήµης θα ασχοληθούµε στο κεφάλαιο 4. Αν και σήµερα όλα τα συστήµατα υλοποιούν την τεχνική της ιδεατής µνήµης, θα περιγράψουµε τη λειτουργία ενός υπολογιστή που δεν διαθέτει ιδεατή µνήµη. Με αυτόν τον τρόπο θα καταλάβουµε καλύτερα την αξία της τεχνικής αυτής. Θεωρούµε έναν υπολογιστή, που το σύστηµα µνήµης του αποτελείται από τους καταχωρητές της ΚΜΕ, την κύρια µνήµη και τη µνήµη µαγνητικών δίσκων. ∆ηλαδή, το σύστηµα αυτό δεν διαθέτει κρυφή µνήµη µεταξύ ΚΜΕ και κύριας µνήµης ή µεταξύ κύριας και βοηθητικής µνήµης (µνήµης µαγνητικών δίσκων). Θα θεωρήσουµε ότι λόγω µεγέθους ολόκληρο το πρόγραµµα, που θέλουµε να εκτελεστεί στον υπολογιστή, και τα προς επεξεργασία δεδοµένα δεν µπορούν να τοποθετηθούν (δεν χωράνε) στην κύρια µνήµη. Εποµένως, κάθε χρονική στιγµή ένα µόνο µέρος του προγράµµατος θα βρίσκεται στην κύρια µνήµη. Ας υποθέσουµε ότι τα δεδοµένα βρίσκονται στη µνήµη µαγνητικού δίσκου. Ο προγραµµατιστής, που γράφει το πρόγραµµα, για να εκτελεστεί σ’ αυτή τη µηχανή, θα πρέπει να το γράψει κατά τέτοιο τρόπο, ώστε, όταν απαιτείται η εκτέλεση κάποιας εντολής του προγράµµατος που δεν βρίσκεται στην κύρια µνήµη, το ίδιο το πρόγραµµά του να αναλαµβάνει να µεταφέρει ένα τµήµα του προγράµµατος, που περιέχει τη ζητούµενη εντολή, από τη µονάδα δίσκου στην κύρια µνήµη. Αυτό συνεπάγεται ότι ο προγραµµατιστής, αντί να εστιάσει την προσοχή του στη συγγραφή του προγράµµατος για τη συγκεκριµένη εφαρµογή, αναγκάζεται να δαπανήσει µεγάλο µέρος του χρόνου του, για να γράψει το πρόγραµµα κατά τέτοιο τρόπο που να µπορεί να εκτελεστεί στην εν λόγω µηχανή. Στη συνέχεια θα θεωρήσουµε έναν υπολογιστή, που υποστηρίζει ιδεατή µνήµη. Σε αυτή την περίπτωση ο προγραµµατιστής γράφει το πρόγραµµά του χωρίς να λαµβάνει υπόψη του το µέγεθος της κύριας µνήµης του υπολογιστή. Όταν κατά την εκτέλεση του προγράµµατος απαιτηθεί µία εντολή, που δεν βρίσκεται στην κύρια µνήµη, τότε το λειτουργικό σύστηµα αναλαµβάνει να µεταφέρει από τη µονάδα δίσκου στη κύρια µνήµη ένα τµήµα του προγράµµατος, που περιέχει τη ζητούµενη εντολή (βλέπε σχήµα 1.5). Η συγκεκριµένη εντολή στη συνέχεια θα µεταφερθεί στην ΚΜΕ για εκτέλεση.
™À¡√æ∏
Όπως προκύπτει από το σχήµα 1.5, µεταξύ ενός καταχωρητή της ΚΜΕ και της κρυφής µνήµης µεταφέρεται µία λέξη, µεταξύ της κρυφής µνήµης και της κύριας µνήµης ένα µπλοκ και µεταξύ της κύριας µνήµης και της µνήµης µαγνητικού δίσκου µία σελίδα. Χαρακτηρίστε, δίνοντας µία ανισότητα, τα σχετικά µεγέθη των : λέξη, µπλοκ και σελίδα και αιτιολογήστε την απάντησή σας.
Αναφέρετε : α. Το σκοπό της ιδεατής µνήµης. β. Είναι σωστό ή λάθος αν πούµε ότι η ιδεατή µνήµη υλοποιείται µε υλικό;
™‡ÓÔ„Ë ÂÓfiÙËÙ·˜ Στην ενότητα αυτή µάθατε ότι ο υπολογιστής αποτελείται από την ΚΜΕ, το σύστηµα της µνήµης, τις µονάδες εισόδου/εξόδου και τις αρτηρίες διασύνδεσης των µονάδων του. Η ΚΜΕ αποτελείται από τη Μονάδα Επεξεργασίας ∆εδοµένων στην οποία εκτελούνται οι αριθµητικές και λογικές πράξεις, και τη Μονάδα Ελέγχου, που αναλύει την εντολή που πρέπει να εκτελεστεί και παράγει τα απαιτούµενα σήµατα ελέγχου για την εκτέλεση της εντολής. Επίσης µάθατε ότι µία εντολή εκτελείται σε µία σειρά από βήµατα. Παρουσιάστηκε η κύρια και η βοηθητική µνήµη, όπως και τα βασικά χαρακτηριστικά των τεχνολογιών που χρησιµοποιούνται για την υλοποίησή τους. Έγινε επίσης µία εισαγωγή στην τεχνική της κρυφής µνήµης. Η τεχνική της κρυφής µνήµης έχει σαν στόχο να µειώσει το µέσο χρόνο προσπέλασης της πληροφορίας, που βρίσκεται στο σύστηµα της µνήµης του υπολογιστή. Τέλος, έγινε µία σύντοµη περιγραφή της ιδεατής µνήµης, που κύριος στόχος της είναι να δώσει στον προγραµµατιστή τη δυνατότητα να γράφει προγράµµατα χωρίς να λαµβάνει υπόψη του το πραγµατικό µέγεθος της κύριας µνήµης του υπολογιστή, στον οποίο θα εκτελεστούν.
39
¢Ú·ÛÙËÚÈfiÙËÙ· 1.3
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.14
40
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
1.4 ªÔÓ¿‰Â˜ ÂÈÛfi‰Ô˘/ÂÍfi‰Ô˘
™ÎÔfi˜ Σκοπός της ενότητας είναι να κατανοήσετε τη χρησιµότητα των µονάδων εισόδου/εξόδου, αλλά και τη µεγάλη ποικιλία µονάδων εισόδου/εξόδου, που είναι διαθέσιµες. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει αυτή την ενότητα, θα γνωρίζετε: • ποια µονάδα εισόδου µπορείτε να χρησιµοποιήσετε, για να εισάγετε στον υπολογιστή πληροφορία που βρίσκεται σε συγκεκριµένη µορφή, για παράδειγµα φωνή ή κείµενο, όπως και τις µονάδες, που µπορείτε να χρησιµοποιήσετε, για να πάρετε την πληροφορία από τον υπολογιστή σε κάποια συγκεκριµένη µορφή. ª√¡∞¢∂™ ∂π™√¢√À/∂•√¢√À
Οι µονάδες εισόδου/εξόδου χρησιµοποιούνται για την επικοινωνία του υπολογιστή µε το περιβάλλον του. Ας αναλογιστούµε πώς θα επικοινωνούσαµε µε τον υπολογιστή χωρίς την ύπαρξή τους, για να αντιληφθούµε τη σπουδαιότητά τους. Μπορούµε να διακρίνουµε τις µονάδες εισόδου/εξόδου σε µονάδες εισόδου, σε µονάδες εξόδου, σε µονάδες εισόδου/εξόδου και µονάδες αποθήκευσης της πληροφορίας. Χαρακτηριστικό παράδειγµα µονάδας εισόδου είναι το πληκτρολόγιο. Σ' αυτή την περίπτωση, εάν ο χρήστης βρεθεί στην ανάγκη να δώσει στον υπολογιστή την ίδια πληροφορία περισσότερες από µία φορές, θα πρέπει κάθε φορά να πληκτρολογήσει την πληροφορία, όπως και την πρώτη φορά. Άλλες χαρακτηριστικές µονάδες εισόδου είναι το µικρόφωνο (είσοδος σ' αυτή την περίπτωση είναι η φωνή) και ο σαρωτής (scanner). Χαρακτηριστικά παραδείγµατα µονάδων εξόδου είναι η οθόνη και ο εκτυπωτής. Ό,τι εµφανίζεται στην οθόνη, όπως και ό,τι εκτυπώνεται, δεν µπορεί να χρησιµοποιηθεί άµεσα σαν είσοδος από τον υπολογιστή. Χαρακτηριστικό επίσης παράδειγµα µονάδας εξόδου σ' ένα σύστηµα πολυµέσων είναι το µεγάφωνο. Χαρακτηριστικά παραδείγµατα µονάδων εισόδου και εξόδου είναι ο συνδυασµός οθόνης–ποντικιού και ο συνδυασµός ελεγκτή δικτύου–δικτύου.
ª√¡∞¢∂™ ∂π™√¢√À/∂•√¢√À
Στις µονάδες αποθήκευσης της πληροφορίας, η πληροφορία µπορεί να διαβαστεί πολλές φορές κατ' επανάληψη. Όπως έχουµε ήδη αναφέρει, οι µονάδες µαγνητικών δίσκων χρησιµοποιούνται για την υλοποίηση της βοηθητικής µνήµης, ενώ οι µονάδες µαγνητικής ταινίας για την υλοποίηση της µνήµης υποστήριξης. Στις µονάδες µαλακών δίσκων (floppy disk) µπορούµε να αφαιρέσουµε τη δισκέτα, στην οποία έχει αποθηκευτεί πληροφορία, και να την τοποθετήσουµε στη µονάδα µαλακών δίσκων ενός άλλου υπολογιστή, που επιθυµούµε να χρησιµοποιήσει τα αποθηκευµένα δεδοµένα και/ή προγράµµατα. Στην πρώτη περίπτωση η µονάδα µαλακών δίσκων χρησιµοποιείται σαν µονάδα εξόδου, ενώ στη δεύτερη σαν µονάδα εισόδου. Υπάρχουν επίσης µονάδες σκληρών δίσκων, στους οποίους οι υποµονάδες των δίσκων αντικαθίστανται και εποµένως µπορούν να χρησιµοποιηθούν, όπως και οι µαλακοί δίσκοι, σαν µονάδες εισόδου και εξόδου. Για τις µονάδες µαγνητικών ταινιών ισχύουν τα ίδια. Επίσης, τα ίδια ισχύουν για τις µονάδες οπτικών δίσκων ανάγνωσης/εγγραφής, ενώ οι µονάδες οπτικών δίσκων µόνο ανάγνωσης, όπως για παράδειγµα οι µονάδες CD–ROM, είναι µονάδες εισόδου. Από τα παραδείγµατα, που δώσαµε πιο πάνω, για τις µονάδες εισόδου, εξόδου, εισόδου και εξόδου και αποθήκευσης παρατηρούµε ότι κάποιες από τις µονάδες αυτές χρησιµοποιούνται για την επικοινωνία του ανθρώπου µε τον υπολογιστή, ενώ κάποιες άλλες για τη µεταφορά πληροφορίας µεταξύ υπολογιστών, π.χ. δίκτυα και µονάδες µαγνητικών δίσκων. Θα πρέπει να σηµειώσουµε ότι οι µονάδες εισόδου/εξόδου δεν χρησιµοποιούνται µόνο για την επικοινωνία του υπολογιστή µε τον άνθρωπο ή µε άλλο υπολογιστή. Για παράδειγµα, ένας υπολογιστής συνδεδεµένος µε ένα ηλιακό τηλεσκόπιο µπορεί να παίρνει δεδοµένα κατευθείαν από τα όργανα που παρατηρούν τον ήλιο, ενώ κάποιος άλλος υπολογιστής, που ελέγχει ένα αυτοµατοποιηµένο εργοστάσιο χηµικών, µπορεί να δίνει εξόδους κατευθείαν σε διάφορες µηχανές, που ρυθµίζουν την παραγωγή. Από την ανωτέρω περιγραφή είναι προφανές ότι τα λειτουργικά χαρακτηριστικά των διατάξεων εισόδου/εξόδου µπορεί να διαφέρουν σηµαντικά µεταξύ τους, αλλά έχουν και ένα κύριο κοινό χαρακτηριστικό, τη σχετικά µικρή ταχύτητα προσπέλασης, που και αυτή διαφέρει σηµαντικά από µονάδα σε µονάδα. Για παράδειγµα, ο µέγιστος ρυθµός εισόδου πληροφορίας χρησιµοποιώντας το πληκτρολόγιο είναι 10 ψηφιολέξεις το δευτερόλεπτο, ενώ διαµέσου ενός τοπικού δικτύου µπορεί να είναι 200.000 ψηφιολέξεις το δευτερόλεπτο.
41
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
42
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.15
Συµπληρώστε κάθε πρόταση επιλέγοντας τις σωστές µονάδες : οθόνη, πληκτρολόγιο, µονάδα µαγνητικού δίσκου, µονάδα µαγνητικής ταινίας, µονάδα οπτικού δίσκου, ποντίκι, σαρωτής, έγχρωµος εκτυπωτής, µικρόφωνο, µεγάφωνο, ελεγκτής δικτύου, δίκτυο. • Oι µονάδες _____________ είναι µονάδες εισόδου. • Oι µονάδες _____________ είναι µονάδες εξόδου. • Oι µονάδες _____________ είναι µονάδες εισόδου και εξόδου. • Oι µονάδες _____________ είναι µονάδες αποθήκευσης.
1.5 ∞fi‰ÔÛË ˘ÔÏÔÁÈÛÙÒÓ
™ÎÔfi˜ Σκοπός της ενότητας είναι να µάθετε πώς µπορείτε να εκτιµήσετε την απόδοση ενός υπολογιστή. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει αυτή την ενότητα, θα γνωρίζετε πώς να: • αποφύγετε παγίδες που σχετίζονται µε την εκτίµηση της απόδοσης ενός υπολογιστή • συγκρίνετε την απόδοση δύο υπολογιστών
∞¶√¢√™∏ À¶√§√°π™∆ø¡
Συχνά στις διαφηµίσεις των υπολογιστών, στο τµήµα που αναφέρεται στην απόδοσή τους, συναντάµε τους όρους “MIPS (προφέρεται µίπς)” και “MFLOPS (προφέρεται µεγαφλόπς)”. Ας δούµε κατ’ αρχήν τι σηµαίνει καθένας από τους όρους αυτούς και πόσο κατάλληλος είναι για να χρησιµοποιείται σαν µέτρο δήλωσης της απόδοσης ενός υπολογιστή. Η απόδοση ενός υπολογιστή έχει προφανώς σχέση µε την ταχύτητα εκτέλεσης προγραµµάτων σ’ αυτόν. MIPS είναι τα αρχικά γράµµατα του “Million Instructions Per Second” και χρησιµοποιείται για να δηλώσει πόσα εκατοµµύρια εντολές
∞¶√¢√™∏ À¶√§√°π™∆ø¡
εκτελούνται ανά δευτερόλεπτο. Αυτό που φαίνεται προφανές είναι ότι ένας υπολογιστής που εκτελεί περισσότερες εντολές ανά δευτερόλεπτο από κάποιον άλλο θα εκτελεί ένα πρόγραµµα πιo γρήγορα, άρα θα έχει µεγαλύτερη απόδοση. Αυτό όµως δεν είναι αληθές για δύο λόγους. Πρώτον διότι ο χρόνος εκτέλεσης µίας εντολής εξαρτάται από την πολυπλοκότητά της. Εποµένως, διαφορετικές εντολές έχουν διαφορετικούς χρόνους εκτέλεσης. ∆εύτερον διότι το πλήθος των εντολών, σε επίπεδο γλώσσας µηχανής (βλέπε κεφάλαιο 3) ενός προγράµµατος µιας συγκεκριµένης εφαρµογής εξαρτάται από το σύνολο εντολών (Instruction Set) του υπολογιστή, στον οποίο θα τρέξει το πρόγραµµα. Οι παραπάνω δύο λόγοι συνεπάγονται ότι τα συµπεράσµατά µας δεν είναι καθόλου ασφαλή εάν χρησιµοποιούµε τα MIPS για να συγκρίνουµε υπολογιστές µε διαφορετικά σύνολα εντολών. Επίσης ο πρώτος από τους παραπάνω λόγους συνεπάγεται ότι ακόµη και στον ίδιο υπολογιστή τρέχοντας διαφορετικά προγράµµατα υπολογίζουµε διαφορετική τιµή για τα MIPS. Τα MIPS µπορούν να χρησιµοποιηθούν µε ασφάλεια για τη σύγκριση επεξεργαστών που έχουν το ίδιο σύνολο εντολών, αλλά διαφορετικές υλοποιήσεις. MFLOPS είναι τα αρχικά γράµµατα του “Million FLoating–point Operations Per Second” και χρησιµοποιείται για να δηλώσει πόσα εκατοµµύρια πράξεων αριθµητικής κινητής υποδιαστολής εκτελούνται ανά δευτερόλεπτο (βλέπε κεφάλαιο 2). Έχει προταθεί για να δηλώνει την απόδοση µόνο για πράξεις αριθµητικής κινητής υποδιαστολής. Σε αντίθεση µε τα MIPS µετράει αριθµό πράξεων και όχι εντολών. Αιτία είναι η σκέψη ότι το ίδιο πρόγραµµα όταν τρέχει σε διαφορετικούς υπολογιστές θα εκτελείται διαφορετικός αριθµός εντολών γλώσσας µηχανής, αλλά ο ίδιος αριθµός πράξεων κινητής υποδιαστολής. ∆υστυχώς και το µέτρο αυτό δεν είναι αξιόπιστο. Η τιµή του µέτρου αλλάζει όχι µόνο ανάλογα µε το ποσοστό των πράξεων κινητής υποδιαστολής σε σχέση µε τις πράξεις σταθερής υποδιαστολής, αλλά και ανάλογα µε το ποσοστό των αργών πράξεων κινητής υποδιαστολής σε σχέση µε τις γρήγορες. Για παράδειγµα ένα πρόγραµµα µε 100% προσθέσεις κινητής υποδιαστολής θα δίνει µεγαλύτερη τιµή του µέτρου MFLOPS από ό,τι ένα πρόγραµµα µε 100% πολλαπλασιασµούς κινητής υποδιαστολής. Επίσης, οι υπολογιστές περιλαµβάνουν στο σύνολο εντολών τους διαφορετικές εντολές κινητής υποδιαστολής, µε συνέπεια η επιλογή των πράξεων κινητής υποδιαστολής, που θα ληφθεί υπόψη, να επηρεάζει τα αποτελέσµατα. Ο ασφαλέστερος τρόπος εκτίµησης της απόδοσης ενός υπολογιστή είναι να
43
∂ π ™ ∞ ° ø ° ∏ ™ ∆ ∏ ¢ √ ª ∏ , √ ƒ °∞ ¡ ø ™ ∏ , § ∂ π ∆ √ À ƒ ° π ∞ ∫ ∞ π ∞ • π √ § √ ° ∏ ™ ∏ ∆ ø ¡ À ¶ √ § √ ° π ™ ∆ ø ¡
44
τρέξουµε σ’ αυτόν τα προγράµµατα που µας ενδιαφέρουν και να µετρήσουµε το χρόνο εκτέλεσης. Με τον ίδιο τρόπο µπορεί να γίνει και η σύγκριση της απόδοσης κάποιων υπολογιστών. Ως χρόνο εκτέλεσης (execution time) θεωρούµε το χρόνο από την αρχή µέχρι την ολοκλήρωση της εκτέλεσης ενός προγράµµατος. Αυτός ο χρόνος καλείται επίσης και χρόνος αναµονής (response time). Θα πρέπει να σηµειώσουµε ότι για τον υπεύθυνο ενός υπολογιστικού κέντρου ο υπολογιστής είναι πιο γρήγορος εάν ολοκληρώνεται η εκτέλεση περισσότερων προγραµµάτων ανά ώρα (throughput). Και στις δύο ανωτέρω περιπτώσεις το κλειδί είναι ο χρόνος εκτέλεσης κάποιων προγραµµάτων και η απόδοση ισούται µε το αντίστροφο του χρόνου εκτέλεσης. Οι κατασκευάστριες εταιρείες διαφηµίζουν τους υπολογιστές τους παρουσιάζοντας την απόδοσή τους και συγκρίνοντάς την µε την απόδοση άλλων υπολογιστών. Ακόµα και εάν η απόδοση εκτιµάται µε τη χρησιµοποίηση πραγµατικών προγραµµάτων, λόγω της µεγάλης ποικιλίας προγραµµάτων που µπορούν να χρησιµοποιηθούν, η σύγκριση δεν µπορεί να δώσει αξιόπιστα αποτελέσµατα, παρά µόνον εάν επιλεγούν αντιπροσωπευτικά προγράµµατα από διάφορα πεδία εφαρµογών. Η πλέον δηµοφιλής συλλογή προγραµµάτων είναι τα SPEC92 µετροπρογράµµατα (benchmarks). Τα SPEC92 αποτελούνται από τα SPECint92 µετροπρογράµµατα, που έχουν ως στόχο την αξιολόγηση της απόδοσης του υπολογιστή για εφαρµογές επεξεργασίας ακεραίων, και τα SPECfp92, που έχουν ως στόχο την αξιολόγηση της απόδοσης του υπολογιστή για εφαρµογές που βασίζονται σε επεξεργασία αριθµών κινητής υποδιαστολής. ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.16
∆ύο επεξεργαστές µε τελείως διαφορετικά σύνολα εντολών έχουν ο ένας 100 MIPS και ο άλλος 150 MIPS. Ποιος από τους δύο έχει µεγαλύτερη απόδοση και γιατί;
™‡ÓÔ„Ë ∫ÂÊ·Ï·›Ô˘ Κάθε υπολογιστικό σύστηµα αποτελείται από το υλικό, που περιλαµβάνει το σύνολο όλων των συσκευών που το απαρτίζουν και το λογισµικό, που συνίσταται στο σύνολο των προγραµµάτων που µπορούν να εκτελεστούν σ’ αυτό. Μπορούµε να πούµε ότι το υλικό αποτελείται από την κεντρική µονάδα και τις περιφερειακές µονάδες. Το λογισµικό διακρίνεται σε λογισµικό του συστήµατος, διαγνωστικό λογισµικό και λογισµικό των εφαρµογών.
™À¡√æ∏ ∫∂º∞§∞π√À
Υπάρχουν πολλά επίπεδα αρχιτεκτονικής υπολογιστών, από επίπεδο συστήµατος µέχρι επίπεδο µικροπρογραµµατισµού (αυτό το επίπεδο βέβαια υπάρχει µόνο στους µικροπρογραµµατισµένους επεξεργαστές, βλέπε κεφάλαιο 3). Εµείς στο βιβλίο αυτό θεωρούµε την αρχιτεκτονική υπολογιστών σε επίπεδο εντολών γλώσσας µηχανής και µάλιστα υπό την ευρεία της έννοια που περιλαµβάνει τη δοµή, την οργάνωση, την υλοποίηση και την απόδοση. Ένα σύνολο υπολογιστών που έχουν την ίδια αρχιτεκτονική υπολογιστών σε επίπεδο γλώσσας µηχανής λέµε ότι αποτελούν µία οικογένεια ή σειρά υπολογιστών. Ένας υπολογιστής αποτελείται από την Κεντρική Μονάδα Επεξεργασίας, ΚΜΕ, τη µνήµη, τις µονάδες εισόδου/εξόδου και το σύστηµα διασύνδεσης των µονάδων. Η ΚΜΕ έχει την όλη υπευθυνότητα για την εκτέλεση των προγραµµάτων. Στη µνήµη ενός υπολογιστή αποθηκεύονται τα δεδοµένα, που θα επεξεργαστεί ο υπολογιστής και τα προγράµµατα, που καθορίζουν την επεξεργασία που θα γίνει. Η χωρητικότητα του συστήµατος µνήµης µετριέται σε KBytes, MBytes ή GBytes. Η χρησιµοποίηση της τεχνική της κρυφής µνήµης µειώνει το µέσο χρόνο προσπέλασης της πληροφορίας που βρίσκεται στο σύστηµα µνήµης του υπολογιστή. Η ιδεατή µνήµη κάνει το χρήστη να βλέπει την κύρια µνήµη και ένα µέρος της µνήµης στο δίσκο ως µία ενιαία πολύ µεγάλη άµεσα προσπελάσιµη από την ΚΜΕ µνήµη. Εποµένως, δίνεται στον προγραµµατιστή η δυνατότητα να γράφει προγράµµατα χωρίς να λαµβάνει υπόψη του το πραγµατικό µέγεθος της κύριας µνήµης. Οι µονάδες εισόδου/εξόδου χρησιµοποιούνται για την επικοινωνία του υπολογιστή µε τον εξωτερικό κόσµο. Η κύρια λειτουργία τους είναι να µετατρέπουν την πληροφορία από µία φυσική παράσταση σε κάποια άλλη. Τα MIPS και τα MFLOPS µπορούν να χρησιµοποιηθούν µόνο για σύγκριση επεξεργαστών που έχουν το ίδιο σύνολο εντολών, αλλά διαφορετικές υλοποιήσεις. Η απόδοση ενός υπολογιστή δεν εξαρτάται µόνον από την ταχύτητα του επεξεργαστή, αλλά και από το σύστηµα της µνήµης και το σύστηµα διασύνδεσης των µονάδων του υπολογιστή. Ο ασφαλέστερος τρόπος εκτίµησης της απόδοσης ενός υπολογιστή είναι να εκτελέσουµε σ’ αυτόν προγράµµατα που µας ενδιαφέρουν και να µετρήσουµε το χρόνο εκτέλεσης.
45
∫
√ÚÁ¿ÓˆÛË Ù˘ ¶ÏËÚÔÊÔÚ›·˜ ÛÙÔÓ ÀÔÏÔÁÈÛÙ‹
™ÎÔfi˜ Σκοπός του κεφαλαίου αυτού είναι να µάθετε διάφορους τρόπους αναπαράστασης της πληροφορίας στον υπολογιστή. Η πληροφορία αποτελείται από τα δεδοµένα και τα προγράµµατα που καθορίζουν τον τρόπο επεξεργασίας των δεδοµένων. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει αυτό το κεφάλαιο, θα µπορείτε να : • περιγράψετε τα διάφορα είδη πληροφορίας που παριστάνονται στον υπολογιστή και τον τρόπο αναπαράστασης κάθε είδους • αναφέρετε τα µειονεκτήµατα και πλεονεκτήµατα των διαφόρων τρόπων αναπαράστασης της πληροφορίας • κατατάξετε τους υπολογιστές σε κατηγορίες ανάλογα µε τα βασικά χαρακτηριστικά του συνόλου εντολών γλώσσας µηχανής ŒÓÓÔȘ ÎÏÂȉȿ • Aριθµητικά δεδοµένα • Aλφαριθµητικά δεδοµένα • Eντολές • Tρόποι διευθυνσιοδότησης ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Το κεφάλαιο αυτό αποτελείται από δύο ενότητες. Στην πρώτη ενότητα παρουσιάζονται τα διάφορα είδη πληροφορίας και ο τρόπος αναπαράστασής τους στον υπολογιστή. Στη δεύτερη ενότητα παρουσιάζονται τα χαρακτηριστικά των εντολών σε επίπεδο γλώσσας µηχανής.
2 ∂
º
∞
§
∞
π
√
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
48
2.1 ¢Â‰Ô̤ӷ
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να κατανοήσετε τους διάφορους τρόπους αναπαράστασης των δεδοµένων στον υπολογιστή, καθώς και τις διαφορές τους. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα µπορείτε να: • επιλέγετε το σωστό τρόπο αναπαράστασης κάθε είδους δεδοµένων στον υπολογιστή. • αποφεύγετε προβλήµατα που προκύπτουν κατά την επεξεργασία αριθµητικών δεδοµένων. ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αποτελείται από δύο υποενότητες. Στην υποενότητα 2.1.1 παρουσιάζουµε τον τρόπο µε τον οποίο παριστάνονται οι αριθµοί στον υπολογιστή, καθώς και τα µειονεκτήµατα και τα πλεονεκτήµατα κάθε τρόπου αναπαράστασης. Στην υποενότητα 2.1.2 παρουσιάζουµε τον τρόπο αναπαράστασης στον υπολογιστή µη αριθµητικών δεδοµένων. 2.1.1 ∞ÚÈıÌËÙÈο ‰Â‰Ô̤ӷ
∞¡∞¶∞ƒ∞™∆∞™∏ ∞ƒπ£ªø¡ ™∆√¡ À¶√§√°π™∆∏
Όλοι οι αριθµοί δεν είναι δυνατόν να παρασταθούν ακριβώς εντός του υπολογιστή. Αυτό οφείλεται στο γεγονός ότι διαθέτουµε για την παράσταση κάθε αριθµού πεπερασµένο αριθµό δυαδικών ψηφίων. Επίσης το αποτέλεσµα µιας πράξης είναι δυνατόν να έχει περισσότερα ψηφία από όσα χωρούν σε µία λέξη. Τότε είµαστε υποχρεωµένοι να παραλείψουµε τα επιπλέον ψηφία, αλλά και πιθανόν να τροποποιήσουµε τα εναποµένοντα. Για παράδειγµα το γινόµενο δύο αριθµών των ν δυαδικών ψηφίων καταλαµβάνει περισσότερα από ν δυαδικά ψηφία. Εάν θέλουµε να παραστήσουµε το αποτέλεσµα µε ν ψηφία, µπορούµε να κρατήσουµε τα ν περισσότερο σηµαντικά ψηφία. Αυτή η διαδικασία καλείται περικοπή (truncation). Προφανώς ο αριθµός που παίρνουµε µετά την περικοπή θα έχει κάποιο σφάλµα, δηλαδή θα διαφέρει από τον αριθµό πριν την περικοπή. Το µέγεθος του σφάλµατος θα εξαρτάται από τον αριθµό των απορριφθέντων ψηφίων. Το σφάλµα µπορεί να ελαττωθεί µε τη
¢∂¢√ª∂¡∞
µέθοδο της στρογγυλοποίησης (rounding). Ένας τρόπος για να κάνουµε στρογγυλοποίηση είναι πριν την περικοπή να προσθέσουµε στον αριθµό το βλ/2, όπου βλ είναι το βάρος του λιγότερο σηµαντικού ψηφίου που διατηρείται και β είναι η βάση του συστήµατος αρίθµησης. Για παράδειγµα για να στρογγυλοποιήσουµε το δεκαδικό αριθµό Χ= 0.3729836 σε τέσσερα δεκαδικά ψηφία θα προσθέσουµε στον Χ τον αριθµό 10 –4/2 = 0.00005, οπότε παίρνουµε τον αριθµό 0.3730336 και κρατάµε τα τέσσερα περισσότερο σηµαντικά ψηφία 0.3730. Η απλή περικοπή δίνει τη λιγότερο ακριβή τιµή 0.3729. Όλα τα σφάλµατα, που προκαλούνται στους υπολογιστές και οφείλονται στην αδυναµία να χρησιµοποιήσουµε άπειρες θέσεις για την παράσταση των αριθµών, ονοµάζονται σφάλµατα στρογγυλοποίησης (round–off errors). Εάν δεν λάβουµε προφυλάξεις, είναι δυνατόν διαδοχικοί υπολογισµοί να αυξήσουν σηµαντικά το σφάλµα στρογγυλοποίησης. Οι παραστάσεις αριθµών που επιτρέπει ένας υπολογιστής πρέπει να έχουν επαρκή ακρίβεια, ώστε τα σφάλµατα στρογγυλοποίησης να µην δηµιουργούν προβλήµατα στην πλειονότητα των χρηστών. Είναι επίσης επιθυµητό να προσφέρει τη δυνατότητα εκτέλεσης αριθµητικής υψηλότερης ακρίβειας, όταν απαιτείται. Η υψηλότερη ακρίβεια επιτυγχάνεται συνήθως χρησιµοποιώντας περισσότερες από µία λέξεις για την παράσταση ενός αριθµού. Σ’ αυτή την περίπτωση λέµε ότι έχουµε αριθµητική πολλαπλής ακρίβειας. Για παράδειγµα, διπλής ακρίβειας όταν χρησιµοποιούνται δύο λέξεις, τριπλής ακρίβειας όταν χρησιµοποιούνται τρεις λέξεις κλπ. Η αριθµητική πολλαπλής ακρίβειας είναι αργότερη από την αριθµητική απλής ακρίβειας, δαπανά περισσότερο χώρο µνήµης και χρησιµοποιεί ειδικά προγράµµατα του συστήµατος. Το δυαδικό σύστηµα είναι αυτό που υλοποιείται άµεσα στον υπολογιστή. Επειδή στην καθηµερινή ζωή χρησιµοποιούµε δεκαδικούς αριθµούς, οι αριθµοί που εισέρχονται στον υπολογιστή θα πρέπει κατ’ αρχήν να µετατραπούν από το δεκαδικό στο δυαδικό σύστηµα αρίθµησης. Οµοίως η µετατροπή από το δυαδικό στο δεκαδικό σύστηµα είναι µέρος της διαδικασίας εξόδου του υπολογιστή. Όπως είδαµε στην προηγούµενη παράγραφο, η διαδικασία µετατροπής ενός δεκαδικού αριθµού σε δυαδικό είναι χρονοβόρα. Σε µερικές εφαρµογές που τα δεδοµένα είναι πολλά, αλλά η επεξεργασία είναι περιορισµένη, η διαδικασία µετατροπής των δεδοµένων από το δεκαδικό στο δυαδικό και αντίστροφα αποτελεί ένα µεγάλο τµήµα των λειτουργιών του υπολογιστή. Σ’ αυτές τις περιπτώσεις απαιτείται η διαδικασία µετατροπής από
49
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
50
το ένα σύστηµα αρίθµησης στο άλλο να γίνεται πολύ γρήγορα. Η µετατροπή γίνεται εύκολα κωδικοποιώντας κάθε δεκαδικό ψηφίο ξεχωριστά µε µία ακολουθία δυαδικών ψηφίων. Υπάρχουν διάφοροι τρόποι για να γίνει η αντιστοίχηση ενός δεκαδικού ψηφίου σε µία ακολουθία δυαδικών ψηφίων και αντίστροφα. Ο πλέον ευρέως χρησιµοποιούµενος είναι κάθε δεκαδικό ψηφίο να παριστάνεται µε τη δυαδική του αναπαράσταση χρησιµοποιώντας τέσσερα δυαδικά ψηφία, όπως φαίνεται στον πίνακα 2.1. Τότε λέµε ότι χρησιµοποιούµε δυαδικά κωδικοποιηµένους δεκαδικούς αριθµούς (Binary Coded Decimal, BCD, numbers). ¶›Ó·Î·˜ 2.1
∆υαδική παράσταση των δεκαδικών ψηφίων από 0 έως και 9. ∆εκαδικό ψηφίο
∆υαδική παράσταση
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
Για την αναπαράσταση των αριθµών στον υπολογιστή χρησιµοποιούµε την παράσταση σταθερής υποδιαστολής (fixed point representation) και την παράσταση κινητής υποδιαστολής (floating point representation). ¶∞ƒ∞™∆∞™∏ ™∆∞£∂ƒ∏™ À¶√¢π∞™∆√§∏™
Η παράσταση σταθερής υποδιαστολής εξάγεται άµεσα από τη συνηθισµένη παράσταση ενός αριθµού σαν µία ακολουθία πεπερασµένων ψηφίων χωρισµένων µε ένα δεκαδικό σηµείο. Το δεκαδικό σηµείο δεν δηλώνεται ρητά, θεωρείται ότι βρίσκεται σε µία προκαθορισµένη θέση. Συνήθως θεωρούµε ότι βρίσκεται µπροστά από το περισσότερο σηµαντικό ψηφίο ή µετά το λιγότερο σηµαντικό ψηφίο. Για παράδειγµα, ο θετικός αριθµός Ν σε
¢∂¢√ª∂¡∞
51
παράσταση σταθερής υποδιαστολής και σε σύστηµα αρίθµησης µε βάση το β θα έχει τη µορφή: αν–1αν–2 … α1α0, µε αν–1, αν–2, …, α0 < β. Εάν θεωρήσουµε ότι το δεκαδικό σηµείο βρίσκεται πριν το πιο σηµαντικό ψηφίο, αν–1, τότε στην περίπτωση αυτή οι αριθµοί που µπορούν να παρασταθούν είναι κλασµατικοί και βρίσκονται στην περιοχή 0 £ Ν £ 1–β–ν. Η µέγιστη τιµή που µπορεί να παρασταθεί µε τα ν αυτά ψηφία είναι (β–1)β–1 + (β–1)β–2 + … +(β–1)β–ν και µπορεί να υπολογιστεί σαν το άθροισµα των ν πρώτων όρων µιας γεωµετρικής προόδου που δίνεται από τον τύπο Σ = (ανω – α1)/ (ω–1) µε ω =1/β, α1 = (β–1) β–1 και αν = (β–1) β–ν. Εάν θεωρήσουµε ότι το δεκαδικό σηµείο βρίσκεται µετά το λιγότερο σηµαντικό ψηφίο, το α0 στην περίπτωση αυτή, τότε οι αριθµοί που µπορούν να παρασταθούν είναι ακέραιοι και βρίσκονται στην περιοχή 0 £ Ν £ βν – 1. Στη συνέχεια θεωρούµε ότι το δεκαδικό σηµείο βρίσκεται δεξιά του ψηφίου α0. Για την παράσταση θετικών και αρνητικών αριθµών σε µορφή σταθερής υποδιαστολής υπάρχουν τρεις συµβολισµοί. Και στους τρεις συµβολισµούς το ψηφίο που βρίσκεται στην αριστερότερη θέση της παράστασης δηλώνει εάν ο αριθµός είναι θετικός ή αρνητικός. Εάν το ψηφίο αυτό έχει την τιµή 0, ο αριθµός είναι θετικός, ενώ εάν έχει την τιµή β–1, ο αριθµός είναι αρνητικός. Oι τρείς συµβολισµοί έχουν ως εξής: α. Παράσταση προσηµασµένου µεγέθους (sign–magnitude representation). Ν(β) = 0aν–2aν–3 … a1a0, –Ν(β) = (β–1)aν–2aν–3 … a1a0, β. Παράσταση συµπληρώµατος ως προς ελαττωµένη βάση (diminished – radix complement representation). Ν(β) = 0aν–2aν–3 … a1a0, –Ν(β) = (β–1) a–ν–2a–ν–3 … a–1a–0, όπου a– = (β–1)– a για 0 … λ … ν–2. λ
λ
Αυτή η παράσταση καλείται επίσης παράσταση συµπληρώµατος ως προς β–1. γ. Παράσταση συµπληρώµατος ως προς βάση (radix complement representation). Ν(β) =0 aν–2aν–3 … a1a0, –Ν(β) =(β–1) a–ν–2a–ν–3 … a–1a–0 +1 Αυτή η παράσταση καλείται επίσης παράσταση συµπληρώµατος ως προς β.
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
52
¶·Ú¿‰ÂÈÁÌ· 2.1 Στο δυαδικό σύστηµα αρίθµησης χρησιµοποιώντας 8 δυαδικά ψηφία οι αριθµοί Χ(10) = 11 και Χ(10) = –11 έχουν αντίστοιχα την ακόλουθη µορφή: α. Παράσταση προσηµασµένου µεγέθους Χ(10) = 11 ➞ Χ(2) = 00001011 Χ(10) = –11 ➞ Χ(2) = 10001011 β. Παράσταση συµπληρώµατος ως προς ελαττωµένη βάση Χ(10) = 11 ➞ Χ(2) = 00001011 Χ(10) = –11 ➞ Χ(2) = 11110100 γ. Παράσταση συµπληρώµατος ως προς βάση Χ(10) = 11 ➞ Χ(2) = 00001011 Χ(10) = –11 ➞ Χ(2) = 11110101 Ο επόµενος πίνακας δίνει τις περιοχές ακεραίων και τις παραστάσεις του µηδενός για δυαδική αριθµητική σταθερής υποδιαστολής και µήκος λέξης ν δυαδικά ψηφία. ¶›Ó·Î·˜ 2.2
Περιοχές ακεραίων και παραστάσεις του µηδενός για δυαδική αριθµητική σταθερής υποδιαστολής. Σύστηµα Αναπαράστασης Προσηµασµένων Αριθµών
Περιοχή Ακεραίων
Παραστάσεις Μηδενός
Προσηµασµένου µεγέθους
–(2ν–1 – 1) £ Α £ (2ν–1 – 1) (111…1) £ Α £ (011…1)
00…0 και 100…0
Συµπληρώµατος ως προς 1
–(2ν–1 – 1) £ Α £ (2ν–1 – 1) (100…0) £ Α £ (011…1)
00…0 και 11…1
Συµπληρώµατος ως προς 2
–2ν–1 £ Α £ (2ν–1 – 1) (100…0) £ Α £ (011…1)
00…0
¶∞ƒ∞™∆∞™∏ ∫π¡∏∆∏™ À¶√¢π∞™∆√§∏™
Ο συµβολισµός σταθερής υποδιαστολής είναι βολικός για την παράσταση µικρών αριθµών που βρίσκονται µέσα σε κάποια όρια. Για παράδειγµα οι ακέραιοι που µπορεί να χειριστεί ένας υπολογιστής που χρησιµοποιεί το δυαδικό σύστηµα αρίθµησης, παράσταση συµπληρώµατος ως προς 2 και έχει µήκος
¢∂¢√ª∂¡∞
λέξης 32 δυαδικά ψηφία βρίσκονται στην περιοχή (–231, 231 – 1). Αυτή η περιοχή µπορεί να είναι ανεπαρκής για επιστηµονικές εφαρµογές ή εφαρµογές µηχανικής. Για να παραστήσουµε αριθµούς σε µία πολύ ευρύτερη περιοχή, χρησιµοποιούµε την παράσταση κινητής υποδιαστολής. Στην παράσταση κινητής υποδιαστολής ένας αριθµός αποτελείται από ένα ζεύγος προσηµασµένων αριθµών Σ και Ε, καθένας σε παράσταση σταθερής υποδιαστολής, που παριστάνουν τον αριθµό Ζ = Σ ¥ ΒΕ. Πρέπει να σηµειώσουµε ότι και πάλι ο αριθµός θα έχει τη µορφή αν–1αν–2 … α1α0, αυτό που αλλάζει είναι ο τρόπος που ερµηνεύουµε αυτή την παράσταση. Τα Σ και Ε καλούνται αντίστοιχα συντελεστής και εκθέτης του αριθµού Ζ, ενώ το Β είναι µία προκαθορισµένη βάση. Ένας αριθµός µπορεί να έχει περισσότερες από µία παραστάσεις στο ίδιο αριθµητικό σύστηµα σε παράσταση κινητής υποδιαστολής. Για παράδειγµα, οι παραστάσεις 0.000003706 ¥ 103, 0.0003706 ¥ 101 και 0.3706 ¥ 10–2 παριστάνουν τον ίδιο δεκαδικό αριθµό. Εάν θεωρήσουµε ότι ο συντελεστής είναι σε παράσταση προσηµασµένου µεγέθους και το δεκαδικό σηµείο αµέσως µετά το πρώτο ψηφίο που παριστάνει το πρόσηµο, όπως οι παραστάσεις του παραπάνω παραδείγµατος, τότε ο αριθµός είναι σε κανονικοποιηµένη (normalized) µορφή εάν το πρώτο ψηφίο µετά την υποδιαστολή είναι διάφορο του µηδενός. Για παράδειγµα, από τις τρεις πιο πάνω αναπαραστάσεις η τρίτη αποτελεί την κανονικοποιηµένη µορφή. Εάν για το συµβολισµό αρνητικών αριθµών έχει χρησιµοποιηθεί παράσταση ως προς βάση ή ελαττωµένη βάση, ο κανόνας είναι διαφορετικός. Αρχικά το πλήθος των δυαδικών ψηφίων που χρησιµοποιούνταν για την παράσταση αριθµών κινητής υποδιαστολής, όπως επίσης και το πλήθος των δυαδικών ψηφίων που χρησιµοποιούνταν για την παράσταση του συντελεστή και του εκθέτη διέφερε από υπολογιστή σε υπολογιστή. Επίσης διέφερε η επιλογή της τιµής του Β και ο συµβολισµός που χρησιµοποιούνταν για την παράσταση αρνητικών αριθµών, δηλαδή παράσταση προσηµασµένου µεγέθους, συµπληρώµατος ως προς τη βάση ή συµπληρώµατος ως προς ελαττωµένη βάση. Αυτό είχε ως αποτέλεσµα να δηµιουργούνται προβλήµατα κατά τη µεταφορά από έναν υπολογιστή σε άλλον δεδοµένων που περιελάµβαναν αριθµούς κινητής υποδιαστολής, αλλά και προγραµµάτων που εκτελούσαν πράξεις µεταξύ αριθµών κινητής υποδιαστολής. Τα προβλήµατα λύθηκαν µε την υιοθέτηση του στάνταρτ κινητής υποδιαστολής ΙΕΕΕ 754. Όλοι οι υπολογιστές που σχεδιάστηκαν από το 1980 και µετά ακολουθούν αυτό το στάνταρτ. Στη συνέχεια θα παρουσιάσουµε τα βασικά χαρακτηριστικά αυτού
53
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
54
του στάνταρτ. Το στάνταρτ αυτό υιοθετεί το δυαδικό σύστηµα αρίθµησης, ως τιµή του Β έχει επιλεγεί το 2 και αναφέρεται σε αριθµούς 32 και περισσότερων δυαδικών ψηφίων. Η µορφή του στάνταρτ για αριθµούς των 32 δυαδικών ψηφίων δίνεται στο σχήµα 2.1. περισσότεροz σηµαντικόz δυαδικό ψηφίο
λιγότεροz σηµαντικόz δυαδικό ψηφίο
™¯‹Ì· 2.1
Η µορφή αριθµών των 32 δυαδικών ψηφίων σύµφωνα µε το στάνταρτ ΙΕΕΕ 754.
ένα δυαδικό ψηφίοz για το πρόσηµο τουz αριθµού
Ο συντελεστής είναι σε παράσταση προσηµασµένου µεγέθους και για την παράστασή του χρησιµοποιούνται 25 δυαδικά ψηφία, ένα για το πρόσηµο και 24 για το µέγεθός του. Επειδή χρησιµοποιούνται µόνο κανονικοποιηµένοι αριθµοί και παράσταση προσηµασµένου µεγέθους, στο συντελεστή δεν πρέπει να υπάρχουν οδηγά µηδενικά. Αυτό συνεπάγεται ότι το πλέον σηµαντικό δυαδικό ψηφίο του συντελεστή πρέπει να έχει την τιµή ένα. Εφόσον είναι γνωστή η τιµή του πλέον σηµαντικού δυαδικού ψηφίου του συντελεστή δεν είναι ανάγκη να καταγράφεται στην παράσταση του συντελεστή. Το στάνταρτ θεωρεί ότι το περισσότερο σηµαντικό ψηφίο του συντελεστή είναι το ένα, µετά από αυτό το ψηφίο βρίσκεται η υποδιαστολή και ακολουθούν 23 δυαδικά ψηφία, που µπορεί να παίρνουν διάφορες τιµές, που παριστάνονται στο πεδίο του συντελεστή. Εφόσον το πλέον σηµαντικό ψηφίο του συντελεστή θεωρείται πάντα ότι έχει την τιµή ένα και δεν δίνεται στην παράσταση του αριθµού, προκύπτει άµεσα η ερώτηση πώς παριστάνεται το µηδέν. Το πρόβληµα λύνεται θεωρώντας ότι, όταν τόσο το πεδίο του συντελεστή όσο και του εκθέτη περιλαµβάνουν µόνο µηδενικά, τότε ο αριθµός που παριστάνεται είναι το µηδέν. Οι σχεδιαστές του IEEE 754 ήθελαν µία αναπαράσταση κινητής υποδιαστολής που θα µπορούσε ο υπολογιστής να την επεξεργαστεί εύκολα µε πράξεις ακεραίων. Αυτός είναι και ο λόγος που το δυαδικό ψηφίο του προσήµου
¢∂¢√ª∂¡∞
τοποθετήθηκε στην πλέον σηµαντική θέση, εντελώς αριστερά. Αυτό επιταχύνει τη σύγκριση δύο αριθµών. Επίσης τοποθετώντας τον εκθέτη πριν το συντελεστή, µπορούµε να απλοποιήσουµε την ταξινόµηση αριθµών κινητής υποδιαστολής, αντιµετωπίζοντάς τους σαν ακέραιους. Μεταξύ δύο αριθµών µεγαλύτερος είναι αυτός που έχει το µεγαλύτερο εκθέτη, υπό την προϋπόθεση βέβαια ότι έχουν το ίδιο πρόσηµο και είναι κανονικοποιηµένοι. Ωστόσο οι αρνητικοί εκθέτες δηµιουργούν ένα πρόβληµα. Στο περισσότερο σηµαντικό πεδίο του εκθέτη υπάρχει µία µονάδα, οπότε ένας αρνητικός εκθέτης εµφανίζεται σαν ένας πολύ µεγάλος αριθµός. ¶·Ú¿‰ÂÈÁÌ· 2.2 Εάν θεωρήσουµε ότι για την παράσταση του εκθέτη χρησιµοποιείται παράσταση συµπληρώµατος ως προς δύο, τότε οι αριθµοί 1.0 ¥ 2–1 και 1.0 ¥ 2+1 θα είχαν αντίστοιχα τις ακόλουθες δύο παραστάσεις:
Εποµένως, εάν συγκρίνουµε τους παραπάνω δύο αριθµούς σαν ακεραίους, θα καταλήξουµε στο λανθασµένο συµπέρασµα ότι ο πρώτος είναι µικρότερος από το δεύτερο. Το πρόβληµα λύνεται εάν συµβολίσουµε τον αρνητικό εκθέτη µε τη µεγαλύτερη απόλυτη τιµή σαν 00000000 και το θετικό εκθέτη µε τη µεγαλύτερη τιµή σαν 11111111. Σ’ αυτή την περίπτωση λέµε ότι έχουµε εφαρµόσει την τεχνική της πόλωσης. Το ΙΕΕΕ 754 χρησιµοποιεί σαν πόλωση το 127, δηλαδή στην τιµή του εκθέτη ενός αριθµού προστίθεται πρώτα το 127 και η δυαδική παράσταση του αριθµού που προκύπτει αποτελεί την παράσταση του εκθέτη στο ΙΕΕΕ 754. ¶·Ú¿‰ÂÈÁÌ· 2.3 Θεωρούµε και πάλι τους αριθµούς 1.0 ¥ 2–1 και 1.0 ¥ 2+1 του παραδείγµατος 2.1. Για να πάρουµε την παράσταση του εκθέτη σύµφωνα µε το στάνταρτ ΙΕΕΕ 754, προσθέτουµε στο –1 και στο +1 τον αριθµό 127, οπότε παίρνουµε αντίστοιχα τους αριθµούς 126(10) = 01111110(2) και 128(10) = 10000000(2). Εποµένως, η παράσταση των αριθµών 1.0 ¥ 2–1 και 1.0 ¥ 2+1 σύµφωνα µε το στάνταρτ είναι αυτή που δίνεται στο σχήµα 2.2.α και 2.2.β αντίστοιχα. Παρα-
55
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
56
τηρούµε ότι συγκρίνοντας τους δύο αριθµούς κινητής υποδιαστολής σαν ακέραιους βγάζουµε πλέον το σωστό συµπέρασµα ότι ο πρώτος είναι µικρότερος του δεύτερου. ™¯‹Ì· 2.2
Παράσταση των αριθµών α. 1.0 ¥ 2–1 και β. 1.0 ¥ 2+1 σύµφωνα µε το στάνταρτ ΙΕΕΕ 754.
α.
β.
Η παραπάνω συζήτηση συνεπάγεται ότι η τιµή ενός αριθµού, που είναι σε παράσταση κινητής υποδιαστολής σύµφωνα µε το στάνταρτ ΙΕΕΕ 754, δίνεται από τη σχέση: (–1)π x (1 + συντελεστής) ¥ 2(εκθέτης – πόλωση)
(2.1)
όπου το σύµβολο x δηλώνει πολλαπλασιασµό και 0 £ εκθέτης < 255. Τα στοιχεία του στάνταρτ που δώσαµε µέχρι αυτό το σηµείο αφορούσαν στην αριθµητική απλής ακρίβειας. Το στάνταρτ υποστηρίζει και αριθµητική διπλής ακρίβειας. Σ’ αυτή την περίπτωση για την παράσταση ενός αριθµού χρησιµοποιούνται 64 δυαδικά ψηφία, ένα για το πρόσηµο, 11 για τον εκθέτη και 52 για το συντελεστή. Η τιµή ενός αριθµού που είναι σε παράσταση κινητής υποδιαστολής διπλής ακρίβειας σύµφωνα µε το στάνταρτ ΙΕΕΕ 754, δίνεται και πάλι από τη σχέση: (–1)π ¥ (1 + συντελεστής) ¥ 2(εκθέτης – πόλωση),
(2.2)
µόνο που τώρα πόλωση = 1023 και 0 £ εκθέτης < 2047. ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.1
Οι ακόλουθοι αριθµοί να παρασταθούν χρησιµοποιώντας µόνο οκτώ ψηφία. Χρησιµοποιήστε σε κάθε περίπτωση τη µέθοδο της περικοπής και της στρογγυλοποίησης και σχολιάστε τα αποτελέσµατα. Χ(2) = 101110.001001 Χ(2) = 101011.011001 Χ(2) = 101011.01001 Χ(10) = 97832.0016 Χ(10) = 105389.09601 Χ(10) = 5389.09404
¢∂¢√ª∂¡∞
Να παρασταθούν στο BCD οι ακόλουθοι αριθµοί: Χ(10) = 472.01 και Χ(10) = 902.34
Να δοθεί ο δεκαδικός αριθµός που παριστάνεται από τους δυαδικούς αριθµούς Χ(2) = 10110, Υ(2) = 011110 και Ζ(2) = 111011, σε καθεµία από τις επόµενες τρεις περιπτώσεις. Ο δυαδικός αριθµός είναι σε παράσταση α. προσηµασµένου µεγέθους, β. συµπληρώµατος ως προς 1 και γ. συµπληρώµατος ως προς 2.
Θεωρήστε ότι οι ακόλουθοι αριθµοί είναι σε παράσταση κινητής υποδιαστολής απλής ακρίβειας σύµφωνα µε το στάνταρτ ΙΕΕΕ 754 και προσδιορίστε τις τιµές τους.
2.1.2 ∞ÏÊ·ÚÈıÌËÙÈο ۇ̂ÔÏ·
∞§º∞ƒπ£ª∏∆π∫∞ ™Àªµ√§∞
Τα µη αριθµητικά δεδοµένα αποτελούνται από σειρές αλφαριθµητικών στοιχείων. Τα αλφαριθµητικά στοιχεία είναι αριθµοί, γράµµατα του αλφάβητου, σηµεία στίξης και ειδικά σύµβολα. Η παράσταση των αλφαριθµητικών στοιχείων γίνεται µε κωδικοποίηση δια µέσου του δυαδικού συστήµατος. Ένας κώδικας 7 δυαδικών ψηφίων που χρησιµοποιείται κυρίως για µετάδοση χαρακτήρων προς και από τον υπολογιστή ή µεταξύ δύο υπολογιστών είναι ο ASCII (American Standard Code for Information Interchange) κώδικας, που δίνεται στον Πίνακα 2.3.
57
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.2 ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.3
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.4
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
58
¶›Ó·Î·˜ 2.3
O κώδικας ASCII
Ο Ελληνικός Οργανισµός Τυποποίησης, ΕΛΟΤ, έχει αναπτύξει τον πρότυπο κώδικα ΕΛΟΤ 928 για την ενιαία παράσταση Ελληνικών και Λατινικών χαρακτήρων. Η κωδικοποίηση δίνεται στον Πίνακα 2.4. Ο Πίνακας αυτός περιέχει στο αριστερό του µέρος, από τον συνδυασµό 00/0 µέχρι και 15/7, τους χαρακτήρες του κώδικα ASCII. Το υπόλοιπο µέρος του Πίνακα περιλαµβάνει χαρακτήρες της Ελληνικής γραφής. Επίσης, περιλαµβάνει ειδικά σύµβολα που χρησιµοποιούνται συχνά και δεν περιέχονται στον κώδικα ASCII.
O κώδικας ΕΛΟΤ 928
¶›Ó·Î·˜ 2.4
¢∂¢√ª∂¡∞ 59
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
60
Mε τη δικτύωση των υπολογιστών προέκυψε η ανάγκη ανταλλαγής πληροφορίας µεταξύ χρηστών που χρησιµοποιούν διαφορετικά σύνολα χαρακτήρων, αλφάβητα. Έτσι προέκυψε η ανάγκη αναπαράστασης µέσω του δυαδικού συστήµατος περισσότερο συνόλων χαρακτήρων, αν είναι δυνατόν όλων των αλφάβητων της υφηλίου. Για το σκοπό αυτό, προτάθηκε το στάνταρ Unicode το οποίο χρησιµοποιεί 16 δυαδικά ψηφία για την αναπαράσταση κάθε χαρακτήρα. Mέχρι σήµερα έχουν κωδικοποιηθεί 38.885 χαρακτήρες που καλύπτουν της κύριες γλώσσες της Aµερικής, Eυρώπης, Mέσης Aνατολής, Aφρικής, Iνδίας, Aσίας και Ωκεανίας. O αριθµός των χαρακτήρων που µπορεί να παρασταθεί µπορεί να αυξηθεί µέχρι τους 65.000 χαρακτήρες. To Unicode είναι ένα εξελισσόµενο στάνταρ καθώς προστίθενται και νέα σύνολα χαρακτήρων.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.5
Να δοθεί η δυαδική παράσταση των αλφαριθµητικών στοιχείων R, q, [, %, α, β, ζ και ω στους κώδικες ASCII και ΕΛΟΤ 928 αντίστοιχα.
™‡ÓÔ„Ë ∂ÓfiÙËÙ·˜ Όλοι οι αριθµοί δεν µπορούν να παρασταθούν ακριβώς στον υπολογιστή. Επίσης, το αποτέλεσµα µιας πράξης µπορεί να έχει περισσότερα ψηφία από όσα έχουν διατεθεί για την παράστασή του. Από τους δύο αυτούς λόγους προκύπτει η ανάγκη της διαδικασίας περικοπής και στρογγυλοποίησης. Η παράσταση θετικών και αρνητικών αριθµών επιτυγχάνεται µε τη χρήση αριθµών προσηµασµένου µεγέθους, συµπληρώµατος ως προς ελαττωµένη βάση ή συµπληρώµατος ως προς βάση. Η παράσταση σταθερής υποδιαστολής χρησιµοποιείται συνήθως για αναπαράσταση ακέραιων αριθµών, ενώ η παράσταση κινητής υποδιαστολής χρησιµοποιείται για την παράσταση κλασµατικών αριθµών. Η αναπαράσταση των αλφαριθµητικών συµβόλων στον υπολογιστή γίνεται µε κωδικοποίηση δια µέσου του δυαδικού συστήµατος. Ο κώδικας ASCII είναι µία κωδικοποίηση που περιλαµβάνει µόνο το λατινικό αλφάβητο και κάποια ειδικά σύµβολα, µία επέκτασή του, που περιλαµβάνει και τα γράµµατα του Ελληνικού αλφάβητου καθορίζεται, από το πρότυπο ΕΛΟΤ 928.
∂¡∆√§∂™
2.2 ∂ÓÙÔϤ˜
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να κατανοήσετε την πληροφορία που περιέχει µία εντολή επιπέδου γλώσσας µηχανής και πώς αυτή κωδικοποιείται στην εντολή. Επίσης να µάθετε διάφορους τρόπους µε τους οποίους µπορείτε να προσπελάσετε πληροφορία που είναι αποθηκευµένη στην κύρια µνήµη του υπολογιστή. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα µπορείτε να: • ταξινοµήσετε τις εντολές της γλώσσας µηχανής ενός υπολογιστή ανάλογα µε τη λειτουργία τους • επιλέξετε να χρησιµοποιήσετε τον τρόπο διευθυνσιοδότησης που ταιριάζει καλύτερα στη συγκεκριµένη περίπτωση • ταξινοµήσετε τους υπολογιστές βάσει του συνόλου εντολών σε επίπεδο γλώσσας µηχανής 2.2.1 ∂›‰Ë ÂÓÙÔÏÒÓ ÁÏÒÛÛ·˜ Ì˯·Ó‹˜
Μία ακολουθία εντολών που περιγράφει τον τρόπο µε τον οποίο πρέπει να εκτελεστεί µία συγκεκριµένη εργασία καλείται πρόγραµµα. Τα ηλεκτρονικά κυκλώµατα του υπολογιστή µπορούν να αναγνωρίσουν και να εκτελέσουν άµεσα ένα περιορισµένο σύνολο εντολών, που καθεµία από αυτές δηλώνεται ως µια σειρά από µηδέν και ένα. Για παράδειγµα, στον υπολογιστή MIPS η εντολή «πρόσθεσε τα περιεχόµενα των καταχωρητών 17 και 20 και τοποθέτησε το αποτέλεσµα στον καταχωρητή 9» έχει τη µορφή 0000001000 1101000100100000100000. Το σύνολο όλων των εντολών που αναγνωρίζονται και εκτελούνται άµεσα από τα κυκλώµατα ενός υπολογιστή αποτελούν τη γλώσσα µηχανής (machine language) αυτού του υπολογιστή. Η χρησιµοποίηση της γλώσσας µηχανής για τη συγγραφή προγραµµάτων καλείται προγραµµατισµός σε γλώσσα µηχανής. Κάθε εντολή της γλώσσας µηχανής ενός υπολογιστή καθορίζει µία λειτουργία και τα τελούµενα (operands) ή δεδοµένα που θα χρησιµοποιηθούν. Η λειτουρ-
61
62
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
γία και τα τελούµενα περιγράφονται από συγκεκριµένα πεδία της εντολής. Το πεδίο περιγραφής της λειτουργίας καλείται κωδικός λειτουργίας (operation code, opcode). Τα πεδία των τελούµενων µπορεί να περιέχουν τα ίδια τα δεδοµένα, διευθύνσεις θέσεων της κύριας µνήµης ή αριθµούς καταχωρητών της ΚΜΕ, που περιέχουν τα δεδοµένα ή πληροφορία που θα χρησιµοποιηθεί για να προσδιοριστεί η θέση στην οποία υπάρχουν τα δεδοµένα. Σε κάθε εντολή υπάρχει πληροφορία που καθορίζει τον τρόπο µε τον οποίο πρέπει να χρησιµοποιηθεί η πληροφορία που υπάρχει στα πεδία των τελούµενων, για να προσδιοριστούν τα δεδοµένα. Λεπτοµέρειες θα δούµε στην ενότητα 2.3. Οι εντολές της γλώσσας µηχανής ενός υπολογιστή ανάλογα µε τη λειτουργία που καθορίζουν µπορούν να ταξινοµηθούν σε πέντε κατηγορίες. 1. Εντολές µεταφοράς δεδοµένων. Η εκτέλεση των εντολών αυτών έχει ως αποτέλεσµα τη µεταφορά πληροφορίας µεταξύ καταχωρητών της ΚΜΕ ή µεταξύ της κύριας µνήµης και καταχωρητών της ΚΜΕ. Η έννοια της µεταφοράς εδώ είναι κάπως διαφορετική από αυτή που χρησιµοποιούµε στην καθηµερινή µας ζωή. Όταν λέµε ότι το περιεχόµενο της θέσης µνήµης µε διεύθυνση 5000 µεταφέρθηκε σε έναν καταχωρητή εννοούµε ότι στον καταχωρητή δηµιουργήθηκε ένα αντίγραφο του περιεχοµένου αυτής της θέσης µνήµης, το περιεχόµενο της θέσης µνήµης έµεινε το ίδιο. 2. Αριθµητικές εντολές. Οι εντολές αυτές εκτελούν πράξεις πάνω σε αριθµητικά δεδοµένα. Σαν παραδείγµατα µπορούµε να αναφέρουµε τις εντολές πρόσθεσης, αφαίρεσης, πολλαπλασιασµού κλπ. 3. Εντολές λογικών πράξεων. Οι εντολές αυτές περιλαµβάνουν πράξεις της άλγεβρας Boole και άλλες µη αριθµητικές πράξεις, όπως για παράδειγµα την ολίσθηση του περιεχοµένου ενός καταχωρητή προς τα δεξιά ή αριστερά κατά κάποιο αριθµό θέσεων. 4. Εντολές ελέγχου της ροής του προγράµµατος. Η εκτέλεση µίας τέτοιας εντολής έχει ως συνέπεια η επόµενη προς εκτέλεση εντολή να µην είναι η επόµενη εντολή του προγράµµατος, αλλά κάποια άλλη εντολή. Μπορούµε να διακρίνουµε τις εντολές ελέγχου της ροής του προγράµµατος σε δύο υποκατηγορίες. Τις εντολές αλλαγής της ροής του προγράµµατος άνευ συνθήκης και τις εντολές αλλαγής της ροής του προγράµµατος υπό συνθήκη. Στην πρώτη περίπτωση, όταν εκτελείται µία τέτοια εντολή, η ροή του προγράµµατος αλλάζει πάντα, ενώ στη δεύτερη περίπτωση η ροή του προγράµµατος αλλάζει µόνον όταν ικανοποιείται η συνθήκη.
∂¡∆√§∂™
5. Εντολές εισόδου/εξόδου. Οι εντολές αυτές αναλαµβάνουν τη µεταφορά της πληροφορίας µεταξύ της ΚΜΕ ή της κύριας µνήµης και των διατάξεων εισόδου/εξόδου. Θα πρέπει να σηµειώσουµε ότι µία εντολή µπορεί να ανήκει σε περισσότερες από µια κατηγορίες. Για παράδειγµα, µία εντολή του τύπου «πρόσθεσε τα περιεχόµενα των καταχωρητών 10 και 12 και βάλε το αποτέλεσµα στον καταχωρητή 20» ανήκει τόσο στις αριθµητικές εντολές όσο και στις εντολές µεταφοράς δεδοµένων. 2.2.2 ∆ÚfiÔÈ ‰È¢ı˘ÓÛÈÔ‰fiÙËÛ˘ Ù˘ ·ÚÈ·˜ ÌÓ‹Ì˘ (Addressing Modes)
Μέχρι τώρα δεν έχουµε ασχοληθεί µε το πώς τα δυαδικά ψηφία των πεδίων των τελούµενων της εντολής χρησιµοποιούνται για να προσδιορίσουµε διευθύνσεις και δεδοµένα. ∞ª∂™√™ ∆ƒ√¶√™ ¢π∂À£À¡™π√¢√∆∏™∏™ (IMMEDIATE ADDRESSING MODE)
Στην περίπτωση που µία σταθερά πρόκειται να χρησιµοποιηθεί ως δεδοµένο, η σταθερά αυτή µπορεί να τοποθετηθεί η ίδια στο πεδίο του τελούµενου της εντολής. ∫∞∆’ ∂À£∂π∞¡ ∆ƒ√¶√™ ¢π∂À£À¡™π√¢√∆∏™∏™ (DIRECT ADDRESSING MODE)
Εδώ διακρίνουµε δύο υποπεριπτώσεις: α. Κατ’ ευθείαν τρόπος διευθυνσιοδότησης θέσης µνήµης. Το τελούµενο περιέχεται στην κύρια µνήµη και το πεδίο του τελούµενου της εντολής περιέχει τη διεύθυνση της θέσης της κύριας µνήµης, που περιέχει το τελούµενο. Τότε το πεδίο του τελούµενου πρέπει να είναι αρκετά µεγάλο, για να είναι δυνατόν να δηλώσει τη διεύθυνση οποιασδήποτε θέσης της κύριας µνήµης. Για παράδειγµα για µία κύρια µνήµη των 232 ψηφιολέξεων, οργανωµένη έτσι ώστε κάθε θέση να είναι της µίας ψηφιολέξης, το πεδίο του τελούµενου πρέπει να είναι των 32 δυαδικών ψηφίων.
63
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
64
καταχωρητήςz εντολών
κύρια µνήµη
δεδοµένα ™¯‹Ì· 2.3
Κατ’ ευθείαν τρόπος διευθυνσιοδότησης µνήµης
κωδικόςz λειτουργίας
β. Κατ’ ευθείαν τρόπος διευθυνσιοδότησης καταχωρητή. Τα απαιτούµενα δεδοµένα βρίσκονται σε έναν από τους καταχωρητές γενικού σκοπού της ΚΜΕ και η διεύθυνση, δηλαδή ο αριθµός του καταχωρητή, περιέχεται στο πεδίο του τελούµενου της εντολής. Το πεδίο του τελούµενου πρέπει να έχει τέτοιο µήκος ώστε να µπορεί να περιέχει τη διεύθυνση οποιουδήποτε από τους καταχωρητές γενικού σκοπού. Για παράδειγµα εάν έχουµε 64 καταχωρητές γενικού σκοπού, το πεδίο του τελούµενου της εντολής θα πρέπει να είναι των 6 δυαδικών ψηφίων.
καταχωρητήςz εντολών
καταχωρητέςz γενικού σκοπού
δεδοµένα ™¯‹Ì· 2.4
Κατ’ ευθείαν τρόπος διευθυνσιοδότησης καταχωρητή.
κωδικόςz λειτουργίας
∂ªª∂™√™ ∆ƒ√¶√™ ¢π∂À£À¡™π√¢√∆∏™∏™ (INDIRECT ADDRESSING MODE)
Στην περίπτωση του έµµεσου τρόπου διευθυνσιοδότησης το πεδίο του τελούµενου περιέχει τη διεύθυνση ενός ενδιάµεσου στοιχείου µνήµης, που περιέχει τη διεύθυνση της θέσης µνήµης που περιέχει το τελούµενο. Ανάλογα µε το είδος του ενδιάµεσου στοιχείου µνήµης διακρίνουµε δύο περιπτώσεις: α. Το ενδιάµεσο στοιχείο µνήµης είναι ένας καταχωρητής, οπότε λέµε ότι έχουµε έµµεσο τρόπο διευθυνσιοδότησης µε χρήση καταχωρητή.
∂¡∆√§∂™
65
β. Το ενδιάµεσο στοιχείο µνήµης είναι µία θέση της κύριας µνήµης, οπότε λέµε ότι έχουµε έµµεσο τρόπο διευθυνσιοδότησης µε χρήση της κύριας µνήµης.
καταχωρητήςz εντολών
καταχωρητέςz γενικού σκοπού
κύρια µνήµη
δεδοµένα ™¯‹Ì· 2.5
Έµµεσος τρόπος διευθυνσιοδότησης µε χρήση καταχωρητή.
κωδικόςz λειτουργίας
καταχωρητήςz εντολών
κύρια µνήµη
δεδοµένα
κωδικόςz λειτουργίας ™¯‹Ì· 2.6
Έµµεσος τρόπος διευθυνσιοδότησης µε χρήση θέσης µνήµης.
Σηµειώνουµε ότι στην πρώτη περίπτωση το µήκος του πεδίου του τελούµενου είναι πολύ µικρότερο από ό,τι στη δεύτερη. Το µεγάλο πλεονέκτηµα του έµµεσου τρόπου διευθυνσιοδότησης είναι ότι µπορούµε να καθορίσουµε τη διεύθυνση του επιθυµητού τελούµενου στην κύρια µνήµη εγκαθιδρύοντας ένα δείκτη (pointer) προς µία άλλη θέση µνήµης, που στην πραγµατικότητα περιέχει αυτή τη διεύθυνση. Με άλλα λόγια, αυτός ο τρόπος διευθυνσιοδότησης µας δίνει τη δυνατότητα υλοποίησης δεικτών. Το µειονέκτηµα του έµµεσου τρόπου διευθυνσιοδότησης είναι ότι η προσπέλαση του τελούµε-
66
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
νου απαιτεί περισσότερο χρόνο. Με τον ίδιο τρόπο θα µπορούσαµε να ορίσουµε πολλών επιπέδων έµµεσο τρόπο διευθυνσιοδότησης. Σε κανέναν από τους παραπάνω τρόπους διευθυνσιοδότησης δεν απαιτείται να γίνουν κάποιοι υπολογισµοί για να προσδιοριστεί η διεύθυνση του τελούµενου, γι’ αυτό και λέγονται τρόποι απόλυτης διευθυνσιοδότησης. Συχνά στην εντολή περιλαµβάνεται µόνο ένα µέρος της πληροφορίας διευθυνσιοδότησης και η πλήρης διεύθυνση πρέπει να κατασκευαστεί από τον επεξεργαστή. Από τους πιο συνηθισµένους τρόπους διευθυνσιοδότησης είναι η σχετική διευθυνσιοδότηση (relative addressing mode), στην οποία το πεδίο του τελούµενου περιέχει µία σχετική διεύθυνση, που επίσης καλείται αριθµός µετατόπισης (offset ή displacement). Η εντολή επίσης υπονοεί ή ορίζει ρητά µία ή περισσότερες θέσεις µνήµης ή καταχωρητές που περιέχουν πρόσθετη πληροφορία διευθυνσιοδότησης. Για παράδειγµα, µπορεί η απόλυτη διεύθυνση να καθορίζεται από το άθροισµα του περιεχόµενου κάποιου καταχωρητή Α και της σχετικής διεύθυνσης που υπάρχει στο πεδίο του τελούµενου της εντολής. Μερικοί σηµαντικοί λόγοι χρησιµοποίησης της σχετικής διευθυνσιοδότησης είναι οι εξής: 1. Επειδή ολόκληρη η διεύθυνση δεν χρειάζεται να υπάρχει στο πεδίο του τελούµενου της εντολής, το µήκος της εντολής µπορεί να ελαττωθεί. 2. Είναι δυνατόν να έχουµε προγράµµατα σε εκτελέσιµη µορφή, που µπορούν να εκτελεστούν σωστά σε οποιαδήποτε περιοχή της κύριας µνήµης και αν φορτωθούν (statically position independent programs). Αυτό επιτυγχάνεται µε τη χρήση σχετικής ως προς το µετρητή προγράµµατος διευθυνσιοδότησης (program counter relative addressing mode). Για παράδειγµα, υποθέστε ότι στο εµπόριο πωλείται µία µνήµη ROM 4K ψηφιολέξεων, που περιέχει ένα σύνολο από υπορουτίνες για τον υπολογισµό κάποιων ειδικού σκοπού συναρτήσεων. Οι διευθύνσεις που αντιστοιχούν στις εντολές των προγραµµάτων, που περιέχει η ROM, θα καθοριστούν όταν ο αγοραστής της ROM την τοποθετήσει σε κάποια συγκεκριµένη υποδοχή της µνήµης του υπολογιστή του. Οι διευθύνσεις, όµως, που αναφέρονται µέσα στις υπορουτίνες σταθεροποιήθηκαν όταν το πρόγραµµα γράφτηκε µέσα στην ROM και δεν είναι δυνατόν να αλλάξουµε το περιεχόµενο της ROM. Το πρόβληµα είναι ότι διάφοροι αγοραστές της ROM θέλουν να την τοποθετήσουν σε διαφορετικές υποδοχές λόγω της διαφορετικής διαµόρφωσης (configuration) του συστήµατός τους. Αυτό έχει ως
∂¡∆√§∂™
συνέπεια οι διευθύνσεις που αναφέρονται στα υποπρογράµµατα που είναι αποθηκευµένα στην ROM να µην συµπίπτουν µε τις διευθύνσεις στις οποίες είναι φορτωµένα τα προγράµµατα της ROM, (οι διευθύνσεις αυτές καθορίζονται από τη θέση της υποδοχής, όπου τοποθετήθηκε η ROM). Το πρόβληµα λύνεται εάν τα προγράµµατα της ROM χρησιµοποιούν µόνο σχετική ως προς το µετρητή προγράµµατος διευθυνσιοδότηση. 3. Αλλάζοντας το περιεχόµενο του καταχωρητή Α, ο επεξεργαστής µπορεί να αλλάξει τις απόλυτες διευθύνσεις που αναφέρονται από µία οµάδα εντολών Β. Αυτό επιτρέπει σε ολόκληρη την οµάδα Β να µετακινηθεί από µία περιοχή της κύριας µνήµης σε κάποια άλλη, χωρίς να είναι ανάγκη να αλλάζουµε τις διευθύνσεις που περιέχονται στα πεδία των τελούµενων αυτών των εντολών (relocatability of programs and data segments). Η ικανότητα αυτή έγινε ιδιαίτερα αναγκαία µε την ανάπτυξη του πολυπρογραµµατισµού και της ιδεατής µνήµης. 4. Ο καταχωρητής Α µπορεί να χρησιµοποιηθεί για την αποθήκευση δεικτών, ώστε να διευκολυνθεί η επεξεργασία δεδοµένων µε δείκτες. Σ’ αυτό το ρόλο ο καταχωρητής καλείται καταχωρητής δείκτη (index register). Τα δεδοµένα µε δείκτη αποθηκεύονται σε διαδοχικές θέσεις της κύριας µνήµης. Εάν το πεδίο διεύθυνσης ∆ της εντολής περιέχει τη διεύθυνση της θέσης µνήµης που περιέχει το πρώτο στοιχείο Χ(0) και ο καταχωρητής περιέχει τον αριθµό κ, η διεύθυνση του Χ(κ) θα είναι ∆+Α. Εποµένως αλλάζοντας το περιεχόµενο του καταχωρητή δείκτη, µία εντολή µπορεί να αναφερθεί σε οποιοδήποτε στοιχείο Χ(λ) µίας λίστας δεδοµένων. Λόγω της αναπόφευκτης ανάγκης να αυξήσουµε ή να ελαττώσουµε το περιεχόµενο ενός καταχωρητή δείκτη, µερικοί επεξεργαστές διαθέτουν ειδικές εντολές γι’ αυτό το σκοπό. Κάποιοι άλλοι πραγµατοποιούν µηχανισµούς που έχουν ως συνέπεια ο καταχωρητής δείκτη να τροποποιείται (αυξάνεται ή ελαττώνεται) αυτόµατα µετά ή πριν τη χρησιµοποίησή του στη διευθυνσιοδότηση κάποιου τελούµενου. Το κύριο µειονέκτηµα όλων των σχετικών τρόπων διευθυνσιοδότησης είναι ότι απαιτούνται επιπλέον κυκλώµατα και χρόνος επεξεργασίας για τον υπολογισµό των διευθύνσεων. Ένας διαφορετικός τρόπος διευθυνσιοδότησης είναι η διευθυνσιοδότηση της σωρού (stack). Μία σωρός αποτελείται από τµήµατα πληροφορίας που είναι αποθηκευµένα σε διαδοχικές θέσεις µνήµης. Το τµήµα πληροφορίας που
67
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
68
τοποθετήθηκε πρώτο στη σωρό βρίσκεται στη βάση της σωρού, ενώ το τµήµα της πληροφορίας που τοποθετήθηκε τελευταίο βρίσκεται στην κορυφή της σωρού. Υπάρχει πάντοτε ένας καταχωρητής που περιέχει τη διεύθυνση της κορυφής της σωρού και καλείται δείκτης σωρού (stack pointer). Κάθε φορά µπορούµε να διαβάζουµε µόνο τα δεδοµένα που βρίσκονται στην κορυφή της σωρού, δηλαδή τα δεδοµένα που βρίσκονται στη θέση µνήµης που η διεύθυνσή της περιέχεται στο δείκτη σωρού. Για να διαβάσουµε από τη σωρό, όπως επίσης και για να αποθηκεύσουµε στη σωρό, υπάρχουν ειδικές εντολές. Μετά από κάθε διάβασµα της σωρού το περιεχόµενο του δείκτη σωρού αλλάζει για να δηλώσει ότι στην κορυφή τώρα είναι το τµήµα της πληροφορίας που βρίσκονταν κάτω από το τµήµα της πληροφορίας που διαβάσαµε.
RAM
καταχωρητήςz άνω ορίου
περιοχήz σωρού
δείκτης σωρού
™¯‹Ì· 2.7
Μηχανισµός σωρού.
καταχωρητήςz κάτω ορίου
2.2.3 ∂›‰Ë Î·È Ì¤ÁÂıÔ˜ ∆ÂÏÔ‡ÌÂÓˆÓ
Οι γλώσσες προγραµµατισµού υψηλού επιπέδου υποστηρίζουν µία µεγάλη ποικιλία από είδη δεδοµένων. Αυτό δεν συνεπάγεται ότι τα είδη αυτά υποστηρίζονται άµεσα από την αρχιτεκτονική του υπολογιστή σε επίπεδο γλώσσας µηχανής. Η αρχιτεκτονική του υπολογιστή σε επίπεδο γλώσσας µηχανής υποστηρίζει ένα σύνολο βασικών ειδών δεδοµένων και τα άλλα είδη δεδοµένων υλοποιούνται µε πρόγραµµα, χρησιµοποιώντας τα βασικά είδη. Σε όλους τους υπολογιστές γενικού σκοπού τα δεδοµένα αποθηκεύονται στη µνήµη του υπολογιστή κατά έναν ενιαίο τρόπο. ∆ηλαδή, αν διαβάσουµε από
∂¡∆√§∂™
τη µνήµη του υπολογιστή το περιεχόµενο κάποιων θέσεων µνήµης ή κάποιων καταχωρητών δεν µπορούµε να διακρίνουµε το είδος των δεδοµένων. Το είδος των δεδοµένων, που προσπελαύνονται για επεξεργασία µε κάποια εντολή, καθορίζεται από τον κωδικό λειτουργίας της εντολής. ∆ηλαδή διαφορετική ακολουθία από µηδενικά και µονάδες θα χρησιµοποιείται ως κωδικός λειτουργίας µιας εντολής πρόσθεσης όταν η πρόσθεση θα γίνει µεταξύ BCD αριθµών, δυαδικών αριθµών σταθερής υποδιαστολής και δυαδικών αριθµών κινητής υποδιαστολής. Συνήθως το είδος του τελούµενου, για παράδειγµα ακέραιος αριθµός απλής ή διπλής ακρίβειας κινητής υποδιαστολής, καθορίζει και το µέγεθός του. Με κάθε επεξεργαστή συνδέεται η έννοια της λέξης. Η λέξη σε κάθε επεξεργαστή είναι µία µονάδα πληροφορίας σταθερού µήκους. Στους περισσότερους σήµερα επεξεργαστές το µήκος της λέξης είναι 32 δυαδικά ψηφία. Το σύνολο των εντολών γλώσσας µηχανής στους πιο πολλούς σήµερα επεξεργαστές περιλαµβάνει εντολές για ακέραιους των 8 (µία ψηφιολέξη), 16 (µισή λέξη), 32 (µία λέξη), 64 (διπλή λέξη) δυαδικών ψηφίων, 32 δυαδικών ψηφίων αριθµούς απλής ακρίβειας κινητής υποδιαστολής, 64 δυαδικών ψηφίων αριθµούς διπλής ακρίβειας κινητής υποδιαστολής και χαρακτήρες των 8 ή 16 δυαδικών ψηφίων. Σχεδόν σε όλους τους υπολογιστές για την παράσταση ακεραίων χρησιµοποιείται η παράσταση συµπληρώµατος ως προς δύο, για τους κλασµατικούς αριθµούς χρησιµοποιείται το στάνταρτ IEEE 754 και για τους χαρακτήρες ο κώδικας ASCII ή ο κώδικας Unicode. Κάποιοι υπολογιστές που στοχεύουν εφαρµογές επιχειρήσεων περιλαµβάνουν στο σύνολο των εντολών τους και εντολές για πράξεις µεταξύ BCD αριθµών. 2.2.4 ∆·ÍÈÓfiÌËÛË ˘ÔÏÔÁÈÛÙÒÓ ‚¿ÛÂÈ ÙÔ˘ Û˘ÓfiÏÔ˘ ÂÓÙÔÏÒÓ
Οι αρχιτεκτονικές υπολογιστών σε επίπεδο εντολών γλώσσας µηχανής µπορούν να ταξινοµηθούν σε τρεις µεγάλες κατηγορίες, σ’ αυτές που βασίζονται στη χρήση του µηχανισµού σωρού (stack architectures), αυτές που βασίζονται στη χρήση του συσσωρευτή (accumulator architectures) και αυτές που βασίζονται στη χρήση καταχωρητών γενικού σκοπού (general–purpose register architectures). Στις αρχιτεκτονικές που βασίζονται στο µηχανισµό σωρού τα δεδοµένα που απαιτούνται για την εκτέλεση µιας πράξης θεωρείται ότι βρίσκονται στις κορυφαίες θέσεις ενός µηχανισµού σωρού απ’ όπου και µεταφέρονται στην αριθµητική και λογική µονάδα για την εκτέλεση κάποιας πράξης. Το αποτέλεσµα
69
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
70
της πράξης αποθηκεύεται στην κορυφή του ίδιου µηχανισµού σωρού. Για τη µεταφορά δεδοµένων από µία θέση της κύριας µνήµης στην κορυφή της σωρού χρησιµοποιείται η εντολή PUSH, ενώ για τη µεταφορά στην κύρια µνήµη του περιεχόµενου της θέσης που βρίσκεται στην κορυφή της σωρού χρησιµοποιείται η εντολή POP. Για παράδειγµα σε έναν υπολογιστή που υλοποιεί µία αρχιτεκτονική βασισµένη στη χρήση του µηχανισµού σωρού η πρόσθεση του περιεχόµενου των θέσεων Α και Β και η αποθήκευση του αποτελέσµατος στη θέση µνήµης C επιτυγχάνεται µε την εκτέλεση του προγράµµατος: Push A Push B Add Pop C Στις αρχιτεκτονικές που βασίζονται στη χρήση ενός αποκλειστικού καταχωρητή, που καλείται συσσωρευτής, υποτίθεται ότι το ένα τελούµενο είναι πάντα ο συσσωρευτής. Σ΄ αυτές τις αρχιτεκτονικές το παραπάνω άθροισµα υπολογίζεται µε το ακόλουθο πρόγραµµα: Load A Add B Store C Η πρώτη εντολή σηµαίνει «µετάφερε στο συσσωρευτή το περιεχόµενο της θέσης µνήµης µε διεύθυνση Α». Η δεύτερη εντολή σηµαίνει «πρόσθεσε το περιεχόµενο του συσσωρευτή και το περιεχόµενο της θέσης µνήµης µε διεύθυνση Β και το αποτέλεσµα αποθήκευσέ το στο συσσωρευτή». Η τρίτη εντολή σηµαίνει «αποθήκευσε το περιεχόµενο του συσσωρευτή στη θέση µνήµης µε διεύθυνση C». Οι αρχιτεκτονικές που βασίζονται στη χρήση καταχωρητών γενικού σκοπού µπορούν να ταξινοµηθούν περαιτέρω σε δύο υποκατηγορίες, στις αρχιτεκτονικές καταχωρητή–µνήµης και στις αρχιτεκτονικές φόρτωσης–αποθήκευσης (load–store) ή καταχωρητή–καταχωρητή (register–register). Στις αρχιτεκτονικές καταχωρητή–µνήµης το παραπάνω άθροισµα υπολογίζεται µε το ακόλουθο πρόγραµµα: Load R1, A
∂¡∆√§∂™
Add R1, B Store C, R1 Η πρώτη εντολή σηµαίνει «µετάφερε στον καταχωρητή R1 το περιεχόµενο της θέσης µνήµης µε διεύθυνση Α». Η δεύτερη εντολή σηµαίνει «πρόσθεσε το περιεχόµενο του καταχωρητή R1 και το περιεχόµενο της θέσης µνήµης µε διεύθυνση Β και αποθήκευσε το αποτέλεσµα στον καταχωρητή R1». Η τρίτη εντολή σηµαίνει «αποθήκευσε το περιεχόµενο του καταχωρητή R1 στη θέση µνήµης µε διεύθυνση C». Στις αρχιτεκτονικές καταχωρητή–καταχωρητή το παραπάνω άθροισµα υπολογίζεται µε το ακόλουθο πρόγραµµα. Load R1, A Load R2, Β Add R3, R1, R2 Store C, R3 Η πρώτη εντολή σηµαίνει «µετάφερε στον καταχωρητή R1 το περιεχόµενο της θέσης µνήµης µε διεύθυνση Α». Η δεύτερη εντολή σηµαίνει «µετάφερε στον καταχωρητή R2 το περιεχόµενο της θέσης µνήµης µε διεύθυνση Β». Η τρίτη εντολή σηµαίνει «πρόσθεσε το περιεχόµενο του καταχωρητή R1 και του καταχωρητή R2 και αποθήκευσε το αποτέλεσµα στον καταχωρητή R1». Η τέταρτη εντολή σηµαίνει «αποθήκευσε το περιεχόµενο του καταχωρητή R3 στη θέση µνήµης µε διεύθυνση C». Σχεδόν όλοι οι σύγχρονοι υπολογιστές έχουν αρχιτεκτονική καταχωρητή– καταχωρητή. Οι λόγοι είναι ότι η τιµή του υλικού (hardware) έχει µειωθεί σηµαντικά µε αποτέλεσµα ένας επεξεργαστής να µπορεί να έχει µεγάλο αριθµό καταχωρητών. Επιπλέον, οι καταχωρητές είναι πιο γρήγοροι από την κύρια µνήµη και οι µεταγλωττιστές (compilers) µπορούν να τους χρησιµοποιήσουν πιο εύκολα για την αποθήκευση µεταβλητών. Ένα πρόσφατο παράδειγµα υπολογιστή µε αρχιτεκτονική που βασίζεται στη χρήση µηχανισµού σωρού είναι ο picoJava της Sun, που σχεδιάστηκε για την εκτέλεση κώδικα που προκύπτει από µεταγλώττιση προγραµµάτων που αναπτύσσονται σε Java. Συχνά θα συναντάτε τους όρους RISC (Reduced Instruction Set Computers) και CISC (Complex Instruction Set Computers), που στα Ελληνικά αποδίδονται µε τους όρους υπολογιστές απλού συνόλου εντολών και υπολογιστές
71
72
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
πολύπλοκου συνόλου εντολών. Στους υπολογιστές πολύπλοκου συνόλου εντολών το σύνολο των εντολών σε επίπεδο γλώσσας µηχανής περιλαµβάνει µεγάλο αριθµό από κωδικούς λειτουργίας, τρόπους διευθυνσιοδότησης και είδη δεδοµένων. Επίσης, το σύνολο των εντολών περιλαµβάνει πολύπλοκες και πανίσχυρες εντολές, που εννοιολογικά βρίσκονται κοντά στις εντολές προγραµµατισµού υψηλού επιπέδου. Αντίθετα, τα κύρια χαρακτηριστικά του συνόλου εντολών των υπολογιστών απλού συνόλου εντολών είναι ότι η µορφή των εντολών είναι απλή τύπου καταχωρητή– καταχωρητή, χρησιµοποιείται ένας πολύ µικρός αριθµός από απλούς τρόπους διευθυνσιοδότησης και εκτελείται µία εντολή ανά κύκλο της ΚΜΕ. Σαν παραδείγµατα υπολογιστών απλού συνόλου εντολών µπορούµε να αναφέρουµε τους υπολογιστές µε την αρχιτεκτονική των Power PC και MIPS, ενώ σαν υπολογιστές πολύπλοκου συνόλου εντολών αυτούς που βασίζονται στην αρχιτεκτονική των 80Χ86 και 68000. 2.2.5 ∫ˆ‰ÈÎÔÔ›ËÛË ÙÔ˘ Û˘ÓfiÏÔ˘ ÂÓÙÔÏÒÓ
Ο τρόπος αναπαράστασης των εντολών δια µέσου του δυαδικού επηρεάζει όχι µόνο το µέγεθος του προγράµµατος σε γλώσσα µηχανής, αλλά και την υλοποίηση της µονάδας ελέγχου που πρέπει να αποκωδικοποιήσει γρήγορα την εντολή, να προσδιορίσει τη λειτουργία που πρέπει να εκτελεστεί και τα δεδοµένα που θα χρησιµοποιηθούν. Όπως έχουµε ήδη αναφέρει στην υποενότητα 2.2.1, η λειτουργία δηλώνεται σε ένα πεδίο της εντολής που καλείται κωδικός λειτουργίας. Το ερώτηµα που προκύπτει είναι πώς θα κωδικοποιηθεί στην εντολή η πληροφορία που αφορά τον τρόπο διευθυνσιοδότησης. Η απόφαση εξαρτάται από το πλήθος των διαφορετικών τρόπων διευθυνσιοδότησης και το βαθµό εξάρτησης των τρόπων διευθυνσιοδότησης από µία συγκεκριµένη λειτουργία. Εάν κάθε τρόπος διευθυνσιοδότησης µπορεί να συνδυαστεί µε κάθε λειτουργία και υπάρχουν εντολές στις οποίες δηλώνονται ρητά περισσότερα από ένα δεδοµένα, τότε το πλήθος όλων των δυνατών συνδυασµών είναι πολύ µεγάλο. Σ’ αυτές τις περιπτώσεις υπάρχει συνήθως στην εντολή ένα ξεχωριστό πεδίο για κάθε τελούµενο, που καθορίζει τον τρόπο µε τον οποίο θα χρησιµοποιηθεί η πληροφορία του πεδίου του τελούµενου για να προσδιοριστεί το συγκεκριµένο δεδοµένο. Στην εντελώς αντίθετη περίπτωση, στην οποία έχουµε έναν επεξεργαστή που σε οποιαδήποτε εντολή µπορεί να χρησιµοποιηθεί το πολύ ένα δεδοµένο, που βρίσκεται στην κύρια µνήµη, και το πλήθος των τρόπων διευθυνσιοδότησης είναι πολύ µικρό, ένας ή δύο, σ’ αυτές τις περιπτώσεις ο τρόπος διευθυνσιοδότησης
∂¡∆√§∂™
73
κωδικοποιείται µαζί µε τον κωδικό λειτουργίας, χρησιµοποιώντας ένα µόνο πεδίο της εντολής. Η διάθεση στο σύνολο των εντολών πολλών τρόπων διευθυνσιοδότησης οδηγεί σε εντολές µεγαλύτερου µήκους. Ένα άλλο χαρακτηριστικό είναι εάν όλες οι εντολές έχουν το ίδιο µήκος ή όχι. Υπάρχουν αρχιτεκτονικές υπολογιστών σε επίπεδο γλώσσας µηχανής που έχουν εντολές µεταβλητού µήκους. Για παράδειγµα, στον VAX η εντολή πρόσθεσης ακεραίων µπορεί να έχει µέγεθος από 3 έως και 19 ψηφιολέξεις και να χρησιµοποιεί από 0 µέχρι 6 αναφορές στην κύρια µνήµη. Υπάρχουν επίσης αρχιτεκτονικές υπολογιστών στις οποίες όλες οι εντολές έχουν το ίδιο µήκος. Σαν παράδειγµα µπορούµε να αναφέρουµε τις αρχιτεκτονικές MIPS, Power PC και SPARC. Υπάρχουν επίσης αρχιτεκτονικές υπολογιστών που το µήκος όλων των εντολών δεν είναι σταθερό, αλλά κάθε είδος εντολής έχει σταθερό µήκος. Σαν παράδειγµα αναφέρουµε τους επεξεργαστές Intel 80X86. Οι αρχιτεκτονικές που περιλαµβάνουν εντολές µε διαφορετικά µήκη συνήθως επιτυγχάνουν τη χρησιµοποίηση λιγότερων δυαδικών ψηφίων για την αναπαράσταση των προγραµµάτων, αλλά οι εντολές σταθερού µήκους αποκωδικοποιούνται πιο εύκολα, συνεπώς η µονάδα ελέγχου των υπολογιστών που υλοποιούν σύνολα εντολών σταθερού µήκους είναι απλούστερη.
Κατατάξτε τις επόµενες εντολές σε κάποια ή κάποιες από τις πέντε κατηγορίες της υποενότητας 2.2.1: Load A, Store A, Add R1, R2, R3, AND R1, R2, R3, JUMP X1 (εντολή άλµατος χωρίς συνθήκη), JUMPE X1 (εάν η σηµαία “µηδέν αποτέλεσµα” στον καταχωρητή κατάστασης έχει την τιµή ένα, η επόµενη προς εκτέλεση εντολή είναι αυτή που βρίσκεται στη θέση µνήµης µε διεύθυνση Χ1).
α. Αναφέρετε τα µειονεκτήµατα του έµµεσου τρόπου διευθυνσιοδότησης θέσης µνήµης. β. Αναφέρετε τα µειονεκτήµατα του σχετικού τρόπου διευθυνσιοδότησης.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.6
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.7
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
74
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.8
¢Ú·ÛÙËÚÈfiÙËÙ· 2.1
Μία γλώσσα προγραµµατισµού υψηλού επιπέδου Υ υποστηρίζει τη δοµή λίστα χαρακτήρων. Τα προγράµµατα που γράφονται σ’ αυτή τη γλώσσα προγραµµατισµού, αφού µεταγλωττιστούν, µπορούν να εκτελεστούν στους υπολογιστές Χ1 και Χ2. Ποια είναι η απάντησή σας στην ερώτηση εάν οι υπολογιστές Χ1 και Χ2 υποστηρίζουν τη δοµή λίστα χαρακτήρων; Αιτιολογήστε την απάντησή σας.
Γράψτε ένα πρόγραµµα σε επίπεδο γλώσσας µηχανής για τον υπολογισµό της αριθµητικής έκφρασης Χ= Α·Β+Γ σε έναν υπολογιστή που βασίζεται στη χρήση µηχανισµού σωρού. Για να απαντήσετε σωστά, πρέπει να ανατρέξετε στο βιβλίο [3], σελίδες 29–31, που παραθέτουµε στη Βιβλιογραφία του Κεφαλαίου.
™‡ÓÔ„Ë ∂ÓfiÙËÙ·˜ Στην ενότητα αυτή είδαµε τη µορφή των εντολών γλώσσας µηχανής και κατατάξαµε τις εντολές σε κατηγορίες ανάλογα µε τη λειτουργία τους. Επίσης είδαµε τους βασικούς τρόπους αναφοράς στη µνήµη για προσπέλαση δεδοµένων. Ταξινοµήσαµε τις αρχιτεκτονικές υπολογιστών σε επίπεδο εντολών γλώσσας µηχανής σε αυτές που βασίζονται στη χρήση του µηχανισµού σωρού, αυτές που βασίζονται στη χρήση συσσωρευτή και αυτές που βασίζονται στη χρήση καταχωρητών γενικού σκοπού. Τελικά δώσαµε τα κύρια χαρακτηριστικά των υπολογιστών πολύπλοκου και απλού αντίστοιχα συνόλου εντολών. ™‡ÓÔ„Ë ∫ÂÊ·Ï·›Ô˘ Στο κεφάλαιο αυτό είδαµε ότι όλοι οι αριθµοί δεν µπορούν να παρασταθούν ακριβώς στον υπολογιστή λόγω του πεπερασµένου αριθµού δυαδικών ψηφίων που διατίθενται για την παράσταση κάθε αριθµού. Επίσης ότι το αποτέλεσµα µιας πράξης µπορεί να έχει περισσότερα ψηφία από όσα έχουν διατεθεί για την παράστασή του. Σ’ αυτές τις περιπτώσεις είπαµε ότι χρησιµοποιείται η διαδικασία της περικοπής ή της στρογγυλοποίησης. Στην καθηµερινή µας ζωή χρησιµοποιούµε δεκαδικούς αριθµούς, ενώ στον υπολογιστή υλοποιείται άµεσα το δυαδικό σύστηµα. Εποµένως, όταν οι αριθµοί εισέρχονται στον υπολογιστή, θα πρέπει να µετατρέπονται από το δεκαδικό στο δυαδικό σύστηµα, που είναι µία διαδικασία αρκετά χρονοβόρα.
™À¡√æ∏ ∫∂º∞§∞π√À
Ένας τρόπος που απλοποιεί τη µετατροπή από το δεκαδικό στο δυαδικό και αντίστροφα είναι να παριστάνουµε στον υπολογιστή τους δεκαδικούς αριθµούς δυαδικά κωδικοποιηµένους (BCD). Για την αναπαράσταση θετικών και αρνητικών αριθµών στον υπολογιστή χρησιµοποιούνται οι συµβολισµοί παράστασης προσηµασµένου µεγέθους, παράστασης συµπληρώµατος ως προς βάση και παράστασης συµπληρώµατος ως προς ελαττωµένη βάση. Για την αναπαράσταση ακέραιων και κλασµατικών αριθµών στον υπολογιστή χρησιµοποιούµε την παράσταση σταθερής και κινητής υποδιαστολής αντίστοιχα. Αρχικά κάθε κατασκευαστής χρησιµοποιούσε τη δική του µορφή παράστασης κινητής υποδιαστολής, µε αποτέλεσµα να δηµιουργούνται προβλήµατα κατά τη µεταφορά δεδοµένων και προγραµµάτων από υπολογιστή σε υπολογιστή. Το πρόβληµα λύθηκε µε την επικράτηση του στάνταρτ ΙΕΕΕ 754. Τα αλφαριθµητικά σύµβολα, δηλαδή αριθµοί, γράµµατα του αλφάβητου, σηµεία στίξης και ειδικά σύµβολα, κωδικοποιούνται δια µέσου του δυαδικού συστήµατος. Για να αποφεύγονται οι δυσκολίες στη µεταφορά αλφαριθµητικών δεδοµένων από υπολογιστή σε υπολογιστή, χρησιµοποιούνται κάποιοι στάνταρτ κώδικες µεταξύ των οποίων ο επικρατέστερος είναι ο ASCII. Ο κώδικας ASCII είναι των επτά δυαδικών ψηφίων και δεν περιλαµβάνει Ελληνικούς χαρακτήρες. Ο Ελληνικός Οργανισµός Τυποποίησης έχει αναπτύξει τον πρότυπο κώδικα ΕΛΟΤ 928 για την ενιαία παράσταση Ελληνικών και Λατινικών χαρακτήρων. Το πρόγραµµα είναι µία ακολουθία εντολών που περιγράφει τον τρόπο µε τον οποίο πρέπει να εκτελεστεί µία συγκεκριµένη εργασία. Κάθε εντολή της γλώσσας µηχανής ενός υπολογιστή αποτελείται από πεδία που καθορίζουν τη λειτουργία και τα τελούµενα που θα χρησιµοποιηθούν. Οι εντολές ανάλογα µε τη λειτουργία τους διακρίνονται σε εντολές µεταφοράς δεδοµένων, αριθµητικές εντολές, εντολές λογικών πράξεων, εντολές ελέγχου της ροής του προγράµµατος και εντολές εισόδου/εξόδου. Στο κεφάλαιο αυτό είδαµε επίσης τους βασικούς τρόπους αναφοράς στη µνήµη, τους ονοµάσαµε τρόπους διευθυνσιοδότησης για προσπέλαση δεδοµένων. Συγκεκριµένα µιλήσαµε για τον άµεσο τρόπο διευθυνσιοδότησης, τον κατ’ ευθείαν τρόπο διευθυνσιοδότησης, τον έµµεσο τρόπο διευθυνσιοδότησης µε χρήση καταχωρητή ή θέσης µνήµης, τους σχετικούς τρόπους διευθυνσιοδότησης και το µηχανισµό σωρού.
75
76
√ ƒ °∞ ¡ ø ™ ∏ ∆ ∏ ™ ¶ § ∏ ƒ √ º √ ƒ π ∞ ™ ™ ∆ √ ¡ À ¶ √ § √ ° π ™ ∆ ∏
Σε όλους τους υπολογιστές γενικού σκοπού για την παράσταση ακεραίων αριθµών χρησιµοποιείται η παράσταση συµπληρώµατος ως προς δύο, για τους κλασµατικούς αριθµούς χρησιµοποιείται το στάνταρτ ΙΕΕΕ 754 και για τους χαρακτήρες ο κώδικας ASCII ή ο κώδικας Unicode. Οι αρχιτεκτονικές υπολογιστών σε επίπεδο εντολών γλώσσας µηχανής ταξινοµούνται σε αυτές που βασίζονται στη χρήση συσσωρευτή και αυτές που βασίζονται στη χρήση καταχωρητών γενικού σκοπού. Σήµερα όλες οι αρχιτεκτονικές υπολογιστών γενικού σκοπού ανήκουν στην τρίτη κατηγορία και µπορούν να ταξινοµηθούν περαιτέρω στις αρχιτεκτονικές καταχωρητή–µνήµης και στις αρχιτεκτονικές καταχωρητή– καταχωρητή. ∆ύο όροι που συναντώνται συχνά είναι υπολογιστές απλού συνόλου εντολών, RISC, και υπολογιστές πολύπλοκου συνόλου εντολών, CISC. Τα κύρια χαρακτηριστικά του συνόλου εντολών των υπολογιστών RISC είναι ότι η µορφή των εντολών είναι απλού τύπου καταχωρητή– καταχωρητή, χρησιµοποιείται ένας µικρός αριθµός από απλούς τρόπους διευθυνσιοδότησης και εκτελείται µία εντολή ανά κύκλο ΚΜΕ. Τα κύρια χαρακτηριστικά των υπολογιστών CISC είναι ότι το σύνολο των εντολών περιλαµβάνει µεγάλο αριθµό από κωδικούς λειτουργίας, τρόπους διευθυνσιοδότησης και δεδοµένων και υπάρχει µεγάλος αριθµός από διαφορετικής µορφής και µήκους εντολές
∫
∫ÂÓÙÚÈ΋ ªÔÓ¿‰· ∂ÂÍÂÚÁ·Û›·˜
™ÎÔfi˜ Σκοπός του κεφαλαίου αυτού είναι να γνωρίσετε τις υποµονάδες από τις οποίες αποτελείται η κεντρική µονάδα επεξεργασίας του υπολογιστή, εναλλακτικούς τρόπους υλοποίησης της καθεµίας και τα πλεονεκτήµατα και µειονεκτήµατα κάθε υλοποίησης. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει το κεφάλαιο αυτό, θα µπορείτε να: • γνωρίζετε τη λειτουργία κάθε υποµονάδας της ΚΜΕ • αξιολογείτε, όσον αφορά στην ταχύτητα και το κόστος υλοποίησης, µία ΚΜΕ ανάλογα µε τις υποµονάδες που περιέχει ŒÓÓÔȘ ÎÏÂȉȿ • Mονάδα επεξεργασίας δεδοµένων • Aριθµητική λογική µονάδα • Yπερχείλιση • Mονάδα ολίσθησης • Mονάδα πολλαπλασιασµού • Mονάδα διαίρεσης ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Όπως έχουµε ήδη αναφέρει στην υποενότητα 1.3.2, η Κεντρική Μονάδα Επεξεργασίας, ΚΜΕ, αποτελείται από τη Μονάδα Επεξεργασίας ∆εδοµένων (Data Path) και τη Μονάδα ελέγχου (Control Unit). Το κεφάλαιο αυτό αποτελείται από δύο ενότητες. Στην ενότητα 3.1 παρουσιάζουµε τις υποµονάδες από τις οποίες αποτελείται η µονάδα επεξεργασίας δεδοµένων και συζητάµε την υλοποίησή τους. Στην ενότητα 3.2 παρουσιάζουµε δύο βασικούς τρόπους υλοποίησης της µονάδας ελέγχου, τα µειονεκτήµατα και τα πλεονεκτήµατα καθενός.
3 ∂
º
∞
§
∞
π
√
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
78
3.1 ªÔÓ¿‰· ÂÂÍÂÚÁ·Û›·˜ ‰Â‰Ô̤ӈÓ
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να µάθουµε τις µονάδες από τις οποίες αποτελείται η Μονάδα Επεξεργασίας ∆εδοµένων ενός σύγχρονου επεξεργαστή, εναλλακτικούς τρόπους υλοποίησής τους και τις συνέπειες που έχει η επιλογή µιας συγκεκριµένης υλοποίησης στην ταχύτητα και το κόστος υλοποίησης. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα γνωρίζετε: • από ποιες υποµονάδες αποτελείται η Μονάδα Επεξεργασίας ∆εδοµένων • τη λειτουργία κάθε υποµονάδας της Μονάδας Επεξεργασίας ∆εδοµένων • τα πλεονεκτήµατα και µειονεκτήµατα κάθε τρόπου υλοποίησης 3.1.1 ¢ÔÌ‹ Ù˘ ÌÔÓ¿‰·˜ ÂÂÍÂÚÁ·Û›·˜ ‰Â‰Ô̤ӈÓ
Η Μονάδα Επεξεργασίας ∆εδοµένων αποτελείται από κυκλώµατα για την εκτέλεση αριθµητικών και λογικών πράξεων και ένα σύνολο καταχωρητών που ο αριθµός τους ποικίλλει από υπολογιστή σε υπολογιστή. Η Μονάδα Επεξεργασίας ∆εδοµένων στους σύγχρονους επεξεργαστές αποτελείται από δύο υποµονάδες, τη Μονάδα Επεξεργασίας ∆εδοµένων σταθερής υποδιαστολής (fixed point arithmetic) και τη Μονάδα Επεξεργασίας ∆εδοµένων κινητής υποδιαστολής (floating point arithmetic), όπως φαίνεται στο σχήµα 3.1. Πρέπει να γίνει πλήρως κατανοητό το γεγονός ότι στο σύνολο εντολών σε επίπεδο γλώσσας µηχανής ενός επεξεργαστή περιέχονται κάποιες εντολές, για παράδειγµα πολλαπλασιασµού και διαίρεσης, δεν συνεπάγεται ότι ο επεξεργαστής διαθέτει υλικό για την υλοποίηση αυτών των εντολών. Είναι δυνατόν οι εντολές αυτές να υλοποιούνται µε κάποιο µικροπρόγραµµα (µε την τεχνική του µικροπρογραµµατισµού και τα µικροπρογράµµατα θα ασχοληθούµε στην ενότητα 3.2.) ή υποπρόγραµµα χρησιµοποιώντας άλλες λειτουργίες του επεξεργαστή που υλοποιούνται µε υλικό. Βέβαια αυτό έχει ως συνέπεια να απαιτείται σηµαντικά µεγαλύτερος χρόνος για την εκτέλεση αυτών των εντολών, αλλά µειώνεται το υλικό που απαιτείται για την υλοποίηση του επεξεργαστή. Σαν παράδειγµα µπορούµε να αναφέρουµε την περίπτωση που στο σύνολο εντολών ενός υπολογιστή υπάρχουν εντολές για αριθµητική κινητής υποδιαστολής, αλλά ο συγγεκριµένος υπολογιστής δεν
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
79
έχει εφοδιαστεί µε µονάδα επεξεργασίας δεδοµένων κινητής υποδιαστολής. Τότε κάθε φορά που η µονάδα ελέγχου αποκωδικοποιεί µία εντολή αυτού του τύπου µεταφέρει τον έλεγχο σε µία υπορουτίνα, που χρησιµοποιώντας εντολές αριθµητικής σταθερής υποδιαστολής υπολογίζει το αποτέλεσµα της πράξης κινητής υποδιαστολής. Στην επόµενη ενότητα θα έχουµε την ευκαιρία να γνωρίσουµε και άλλα ανάλογα παραδείγµατα.
Mονάδα Eπεξεργασίας ∆εδοµένων Yποµονάδα Σταθερήςz Yποδιαστολής
Yποµονάδα Kινητήςz Yποδιαστολής
AΛM
Aθροιστής
Πολλαπλασιαστής
Πολλαπλασιαστής
Mονάδα Oλισθητή
∆ιαιρέτης
καταχωρητέςz γενικού σκοπού
καταχωρητέςz κινητής υποδιαστολής
™¯‹Ì· 3.1
Μονάδα επεξεργασίας δεδοµένων.
3.1.2 ªÔÓ¿‰· ÂÂÍÂÚÁ·Û›·˜ ‰Â‰ÔÌ¤ÓˆÓ ÛÙ·ıÂÚ‹˜ ˘Ô‰È·ÛÙÔÏ‹˜
Η µονάδα επεξεργασίας δεδοµένων σταθερής υποδιαστολής περιέχει πάντοτε την Αριθµητική Λογική Μονάδα, ΑΛΜ, µία µονάδα ολίσθησης και ένα σύνολο καταχωρητών γενικού σκοπού. Στους σύγχρονους επεξεργαστές περιέχει επίσης έναν πολλαπλασιαστή και πολλές φορές ένα διαιρέτη.
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
80
∞ƒπ£ª∏∆π∫∏ §√°π∫∏ ª√¡∞¢∞
Όπως φαίνεται στο σχήµα 3.2, η ΑΛΜ αποτελείται από µία υποµονάδα πρόσθεσης/αφαίρεσης και µία µονάδα εκτέλεσης λογικών πράξεων. Αρχικά θα ασχοληθούµε µε την υποµονάδα πρόσθεσης/αφαίρεσης.
ν ν
N ν
ν
ν
N
™¯‹Ì· 3.2
∆οµή της Αριθµητικής Λογικής Μονάδας.
Η δοµή της υποµονάδας πρόσθεσης/αφαίρεσης αριθµών τεσσάρων δυαδικών ψηφίων σε παράσταση συµπληρώµατος ως προς δύο δίνεται στο σχήµα 3.3. Οι µονάδες επεξεργασίας δεδοµένων σταθερής υποδιαστολής σε όλους τους γνωστούς επεξεργαστές γενικού σκοπού υλοποιούν αριθµητική συµπληρώµατος ως προς δύο. Αν και στο σχήµα αυτό ο αθροιστής Φ έχει υλοποιηθεί µε την τεχνική διάδοσης κρατούµενου (ripple carry adder), θα µπορούσε να έχει υλοποιηθεί µε την τεχνική πρόβλεψης κρατούµενου (carry look–ahead adder) ή κάποια άλλη τεχνική ή µε ένα συνδυασµό των τεχνικών αυτών. ∆εν θα ασχοληθούµε εδώ µε τις υλοποιήσεις των αθροιστών, τα µειονεκτήµατα και τα πλεονεκτήµατα κάθε υλοποίησης, διότι είναι ήδη γνωστά από το µάθηµα Ψηφιακής Σχεδίασης Ι.
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
81
Φ
™¯‹Ì· 3.3
Μονάδα πρόσθεσης και αφαίρεσης.
Η υποµονάδα πρόσθεσης/αφαίρεσης του σχήµατος λειτουργεί σαν αθροιστής όταν η είσοδος πρόσθεση/αφαίρεση έχει τη λογική τιµή µηδέν, και σαν αφαιρέτης, όταν έχει τη λογική τιµή ένα. Στη δεύτερη περίπτωση ∆=Α+Β' = Α–Β, όπου Β' είναι το συµπλήρωµα του Β ως προς δύο. Υπενθυµίζουµε ότι το συµπλήρωµα ως προς δύο του Β προκύπτει παίρνοντας το συµπλήρωµα ως προς ένα του Β, δηλαδή αντικαθιστώντας κάθε δυαδικό ψηφίο του Β µε το συµπληρωµατικό του (αυτό στην υποµονάδα πρόσθεσης/αφαίρεσης του σχήµατος επιτυγχάνεται µε τη χρήση των πυλών XOR στις εισόδους του κυκλώµατος) και προσθέτοντας µία µονάδα (αυτό στην υποµονάδα µας πρόσθεσης/αφαίρεσης επιτυγχάνεται οδηγώντας την είσοδο «κρατούµενο εισόδου», κεισ, από την είσοδο πρόσθεση/αφαίρεση). Όταν το αποτέλεσµα της πράξης είναι ίσο µε το µηδέν, η έξοδος Μ λαµβάνει τη λογική τιµή 1. Όταν το αποτέλεσµα µίας αριθµητικής πράξης ξεπερνάει το µέγεθος των ν δυαδικών ψηφίων της λέξης, τότε έχουµε υπερχείλιση. Στην περίπτωση αριθµών των ν δυαδικών ψηφίων χωρίς πρόσηµο, όταν έχουµε υπερχείλιση, το κρατούµενο εξόδου παίρνει τη λογική τιµή ένα. Για παράδειγµα, προσθέτοντας τους αριθµούς χωρίς πρόσηµο Α=11100000=22410 και Β=01000001=6510 χρησιµοποιώντας έναν αθροιστή σαν αυτό του σχήµατος, αλλά των 8 δυαδικών ψηφίων, παίρνουµε ∆=00100001= 3310 και κρατούµενο εξόδου κεξ =1. Όταν το αποτέλασµα της πρόσθεσης είναι µεγαλύτερο
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
82
του 2ν–1, στη συγκεκριµένη περίπτωση του 25510, που είναι ο µέγιστος αριθµός χωρίς πρόσηµο, που µπορεί να παρασταθεί χρησιµοποιώντας ν δυαδικά ψηφία, τότε το άθροισµα ισούται µε Α+Β–2ν και στη συγκεκριµένη περίπτωση Α+Β–25610 = 22410 + 6510 – 25610 = 28910 – 25610 = 3310. Η αφαίρεση του 2ν ισοδυναµεί µε την αγνόηση του κρατουµένου εξόδου. Οι αριθµητικές πράξεις µεταξύ αριθµών χωρίς πρόσηµο εκτελούνται µε τον τρόπο που περιγράφτηκε και σ’ αυτή την περίπτωση η ύπαρξη υπερχείλισης δεν θέτει τη σηµαία υπερχείλισης του καταχωρητή κατάστασης. Αυτός είναι ο τρόπος που υπολογίζονται στον υπολογιστή οι διευθύνσεις. ¶›Ó·Î·˜ 3.1
Τιµή προσήµου και υπερχείλισης σαν συνάρτηση των προσήµων των αριθµών που προστίθενται. Aν-1 Bν-1 κν-2 ∆ν-1 Y
Στην περίπτωση αριθµητικών πράξεων µεταξύ προσηµασµένων αριθµών, όταν υπάρξει υπερχείλιση, τίθεται πάντα η σηµαία υπερχείλισης του καταχωρητή κατάστασης. Σ’ αυτή την περίπτωση, όµως, η υπερχείλιση δεν ανιχνεύεται από τη λογική τιµή του κρατούµενου εξόδου. Για παράδειγµα, θεωρήστε ότι η αριθµητική µονάδα υλοποιεί αριθµητική συµπληρώµατος ως προς δύο. Τότε οι αριθµοί που χρησιµοποιήθηκαν παραπάνω Α=11100000 και Β=01000001, παριστάνουν αντίστοιχα τους αριθµούς –3210 και 6510 και το άθροισµά τους ∆=00100001 παριστάνει τον αριθµό 3310. Το γεγονός ότι το κρατούµενο εξόδου έχει τη λογική τιµή ένα δεν συνεπάγεται ότι υπάρχει υπερχείλιση, είναι προφανές ότι δεν υπάρχει. Υπερχείλιση µπορεί να προκύψει µόνο από την πρόσθεση δύο θετικών ή δύο αρνητικών αριθµών. Ο Πίνακας 3.1 δίνει την τιµή του προσήµου ∆ν–1 και την τιµή της εξόδου υπερ-
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
83
χείλισης Υ σαν συνάρτηση των τιµών των προσήµων Αν–1 και Βν–1 των αριθµών που προστίθενται. Συνεπώς η τιµή της εξόδου υπεχείλισης δίνεται από τη λογική εξίσωση Υ = Α'ν–1 . Β'ν–1 . κν–2 + Αν–1 . Βν–1 . κ'ν–2
(3.1)
Λαµβάνοντας υπόψη ότι κν–1 = Αν–1 . Βν–1 + Αν–1 . κν–2 + Βν–1 . κν–2, παίρνουµε Υ = κν–1 ≈ κν–2,
(3.2)
όπου το σύµβολο ≈ δηλώνει τη λογική πράξη της αποκλειστικής διάζευξης (exclusive OR). Οποιαδήποτε από τις σχέσεις (3.1) και (3.2) µπορεί να χρησιµοποιηθεί για να σχεδιάσουµε το κύκλωµα ανίχνευσης υπερχείλισης σε µία µονάδα πρόσθεσης/αφαίρεσης προσηµασµένων αριθµών σε παράσταση συµπληρώµατος ως προς δύο. Στη µονάδα του σχήµατος 3.3 έχει χρησιµοποιηθεί η σχέση (3.2). Από το σχήµα 3.3 µπορούµε να δούµε ότι τα ψηφία που παριστάνουν τα πρόσηµα των δύο αριθµών αντιµετωπίζονται µε τον ίδιο τρόπο, όπως και τα υπόλοιπα δυαδικά ψηφία. Η ορθότητα αυτού επιβεβαιώνεται χρησιµοποιώντας τον Πίνακα 3.1. Εάν από τον Πίνακα 3.1 αφαιρεθούν οι δύο συνδυασµοί που δίνουν υπερχείλιση, τότε το πρόσηµο του αθροίσµατος για όλους τους άλλους συνδυασµούς προκύπτει από την εξίσωση ∆ν–1 = Αν–1 ≈ Βν–1 ≈ κν–2 Στη συνέχεια θα ασχοληθούµε µε την υποµονάδα εκτέλεσης λογικών πράξεων. Οι λογικές πράξεις εκτελούνται µεταξύ των αντίστοιχων δυαδικών ψηφίων δύο λέξεων. Για παράδειγµα, θεωρήστε τις λέξεις Χ=(Χ 0Χ1Χ2 …Χν–1) και Υ=(Υ0Υ1Υ2 …Υν–1). Τότε οποιαδήποτε λογική πράξη εκτελείται µεταξύ του Χi και Υi για i=1, 2, 3, …, ν–1. Από το µάθηµα Ψηφιακής Σχεδίασης Ι γνωρίζουµε ότι ο µέγιστος αριθµός διακριτών λογικών πράξεων της µορφής f(Χi, Υi), για µία συκγεκριµένη τιµή του i, είναι 16. Συνεπώς, εάν η λογική µονάδα υλοποιεί όλες τις δυνατές λογικές πράξεις, θα υπάρχουν τέσσερις γραµµές επιλογής Ε0, Ε1, Ε2 και Ε3. Σε κάθε άλλη περίπτωση το πλήθος των γραµµών επιλογής θα είναι µικρότερο. Υπενθυµίζουµε ότι δύο από αυτές χρησιµοποιούνται επίσης από τη µονάδα πρόσθεσης/αφαίρεσης.
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
84
Στο σχήµα 3.4 δίνεται ο λογικός σχεδιασµός µίας µονάδας εκτέλεσης όλων των 16 λογικών πράξεων µεταξύ δεδοµένων των ν δυαδικών ψηφίων το καθένα.
Aν-1 ∆ν-1 ™¯‹Ì· 3.4
Μονάδα εκτέλεσης λογικών πράξεων.
Bν-1
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
∫∞∆∞Ãøƒ∏∆∂™ °∂¡π∫√À ™∫√¶√À
Στους σύγχρονους επεξεργαστές οι καταχωρητές γενικού σκοπού (general purpose register file) διαθέτουν συνήθως δύο πόρτες ανάγνωσης και µία πόρτα εγγραφής. Αυτό σηµαίνει ότι µπορεί να γίνεται ταυτόχρονα ανάγνωση των περιεχοµένων δύο καταχωρητών και αποθήκευση, εγγραφή, σε κάποιο άλλο. Όταν το πλήθος των καταχωρητών γενικού σκοπού είναι µεγάλο, όπως στην πλειονότητα των σύγχρονων επεξεργαστών, αυτοί υλοποιούνται συνήθως σαν µία µικρή µνήµη RAM, διότι µε την υλοποίηση αυτή καταλαµβάνουν µικρότερο χώρο στο ολοκληρωµένο κύκλωµα. Όταν το πλήθος των καταχωρητών είναι µικρό, υλοποιούνται µε τον κλασικό τρόπο. Για να γίνει κατανοητός ο τρόπος λειτουργίας των καταχωρητών γενικού σκοπού µε δύο πόρτες ανάγνωσης και µία πόρτα εγγραφής, δίνεται στο σχήµα 3.5 η περιγραφή τεσσάρων καταχωρητών υλοποιηµένων µε τον κλασικό τρόπο. Παρατηρούµε ότι υπάρχουν οι αρτηρίες δεδοµένων Α, Β και ∆. Τα δεδοµένα που διαβάζονται από καταχωρητές µεταφέρονται µέσω των αρτηριών Α και Β, ενώ αυτά που θα αποθηκευτούν σε κάποιον καταχωρητή µεταφέρονται µέσω της αρτηρίας ∆. Στη συνέχεια θα περιγράψουµε σαν παράδειγµα τη διαδικασία κατά την οποία διαβάζεται το περιεχόµενο των καταχωρητών 0 και 2 και ταυτόχρονα γράφεται πληροφορία στον καταχωρητή 3. Η µονάδα ελέγχου στέλνει στις εισόδους των αποκωδικοποιητών Α, Β και ∆ τις διευθύνσεις 0, 2 και 3 αντίστοιχα. Επίσης θέτει τις γραµµές «Γράψε», «∆ιάβασε–Α» και «∆ιάβασε–Β» στη λογική τιµή ένα. Τότε: α. Η έξοδος α0 του αποκωδικοποιητή Α παίρνει τη λογική τιµή ένα, ενώ όλες οι άλλες έξοδοί του παίρνουν τη λογική τιµή µηδέν. Στο σχήµα 3.5 παρατηρούµε ότι η έξοδος α0 του αποκωδικοποιητή Α µαζί µε τη γραµµή “∆ιάβασε–Α” οδηγούν µία AND λογική πύλη, η έξοδος της οποίας οδηγεί τις εισόδους ενεργοποίησης των στοιχείων τριών καταστάσεων, που επιτρέπουν τα δεδοµένα που είναι αποθηκευµένα στον καταχωρητή 0 να οδηγηθούν στην αρτηρία Α. Οι έξοδοι α1, α2 και α3 του αποκωδικοποιητή Α έχουν τη λογική τιµή µηδέν. Εποµένως, οι έξοδοι των πυλών AND, που οδηγούν τα στοιχεία τριών καταστάσεων των καταχωρητών 1, 2 και 3, που είναι συνδεδεµένα µε την αρτηρία Β, έχουν τη λογική τιµή µηδέν, και γι’ αυτό το λόγο δεν επιτρέπουν στα περιεχόµενα αυτών των καταχωρητών να περάσουν στην αρτηρία Α.
85
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
86
∆
∆ιεύθυνση-A
∆ιεύθυνση-B
∆ιεύθυνση-∆
Aποκωδικοποιητήςz A
Aποκωδικοποιητήςz B
Aποκωδικοποιητήςz ∆
α3
α2
α1
α0
D Q
β3
D Q
β2
β1
β0
δ3
δ2
D Q
δ0 Γράψεz CLK
α0 ∆ιάβασε -A
β0 ∆ιάβασε -B
D Q
Γράψεz
D Q
D Q
δ1
CLK
α1 ∆ιάβασε -A
β1 ∆ιάβασε -B
D Q
D Q
D Q
δ2 Γράψεz CLK
α2 ∆ιάβασε -A
β2 ∆ιάβασε -B
D Q
D Q
D Q
δ3 Γράψεz CLK
α3 ∆ιάβασε -A
β3 ∆ιάβασε -B
™¯‹Ì· 3.5
Λογικός σχεδιασµός τεσσάρων καταχωρητών µε δύο πόρτες ανάγνωσης και µία εγγραφής.
δ1
δ0
A
B
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
β. Η έξοδος β2 του αποκωδικοποιητή Β παίρνει τη λογική τιµή ένα, ενώ όλες οι άλλες έξοδοί του παίρνουν τη λογική τιµή µηδέν. Στο σχήµα 3.5 παρατηρούµε ότι η έξοδος β2 του αποκωδικοποιητή Β µαζί µε τη γραµµή “∆ιάβασε–Β” οδηγούν µία AND λογική πύλη, η έξοδος της οποίας οδηγεί τις εισόδους ενεργοποίησης των στοιχείων τριών καταστάσεων, που επιτρέπουν τα δεδοµένα που είναι αποθηκευµένα στον καταχωρητή 2 να οδηγηθούν στην αρτηρία Β. Επειδή οι έξοδοι β0, β1 και β3 του αποκωδικοποιητή Β έχουν τη λογική τιµή µηδέν, οι έξοδοι των πυλών AND που οδηγούν τα στοιχεία τριών καταστάσεων των καταχωρητών 0, 1, και 3 έχουν τη λογική τιµή µηδέν, εποµένως δεν επιτρέπουν στα περιεχόµενα αυτών των καταχωρητών να περάσουν στην αρτηρία Β. γ. Η έξοδος δ3 του αποκωδικοποιητή ∆ παίρνει τη λογική τιµή ένα, ενώ όλες οι άλλες έξοδοί του παίρνουν τη λογική τιµή µηδέν. Τότε λαµβάνοντας υπόψη ότι η γραµµή “Γράψε” έχει τη λογική τιµή ένα, συµπεραίνουµε ότι η λογική τιµή του χρονικού σήµατος “CLK” διαδίδεται διαµέσου της πύλης AND που οδηγεί. Στον καταχωρητή 3 η γραµµή “δ3” έχει τη λογική τιµή ένα, εποµένως η λογική τιµή του χρονικού σήµατος “CLK” διαδίδεται στις εισόδους ενεργοποίησης των flip–flops του καταχωρητή 3. Επειδή αυτά τα flip–flops είναι ακµοπυροδοτούµενα κατά την αλλαγή της λογικής τιµής του χρονικού σήµατος “CLK” από µηδέν σε ένα, τα δεδοµένα που υπάρχουν στην αρτηρία ∆ αποθηκεύονται στον καταχωρητή 3. Πρέπει να σηµειώσουµε ότι, επειδή η λογική τιµή των σηµάτων δ0, δ1 και δ2 είναι µηδέν, οι είσοδοι ενεργοποίησης των flip–flops των καταχωρητών 0, 1 και 2 βρίσκονται σταθερά στη λογική τιµή µηδέν, εποµένως δεν γίνεται σε αυτούς αποθήκευση πληροφορίας. ª√¡∞¢∞ √§π™£∏™∏™
Έχετε ήδη µάθει στο µάθηµα Ψηφιακής Σχεδίασης ΙΙ τον τρόπο µε τον οποίο χρησιµοποιώντας ν flip–flops µπορείτε να σχεδιάσετε έναν ολισθητή των ν δυαδικών ψηφίων. Τα πλεονεκτήµατα αυτού του ολισθητή είναι η ευκολία σχεδιασµού του και το χαµηλό του κόστος όσον αφορά στο απαιτούµενο υλικό. Αλλά ο ολισθητής αυτός έχει το µειονέκτηµα ότι για µία ολίσθηση κατά κ θέσεις, κ<ν, όπου ν είναι το πλήθος των δυαδικών ψηφίων του ολισθητή, απαιτούνται κ χρονικές περίοδοι, δηλαδή είναι πολύ αργός. Υπάρχουν ολισθητές που υλοποιούνται µε συνδυαστικά κυκλώµατα, όπως οι “barrel–shifters” και οι ολισθητές που βασίζονται στη χρήση πολυπλεκτών, που σε µία χρονική περίοδο µπορούν να ολισθήσουν τα δεδοµένα εισόδου από 0 µέχρι ν–1 θέσεις. Οι ολισθητές που υλοποιούνται µε συνδυαστικά
87
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
88
κυκλώµατα είναι πολύ πιο γρήγοροι από τους ολισθητές που υλοποιούνται µε flip–flops, αλλά το κόστος υλοποίησής τους σε υλικό είναι σηµαντικά µεγαλύτερο. Το πλήθος των δυαδικών ψηφίων ν του ολισθητή της µονάδας επεξεργασίας δεδοµένων σταθερής υποδιαστολής είναι µία δύναµη του δύο. Στο σχήµα 3.6 δίνεται ένας ολισθητής των οκτώ δυαδικών ψηφίων, που βασίζεται στη χρήση πολυπλεκτών και µπορεί να εκτελέσει τις τέσσερις λειτουργίες που περιγράφονται στον Πίνακα 3.2.
Level 0
Level 1
Level 2
™¯‹Ì· 3.6
Ολισθητής των οκτώ δυαδικών ψηφίων υλοποιηµένος µε πολυλπέκτες.
¶›Ó·Î·˜ 3.2
Λειτουργίες του ολισθητή του σχήµατος 3.6 t1t0
Πράξη
00
Κυκλική ολίσθηση προς τα δεξιά
01
Λογική ολίσθηση προς τα αριστερά
10
Λογική ολίσθηση προς τα δεξιά
11
Αριθµητική ολίσθηση προς τα δεξιά
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
89
Παρατηρούµε ότι ο ολισθητής αυτός αποτελείται από τρία επίπεδα. Οι γραµµές διασύνδεσης µεταξύ των διαδοχικών επιπέδων έχουν παραληφθεί για λόγους αναγνωσιµότητας του σχήµατος. Οι γραµµές που πρέπει να συνδεθούν έχουν το ίδιο όνοµα. Στο σχήµα 3.6 κάθε µπλοκ των τεσσάρων εισόδων είναι ένας πολυπλέκτης 4Æ1, ενώ κάθε µπλοκ των δύο εισόδων είναι ένας πολυπλέκτης 2Æ1. Παρατηρούµε ότι οι είσοδοι ελέγχου όλων των πολυπλεκτών 4Æ1 οδηγούνται από τα σήµατα t1t0 και ανάλογα µε την τιµή των σηµάτων αυτών υλοποιούν µία από τις τέσσερις λειτουργίες ολίσθησης του Πίνακα 3.2 . Παρατηρούµε επίσης ότι όλοι οι πολυπλέκτες 2Æ1 του επιπέδου µ, µε µ=0, 1, 2, 3, οδηγούνται από το ίδιο σήµα Cµ. Σαν παράδειγµα της λειτουργίας του ολισθητή του σχήµατος θεωρείστε ότι απαιτείται µία λογική ολίσθηση προς τα δεξιά κατά 5 θέσεις. Σ’ αυτή την περίπτωση, σύµφωνα µε τον Πίνακα 3.2, θα πρέπει να τεθούν οι είσοδοι t1 και t0 στο1 και 0 αντίστοιχα, για να καθοριστεί η συγκεκριµένη λειτουργία, και οι είσοδοι C2, C1 και C0 στις λογικές τιµές 1, 0 και 1 αντίστοιχα (σηµειώστε ότι 101 είναι η δυαδική παράσταση του 5) για να καθοριστεί το πλήθος των θέσεων της ολίσθησης. Στη γενική περίπτωση, στην περίπτωση δηλαδή ενός ολισθητή που µπορεί να πραγµατοποιήσει τις τέσσερις συναρτήσεις του Πίνακα 3.2 πάνω σε ένα δεδοµένο των ν δυαδικών ψηφίων, όπου ν = 2κ και κ > 0, το κύκλωµα του ολισθητή θα αποτελείται από κ επίπεδα. Κάθε επίπεδο θα αποτελείται από ν υποµονάδες (κάθε υποµονάδα αποτελείται από έναν πολυπλέκτη 4Æ1 και από έναν πολυπλέκτη 2Æ1). Προφανώς όλοι οι πολυπλέκτες 4Æ1 ελέγχονται από τις γραµµές t1t0. Όλοι οι πολυπλέκτες 2Æ1 κάθε επιπέδου ελέγχονται από ένα κοινό σήµα Cµ, µε µ = 0, 1, …, κ–1. Ανάλογα µε την τιµή αυτού του σήµατος, σε κάθε επίπεδο µπορεί να λάβει χώρα µια λειτουργία ολίσθησης κατά 2µ θέσεις. Για παράδειγµα, εάν το σήµα C3 σε έναν ολισθητή των 16 δυαδικών ψηφίων έχει την τιµή 1, θα εκτελεστεί µία από τις τέσσερεις λειτουργίες ολίσθησης κατά 23 = 8 θέσεις. Αντίθετα, εάν αυτό το σήµα έχει τιµή 0, καµία λειτουργία ολίσθησης δεν θα λάβει χώρα στο τέταρτο επίπεδο του εν λόγω ολισθητή. Ο συνολικός αριθµός των θέσεων ολίσθησης (λ) του δεδοµένου εισόδου προκύπτει µε βάση τον τύπο: k -1
λ=
ÂC 2
i
i
i =0
Συνεπώς, ο µέγιστος αριθµός των θέσεων ολίσθησης ν–1 προκύπτει όταν όλα
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
90
τα σήµατα Cµ έχουν τη λογική τιµή 1. Πρέπει να σηµειώσουµε ότι ο ολισθητής που περιγράψαµε, αν και σύµφωνα µε τον Πίνακα 3.2 υλοποιεί µόνο τέσσερις διαφορετικές πράξεις ολίσθησης, µπορεί να χρησιµοποιηθεί για κάθε πράξη ολίσθησης. Για παράδειγµα, αν θέλουµε κυκλική ολίσθηση κατά κ θέσεις προς τα αριστερά σε ένα δεδοµένο των ν δυαδικών ψηφίων, µπορούµε να πάρουµε το ίδιο αποτέλεσµα κάνοντας κυκλική ολίσθηση προς τα δεξιά κατά ν–κ θέσεις. ª√¡∞¢∞ ¶√§§∞¶§∞™π∞™ª√À
Ένας απλός τρόπος να πολλαπλασιάσουµε δύο αριθµούς Α και Β σταθερής υποδιαστολής είναι να προσθέσουµε τον Α στο εαυτό του Β φορές. Είναι φανερό ότι, εάν κάθε αριθµός είναι των ν δυαδικών ψηφίων, τότε στη χειρότερη περίπτωση θα απαιτούνταν 2ν–1 προσθέσεις. Ο αλγόριθµος αυτός δεν χρησιµοποιείται για την εκτέλεση του πολλαπλασιασµού, αν και η υλοποιησή του δεν απαιτεί κυκλώµατα επιπλέον της µονάδας πρόσθεσης/αφαίρεσης, διότι ο χρόνος που απαιτείται για την εκτέλεση της πράξης του πολλαπλασιασµού µπορεί να είναι απαγορευτικά µεγάλος. Ο πολλαπλασιασµός δύο δυαδικών αριθµών χωρίς πρόσηµο, χρησιµοποιώντας χαρτί και µολύβι, γίνεται ως ακολούθως:
∆ηλαδή για κάθε δυαδικό ψηφίο του πολλαπλασιαστή έχουµε µία πρόσθεση και µία ολίσθηση. Στη συνέχεια θα δώσουµε έναν αλγόριθµο για την εκτέλεση του πολλαπλασιασµού στον υπολογιστή, που βασίζεται στην εκτέλεση διαδοχικών πράξεων πρόσθεσης και ολίσθησης και µοιάζει µε την εκτέλεση της πράξης του
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
91
πολλαπλασιασµού µε χαρτί και µολύβι. Ο αλγόριθµος αυτός είναι αρκετά πιο γρήγορος από τη µέθοδο των διαδοχικών προσθέσεων, που συζητήσαµε, και µπορεί να υλοποιηθεί µε διάφορους τρόπους. Στο σχήµα 3.7 δίνεται η υλοποίησή του για πολλαπλασιασµό αριθµών χωρίς πρόσηµο, χρησιµοποιώντας έναν αθροιστή και έναν ολισθητή. Στην περίπτωση αυτή ο ολισθητής υλοποιείται σαν ακολουθιακό κύκλωµα µε flip–flops, διότι σε κάθε βήµα του αλγόριθµου απαιτείται ολίσθηση µόνο κατά µία θέση. Οι καταχωρητές Κ1 και Κ2 είναι συνδεδεµένοι µεταξύ τους και σχηµατίζουν έναν ολισθητή που µπορεί να κάνει µία ολίσθηση σε µία χρονική περίοδο.
™¯‹Ì· 3.7
Αριθµητική Λογική Μονάδα µε τη δυνατότητα εκτέλεσης πολλαπλασιασµού.
Στο σχήµα 3.8 δίνεται ο αλγόριθµος εκτέλεσης της πράξης του πολλαπλασιασµού. Σηµειώστε ότι ο συµβολισµός Κ1/Κ2 χρησιµοποιείται για να δηλώσει ότι το περιεχόµενο των Κ1 και Κ2 λαµβάνεται υπόψη ως µία ενιαία δυαδική παράσταση. Το σύµβολο ΛΣΨ(Χ) δηλώνει το λιγότερο σηµαντικό ψηφίο του καταχωρητή Χ, δηλαδή το δυαδικό ψηφίο που βρίσκεται εντελώς δεξιά. Επίσης σηµειώστε ότι στο σχήµα 3.7 κατά την ολίσθηση προς τα δεξιά των Κ1/Κ2 στην πλέον σηµαντική θέση τοποθετείται το µηδέν. Μετά την εκτέλεση του αλγόριθµου οι καταχωρητές Κ1/Κ2 περιέχουν το γινόµενο. Αυτός ο τρόπος υλοποίησης του πολλαπλασιασµού χρησιµοποιείται όταν δεν έχουµε απαιτήσεις για µεγάλες ταχύτητες εκτέλεσης της πράξης. Όταν απαιτείται µεγάλη ταχύτητα εκτέλεσης, χρησιµοποιείται ένα συνδυαστικό κύκλωµα. Στο σχήµα 3.9 δίνεται ένα συνδυαστικό κύκλωµα υλοποίησης της πράξης πολλαπλασιασµού για δυαδικούς αριθµούς χωρίς πρόσηµο των τεσ-
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
92
™¯‹Ì· 3.8
Αλγόριθµος εκτέλεσης της πράξης του πολλαπλασιασµού χρησιµοποιώντας την µονάδα του σχήµατος 3.7.
™¯‹Ì· 3.9
Μονάδα πολλαπλασιασµού διάδοσης κρατουµένου.
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
σάρων δυαδικών ψηφίων. Κάθε γραµµή υπολογίζει ένα µερικό γινόµενο και το προσθέτει µε το µερικό γινόµενο της προηγούµενης γραµµής. Παρατηρούµε ότι η πρόσθεση σε κάθε γραµµή γίνεται µε αθροιστή διάδοσης κρατουµένου, οπότε η µέγιστη καθυστέρηση διάδοσης ισούται µε 2ν, όπου ν είναι το πλήθος των δυαδικών ψηφίων κάθε αριθµού. Αυτοί οι πολλαπλασιαστές καλούνται διάδοσης κρατουµένου (carry propagate). Υπάρχουν δύο τρόποι να επιταχύνουµε την εκτέλεση του πολλαπλασιασµού. Ο πρώτος επιταχύνει την πρόσθεση των επιµέρους γινοµένων χρησιµοποιώντας για παράδειγµα “carry–save” αθροιστές. Ο δεύτερος τρόπος ελαττώνει τον αριθµό των επιµέρους γινοµένων, χρησιµοποιώντας για παράδειγµα τον τροποποιηµένο αλγόριθµο Booth. Όταν για την υλοποίηση του πολλαπλασιαστή χρησιµοποιούνται carry–save αθροιστές, ο πολλαπλασιαστής καλείται carry–save πολλαπλασιαστής. Σ’ έναν carry–save πολλαπλασιαστή, αντί τα κρατούµενα να διαδίδονται κατά µήκος της ίδιας της γραµµής, προωθούνται στην επόµενη γραµµή, όπου και προστίθενται. Λόγω περιορισµών στην έκταση του κειµένου δεν µας επιτρέπεται να παρουσιάσουµε λεπτοµέρειες των πολλαπλασιαστών carry–save, τον αλγόριθµο Booth, όπως επίσης και άλλες µονάδες πολλαπλασιασµού προσηµασµένων δυαδικών αριθµών.Ο ενδιαφερόµενος µπορεί να ανατρέξει στη βιβλιογραφία που παρατίθεται στο τέλος της ενότητας. ª√¡∞¢∞ ¢π∞πƒ∂™∏™
Ο αλγόριθµος για την εκτέλεση της πράξης της διαίρεσης στον υπολογιστή βασίζεται στην εκτέλεση διαδοχικών πράξεων ολίσθησης και αφαίρεσης και µπορεί να υλοποιηθεί µε πολλούς τρόπους. Η µονάδα του σχήµατος 3.7, που χρησιµοποιείται για την εκτέλεση της πράξης του πολλαπλασιασµού, µπορεί επίσης να χρησιµοποιηθεί για την πράξη της διαίρεσης. Η µόνη πρόσθετη απαίτηση είναι ότι ο καταχωρητής Κ1/Κ2 πρέπει να έχει τη δυνατότητα να ολισθαίνει το περιεχόµενό του κατά µία θέση όχι µόνο προς τα δεξιά αλλά και προς τα αριστερά. Στους σύγχρονους επεξεργαστές ωστόσο υπάρχει ειδικό κύκλωµα για την πράξη της διαίρεσης.
93
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
94
3.1.3 ªÔÓ¿‰· ÂÂÍÂÚÁ·Û›·˜ ‰Â‰ÔÌ¤ÓˆÓ ÎÈÓËÙ‹˜ ˘Ô‰È·ÛÙÔÏ‹˜
Όλοι οι σύγχρονοι επεξεργαστές, όσον αφορά στις πράξεις κινητής υποδιαστολής, υλοποιούν το στάνταρτ της ΙΕΕΕ 754. Πολλοί από αυτούς έχουν υλικό για την εκτέλεση των πράξεων κινητής υποδιαστολής, ενώ άλλοι τις υλοποιούν εκτελώντας προγράµµατα και χρησιµοποιώντας τη µονάδα ακεραίων. Από αυτούς που έχουν υλικό για την εκτέλεση πράξεων κινητής υποδιαστολής, άλλοι διαθέτουν υλικό για την εκτέλεση τόσο αριθµητικής απλής όσο διπλής ακρίβειας, ενώ άλλοι µόνο για αριθµητική απλής ακρίβειας. Σ’ αυτούς οι πράξεις διπλής ακρίβειας υλοποιούνται µε προγράµµατα και τη µονάδα εκτέλεσης αριθµητικής απλής ακρίβειας. Στα σχήµατα 3.10 και 3.11 δίνονται οι αλγόριθµοι εκτέλεσης πράξεων πρόσθεσης και πολλαπλασιασµού µεταξύ αριθµών κινητής υποδιαστολής.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.1
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.2
Αναφέρετε τέσσερις υποµονάδες που µπορούν να περιλαµβάνονται στη µονάδα επεξεργασίας δεδοµένων σταθερής υποδιαστολής.
Θεωρήστε ότι οι πράξεις της πρόσθεσης γίνονται σε έναν αθροιστή των οκτώ δυαδικών ψηφίων. Να δώσετε το αποτέλεσµα της άθροισης των δύο δυαδικών αριθµών που δίνονται σε καθεµία από τις περιπτώσεις α, β και γ, θεωρώντας τους αρχικά σαν ακέραιους θετικούς αριθµούς χωρίς πρόσηµο και στη συνέχεια σαν προσηµασµένους σε παράσταση συµπληρώµατος ως προς δύο. Σε κάθε περίπτωση επιβεβαιώστε τις απαντήσεις σας εκτελώντας τις πράξεις και στο δεκαδικό. α. Α = 01011000, Β = 10100010 β. Α = 10010100, Β = 10011100 γ. Α = 00001010, Β = 01111111
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
95
™¯‹Ì· 3.10
Αλγόριθµος εκτέλεσης πρόσθεσης µεταξύ αριθµών κινητής υποδιαστολής.
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
96
™¯‹Ì· 3.11
Αλγόριθµος εκτέλεσης πολλαπλασιασµού µεταξύ αριθµών κινητής υποδιαστολής.
ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™ ¢ ∂ ¢ √ ª ∂ ¡ ø ¡
∆ίνονται οι ολισθητές Α και Β, καθένας των 64 δυαδικών ψηφίων. Ο ολισθητής Α είναι υλοποιηµένος µε flip–flops σαν καταχωρητής–ολισθητής, ενώ ο ολισθητής Β είναι υλοποιηµένος µε συνδυαστικά κυκλώµατα, όπως αυτός του σχήµατος 3.6. Σε ποιον ολισθητή θα γίνει η ολίσθηση γρηγορότερα για καθεµία από τις ακόλουθες περιπτώσεις;
97
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.3
α. Oλίσθηση κατά µία θέση. β. Oλίσθηση κατά 30 θέσεις.
Ποιο είναι το πλήθος των πράξεων που απαιτείται για την εκτέλεση της πράξης του πολλαπλασιασµού, στη χειρότερη περίπτωση, σε καθεµία από τις παρακάτω περιπτώσεις;
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.4
α. Mε τον αλγόριθµο των διαδοχικών προσθέσεων. β. Mε τον αλγόριθµο του σχήµατος 3.7.
Θεωρήστε ότι για την εκτέλεση της πράξης του πολλαπλασιασµού χρησιµοποιείται η µονάδα του σχήµατος 3.7 και ο αλγόριθµος του σχήµατος 3.8. Θεωρήστε ότι το µήκος κάθε καταχωρητή της µονάδας του σχήµατος 3.7 είναι 8 δυαδικά ψηφία. Περιγράψτε λεπτοµερώς βήµα προς βήµα την εκτέλεση της πράξης της πρόσθεσης µεταξύ του πολλαπλασιαστέου 10(10) και του πολλαπλασιαστή 38(10).
Στον αλγόριθµο του σχήµατος 3.10 στο δεύτερο βήµα για να γίνουν οι εκθέτες των δύο αριθµών ίσοι ολισθαίνουµε το συντελεστή του αριθµού µε το µικρότερο εκθέτη προς τα δεξιά. Θα µπορούσαµε εναλλακτικά να ολισθήσουµε το συντελεστή του αριθµού µε το µεγαλύτερο εκθέτη προς τα αριστερά;
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.5
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.6
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
98
™‡ÓÔ„Ë ∂ÓfiÙËÙ·˜ Η Μονάδα Επεξεργασίας ∆εδοµένων στους σύγχρονους επεξεργαστές αποτελείται από τη Μονάδα Επεξεργασίας ∆εδοµένων σταθερής υποδιαστολής και τη Μονάδα Επεξεργασίας ∆εδοµένων κινητής υποδιαστολής. Συνήθως η Μονάδα Επεξεργασίας ∆εδοµένων σταθερής υποδιαστολής περιλαµβάνει την Αριθµητική Λογική Μονάδα, ΑΛΜ, τους καταχωρητές γενικού σκοπού, τη µονάδα ολίσθησης, τη µονάδα πολλαπλασιασµού και τη µονάδα διαίρεσης. Στην ενότητα αυτή ασχοληθήκαµε µε το σχεδιασµό καθεµιάς από τις παραπάνω µονάδες. 3.2 ªÔÓ¿‰· ∂ϤÁ¯Ô˘
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να µάθετε εναλλακτικούς τρόπους σχεδιασµού της µονάδας ελέγχου, καθώς και τα πλεονεκτήµατα και µειονεκτήµατα κάθε τρόπου. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα µπορείτε να: • σχεδιάσετε µία µονάδα ελέγχου µε διάφορους τρόπους • επιλέξετε, ανάλογα µε τα χαρακτηριστικά της αρχιτεκτονικής σε επίπεδο γλώσσας µηχανής, τον τρόπο σχεδιασµού της µονάδας ελέγχου που ταιριάζει καλύτερα στη συγκεκριµένη εφαρµογή 3.2.1 ¢ÔÌ‹ Ù˘ ÌÔÓ¿‰·˜ ÂϤÁ¯Ô˘
Στην υποενότητα 1.3.2. Κεντρική Μονάδα Επεξεργασίας µάθατε ότι η ΚΜΕ εκτελεί µία εντολή σε µία σειρά από βήµατα: 1. Φέρνει στην ΚΜΕ την εντολή που είναι αποθηκευµένη στη θέση µνήµης που δείχνει ο µετρητής προγράµµατος. 2. Αλλάζει το περιεχόµενο του µετρητή προγράµµατος, ώστε να δείχνει τη θέση µνήµης που περιέχει την επόµενη προς εκτέλεση εντολή. 3. Αναλύει την εντολή και ελέγχει εάν η εντολή χρειάζεται δεδοµένα από τη µνήµη και, εάν ναι, προσδιορίζει τη διεύθυνση που είναι αποθηκευµένα. 4. Φέρνει τα δεδοµένα σε κάποιους από τους καταχωρητές της.
ª√¡∞¢∞ ∂§∂°Ã√À
99
™¯‹Ì· 3.12
Μονάδα Ελέγχου.
5. Εκτελεί την εντολή. 6. Αποθηκεύει τα αποτελέσµατα. 7. Πηγαίνει στο βήµα 1 για να αρχίσει την εκτέλεση της επόµενης εντολής.
Τα βήµατα αυτά αποτελούν τον κύκλο της εντολής. Μπορούµε να διαχωρίσουµε τον κύκλο εντολής σε δύο φάσεις, τη φάση προσκόµισης της εντολής και τη φάση εκτέλεσης της εντολής. Η φάση προσκόµισης της εντολής αποτελείται από τα δύο πρώτα βήµατα του κύκλου εντολής, που είναι σταθερά και δεν εξαρτώνται από το είδος της εντολής, ενώ η φάση εκτέλεσης της εντολής αποτελείται από τα υπόλοιπα βήµατα που εξαρτώνται από τη συγκεκριµένη εντολή που εκτελείται. Η µονάδα ελέγχου σε κάθε χρονική περίοδο του κύκλου εντολής παράγει ένα σύνολο σηµάτων, που καλούνται σήµατα ελέγχου. Κατά τη φάση προσκόµισης η µονάδα ελέγχου παράγει σήµατα, που έχουν ως συνέπεια την προσκόµιση µιας εντολής. Κατά τη φάση εκτέλεσης η µονάδα ελέγχου αποκωδικοποιεί µία εντολή και ανάλογα µε την εντολή παράγει σήµατα που κατευθύνουν τα δεδοµένα στις κατάλληλες λειτουργικές µονάδες και επιλέγουν τις λειτουργίες που πρέπει να εκτελεστούν σε συγκεκριµένες χρονικές περιόδους. ∆ιακρίνουµε λοιπόν δύο βασικές υπευθυνότητες της µονάδας ελέγχου, την επιλογή της σειράς εκτέλεσης των εντολών και την ερµηνεία των εντολών. Η επιλογή της σειράς εκτέλεσης των εντολών βασίζεται στη χρήση του µετρητή προγράµµατος, ο οποίος περιέχει πάντοτε τη διεύθυνση της θέσης
100
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
µνήµης που περιέχει την επόµενη προς εκτέλεση εντολή. Η λειτουργία του µετρητή προγράµµατος βασίζεται στο γεγονός ότι οι εντολές ενός προγράµµατος εκτελούνται συνήθως σειριακά η µία µετά την άλλη µε τη σειρά που εµφανίζονται στο πρόγραµµα. Βέβαια, υπάρχουν και περιπτώσεις αλλαγής της σειράς εκτέλεσης των εντολών του προγράµµατος. Η αλλαγή της σειράς εκτέλεσης των εντολών του προγράµµατος µπορεί να οφείλεται σε έναν από τους ακόλουθους λόγους: α. Η εκτελούµενη εντολή είναι µία εντολή άλµατος (jump) ή διακλάδωσης (branch). β. Η εκτελούµενη εντολή είναι µία εντολή κλήσεως υποπρογράµµατος (call for subroutine). γ. Έχει συµβεί µία ειδική περίπτωση (exception), όπως για παράδειγµα το συµβάν υπερχείλισης κατά την εκτέλεση της προηγούµενης πράξης, η προσπάθεια διαίρεσης µε το µηδέν κλπ. δ. Έχει ληφθεί ένα σήµα διακοπής (interrupt), για την εξυπηρέτηση για παράδειγµα µιας µονάδας εισόδου/εξόδου. Στις δύο πρώτες περιπτώσεις ήταν επιθυµία του προγραµµατιστή να αλλάξει στο συγκεκριµένο σηµείο η σειρά της εκτέλεσης των εντολών του προγράµµατος. Στην τρίτη περίπτωση το ίδιο το πρόγραµµα που εκτελείται είναι υπεύθυνο για την αλλαγή της σειράς εκτέλεσης των εντολών του προγράµµατος, χωρίς όµως αυτό να είναι πρόθεση του προγραµµατιστή. Εάν επαναλαµβάνονταν η εκτέλεση του προγράµµατος από την αρχή, και πάλι στο ίδιο σηµείο θα συνέβαινε το ίδιο γεγονός. Στην τελευταία περίπτωση η αιτία είναι εξωγενής προς το πρόγραµµα. Εάν επαναλαµβάνονταν η εκτέλεση του προγράµµατος από την αρχή, το πιο πιθανό είναι να µην είχαµε αλλαγή της σειράς εκτέλεσης των εντολών του προγράµµατος στο σηµείο αυτό. Θα πρέπει να σηµειώσουµε στο σηµείο αυτό ότι στις τρεις τελευταίες περιπτώσεις, πριν µεταφερθεί ο έλεγχος του προγράµµατος στο υποπρόγραµµα ή στη ρουτίνα εξυπηρέτησης της ειδικής περίπτωσης ή στη ρουτίνα εξυπηρέτησης του σήµατος διακοπής, θα πρέπει να φυλαχτεί κάπου η διεύθυνση της θέσης µνήµης που περιέχει την επόµενη στη σειρά εντολή του προγράµµατος. Τα βήµατα που δώσαµε για τον κύκλο εντολής δεν είναι όλα πρωταρχικά. Μερικά από αυτά αναλύονται σε µία σειρά από επιµέρους βήµατα. Για να µπορέσουµε όµως να περιγράψουµε τον κύκλο εντολής χρησιµοποιώντας βασικά, πρωταρχικά βήµατα, που καλούνται µικρολειτουργίες, θα πρέπει να
ª√¡∞¢∞ ∂§∂°Ã√À
γνωρίζουµε τη δοµή, την οργάνωση και την υλοποίηση της Μονάδας Επεξεργασίας ∆εδοµένων. Ο πλέον χρήσιµος τρόπος περιγραφής της συµπεριφοράς της µονάδας ελέγχου είναι τα λογικά διαγράµµατα. Ένα λογικό διάγραµµα περιγράφει τις µικρολειτουργίες που πρέπει να εκτελεστούν από τη Μονάδα Επεξεργασίας ∆εδοµένων και δηλώνει τη σειρά µε την οποία πρέπει να εκτελεστούν. Επίσης θα πρέπει να περιγράψουµε τις µικρολειτουργίες που πρέπει να εκτελεστούν, εάν συµβεί µία ειδική περίπτωση ή ληφθεί ένα σήµα διακοπής. Όταν συµπληρωθεί ο σχεδιασµός της Μονάδας Επεξεργασίας ∆εδοµένων και αναγνωριστούν τα σηµεία στα οποία πρέπει να εφαρµοστούν τα σήµατα ελέγχου, σε κάθε µικρολειτουργία αντιστοιχεί ένα σύνολο από γραµµές ελέγχου που πρέπει να ενεργοποιηθούν για να εκτελεστεί η µικρολειτουργία. Εάν αυτά τα σύνολα από σήµατα ελέγχου τοποθετηθούν στο λογικό διάγραµµα, τότε έχουµε µία περιγραφή των σηµάτων εισόδου και εξόδου της µονάδας ελέγχου, καθώς και της χρονικής περιόδου στην οποία κάθε σήµα θα παραχθεί. ∆ύο µέθοδοι έχουν αναπτυχθεί για το σχεδιασµό της µονάδας ελέγχου. Η πρώτη αντιµετωπίζει τη µονάδα ελέγχου ως ένα ακολουθιακό κύκλωµα που παράγει συγκεκριµένες σταθερές ακολουθίες από σήµατα ελέγχου, ενώ η δεύτερη είναι η τεχνική του µικροπρογραµµατισµού (microprogramming). 3.2.2 ÀÏÔÔ›ËÛË Ù˘ ÌÔÓ¿‰·˜ ÂϤÁ¯Ô˘ Û·Ó ·ÎÔÏÔ˘ıÈ·Îfi ·Îψ̷
Μία µονάδα ελέγχου µπορεί να έχει περισσότερες από εκατό γραµµές εξόδου, αυτό µπορεί να έχει ως συνέπεια να είναι δύσκολη και δαπανηρή η σχεδίασή της σαν ακολουθιακό κύκλωµα. Επιπλέον, µία µονάδα ελέγχου που έχει σχεδιαστεί σαν ακολουθιακό κύκλωµα έχει το κύριο µειονέκτηµα ότι αλλαγές, για να διορθωθούν σχεδιαστικά λάθη ή να τροποποιηθεί το σύνολο των εντολών του υπολογιστή, απαιτούν η µονάδα ελέγχου να σχεδιαστεί και να κατασκευαστεί εξαρχής. Η διαδικασία σχεδιασµού ακολουθιακών κυκλωµάτων είναι γνωστή σ’ εσάς από το µάθηµα "Ψηφιακή Σχεδίαση ΙΙ", που έχετε ήδη διδαχθεί. Εποµένως, στην παράγραφο αυτή θα αναφέρουµε µόνο κάποια στοιχεία που είναι πολύ χρήσιµα για τη µονάδα ελέγχου. Όταν σχεδιάζουµε τη µονάδα ελέγχου σαν ακολουθιακό κύκλωµα, υπάρχουν διάφορες σχεδιαστικές αποφάσεις που επηρεάζουν την ποσότητα του απαι-
101
102
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
τούµενου υλικού, την ταχύτητα λειτουργίας της, το κόστος και τη χρονική διάρκεια που απαιτείται για το σχεδιασµό της, καθώς και την ευκολία επιβεβαίωσης του ορθού σχεδιασµού της (debugging). Μία από τις αποφάσεις που επηρεάζουν σηµαντικά τις παραµέτρους αυτές είναι ο τρόπος µε τον οποίο γίνεται η κωδικοποίηση καταστάσεων (state assignment). Μία µέθοδος που χρησιµοποιείται για την κωδικοποίηση καταστάσεων προσπαθεί να ελαχιστοποιήσει τον αριθµό των απαιτούµενων στοιχείων µνήµης (flip–flops). Σ΄ αυτή την περίπτωση εάν υπάρχουν µ εσωτερικές καταστάσεις απαιτούνται Èlog2µù στοιχεία µνήµης. Στην άλλη ακραία περίπτωση για κάθε εσωτερική κατάσταση απαιτείται και ένα στοιχείο µνήµης. ∆ηλαδή, εάν υπάρχουν µ εσωτερικές καταστάσεις, απαιτούνται µ στοιχεία µνήµης. Σ' αυτή την περίπτωση η κωδικοποίηση καταστάσεων γίνεται κατά τέτοιο τρόπο, ώστε κάθε χρονική στιγµή µόνο ένα στοιχείο µνήµης να έχει τη λογική τιµή ένα, κωδικοποίηση ενός ενεργού σήµατος (one–hot encoding). Για παράδειγµα, εάν το κύκλωµά µας έχει πέντε εσωτερικές καταστάσεις s0, s1, s2, s3 και s4, αυτές κωδικοποιούνται αντίστοιχα σαν (00001), (00010), (00100), (01000) και (10000). Αν και αυτός ο τρόπος κωδικοποίησης µπορεί να οδηγήσει στην χρησιµοποίηση ενός σηµαντικά µεγαλύτερου αριθµού στοιχείων µνήµης, µελέτες έχουν δείξει ότι η επιφάνεια σε ένα ολοκληρωµένο κύκλωµα, που απαιτείται σ' αυτή την περίπτωση για την υλοποίηση του κυκλώµατος, είναι προσεγγιστικά ίδια µε εκείνη που απαιτείται εάν χρησιµοποιήσουµε έναν πιο συµπαγή τρόπο κωδικοποίησης καταστάσεων. Αυτό οφείλεται κατά ένα µέρος στο γεγονός ότι, όταν χρησιµοποιείται η κωδικοποίηση ενός ενεργού σήµατος, η µεταφορά από µία κατάσταση σε µία άλλη είναι γενικά απλούστερη και µπορεί να υλοποιηθεί µε απλά συνδυαστικά κυκλώµατα λίγων επιπέδων. Το γεγονός ότι τα συνδυαστικά αυτά κυκλώµατα είναι λίγων επιπέδων συνεπάγεται ότι µπορούµε να χρησιµοποιήσουµε σήµα χρονισµού (clock) µεγαλύτερης συχνότητας, εποµένως η µονάδα ελέγχου είναι πιο γρήγορη όταν για την κωδικοποίηση καταστάσεων χρησιµοποιείται η κωδικοποίηση ενός ενεργού σήµατος. Επίσης, η χρησιµοποίηση της µεθόδου κωδικοποίησης ενός ενεργού σήµατος απλοποιεί τη διαδικασία σχεδιασµού και τη διαδικασία επιβεβαίωσης του ορθού σχεδιασµού της µονάδας ελέγχου. 3.2.3 ÀÏÔÔ›ËÛË Ù˘ ÌÔÓ¿‰·˜ ÂϤÁ¯Ô˘ Ì ÙËÓ Ù¯ÓÈ΋ ÙÔ˘ ÌÈÎÚÔÚÔÁÚ·ÌÌ·ÙÈÛÌÔ‡
Η Τεχνική του Μικροπρογραµµατισµού προσφέρει έναν ευέλικτο και συστηµατικό τρόπο σχεδιασµού της Μονάδας Ελέγχου. Η µονάδα ελέγχου που σχε-
ª√¡∞¢∞ ∂§∂°Ã√À
διάζεται χρησιµοποιώντας αυτή την τεχνική καλείται µικροπρογραµµατισµένη µονάδα ελέγχου (microprogrammed control unit). Ο µικροπρογραµµατισµός είναι µία µέθοδος σχεδιασµού της µονάδας ελέγχου στην οποία τόσο η πληροφορία επιλογής των σηµάτων ελέγχου όσο και ένα µέρος της πληροφορίας που αφορά στη σειρά παραγωγής των σηµάτων αποθηκεύονται σε µία µνήµη άµεσης προσπέλασης, που καλείται µνήµη ελέγχου (control memory). Τα σήµατα ελέγχου που πρέπει να ενεργοποιηθούν κάθε χρονική στιγµή καθορίζονται από τα δυαδικά ψηφία µίας λέξης που καλείται µικροεντολή (microinstruction) και προσκοµίζεται από τη µνήµη ελέγχου µε τον ίδιο τρόπο που προσκοµίζεται µία εντολή από την κύρια µνήµη. Κάθε µικροεντολή δηλώνει ρητά ή υπονοεί την επόµενη προς εκτέλεση µικροεντολή. Η ακολουθία µικροεντολών, που πρέπει να προσκοµιστούν για να εκτελεστεί µία συγκεκριµένη εντολή, αποτελούν ένα µικροπρόγραµµα (microprogram) για αυτή την εντολή. Μία εντολή εκτελείται φέρνοντας από τη µνήµη ελέγχου τις µικροεντολές που ανήκουν στο µικροπρόγραµµά της και χρησιµοποιώντας αυτές για την ενεργοποίηση των γραµµών ελέγχου. Είναι προφανές ότι η τεχνική του µικροπρογραµµατισµού κάνει το σχεδιασµό της µονάδας ελέγχου πιο συστηµατικό οργανώνοντας τα σήµατα ελέγχου σε λέξεις (τις µικροεντολές), που έχουν καλά ορισµένη µορφή. Επειδή αυτά τα σήµατα είναι πραγµατοποιηµένα µε λογισµικό και όχι µε υλικό, είναι εύκολο να γίνει διόρθωση σχεδιαστικών λαθών ή τροποποίηση του συνόλου των εντολών της µηχανής. Σε µία µικροπρογραµµατισµένη ΚΜΕ κάθε εντολή γλώσσας µηχανής εκτελείται από ένα µικροπρόγραµµα, που δρα ως διερµηνέας (interpreter) πραγµατικού χρόνου για την εντολή. Το σύνολο των µικροπρογραµµάτων, που δρα ως διερµηνέας ενός συγκεκριµένου συνόλου εντολών ή γλώσσας Λ, καλείται µερικές φορές εξοµοιωτής (emulator) της Λ. Ένας µικροπρογραµµατισµένος υπολογιστής Α1 µπορεί να χρησιµοποιηθεί για να εκτελεί προγράµµατα γραµµένα στη γλώσσα µηχανής Λ2 κάποιου άλλου υπολογιστή Α2, αρκεί να τοποθετήσουµε έναν εξοµοιωτή της Λ2 στη µνήµη ελέγχου του Α1. Η διαδικασία καλείται εξοµοίωση σε επίπεδο µικροκώδικα και λέµε ότι η µηχανή Α1 µπορεί να εξοµοιώσει σε επίπεδο µικροκώδικα τη µηχανή Α2. Η µικροπρογραµµατισµένη µονάδα ελέγχου είναι πιο αργή από τη µονάδα ελέγχου που υλοποιείται σαν ακολουθιακό κύκλωµα λόγω του χρόνου που απαιτείται για την προσκόµιση των µικροεντολών από τη µνήµη ελέγχου. Στις µικροπρογραµµατισµένες µονάδες ελέγχου ο σχεδιαστής του υπολογι-
103
104
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
στή έχει ορίσει το σύνολο εντολών σε επίπεδο γλώσσας µηχανής, έχει γράψει τα κατάλληλα µικροπρογράµµατα και τα έχει αποθηκεύσει στη µνήµη ελέγχου. Ο προγραµµατιστής σε οποιοδήποτε επίπεδο δεν µπορεί να τροποποιήσει τα µικροπρογράµµατα ή να προσθέσει νέες εντολές στο σύνολο εντολών του υπολογιστή γράφοντας µικροπρογράµµατα για την υλοποίησή τους και αποθηκεύοντάς τα στη µνήµη ελέγχου. Υπαρχουν όµως και υπολογιστές µε µικροπρογραµµατιζόµενες µονάδες ελέγχου (microprogrammable control units). Σ' αυτούς ο χρήστης µπορεί να ορίσει το δικό του σύνολο εντολών σε επίπεδο γλώσσας µηχανής ή να προσθέσει νέες εντολές σε ένα υπάρχον σύνολο εντολών, να γράψει τα µικροπρογράµµατα που υλοποιούν τις εντολές που όρισε και να τα αποθηκεύσει στη µνήµη ελέγχου. Σήµερα η πλειονότητα των προγραµµάτων γράφεται σε γλώσσες προγραµµατισµού υψηλού επιπέδου. Εποµένως για να χρησιµοποιηθούν, κατά την εκτέλεση ενός προγράµµατος που γράφτηκε σε κάποια γλώσσα προγραµµατισµού υψηλού επιπέδου, οι εντολές που όρισε ο χρήστης µόνος του και τις υλοποίησε µε µικροπρογράµµατα, θα πρέπει ο χρήστης να γράψει και ένα µεταγλωττιστή για τη συγκεκριµένη γλώσσα προγραµµατισµού και το συγκεκριµένο σύνολο εντολών γλώσσας µηχανής. Η συγγραφή µεταγλωττιστή από το χρήστη είναι απαγορευτικά πολύπλοκη διαδικασία. Γι' αυτό το λόγο κανένας από τους υπολογιστές γενικού σκοπού, που διατίθενται στην αγορά, δεν έχει µικροπρογραµµατιζόµενη µονάδα ελέγχου. Υπολογιστές µε µικροπρογραµµατιζόµενη µονάδα ελέγχου µπορείτε να βρείτε σε κάποια ερευνητικά εργαστήρια ή σε κάποιες εφαρµογές ειδικού σκοπού. Στο σχήµα 3.13 δίνεται η γενική δοµή µίας µικροπρογραµµατισµένης ή µικροπρογραµµατιζόµενης µονάδας ελέγχου. Η µορφή των µικροεντολών µπορεί να διαφέρει από υπολογιστή σε υπολογιστή, στη γενική της όµως µορφή είναι αυτή που δίνεται στο σχήµα 3.14.
ª√¡∞¢∞ ∂§∂°Ã√À
105
™¯‹Ì· 3. 13
∆οµή µίας µικροπρογραµµατισµένης µονάδας ελέγχου.
™¯‹Ì· 3.14
Γενική µορφή µικροεντολής.
Όπως σε επίπεδο προγράµµατος γλώσσας µηχανής υπάρχουν εντολές άλµατος υπό συνθήκη, το ίδιο ισχύει και σε επίπεδο µικροπρογράµµατος. Παρατηρούµε λοιπόν ότι η µικροεντολή του σχήµατος αποτελείται από τρία πεδία. Το πεδίο επιλογής συνθήκης, το οποίο στις µικροεντολές άλµατος καθορίζει τη συνθήκη που πρέπει να ελεγχθεί, για παράδειγµα εάν η "σηµαία µηδενικού αποτελέσµατος" στον καταχωρητή κατάστασης έχει τη λογική τιµή ένα. Το πεδίο διεύθυνσης άλµατος, που στις µικροεντολές άλµατος περιέχει τη διεύθυνση της µνήµης ελέγχου που περιέχει τη µικροεντολή που πρέπει να
106
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
προσκοµιστεί στον καταχωρητή µικροεντολών εάν η συνθήκη διακλάδωσης ικανοποιείται. Το πεδίο των σηµάτων ελέγχου, που σε όλες τις µικροεντολές έχουν µονάδα µόνο τα δυαδικά ψηφία που αντιστοιχούν στα σήµατα που πρέπει να ενεργοποιηθούν όταν η συγκεκριµένη µικροεντολή προσκοµιστεί στον καταχωρητή µικροεντολών. Όπως έχουµε ήδη αναφέρει, η φάση προσκόµισης είναι η ίδια για όλες τις εντολές, δηλαδή σε κάθε χρονική περίοδο της φάσης προσκόµισης παράγονται σήµατα ελέγχου που δεν εξαρτώνται από το είδος της εντολής που θα προσκοµιστεί. Εποµένως, δεν υπάρχει λόγος στο µικροπρόγραµµα που αντιστοιχεί σε κάθε εντολή να υπάρχουν και µικροεντολές για την υλοποίηση της φάσης προσκόµισης της εντολής. Η φάση προσκόµισης εντολών υλοποιείται από ένα ξεχωριστό µικροπρόγραµµα. Όταν ανοίγουµε την τάση τροφοδοσίας του υπολογιστή στο µετρητή µικροπρογράµµατος αποθηκεύεται η διεύθυνση της θέσης της µνήµης ελέγχου που περιέχει την πρώτη µικροεντολή του µικροπρογράµµατος, που υλοποιεί τη φάση προσκόµισης εντολών. Υποθέτουµε ότι ως αποτέλεσµα της εκτέλεσης του µικροπρογράµµατος προσκόµισης εντολών αυτή τη στιγµή στον καταχωρητή εντολών υπάρχει η προς εκτέλεση εντολή. Το κύκλωµα διευθυνσιοδότησης από τον κωδικό λειτουργίας της εντολής που βρίσκεται στον καταχωρητή εντολών προσδιορίζει τη διεύθυνση της θέσης της µνήµης ελέγχου που περιέχει την πρώτη µικροεντολή του µικροπρογράµµατος, που αντιστοιχεί στην τρέχουσα εντολή, και την αποθηκεύει στο µετρητή µικροπρογράµµατος (ΜµΠ). Ο µετρητής µικροπρογράµµατος στη µονάδα ελέγχου παίζει το ρόλο που παίζει ο µετρητής προγράµµατος στην ΚΜΕ. Αυτό που θα γίνει στη συνέχεια είναι να εκτελεστεί το µικροπρόγραµµα που αντιστοιχεί στην τρέχουσα εντολή. ∆ηλαδή, σε κάθε χρονική περίοδο τα περιεχόµενα της θέσης της µνήµης ελέγχου, η διεύθυνση της οποίας υπάρχει στον µετρητή µικροπρογράµµατος, προσκοµίζονται στον καταχωρητή µικροεντολών και τα δυαδικά ψηφία που έχουν τη λογική τιµή ένα ενεργοποιούν τα αντίστοιχα σήµατα ελέγχου. Ταυτόχρονα το περιεχόµενο του µετρητή µικροπρογράµµατος αυξάνεται κατά ένα ώστε να περιέχει τη διεύθυνση της θέσης της µνήµης ελέγχου που περιέχει την επόµενη µικροεντολή του µικροπρογράµµατος. Όταν στον καταχωρητή µικροεντολών προσκοµιστεί µία µικροεντολή άλµατος υπό συνθήκη, τότε το κύκλωµα διευθυνσιοδότησης ελέγχει αν η συνθήκη που δηλώνεται στο πεδίο "επιλογή συνθήκης" της µικροεντολής ικανοποιείται. Εάν η συνθήκη ικανοποιείται, τότε στο µετρητή µικροπρογράµµατος τοποθετείται η διεύθυνση
ª√¡∞¢∞ ∂§∂°Ã√À
107
του πεδίου "διεύθυνση άλµατος" της µικροεντολής που βρίσκεται στον καταχωρητή µικροεντολών. Η τελευταία µικροεντολή κάθε µικροπρογράµµατος, που αντιστοιχεί σε κάποια εντολή, είναι µία µικροεντολή άλµατος χωρίς συνθήκη, που στο πεδίο της "διεύθυνση άλµατος" υπάρχει η διεύθυνση της θέσης της µνήµης ελέγχου που περιέχει την πρώτη µικροεντολή του µικροπρογράµµατος που υλοποιεί τη φάση προσκόµισης εντολών. ∆∂áπ∫∂™ ª∂πø™∏™ ∆∏™ ∞¶∞π∆√Àª∂¡∏™ Ãøƒ∏∆π∫√∆∏∆∞™ ∆∏™ ª¡∏ª∏™ ∂§∂°Ã√À
Τρεις τεχνικές µπορούν να χρησιµοποιηθούν για τη µείωση της απαιτούµενης χωρητικότητας της µνήµης ελέγχου. α. Χρησιµοποίηση περισσότερων της µίας µορφών µικροεντολών. β. Οργάνωση δύο επιπέδων, νανοπρογραµµατισµός γ. Κωδικοποίηση των σηµάτων ελέγχου. Οι µικροεντολές άλµατος ελέγχουν συνήθως µόνο την εσωτερική λειτουργία της µονάδας ελέγχου, εποµένως το πεδίο της µικροεντολής «σήµατα ελέγχου» δεν χρησιµοποιείται. Αντίθετα, στις υπόλοιπες µικροεντολές δεν χρησιµοποιείται το πεδίο «διεύθυνση άλµατος». Εποµένως, η µικροεντολή µπορεί να αποτελείται µόνο από δύο πεδία όπως φαίνεται στο σχήµα 3.15. Το πρώτο πεδίο καθορίζει το είδος της µικροεντολής, δηλαδή µικροεντολή άλµατος ή όχι, και στην περίπτωση µικροεντολής άλµατος δηλώνει επίσης τη συνθήκη που πρέπει να ελεγχθεί. Στις µικροεντολές άλµατος το δεύτερο πεδίο δηλώνει τη διεύθυνση άλµατος, ενώ στις υπόλοιπες µικροεντολές περιέχει τα δυαδικά ψηφία ελέγχου.
™¯‹Ì· 3.15
Μορφή µικροεντολής για µείωση της χωρητικότητας της µνήµης ελέγχου.
Για παράδειγµα, υποθέστε ότι θέλουµε να έχουµε πέντε µικροεντολές άλµατος υπό συνθήκη, µία εντολή άλµατος χωρίς συνθήκη και ογδόντα σήµατα ελέγχου σε κάθε µικροεντολή που δεν είναι µικροεντολή άλµατος. Στο σχήµα
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
108
3.16 δίνονται οι δύο µορφές µικροεντολών. Όταν το πρώτο πεδίο περιέχει 000, τότε το δεύτερο πεδίο καθορίζει τα σήµατα ελέγχου. Καθένας από τους συνδυασµούς 001, 010, 011, 100, 101 στο πρώτο πεδίο της µικροεντολής αντιστοιχεί σε µία συγκεκριµένη υπό συνθήκη εντολή άλµατος και ο συνδυασµός 110 αντιστοιχεί στην εντολή άλµατος άνευ συνθήκης.
™¯‹Ì· 3.16
0
0
0
X
Y
Z
(α) Μικροεντολή σηµάτων ελέγχου. (β) Mικροεντολή ελέγχου.
Όταν στα µικροπρογράµµατα εµφανίζονται συχνά όµοιες µικροεντολές, είναι δυνατόν να µειώσουµε την απαιτούµενη χωρητικότητα της µνήµης ελέγχου χρησιµοποιώντας οργάνωση δύο επιπέδων, όπως αυτή που φαίνεται στο σχήµα 3.17. Στη νανοµνήµη αποθηκεύονται όλες οι διαφορετικές µικροεντολές, που σ' αυτή την περίπτωση καλούνται νανοεντολές. Εάν οι µικροεντολές άλµατος δεν χρησιµοποιούν το πεδίο δυαδικών ψηφίων ελέγχου, τότε δεν αποθηκεύονται στη νανοµνήµη. Στη µνήµη ελέγχου αποθηκεύονται τα µικροπρογράµµατα που σε αυτή την περίπτωση αποτελούνται από διευθύνσεις της νανοµνήµης και µικροεντολές άλµατος. Γενικά σ' αυτή την οργάνωση η µνήµη ελέγχου έχει µεγάλο αριθµό θέσεων, αλλά µικρό αριθµό δυαδικών ψηφίων ανά θέση µνήµης, ενώ αντίθετα η νανοµνήµη έχει µικρό αριθµό θέσεων, αλλά µεγάλο αριθµό δυαδικών ψηφίων ανά θέση µνήµης. Η συνολική χωρητικότητα µνήµης που απαιτείται, όταν οργανώνουµε τη µνήµη ελέγχου σε δύο επίπεδα, είναι σηµαντικά µικρότερη από αυτή που απαιτείται όταν χρησιµοποιούµε οργάνωση ενός επιπέδου.
ª√¡∞¢∞ ∂§∂°Ã√À
109
A
B
Γ
™¯‹Ì· 3.17
∆οµή της µνήµης ελέγχου µε οργάνωση δύο επιπέδων.
Το πλήθος των µικρολειτουργιών που µπορούν να εκτελεστούν παράλληλα την ίδια χρονική περίοδο εξαρτάται απο τη δοµή, την οργάνωση και την υλοποίηση του επεξεργαστή. Όταν ο επεξεργαστής έχει σχεδιαστεί έτσι ώστε κάθε χρονική περίοδο µόνο µία µικρολειτουργία να µπορεί να εκτελεστεί, τότε σε κάθε χρονική περίοδο µόνο ένα σήµα ελέγχου είναι ενεργοποιηµένο, δηλαδή σε κάθε µικροεντολή της µνήµης ελέγχου µόνο ένα από τα δυαδικά ψηφία ελέγχου έχει τη λογική τιµή ένα. Σ' αυτή την περίπτωση θα µπορούσαµε να µειώσουµε σηµαντικά το µήκος της µικροεντολής, κωδικοποιώντας το πεδίο των σηµάτων ελέγχου. Για παράδειγµα, ας θεωρήσουµε ότι
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
110
το πεδίο των σηµάτων ελέγχου αποτελείται από εκατό δυαδικά ψηφία. Θα µπορούσαµε σ' αυτή την περίπτωση να χρησιµοποιήσουµε ένα πεδίο σηµάτων ελέγχου των Èlog2(100+1)ù = 7 δυαδικών ψηφίων, τα οποία τροφοδοτούν έναν αποκωδικοποιητή, όπως φαίνεται στο σχήµα 3.18, του οποίου χρησιµοποιούµε µόνον τις εκατό πρώτες εξόδους c0 έως και c99 . Οι δυαδικές παραστάσεις των αριθµών από µηδέν έως και ενενήντα εννέα χρησιµοποιούνται στις µικροεντολές για να ενεργοποιηθεί το αντίστοιχο σήµα ελέγχου από c0 έως και c99, ενώ οποιαδήποτε από τις υπόλοιπες δυαδικές παραστάσεις δεν ενεργοποιούν κανένα σήµα. Όταν χρησιµοποιείται η τεχνική αυτή το µήκος των µικροεντολών είναι µικρό, αλλά, αφού σε κάθε µικροεντολή εκτελείται µία µόνο µικρολειτουργία αντιλαµβάνεστε ότι για να εκτελεστεί ένας συγκεκριµένος αριθµός χ µικρολειτουργιών απαιτούνται χ µικροεντολές, άρα τα µικροπρογράµµατα αποτελούνται από περισσότερες µικροεντολές και η µνήµη ελέγχου από περισσότερες θέσεις µνήµης, αλλά καθεµία λιγότερων δυαδικών ψηφίων.
™¯‹Ì· 3.18
Σήµατα ελέγχου πλήρως κωδικοποιηµένα σε ένα πεδίο.
Όταν για κάθε σήµα ελέγχου υπάρχει στη µικροεντολή ένα δυαδικό ψηφίο, όπως στο σχήµα 3.19, τότε κάθε µικροεντολή µπορεί να ενεργοποιήσει οποιονδήποτε αριθµό σηµάτων ελέγχου. Βέβαια το πλήθος των σηµάτων ελέγχου που ενεργοποιεί µία µικροεντολή δηλώνει το πλήθος των µικρολειτουργιών που θα εκτελεστούν παραλληλα, όταν θα εκτελεστεί αυτή η µικροεντολή, εποµένως εξαρτάται, όπως έχουµε ήδη αναφέρει, από τη δοµή, την
ª√¡∞¢∞ ∂§∂°Ã√À
111
οργάνωση και την υλοποίηση του επεξεργαστή. Στην περίπτωση αυτή το µήκος των µικροεντολών είναι σηµαντικά µεγαλύτερο από ό,τι στην προηγούµενη περίπτωση που είχαµε ένα πεδίο ελέγχου, αλλά τα µικροπρογράµµατα περιέχουν µικρότερο αριθµό µικροεντολών. Επίσης, επειδή τα δυαδικά ψηφία ελέγχου της µικροεντολής ενεργοποιούν κατ' ευθείαν τα σήµατα ελέγχου, χωρίς να παρεµβάλλεται κάποιος αποκωδικοποιητής οι µονάδες ελέγχου που χρησιµοποιούν αυτές τις µικροεντολές είναι πιο γρήγορες.
™¯‹Ì· 3.19
Πεδία ελέγχου χωρίς κωδικοποίηση.
Συνήθως σε όλες τις υλοποιήσεις επεξεργαστών υπάρχουν µικρολειτουργίες που δεν µπορούν να εκτελεστούν παράλληλα. Αυτό συνεπάγεται ότι δεν υπάρχει καµία µικροεντολή που να ενεργοποιεί ταυτόχρονα τα σήµατα ελέγχου που ενεργοποιούν αυτές τις µικρολειτουργίες. Εποµένως µπορούµε να διαχωρίσουµε τα σήµατα ελέγχου σε οµάδες έτσι ώστε σε κάθε οµάδα να ανήκουν σήµατα που δεν είναι ποτέ ενεργά την ίδια χρονική περίοδο και τα σήµατα κάθε οµάδας να κωδικοποιηθούν. Σ' αυτή την περίπτωση για την αποκωδικοποίηση κάθε οµάδας σηµάτων χρησιµοποιείται και ένας αποκωδικοποιητής, βλέπε σχήµα 3.20. Πρέπει να αναφέρουµε ότι σε κάθε περίπτωση υπάρχουν περισσότεροι από ένας τρόποι να διαχωρίσουµε τα σήµατα σε οµάδες. Κάποια λύση του προβλήµατος ελαχιστοποιεί τον αριθµό των δυαδικών ψηφίων ελέγχου που απαιτούνται σε κάθε µικροεντολή, ενώ ταυτόχρονα διατηρεί το µέγιστο βαθµό παραλληλίας µεταξύ των µικρολειτουργιών και προφανώς αποτελεί µία άριστη (optimal) λύση του προβλήµατος.
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
112
0
1
2
3
™¯‹Ì· 3.20
Πεδία ελέγχου µε µερική κωδικοποίηση.
Όταν οι µικροεντολές έχουν ένα µεγάλο αριθµό από πεδία ελέγχου καλούνται οριζόντιες (horizontal). Τα κύρια χαρακτηριστικά µίας οριζόντιας µικροεντολής είναι το µεγάλο µήκος της και ότι παράγει σήµατα ελέγχου που ενεργοποιούν ένα µεγάλο αριιθµό από µικρολειτουργίες που εκτελούνται ταυτόχρονα. Όταν οι µικροεντολές έχουν ένα µικρό αριθµό πεδίων ελέγχου καλούνται κάθετες (vertical). Τα κύρια χαρακτηριστικά µίας κάθετης µικροεντολής είναι το µικρό της µήκος και ότι παράγει σήµατα ελέγχου που ενεργοποιούν ένα πολύ µικρό αριθµό µικρολειτουργειών που µπορούν να εκτελεστούν ταυτόχρονα. Για να αποφευχθούν καθυστερήσεις που οφείλονται στην κωδικοποίηση ή δεν χρησιµοποιούµε καθόλου κωδικοποίηση ή χρησιµοποιούµε µικρή κωδικοποίηση για τις µικρολειτουργίες που εκτελούνται στα χρονικά περιθώρια του χρόνου κύκλου και µεγάλη κωδικοποίηση για εκείνες τις µικρολειτουργίες για τις οποίες υπάρχουν χρονικά περιθώρια. ™∂πƒπ∞∫∏ ∂∫∆∂§∂™∏ ªπ∫ƒ√∂¡∆√§ø¡
Στην περίπτωση σειριακής εκτέλεσης των µικροεντολών, η φάση προσκόµισης από τη µνήµη ελέγχου της επόµενης προς εκτέλεση µικροεντολής ξεκινά µόλις τελειώσει η φάση εκτέλεσης της προηγούµενης µικροεντολής. Για αύξηση της ταχύτητας είναι δυνατόν να έχουµε επικάλυψη της φάσης προσκόµισης της επόµενης µικροεντολής µε τη φάση εκτέλεσης της τρέχουσας µικροεντολής (αυτή είναι µία ειδική περίπτωση της τεχνικής των µερικώς
ª√¡∞¢∞ ∂§∂°Ã√À
113
επικαλυπτόµενων λειτουργιών (pipelining)) µε την οποία θα ασχοληθούµε στο µάθηµα Αρχιτεκτονική Yπολογιστών ΙΙ. Ã√¡π™ª√™ ∆ø¡ ªπ∫ƒ√§∂π∆√Àƒ°πø¡
Στην παρουσίαση της τεχνικής του µικροπρογραµµατισµού δεν δηλώσαµε ρητά, αλλά υπονοούσαµε ότι σε κάθε κύκλο του ρολογιού εκτελούνται ταυτόχρονα όλες οι µικρολειτουργίες που ενεργοποιούνται στην εκτελούµενη µικροεντολή (βλέπε σχήµα 3.21.α). Το πλεονέκτηµα αυτού του τρόπου εκτέλεσης της µικροεντολής είναι η απλότητα υλοποίησης. Το µειονέκτηµα είναι ότι ακόµη και µικρολειτουργίες που είναι δυνατόν να εκτελεστούν µε µία πολύ µικρή χρονική καθυστέρηση της µίας σε σχέση µε την άλλη θα πρέπει να ενεργοποιηθούν σε διαφορετικές µικροεντολές. Το πρόβληµα λύνεται µε την εκτέλεση της µικροεντολής σε περισσότερες από µία φάσεις. Σ' αυτή την περίπτωση ο κύριος κύκλος εκτέλεσης της µικροεντολής διαιρείται σε υπόκυκλους και σε κάθε υπόκυκλο εκτελούνται ταυτόχρονα µία ή περισσότερες µικρολειτουργίες.
1
1
2
3
1
2
3
1
2
3
2
3
4
1
2
1
1
1
2
2
3
4
3 3
2
1
3
2 2
4
2
1 1
3
4
1
2 3 ™¯‹Ì· 3.21
Xρονισµός µικρολειτουργιών.
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
114
∆ιακρίνουµε δύο περιπτώσεις. Στη σύγχρονη εκτέλεση όλες οι µικροεντολές έχουν τον ίδιο χρονο εκτέλεσης (βλέπε σχήµα 3.21.β). Στην ασύγχρονη εκτέλεση ο αριθµός των φάσεων που απαιτούνται για την εκτέλεση µίας µικροεντολής εξαρτάται από την πολυπλοκότητα της µικροεντολής. Οι πολύπλοκες µικροεντολές απαιτούν για την εκτέλεσή τους περισσότερες φάσεις απ' ότι οι απλές µικροεντολές (βλέπε σχήµα 3.21.γ). 3.2.4 ¶·Ú·Ì¤ÓˆÓ ¤ÏÂÁ¯Ô˜
Μέχρι τώρα υποθέσαµε ότι η επίδραση των πεδίων ελέγχου της µικροεντολής περιορίζεται στη χρονική περίοδο κατά τη διάρκεια της οποίας η µικροεντολή εκτελείται. Αυτός ο περιορισµός αίρεται αποθηκεύοντας το πεδίο ελέγχου σ' έναν καταχωρητή, ο οποίος συνεχίζει να ασκεί τον έλεγχο µέχρι να τροποποιηθεί µε µία άλλη µικροεντολή. Αυτή η τεχνική είναι ιδιαίτερα χρήσιµη όταν οι µικροεντολές χρησιµοποιούνται για να κατανέµουµε αγαθά του συστήµατος. Για παράδειγµα, η σύνδεση µεταξύ δύο µονάδων µπορεί να αποκατασταθεί µε µία µικροεντολή και διατηρείται για µία αυθαίρετα µεγάλη χρονική περίοδο µε τον παραµένοντα έλεγχο.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.7
Η µονάδα ελέγχου ενός επεξεργαστή απλού συνόλου εντολών αποφασίστηκε να υλοποιηθεί σαν ακολουθιακό κύκλωµα. Αναφέρετε και δικαιολογήστε ποια κωδικοποίηση των εσωτερικών καταστάσεων θα χρησιµοποιήσετε ώστε να πετύχετε τη µεγαλύτερη συχνότητα του σήµατος χρονισµού.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.8
Αναφέρετε τα πλεονεκτήµατα και τα µειονεκτήµατα υλοποίησης της µονάδας ελέγχου ενός επεξεργαστή µε τη µέθοδο του µικροπρογραµµατισµού.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.9
Αναφέρετε τρεις τεχνικές που µπορούν να χρησιµοποιηθούν για τη µείωση της απαιτούµενης χωρητικότητας της µνήµης ελέγχου.
™À¡√æ∏ ∫∂º∞§∞π√À
Θεωρήστε ότι σε έναν επεξεργαστή η µονάδα ελέγχου έχει σχεδιαστεί µε την τεχνική του µικροπρογραµµατισµού ενός επιπέδου. Θεωρήστε ότι κάθε µικροεντολή είναι των 100 δυαδικών ψηφίων, το σύνολο των µικροπρογραµµάτων καταλαµβάνει 2048 θέσεις της µνήµης ελέγχου και υπάρχουν 200 διαφορετικές µικροεντολές. Αν υλοποιήσουµε τη µνήµη ελέγχου µε την τεχνική του µικροπρογραµµατισµού δύο επιπέδων (νανοπρογραµµατισµός), τι θα κερδίσουµε και τι θα χάσουµε σε ταχύτητα και συνολική χωρητικότητα της µνήµης ελέγχου;
Θεωρήστε ότι σε έναν επεξεργαστή που η µονάδα ελέγχου είναι µικροπρογραµµατισµένη και χρησιµοποιεί κάθετες µικροεντολές έχουµε τη δυνατότητα να επανασχεδιάσουµε τη µονάδα ελέγχου και µόνον αυτή. Μπορούµε στην επανασχεδίαση να χρησιµοποιήσουµε οριζόντιες µικροεντολές; ∆ικαιολογήστε την απάντησή σας.
™‡ÓÔ„Ë ∂ÓfiÙËÙ·˜ Η Κεντρική Μονάδα Επεξεργασίας εκτελεί µία εντολή σε µία σειρά από βήµατα που αποτελούν τον κύκλο της εντολής. Η µονάδα ελέγχου σε κάθε βήµα του κύκλου εντολής παράγει ένα σύνολο σηµάτων ελέγχου που είναι υπεύθυνα για να γίνουν οι σωστές ενέργειες κατά τη διάρκεια αυτής της χρονικής περιόδου. Είδαµε ότι η µονάδα ελέγχου µπορεί να υλοποιηθεί σαν ένα σύγχρονο ακολουθιακό κύκλωµα ή µε την τεχνική του µικροπρογραµµατισµού. Στους υπολογιστές απλού συνόλου εντολών (RISC) η µονάδα ελέγχου υλοποιείται συνήθως σαν σύγχρονο ακολουθιακό κύκλωµα. ™‡ÓÔ„Ë ∫ÂÊ·Ï·›Ô˘ Η Μονάδα Επεξεργασίας ∆εδοµένων στους σύγχρονους επεξεργαστές αποτελείται από τη Μονάδα Επεξεργασίας ∆εδοµένων σταθερής υποδιαστολής και τη Μονάδα Επεξεργασίας ∆εδοµένων κινητής υποδιαστολής. Συνήθως η Μονάδα Επεξεργασίας ∆εδοµένων σταθερής υποδιαστολής περιλαµβάνει την Αριθµητική Λογική Μονάδα, ΑΛΜ, τους καταχωρητές γενικού σκοπού, τη µονάδα ολίσθησης, τη µονάδα πολλαπλασιασµού και τη µονάδα διαίρεσης. Μιλώντας για την ΑΛΜ ασχοληθήκαµε µε τον τρόπο µε τον οποίο ανιχνεύε-
115
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.10
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.11
116
∫ ∂ ¡ ∆ ƒ π ∫ ∏ ª √ ¡ ∞ ¢ ∞ ∂ ¶ ∂ • ∂ ƒ °∞ ™ π ∞ ™
ται η υπερχείλιση. Επίσης ασχοληθήκαµε λεπτοµερειακά µε το σχεδιασµό ενός συνόλου καταχωρητών ειδικού σκοπού µε δύο πόρτες ανάγνωσης και µία πόρτα εγγραφής. Μάθαµε έναν τρόπο σχεδιασµού ενός ολισθητή που µπορεί σε ένα βήµα να εκτελέσει οποιουδήποτε µεγέθους ολίσθηση. Όσον αφορά στον πολλαπλασιασµό είδαµε την υλοποίησή του µε διαδοχικές προσθέσεις και ολισθήσεις, καθώς και µία υλοποίηση µε υλικό αφιερωµένο ειδικά για την πράξη του πολλαπλασιασµού. Για τις πράξεις µεταξύ δεδοµένων κινητής υποδιαστολής είδαµε έναν αλγόριθµο για την εκτέλεση της πρόσθεσης και έναν για την εκτέλεση του πολλαπλασιασµού. Οι αλγόριθµοι αυτοί µπορούν να υλοποιηθούν µε ειδικό υλικό ή µε λογισµικό και τη χρήση της Μονάδας Επεξεργασίας ∆εδοµένων σταθερής υποδιαστολής. Η ΚΜΕ εκτελεί µία εντολή σε µία σειρά από βήµατα. Τα βήµατα αυτά αποτελούν τον κύκλο της εντολής. Ο κύκλος της εντολής αποτελείται από δύο φάσεις, τη φάση προσκόµισης εντολής και τη φάση εκτέλεσης εντολής. Η µονάδα ελέγχου σε κάθε χρονική περίοδο του κύκλου εντολής παράγει ένα σύνολο σηµάτων, που καλούνται σήµατα ελέγχου. Τα σήµατα ελέγχου που παράγονται στη φάση προσκόµισης εντολής έχουν ως συνέπεια την προσκόµιση της επόµενης προς εκτέλεση εντολής. Τα σήµατα ελέγχου που παράγονται κατά τη φάση εκτέλεσης της εντολής κατευθύνουν τα δεδοµένα στις κατάλληλες λειτουργικές µονάδες και επιλέγουν τις λειτουργίες που πρέπει να εκτελεστούν τη συγκεκριµένη χρονική περίοδο. Η µονάδα ελέγχου µπορεί να υλοποιηθεί σαν ένα σύγχρονο ακολουθιακό κύκλωµα ή µε την τεχνική του µικροπρογραµµατισµού. Όταν χρησιµοποιείται η τεχνική του µικροπρογραµµατισµού, τόσο η πληροφορία επιλογής των σηµάτων ελέγχου όσο και ένα µέρος της πληροφορίας που αφορά στη σειρά παραγωγής των σηµάτων αποθηκεύονται σε µία µνήµη άµεσης προσπέλασης, που καλείται µνήµη ελέγχου. Τρεις τεχνικές έχουν χρησιµοποιηθεί για τη µείωση της απαιτούµενης χωρητικότητας της µνήµης ελέγχου: α) χρησιµοποίηση περισσότερων της µίας µορφών µικροεντολών, β) οργάνωση δύο επιπέδων, νανοπρογραµµατισµός και γ) κωδικοποίηση των σηµάτων ελέγχου.
∫
™‡ÛÙËÌ· MÓ‹Ì˘
™ÎÔfi˜ Σκοπός του κεφαλαίου αυτού είναι να µάθετε πώς σχεδιάζεται ένα σύστηµα µνήµης, ποιες µονάδες µνήµης χρησιµοποιούνται για την υλοποίησή του και τους σκοπούς που επιδιώκουµε να πετύχουµε κατά το σχεδιασµό του συστήµατος µνήµης. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει αυτό το κεφάλαιο, θα µπορείτε να : • περιγράψετε τις µονάδες που χρησιµοποιούνται για την υλοποίηση του συστήµατος µνήµης • περιγράψετε τον τρόπο λειτουργίας του συστήµατος µνήµης • σχεδιάσετε ένα σύστηµα µνήµης που να ικανοποιεί τις απαιτούµενες προδιαγραφές ŒÓÓÔȘ ÎÏÂȉȿ • Hµιαγωγικές µνήµες προσπελάσιµες µε διευθύνσεις
• Kρυφές µνήµης άµεσης οργάνωσης
• Hµιαγωγικές µνήµες προσπελάσιµες βάσει του περιεχοµένου τους
• Kρυφές µνήµης µε οργάνωση πλήρους συσχέτισης
• Mαγνητικές µνήµες
• Kρυφές µνήµης µε οργάνωση τ–τρόπων συνόλου συσχέτισης
• Oπτικές µνήµες • Iεραρχία µνηµών
• Pυθµός µεταφοράς δεδοµένων µνήµης
• Kρυφή µνήµη ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Ο κύριος σκοπός στο σχεδιασµό ενός συστήµατος µνήµης είναι να προσφέρουµε επαρκή χωρητικότητα αποθήκευσης, διατηρώντας ένα αποδεκτό επίπεδο µέσης απόδοσης και επίσης χαµηλό µέσο κόστος ανά δυαδικό ψηφίο. Ο σκοπός αυτός µπορεί να επιτευχθεί µε τη χρησιµοποίηση ενός συνδυασµού από τις ακόλουθες τεχνικές.
4 ∂
º
∞
§
∞
π
√
118
™À™∆∏ª∞ ª¡∏ª∏™
• Χρησιµοποίηση ενός αριθµού από διαφορετικές µονάδες µνήµης µε διαφορετικούς λόγους κόστους/απόδοσης, που οργανώνονται κατά τέτοιο τρόπο ώστε να προσφέρουν υψηλή µέση απόδοση µε χαµηλό µέσο κόστος. Οι µονάδες µνήµης σ’ αυτή την περίπτωση σχηµατίζουν µια ιεραρχία, που ονοµάζεται ιεραρχία µνήµης. • Ανάπτυξη αυτόµατων µεθόδων κατανοµής του χώρου αποθήκευσης για να γίνει πιο αποδοτική χρήση του διαθέσιµου χώρου. • Ανάπτυξη ιδεατής–µνήµης (virtual–memory) για να απελευθερωθεί ο χρήστης από τη διαχείριση της µνήµης και να γίνουν τα προγράµµατα ανεξάρτητα από τη διαµόρφωση της φυσικής µνήµης. • Παροχή προστατευτικών µηχανισµών για να εµποδίσουµε κάποιο πρόγραµµα, που δεν έχει το δικαίωµα, να προσπελάσει ή να τροποποιήσει αποθηκευµένες πληροφορίες που ανήκουν σ’ άλλο πρόγραµµα. Το κεφάλαιο αυτό αποτελείται από τέσσερις ενότητες. Στην πρώτη ενότητα παρουσιάζονται διάφορες τεχνολογίες που χρησιµοποιούνται για την υλοποίηση του συστήµατος µνήµης. Επίσης για κάθε τεχνολογία παρουσιάζεται η δοµή, οργάνωση και λειτουργία µιας ή περισσότερων µονάδων µνήµης. Στη δεύτερη ενότητα παρουσιάζονται οι αρχές της ιεραρχίας µνήµης. Στην τρίτη ενότητα παρουσιάζεται αναλυτικά η κρυφή µνήµη µεταξύ ΚΜΕ και κύριας µνήµης. Τέλος, στην τέταρτη ενότητα παρουσιάζεται η οργάνωση της κύριας µνήµης.
∆∂á√§√°π∞ ª¡∏ªø¡
4.1 ∆¯ÓÔÏÔÁ›· ÌÓËÌÒÓ
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να µάθετε τις τεχνολογίες που χρησιµοποιούνται για την υλοποίηση του συστήµατος µνήµης. Επίσης να κατανοήσετε τα πλεονεκτήµατα και τα µειονεκτήµατα κάθε τεχνολογίας. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα µπορείτε να: • περιγράψετε τον τρόπο λειτουργίας κάθε µονάδας µνήµης • διακρίνετε τις διαφορές µεταξύ των µονάδων µνήµης που υλοποιούνται µε διαφορετικές τεχνολογίες • επιλέγετε σε κάθε περίπτωση τη σωστή µονάδα µνήµης βασιζόµενοι στα χαρακτηριστικά κάθε µονάδας µνήµης • σχεδιάζετε ηµιαγωγικές µνήµες άµεσης προσπέλασης, προσπελάσιµες µε διευθύνσεις, χρησιµοποιώντας ολοκληρωµένα κυκλώµατα µικρότερης χωρητικότητας ή και µικρότερου αριθµού δυαδικών ψηφίων ανά θέση µνήµης ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή αποτελείται από τρεις υποενότητες. Στην πρώτη υποενότητα παρουσιάζονται οι ηµιαγωγικές µνήµες που προσπελαύνονται µε διευθύνσεις και οι ηµιαγωγικές µνήµες που προσπελαύνονται ανάλογα µε το περιεχόµενό τους. Στη δεύτερη υποενότητα παρουσιάζονται οι µαγνητικές µνήµες και στην τρίτη υποενότητα παρουσιάζονται οι οπτικές µνήµες. 4.1.1 ∏ÌÈ·ÁˆÁÈΤ˜ ÌӋ̘
∏ªπ∞°ø°π∫∂™ ª¡∏ª∂™ ∞ª∂™∏™ ¶ƒ√™¶∂§∞™∏™ ¶ƒ√™¶∂§∞™πª∂™ ª∂ ¢π∂À£À¡™∂π™ (RANDOM ACCESS MEMORIES, RAM)
Οι ηµιαγωγικές µνήµες αυτής της κατηγορίας αποτελούνται από κυψελίδες, από τις οποίες χρησιµοποιείται για την αποθήκευση ενός δυαδικού ψηφίου, από αποκωδικοποιητές και κυκλώµατα ενίσχυσης ηλεκτρικών σηµάτων. Πριν ασχοληθούµε µε τη δοµή µιας µνήµης, θα ασχοληθούµε µε τη δοµή της κυψελίδας.
119
™À™∆∏ª∞ ª¡∏ª∏™
120
Μία περιγραφή της λειτουργικής συµπεριφοράς της κυψελίδας σε επίπεδο λογικών πυλών δίνεται στο σχήµα 4.1. Από το σχήµα αυτό παρατηρούµε ότι η κυψελίδα αποτελείται από ένα φλιπ–φλοπ για την αποθήκευση της πληροφορίας και πρόσθετες λογικές πύλες, που επιτρέπουν την επιλογή και την ανάγνωση ή εγγραφή του δυαδικού ψηφίου που είναι αποθηκευµένο στη συγκεκριµένη κυψελίδα. Όταν η γραµµή «επιλογή» έχει τη λογική τιµή 1 και η γραµµή «εγγραφή» έχει τη λογική τιµή 0, τότε η έξοδος της πύλης AND έχει την τιµή 0, εποµένως η τιµή της γραµµής «είσοδος» του φλιπ–φλοπ δεν αποθηκεύεται στο φλιπ–φλοπ. H πύλη τριών καταστάσεων 1 όµως περνάει την τιµή εισόδου της στην έξοδό της και εποµένως γίνεται ανάγνωση του περιεχοµένου της κυψελίδας. Όταν τόσο η γραµµή «επιλογή» όσο και η γραµµή «εγγραφή» έχουν τη λογική τιµή 1, τότε η έξοδος της πύλης AND παίρνει τη λογική τιµή ένα και εποµένως η τιµή της γραµµής «είσοδος δεδοµένων» αποθηκεύεται στο φλιπ–φλοπ. Σηµειώστε ότι στην τελευταία περίπτωση και πάλι η τιµή εισόδου της πύλης τριών καταστάσεων περνάει στην έξοδό της. Το πρόβληµα αντιµετωπίζεται στο επίπεδο της µνήµης που αποτελείται από πολλές κυψελίδες. επιλογή
είσοδοςz δεδοµένων
D
Q
1
clk ™¯‹Ì· 4.1
Κυψελίδα ηµιαγωγικής µνήµης άµεσης προσπέλασης, προσπελάσιµης µε διευθύνσεις.
εγγραφή
Στο σχήµα 4.2 δίνεται η γενική µορφή µιας ηµιαγωγικής µνήµης των 16 δυαδικών ψηφίων, όπου σε κάθε εγγραφή ή ανάγνωση αποθηκεύεται ή διαβάζεται αντίστοιχα µία λέξη των τεσσάρων δυαδικών ψηφίων. Εποµένως στη µνήµη αποθηκεύονται τέσσερις λέξεις των τεσσάρων δυαδικών ψηφίων η καθεµία, άρα απαιτούνται δύο δυαδικά ψηφία, Α0 και Α1, για τη διευθυν-
∆∂á√§√°π∞ ª¡∏ªø¡
121
σιοδότησή της που οδηγούν έναν αποκωδικοποιητή 2–σε–4. Στο σχήµα 4.2, όταν η γραµµή «επιλογή ολ.» έχει τη λογική τιµή 0, τότε τόσο η έξοδος της πύλης AND 1, δηλαδή η γραµµή «εγγραφή», όσο και η έξοδος της πύλης AND 2 έχουν τη λογική τιµή µηδέν. Εποµένως δεν λαµβάνει χώρα εγγραφή στη µνήµη αφού η γραµµή «εγγραφή» έχει τη λογική τιµή 0, αλλά ούτε και ανάγνωση, αφού όλες οι πύλες εξόδου τριών καταστάσεων (σηµειώνονται µε x στο σχήµα 4.2) είναι σε κατάσταση υψηλής αντίστασης.
0
1 A0 αποκωδικοποιητής A1 2
3 εγγραφή Eγγ/Aναγz επιλογή ολ
1
2 Eισ/Eξ3
Eισ/Eξ2
Eισ/Eξ1
Eισ/Eξ0 ™¯‹Ì· 4.2
Ηµιαγωγική µνήµη άµεσης προσπέλασης, προσπελάσιµη µε διευθύνσεις. Οι κυψελίδες έχουν διαταχθεί στο χώρο µε τη διάταξη που εµφανίζεται στο σχήµα 4.1
122
™À™∆∏ª∞ ª¡∏ª∏™
Ας υποθέσουµε τώρα ότι η τιµή της γραµµής “επιλογή ολ.” έχει τη λογική τιµή 1 και ότι Α0 =1 και Α1=0. Τότε ο αποκωδικοποιητής ενεργοποιεί την υπ’ αριθµόν ένα γραµµή της εξόδου. Θα εξετάσουµε δύο περιπτώσεις. α. Εάν η γραµµή “Εγγ/Αναγ” έχει τη λογική τιµή 0, τότε η έξοδος της πύλης AND 1, γραµµή “εγγραφή”, έχει τη λογική τιµή 0 και εποµένως δεν γίνεται εγγραφή στις κυψελίδες της µνήµης, αλλά το περιεχόµενο κάθε κυψελίδας της γραµµής 1 εµφανίζεται στην έξοδο της κυψελίδας. Η έξοδος της πύλης AND 2 έχει τη λογική τιµή 1, οπότε οι πύλες εξόδου τριών καταστάσεων x περνάνε στην έξοδό τους τις τιµές που υπάρχουν στις εισόδους τους, δηλαδή το περιεχόµενο της υπ’ αριθµόν 1 γραµµής κυψελίδων. β. Εάν η γραµµή “Εγγ/Αναγ” έχει τη λογική τιµή 1 τότε η έξοδος της πύλης AND 1, γραµµή “εγγραφή”, έχει την τιµή ένα, οπότε ότι υπάρχει στις γραµµές εισόδου/εξόδου της µνήµης εγγράφεται στις κυψελίδες της υπ’ αριθµόν ένα γραµµής. Όπως εξηγήσαµε κατά την περιγραφή της λειτουργίας της κυψελίδας της µνήµης, σχήµα 4.1, σ’ αυτή την περίπτωση το δυαδικό ψηφίο που είναι αποθηκευµένο στην κυψελίδα εµφανίζεται στην έξοδό της. Αν οι τιµές αυτές έφταναν στις γραµµές “Εισ/Εξ” της µνήµης, στις οποίες έχουµε θέσει τις τιµές που θέλουµε να αποθηκευτούν στη θέση µνήµης µε διεύθυνση Α0=1 και Α1=0, τότε θα δηµιουργούνταν πρόβληµα. Αυτό όµως δεν συµβαίνει. Επειδή η έξοδος της πύλης AND 2 έχει τη λογική τιµή 0, οι πύλες τριών καταστάσεων x είναι σε κατάσταση υψηλής αντίστασης και εποµένως δεν επιτρέπουν στις τιµές των εισόδων τους να περάσουν στις εξόδους τους. Συνήθως η χωρητικότητα της απαιτούµενης µνήµης είναι τόσο µεγάλη που δεν µπορεί να υλοποιηθεί µε ένα ολοκληρωµένο κύκλωµα µνήµης. Σ’ αυτή την περίπτωση απαιτείται η χρησιµοποίηση περισσότερων ολοκληρωµένων κυκλωµάτων µνήµης. Για παράδειγµα, θεωρούµε ότι έχουµε στη διάθεσή µας ολοκληρωµένα κυκλώµατα µνήµης χωρητικότητας 1 Μbyte µε εσωτερική οργάνωση µιας ψηφιολέξης ανά θέση µνήµης και ότι θέλουµε να σχεδιάσουµε ένα σύστηµα µνήµης των 16 Mbytes µε µία ψηφιολέξη ανά θέση µνήµης. Στο σχήµα 4.3 δίνεται η δοµή του ζητούµενου συστήµατος µνήµης. Παρατηρούµε ότι η αποκωδικοποίηση των 4 πιο σηµαντικών δυαδικών ψηφίων της διεύθυνσης αποτελεί το σήµα επιλογής EO για κάθε ολοκληρωµένο µεγέθους 1Mbyte, ενώ τα υπόλοιπα 20 δυαδικά ψηφία επιλέγουν κάποια από τις 220 ψηφιολέξεις εντός του επιλεγµένου ολοκληρωµένου κυκλώµατος.
∆∂á√§√°π∞ ª¡∏ªø¡
123
™¯‹Ì· 4.3
Ηµιαγωγική µνήµη 16 Mbytes µε µία ψηφιολέξη ανά θέση µνήµης υλοποιηµένη µε 16 ολοκληρωµένα κυκλώµατα µνήµης 1 Mbyte το καθένα.
Υπάρχουν επίσης περιπτώσεις όπου στα ολοκληρωµένα κυκλώµατα, που έχουµε στη διάθεσή µας, το πλήθος των δυαδικών ψηφίων ανά θέση µνήµης είναι µικρότερο από το ζητούµενο. Για παράδειγµα, θεωρούµε ότι έχουµε στη διάθεσή µας, ολοκληρωµένα κυκλώµατα µνήµης χωρητικότητας 1 Μbytes µε µια ψηφιολέξη ανά θέση µνήµης και ότι θέλουµε να σχεδιάσουµε ένα σύστηµα µνήµης των 32 Mbytes µε δύο ψηφιολέξεις ανά θέση µνήµης. Στο σχήµα 4.4 δίνεται η δοµή του ζητούµενου συστήµατος µνήµης. Τα 4 περισσότερο σηµαντικά ψηφία της διεύθυνσης µέσω του αποκωδικοποιητή από 4 σε 16 χρησιµοποιούνται για να επιλέξουν ένα ζεύγος από ολοκληρωµένα κυκλώµατα µνήµης. Συνολικά η µνήµη µας απαρτίζεται από 16 τέτοια ζεύγη, που προφανώς µας δίνουν την απαιτούµενη χωρητικότητα των
™À™∆∏ª∞ ª¡∏ª∏™
124
16 ¥ 2 ¥ 1 Mbyte = 32 Mbytes. Σε κάθε ζεύγος το ένα ολοκληρωµένο κύκλωµα µνήµης αποθηκεύει τη σηµαντικότερη ψηφιολέξη, ενώ το άλλο αποθηκεύει τη λιγότερο σηµαντική ψηφιολέξη.
™¯‹Ì· 4.4
Ηµιαγωγική µνήµη 32 Mbytes µε δύο ψηφιολέξεις ανά θέση µνήµης υλοποιηµένη µε 32 ολοκληρωµένα κυκλώµατα µνήµης 1 Mbyte το καθένα.
∆∂á√§√°π∞ ª¡∏ªø¡
∏ªπ∞°ø°π∫∂™ ª¡∏ª∂™ ¶ƒ√™¶∂§∞™πª∂™ ∞¡∞§√°∞ ª∂ ∆√ ¶∂ƒπ∂Ã√ª∂¡√ ∆√À™ (CONTENT ADDRESSABLE MEMORIES, CAM)
Οι µνήµες αυτές αναφέρονται συχνά και σαν συσχετιστικές (associative). Στη γενική περίπτωση οι µνήµες αυτές είναι οργανωµένες µε τέτοιο τρόπο ώστε να αποθηκεύουν έναν αριθµό από µονάδες πληροφορίας, λέξεις, καθεµία από τις οποίες αποτελείται από ένα σταθερό αριθµό δυαδικών ψηφίων, που είναι ίδιος για όλες τις λέξεις. Μπορούµε να ορίσουµε κάποια συγκεκριµένα δυαδικά ψηφία, τα ίδια για όλες τις λέξεις, τα οποία χρησιµοποιούνται σαν κλειδί για το ψάξιµο και την προσπέλαση της πληροφορίας που είναι αποθηκευµένη στα υπόλοιπα δυαδικά ψηφία. Στη γενική περίπτωση οι µνήµες αυτές είναι κατασκευασµένες µε τέτοιο τρόπο ώστε για κάθε προσπέλαση να µπορούµε να ορίσουµε ποια θα είναι τα δυαδικά ψηφία της λέξης που θα χρησιµοποιηθούν σαν κλειδί γράφοντας σε έναν καταχωρητή της µνήµης, που καλείται καταχωρητής µάσκας (mask register). Είναι δυνατόν περισσότερες από µία µονάδες πληροφορίας να έχουν το ίδιο κλειδί και εποµένως, όταν ζητηθεί η πληροφορία που συνδέεται µε αυτό το κλειδί, περισσότερες από µία λέξεις πρέπει να προσπελαστούν, µε κάποια προκαθορισµένη σειρά που καθορίζεται από την υποµονάδα επιλογής. Η δοµή της µνήµης που περιγράψαµε δίνεται σε γενικές γραµµές στο σχήµα 4.5. Επειδή το κλειδί αναζήτησης απαιτείται να συγκρίνεται ταυτόχρονα µε όλα τα κλειδιά που είναι αποθηκευµένα στη µνήµη, κάθε λέξη πρέπει να έχει το δικό της κύκλωµα σύγκρισης. Επίσης επειδή στη γενική περίπτωση, όπως αναφέραµε, το περιεχόµενο κάθε κυψελίδας µπορεί να χρησιµοποιηθεί σαν κλειδί, κάθε κυψελίδα πρέπει να διαθέτει λογική σύγκρισης. Αυτά τα επιπλέον κυκλώµατα καθιστούν τις ηµιαγωγικές µνήµες που προσπελαύνονται βάσει του περιεχόµενου τους σηµαντικά πιο δαπανηρές από τις ηµιαγωγικές µνήµες που προσπελαύνονται µε διευθύνσεις. Το λογικό κύκλωµα µιας κυψελίδας δίνεται στο σχήµα 4.6. Όταν µια κυψελίδα έχει επιλεγεί ώστε το δυαδικό ψηφίο που έχει αποθηκευµένο να αντιστοιχεί σε ένα δυαδικό ψηφίο του κλειδιού, τότε η γραµµή “δυαδικό ψηφίο µάσκας” έχει τη λογική τιµή 1, ενώ σε αντίθετη περίπτωση έχει τη λογική τιµή 0.
125
™À™∆∏ª∞ ª¡∏ª∏™
126
™¯‹Ì· 4.5
∆οµή ηµιαγωγικής µνήµης προσπελάσιµης βάσει του περιεχοµένου της.
∆∂á√§√°π∞ ª¡∏ªø¡
127
D
Q
clk
™¯‹Ì· 4.6
∆οµή κυψελίδας ηµιαγωγικής µνήµης προσπελάσιµης βάσει του περιεχοµένου της.
Ας υποθέσουµε ότι η γραµµή «δυαδικό ψηφίο µάσκας» έχει τη λογική τιµή 1. Τότε η γραµµή «είσοδος δεδοµένων» έχει την τιµή του δυαδικού ψηφίου του κλειδιού αναζήτησης που αντιστοιχεί στο δυαδικό ψηφίο του αποθηκευµένου κλειδιού. Τα δύο δυαδικά ψηφία συγκρίνονται και εάν είναι ίδια η έξοδος της πύλης XOR (αποκλειστικό–ή) παίρνει τη λογική τιµή µηδέν. Εποµένως, εάν το συγκεκριµένο αποθηκευµένο δυαδικό ψηφίο δεν αποτελεί δυαδικό ψηφίο του κλειδιού ή είναι ταυτοτικό του αντίστοιχου δυαδικού ψηφίου του κλειδιού αναζήτησης, τότε η γραµµή εξόδου «ταυτοσηµότητα» της κυψελίδας παίρνει την τιµή 0. Εάν όλες οι έξοδοι ταυτοσηµότητας των κυψελίδων που αντιστοιχούν σε µία λέξη (βλέπε σχήµα 4.7) έχουν την τιµή µηδέν, που σηµαίνει ότι το κλειδί της συγκεκριµένης λέξης i είναι ταυτοτικό µε το κλειδί αναζήτησης, τότε η γραµµή Τi θα πάρει την τιµή 0. Σ’ αυτή την περίπτωση η υποµονάδα επιλογής (βλέπε σχήµα 4.5) θα θέσει τη γραµµή Εi στη λογική τιµή ένα. Εάν η γραµµή «εγγραφή» έχει την τιµή ένα, τότε γίνεται εγγραφή στη λέξη i της πληροφορίας που υπάρχει στις γραµµές εισόδου «Εισ.». Εάν η γραµµή «εγγραφή» έχει την τιµή µηδέν, τότε στις γραµµές εξόδου «Εξ.0», «Εξ.1», «Εξ.2» και «Εξ.3» θα εµφανιστεί το περιεχόµενο της λέξης i.
128
™¯‹Ì· 4.7
Υποµονάδα αποθήκευσης δυαδικών ψηφίων µιας ηµιαγωγικής µνήµης προσπελάσιµης βάσει του περιεχοµένου της.
™À™∆∏ª∞ ª¡∏ª∏™
∆∂á√§√°π∞ ª¡∏ªø¡
129
4.1.2 ª·ÁÓËÙÈΤ˜ ÌӋ̘
ª¡∏ª∂™ ª∞°¡∏∆π∫ø¡ ¢π™∫ø¡
Όπως δηλώνει και το όνοµα, στις µνήµες µαγνητικών δίσκων η αποθήκευση της πληροφορίας γίνεται πάνω σε έναν ή περισσότερους δίσκους, η επιφάνεια των οποίων έχει επικαλυφθεί µε µαγνητικό υλικό. Η εγγραφή της πληροφορίας γίνεται κατά µήκος οµόκεντρων κύκλων (tracks), βλέπε σχήµα 4.8.α. Κάθε επιφάνεια έχει χιλιάδες οµόκεντρους κύκλους και κάθε οµόκεντρος κύκλος διαιρείται σε τµήµατα (sectors). Σε κάθε τµήµα αποθηκεύεται µία σταθερή ποσότητα πληροφορίας. Ο έλεγχος της µνήµης είναι απλούστερος εάν όλοι οι οµόκεντροι κύκλοι αποθηκεύουν την ίδια ποσότητα πληροφορίας. Σ’ αυτή την περίπτωση η πυκνότητα εγγραφής, δυαδικά ψηφία ανά εκατοστό του µέτρου, στους εξωτερικούς κύκλους είναι µικρότερη από τη µέγιστη δυνατή.
™¯‹Ì· 4.8
H µονάδα µαγνητικού δίσκου όπως φαίνεται από πάνω και από τα πλάγια.
™À™∆∏ª∞ ª¡∏ª∏™
130
Όταν υπάρχουν περισσότεροι από ένας δίσκοι, αυτοί στηρίζονται σε έναν κάθετο άξονα που περνάει από το κέντρο τους. Κατά τη διάρκεια της λειτουργίας οι δίσκοι περιστρέφονται µε σταθερή ταχύτητα. Σε κάθε επιφάνεια αντιστοιχεί τουλάχιστον µία κεφαλή ανάγνωσης/εγγραφής. Ας υποθέσουµε αρχικά ότι σε κάθε επιφάνεια αποθήκευσης πληροφορίας υπάρχει µόνο µία κεφαλή. Όλες οι κεφαλές στηρίζονται σε έναν κάθετο βραχίονα ώστε να µετακινούνται όλες µαζί (βλέπε σχήµα 4.8.β). Ο βραχίονας αυτός µετακινείται ώστε όλες οι κεφαλές να τοποθετούνται σε οµόκεντρους κύκλους µε την ίδια ακτίνα. Σε ένα υπολογιστικό σύστηµα είναι δυνατόν να υπάρχουν περισσότερες από µια µονάδες µαγνητικών δίσκων. Ανάλογα κάθε µονάδα µαγνητικών δίσκων µπορεί να έχει και τον ελεγκτή της (disk controller) ή ένας ελεγκτής να ελέγχει τη λειτουργία περισσότερων µονάδων µαγνητικών δίσκων. Για να γίνει η µεταφορά µιας ποσότητας πληροφορίας από µία µονάδα µαγνητικών δίσκων στην κύρια µνήµη, θα πρέπει να δηλωθεί η διεύθυνση της θέσης της κύριας µνήµης στην οποία θα αποθηκευτεί το πρώτο τµήµα πληροφορίας, η ποσότητα της πληροφορίας που θα µεταφερθεί, η µονάδα µαγνητικών δίσκων που περιέχει την πληροφορία και η διεύθυνση από την οποία αρχίζει η πληροφορία στη συγκεκριµένη µονάδα µαγνητικών δίσκων, δηλαδή οµόκεντρος κύκλος, επιφάνεια και τµήµα. Όταν στον υπολογιστή εκτελείται µία εντολή εισόδου, δηλαδή, µία εντολή ανάγνωσης από µία µονάδα µαγνητικών δίσκων, το λειτουργικό σύστηµα αναλαµβάνει να στείλει όλη την παραπάνω πληροφορία στον ελεγκτή των µονάδων µαγνητικών δίσκων. Από τη στιγµή που η µονάδα µαγνητικών δίσκων δέχεται τα απαιτούµενα σήµατα από τον ελεγκτή της µέχρι να αρχίσει η µεταφορά πληροφορίας παρέρχεται ένα χρονικό διάστηµα που διακρίνουµε σε δύο συνιστώσες, το χρόνο αναζήτησης και το χρόνο αναµονής. • Xρόνος αναζήτησης (seek time). Είναι ο χρόνος που απαιτείται για να µετακινηθεί η κεφαλή ανάγνωσης/ εγγραφής και να τοποθετηθεί στον οµόκεντρο κύκλο που περιέχει το πρώτο κοµµάτι της ζητούµενης πληροφορίας. Αυτός ο χρόνος προφανώς εξαρτάται από την αρχική θέση της κεφαλής σχετικά µε τη νέα θέση στην οποία πρέπει να τοποθετηθεί. • Xρόνος αναµονής (latency time ή rotational delay). Είναι ο χρόνος που περνάει από τη στιγµή που η κεφαλή
∆∂á√§√°π∞ ª¡∏ªø¡
ανάγνωσης/εγγραφής τοποθετήθηκε στο σωστό οµόκεντρο κύκλο µέχρι η αρχή του τµήµατος που περιέχει το πρώτο µέρος της πληροφορίας, που πρέπει να διαβαστεί, να βρεθεί κάτω από την κεφαλή ανάγνωσης/εγγραφής. Το άθροισµα του χρόνου αναζήτησης και του χρόνου αναµονής καλείται χρόνος προσπέλασης (access time). Οι µονάδες µαγνητικών δίσκων, τη λειτουργία των οποίων περιγράψαµε παραπάνω, έχουν µία κεφαλή ανάγνωσης/εγγραφής ανά επιφάνεια. Υπάρχουν µονάδες µαγνητικών δίσκων που έχουν περισσότερες κεφαλές ανά επιφάνεια. Είναι προφανές ότι στις µονάδες αυτές ο χρόνος αναζήτησης είναι µικρότερος, διότι η πιθανότητα µία κεφαλή ανάγνωσης/εγγραφής να βρίσκεται κοντά στο ζητούµενο οµόκεντρο κύκλο είναι µεγαλύτερη. Όλες οι µονάδες που περιγράφτηκαν παραπάνω καλούνται µονάδες µαγνητικών δίσκων µε κινούµενη ή κινούµενες κεφαλές (moving–head disks). Υπάρχουν επίσης δίσκοι που σε κάθε οµόκεντρο κύκλο αντιστοιχεί και µία κεφαλή ανάγνωσης/εγγραφής. Σ’ αυτή την περίπτωση ο χρόνος αναζήτησης είναι µηδενικός. Οι µονάδες αυτές καλούνται µονάδες µαγνητικών δίσκων µε σταθερή κεφαλή (fixed–head disks). Όλες οι παραπάνω µονάδες µαγνητικών δίσκων καλούνται σκληροί δίσκοι (hard disks). Υπάρχουν και οι δισκέτες (floppy disks), που είναι µονάδες δίσκων πολύ χαµηλού κόστους. Η δισκέτα στην οποία αποθηκεύεται η πληροφορία κατασκευάζεται από εύκαµπτο πλαστικό υλικό, επικαλύπτεται από µαγνητικό υλικό και φυλάσσεται σε σκληρό πλαστικό κάλυµµα µε ένα παράθυρο διαµέσου του οποίου γίνεται η ανάγνωση και η εγγραφή από την κεφαλή ανάγνωσης/εγγραφής. Η χωρητικότητα της δισκέτας είναι µικρή, 1.4 ΜΒ, αλλά και η τιµή αγοράς είναι µικρή και η δισκέτα αφαιρείται και αντικαθίσταται από άλλη. ª¡∏ª∂™ ª∞°¡∏∆π∫∏™ ∆∞π¡π∞™.
Η µονάδα µνήµης µαγνητικής ταινίας είναι µία από τις παλαιότερες και φθηνότερες µορφές µνήµης. Η κύρια χρήση της σήµερα είναι ως µνήµη υποστήριξης (back up storage), δηλαδή αποθήκευση της πληροφορίας ώστε, αν συµβεί κάποια βλάβη σε κάποια µονάδα µαγνητικών δίσκων, να έχουµε αντίγραφο της πληροφορίας. Το υλικό πάνω στο οποίο γίνεται η αποθήκευση της πληροφορίας αποτελείται από µία πλαστική ταινία που έχει επικαλυφθεί µε µαγνητικό υλικό και είναι τοποθετηµένη µέσα σε µία κασέτα. Η κασέτα µε την ται-
131
™À™∆∏ª∞ ª¡∏ª∏™
132
νία µοιάζει µε τις κασέτες που αποθηκεύουµε µουσική, µόνο που εδώ δεν αποθηκεύεται αναλογικός ήχος, αλλά δυαδική ψηφιακή πληροφορία. Το εύρος της µαγνητικής ταινίας είναι 6.35 χιλιοστά του µέτρου, ενώ το µήκος της είναι περίπου 200 µέτρα. Τα δεδοµένα αποθηκεύονται κατά µήκος της ταινίας. Σε παλαιότερες µονάδες µαγνητικής ταινίας αποθηκεύονταν παράλληλα 9 δυαδικά ψηφία, 8 δυαδικά ψηφία πληροφορίας και ένα δυαδικό ψηφίο ισοτιµίας. Στις σύγχρονες µονάδες αποθηκεύονται παράλληλα εκατοντάδες δυαδικών ψηφίων και µία κεφαλή ανάγνωσης/εγγραφής µπορεί να προσπελάσει ταυτόχρονα όλα αυτά τα δυαδικά ψηφία. Μεταφορά δεδοµένων λαµβάνει χώρα όταν η ταινία µετακινείται µε σταθερή ταχύτητα ως προς την κεφαλή ανάγνωσης/εγγραφής. Εποµένως, η ταχύτητα εγγραφής εξαρτάται από την πυκνότητα εγγραφής κατά µήκος της ταινίας και την ταχύτητα µετακίνησης της ταινίας. Η πληροφορία που αποθηκεύεται στη µαγνητική ταινία οργανώνεται σε µπλοκ. Μεταξύ δύο διαδοχικών µπλοκ αφήνεται ένα σχετικά µεγάλο κενό για να µπορεί η ταινία να σταµατάει και να ξεκινάει µεταξύ των µπλοκ. Λόγω των κενών µεταξύ των µπλοκ και του χρόνου που απαιτείται για να ξεκινήσει και να σταµατήσει η ταινία µεταξύ προσπελάσεων, ο πραγµατικός ρυθµός µεταφοράς δεδοµένων (effective data–transfer rate), που γίνεται αντιληπτός από το χρήστη, είναι µικρότερος από το µέγιστο ρυθµό που δίνεται από τον κατασκευαστή. 4.1.3 √ÙÈΤ˜ ÌӋ̘
Αυτές οι µνήµες συνήθως χρησιµοποιούν οπτικούς δίσκους, που αποθηκεύουν δυαδική πληροφορία σε οµόκεντρους κύκλους ή σε σπειροειδή καµπύλη στην περίπτωση των CD–ROMs, σε έναν ηλεκτροµηχανικά περιστρεφόµενο δίσκο. Η πληροφορία διαβάζεται και γράφεται οπτικά µε λέιζερ. Οι οπτικοί δίσκοι προσφέρουν εξαιρετικά µεγάλη χωρητικότητα, αλλά οι ρυθµοί προσπέλασης είναι γενικώς µικρότεροι απ’ ό,τι στους µαγνητικούς δίσκους. Η πιο γνωστή οπτική µνήµη είναι το CD–ROM, που είναι µια µνήµη µόνο ανάγνωσης. Η χωρητικότητα ενός στάνταρτ 12 εκατοστών CD–ROM είναι περίπου 600 ΜΒ, δηλαδή µπορεί να αποθηκεύσει 240.000 σελίδες κειµένου. Ο χρόνος προσπέλασης είναι περίπου 100 ms και τα δεδοµένα µεταφέρονται µε ρυθµό 3.6 ΜΒ/s (σε είκοσι–τετραπλής ταχύτητας CD–ROM). Υπάρχουν σχετικά χαµηλού κόστους συσκευές που δίνουν τη δυνατότητα στο χρήστη να γράψει σε ένα κενό CD.
∆∂á√§√°π∞ ª¡∏ªø¡
133
Πρόσφατα εµφανίστηκε στην αγορά ένα νέο είδος CD που καλείται ψηφιακός βιντεο–δίσκος (digital video disk, DVD). Κυκλοφορεί σε δύο τύπους, µόνο ανάγνωσης και ανάγνωσης/εγγραφής και η χωρητικότητά του φτάνει τα 16 GB. Μερικά είδη διατάξεων βοηθητικής µνήµης συνδυάζουν µαγνητικές και οπτικές µεθόδους εγγραφής. Μία µνήµη µαγνητο–οπτικών δίσκων χρησιµοποιεί περιστρεφόµενους δίσκους που αποθηκεύουν την πληροφορία σε µαγνητική µορφή αλλά προσπελαύνονται από µία ακτίνα λέιζερ, όπως στις µονάδες CD–ROM.
Υπάρχουν εφαρµογές στις οποίες δεν έχει νόηµα οποιαδήποτε δυαδικά ψηφία της λέξης µιας ηµιαγωγικής µνήµης προσπελάσιµης ανάλογα του περιεχοµένου της να µπορούν να χρησιµοποιηθούν σαν κλειδί. Σ’ αυτή την περίπτωση τα δυαδικά ψηφία της λέξης που χρησιµοποιούνται σαν κλειδί είναι πάντοτε τα ίδια. Σαν παράδειγµα µπορούµε να αναφέρουµε την κρυφή µνήµη µε οργάνωση πλήρους συσχέτισης, για την οποία θα µιλήσουµε στην Ενότητα 4.3. Τότε η κυψελίδα που χρησιµοποιείται για την αποθήκευση ενός δυαδικού ψηφίου που αντιστοιχεί στο κλειδί µπορεί να απλοποιηθεί. Σχεδιάστε την απλοποιηµένη κυψελίδα χρησιµοποιώντας σαν αφετηρία την κυψελίδα του σχήµατος 4.6.
Σχεδιάστε µία µονάδα µνήµης, προσπελάσιµη µε διευθύνσεις, χωρητικότητας 32 Mψηφιολέξεις (32Mbytes) και 16 δυαδικών ψηφίων ανά θέση µνήµης χρησιµοποιώντας ολοκληρωµένα κυκλώµατα µνήµης των 8 Μψηφιολέξεων µε εσωτερική οργάνωση οκτώ δυαδικών ψηφίων ανά λέξη.
α. Συγκρίνετε από πλευράς κόστους υλοποίησης τις κυψελίδες των σχηµάτων 4.1 και 4.6. β. Λαµβάνοντας υπόψη τα σχήµατα 4.2 και 4.5 συγκρίνετε από πλευράς κόστους υλοποίησης δύο ηµιαγωγικές µνήµες της ίδιας χωρητικότητας, από τις οποίες η µία είναι προσπελάσιµη µε διευθύνσεις και η άλλη ανάλογα του περιεχοµένου της.
¢Ú·ÛÙËÚÈfiÙËÙ· 4.1
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.1
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.2
™À™∆∏ª∞ ª¡∏ª∏™
134
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.3
Τι είναι σωστό και τι λάθος από τα παρακάτω: α. Η µονάδα µνήµης µαγνητικών δίσκων και µαγνητικής ταινίας είναι σειριακής προσπέλασης. β. Οι µονάδες µνήµης µαγνητικών δίσκων σταθερής κεφαλής έχουν µικρότερο χρόνο προσπέλασης από τις αντίστοιχες µονάδες µνήµης κινητής κεφαλής.
™‡ÓÔ„Ë ÂÓfiÙËÙ·˜ Οι κύριες φυσικές ιδιότητες της ύλης που χρησιµοποιούνται για την αποθήκευση της πληροφορίας είναι οι ηλεκτρονικές, οι µαγνητικές και οι οπτικές και οι αντίστοιχες µνήµες που προκύπτουν καλούνται ηµιαγωγικές, µαγνητικές και οπτικές. Από τις πλέον γνωστές σήµερα ηµιαγωγικές µνήµες είναι: α) Οι µνήµες που σε κάθε θέση τους αντιστοιχεί µία διεύθυνση που χρησιµοποιείται για την προσπέλασή της. Αυτές οι ηµιαγωγικές µνήµες διακρίνονται σε δύο κατηγορίες, τις µνήµες ανάγνωσης /εγγραφής (SRAM, DRAM κλπ), για τις οποίες µιλήσαµε σ' αυτή την ενότητα και τις µνήµες µόνο ανάγνωσης (ROM), για τις οποίες είπαµε λίγα λόγια στο Κεφάλαιο 1. Στις περιπτώσεις που η χωρητικότητα της απαιτούµενης µνήµης είναι τόσο µεγάλη που δεν µπορεί να υλοποιηθεί µε ένα ολοκληρωµένο κύκλωµα µνήµης, χρησιµοποιούµε περισσότερα ολοκληρωµένα κυκλώµατα µνήµης, που τα συνδέουµε κατάλληλα στην αρτηρία διευθύνσεων και δεδοµένων. β) Οι µνήµες που προσπελαύνονται ανάλογα µε το περιεχόµενό τους. Σ' αυτές τις µνήµες ένα τµήµα κάθε θέσης µνήµης, δηλαδή ένας αριθµός από δυαδικά ψηφία, αποτελεί το κλειδί της συγκεκριµένης θέσης µνήµης. Η προσπέλαση κάθε θέσης µνήµης βασίζεται στη χρήση του κλειδιού. Το κόστος υλοποίησης µνηµών που προσπελαύνονται ανάλογα του περιεχοµένου τους είναι σηµαντικά µεγαλύτερο του κόστους υλοποίησης µνηµών που προσπελαύνονται µε διευθύνσεις. Από τις πλέον γνωστές µαγνητικές µνήµες είναι οι µνήµες µαγνητικών δίσκων και οι µνήµες µαγνητικής ταινίας. Στις µνήµες µαγνητικών δίσκων η αποθήκευση της πληροφορίας γίνεται πάνω σε έναν ή περισσότερους δίσκους, η επιφάνεια των οποίων έχει επικαλυφθεί µε µαγνητικό υλικό. Η εγγραφή της πληροφορίας γίνεται κατά µήκος οµόκεντρων κύκλων. Κάθε επιφάνεια έχει χιλιά-
™ À ¡ √ æ ∏ ∂ ¡ √ ∆ ∏ ∆∞ ™
δες οµόκεντρους κύκλους και κάθε οµόκεντρος κύκλος διαιρείται σε τµήµατα. Σε κάθε τµήµα αποθηκεύεται µία σταθερή ποσότητα πληροφορίας. Στη µονάδα µαγνητικού δίσκου ο χρόνος προσπέλασης ισούται µε το άθροισµα του χρόνου αναζήτησης και του χρόνου αναµονής. Η µονάδα µαγνητικής ταινίας χρησιµοποιείται σήµερα κυρίως σαν µνήµη υποστήριξης, δηλαδή αποθήκευσης της πληροφορίας ώστε αν συµβεί κάποια βλάβη σε κάποια µονάδα µαγνητικών δίσκων να έχουµε αντίγραφο της πληροφορίας. Οι οπτικές µνήµες συνήθως χρησιµοποιούν οπτικούς δίσκους, που αποθηκεύουν δυαδική πληροφορία σε οµόκεντρους κύκλους ή σε σπειροειδή καµπύλη σε ένα ηλεκτροµηχανικά περιστρεφόµενο δίσκο. Η πληροφορία διαβάζεται και γράφεται οπτικά µε λέιζερ. Οι οπτικοί δίσκοι προσφέρουν εξαιρετικά µεγάλη χωρητικότητα, αλλά οι ρυθµοί προσπέλασης είναι γενικώς µικρότεροι απ’ ότι στους µαγνητικούς δίσκους. Η πιο γνωστή οπτική µνήµη είναι το CD–ROM, που είναι µία µνήµη µόνο ανάγνωσης.
135
™À™∆∏ª∞ ª¡∏ª∏™
136
4.2 πÂÚ·Ú¯›· ÌÓ‹Ì˘ ™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να κατανοήσετε τους στόχους που επιδιώκουµε να πετύχουµε µε τη χρησιµοποίηση ιεραρχίας µνηµών και πού βασίζεται η επιτυχία της. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα µπορείτε να: • κατανοήσετε πού οφείλεται η τοπικότητα των αναφορών και πώς αξιοποιείται στην ιεραρχία µνηµών • υπολογίσετε το µέσο κόστος ανά δυαδικό ψηφίο ενός συστήµατος ιεραρχίας µνηµών • υπολογίσετε τη µέση απόδοση ενός συστήµατος ιεραρχίας µνηµών ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή αποτελείται από τέσσερις υποενότητες. Στην πρώτη υποενότητα δίνεται η δοµή της ιεραρχίας µνηµών, καθώς και παραδείγµατα ιεραρχίας µνηµών µε διαφορετικό αριθµό επιπέδων. Στη δεύτερη υποενότητα συζητούνται οι ιδιότητες των προγραµµάτων στην αξιοποίηση των οποίων βασίζεται η επιτυχία της ιεραρχίας µνηµών. Στην τρίτη υποενότητα δίνονται οι σχεδιαστικοί σκοποί της ιεραρχίας µνηµών, ενώ στις επόµενες δύο υποενότητες δίνονται τρόποι υπολογισµού του κόστους και της απόδοσης ενός συστήµατος ιεραρχίας µνηµών. π∂ƒ∞ƒÃπ∞ ª¡∏ª∏™
Στην περίπτωση της ιεραρχίας µνήµης έχουµε µία σειρά από µνήµες Μ1, Μ2 ,…., Μn. Η ΚΜΕ επικοινωνεί άµεσα µόνο µε το πρώτο µέλος Μ1 της ιεραρχίας µνήµης. Στα σχήµατα 4.9 και 4.10 δίνονται παραδείγµατα ιεραρχικών µνηµών. Υποθέτουµε ότι Ci, ti και Si δηλώνουν αντίστοιχα το κόστος ανά δυαδικό ψηφίο, το χρόνο προσπέλασης και τη χωρητικότητα της µνήµης Μi του επιπέδου µνήµης i. Τότε µεταξύ των επιπέδων µνήµης Mi και Mi+1 ισχύουν οι σχέσεις: Ci > Ci+1 ti < ti+1 Si < Si+1
π ∂ ƒ∞ ƒ à π ∞ ª ¡ ∏ ª ∏ ™
137
α.
β.
γ.
Αρ.∆εδ/Εντ : αρτηρία δεδοµένων και εντολών, Αρ.∆ιευθ. : αρτηρία διευθύνσεων Αρ.Εντ : αρτηρία εντολών. Η ιεραρχία µνήµης οργανώνεται έτσι ώστε ο χώρος διευθύνσεων του επιπέδου i να είναι ένα υποσύνολο του χώρου διευθύνσεων του επιπέδου i+1. Αυτό σηµαίνει ότι κάθε πληροφορία που περιέχεται στο επίπεδο i υπάρχει επίσης
™¯‹Ì· 4.9
α. Ιεραρχία µνηµών δύο επιπέδων, β. ιεραρχία µνηµών τριών επιπέδων µε κοινή κρυφή µνήµη για εντολές και δεδοµένα, γ. ιεραρχία µνηµών τριών επιπέδων, όπου το πρώτο επίπεδο αποτελείται από δύο κρυφές µνήµες, µία εντολών και µία δεδοµένων.
™À™∆∏ª∞ ª¡∏ª∏™
138
και στο επίπεδο i+1. Ωστόσο ένα µέρος της πληροφορίας που είναι αποθηκευµένη στο επίπεδο i µπορεί να είναι πιο πρόσφατη από την αντίστοιχη πληροφορία που είναι αποθηκευµένη στο επίπεδο i+1. Αυτό δηµιουργεί ένα πρόβληµα ασυνέπειας (data consistency ή coherence problem) µεταξύ γειτονικών επιπέδων µνήµης, διότι διαδοχικά επίπεδα µνήµης έχουν διαφορετικά αντίγραφα της ίδιας πληροφορίας. Συνήθως το επίπεδο i+1 ενηµερώνεται τελικά µε την τροποποιηµένη πληροφορία από το επίπεδο i. Κατά τη διάρκεια εκτέλεσης των προγραµµάτων η ΚΜΕ αναφέρεται σε λογικές διευθύνσεις µνήµης. Εάν η διεύθυνση στην οποία αναφέρεται η ΚΜΕ την τρέχουσα στιγµή δεν υπάρχει στη µνήµη Μ1, αλλά υπάρχει στη µνήµη Μi, µε i≠1, το περιεχόµενο αυτής της θέσης µνήµης πρέπει να µεταφερθεί στη µνήµη Μ1, διότι είναι το µόνο επίπεδο µνήµης που προσπελαύνεται άµεσα από την ΚΜΕ. Για να δουλεύει αποδοτικά µία ιεραρχία µνηµών, οι διευθύνσεις που παράγονται από την ΚΜΕ θα πρέπει να υπάρχουν όσο το δυνατόν πιο συχνά γίνεται στο επίπεδο µνήµης Μ1. Αυτό συνεπάγεται ότι θα πρέπει να υπάρχει κάποιος τρόπος πρόβλεψης των διευθύνσεων που θα αναφερθούν στο άµεσο µέλλον από την ΚΜΕ, ώστε το περιεχόµενο αυτών των διευθύνσεων να µεταφερθεί στη µνήµη Μ1, πριν πραγµατικά απαιτηθεί από την ΚΜΕ. 4.2.1 ∆ÔÈÎfiÙËÙ· ÙˆÓ ·Ó·ÊÔÚÒÓ
Η δυνατότητα πρόβλεψης των διευθύνσεων µνήµης που θα αναφερθούν στο άµεσο µέλλον, που είναι ουσιώδης για την επιτυχή λειτουργία της ιεραρχικής µνήµης, βασίζεται σε µία κοινή ιδιότητα των προγραµµάτων, που καλείται τοπικότητα των αναφορών (locality of references). Σύµφωνα µε την τοπικότητα των αναφορών, η πληροφορία (εντολές και δεδοµένα) που χρησιµοποιήθηκε πρόσφατα είναι πιθανόν να ξαναχρησιµοποιηθεί στο άµεσο µέλλον και η πληροφορία που βρίσκεται κοντά στην πληροφορία που χρησιµοποιείται τώρα είναι πιθανόν να χρησιµοποιηθεί στο άµεσο µέλλον. Ένας λόγος της τοπικότητας των αναφορών είναι ότι οι εντολές και σε µικρότερη έκταση τα δεδοµένα γράφονται και στη συνέχεια αποθηκεύονται στη µνήµη του υπολογιστή σχεδόν µε τη σειρά µε την οποία χρειάζονται κατά τη διάρκεια της εκτέλεσης του προγράµµατος. Υποθέστε ότι η ΚΜΕ απαιτεί τη διεύθυνση Α που περιέχει την εντολή Ι, και ότι αυτή η διεύθυνση υπάρχει στη µνήµη Μi µε i≠1. Η επόµενη εντολή που θα απαιτηθεί κατά πάσα πιθανότητα από την ΚΜΕ είναι η εντολή που έπεται της Ι και, αν υποθέσουµε ότι η εντολή καταλαµβάνει µία θέση µνήµης,
Ιεραρχία µνηµών τριών επιπέδων, όπου το πρώτο επίπεδο αποτελείται από δύο κρυφές µνήµες, µία εντολών και µία δεδοµένων, ενώ το δεύτερο επίπεδο αποτελείται από µία κρυφή µνήµη κοινή για εντολές και δεδοµένα.
™¯‹Ì· 4.10
µνήµη
µνήµη µνήµη µνήµη
µνήµη
π ∂ ƒ∞ ƒ à π ∞ ª ¡ ∏ ª ∏ ™ 139
™À™∆∏ª∞ ª¡∏ª∏™
140
είναι αποθηκευµένη στη διεύθυνση Α+1. Εποµένως, αντί να µεταφέρουµε µόνο την εντολή Ι στο επίπεδο µνήµης Μ1, είναι επιθυµητό να µεταφέρουµε µια οµάδα από διαδοχικές λέξεις που περιέχουν την Ι. Συνήθως η πληροφορία που είναι αποθηκευµένη στο επίπεδο µνήµης Μi διαιρείται σε µπλοκ πληροφορίας, που καθένα περιέχει SPi διαδοχικές λέξεις. Κάθε φορά λοιπόν µεταφέρεται ένα µπλοκ πληροφορίας µεταξύ των επιπέδων µνήµης Μi και Mi+1. Εποµένως, εάν η ΚΜΕ απαιτεί τη λέξη Ι, που βρίσκεται στη µνήµη Μi, ένα µπλοκ πληροφορίας µήκους SPi–1 της µνήµης ΜI, που περιέχει τη λέξη Ι, µεταφέρεται από το επίπεδο µνήµης Μi στο επίπεδο Μi–1. Στη συνέχεια ένα µπλοκ πληροφορίας µήκους SPi–2 του επιπέδου µνήµης Mi–1, που περιέχει τη λέξη Ι, µεταφέρεται στο επίπεδο µνήµης Μi–2 και ούτω καθεξής. Τελικά το µπλοκ πληροφορίας Ρ µήκους SP1 που περιέχει τη λέξη Ι, µεταφέρεται στο επίπεδο µνήµης Μ1, απ’ όπου και µπορεί να προσπελαστεί από την ΚΜΕ. Οι επόµενες αναφορές στη µνήµη είναι πιθανόν να αναφέρονται σε διευθύνσεις που περιέχονται στο µπλοκ πληροφορίας Ρ, εποµένως η µεταφορά του µπλοκ πληροφορίας Ρ στο Μ1 ανταποκρίνεται σε µελλοντικές αναφορές της ΚΜΕ, στη µνήµη. Ένας δεύτερος παράγοντας που συµβάλλει στην τοπικότητα των αναφορών είναι οι βρόχοι (loops) που εµφανίζονται µέσα στα προγράµµατα. Η εκτέλεση των εντολών που περιέχονται µέσα σ’ έναν βρόχο επαναλαµβάνεται πολλές φορές µε αποτέλεσµα να έχουµε µεγάλη συχνότητα εµφάνισης των διευθύνσεών τους. Όταν εκτελούνται εντολές που περιέχονται σ’ έναν βρόχο, είναι επιθυµητό να αποθηκεύσουµε όλες τις εντολές του βρόγχου στο επίπεδο µνήµης Μ1, το οποίο δεν είναι πάντα δυνατό. 4.2.2 ™¯Â‰È·ÛÙÈÎÔ› ÛÎÔÔ›
Ο σκοπός του σχεδιασµού της ιεραρχίας µνήµης είναι να πετύχουµε µία απόδοση που να προσεγγίζει όσο γίνεται περισσότερο την πιο γρήγορη διάταξη µνήµης Μ1 και ένα κόστος ανά δυαδικό ψηφίο µνήµης που να προσεγγίζει όσο γίνεται περισσότερο τη φθηνότερη διάταξη µνήµης Μn. Η απόδοση µιας συγκεκριµένης ιεραρχικής µνήµης εξαρτάται από πολλούς παράγοντες, που σχετίζονται µεταξύ τους κατά έναν πολύπλοκο τρόπο. Οι πιο σηµαντικοί από αυτούς τους παράγοντες είναι οι εξής: 1. Η στατιστική των αναφερόµενων διευθύνσεων, δηλαδή η σειρά και η συχνότητα µε την οποία τα προγράµµατα που τρέχουν στο συγκεκριµένο υπολογιστικό σύστηµα παράγουν τις διάφορες λογικές διευθύνσεις.
π ∂ ƒ∞ ƒ à π ∞ ª ¡ ∏ ª ∏ ™
141
2. Ο χρόνος προσπέλασης ti από την ΚΜΕ κάθε επιπέδου µνήµης Μi. 3. Η χωρητικότητα αποθήκευσης κάθε επιπέδου. 4. Το µέγεθος των µπλοκ πληροφορίας που µεταφέρονται µεταξύ διαδοχικών επιπέδων µνήµης. 5. Η στρατηγική (allocation algorithm) που χρησιµοποιείται για τον προσδιορισµό των περιοχών της µνήµης ΜI στις οποίες θα µεταφερθούν µπλοκ πληροφορίας από τη µνήµη Μi+1. Στην περίπτωση που στη µνήµη Mi δεν υπάρχει ελεύθερος χώρος, ο χώρος που καταλαµβάνει κάποιο µπλοκ της πρέπει να ελευθερωθεί. 4.2.3 KfiÛÙÔ˜
Το µέσο κόστος ανά δυαδικό ψηφίου όλου του συστήµατος της ιεραρχικής µνήµης δίνεται από τον τύπο + + ...+ C = C 1S1 C 2 S 2 C nS n S1 + S2 + .... + S n
όπου το Ci δηλώνει το κόστος ανά δυαδικό ψηφίο της µνήµης Μi, το Si δηλώνει τη χωρητικότητα αποθήκευσης της µνήµης Μi σε δυαδικά ψηφία και το n δηλώνει το πλήθος των επιπέδων ιεραρχίας. Είναι προφανές ότι, για να πετύχουµε το σκοπό µας, το µέσο κόστος C να προσεγγίζει το Cn, πρέπει η τιµή του S1 να είναι πολύ µικρότερη της τιµής του Sn. 4.2.4 Afi‰ÔÛË ÈÂÚ·Ú¯È΋˜ ÌÓ‹Ì˘
Η απόδοσης µιας ιεραρχικής µνήµης συχνά µετριέται σαν συνάρτηση του λόγου επιτυχίας. Θεωρούµε µία ιεραρχία µνηµών ν επιπέδων. Ο λόγος επιτυχίας (hit ratio) Ei της µονάδας µνήµης του επιπέδου i ορίζεται ως η πιθανότητα οποιαδήποτε πληροφορία ζητούµενη από την ΚΜΕ να µη βρίσκεται στις µνήµες των επιπέδων 1, 2, …, i–1 και να βρίσκεται στη µνήµη του επιπέδου i. Για τον υπολογισµό της τιµής του Εi πρέπει να τρέξουµε στον εν λόγω υπολογιστή αντιπροσωπευτικά προγράµµατα και να µετρήσουµε το πλήθος των προσπελάσεων Νi, Ni+1,….Nν της ιεραρχικής µνήµης που ικανοποιούνται αντίστοιχα από τα επίπεδα µνήµης i, i+1,…..ν. Τότε Ei =
Ni N i + N i +1 + ... N n
™À™∆∏ª∞ ª¡∏ª∏™
142
Προφανώς ο λόγος αποτυχίας Αi του επιπέδου µνήµης i δίνεται από τη σχέση Ai=1–Ei. Aν υποθέσουµε ότι ο χρόνος µεταφοράς ενός µπλοκ πληροφορίας της µνήµης του επιπέδου i, από το επίπεδο µνήµης i+1στο επίπεδο µνήµης i είναι t Bi +1 ,τότε ο χρόνος προσπέλασης από την ΚΜΕ µιας λέξης που βρίσκεται στη µνήµη του επιπέδου i+1 θα ισούται µε Ti +1 = t1 + t B 2 + t B3 + ... + t Bi +1 = t1 +
i +1
Ât j =2
Bj
όπου t1 είναι ο χρόνος προσπέλασης της µνήµης του πρώτου επιπέδου. Προφανώς T1 = t1 . Ο µέσος χρόνος προσπέλασης Τ πληροφορίας που βρίσκεται σε ιεραρχία µνηµών ν επιπέδων δίνεται από τη σχέση T=
n
ÂE T
i i
i =1
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.4
α. Αναφέρετε τα χαρακτηριστικά των προγραµµάτων στα οποία οφείλεται η τοπικότητα των αναφορών. β. Αναφέρετε τον τρόπο µε τον οποίο αξιοποιείται η τοπικότητα των αναφορών στο σύστηµα ιεραρχικής µνήµης. γ. Πώς ορίζεται ο µέσος χρόνος προσπέλασης πληροφορίας σε µία ιεραρχία µνηµών ν επιπέδων;
™‡ÓÔ„Ë ÂÓfiÙËÙ·˜ Στην ιεραρχική µνήµη έχουµε µία σειρά από επίπεδα µνήµης Μ1, Μ2, …, Μν. Η ΚΜΕ επικοινωνεί άµεσα µόνο µε το πρώτο επίπεδο Μ1 της ιεραρχικής µνήµης. Όσο µακρύτερα βρίσκεται ένα µέλος της ιεραρχικής µνήµης από την ΚΜΕ τόσο η χωρητικότητά του και ο χρόνος προσπέλασής του έχουν µεγαλύτερες τιµές και το κόστος ανά δυαδικό ψηφίο της τεχνολογίας που χρησιµοποιείται για την υλοποίησή του είναι µικρότερο. Η ιεραρχία µνήµης οργανώνεται έτσι ώστε ο χώρος διευθύνσεων του επιπέδου i να είναι ένα υποσύνολο του χώρου διευθύνσεων του επιπέδου i+1.
∫ƒÀº∏ ª¡∏ª∏
Η επιτυχία της ιεραρχικής µνήµης βασίζεται σε µία ιδιότητα των προγραµµάτων που καλείται τοπικότητα των αναφορών. Σύµφωνα µε την τοπικότητα των αναφορών η πληροφορία που χρησιµοποιήθηκε πρόσφατα είναι πιθανόν να ξαναχρησιµοποιηθεί στο άµεσο µέλλον και η πληροφορία που βρίσκεται κοντά στην πληροφορία που χρησιµοποιείται τώρα είναι πιθανόν να χρησιµοποιηθεί στο άµεσο µέλλον. Ο σκοπός του σχεδιασµού της ιεραρχίας µνήµης είναι να πετύχουµε µία απόδοση που να προσεγγίζει όσο γίνεται περισσότερο την πιο γρήγορη διάταξη µνήµης Μ1 και ένα κόστος ανά δυαδικό ψηφίο µνήµης να προσεγγίζει όσο γίνεται περισσότερο τη φθηνότερη διάταξη µνήµης Μν. Η απόδοση µιας ιεραρχικής µνήµης συχνά µετριέται σαν συνάρτηση του λόγου επιτυχίας. Ο λόγος επιτυχίας της µονάδας µνήµης του επιπέδου i ορίζεται ως η πιθανότητα οποιαδήποτε πληροφορία ζητούµενη από την ΚΜΕ να µη βρίσκεται στις µνήµες των επιπέδων 1, 2, …, i–1 και να βρίσκεται στη µνήµη του επιπέδου i. Ο υπολογισµός του λόγου επιτυχίας γίνεται µε εξοµοιώσεις. 4.3 ∫Ú˘Ê‹ ªÓ‹ÌË
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να γνωρίσετε εναλλακτικούς τρόπους υλοποίησης της κρυφής µνήµης, καθώς και τα πλεονεκτήµατα και µειονεκτήµατα κάθε υλοποίησης. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα µπορείτε να: • περιγράψετε λεπτοµερώς τη διαδικασία που λαµβάνει χώρα, όταν η ΚΜΕ επιθυµεί να διαβάσει πληροφορία από το σύστηµα µνήµης ή να γράψει πληροφορία στο σύστηµα µνήµης • να αποφασίσετε ανάλογα µε τα επιθυµητά χαρακτηριστικά την οργάνωση της κρυφής µνήµης που πρέπει να επιλέξετε • να σχεδιάσετε µία κρυφή µνήµη οποιασδήποτε οργάνωσης ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή αποτελείται από τέσσερις υποενότητες. Η υποενότητα 4.3.1
143
™À™∆∏ª∞ ª¡∏ª∏™
144
ασχολείται µε το πότε µεταφέρεται πληροφορία από την κύρια µνήµη στην κρυφή µνήµη. Η υποενότητα 4.3.2 ασχολείται µε τη θέση της κρυφής µνήµης στην οποία αποθηκεύεται η πληροφορία που προσκοµίζεται από την κύρια µνήµη. Όταν πρέπει να µεταφερθεί πληροφορία από την κύρια µνήµη στην κρυφή µνήµη και δεν υπάρχει ελεύθερος χώρος στην κρυφή µνήµη, τότε θα πρέπει να ελευθερωθεί κάποιος χώρος της κρυφής µνήµης για να αποθηκευτεί η πληροφορία που θα προσκοµιστεί. Αυτό το θέµα συζητείται στην υποενότητα 4.3.3. Στην υποενότητα 4.3.4 συζητούνται θέµατα που σχετίζονται µε την εγγραφή πληροφορίας από την ΚΜΕ στο σύστηµα µνήµης. ∫ƒÀº∏ ª¡∏ª∏
Πρέπει να σηµειώσουµε ότι κάθε φορά που στην ενότητα αυτή θα αναφερόµαστε στη λειτουργία της κρυφής µνήµης θα θεωρούµε ότι το σύστηµα της ιεραρχικής µας µνήµης περιλαµβάνει µόνο ένα επίπεδο κρυφής µνήµης. Όταν η ιεραρχία µνηµών έχει δύο επίπεδα κρυφής µνήµης, τότε κατά τη µελέτη της ενότητας αυτής πρέπει να έχουµε κατά νου τις επόµενες αντιστοιχίες: Όταν θέλουµε να κατανοήσουµε τον τρόπο λειτουργίας της κρυφής µνήµης του πρώτου επιπέδου κάθε φορά που θα συναντούµε στο κείµενο την κύρια µνήµη, θα εννοούµε την κρυφή µνήµη δεύτερου επιπέδου. Όταν θέλουµε να κατανοήσουµε τον τρόπο λειτουργίας της κρυφής µνήµης του δεύτερου επιπέδου κάθε φορά που θα συναντούµε στο κείµενο την ΚΜΕ, θα εννοούµε την κρυφή µνήµη πρώτου επιπέδου. 4.3.1 ∆·ÎÙÈ΋ ÚÔÛÎfiÌÈÛ˘ ÌÏÔÎ ÏËÚÔÊÔÚ›·˜ (fetch policy)
Η τακτική προσκόµισης µπλοκ πληροφορίας (fetch policy) καθορίζει εάν η προσκόµιση ενός µπλοκ από την κύρια µνήµη στην κρυφή µνήµη γίνεται όταν αυτό απαιτείται (on demand) ή εκ των προτέρων (prefetch). Στην πρώτη περίπτωση η µεταφορά ενός µπλοκ πληροφορίας από την κύρια µνήµη στην κρυφή µνήµη γίνεται µόνον όταν η ΚΜΕ απαιτήσει πληροφορία που περιλαµβάνεται στο µπλοκ αυτό και το µπλοκ δεν υπάρχει στην κρυφή µνήµη. Στην περίπτωση της εκ των προτέρων προσκόµισης χρησιµοποιούνται τεχνικές που προσπαθούν να φέρουν στην κρυφή µνήµη την πληροφορία πριν αυτή απαιτηθεί από την ΚΜΕ. Αν στην πλειονότητα των περιπτώσεων το επιτυγχάνουν, η ΚΜΕ δεν θα χάνει χρόνο περιµένοντας τη ζητούµενη πληροφορία να προσκοµιστεί από την κύρια µνήµη.
∫ƒÀº∏ ª¡∏ª∏
4.3.2 ∆ÚfiÔ˜ ·ÂÈÎfiÓÈÛ˘ ÌÏÔÎ Ù˘ ·ÚÈ·˜ ÌÓ‹Ì˘ Û Ϸ›ÛÈ· Ù˘ ÎÚ˘Ê‹˜ ÌÓ‹Ì˘ (placement policy)
Ο τρόπος απεικόνισης των µπλοκ της κύριας µνήµης σε πλαίσια της κρυφής µνήµης (placement policy) καθορίζει την οργάνωση της κρυφής µνήµης. Έχουµε τρεις διαφορετικούς τρόπους οργάνωσης της κρυφής µνήµης, την άµεση οργάνωση (direct mapped), την κ–τρόπων συνόλου συσχέτισης (k–way set associative) και την πλήρους συσχέτισης (fully associative). Στη συνέχεια θα παρουσιάσουµε κάθε µία οργάνωση, τα πλεονεκτήµατα και τα µειονεκτήµατά της. Πριν όµως, θα πρέπει να τονίσουµε ότι σε κάθε οργάνωση το πλήθος των λέξεων ανά πλαίσιο, όπως και το πλήθος των πλαισίων της κρυφής µνήµης και το πλήθος των µπλοκ της κύριας µνήµης είναι συνήθως δυνάµεις του δύο, διότι σε αυτή την περίπτωση η υλοποίηση του συστήµατος µνήµης είναι πιο απλή. Επίσης πρέπει να σηµειώσουµε ότι το πλαίσιο της κρυφής µνήµης και το µπλοκ της κύριας µνήµης αποτελείται από ίσο αριθµό λέξεων. ∫ƒÀº∂™ ª¡∏ª∂™ ∞ª∂™∏™ √ƒ°∞¡ø™∏™
Στην περίπτωση αυτή κάθε µπλοκ της κύριας µνήµης µπορεί να τοποθετηθεί σε ένα συγκεκριµένο πλαίσιο της κρυφής µνήµης. Η διεύθυνση του πλαισίου της κρυφής µνήµης, στο οποίο θα τοποθετηθεί το µπλοκ της κύριας µνήµης µε διεύθυνση Μ, δίνεται από το υπόλοιπο της διαίρεσης του Μ δια του πλήθους των πλαισίων της κρυφής µνήµης. Σαν παράδειγµα στο σχήµα 4.11 δίνεται µία κρυφή µνήµη των τεσσάρων πλαισίων και µία κύρια µνήµη των δεκαέξι µπλοκ. Προφανώς το πλήθος των πλαισίων της κρυφής µνήµης και των µπλοκ της κύριας µνήµης σε ένα πραγµατικό σύστηµα είναι πάρα πολύ µεγαλύτερο. Παρατηρούµε ότι στο πλαίσιο της κρυφής µνήµης µε διεύθυνση ένα µπορεί να βρίσκεται, κάθε χρονική στιγµή, µόνο ένα από τα µπλοκ της κύριας µνήµης που το υπόλοιπο της διαίρεσης της διεύθυνσής του δια του τέσσερα ισούται µε ένα, δηλαδή ένα από τα µπλοκ µε διευθύνσεις 1, 5, 9 και 13.
145
™À™∆∏ª∞ ª¡∏ª∏™
146
µνήµη 0z 1z 2z 3
™¯‹Ì· 4.11
Τρόπος αντιστοίχησης µπλοκ της κύριας µνήµης σε πλαίσια της κρυφής µνήµης. Η κρυφή µνήµη είναι άµεσης οργάνωσης και αποτελείται από 4 πλαίσια, ενώ η κύρια µνήµη αποτελείται από 16 µπλοκ.
00z 01z 10z 11
µνήµη 0z 1z 2z 3z 4z 5z 6z 7z 8z 9z 10z 11z 12z 13z 14z 15
00000000z 00000001z 00000010z 00000011z 00000100z 00000101z 00000110z 00000111z 00001000z 00001001z 00001010z 00001011z 00001100z 00001101z 00001110z 00001111
Στο παράδειγµά µας δεν ασχοληθήκαµε µε το πλήθος των λέξεων ανά πλαίσιο, διότι αυτό δεν ήταν απαραίτητο για να περιγράψουµε την οργάνωση της κρυφής µνήµης. Στο σχήµα 4.11 παρατηρούµε ότι η διεύθυνση ενός πλαισίου της κρυφής µνήµης ισούται µε τα δύο λιγότερο σηµαντικά δυαδικά ψηφία της διεύθυνσης των µπλοκ της κύριας µνήµης που µπορούν να τοποθετηθούν σ’ αυτό το πλαίσιο. Για παράδειγµα, τα δύο λιγότερο σηµαντικά δυαδικά ψηφία των διευθύνσεων 1, 5, 9 και 13 που µπορούν να τοποθετηθούν στο πλαίσιο της κρυφής µνήµης µε διεύθυνση 01, στο δυαδικό, είναι το 01. Θα διαπιστώσουµε στη συνέχεια ότι αυτό είναι πολύ σηµαντικό για την υλοποίηση της κρυφής µνήµης άµεσης οργάνωσης. Υποθέστε ότι η κύρια µνήµη αποτελείται από 2ν µπλοκ, όπου το µέγεθος κάθε µπλοκ είναι 2µ λέξεις. Τότε το µέγεθος της κύριας µνήµης είναι 2ν+µ λέξεις. Υποθέστε επίσης ότι η κρυφή µνήµη αποτελείται από 2κ πλαίσια, προφανώς κ<ν, όπου το µέγεθος κάθε πλαισίου είναι 2µ λέξεις. Τότε το µέγεθος της κρυφής µνήµης είναι 2κ+µ λέξεις. Στην περίπτωση αυτή κάθε διεύθυνση που παράγει ο επεξεργαστής θεωρούµε ότι αποτελείται από τρία πεδία που το µήκος και η σηµασία τους δίνεται στο σχήµα 4.12.
∫ƒÀº∏ ª¡∏ª∏
147
µνήµη
™¯‹Ì· 4.12
µνήµη
Στο σχήµα 4.13 δίνεται η υλοποίηση µιας κρυφής µνήµης άµεσης οργάνωσης. Παρατηρούµε ότι αποτελείται από µία µνήµη RAM, ένα συγκριτή και έναν πολυπλέκτη. Σε κάθε θέση της RAM αποθηκεύονται ένα δυαδικό ψηφίο εγκυρότητας, τα δυαδικά ψηφία της ετικέτας και τα δυαδικά ψηφία της πληροφορίας ενός µπλοκ. Όπως βλέπουµε και στο σχήµα 4.13, µε κάθε πλαίσιο της κρυφής µνήµης συνδέεται µία ετικέτα. Όταν ένα µπλοκ της κύριας µνήµης υπάρχει σε ένα πλαίσιο της κρυφής µνήµης, η ετικέτα που συνδέεται µε αυτό το πλαίσιο περιέχει τα ν–κ περισσότερο σηµαντικά δυαδικά ψηφία της διεύθυνσης του µπλοκ στην κύρια µνήµη. Παρατηρούµε στο σχήµα 4.13 ότι µε κάθε πλαίσιο της κρυφής µνήµης είναι επίσης συνδεδεµένο ένα δυαδικό ψηφίο, το ψηφίο εγκυρότητας. Κατά το ξεκίνηµα της εκτέλεσης ενός προγράµµατος η κρυφή µνήµη περιέχει τυχαία πληροφορία, όσον αφορά στο πρόγραµµα αυτό. Υπάρχει εποµένως ο κίνδυνος, όταν µέσα από ένα πρόγραµµα προσπελαστεί ένα πλαίσιο της κρυφής µνήµης για πρώτη φορά, η επιθυµητή ετικέτα να είναι ίδια µε την ετικέτα που είναι αποθηκευµένη στην ίδια θέση της κρυφής µνήµης µε αυτό το πλαίσιο. Τότε η τυχαία πληροφορία που βρίσκεται σ’ αυτό το πλαίσιο να θεωρηθεί σωστή, ενώ στην πραγµατικότητα είναι τυχαία.
Τρόπος χρήσης της διεύθυνσης για προσπέλαση κρυφής µνήµης µε άµεση οργάνωση.
™À™∆∏ª∞ ª¡∏ª∏™
148
0 0z 1z 2z 3z 4z 5z 6z 7z 8z 9
™¯‹Ì· 4.13
Υλοποίηση µίας κρυφής µνήµης άµεσης οργάνωσης.
1
2 µ-1
∫ƒÀº∏ ª¡∏ª∏
Το πρόβληµα λύνεται µε τη χρήση του ψηφίου εγκυρότητας. Κατά το ξεκίνηµα της εκτέλεσης ενός νέου προγράµµατος όλα τα δυαδικά ψηφία εγκυρότητας αρχικοποιούνται στη λογική τιµή µηδέν. Όταν ένα µπλοκ προσκοµίζεται από την κύρια µνήµη σε ένα πλαίσιο της κρυφής µνήµης, τότε το αντίστοιχο δυαδικό ψηφίο εγκυρότητας αλλάζει στη λογική τιµή ένα. Όταν ο επεξεργαστής παράγει µία διεύθυνση για να διαβάσει την πληροφορία που είναι αποθηκευµένη στη διεύθυνση αυτή, τότε τα δυαδικά ψηφία του πεδίου «διεύθυνση του πλαισίου στην κρυφή µνήµη» χρησιµοποιούνται για να διευθυνσιοδοτηθεί η κρυφή µνήµη. Ταυτόχρονα τα δυαδικά ψηφία του πεδίου «διεύθυνση του µπλοκ στην κύρια µνήµη» χρησιµοποιούνται για να διευθυνσιοδοτηθεί η κύρια µνήµη. Επίσης τα δυαδικά ψηφία του πεδίου «διεύθυνση της λέξης στο πλαίσιο» οδηγώντας τον πολυπλέκτη επιλέγουν τη λέξη του πλαισίου που θα εµφανιστεί στην έξοδο του πολυπλέκτη. Τα δυαδικά ψηφία της ετικέτας που είναι αποθηκευµένη στη διεύθυνση της κρυφής µνήµης που προσπελάστηκε συγκρίνονται µε τα δυαδικά ψηφία του πεδίου «ετικέτα» της διεύθυνσης. Εάν οι δύο ετικέτες είναι ίδιες, τότε τα δεδοµένα στην έξοδο του πολυπλέκτη είναι τα ζητούµενα. ∆ιαφορετικά τα δεδοµένα στην έξοδο του πολυπλέκτη αγνοούνται και το µπλοκ της κύριας µνήµης, που περιέχει τη ζητούµενη πληροφορία, προσκοµίζεται από την κύρια µνήµη στην κρυφή µνήµη. Για να κατανοήσουµε καλύτερα τον τρόπο προσπέλασης της κρυφής µνήµης άµεσης οργάνωσης, δίνουµε το επόµενο παράδειγµα. ¶·Ú¿‰ÂÈÁÌ· 4.1 Θεωρήστε ότι η χωρητικότητα της κύριας µνήµης είναι 4Κ ψηφιολέξεις και ότι κάθε θέση της αποθηκεύει µία ψηφιολέξη. Θεωρήστε επίσης ότι η χωρητικότητα της κρυφής µνήµης είναι 64 ψηφιολέξεις, όπου κάθε πλαίσιο είναι των τεσσάρων ψηφιολέξεων. Τότε η κρυφή µνήµη αποτελείται από 16 πλαίσια και η κύρια µνήµη από 1Κ µπλοκ. Εποµένως, αναφερόµενοι στα σχήµατα 4.12 και 4.13, έχουµε µ=2, κ=4, ν=10 και ν–κ=6. Θεωρήστε ότι στο πλαίσιο της κρυφής µνήµης µε διεύθυνση 2 βρίσκεται το µπλοκ της κύριας µνήµης µε διεύθυνση 34 και το αντίστοιχο δυαδικό ψηφίο εγκυρότητας έχει τη λογική τιµή ένα. Αυτό µπορεί να γίνει διότι το υπόλοιπο της διαίρεσης του 34 µε το 16 (16 είναι το πλήθος των πλαισίων της κρυφής µνήµης) ισούται µε 2. Η δυαδική παράσταση του 34, χρησιµοποιώντας 10 δυαδικά ψηφία, είναι 0000100010 και από αυτά τα δυαδικά ψηφία τα 6 περισσότερο σηµα-
149
150
™À™∆∏ª∞ ª¡∏ª∏™
ντικά 000010 είναι η ετικέτα. Εποµένως το πεδίο ετικέτα της θέσης της κρυφής µνήµης µε διεύθυνση 2 θα περιέχει τα δυαδικά ψηφία 000010. Θα εξετάσουµε στη συνέχεια δύο περιπτώσεις: α. Ο επεξεργαστής ζητάει να διαβαστεί η πληροφορία που είναι αποθηκευµένη στη θέση µνήµης µε διεύθυνση 000010001000. Τότε τα δύο λιγότερο σηµαντικά δυαδικά ψηφία 00 καθορίζουν τη διεύθυνση της λέξης µέσα στο µπλοκ. Τα επόµενα 4 λιγότερο σηµαντικά δυαδικά ψηφία 0010 χρησιµοποιούνται για τη διευθυνσιοδότηση της κρυφής µνήµης. Η ετικέτα που είναι αποθηκευµένη στη θέση της κρυφής µνήµης µε διεύθυνση 0010 συγκρίνεται στο συγκριτή µε τα έξι περισσότερο σηµαντικά δυαδικά ψηφία της διεύθυνσης, δηλαδή µε το πεδίο “ετικέτα”. Οι δύο συγκρινόµενοι δυαδικοί αριθµοί είναι ίδιοι, επίσης η τιµή του δυαδικού ψηφίου εγκυρότητας είναι ένα, εποµένως η έξοδος επιτυχία/αποτυχία παίρνει την τιµή ένα, που σηµαίνει ότι η ζητούµενη πληροφορία βρίσκεται στη θέση της κρυφής µνήµης που προσπελάστηκε. β. Ο επεξεργαστής ζητάει να διαβαστεί η πληροφορία που είναι αποθηκευµένη στη θέση µνήµης µε διεύθυνση 000100001001. Τα δύο λιγότερο σηµαντικά δυαδικά ψηφία 01 καθορίζουν τη διεύθυνση της λέξης µέσα στο µπλοκ. Τα επόµενα 4 λιγότερο σηµαντικά δυαδικά ψηφία 0010 χρησιµοποιούνται για τη διευθυνσιοδότηση της κρυφής µνήµης. Η ετικέτα που είναι αποθηκευµένη στη θέση της κρυφής µνήµης µε διεύθυνση 0010 συγκρίνεται στο συγκριτή µε τα έξι περισσότερο σηµαντικά δυαδικά ψηφία 000100 της διεύθυνσης, δηλαδή µε το πεδίο “ετικέτα”. Οι δύο συγκρινόµενοι δυαδικοί αριθµοί δεν είναι ίδιοι, εποµένως η έξοδος του συγκριτή είναι µηδέν και η έξοδος επιτυχία/αποτυχία παίρνει την τιµή µηδέν. Συνεπώς, η ζητούµενη πληροφορία δεν υπάρχει στην κρυφή µνήµη. Μεταξύ κρυφών µνηµών µε διαφορετική οργάνωση και ίδια όλα τα υπόλοιπα χαρακτηριστικά η κρυφή µνήµη άµεσης οργάνωσης έχει το µικρότερο χρόνο προσπέλασης. Επειδή όµως από όλα τα µπλοκ της κύριας µνήµης, που αντιστοιχούν σε ένα πλαίσιο της κρυφής µνήµης, µόνο ένα µπορεί να βρίσκεται κάθε χρονική στιγµή στην κρυφή µνήµη, η κρυφή µνήµη άµεσης οργάνωσης έχει το µεγαλύτερο ρυθµό αποτυχιών, υπό την προϋπόθεση βέβαια ότι όλα τα άλλα χαρακτηριστικά είναι τα ίδια. Για τον ίδιο λόγο, ο λόγος αποτυχίας της κρυφής µνήµης άµεσης οργάνωσης αυξάνεται απότοµα εάν δύο ή περισσότερα µπλοκ της κύριας µνήµης που αντιστοιχούν στο ίδιο πλαίσιο της
∫ƒÀº∏ ª¡∏ª∏
151
κρυφής µνήµης χρησιµοποιούνται το ένα µετά το άλλο εναλλάξ. ∫ƒÀº∂™ ª¡∏ª∂™ ª∂ √ƒ°∞¡ø™∏ ¶§∏ƒ√À™ ™À™Ã∂∆π™∏™
Στην περίπτωση αυτή κάθε µπλοκ της κύριας µνήµης µπορεί να τοποθετηθεί σε οποιοδήποτε πλαίσιο της κρυφής µνήµης. Για παράδειγµα, στο σχήµα 4.14 το µπλοκ της κύριας µνήµης µε διεύθυνση 5 µπορεί να τοποθετηθεί σε οποιοδήποτε πλαίσιο της κρυφής µνήµης. µνήµη 0z 1z 2z 3
00z 01z 10z 11
µνήµη 0z 1z 2z 3z 4z 5z 6z 7z 8z 9z 10z 11z 12z 13z 14z 15
00000000z 00000001z 00000010z 00000011z 00000100z 00000101z 00000110z 00000111z 00001000z 00001001z 00001010z 00001011z 00001100z 00001101z 00001110z 00001111
Υποθέστε ότι η κύρια µνήµη αποτελείται από 2ν µπλοκ, όπου το µέγεθος κάθε µπλοκ είναι 2µ λέξεις. Τότε το µέγεθος της κύριας µνήµης είναι 2ν+µ λέξεις. Υποθέστε επίσης ότι η κρυφή µνήµη αποτελείται από 2κ πλαίσια, προφανώς κ<ν, όπου το µέγεθος κάθε πλαισίου είναι 2µ λέξεις. Τότε το µέγεθος της κρυφής µνήµης είναι 2κ+µ λέξεις. Στην περίπτωση αυτή κάθε διεύθυνση που παράγει ο επεξεργαστής θεωρούµε ότι αποτελείται από δύο πεδία, που το µήκος και η σηµασία τους δίνεται στο σχήµα 4.15.
™¯‹Ì· 4.14
Τρόπος αντιστοίχησης µπλοκ της κύριας µνήµης σε πλαίσια της κρυφής µνήµης όταν η κρυφή µνήµη έχει οργάνωση πλήρους συσχέτισης.
™À™∆∏ª∞ ª¡∏ª∏™
152
µνήµη
™¯‹Ì· 4.15
Τρόπος χρήσης της διεύθυνσης για προσπέλαση κρυφής µνήµης µε οργάνωση πλήρους συσχέτισης.
Στο σχήµα 4.16 δίνεται η υλοποίηση µιας κρυφής µνήµης πλήρους συσχέτισης (προς το παρόν αγνοήστε ο,τιδήποτε είναι γραµµένο µε έντονα στοιχεία). Παρατηρούµε ότι αποτελείται από µία µνήµη, που στην περίπτωση αυτή είναι µία συσχετιστική µνήµη (associative ή content addressable memory) και έναν πολυπλέκτη. Σε κάθε θέση της συσχετιστικής µνήµης αποθηκεύονται ένα δυαδικό ψηφίο εγκυρότητας, τα δυαδικά ψηφία της ετικέτας και τα δυαδικά ψηφία της πληροφορίας ενός µπλοκ. Ο τρόπος διευθυνσιοδότησης της συσχετιστικής µνήµης είναι διαφορετικός από τον τρόπο διευθυνσιοδότησης της RAM. Όπως γνωρίζουµε από το µάθηµα λογικού σχεδιασµού για να διαβάσουµε το περιεχόµενο µίας θέσης της µνήµης RAM δίνουµε τη διεύθυνση αυτής της θέσης. Αντίθετα, για να διαβάσουµε κάποια πληροφορία που είναι αποθηκευµένη στη συσχετιστική µνήµη, δεν χρειάζεται να γνωρίζουµε τη διεύθυνση της θέσης στην οποία είναι αποθηκευµένη. Η προσπέλαση γίνεται βάσει των περιεχοµένων της. Κάθε θέση της συσχετιστικής µνήµης αποτελείται από δύο πεδία. Το ένα πεδίο περιέχει την πληροφορία, βάσει της οποίας θα γίνει η προσπέλαση, και το άλλο πεδίο περιέχει την πληροφορία που θέλουµε να διαβάσουµε. Στη συγκεκριµένη περίπτωση του σχήµατος 4.16 το πεδίο της ετικέτας περιέχει την πληροφορία, βάσει της οποίας θα γίνει η προσπέλαση, και το υπόλοιπο της ίδιας θέσης της συσχετιστικής µνήµης, δηλαδή το πεδίο του πλαισίου, περιέχει την πληροφορία που θέλουµε να προσπελάσουµε.
∫ƒÀº∏ ª¡∏ª∏
153
1) 1) 1) 1) 1) 1) 0) 0) 0) 0
11000000000000) 00010000110000) 00000000100010) 00000000000101) 00000000000000) 11110000000000) 11110000000000
0
1
0000) 0011) 0100) 1110) 0110) 0111) 0110
1111) 1000) 0000) 0010) 1111) 0000) 0111
2 µ-1
0) 0) 0
™¯‹Ì· 4.16
Υλοποίηση κρυφής µνήµης µε οργάνωση πλήρους συσχέτισης.
Όταν ο επεξεργαστής παράγει µία διεύθυνση για να διαβάσει την πληροφορία που είναι αποθηκευµένη στη διεύθυνση αυτή, τότε η διεύθυνση αυτή χρησιµοποιείται για να διευθυνσιοδοτηθεί η κύρια µνήµη. Την ίδια χρονική στιγµή τα δυαδικά ψηφία του πεδίου “ετικέτα” οδηγούνται στη συσχετιστική µνήµη και συγκρίνονται ταυτόχρονα µε όλες τις ετικέτες που είναι αποθηκευµένες στη συσχετιστική µνήµη. Εάν το πεδίο “ετικέτα” της διεύθυνσης που παρήγαγε ο επεξεργαστής είναι ίδιο µε κάποια από τις αποθηκευµένες ετικέτες και το αντίστοιχο δυαδικό ψηφίο εγκυρότητας έχει τη λογική
™À™∆∏ª∞ ª¡∏ª∏™
154
τιµή ένα, τότε η έξοδος “επιτυχία” παίρνει τη λογική τιµή ένα. Επίσης η πληροφορία του πλαισίου που συνδέεται µε αυτή την ετικέτα εµφανίζεται στην έξοδο της µνήµης, δηλαδή στις εισόδους του πολυπλέκτη. Όπως φαίνεται στο σχήµα 4.16, τα δυαδικά ψηφία του πεδίου “διεύθυνση της λέξης στο πλαίσιο” της διεύθυνσης οδηγούν τον πολυπλέκτη και επιλέγουν τη ζητούµενη λέξη του πλαισίου που ως εκ τούτου θα οδηγηθεί στην έξοδο του πολυπλέκτη. Εάν η γραµµή εξόδου επιτυχία/αποτυχία έχει την τιµή µηδέν, τότε τα δεδοµένα στην έξοδο του πολυπλέκτη αγνοούνται και το µπλοκ της κύριας µνήµης, που περιέχει τη ζητούµενη πληροφορία, προσκοµίζεται από την κύρια µνήµη στην κρυφή µνήµη. Για να κατανοήσουµε καλύτερα τον τρόπο προσπέλασης της κρυφής µνήµης µε οργάνωση πλήρους συσχέτισης δίνουµε το επόµενο παράδειγµα. ¶·Ú¿‰ÂÈÁÌ· 4.2 Θεωρήστε ότι η χωρητικότητα της κύριας µνήµης είναι 64Κ λέξεις των τεσσάρων δυαδικών ψηφίων η καθεµία και ότι κάθε θέση της αποθηκεύει µία λέξη. Θεωρήστε επίσης ότι η χωρητικότητα της κρυφής µνήµης είναι 64 λέξεις και κάθε πλαίσιο είναι των τεσσάρων λέξεων. Τότε η κρυφή µνήµη αποτελείται από 16 πλαίσια και η κύρια µνήµη από 16Κ µπλοκ. Εποµένως, αναφερόµενοι στα σχήµατα 4.15 και 4.16, έχουµε µ=2 και ν=14. Θεωρήστε ότι στο τρίτο πλαίσιο της κρυφής µνήµης βρίσκεται το µπλοκ της κύριας µνήµης µε διεύθυνση 34 και το αντίστοιχο δυαδικό ψηφίο εγκυρότητας έχει τη λογική τιµή ένα. Αυτό µπορεί να γίνει διότι οποιοδήποτε µπλοκ της κύριας µνήµης µπορεί να αποθηκευτεί σε οποιοδήποτε πλαίσιο της κρυφής µνήµης. Η δυαδική παράσταση του 34, χρησιµοποιώντας 14 δυαδικά ψηφία, είναι 00000000100010, που είναι και η ετικέτα. Εποµένως το πεδίο ετικέτα του τρίτου πλαισίου της κρυφής µνήµης θα περιέχει τα δυαδικά ψηφία 00000000100010. Θα εξετάσουµε στη συνέχεια δύο περιπτώσεις: α. Ο επεξεργαστής ζητάει να διαβαστεί η πληροφορία που είναι αποθηκευµένη στη θέση µνήµης µε διεύθυνση 0001000011000001. Τα 14 περισσότερο σηµαντικά δυαδικά ψηφία 00010000110000 της διεύθυνσης αποτελούν την ετικέτα και συγκρίνονται ταυτόχρονα µε τα δυαδικά ψηφία όλων των ετικετών που είναι αποθηκευµένες στην κρυφή µνήµη. Παρατηρούµε ότι το πεδίο «ετικέτα» της διεύθυνσης είναι ταυτοτικό µε την ετικέτα που είναι αποθηκευµένη στη δεύτερη θέση της συσχετιστικής µνήµης. Επίσης το δυαδικό ψηφίο εγκυρότητας αυτής της θέσης έχει την τιµή
∫ƒÀº∏ ª¡∏ª∏
ένα. Τότε η έξοδος επιτυχία/αποτυχία παίρνει την τιµή 1 και στις εισόδους του πολυπλέκτη οδηγούνται οι λέξεις του µπλοκ που είναι αποθηκευµένο στη δεύτερη θέση της συσχετιστικής µνήµης. Η λέξη που θα οδηγήσει ο πολυπλέκτης στην έξοδό του καθορίζεται από τα δύο λιγότερο σηµαντικά δυαδικά ψηφία 01 της διεύθυνσης. β. Ο επεξεργαστής ζητάει να διαβαστεί η πληροφορία που είναι αποθηκευµένη στη θέση µνήµης µε διεύθυνση 0001000010010000. Τα 14 περισσότερο σηµαντικά δυαδικά ψηφία 00010000100100 της διεύθυνσης αποτελούν την ετικέτα και συγκρίνονται ταυτόχρονα µε τα δυαδικά ψηφία όλων των ετικετών που είναι αποθηκευµένες στην κρυφή µνήµη. Επειδή καµία από τις αποθηκευµένες ετικέτες δεν είναι ίδια µε τη ζητούµενη, η έξοδος επιτυχία/ αποτυχία παίρνει την τιµή 0, δηλαδή η ζητούµενη πληροφορία δεν υπάρχει στην κρυφή µνήµη. Επειδή µία κρυφή µνήµη µε οργάνωση πλήρους συσχέτισης µπορεί να περιέχει οποιοδήποτε συνδυασµό από µπλοκ της κύριας µνήµης, η κρυφή µνήµη µε οργάνωση πλήρους συσχέτισης έχει µικρότερο ρυθµό αποτυχιών από ό,τι οι κρυφές µνήµες µε άµεση οργάνωση ή οργάνωση συνόλου συσχέτισης. Ο χρόνος προσπέλασης όµως, καθώς και το κόστος υλοποίησης της κρυφής µνήµης µε οργάνωση πλήρους συσχέτισης είναι µεγαλύτερο από ό,τι στις άλλες δύο οργανώσεις. Οι παραπάνω συγκρίσεις ισχύουν βέβαια υπό την προϋπόθεση ότι όλα τα υπόλοιπα χαρακτηριστικά είναι τα ίδια. ∫ƒÀº∂™ ª¡∏ª∂™ ª∂ √ƒ°∞¡ø™∏ ∆–∆ƒ√¶ø¡ ™À¡√§√À ™À™Ã∂∆π™∏™
Στην περίπτωση αυτή η κρυφή µνήµη θεωρείται ότι αποτελείται από οµάδες των τ πλαισίων, που καλούνται σύνολα, και κάθε µπλοκ της κύριας µνήµης µπορεί να τοποθετηθεί σε οποιοδήποτε πλαίσιο ενός συγκεκριµένου συνόλου. Σε κάθε σύνολο αντιστοιχεί µία διεύθυνση. Η διεύθυνση του συνόλου της κρυφής µνήµης στο οποίο θα τοποθετηθεί το µπλοκ της κύριας µνήµης µε διεύθυνση Μ, δίνεται από το υπόλοιπο της διαίρεσης του Μ δια του πλήθους των συνόλων της κρυφής µνήµης. Σαν παράδειγµα στο σχήµα 4.17 δίνεται µία κρυφή µνήµη τεσσάρων συνόλων, όπου κάθε σύνολο αποτελείται από δύο µπλοκ, και µία κύρια µνήµη των δεκαέξι µπλοκ. Στο σύνολο µε διεύθυνση ένα µπορούν να βρίσκονται το πολύ δύο από τα µπλοκ της κύριας µνήµης, που το υπόλοιπο της διαίρεσης της διεύθυνσής τους δια του τέσσερα ισούται µε ένα, δηλαδή δύο από τα µπλοκ µε διευθύνσεις 1, 5, 9 και 13. Στο σχήµα 4.17 παρατηρούµε ότι η διεύθυνση κάθε συνόλου της κρυφής µνήµης
155
™À™∆∏ª∞ ª¡∏ª∏™
156
ισούται µε τα δύο λιγότερο σηµαντικά δυαδικά ψηφία της διεύθυνσης κάθε µπλοκ της κύριας µνήµης που µπορεί να τοποθετηθεί σ’ αυτό το πλαίσιο. Για παράδειγµα, τα δύο λιγότερο σηµαντικά δυαδικά ψηφία των διευθύνσεων 1, 5, 9 και 13, που µπορούν να τοποθετηθούν στο σύνολο µε διεύθυνση στο δυαδικό 01, είναι το 01. Θα διαπιστώσουµε στη συνέχεια ότι αυτό είναι πολύ σηµαντικό για την υλοποίηση της κρυφής µνήµης µε οργάνωση τ–τρόπων συνόλου συσχέτισης. µνήµη 0z
00z
σύνολο
1z
01z
σύνολο
2z
10z
σύνολο
3
11
σύνολο
των συνόλων
των συνόλων
µνήµη 0z 1z 2z 3z 4z 5z 6z 7z 8z 9z 10z 11z 12z 13z 14z 15
00000000z 00000001z 00000010z 00000011z 00000100z 00000101z 00000110z 00000111z 00001000z 00001001z 00001010z 00001011z 00001100z 00001101z 00001110z 00001111
™¯‹Ì· 4.17
Τρόπος αντιστοίχησης µπλοκ της κύριας µνήµης σε πλαίσια της κρυφής µνήµης. Η κρυφή µνήµη έχει οργάνωση 2–τρόπων συνόλου συσχέτισης και αποτελείται από 8 πλαίσια, ενώ η κύρια µνήµη αποτελείται από 16 µπλοκ.
Υποθέστε ότι η κύρια µνήµη αποτελείται από 2ν µπλοκ, όπου το µέγεθος κάθε µπλοκ είναι 2µ λέξεις. Τότε το µέγεθος της κύριας µνήµης είναι 2ν+µ λέξεις. Υποθέστε επίσης ότι η κρυφή µνήµη αποτελείται από 2λ σύνολα, κάθε σύνολο περιέχει 2τ πλαίσια, προφανώς λ+τ<ν, και το µέγεθος κάθε πλαισίου είναι 2µ λέξεις. Τότε το µέγεθος της κρυφής µνήµης είναι 2λ+τ+µ λέξεις. Σ’ αυτή την περίπτωση κάθε διεύθυνση που παράγει ο επεξεργαστής θεωρούµε ότι αποτελείται από τρία πεδία, που το µήκος και η σηµασία τους δίνεται στο σχήµα 4.18.
∫ƒÀº∏ ª¡∏ª∏
157
µνήµη
™¯‹Ì· 4.18
ν-λ
κ
συνόλου µνήµη
Στο σχήµα 4.19 δίνεται η υλοποίηση µιας κρυφής µνήµης µε οργάνωση 2–τρόπων συνόλου συσχέτισης. Αποτελείται από δύο µνήµες RAM, δύο συγκριτές και δύο πολυπλέκτες. Σε κάθε θέση µίας µνήµης RAM υπάρχουν ένα δυαδικό ψηφίο εγκυρότητας, τα ν–λ δυαδικά ψηφία της ετικέτας και τα δυαδικά ψηφία της πληροφορίας ενός µπλοκ. Όταν ένα µπλοκ της κύριας µνήµης υπάρχει σε ένα πλαίσιο της κρυφής µνήµης, η ετικέτα που συνδέεται µε αυτό το πλαίσιο περιέχει τα ν–λ περισσότερο σηµαντικά δυαδικά ψηφία της διεύθυνσης του µπλοκ στην κύρια µνήµη. Ας υποθέσουµε ότι ο επεξεργαστής παράγει µία διεύθυνση για να πάρει την πληροφορία που είναι αποθηκευµένη στη διεύθυνση αυτή. Τότε η διεύθυνση χρησιµοποιείται για να διευθυνσιοδοτηθεί η κύρια µνήµη. Ταυτόχρονα τα δυαδικά ψηφία του πεδίου «διεύθυνση του συνόλου στην κρυφή µνήµη» της διεύθυνσης χρησιµοποιούνται για να διευθυνσιοδοτηθούν και οι δύο µνήµες RAM της κρυφής µνήµης. Επίσης τα δυαδικά ψηφία του πεδίου «διεύθυνση της λέξης στο πλαίσιο» οδηγούν και τους δύο πολυπλέκτες για να επιλέξουν τη λέξη του πλαισίου που θα εµφανιστεί στην έξοδο κάθε πολυπλέκτη. Τα δυαδικά ψηφία του πεδίου «ετικέτα» της διεύθυνσης συγκρίνονται µε τις δύο ετικέτες που είναι αποθηκευµένες στη θέση καθεµίας από τις µνήµες RAM της κρυφής µνήµης που προσπελάστηκε. Εάν κάποια από τις δύο συγκρίσεις είχε θετικό αποτέλεσµα και το αντίστοιχο δυαδικό ψηφίο εγκυρότητας έχει την τιµή ένα, τότε η αντίστοιχη γραµµή εξόδου επιτυχία/αποτυχία λαµβάνει την τιµή ένα και ενεργοποιεί τα αντίστοιχα στοιχεία τριών καταστάσεων, ώστε η ζητούµενη λέξη από την έξοδο του πολυπλέκτη να µεταφερθεί στην αρτηρία δεδοµένων. Εάν καµία από τις δύο συγκρίσεις δεν έχει θετικό αποτέλεσµα, τότε τα δεδοµένα στην έξοδο του πολυπλέκτη αγνοούνται και το µπλοκ της κύριας µνήµης, που περιέχει τη ζητούµενη πληροφορία, προσκοµίζεται από την κύρια µνήµη στην κρυφή µνήµη.
Τρόπος χρήσης της διεύθυνσης για προσπέλαση κρυφής µνήµης µε οργάνωση τ–τρόπων συνόλου συσχέτισης.
Υλοποίηση κρυφής µνήµης µε οργάνωση 2–τρόπων συνόλου συσχέτισης.
™¯‹Ì· 4.19
0z 1z 2z 3z 4z 5z 6z 7z 8z 9z 10 0z 1z 2z 3z 4z 5z 6z 7z 8z 9z 10
158 ™À™∆∏ª∞ ª¡∏ª∏™
∫ƒÀº∏ ª¡∏ª∏
Τόσο ο χρόνος προσπέλασης όσο και ο ρυθµός αποτυχιών και το κόστος υλοποίησης µίας κρυφής µνήµης µε οργάνωση τ–τρόπων συνόλου συσχέτισης είναι µεταξύ των αντίστοιχων µεγεθών της κρυφής µνήµης άµεσης οργάνωσης και της κρυφής µνήµης µε οργάνωση πλήρους συσχέτισης, πάντα υπό την προϋπόθεση ότι τα υπόλοιπα χαρακτηριστικά είναι τα ίδια. Πρέπει να σηµειώσουµε ότι µία κρυφή µνήµη µε οργάνωση τ–τρόπων συνόλου συσχέτισης, όπου τ=1, έχει ένα πλαίσιο ανά σύνολο, εποµένως είναι άµεσης οργάνωσης. Επίσης σε µία κρυφή µνήµη µε οργάνωση τ–τρόπων συνόλου συσχέτισης, διατηρώντας τη χωρητικότητά της και το µέγεθος του πλαισίου σταθερά, κάθε φορά που διπλασιάζουµε την τιµή του τ υποδιπλασιάζεται ο αριθµός των συνόλων της κρυφής µνήµης. Εποµένως ελαττώνεται κατά ένα δυαδικό ψηφίο το πεδίο “διεύθυνση του συνόλου στην κρυφή µνήµη” της διεύθυνσης. Όταν ο αριθµός των πλαισίων ανά σύνολο γίνει ίσος µε τον αριθµό των µπλοκ στην κρυφή µνήµη τότε η κρυφή µνήµη έχει οργάνωση πλήρους συσχέτισης. 4.3.3 ™ÙÚ·ÙËÁÈ΋ ·ÂÏ¢ı¤ÚˆÛ˘ Ï·ÈÛ›ˆÓ Ù˘ ÎÚ˘Ê‹˜ ÌÓ‹Ì˘ ÁÈ· ÙËÓ ÚÔÛÎfiÌÈÛË ÌÏÔÎ Ù˘ ·ÚÈ·˜ ÌÓ‹Ì˘ (replacement policy)
Όταν η ΚΜΕ ζητήσει κάποια πληροφορία, δεδοµένα ή εντολή, από την κρυφή µνήµη και αυτή δεν υπάρχει στην κρυφή µνήµη, θα πρέπει ένα µπλοκ της κύριας µνήµης, που περιέχει τα απαιτούµενα δεδοµένα, να προσκοµιστεί στην κρυφή µνήµη. Εάν η κρυφή µνήµη είναι γεµάτη, τότε το µπλοκ που θα προσκοµιστεί πρέπει να αντικαταστήσει ένα άλλο. Η στρατηγική απελευθέρωσης (replacement policy) πλαισίων της κρυφής µνήµης για την προσκόµιση µπλοκ της κύριας µνήµης είναι αυτή που καθορίζει το πλαίσιο που θα αντικατασταθεί. Στην περίπτωση κρυφής µνήµης άµεσης οργάνωσης, όπως είδαµε, ένα µπλοκ της κύριας µνήµης µπορεί να τοποθετηθεί µόνο σε ένα πλαίσιο της κρυφής µνήµης, εποµένως η στρατηγική απελευθέρωσης πλαισίων της κρυφής µνήµης για την προσκόµιση µπλοκ της κύριας µνήµης είναι τετριµµένη και φυσικά απαιτεί το ελάχιστο υλικό για την υλοποίησή της. Στην περίπτωση κρυφής µνήµης πλήρως συσχετιστικής ή συνόλου συσχέτισης ένα µπλοκ της κύριας µνήµης µπορεί να τοποθετηθεί σε περισσότερα από ένα πλαίσια της κρυφής µνήµης, εποµένως πρέπει να επιλεγεί ένα από αυτά. Υπάρχουν τρεις κύριες στρατηγικές που µπορούν να χρησιµοποιηθούν για τον προσδιορισµό του πλαισίου που πρέπει να αντικατασταθεί:
159
160
™À™∆∏ª∞ ª¡∏ª∏™
• Τυχαία επιλογή (Random policy). Στην περίπτωση αυτή το προς αντικατάσταση πλαίσιο επιλέγεται τυχαία. • Επιλογή του µη χρησιµοποιηθέντος πρόσφατα (Least–Recently Used, LRU, policy). Η στρατηγική αυτή βασίζει την επιτυχία της στην τοπικότητα των αναφορών. Εάν τα πρόσφατα χρησιµοποιηθέντα πλαίσια είναι περισσότερο πιθανόν να χρησιµοποιηθούν στο άµεσο µέλλον, τότε λιγότερο πιθανόν είναι να χρησιµοποιηθούν αυτά που έχουν µεγάλο χρονικό διάστηµα να χρησιµοποιηθούν. Για να ελαττωθεί λοιπόν η πιθανότητα να αποµακρύνουµε κάποια πληροφορία που θα χρειαστεί στο άµεσο µέλλον, η εφαρµογή αυτής της στρατηγικής έχει σαν συνέπεια την αντικατάσταση εκείνου του πλαισίου που έχει να χρησιµοποιηθεί το µεγαλύτερο χρονικό διάστηµα. Για να µπορεί να υλοποιηθεί αυτή η στρατηγική, ο ελεγκτής της κρυφής µνήµης κρατάει πληροφορία για τις προσπελάσεις που γίνονται σε κάθε πλαίσιο. • Επιλογή του πλαισίου που προσκοµίστηκε πρώτο στην κρυφή µνήµη (First–In/First–Out, FIFO, policy). Βάσει αυτής της στρατηγικής αποµακρύνεται το πλαίσιο που προσκοµίστηκε πρώτο στην κρυφή µνήµη. Το πλεονέκτηµα της τυχαίας επιλογής είναι η ευκολία υλοποίησής της σε υλικό. Καθώς το πλήθος των πλαισίων της κρυφής µνήµης αυξάνεται, το κόστος υλοποίησης της επιλογής του µη πρόσφατα χρησιµοποιηθέντος πλαισίου αυξάνεται. Για το λόγο αυτό υλοποιούνται συνήθως προσεγγίσεις αυτής της στρατηγικής. Ο λόγος αποτυχίας αυξάνεται όταν αντί της στρατηγικής του µη πρόσφατα χρησιµοποιηθέντος πλαισίου, χρησιµοποιηθεί η στρατηγική της τυχαίας επιλογής και ακόµη περισσότερο όταν χρησιµοποιηθεί η στρατηγική της επιλογής πλαισίου που προσκοµίστηκε πρώτο στην κρυφή µνήµη. Οι διαφορές µικραίνουν σηµαντικά καθώς η χωρητικότητα της κρυφής µνήµης αυξάνεται. 4.3.4 ∆·ÎÙÈ΋ ÂÓË̤ڈÛ˘ ÙÔ˘ ÂfiÌÂÓÔ˘ ÂȤ‰Ô˘ Ù˘ ÈÂÚ·Ú¯È΋˜ ÌÓ‹Ì˘
Το ποσοστό των λειτουργιών εγγραφής στη µνήµη που λαµβάνουν χώρα κατά την εκτέλεση ενός προγράµµατος είναι πάρα πολύ µικρότερο από το ποσοστό των λειτουργιών ανάγνωσης από τη µνήµη. Γενικά σε κάθε τέσσερα, τουλάχιστον, διαβάσµατα από τη µνήµη αντιστοιχεί µία εγγραφή. Αυτό οφείλεται αφενός στο γεγονός ότι όλες οι προσπελάσεις εντολών είναι λειτουργίες ανάγνωσης από την µνήµη και αφετέρου στο ότι οι περισσότερες προσπελά-
∫ƒÀº∏ ª¡∏ª∏
σεις δεδοµένων είναι προσπελάσεις ανάγνωσης. Αυτό οφείλεται στο γεγονός ότι όλα τα δεδοµένα διαβάζονται από τη µνήµη, ενώ τα ενδιάµεσα αποτελέσµατα δεν αποθηκεύονται πάντα στη µνήµη, κρατούνται στους καταχωρητές. Κατά τη διαδικασία ανάγνωσης της κρυφής µνήµης η ανάγνωση του µπλοκ της πληροφορίας µπορεί να ξεκινήσει την ίδια χρονική στιγµή που ξεκινάει το διάβασµα της ετικέτας. Στην περίπτωση που έχουµε επιτυχία η ζητούµενη πληροφορία πηγαίνει στην ΚΜΕ. Στην περίπτωση αποτυχίας δεν υπάρχει κάποιο όφελος, αλλά ούτε και ζηµιά, απλά αγνοείται η πληροφορία που διαβάστηκε. Στην περίπτωση εγγραφής τα πράγµατα είναι διαφορετικά. Τροποποίηση ενός µπλοκ δεν µπορεί να ξεκινήσει έως ότου διαβαστεί η ετικέτα και διαπιστωθεί ότι πράγµατι το µπλοκ είναι το ζητούµενο. Εποµένως, το γράψιµο πληροφορίας από την ΚΜΕ στην κρυφή µνήµη είναι πιο χρονοβόρα διαδικασία από ό,τι η ανάγνωση. Για την περίπτωση που το µπλοκ στο οποίο ανήκει η πληροφορία που θα γραφεί από την ΚΜΕ στη µνήµη βρίσκεται στην κρυφή µνήµη, ο σχεδιαστής της κρυφής µνήµης πρέπει να επιλέξει µεταξύ των επόµενων δύο τακτικών ενηµέρωσης (updade policy): • Η τακτική της άµεσης ενηµέρωσης (write through ή store through). Η πληροφορία γράφεται ταυτόχρονα τόσο στο πλαίσιο της κρυφής µνήµης όσο και στο µπλοκ του επόµενου επιπέδου της ιεραρχικής µνήµης. • Η τακτική της τελικής ενηµέρωσης (write back ή copy back ή store in). Σε κάθε λέξη της κρυφής µνήµης αντιστοιχεί ένα δυαδικό ψηφίο που καλείται σηµαία αλλαγής (dirty bit) και τίθεται όταν η συγκεκριµένη λέξη τροποποιηθεί. Η αντίστοιχη λέξη της κύριας µνήµης ενηµερώνεται µόνο όταν το µπλοκ που περιέχει την τροποποιηµένη λέξη πρόκειται να αντικατασταθεί στην κρυφή µνήµη από ένα άλλο µπλοκ της κύριας µνήµης. Και οι δύο τακτικές έχουν τα πλεονεκτήµατά τους. Με την τακτική της τελικής ενηµέρωσης η εγγραφή γίνεται µε την ταχύτητα εγγραφής στην κρυφή µνήµη και πολλαπλές εγγραφές µέσα σε ένα µπλοκ απαιτούν µόνο µία εγγραφή στην κύρια µνήµη. Εποµένως ελαττώνεται η κυκλοφορία πληροφορίας στην αρτηρία διασύνδεσης κρυφής και κύριας µνήµης. Η τακτική της άµεσης ενηµέρωσης έχει το µικρότερο κόστος υλοποίησης σε υλικό και επιπλέον το πλεονέκτηµα ότι η κύρια µνήµη έχει το πλέον πρόσφατο αντίγραφο των δεδοµένων. Εποµένως, υπάρχει συνέπεια µεταξύ των δεδοµένων που κρατούνται στην κρυφή και κύρια µνήµη.
161
162
™À™∆∏ª∞ ª¡∏ª∏™
Για την περίπτωση που το µπλοκ στο οποίο ανήκει η πληροφορία που θα γραφεί από την ΚΜΕ στη µνήµη δεν βρίσκεται στην κρυφή µνήµη, ο σχεδιαστής της κρυφής µνήµης πρέπει επίσης να επιλέξει µεταξύ δύο τακτικών: • Τακτική προσκόµισης κατά την εγγραφή (write allocate ή fetch on write). Το µπλοκ προσκοµίζεται από την κύρια µνήµη στην κρυφή και ακολουθείται η τακτική της άµεσης ενηµέρωσης ή η τακτική της τελικής ενηµέρωσης ανάλογα µε το ποια από τις δύο έχει υλοποιηθεί. • Τακτική µη προσκόµισης κατά την εγγραφή (no–write allocate ή write around). Η πληροφορία αποθηκεύεται κατευθείαν στην κύρια µνήµη στο µπλοκ που αντιστοιχεί. Αν και οποιαδήποτε από τις τακτικές προσκόµισης ή µη προσκόµισης κατά την εγγραφή µπορεί να συνδυαστεί µε οποιαδήποτε από τις τακτικές άµεσης ή τελικής ενηµέρωσης, συνήθως η τακτική τελικής ενηµέρωσης συνδυάζεται µε την τακτική προσκόµισης κατά την εγγραφή, ελπίζοντας ότι επόµενες εγγραφές σ’ αυτό το µπλοκ θα γίνουν στην κρυφή µνήµη. Οι κρυφές µνήµες που υλοποιούν την τακτική της άµεσης ενηµέρωσης συνήθως υλοποιούν την τακτική µη προσκόµισης κατά την εγγραφή, επειδή οι επόµενες εγγραφές σ’ αυτό το µπλοκ ούτως ή άλλως θα πρέπει να γίνουν και στη µνήµη.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.5
α. Αναφέρετε δύο τακτικές προσκόµισης µπλοκ πληροφορίας από την κύρια µνήµη στην κρυφή µνήµη. β. Σχολιάστε πότε καθεµία από τις δύο τακτικές προσκόµισης µπλοκ πληροφορίας από την κύρια µνήµη στην κρυφή είναι πιο αποτελεσµατική, δηλαδή συνεισφέρει ώστε ο υπολογιστής να έχει µεγαλύτερη απόδοση.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.6
α. Αναφέρετε τους τρόπους οργάνωσης της κρυφής µνήµης και τα πλεονεκτήµατα και µειονεκτήµατα κάθε τρόπου οργάνωσης.
∫ƒÀº∏ ª¡∏ª∏
Θεωρήστε ότι µία κρυφή µνήµη άµεσης οργάνωσης αποτελείται από τέσσερα πλαίσια, ενώ η κύρια µνήµη αποτελείται από 16 µπλοκ. Αναφέρετε τη διεύθυνση του πλαισίου στην οποία µπορούν να αποθηκευτούν τα µπλοκ της κύριας µνήµης µε διευθύνσεις 3, 4, 6, 8, 9, 12 και 13. Σηµειώστε ότι ποτέ η κρυφή και η κύρια µνήµη δεν είναι τόσο µικρής χωρητικότητας. Στην άσκηση αυτή τις θεωρούµε τόσο µικρές για διευκόλυνση του αναγνώστη.
Θεωρήστε έναν υπολογιστή µε εύρος αρτηρίας διευθύνσεων των 32 δυαδικών ψηφίων και ότι η κύρια µνήµη είναι οργανωµένη σε λέξεις των 8 δυαδικών ψηφίων ανά θέση µνήµης. Θεωρήστε επίσης ότι η κρυφή µνήµη είναι άµεσης οργάνωσης µε χωρητικότητα 16 Κλέξεις και τέσσερις λέξεις των 8 δυαδικών ψηφίων ανά πλαίσιο.
163
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.7
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.8
α. Πόσα µπλοκ της κύριας µνήµης µπορούν να αποθηκευτούν στο ίδιο πλαίσιο της κρυφής µνήµης; β. Προσδιορίστε το πλαίσιο της κρυφής µνήµης, στο οποίο µπορεί να αποθηκευτεί η λέξη που είναι αποθηκευµένη στη θέση µε διεύθυνση 690F8(16). γ. Προσδιορίστε τις διευθύνσεις όλων των µπλοκ της κύριας µνήµης, που µπορούν να αποθηκευτούν στο πλαίσιο µε διεύθυνση 960(16).
Θεωρήστε έναν υπολογιστή µε εύρος αρτηρίας διευθύνσεων των 32 δυαδικών ψηφίων και ότι η κύρια µνήµη είναι οργανωµένη σε λέξεις των 16 δυαδικών ψηφίων ανά θέση µνήµης. Θεωρήστε επίσης ότι η κρυφή µνήµη είναι πλήρους συσχέτισης µε χωρητικότητα 8 Κλέξεις και τέσσερις λέξεις ανά πλαίσιο. α. Προσδιορίστε το πλαίσιο της κρυφής µνήµης, στο οποίο µπορεί να αποθηκευτεί η λέξη που είναι αποθηκευµένη στη θέση µε διεύθυνση Α79233(16).
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.9
™À™∆∏ª∞ ª¡∏ª∏™
164
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.10
Θεωρήστε έναν υπολογιστή µε εύρος αρτηρίας διευθύνσεων των 32 δυαδικών ψηφίων και ότι η κύρια µνήµη είναι οργανωµένη σε λέξεις των 16 δυαδικών ψηφίων ανά θέση µνήµης. Θεωρήστε επίσης ότι η κρυφή µνήµη έχει οργάνωση 4–τρόπων συνόλου συσχέτισης µε χωρητικότητα 64 Κλέξεις και τέσσερις λέξεις των 16 δυαδικών ψηφίων ανά πλαίσιο. α. Πόσα µπλοκ της κύριας µνήµης µπορούν να αποθηκευτούν στο ίδιο πλαίσιο της κρυφής µνήµης; β. Προσδιορίστε το πλαίσιο της κρυφής µνήµης, στο οποίο µπορεί να αποθηκευτεί η λέξη που είναι αποθηκευµένη στη θέση µε διεύθυνση 960F8(16). γ. Προσδιορίστε τις διευθύνσεις όλων των µπλοκ της κύριας µνήµης, που µπορούν να αποθηκευτούν στο σύνολο µε διεύθυνση 60(16).
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.11
Αναφέρετε τρεις στρατηγικές απελευθέρωσης πλαισίων της κρυφής µνήµης για προσκόµιση µπλοκ της κύριας µνήµης στις κρυφές µνήµες πλήρους συσχέτισης και τ–τρόπων συνόλου συσχέτισης.
™‡ÓÔ„Ë EÓfiÙËÙ·˜ Στην ενότητα αυτή αναφερθήκαµε στην κρυφή µνήµη µεταξύ ΚΜΕ και κύριας µνήµης. Υπενθυµίζουµε ότι σε ένα υπολογιστικό σύστηµα υπάρχει συνήθως κρυφή µνήµη και µεταξύ κύριας µνήµης και βοηθητικής µνήµης, γι' αυτήν όµως την κρυφή µνήµη µιλήσαµε στο κεφάλαιο 1. Τα κύρια χαρακτηριστικά της κρυφής µνήµης καθορίζονται από την τακτική προσκόµισης µπλοκ πληροφορίας από την κύρια στην κρυφή µνήµη, τον τρόπο απεικόνισης µπλοκ της κύριας µνήµης σε πλαίσια της κρυφής µνήµης, την στρατηγική απελευθέρωσης πλαισίων της κρυφής µνήµης για την προσκόµιση µπλοκ της κύριας µνήµης, καθώς και την τακτική ενηµέρωσης του επόµενου επιπέδου της ιεραρχικής µνήµης. Όσον αφορά στην προσκόµιση µπλοκ πληροφορίας από την κύρια στην κρυφή µνήµη διακρίνουµε δύο τακτικές, την προσκόµιση ενός µπλοκ από την κύρια µνήµη στην κρυφή όταν αυτό απαιτείται και την εκ των προτέρων. Ανάλογα µε τον τρόπο απεικόνισης µπλοκ της κύριας µνήµης σε πλαίσια της κρυφής µνήµης διακρίνουµε κρυφές
∫ƒÀº∏ ª¡∏ª∏
µνήµες µε άµεση οργάνωση, µε οργάνωση πλήρους συσχέτισης και µε οργάνωση τ–τρόπων συνόλου συσχέτισης. Μεταξύ κρυφών µνηµών της ίδιας τεχνολογίας και χωρητικότητας οι κρυφές µνήµες άµεσης οργάνωσης έχουν το µικρότερο κόστος υλοποίησης, αλλά και το µικρότερο λόγο επιτυχίας. Οι κρυφές µνήµες πλήρους συσχέτισης έχουν το µεγαλύτερο κόστος, αλλά και το µεγαλύτερο λόγο επιτυχίας, ενώ οι κρυφές µνήµες µε οργάνωση τ–τρόπων συνόλου συσχέτισης έχουν ενδιάµεσο κόστος και λόγο επιτυχίας. Όσον αφορά στη στρατηγική απελευθέρωσης πλαισίων της κρυφής µνήµης για την προσκόµιση µπλοκ της κύριας µνήµης στις κρυφές µνήµες άµεσης οργάνωσης αυτή είναι εκφυλισµένη, διότι κάθε µπλοκ της κύριας µνήµης µπορεί να µεταφερθεί µόνο σε ένα συγκεκριµένο πλαίσιο της κρυφής µνήµης. Στην περίπτωση κρυφής µνήµης πλήρως συσχετιστικής ή συνόλου συσχέτισης ένα µπλοκ της κύριας µνήµης µπορεί να τοποθετηθεί σε περισσότερα από ένα πλαίσια της κρυφής µνήµης, εποµένως πρέπει να επιλεγεί ένα από αυτά. Υπάρχουν τρεις κύριες στρατηγικές που µπορούν να χρησιµοποιηθούν για τον προσδιορισµό του πλαισίου που πρέπει να αντικατασταθεί: τυχαία επιλογή, επιλογή του µη χρησιµοποιηθέντος πρόσφατα µπλοκ και επιλογή του πλαισίου που προσκοµίστηκε πρώτο στην κρυφή µνήµη. Η τακτική ενηµέρωσης του επόµενου επιπέδου της ιεραρχικής µνήµης καθορίζει τι θα συµβεί στην περίπτωση που το µπλοκ, στο οποίο ανήκει η πληροφορία που θα γραφεί από την ΚΜΕ στη µνήµη, βρίσκεται στην κρυφή µνήµη. Γι' αυτήν την περίπτωση ο σχεδιαστής της κρυφής µνήµης πρέπει να επιλέξει µεταξύ της τακτικής άµεσης ενηµέρωσης και της τακτικής της τελικής ενηµέρωσης. Καθεµία από τις τακτικές αυτές έχει τα πλεονεκτήµατά της. Για την περίπτωση που το µπλοκ στο οποίο ανήκει η πληροφορία που θα γραφεί από την ΚΜΕ στη µνήµη δεν βρίσκεται στην κρυφή µνήµη, ο σχεδιαστής της κρυφής µνήµης πρέπει να επιλέξει µεταξύ της τακτικής προσκόµισης κατά την εγγραφή και της τακτικής µη προσκόµισης κατά την εγγραφή.
165
™À™∆∏ª∞ ª¡∏ª∏™
166
4.4 ∫‡ÚÈ· ÌÓ‹ÌË
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να µάθετε αφενός τους τρόπους οργάνωσης της κύριας µνήµης, αφετέρου δε πώς ορίζεται ο ρυθµός µεταφοράς πληροφορίας της µνήµης και από ποιους παράγοντες εξαρτάται. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα µπορείτε να: • κατανοήσετε τους τρόπους οργάνωσης της κύριας µνήµης • κατανοήσετε τα πλεονεκτήµατα και τα µειονεκτήµατα κάθε τρόπου οργάνωσης της κύριας µνήµης • επιλέξετε σε κάθε περίπτωση την οργάνωση της κύριας µνήµης που εξυπηρετεί καλύτερα τις ανάγκες του συστήµατος ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Στην ενότητα αυτή µελετάµε δύο διαφορετικούς τρόπους οργάνωσης της κύριας µνήµης, καθώς και τα πλεονεκτήµατα κάθε τρόπου. ∫Àƒπ∞ ª¡∏ª∏
Ο ρυθµός µεταφοράς δεδοµένων (data–transfer rate ή bandwidth) της µνήµης δίνεται από τον αριθµό των δυαδικών ψηφίων που µπορούν να προσπελαστούν ανά δευτερόλεπτο. Για παράδειγµα, αν ο χρόνος κύκλου της µνήµης είναι 50 ns και προσπελαύνονται 32 δυαδικά ψηφία ανά κύκλο µνήµης, ο ρυθµός µεταφοράς δεδοµένων είναι 640 Mbits το δευτερόλεπτο. Οι κύριοι παράγοντες, οι οποίοι επηρεάζουν το ρυθµό µεταφοράς δεδοµένων, είναι η διαµόρφωση της µνήµης (memory configuration) και τα χαρακτηριστικά των ολοκληρωµένων κυκλωµάτων µνήµης που χρησιµοποιούνται για την υλοποίηση της κύριας µνήµης. Ορίζουµε σαν τµήµα της κύριας µνήµης ένα µέρος της κύριας µνήµης που αποτελείται από ένα ή περισσότερα ολοκληρωµένα κυκλώµατα µνήµης. Τα χαρακτηριστικά του τµήµατος µνήµης περιλαµβάνουν το εύρος της µονάδας µνήµης, το χρόνο προσπέλασης και το χρόνο κύκλου της µνήµης. Ο χρόνος προσπέλασης και ο χρόνος κύκλου µιας µονάδας µνήµης εξαρτώνται από την τεχνολογία µε την οποία είναι κατασκευασµένο το τµήµα µνήµης. Η διαµόρφωση της µνήµης χαρα-
∫Àƒπ∞ ª¡∏ª∏
167
κτηρίζεται από τον αριθµό των τµηµάτων µνήµης που χρησιµοποιούνται, τον τρόπο κατανοµής των διευθύνσεων µεταξύ αυτών και το εύρος της αρτηρίας δεδοµένων. Είναι προφανές ότι ο ρυθµός µεταφοράς δεδοµένων της µνήµης πρέπει να εναρµονίζεται µε τον αριθµό απαιτήσεων (demand rate) του επεξεργαστή. Υποθέστε ότι η χωρητικότητα της κυρίας µνήµης είναι Ν=2n λέξεις. Τότε η φυσική διεύθυνση µιας θέσης µνήµης συνίσταται από n δυαδικά ψηφία αn–1αn–2….α1α0. Επίσης υποθέστε ότι η κύρια µνήµη αποτελείται από Μ=2m τµήµατα µνήµης. Εποµένως κάθε τµήµα περιέχει 2n/2m= 2n–m διευθύνσεις. Υπάρχουν δύο τρόποι κατανοµής των διευθύνσεων στα Μ τµήµατα της µνήµης.
επιλογή τµήµατοςz (µ δυαδικά ψηφία) µ
επιλογή διεύθυνσης σε κάθε τµήµαz (ν-µ δυαδικά ψηφία)
ν-µ ανάγνωση/εγγραφή
αποκωδικοποιητής
τµήµα 0
τµήµα 1
τµήµα 2µ-1
αρτηρία δεδοµένων ™¯‹Ì· 4.20
Κύρια µνήµη µε οργάνωση υψηλής τάξης διαφύλλωση.
168
™À™∆∏ª∞ ª¡∏ª∏™
Σύµφωνα µε τη µια µέθοδο οι διευθύνσεις κατανέµονται στα Μ=2m τµήµατα µνήµης έτσι ώστε το πρώτο τµήµα µνήµης να περιέχει τις διαδοχικές διευθύνσεις από 0 έως και 2n–m–1, το δεύτερο τµήµα τις διευθύνσεις από 2n–m έως και 2 · 2n–m–1 κλπ. Γενικά το τµήµα µνήµης i, µε 0 ≤ i ≤ M–1, περιέχει τις διαδοχικές διευθύνσεις από i . 2n–m µέχρι και (i+1) · 2n–m–1. Αυτή η κατανοµή διευθύνσεων συνεπάγεται ότι τα m περισσότερο σηµαντικά δυαδικά ψηφία της διεύθυνσης χρησιµοποιούνται για την επιλογή του τµήµατος µνήµης, ενώ τα υπόλοιπα n–m λιγότερο σηµαντικά δυαδικά ψηφία χρησιµοποιούνται για την επιλογή της διεύθυνσης µέσα στο τµήµα µνήµης, όπως φαίνεται στο Σχήµα 4.20. Συχνά αυτός ο τρόπος κατανοµής των διευθύνσεων µεταξύ των τµηµάτων της µνήµης καλείται υψηλής τάξης διαφύλλωση µνήµης (high–order interleaving). Αυτός ο τρόπος κατανοµής των διευθύνσεων µεταξύ των τµηµάτων της µνήµης έχει το πλεονέκτηµα ότι επιτρέπει εύκολη επέκταση της µνήµης προσθέτοντας ένα ή περισσότερα τµήµατα µνήµης έως ότου φτάσουµε τη µέγιστη τιµή Μ–1. Ωστόσο η τοποθέτηση διαδοχικών διευθύνσεων µνήµης στο ίδιο τµήµα µνήµης µπορεί να δηµιουργήσει καθυστερήσεις σε κάποιες περιπτώσεις, όπως στην περίπτωση συστηµάτων συνεχούς διοχέτευσης (µε αυτά θα ασχοληθείτε στο µάθηµα Αρχιτεκτονική 2) . Σύµφωνα µε την άλλη µέθοδο κατανοµής διευθύνσεων µεταξύ των µονάδων µνήµης οι διευθύνσεις κατανέµονται έτσι ώστε διαδοχικές διευθύνσεις να ανήκουν σε διαδοχικά τµήµατα µνήµης. Αυτή η κατανοµή διευθύνσεων συνεπάγεται ότι τα m λιγότερο σηµαντικά ψηφία της διεύθυνσης επιλέγουν τη µονάδα µνήµης και τα υπόλοιπα n–m δυαδικά ψηφία επιλέγουν τη διεύθυνση µέσα σε κάθε µονάδα µνήµης. ∆ηλαδή, αν έχουµε Ν=2m µονάδες µνήµης, τότε οι διευθύνσεις 0, 1, 2, …., i,…. κατανέµονται στις Ν µονάδες µνήµης σύµφωνα µε τον κανόνα: η διεύθυνση i ανήκει στη µονάδα µνήµης Μj εάν i=j(mod N). Αυτός ο τρόπος οργάνωσης της κύριας µνήµης καλείται Ν–δρόµων χαµηλής τάξης διαφύλλωση µνήµης (Ν–way low–order interleaving). Το µεγάλο πλεονέκτηµα της οργάνωσης Ν–δρόµων χαµηλής τάξης διαφύλλωσης είναι ότι τα περιεχόµενα Ν θέσεων µνήµης µε διαδοχικές διευθύνσεις µπορούν να προσπελαστούν ταυτόχρονα σ’ έναν κύκλο µνήµης.
™À¡√æ∏ K∂º∞§∞π√À
Υποθέστε ότι η κύρια µνήµη υλοποιείται µε τέσσαρα τµήµατα µνήµης και ότι η χωρητικότητα κάθε τµήµατος είναι 1 Μψηφιολέξεις. Αναφέρετε πώς κατανέµονται οι διευθύνσεις στην περίπτωση που: α. Η κύρια µνήµη έχει οργάνωση υψηλής τάξης διαφύλλωσης. β. Η κύρια µνήµη έχει οργάνωση 4–δρόµων χαµηλής τάξης διαφύλλωσης.
™‡ÓÔ„Ë KÂÊ·Ï·›Ô˘ Ο κύριος σκοπός στο σχεδιασµό ενός συστήµατος µνήµης είναι να προσφέρουµε επαρκή χωρητικότητα αποθήκευσης διατηρώντας ένα αποδεκτό επίπεδο µέσης απόδοσης και επίσης χαµηλό µέσο κόστος ανά δυαδικό ψηφίο. Αυτό επιτυγχάνεται χρησιµοποιώντας έναν αριθµό από διαφορετικές µονάδες µνήµης µε διαφορετικούς λόγους κόστους/απόδοσης και το σχηµατισµό µίας ιεραρχίας µνηµών. Για την υλοποίηση των κρυφών µνηµών και της κύριας µνήµης χρησιµοποιούνται ηµιαγωγικές µνήµες, ενώ για την υλοποίηση της βοηθητικής µνήµης χρησιµοποιούνται µνήµες µαγνητικών δίσκων. Για την υλοποίηση µνήµης υποστήριξης χρησιµοποιούνται µνήµες µαγνητικών ταινιών. Τα κύρια χαρακτηριστικά των ηµιαγωγικών µνηµών, που χρησιµοποιούνται για την υλοποίηση των κρυφών µνηµών και της κύριας µνήµης, είναι ο µικρός χρόνος προσπέλασης, ο οποίος είναι σταθερός ανεξάρτητα από τη διεύθυνση της θέσης µνήµης που προσπελαύνεται, είναι µνήµες ανάγνωσης/εγγραφής και η πληροφορία που είναι αποθηκευµένη σ` αυτές χάνεται όταν κοπεί η τροφοδοσία. Τα κύρια χαρακτηριστικά των µνηµών που χρησιµοποιούνται για την υλοποίηση της βοηθητικής µνήµης και της µνήµης υποστήριξης είναι το πολύ µικρό κόστος ανά δυαδικό ψηφίο αποθηκευµένης πληροφορίας και ότι διατηρούν την αποθηκευµένη πληροφορία και µετά τη διακοπή της τροφοδοσίας. Ο χρόνος όµως προσπέλασης πληροφορίας που είναι αποθηκευµένη σ' αυτές τις µνήµες είναι πολύ µεγαλύτερος από ότι στις ηµιαγωγικές µνήµες. Σ' έναν υπολογιστή η ιεραρχία µνηµών οργανώνεται κατά τέτοιο τρόπο ώστε ό,τι πληροφορία υπάρχει στη µνήµη ενός επιπέδου i να υπάρχει και στη µνήµη οποιουδήποτε άλλου επιπέδου j που βρίσκεται πιο µακριά από την ΚΜΕ από το επίπεδο i. Στην ιεραρχία µνηµών όσο αποµακρυνόµαστε από την ΚΜΕ, η χωρητικότητα και ο χρόνος προσπέλασης της µνήµης αυξάνεται, ενώ το
169
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.12
170
™À™∆∏ª∞ ª¡∏ª∏™
κόστος ανά δυαδικό ψηφίο µειώνεται. Η επιτυχία της ιεραρχίας µνηµών οφείλεται σε µία ιδιότητα που έχουν τα περισσότερα προγράµµατα και καλείται τοπικότητα των αναφορών. Στα σύγχρονα υπολογιστικά συστήµατα η ιεραρχία µνηµών αποτελείται συνήθως από ένα ή δύο επίπεδα κρυφής µνήµης, την κύρια µνήµη και τη βοηθητική µνήµη. Οι κρυφές µνήµες ανάλογα µε τον τρόπο απεικόνισης µπλοκ της κύριας µνήµης σε πλαίσια της κρυφής µνήµης διακρίνονται σε κρυφές µνήµες άµεσης οργάνωσης, πλήρους συσχέτισης και τ–τρόπων συνόλου συσχέτισης. Μεταξύ κρυφών µνηµών της ίδιας τεχνολογίας και ίσης χωρητικότητας οι µνήµες άµεσης οργάνωσης έχουν το µικρότερο κόστος αλλά και το µεγαλύτερο λόγο αποτυχίας, αντίθετα οι κρυφές µνήµες πλήρους συσχέτισης έχουν το µεγαλύτερο κόστος αλλά και το µικρότερο λόγο αποτυχίας. Οι κρυφές µνήµες µε οργάνωση τ–τρόπων συνόλου συσχέτισης τόσο όσον αφορά στο κόστος όσο και στο λόγο αποτυχίας βρίσκονται µεταξύ των µνηµών άµεσης οργάνωσης και των κρυφών µνηµών πλήρους συσχέτισης. Οι κύριοι παράγοντες που επηρεάζουν το ρυθµό µεταφοράς δεδοµένων από και προς την κύρια µνήµη είναι η διαµόρφωση της κύριας µνήµης και τα χαρακτηριστικά των ολοκληρωµένων κυκλωµάτων που χρησιµοποιούνται για την υλοποίησή της. Υπάρχουν δύο διαφορετικοί τρόποι διαµόρφωσης της κύριας µνήµης. Σύµφωνα µε τον πρώτο τρόπο, που καλείται υψηλής τάξης διαφύλλωση µνήµης, διαδοχικές διευθύνσεις αντιστοιχούνται σε διαδοχικές θέσεις του ίδιου τµήµατος µνήµης. Σύµφωνα µε το δεύτερο τρόπο, που καλείται χαµηλής τάξης διαφύλλωση µνήµης, διαδοχικές διευθύνσεις αντιστοιχούνται σε διαδοχικά τµήµατα µνήµης. Το µεγάλο πλεονέκτηµα της οργάνωσης Ν–δρόµων χαµηλής τάξης διαφύλλωσης είναι ότι τα περιεχόµενα Ν θέσεων µνήµης µε διαδοχικές διευθύνσεις µπορούν να προσπελαστούν ταυτόχρονα σ’ έναν κύκλο µνήµης.
∫
™‡ÛÙËÌ· ¢È·Û‡Ó‰ÂÛ˘ Î·È ∂ÈÛfi‰Ô˘–∂Ífi‰Ô˘ ™ÎÔfi˜ Σκοπός του κεφαλαίου αυτού είναι να µάθετε εναλλακτικούς τρόπους διασύνδεσης των µονάδων του υπολογιστή και τη διαδικασία εισόδου–εξόδου. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει αυτό το κεφάλαιο: • θα κατανοήσετε τη σπουδαιότητα του συστήµατος διασύνδεσης των µονάδων του υπολογιστή • θα µπορείτε να περιγράψετε τον τρόπο λειτουργίας της διαδικασίας εισόδου–εξόδου • θα µπορείτε να εκτιµήσετε τον τρόπο µε τον οποίο το σύστηµα διασύνδεσης και η διαδικασία εισόδου/εξόδου επηρεάζουν την απόδοση ενός υπολογιστικού συστήµατος ŒÓÓÔȘ ÎÏÂȉȿ • Aρτηρία αποκλειστικής χρήσης
• ∆ιαιτησία
• Aρτηρία κοινής χρήσης
• Προγραµµατισµένη διαδικασία εισόδου/εξόδου
• Aρτηρία επεξεργαστή–µνήµης • Aρτηρία συστήµατος • Aρτηρία εισόδου εξόδου
• Σήµατα διακοπής • Άµεση προσπέλαση µνήµης
• Σύγχρονες και ασύγχρονες αρτηρίες ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Το κεφάλαιο αυτό αποτελείται από δύο ενότητες. Στην πρώτη ενότητα παρουσιάζουµε τις αρτηρίες και τα κύρια χαρακτηριστικά τους. Στη δεύτερη ενότητα παρουσιάζουµε τη διαδικασία εισόδου/εξόδου πληροφορίας προς και από τον υπολογιστή.
5 ∂
º
∞
§
∞
π
√
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
172
5.1 ∞ÚÙËڛ˜ (Buses)
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να µάθετε τα διάφορα είδη αρτηριών (buses) που χρησιµοποιούνται σε ένα υπολογιστικό σύστηµα και τα χαρακτηριστικά κάθε είδους. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα µπορείτε να: • περιγράψετε τα κύρια χαρακτηριστικά κάθε είδους αρτηρίας • να διακρίνετε τις διαφορές µεταξύ αρτηριών διαφορετικού είδους • αποφασίσετε εάν µία µονάδα εισόδου/εξόδου µπορεί να συνδεθεί σε έναν υπολογιστή, βασιζόµενοι στη γνώση των αρτηριών που χρησιµοποιούνται στον υπολογιστή αυτό ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή αποτελείται από τέσσερις υποενότητες. Στην πρώτη υποενότητα παρουσιάζουµε τα είδη των αρτηριών που χρησιµοποιούνται στους υπολογιστές. Στη δεύτερη υποενότητα παρουσιάζουµε τις σύγχρονες και ασύγχρονες αρτηρίες. Στην τρίτη ενότητα παρουσιάζουµε τους παράγοντες από τους οποίους εξαρτάται η ταχύτητα µίας αρτηρίας και τρόπους αύξησης του ρυθµού µεταφοράς δεδοµένων δια µέσου µίας αρτηρίας. Στην τέταρτη υποενότητα συζητάµε τους τρόπους µε τους οποίους µοιράζεται η αρτηρία στις µονάδες που απαιτούν τη χρήση της. 5.1.1 ∂›‰Ë ·ÚÙËÚÈÒÓ
Για να είναι δυνατή η εκτέλεση προγραµµάτων και η επεξεργασία της πληροφορίας, οι διάφορες µονάδες του υπολογιστή πρέπει να επικοινωνούν µεταξύ τους. Για παράδειγµα, η ΚΜΕ πρέπει να επικοινωνεί µε τη µνήµη, όπως και µε τις µονάδες εισόδου/εξόδου. Υπάρχουν διάφοροι τρόποι για να συνδεθούν µεταξύ τους οι µονάδες ενός υπολογιστή. Ένας τρόπος είναι για κάθε δύο µονάδες που πρέπει να επικοινωνούν µεταξύ τους να υπάρχει και µία αρτηρία που να χρησιµοποιείται αποκλειστικά για να µεταφέρει πληροφορία µεταξύ αυτών των δύο µονάδων. Οι αρτηρίες αυτές λέγονται αρτηρίες αποκλειστικής χρήσης (dedicated buses). Αν υποθέσουµε ότι υπάρχουν ν µονά-
∞ƒ∆∏ƒπ∂™ (BUSES)
173
δες που πρέπει να συνδεθούν µεταξύ τους µε όλους τους δυνατούς τρόπους, τότε απαιτούνται ν(ν–1)/2 αρτηρίες αποκλειστικής χρήσης. Η σύνδεση των µονάδων µε αρτηρίες αποκλειστικής χρήσης επιτρέπει γρήγορη διακίνηση πληροφοριών, γιατί δεν υπάρχουν καθυστερήσεις που οφείλονται στο γεγονός ότι κάποια αρτηρία είναι απασχοληµένη. Το κύριο µειονέκτηµα αυτού του τρόπου διασύνδεσης είναι το υψηλό κόστος πραγµατοποίησής του. Το πλήθος των αρτηριών που απαιτούνται αυξάνεται περίπου ανάλογα µε το τετράγωνο του πλήθους των µονάδων. Το υψηλό κόστος υλοποίησης είναι λοιπόν η αιτία που αυτός ο τρόπος διασύνδεσης δεν χρησιµοποιείται συνήθως. Ένας άλλος τρόπος διασύνδεσης είναι να υπάρχει µόνο µία αρτηρία που να χρησιµοποιείται για τη σύνδεση όλων των µονάδων του συστήµατος, όπως φαίνεται στο σχήµα 5.1. Η αρτηρία αυτή καλείται αρτηρία κοινής χρήσης (shared bus). Κάθε χρονική στιγµή µόνο δύο µονάδες του υπολογιστή µπορούν να επικοινωνούν µεταξύ τους µέσω της αρτηρίας κοινής χρήσης. Εποµένως απαιτείται κάποιος µηχανισµός ελέγχου, διαιτησίας, για να επιβλέπει το χρονικό µοίρασµα της χρήσης της αρτηρίας µεταξύ των µονάδων του συστήµατος. Για το µηχανισµό αυτό θα µιλήσουµε στην επόµενη ενότητα. Η αρτηρία κοινής χρήσης είναι η πλέον ευρέως χρησιµοποιούµενη µέθοδος στους υπολογιστές. Το κύριο πλεονέκτηµά της είναι το µικρό κόστος υλοποίησής της. Ένα ακόµη πλεονέκτηµα είναι η ευκολία µε την οποία νέες µονάδες µπορούν να προστεθούν στο σύστηµα. Όµως η επικοινωνία µεταξύ των µονάδων µέσω µίας αρτηρίας κοινής χρήσης είναι κάπως αργή, διότι δύο µονάδες που επιθυµούν να ανταλλάξουν πληροφορία πρέπει να περιµένουν όταν η αρτηρία χρησιµοποιείται από δύο άλλες µονάδες. Επίσης το σύστηµα είναι ευαίσθητο σε βλάβες της αρτηρίας κοινής χρήσης. Μία βλάβη στην αρτηρία κοινής χρήσης έχει σαν συνέπεια την καταστροφή όλης της επικοινωνίας στο σύστηµα.
µνήµη
™¯‹Ì· 5.1
Όλες οι µονάδες του συστήµατος συνδέονται µεταξύ τους µέσω της αρτηρίας κοινής χρήσης.
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
174
Τα συστήµατα που όλες οι µονάδες συνδέονται µε αρτηρίες αποκλειστικής χρήσης ή µε µία µόνο αρτηρία κοινής χρήσης αποτελούν ακραίες περιπτώσεις. Υπάρχουν δοµές που χρησιµοποιούν περισσότερες από µία αρτηρίες κοινής χρήσης και εποµένως επιτρέπουν την ίδια χρονική στιγµή να επικοινωνούν µεταξύ τους περισσότερα από ένα ζεύγη µονάδων. ∆ύο τέτοιες περιπτώσεις δίνονται στα σχήµατα 5.2 και 5.3. Στο σύστηµα του σχήµατος 5.2 χρησιµοποιούνται δύο διαφορετικά είδη αρτηριών, η αρτηρία επεξεργαστή–µνήµης και η αρτηρία εισόδου–εξόδου. Η αρτηρία επεξεργαστή–µνήµης χρησιµοποιείται για την επικοινωνία του επεξεργαστή µε τη µνήµη και µέσω µιας αρτηρίας εισόδου/εξόδου για την επικοινωνία του επεξεργαστή ή της µνήµης µε µία µονάδα εισόδου/εξόδου.
µνήµη
™¯‹Ì· 5.2
Σύστηµα µε δύο διαφορετικά είδη αρτηριών.
∞ƒ∆∏ƒπ∂™ (BUSES)
175
µνήµη
™¯‹Ì· 5.3
Υπολογιστής που χρησιµοποιεί τριών ειδών αρτηρίες, αρτηρία επεξεργαστή–µνήµης, αρτηρία συστήµατος και αρτηρίες εισόδου/εξόδου.
Στο σχήµα 5.3 φαίνονται τα τρία διαφορετικά είδη αρτηριών, στις οποίες µπορούµε να κατατάξουµε οποιαδήποτε αρτηρία, αρτηρίες επεξεργαστή–µνήµης, αρτηρίες εισόδου/εξόδου και αρτηρία συστήµατος (local bus). Οι αρτηρίες επεξεργαστή–µνήµης είναι µικρού µήκους, υψηλής ταχύτητας και ταιριάζουν µε τα χαρακτηριστικά του επεξεργαστή και του συστήµατος µνήµης µε σκοπό τη µεγιστοποίηση του ρυθµού µεταφοράς πληροφορίας µεταξύ επεξεργαστή και µνήµης. Οι αρτηρίες εισόδου/εξόδου αντιθέτως µπορεί να είναι µεγαλύτερου µήκους και µπορούν να συνδέονται σ’ αυτές πολλά είδη µονάδων εισόδου/εξόδου µε διαφορετικούς ρυθµούς µεταφοράς δεδοµένων. Οι αρτηρίες συστήµατος σχεδιάζονται έτσι ώστε να µπορούν να συνδεθούν σ’ αυτές και ο επεξεργαστής και η µνήµη και οι µονάδες εισόδου/εξόδου. Ένας τύπος αρτηρίας επεξεργαστή–µνήµης συνήθως σχεδιάζεται για ένα συγκεκριµένο υπολογιστή και αποτελεί περιουσιακό στοιχείο της κατασκευάστριας εταιρείας. Αντίθετα, τόσο οι αρτηρίες εισόδου/εξόδου όσο και
176
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
οι αρτηρίες συστήµατος χρησιµοποιούνται σε διαφορετικούς υπολογιστές. Συνήθως οι αρτηρίες συστήµατος και εισόδου/εξόδου είναι στάνταρτ αρτηρίες που µπορούν να χρησιµοποιηθούν από πολλές διαφορετικές εταιρείες κατασκευής υπολογιστών. Κατά το σχεδιασµό ενός υπολογιστή ο σχεδιαστής της αρτηρίας επεξεργαστή– µνήµης γνωρίζει όλα τα είδη των µονάδων που θα συνδεθούν στην αρτηρία. Αντίθετα, ο σχεδιαστής της αρτηρίας συστήµατος ή εισόδου/εξόδου πρέπει να σχεδιάσει την αρτηρία έτσι ώστε η αρτηρία να µπορεί να χειριστεί µονάδες που διαφέρουν µεταξύ τους σηµαντικά τόσο σε καθυστέρηση (latency) όσο και σε ρυθµό µεταφοράς δεδοµένων (bandwidth). Μία αρτηρία, είτε αποκλειστικής χρήσης είτε κοινής χρήσης, αποτελείται από ένα σύνολο γραµµών ελέγχου και ένα σύνολο γραµµών δεδοµένων. Οι γραµµές ελέγχου χρησιµοποιούνται για να δηλώσουν απαίτηση επικοινωνίας, αναγνώριση απαίτησης επικοινωνίας, καθώς και να δηλώσουν το είδος της πληροφορίας που υπάρχει στις γραµµές δεδοµένων. Οι γραµµές δεδοµένων χρησιµοποιούνται για τη µεταφορά πληροφορίας µεταξύ δύο µονάδων. Η πληροφορία µπορεί να συνίσταται από δεδοµένα, εντολές ή διευθύνσεις. Μερικές αρτηρίες διαθέτουν ξεχωριστές γραµµές για τη µεταφορά διευθύνσεων και ξεχωριστές για τη µεταφορά δεδοµένων, ώστε η µεταφορά δεδοµένων και διευθύνσεων να γίνεται ταυτόχρονα. Όπως είδαµε, τα τρία είδη αρτηριών έχουν αρκετά διαφορετικά χαρακτηριστικά, γι’ αυτό στους υπολογιστές που χρησιµοποιούνται περισσότερες από ενός είδους αρτηρίες χρησιµοποιούνται προσαρµοστές αρτηριών για να συνδεθεί µία αρτηρία ενός είδους µε µία αρτηρία άλλου είδους. Η οργάνωση του σχήµατος 5.3 προσφέρει το πλεονέκτηµα ότι η αρτηρία επεξεργαστή–µνήµης µπορεί να σχεδιαστεί να είναι πολύ πιο γρήγορη από ό,τι η αρτηρία συστήµατος ή η αρτηρία εισόδου/εξόδου και νέες µονάδες ή αρτηρίες εισόδου/εξόδου µπορούν να συνδεθούν στην αρτηρία συστήµατος, χωρίς να επηρεαστεί η ταχύτητα της αρτηρίας επεξεργαστή–µνήµης. Μία από τις περισσότερο γνωστές αρτηρίες συστήµατος (local buses) είναι η αρτηρία Peripheral Component Interconnect (PCI), που αναπτύχθηκε από την Intel και χρησιµοποιείται στα συστήµατα τόσο της IBM όσο και της Apple. Από τις περισσότερο γνωστές αρτηρίες εισόδου/εξόδου είναι οι: Industry Standard Architecture (ISA), Extended ISA (EISA), Micro–Channel, EIDE και SCSI.
∞ƒ∆∏ƒπ∂™ (BUSES)
177
µνήµη
µνήµης
µνήµη
µονάδες
™¯‹Ì· 5.4
Τυπικό σύστηµα βασισµένο στον επεξεργαστή 21066.
Στο σχήµα 5.4 δίνεται η δοµή ενός συστήµατος που βασίζεται στη χρήση του επεξεργαστή 21066. Ο επεξεργαστής 21066 ήταν ο πρώτος επεξεργαστής που περιείχε µονάδα διασύνδεσης µε την αρτηρία PCI (PCI bus interface). Ο επεξεργαστής PowerPC 601 κατασκευάστηκε για την υλοποίηση προσωπικών υπολογιστών, που καλύπτουν µία περιοχή από συστήµατα µικρών απαιτήσεων έως και συστήµατα µεγάλων απαιτήσεων. Στα σχήµατα 5.5 και 5.6 δίνεται η δοµή δύο συστηµάτων που βασίζονται στη χρήση του PowerPC 601.
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
178
µνήµη
µνήµης
™¯‹Ì· 5.5
Σύστηµα χαµηλών απαιτήσεων βασισµένο στον επεξεργαστή PowerPC 601.
∞ƒ∆∏ƒπ∂™ (BUSES)
179
µνήµη
µνήµη µνήµης
µνήµη
™¯‹Ì· 5.6
Σύστηµα υψηλών απαιτήσεων βασισµένο στον επεξεργαστή PowerPC 601.
5.1.2 ™‡Á¯ÚÔÓ˜ Î·È ·Û‡Á¯ÚÔÓ˜ ·ÚÙËڛ˜
Ανάλογα µε τον τρόπο επικοινωνίας των µονάδων που συνδέονται σε µία αρτηρία, οι αρτηρίες διακρίνονται σε δύο κατηγορίες, τις σύγχρονες και τις ασύγχρονες. Εάν η αρτηρία είναι σύγχρονη, κάποια από τις γραµµές ελέγχου χρησιµοποιείται για τη µετάδοση ενός χρονικού σήµατος και υπάρχει
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
180
ένα πρωτόκολλο επικοινωνίας που βασίζεται στη χρήση του χρονικού σήµατος. Για παράδειγµα, θα δούµε τι λαµβάνει χώρα σε µία σύγχρονη αρτηρία επεξεργαστή–µνήµης κατά τη διαδικασία ανάγνωσης από τη µνήµη (βλέπε σχήµα 5.7). Θεωρούµε ένα πρωτόκολλο σύµφωνα µε το οποίο στον πρώτο κύκλο ρολογιού στέλνονται από τον επεξεργαστή στη µνήµη η διεύθυνση της µνήµης που θα διαβαστεί και η εντολή ανάγνωσης, χρησιµοποιώντας αντίστοιχα τις γραµµές διευθύνσεων και τις γραµµές ελέγχου της αρτηρίας. Υποθέτοντας ότι ο χρόνος προσπέλασης της µνήµης ισούται µε τέσσερις κύκλους ρολογιού, η µνήµη απαιτείται να απαντήσει, θέτοντας στις γραµµές δεδοµένων της αρτηρίας τα δεδοµένα, κατά τον τέταρτο κύκλο ρολογιού. Αυτό το είδος πρωτόκολλου µπορεί να υλοποιηθεί πολύ εύκολα µε ένα µικρό ακολουθιακό κύκλωµα, εποµένως η αρτηρία µπορεί να είναι πολύ γρήγορη (όσον αφορά στο πρωτόκολλο, διότι θα δούµε ότι η ταχύτητα εξαρτάται και από άλλους παράγοντες).
δεδοµένων σήµα
δεδοµένων
σήµα ανάγνωσης/εγγραφής ™¯‹Ì· 5.7
Σήµατα σε σύγχρονη αρτηρία επεξεργαστή–µνήµης κατά τη διαδικασία ανάγνωσης από τη µνήµη. Οι αρτηρίες επεξεργαστή–µνήµης είναι συνήθως σύγχρονες.
∞ƒ∆∏ƒπ∂™ (BUSES)
Οι σύγχρονες αρτηρίες έχουν δύο µειονεκτήµατα: α. Όλες οι µονάδες που είναι συνδεδεµένες στην αρτηρία πρέπει να χρησιµοποιούν το ίδιο σήµα χρονισµού, το οποίο ακολουθεί το χρονισµό της πιο αργής µονάδας. β. Για να είναι γρήγορες δεν µπορούν να έχουν µεγάλο µήκος. Η αρτηρία επεξεργαστή–µνήµης είναι συνήθως σύγχρονη, διότι οι µονάδες που επικοινωνούν δια µέσου αυτής είναι λίγες σε αριθµό, βρίσκονται πολύ κοντά η µία στην άλλη και λειτουργούν µε µεγάλες συχνότητες του σήµατος χρονισµού. Η ασύγχρονη αρτηρία δεν βασίζεται στη χρήση του σήµατος χρονισµού και εποµένως µπορεί να συνδεθεί σ’ αυτή µία ποικιλία µονάδων, επίσης µπορεί να έχει µεγάλο µήκος. Ο συντονισµός της µεταφοράς δεδοµένων µεταξύ του ποµπού και του δέκτη επιτυγχάνεται µε τη χρήση ενός πρωτόκολλου χειραψίας (handshaking protocol). Το πρωτόκολλο αυτό συνίσταται σε µία σειρά από βήµατα, όπου ο ποµπός και ο δέκτης προχωρούν στο επόµενο βήµα µόνον όταν συµφωνούν και οι δύο. Αυτό επιτυγχάνεται µε τη βοήθεια δύο σηµάτων, του σήµατος Απαίτησης (request) και του σήµατος Αναγνώρισης (Acknowledge). Η απενεργοποίηση του σήµατος Απαίτησης από τη µονάδα της αρτηρίας που το ενεργοποίησε θα γίνει µόνο µετά την ενεργοποίηση του σήµατος Αναγνώρισης από τη µονάδα που το έλαβε. Η απενεργοποίηση του σήµατος Αναγνώρισης από τη µονάδα της αρτηρίας που το ενεργοποίησε θα γίνει µόνον µετά την απενεργοποίηση του σήµατος Απαίτησης. Στο σχήµα 5.8 δίνονται τα σήµατα σε µία ασύγχρονη αρτηρία κατά την ανάγνωση από τη µνήµη. Οι ασύγχρονες αρτηρίες µπορούν να υποστηρίζουν µία ποικιλία µονάδων µε διαφορετικές ταχύτητες, γι’ αυτό οι αρτηρίες εισόδου/εξόδου είναι συνήθως ασύγχρονες.
181
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
182
σήµα
δεδοµένων δεδοµένων
σήµα ανάγνωσης/εγγραφής ™¯‹Ì· 5.8
Σήµατα κατά τη διαδικασία ανάγνωσης από τη µνήµη σε ασύγχρονη αρτηρία.
∞ƒ∆∏ƒπ∂™ (BUSES)
5.1.3 ∆·¯‡ÙËÙ· ·ÚÙËÚ›·˜
Η µέγιστη ταχύτητα µίας αρτηρίας περιορίζεται από το µήκος της και το πλήθος των µονάδων που είναι συνδεδεµένες µε την αρτηρία. ∆ύο µέτρα χρησιµοποιούνται για να χαρακτηρίσουν την απόδοση µιας αρτηρίας, η καθυστέρηση (latency) και ο ρυθµός µεταφοράς. Η ανάγκη να υποστηρίξουµε ένα µεγάλο αριθµό από µονάδες που διαφέρουν σηµαντικά όσον αφορά στην καθυστέρηση και το ρυθµό µεταφοράς δεδοµένων κάνει τη σχεδίαση της αρτηρίας ενδιαφέρουσα. Ο ρυθµός µεταφοράς δεδοµένων της αρτηρίας εξαρτάται: α. Από το εύρος της αρτηρίας δεδοµένων. Αυξάνοντας το εύρος της αρτηρίας δεδοµένων είναι δυνατόν να µεταφερθούν περισσότερες λέξεις ανά κύκλο. Το κόστος υλοποίησης αυτής της τεχνικής ισούται µε το κόστος αύξησης του πλήθους των γραµµών της αρτηρίας. β. Η ύπαρξη διάκριτων γραµµών δεδοµένων και διευθύνσεων έχει ως συνέπεια οι εγγραφές να γίνονται πιο γρήγορα, διότι δεν απαιτείται πολυπλεξία στο χρόνο όπως όταν υπάρχει µόνο ένα σύνολο γραµµών που µπορεί να χρησιµοποιηθεί άλλοτε για µεταφορά διευθύνσεων και άλλοτε για µεταφορά δεδοµένων. Και σ’ αυτή την περίπτωση η αύξηση του κόστους οφείλεται στην αύξηση του πλήθους των γραµµών της αρτηρίας. γ. Η αρτηρία µπορεί να µεταφέρει ένα σύνολο από λέξεις, µία λέξη ανά κύκλο, τη µία µετά την άλλη, χωρίς να στέλνει διεύθυνση για κάθε λέξη, παρά µόνον για την πρώτη, και χωρίς να αφήνει την αρτηρία. Αυτή η τεχνική έχει ως συνέπεια τη µείωση του χρόνου µεταφοράς µιας µεγάλης οµάδας λέξεων. Το κόστος υλοποίησης αυτής της τεχνικής οφείλεται στην αύξηση της πολυπλοκότητας υλοποίησης. 5.1.4 ÃÚ‹ÛË Ù˘ ·ÚÙËÚ›·˜ Î·È ‰È·ÈÙËÛ›·
Μία µονάδα που µπορεί να ξεκινήσει και να καθοδηγήσει µία διαδικασία εγγραφής ή ανάγνωσης δια µέσου µιας αρτηρίας καλείται κύρια (master) µονάδα, ενώ η άλλη µονάδα που λαµβάνει µέρος στη διαδικασία καλείται δούλος (slave). Για παράδειγµα, η ΚΜΕ είναι πάντα µία κύρια µονάδα. Σε µία αρτηρία είναι δυνατόν να είναι συνδεδεµένες περισσότερες από µία κύριες µονάδες. Σ’ αυτήν την περίπτωση όταν µία µονάδα επιθυµεί να χρησιµοποιήσει την αρτηρία, θα πρέπει να εξασφαλίσει ότι η αρτηρία δεν χρησιµοποιείται ήδη από άλλες µονάδες. Ένα άλλο πρόβληµα προκύπτει από το
183
184
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
γεγονός ότι δύο κύριες µονάδες είναι δυνατόν να αποφασίσουν την ίδια χρονική στιγµή να χρησιµοποιήσουν την αρτηρία. Τότε καθεµία θα ανιχνεύσει ότι η αρτηρία είναι ελεύθερη και θα προσπαθήσει να στείλει δια µέσου της αρτηρίας τα σήµατα που επιθυµεί. Στην αρτηρία όµως τα σήµατα των δύο µονάδων θα αναµειχθούν. Ο µηχανισµός που εµποδίζει να συµβεί η παραπάνω κατάσταση και καθορίζει ποια µονάδα θα αποκτήσει τον έλεγχο της αρτηρίας καλείται διαιτησία της αρτηρίας. Τα σχήµατα διαιτησίας της αρτηρίας µπορούν να διαιρεθούν σε τρείς µεγάλες κατηγορίες: 1. ∆ιαιτησία µε χρήση αλυσίδας προτεραιότητας (Daisy chain arbitration). Αυτό το σχήµα χρησιµοποιεί τρία σήµατα ελέγχου, Απαίτηση_Αρτηρίας (Bus Request), ∆ιάθεση_Αρτηρίας (Bus Grant), και Απασχοληµένη_Αρτηρία (Bus_Busy). Η αρτηρία, καθώς και κάθε κύρια µονάδα περιέχει τις τρεις γραµµές Απαίτηση_Αρτηρίας, ∆ιάθεση_Αρτηρίας, και Απασχοληµένη_Αρτηρία. Η γραµµή Απαίτηση_Αρτηρίας και Απασχοληµένη_Αρτηρία κάθε κύριας µονάδας συνδέεται στη γραµµή Απαίτηση_Αρτηρίας και Απασχοληµένη_Αρτηρία αντίστοιχα της αρτηρίας. Σ’ αυτό το σχήµα διαιτησίας η γραµµή ∆ιάθεση_Αρτηρίας περνάει διαµέσου όλων των µονάδων που συνδέει η αρτηρία κατά σειρά προτεραιότητας, όπως φαίνεται στο σχήµα 5.9. ∆ηλαδή πρώτα πηγαίνει στη µονάδα µε τη µέγιστη προτεραιότητα και τελευταία σ’ αυτή µε τη µικρότερη προτεραιότητα. Εποµένως η προτεραιότητα καθορίζεται από τη θέση της µονάδας. Μία υψηλής προτεραιότητας µονάδα που δέχεται το σήµα ∆ιάθεση_Αρτηρίας δεν επιτρέπει στο σήµα αυτό να διαδοθεί σε µονάδες µικρότερης προτεραιότητας. Το πλεονέκτηµα αυτού του σχήµατος διαιτησίας είναι η απλότητα υλοποίησης. Το µειονέκτηµα είναι η έλλειψη δικαιοσύνης, αφού µία απαίτηση χρησιµοποίησης της αρτηρίας από µονάδα µικρής προτεραιότητας δεν ικανοποιείται εφόσον υπάρχουν απαιτήσεις από µονάδες µεγαλύτερης προτεραιότητας, άσχετα του χρόνου αναµονής. Ένα ακόµη µειονέκτηµα είναι ότι η προτεραιότητα των µονάδων που είναι στην αρτηρία δεν µπορεί να αλλάξει κάτω από τον έλεγχο κάποιου προγράµµατος.
∞ƒ∆∏ƒπ∂™ (BUSES)
185
™¯‹Ì· 5.9
γραµµές
Όλες οι µονάδες της αρτηρίας συνδέονται στη γραµµή Απαίτηση_Αρτηρίας. Όταν αυτή η γραµµή είναι ενεργοποιηµένη, ας πούµε ότι έχει τη λογική τιµή ένα, συνεπάγεται ότι µία ή περισσότερες µονάδες απαιτούν να χρησιµοποιήσουν την αρτηρία. Ο ελεγκτής της αρτηρίας, εάν η γραµµή Απασχοληµένη_Αρτηρία δεν είναι ενεργοποιηµένη, απαντά µε ενεργοποίηση της γραµµής ∆ιάθεση_Αρτηρίας. Η µονάδα µεγαλύτερης προτεραιότητας, που έχει ενεργοποιηµένη τη γραµµή Απαίτηση_Αρτηρίας, µόλις δέχεται το σήµα ∆ιάθεση_Αρτηρίας ενεργοποιεί τη γραµµή εξόδου της Απασχοληµένη_Αρτηρία. Στη συνέχεια χρησιµοποιεί την αρτηρία και όταν δεν την χρειάζεται πλέον, απενεργοποιεί το σήµα Απασχοληµένη_Αρτηρία. Η αρτηρία VME είναι µία στάνταρτ αρτηρία συστήµατος και χρησιµοποιεί για διαιτησία ένα σχήµα µε πολλές αλυσίδες προτεραιότητας. 2. Κεντρική παράλληλη διαιτησία (Centralized Parallel Arbitration). Σ’ αυτό το σχήµα κάθε µονάδα έχει τα δικά της σήµατα Απαίτηση_Αρτηρίας και ∆ιάθεση_Αρτηρίας, όπως φαίνεται στο σχήµα 5.10. Υπάρχει ένας ελεγκτής της αρτηρίας ο οποίος επιλέγει µία από τις µονάδες που ζητούν εξυπηρέτηση και την ειδοποιεί ότι είναι ο κάτοχος της αρτηρίας. Αν ο ελεγκτής είναι προγραµµατιζόµενος, τότε εκτελώντας κάποιο πρόγραµµα µπορούµε να αλλάξουµε την προτεραιότητα των διαφόρων µονάδων που ζητούν εξυπηρέτηση.
∆ιαιτησία µε χρήση αλυσίδας προτεραιότητας.
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
186
™¯‹Ì· 5.10
Κεντρική παράλληλη διαιτησία.
γραµµές
3. Κατανεµηµένη διαιτησία µε επιλογή (Distributed arbitration by self–selection). Σ’ αυτό το σχήµα η αρτηρία περιλαµβάνει γραµµές ελέγχου, που καλούνται γραµµές διαιτησίας. Με κάθε µονάδα συνδέεται ένας αριθµός που δηλώνει την προτεραιότητά της. Η βασική ιδέα είναι κάθε µονάδα που επιθυµεί την κυριότητα της αρτηρίας θέτει τον αριθµό προτεραιότητάς της στις γραµµές διαιτησίας. Εάν ένας µεγαλύτερος αριθµός υπάρχει στις γραµµές διαιτησίας, τότε η µονάδα αποσύρει τον αριθµό της. Μετά από κάποιο χρονικό διάστηµα στις γραµµές διαιτησίας υπάρχει µόνο ο αριθµός της µονάδας µε τη µεγαλύτερη προτεραιότητα µεταξύ αυτών που ζητούσαν την αρτηρία. Η µονάδα που βλέπει τον αριθµό προτεραιότητάς της στις γραµµές διαιτησίας γίνεται κυρίαρχος της αρτηρίας. Η αρτηρία NuBus είναι µία αρτηρία συστήµατος στον Apple Macintοsh II, που χρησιµοποιεί αυτό το σχήµα διαιτησίας. Σε κάθε περίπτωση η επιλογή ενός συγκεκριµένου σχήµατος διαιτησίας εξαρτάται από ένα σύνολο απαιτούµενων χαρακτηριστικών, όπως ο αριθµός των µονάδων που συνδέονται στην αρτηρία, το µήκος της αρτηρίας, η απαιτούµενη ταχύτητα του σχήµατος διαιτησίας και ο απαιτούµενος βαθµός δικαιοσύνης.
∞ƒ∆∏ƒπ∂™ (BUSES)
Συµπληρώστε κάθε πρόταση επιλέγοντας τις σωστές αρτηρίες: ISA, SCSI, PCI, EISA, EIDE.
187
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.1
• Oι αρτηρίες _______________ είναι αρτηρίες επεξεργαστή µνήµης. • Oι αρτηρίες _______________ είναι αρτηρίες συστήµατος. • Oι αρτηρίες _______________ είναι αρτηρίες εισόδου/εξόδου.
α. Γιατί οι αρτηρίες εισόδου/εξόδου είναι ασύγχρονες; β. Γιατί οι αρτηρίες επεξεργαστή µνήµης είναι σύγχρονες; γ. Αναφέρετε τα πλεονεκτήµατα και τα µειονεκτήµατα της διαιτησίας µε χρήση αλυσίδας προτεραιότητας. δ. Γιατί οι αρτηρίες εισόδου/εξόδου είναι στάνταρτ αρτηρίες;
™‡ÓÔ„Ë EÓfiÙËÙ·˜ Στην ενότητα αυτή ασχοληθήκαµε µε τις αρτηρίες. Χρησιµοποιώντας κάποια χαρακτηριστικά τους µπορούµε να τις ταξινοµήσουµε σε κατηγορίες. Βασισµένοι στο κριτήριο αν χρησιµοποιούνται για τη διασύνδεση µόνο δύο ή περισσότερων µονάδων του υπολογιστή διακρίνονται σε αποκλειστικής και κοινής χρήσης. Σχεδόν όλες οι αρτηρίες που θα βρούµε στα συστήµατα γενικού σκοπού είναι κοινής χρήσης, διότι χρησιµοποιούνται για τη διασύνδεση περισσότερων των δύο µονάδων του συστήµατος. Ανάλογα µε το είδος των µονάδων που διασυνδέουν µπορούµε να κατατάξουµε µία αρτηρία σε ένα από τρία διαφορετικά είδη αρτηριών, τις αρτηρίες επεξεργαστή–µνήµης, τις αρτηρίες εισόδου/εξόδου και τις αρτηρίες συστήµατος. Επίσης ανάλογα µε τον τρόπο επικοινωνίας των µονάδων που συνδέουν τις διακρίνουµε σε σύγχρονες και ασύγχρονες αρτηρίες. Για το χαρακτηρισµό της ταχύτητας µιας αρτηρίας χρησιµοποιείται η καθυστέρηση και ο ρυθµός µεταφοράς. Όπως είδαµε, σ' έναν υπολογιστή οι αρτηρίες είναι συνήθως κοινής χρήσης και περισσότερες από µία µονάδες µπορεί να έχουν τη δυνατότητα να ζητήσουν τη χρήση µίας αρτηρίας. Για να ληφθεί η απόφαση ποιες µονάδες θα χρησιµοποιήσουν την αρτηρία υπάρχουν διάφορα σχήµατα διαιτησίας.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.2
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
188
5.2 ª¤ıÔ‰ÔÈ ÂϤÁ¯Ô˘ Ù˘ ‰È·‰Èηۛ·˜ ÂÈÛfi‰Ô˘/ÂÍfi‰Ô˘
™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να µελετήσουµε το υλικό και το λογισµικό που απαιτείται για την υλοποίηση των λειτουργιών εισόδου/εξόδου. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει την ενότητα αυτή, θα µπορείτε να: • περιγράψετε τον τρόπο λειτουργίας της διαδικασίας εισόδου/εξόδου • αξιολογήσετε τους διάφορους τρόπους υλοποίησης της διαδικασίας εισόδου/εξόδου, λαµβάνοντας υπόψη το απαιτούµενο κόστος και την απόδοση που προσφέρουν ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή αποτελείται από τρείς υποενότητες. Στην πρώτη υποενότητα παρουσιάζουµε τους τρόπους διευθυνσιοδότησης των µονάδων εισόδου/εξόδου. Στην δεύτερη υποενότητα συζητάµε για τη συµµετοχή του λειτουργικού συστήµατος στη διαδικασία εισόδου/εξόδου. Στην τρίτη ενότητα µιλάµε για τη συµµετοχή της ΚΜΕ στη διαδικασία εισόδου/εξόδου και το βαθµό στον οποίο επηρεάζει την απόδοση του υπολογιστή. 5.2.1 ¢È¢ı˘ÓÛÈÔ‰fiÙËÛË ÙˆÓ ÌÔÓ¿‰ˆÓ ÂÈÛfi‰Ô˘/ÂÍfi‰Ô˘
∆ύο µέθοδοι υπάρχουν για τη διευθυνσιοδότηση των µονάδων εισόδου/εξόδου και ανάλογα µε την αρχιτεκτονική του ένας επεξεργαστής υλοποιεί τη µία ή την άλλη. Στη µία περίπτωση το σύνολο των εντολών, σε επίπεδο γλώσσας µηχανής, του επεξεργαστή διαθέτει ειδικές εντολές εισόδου/εξόδου. Στην περίπτωση αυτή ο επεξεργαστής µπορεί να γράψει στους καταχωρητές του ελεγκτή µιας µονάδας εισόδου/εξόδου εντολές και δεδοµένα χρησιµοποιώντας τις εντολές αυτές. Προφανώς στην περίπτωση αυτή ο χώρος διευθύνσεων της κύριας µνήµης και ο χώρος διευθύνσεων των µονάδων εισόδου/εξόδου είναι διαφορετικοί, βλέπε σχήµα 5.11. Σαν παράδειγµα επεξεργαστών µε ειδικές εντολές εισόδου/εξόδου µπορούµε να αναφέρουµε τον Intel 80X86.
ª∂£√¢√π ∂§∂°Ã√À ∆∏™ ¢π∞¢π∫∞™π∞™ ∂π™√¢√À/∂•√¢√À
189
™¯‹Ì· 5.11
∆ιακριτοί χώροι διευθύνσεων µνήµης και εισόδου/εξόδου.
Στην άλλη περίπτωση, κατά το σχεδιασµό του συστήµατος, ένα µέρος των διευθύνσεων µνήµης συνδέεται µε καταχωρητές της µονάδας ελέγχου της διάταξης εισόδου/εξόδου (memory mapped I/O). Σ’ αυτή την περίπτωση εντολές που χρησιµοποιούνται για ανάγνωση ή εγγραφή σε θέση της κύριας µνήµης χρησιµοποιούνται και για ανάγνωση ή εγγραφή σε κάποιο καταχωρητή της µονάδας εισόδου/εξόδου, βλέπε σχήµα 5.12. Σαν παράδειγµα αναφέρουµε ότι αυτή η τεχνική χρησιµοποιείται στους υπολογιστές που βασίζονται στους επεξεργαστές Motorola 680Χ0.
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
190
™¯‹Ì· 5.12
Ενιαίος χώρος διευθύνσεων µνήµης και εισόδου/εξόδου.
5.2.2 √ ÚfiÏÔ˜ ÙÔ˘ ÏÂÈÙÔ˘ÚÁÈÎÔ‡ Û˘ÛÙ‹Ì·ÙÔ˜ ÛÙË ‰È·‰Èηۛ· ÂÈÛfi‰Ô˘/ÂÍfi‰Ô˘
Το λειτουργικό σύστηµα παίζει ένα σηµαντικό ρόλο στις διαδικασίες εισόδου/εξόδου, λειτουργώντας σαν ένα επίπεδο επικοινωνίας µεταξύ του υλικού και του προγράµµατος του χρήστη που απαιτεί τη λειτουργία εισόδου/εξόδου. Οι υπευθυνότητες του λειτουργικού συστήµατος προκύπτουν από τα χαρακτηριστικά του συστήµατος εισόδου/εξόδου. Το σύστηµα εισόδου/εξόδου µοιράζεται από πολλά προγράµµατα εφαρµογών που τρέχουν στον επεξεργαστή. Σ’ έναν υπολογιστή µε µονάδες εισόδου/εξόδου που µοιράζονται από διάφορα προγράµµατα πιθανώς διάφορων χρηστών, το λειτουργικό σύστηµα πρέπει να εγγυάται ότι το πρόγραµµα ενός χρήστη προσπελαύνει µόνον εκείνα τα τµήµατα µιας µονάδας εισόδου/εξόδου για την οποία ο χρήστης έχει εξουσιοδότηση. Για παράδειγµα, το λειτουργικό σύστηµα δεν πρέπει να επιτρέψει στο πρόγραµµα ενός χρήστη να γράψει σ’ ένα αρχείο του σκληρού δίσκου για τον οποίο έχει το δικαίωµα µόνο να διαβάσει το περιεχόµενό του. Ο έλεγχος µιας µονάδας εισόδου/εξόδου σε χαµηλό επίπεδο είναι πολύπλοκος, καλό είναι λοιπόν να µην επαφίεται στο πρόγραµµα εφαρµογής. Το λειτουργικό σύστηµα προσφέρει ρουτίνες που χειρίζονται τις µονάδες εισόδου/εξόδου. Έτσι τα προγράµµατα του χρήστη χρησιµοποιούν αυτές τις ρουτίνες.
ª∂£√¢√π ∂§∂°Ã√À ∆∏™ ¢π∞¢π∫∞™π∞™ ∂π™√¢√À/∂•√¢√À
Για να είναι σε θέση το λειτουργικό σύστηµα να εκτελεί αυτές τις λειτουργίες, πρέπει να είναι σε θέση να επικοινωνεί µε τις µονάδες εισόδου/εξόδου και να µην επιτρέπει στα προγράµµατα του χρήστη να επικοινωνούν κατ’ ευθείαν µε τις µονάδες εισόδου/εξόδου. Το λειτουργικό σύστηµα πρέπει να είναι σε θέση να δίνει εντολές στις µονάδες εισόδου/εξόδου, π.χ. διάβασε, γράψε, ψάξε στο δίσκο (seek) κλπ. Επίσης οι µονάδες εισόδου/εξόδου πρέπει να είναι σε θέση να ειδοποιούν το λειτουργικό σύστηµα, όταν µία λειτουργία έχει ολοκληρωθεί ή έχει προκύψει κάποιο λάθος. Αυτό γίνεται µε τη χρήση των σηµάτων διακοπής (interrupts). Το λειτουργικό σύστηµα επίσης διαχειρίζεται τις µονάδες εισόδου/εξόδου µε τέτοιο τρόπο ώστε να πετύχει µέγιστο ρυθµό παραγωγής έργου (throughput). 5.2.3 ™˘ÌÌÂÙÔ¯‹ Ù˘ ∫ª∂ ÛÙË ‰È·‰Èηۛ· ÂÈÛfi‰Ô˘/ÂÍfi‰Ô˘
Ανάλογα µε το βαθµό συµµετοχής της ΚΜΕ στη διαδικασία εισόδου/εξόδου µπορούµε να διακρίνουµε τρεις περιπτώσεις. Στην προγραµµατισµένη διαδικασία εισόδου/εξόδου, η ΚΜΕ, όταν θέλει να διαβάσει πληροφορία από µια διάταξη εισόδου, στέλνει τις απαιτούµενες διαταγές στον ελεγκτή της συγκεκριµένης διάταξης εισόδου. Στη συνέχεια περιµένει (βλέπε σχήµα 5.13) µέχρι µια µονάδα πληροφορίας να µεταφερθεί σ’ έναν καταχωρητή προσωρινής αποθήκευσης (buffer register) του ελεγκτή της διάταξης εισόδου, απ’ όπου και µεταφέρει την πληροφορία σ’ έναν καταχωρητή της και στη συνέχεια στην κύρια µνήµη. Εποµένως ο χρόνος που απαιτείται για να µεταφερθεί µια µονάδα πληροφορίας µεταξύ της κύριας µνήµης και µιας διάταξης εισόδου/εξόδου είναι κάποιες τάξεις µεγέθους µεγαλύτερος από το µέσο χρόνο κύκλου εντολής. Αυτό έχει ως συνέπεια ακόµη και ένας µέσος ρυθµός απαιτήσεων µεταφοράς εισόδου/εξόδου να ελαττώνει σηµαντικά τον αριθµό των κύκλων της ΚΜΕ που χρησιµοποιούνται για την εκτέλεση πραγµατικών υπολογισµών.
191
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
192
™¯‹Ì· 5.13
Προγραµµατισµένη διαδικασία εισόδου/εξόδου.
Εποµένως η απόδοση του συστήµατος υποβαθµίζεται σηµαντικά. Επιπλέον η ΚΜΕ πρέπει κατά χρονικά διαστήµατα να ελέγχει την κατάσταση κάθε διάταξης εισόδου/εξόδου για να διαπιστώσει αν κάποια απ’ αυτές απαιτεί εξυπηρέτηση. Εάν υπάρχουν πολλές διατάξεις εισόδου/εξόδου, ο παραπάνω έλεγχος γίνεται σχετικά αραιά µε αποτέλεσµα οι µονάδες εισόδου/εξόδου να εξυπηρετούνται καθυστερηµένα, η ΚΜΕ να αφιερώνει περισσότερο χρόνο για να ελέγχει την κατάσταση των µονάδων εισόδου/εξόδου µε αποτέλεσµα περαιτέρω υποβάθµιση της απόδοσης του συστήµατος. Μια λύση σ’ αυτήν την πιθανή υποβάθµιση της απόδοσης του συστήµατος είναι να επιτρέψουµε ταυτόχρονη εκτέλεση υπολογισµών από την ΚΜΕ και εκτέλεση της διαδικασίας εισόδου/εξόδου. Για να επιτευχθεί αυτό, πρέπει να αυξηθεί το υλικό και η πολυπλοκότητα των ελεγκτών των διατάξεων εισόδου/εξόδου. Καθώς ο βαθµός της παράλληλης εκτέλεσης θα αυξάνεται, θα αυξάνεται και το υλικό και η πολυπλοκότητα των ελεγκτών.
ª∂£√¢√π ∂§∂°Ã√À ∆∏™ ¢π∞¢π∫∞™π∞™ ∂π™√¢√À/∂•√¢√À
Μια τεχνική αύξησης της απόδοσης του συστήµατος είναι η προγραµµατισµένη διαδικασία εισόδου/εξόδου µε χρήση σηµάτων διακοπής (interrupts). Σ’ αυτή την τεχνική η ΚΜΕ ξεκινάει τη διαδικασία εισόδου/εξόδου στέλνοντας τις κατάλληλες διαταγές στον ελεγκτή της διάταξης εισόδου/εξόδου και στη συνέχεια επανέρχεται στους κανονικούς υπολογισµούς. Όταν η απαιτούµενη πληροφορία έχει µεταφερθεί από τη διάταξη εισόδου/εξόδου στον καταχωρητή προσωρινής αποθήκευσης του ελεγκτή της διάταξης εισόδου/εξόδου, ο ελεγκτής στέλνει στην ΚΜΕ ένα σήµα διακοπής. Τότε η ΚΜΕ σταµατάει την εκτέλεση του τρέχοντος προγράµµατος και αναλαµβάνει τη µεταφορά της πληροφορίας από τον ελεγκτή στην κύρια µνήµη. Μία παρόµοια περιγραφή µπορεί να γίνει για τη διαδικασία εξόδου. Με τη χρησιµοποίηση των σηµάτων διακοπής η ΚΜΕ αποδεσµεύεται από το συνεχή έλεγχο της κατάστασης της διάταξης εισόδου κατά τη διαδικασία εισόδου, όπως επίσης και από τον περιοδικό έλεγχο των διατάξεων εισόδου/εξόδου για να διαπιστωθεί αν απαιτούν εξυπηρέτηση. Πρέπει να σηµειώσουµε ότι τα σήµατα διακοπής, εκτός από τη χρησιµοποίησή τους στη λειτουργία εισόδου/εξόδου, βρίσκουν εφαρµογή και σε άλλες εφαρµογές, όπως για παράδειγµα όταν ανιχνεύεται κάποιο ελάττωµα στο υλικό ή το λογισµικό του συστήµατος. Αν και η απαίτηση διακοπής, το σήµα διακοπής, µπορεί να φτάσει ασύγχρονα κατά τη διάρκεια ενός κύκλου εντολής, συνήθως οι επεξεργαστές αφήνουν να συµπληρωθεί η εκτέλεση της τρέχουσας εντολής πριν εξυπηρετηθεί η απαίτηση διακοπής. Όταν µία απαίτηση διακοπής στέλνεται από µια διάταξη προς την ΚΜΕ, η ΚΜΕ πιθανόν να µην επιθυµεί την εξυπηρέτηση του σήµατος διακοπής. Το πρόγραµµα που εκτελείται δηλώνει αν επιτρέπεται ή όχι η εξυπηρέτηση σηµάτων διακοπής, θέτοντας κατάλληλα την ή τις σηµαίες επιτρεπτής διακοπής (ένα ή περισσότερα δυαδικά ψηφία στον καταχωρητή κατάστασης) εκτελώντας µια εντολή ενεργοποίησης ή απενεργοποίησης των σηµάτων διακοπής. Όταν η ΚΜΕ λάβει ένα σήµα διακοπής, γνωστοποιεί τη λήψη του σήµατος διακοπής στέλνοντας ένα σήµα (το σήµα αυτό ονοµάζεται σήµα αναγνώρισης απαίτησης διακοπής) στον ελεγκτή της διάταξης εισόδου/εξόδου. Η ΚΜΕ αποθηκεύει κάπου το πτητικό περιβάλλον της τρέχουσας διαδικασίας (δηλ. το περιεχόµενο κάποιων καταχωρητών της) και στη συνέχεια µεταφέρει τον έλεγχο σε µια συγκεκριµένη θέση της κύριας µνήµης, όπου είναι αποθηκευµένη η ρουτίνα εξυπηρέτησης της διάταξης. Η διάταξη εξυπηρετείται
193
194
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
και το πτητικό περιβάλλον της διαδικασίας που διακόπηκε από το σήµα διακοπής επαναφέρεται στην ΚΜΕ για να ξαναρχίσει η εκτέλεση της διαδικασίας αυτής. Ένας µεγαλύτερος βαθµός παραλληλίας µεταξύ της λειτουργίας της ΚΜΕ και της διαδικασίας εισόδου/εξόδου µπορεί να επιτευχθεί, όταν ο ελεγκτής της διάταξης εισόδου/εξόδου είναι ικανός να εκτελέσει τη διαδικασία µεταφοράς πληροφορίας µεταξύ της διάταξης εισόδου/εξόδου και της κύριας µνήµης χωρίς την παρεµβολή της ΚΜΕ. Σ’ αυτήν την περίπτωση λέµε ότι έχουµε άµεση προσπέλαση µνήµης (Direct Memory Access, DMA) και ο ελεγκτής της διάταξης εισόδου/εξόδου καλείται ελεγκτής άµεσης προσπέλασης µνήµης. Αυτός ο παραλληλισµός είναι ιδιαίτερα αποδοτικός, όταν πρόκειται να µεταφερθεί µία οµάδα µονάδων πληροφορίας. Τότε ο ελεγκτής της διάταξης απαιτείται να είναι ικανός να παράγει µια ακολουθία από διαδοχικές διευθύνσεις της κύριας µνήµης. Βέβαια η ΚΜΕ είναι ακόµη υπεύθυνη για το ξεκίνηµα της µεταφοράς της οµάδας των µονάδων πληροφορίας. Σαν ένα παράδειγµα θα περιγράψουµε µία τυπική ακολουθία από λειτουργίες που απαιτούνται για τη µεταφορά µιας οµάδας µονάδων πληροφορίας από µια διάταξη στην κύρια µνήµη. Η ΚΜΕ αρχικοποιεί (καθαρίζει) µία περιοχή της κύριας µνήµης στην οποία θα αποθηκευθεί η οµάδα των µονάδων πληροφορίας µετά την ολοκλήρωση της διαδικασίας εισόδου/εξόδου. Η διεύθυνση της πρώτης θέσης αυτής της περιοχής, το µέγεθος της περιοχής σε θέσεις µνήµης και η διεύθυνση της πληροφορίας στη διάταξη εισόδου/εξόδου στέλνονται από την ΚΜΕ στον ελεγκτή της διάταξης. Στη συνέχεια η ΚΜΕ εκτελεί µια ειδική εντολή «ξεκίνα διαδικασία εισόδου/εξόδου», η οποία έχει ως συνέπεια το υποσύστηµα εισόδου/εξόδου να ξεκινήσει τη µεταφορά. Ενώ η µεταφορά της πληροφορίας µεταξύ της διάταξης εισόδου/εξόδου και της κύριας µνήµης είναι σε εξέλιξη, η ΚΜΕ είναι ελεύθερη να εκτελεί άλλους υπολογισµούς, µε συνέπεια τη βελτίωση της απόδοσης του συστήµατος. Όταν η µεταφορά όλης της πληροφορίας συµπληρωθεί, ο ελεγκτής ειδοποιεί την ΚΜΕ στέλνοντας ένα σήµα. Στο σχήµα 5.14 φαίνεται η δοµή ενός πολύ απλού συστήµατος που χρησιµοποιεί την τεχνική άµεσης προσπέλασης µνήµης.
ª∂£√¢√π ∂§∂°Ã√À ∆∏™ ¢π∞¢π∫∞™π∞™ ∂π™√¢√À/∂•√¢√À
195
γραµµές
γραµµές
γραµµές
™¯‹Ì· 5.14
Ένα πολύ απλό σύστηµα µε δυνατότητα άµεσης προσπέλασης µνήµης.
Πρέπει να σηµειώσουµε ότι η ΚΜΕ και ο ελεγκτής της άµεσης προσπέλασης µνήµης µοιράζονται την ίδια κύρια µνήµη. Εποµένως ο ελεγκτής άµεσης προσπέλασης µνήµης πρέπει να έχει τη δυνατότητα να απαιτεί την παραχώρηση της αρτηρίας δεδοµένων και διευθύνσεων της κύριας µνήµης. Αυτό γίνεται µε µία γραµµή ελέγχου που καλείται γραµµή απαίτησης Άµεσης Προσπέλασης Μνήµης, ΑΠΜ, (DMA request). Η ΚΜΕ, όταν λάβει ένα σήµα απαίτησης ΑΠΜ, παραχωρεί τον έλεγχο των αρτηριών δεδοµένων και διευθύνσεων στον ελεγκτή άµεσης προσπέλασης στο τέλος του τρέχοντος κύκλου της, όπως φαίνεται στο σχήµα 5.15, και ειδοποιεί τον ελεγκτή της άµεσης προσπέλασης γι’ αυτή την παραχώρηση ενεργοποιώντας µία γραµµή ελέγχου, που καλείται γραµµή αναγνώρισης ΑΠΜ (DMA Acknowledge).
196
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
™¯‹Ì· 5.15
Σηµεία εξυπηρέτησης σήµατος διακοπής και άµεσης προσπέλασης µνήµης.
O ελεγκτής άµεσης προσπέλασης µνήµης µπορεί να κρατήσει τις αρτηρίες δεδοµένων και διευθύνσεων της κύριας µνήµης τόσο χρόνο όσο χρειάζεται για να µεταφερθεί µια οµάδα λέξεων µεταξύ του ελεγκτή και της κύριας µνήµης (DMA block transfer) ή τόσο χρόνο όσο χρειάζεται για τη µεταφορά µιας ή δύο λέξεων και στη συνέχεια να επιστρέψει τον έλεγχο των αρτηριών στην ΚΜΕ (cycle stealing). Οι κύκλοι που χρησιµοποιούνται για τις µεταφορές της άµεσης προσπέλασης µνήµης µπορούν να κατανέµονται µεταξύ των κύκλων της ΚΜΕ µ’ έναν αυθαίρετο τρόπο. Επειδή όλοι οι κύκλοι της ΚΜΕ δεν απαιτούν χρήση της κύριας µνήµης, η ΚΜΕ µπορεί να συνεχίσει να εκτελεί µία εντολή και µετά την παραχώρηση του ελέγχου της αρτηρίας του επεξεργαστή–µνήµης στον ελεγκτή άµεσης προσπέλασης µνήµης. Εποµένως έχουµε παράλληλη εκτέλεση των λειτουργιών της ΚΜΕ και µεταφοράς πληροφορίας µεταξύ του ελεγκτή και της κύριας µνήµης. Ο ελεγκτής ΑΠΜ είναι µία αρκετά πολύπλοκη µονάδα. Η χρησιµότητά της εξαρτάται από το σύστηµα στο οποίο χρησιµοποιείται. Σ’ ένα σύστηµα που
ª∂£√¢√π ∂§∂°Ã√À ∆∏™ ¢π∞¢π∫∞™π∞™ ∂π™√¢√À/∂•√¢√À
197
τρέχει το λειτουργικό σύστηµα DOS, το οποίο είναι ένα λειτουργικό σύστηµα που επιτρέπει κάθε φορά µόνο µία διεργασία να εκτελείται (single–tasking operating system), η ΚΜΕ δεν κάνει τίποτε όσο η διαδικασία εισόδου/εξόδου είναι σε εξέλιξη, εποµένως η χρήση ενός ελεγκτή ΑΠΜ δεν θα αύξανε την απόδοση του συστήµατος. Κάτω από αυτό το λειτουργικό σύστηµα συνεπώς δεν υπάρχει λόγος να χρησιµοποιηθεί ένας ελεγκτής ΑΠΜ, αφού η µεταφορά των δεδοµένων µπορεί να γίνει από την ΚΜΕ. Αντίθετα σε ένα περιβάλλον UNIX ή Windows, τα οποία είναι περιβάλλοντα πολλαπλών διεργασιών (multitasking), η ΚΜΕ είναι ελεύθερη να εκτελέσει µία άλλη διαδικασία το διάστηµα που εξελίσσεται η διαδικασία εισόδου/εξόδου κάτω από τον έλεγχο µίας µονάδας ΑΠΜ. Η τεχνική της άµεσης προσπέλασης µνήµης δεν δίνει όλο τον έλεγχο της διαδικασίας εισόδου/εξόδου στο υποσύστηµα εισόδου/εξόδου. Το υποσύστηµα εισόδου/εξόδου µπορεί να έχει πλήρη έλεγχο των διαδικασιών εισόδου/εξόδου, όταν διαθέτει µια ειδική µονάδα που καλείται επεξεργαστής εισόδου/εξόδου (Ι/Ο processor, IOP). Ο επεξεργαστής εισόδου/εξόδου έχει άµεση προσπέλαση στην κύρια µνήµη. Ο επεξεργαστής εισόδου/εξόδου µπορεί να εκτελέσει προγράµµατα εισόδου/εξόδου και µπορεί να πραγµατοποιήσει πολλές ανεξάρτητες διαδικασίες εισόδου/εξόδου µεταξύ της κύριας µνήµης και διατάξεων εισόδου/εξόδου ή µεταξύ διατάξεων εισόδου/εξόδου χωρίς την παρεµβολή της ΚΜΕ.
Σε ένα σύστηµα που πρόκειται να τρέχει το λειτουργικό σύστηµα DOS συνιστάται η χρησιµοποίηση µονάδας Άµεσης Προσπέλασης Μνήµης; ∆ικαιολογήστε την απάντησή σας.
α. Αναφέρετε µία οικογένεια επεξεργαστών που να διαθέτει ειδικές εντολές εισόδου/εξόδου και µία που να µη διαθέτει. β. Αναφέρετε τι λαµβάνει χώρα κατά το συµβάν ενός σήµατος διακοπής. γ. Αναφέρετε τα πλεονεκτήµατα και τα µειονεκτήµατα της προγραµµατισµένης διαδικασίας εισόδου/εξόδου χωρίς χρήση σηµάτων διακοπής.
¢Ú·ÛÙËÚÈfiÙËÙ· 5.1
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.3
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
198
™‡ÓÔ„Ë EÓfiÙËÙ·˜ Στην ενότητα αυτή ασχοληθήκαµε µε τη διαδικασία εισόδου/εξόδου. Για την αναφορά στις µονάδες εισόδου/εξόδου χρησιµοποιείται ένα κοινό σύνολο διευθύνσεων µε τη µνήµη ή ένα διακριτό σύνολο διευθύνσεων, ανάλογα µε την επιλογή που έκανε ο σχεδιαστής του υπολογιστή. Το λειτουργικό σύστηµα παίζει ένα σηµαντικό ρόλο στις διαδικασίες εισόδου/εξόδου, λειτουργώντας σαν ένα επίπεδο επικοινωνίας µεταξύ του υλικού και του προγράµµατος του χρήστη, που απαιτεί τη λειτουργία εισόδου/εξόδου. Οι υπευθυνότητες του λειτουργικού συστήµατος προκύπτουν από τα χαρακτηριστικά του συστήµατος εισόδου/εξόδου. Η συµµετοχή της ΚΜΕ στη διαδικασία εισόδου/εξόδου µπορεί να κυµαίνεται από το να έχει τον πλήρη έλεγχο µέχρι που να συµµετέχει ελάχιστα. Έτσι µπορούµε να έχουµε προγραµµατισµένη διαδικασία εισόδου/εξόδου µε ή χωρίς τη χρήση σηµάτων διακοπής, άµεση προσπέλαση µνήµης ή χρήση επεξεργαστή εισόδου/εξόδου. Το κόστος αλλά και η απόδοση αυξάνεται, καθώς µετακινούµαστε από την προγραµµατισµένη διαδικασία εισόδου/εξόδου χωρίς τη χρήση σηµάτων διακοπής προς τη χρήση επεξεργαστών εισόδου/εξόδου. ™‡ÓÔ„Ë KÂÊ·Ï·›Ô˘ Οι διάφορες µονάδες ενός υπολογιστικού συστήµατος συνδέονται µεταξύ τους µε αρτηρίες. Μία αρτηρία ανάλογα µε το αν χρησιµοποιείται για τη σύνδεση αποκλειστικά δύο ή περισσότερων µονάδων του υπολογιστικού συστήµατος χαρακτηρίζεται ως αρτηρία αποκλειστικής χρήσης ή κοινής χρήσης αντίστοιχα. Σ' ένα υπολογιστικό σύστηµα µπορεί να υπάρχουν περισσότερες από µία αρτηρίες κοινής χρήσης. Σ' ένα τυπικό υπολογιστικό σύστηµα συναντάµε την αρτηρία επεξεργαστή–µνήµης, την αρτηρία συστήµατος και µία ή περισσότερες αρτηρίες εισόδου/εξόδου. Ένας τύπος αρτηρίας επεξεργαστή–µνήµης συνήθως σχεδιάζεται για ένα συγκεκριµένο υπολογιστή και αποτελεί περιουσιακό στοιχείο της κατασκευάστριας εταιρείας. Αντίθετα, τόσο οι αρτηρίες εισόδου/εξόδου όσο και οι αρτηρίες συστήµατος είναι στάνταρτ αρτηρίες, που µπορούν να χρησιµοποιηθούν από πολλές διαφορετικές εταιρείες κατασκευής υπολογιστών. Τρία είδη αρτηριών που αναφέραµε έχουν αρκετά διαφορετικά χαρακτηριστικά, γι’ αυτό στους υπολογιστές που χρησιµοποιούνται περισσότερες του ενός είδους αρτηρίες χρησιµοποιούνται προσαρµοστές αρτηριών για να συν-
™À¡√æ∏ K∂º∞§∞π√À
δεθεί µία αρτηρία ενός είδους µε µία αρτηρία άλλου είδους. Ανάλογα µε τον τρόπο επικοινωνίας των µονάδων που συνδέονται σε µία αρτηρία, οι αρτηρίες διακρίνονται σε δύο κατηγορίες, τις σύγχρονες και τις ασύγχρονες. Εάν η αρτηρία είναι σύγχρονη, κάποια από τις γραµµές ελέγχου χρησιµοποιείται για τη µετάδοση ενός χρονικού σήµατος και υπάρχει ένα πρωτόκολλο επικοινωνίας που βασίζεται στη χρήση του χρονικού σήµατος. Οι σύγχρονες αρτηρίες έχουν το µειονέκτηµα ότι όλες οι µονάδες που είναι συνδεδεµένες στην αρτηρία πρέπει να χρησιµοποιούν το ίδιο σήµα χρονισµού και, εάν είναι γρήγορες, δεν µπορούν να έχουν µεγάλο µήκος. Στις ασύγχρονες αρτηρίες δεν χρησιµοποιείται σήµα χρονισµού. Ο συντονισµός της µεταφοράς δεδοµένων µεταξύ του ποµπού και του δέκτη επιτυγχάνεται µε τη χρήση ενός πρωτόκολλου χειραψίας που βασίζεται στη χρήση δύο σηµάτων, του σήµατος Απαίτησης και του σήµατος Αναγνώρισης. Οι ασύγχρονες αρτηρίες µπορούν να υποστηρίζουν µία ποικιλία µονάδων µε διαφορετικές ταχύτητες, γι’ αυτό οι αρτηρίες εισόδου/εξόδου είναι συνήθως ασύγχρονες. Η µέγιστη ταχύτητα µίας αρτηρίας περιορίζεται από το µήκος της και το πλήθος των µονάδων που είναι συνδεδεµένες µε την αρτηρία. ∆ύο µέτρα χρησιµοποιούνται για να χαρακτηρίσουν την απόδοση µιας αρτηρίας, η καθυστέρηση και ο ρυθµός µεταφοράς. Ο ρυθµός µεταφοράς δεδοµένων της αρτηρίας εξαρτάται από το εύρος της αρτηρίας δεδοµένων, την ύπαρξη διάκριτων γραµµών δεδοµένων και διευθύνσεων και τη δυνατότητα η αρτηρία να µεταφέρει ένα σύνολο από λέξεις, τη µία µετά την άλλη, χωρίς να στέλνει διεύθυνση για κάθε λέξη παρά µόνο για την πρώτη. Σε µία αρτηρία είναι δυνατό να είναι συνδεδεµένες περισσότερες από µία κύριες µονάδες. Ο µηχανισµός που καθορίζει ποια µονάδα θα αποκτήσει τον έλεγχο της αρτηρίας καλείται διαιτησία της αρτηρίας. Τα σχήµατα διαιτησίας της αρτηρίας µπορούν να διαιρεθούν σε τρεις µεγάλες κατηγορίες, τη διαιτησία µε χρήση αλυσίδας προτεραιότητας, την κεντρική παράλληλη διαιτησία και την κατανεµηµένη διαιτησία µε επιλογή. Η διαδικασία εισαγωγής και εξαγωγής της πληροφορίας από τον υπολογιστή γίνεται µέσω των µονάδων εισόδου και εξόδου. Κάθε µονάδα εισόδου ή/και εξόδου περιέχει έναν ή περισσότερους καταχωρητές, στους οποίους η ΚΜΕ γράφει πληροφορία ή από τους οποίους διαβάζει πληροφορία. Για να µπορεί η ΚΜΕ να απευθύνεται στους καταχωρητές αυτούς, πρέπει σε καθέναν από αυτούς να αντιστοιχεί και µία διεύθυνση. Οι σχεδιαστές ακολουθούν δύο
199
200
™À™∆∏ª∞ ¢π∞™À¡¢∂™∏™ ∫∞π ∂π™√¢√À–∂•√¢√À
τακτικές, ή χρησιµοποιούν ένα ενιαίο χώρο διευθύνσεων για τις διευθύνσεις της κύριας µνήµης και των καταχωρητών των µονάδων εισόδου/εξόδου ή χρησιµοποιούν δύο διαφορετικούς χώρους διευθύνσεων. Στην πρώτη περίπτωση υπάρχει µόνο µία αρτηρία διευθύνσεων, ενώ στη δεύτερη περίπτωση υπάρχουν δύο αρτηρίες διευθύνσεων, µία για τη µνήµη και µία για τις µονάδες εισόδου/εξόδου. Ανάλογα µε το βαθµό συµµετοχής της ΚΜΕ στη διαδικασία εισόδου/εξόδου, µπορούµε να διακρίνουµε την προγραµµατισµένη διαδικασία εισόδου/εξόδου µε ή χωρίς τη χρήση σηµάτων διακοπής, την άµεση προσπέλαση µνήµης και τη χρήση επεξεργαστή εισόδου/εξόδου. Η προγραµµατισµένη διαδικασία εισόδου/εξόδου έχει το µικρότερο κόστος υλοποίησης. Επειδή όµως η ΚΜΕ έχει την όλη υπευθυνότητα της διαδικασίας εισόδου/εξόδου, η απόδοση του συστήµατος υποβαθµίζεται σηµαντικά. Με τη χρήση των σηµάτων διακοπής αυξάνεται το κόστος υλοποίησης, αλλά αυξάνεται και η απόδοση του συστήµατος.
A
¶ ∞ ƒ ∞ ƒ ∆ ∏ ª ∞
∞ÚÈıÌËÙÈο ™˘ÛÙ‹Ì·Ù· ™ÎÔfi˜ Σκοπός της ενότητας αυτής είναι να µάθετε τα διάφορα συστήµατα αρίθµησης που χρησιµοποιούνται για την αναπαράσταση των αριθµών και τρόπους µετατροπής ενός αριθµού από ένα σύστηµα σε κάποιο άλλο. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε µελετήσει το Παράρτηµα αυτό, θα µπορείτε να: • παραστήσετε αριθµούς σε διάφορα αριθµητικά συστήµατα • µετατρέψετε την παράσταση ενός αριθµού από ένα σύστηµα σε άλλο ŒÓÓÔȘ ÎÏÂȉȿ • Aριθµητικά συστήµατα • Bάση αριθµητικού συστήµατος • Ψηφία αριθµητικού συστήµατος ∞.1 ÃÚ‹ÛË ·ÚÈıÌËÙÈÎÒÓ Û˘ÛÙË̿وÓ
Κάθε πραγµατικός αριθµός Χ µπορεί να γραφεί µε την ακόλουθη µορφή: C=±
-•
Âα
λβ
λ
A.1
λ = ν -1
όπου: β, µε β≥2, είναι η βάση του αριθµητικού συστήµατος στο οποίο εκφράζεται ο αριθµός, αλ, µε 0 £ αλ £ β–1, είναι τα ψηφία του αριθµού και ν είναι το πλήθος των ακέραιων ψηφίων του αριθµού. Τα βν–1, βν–2, …, β0, β–1, β–2, … καλούνται βάρη των ψηφίων αν–1, αν–2, …, α0, α–1, α–2, … αντίστοιχα. Παρατηρούµε ότι µε κάθε ψηφίο, ανάλογα µε τη θέση του, συνδέεται και ένα βάρος. Στη συνέχεια θα χρησιµοποιούµε το σύµβολο Χ(β), για να συµβολίσουµε την παράσταση του αριθµού σε ένα σύστηµα αρίθµησης µε βάση β, και το Χ, για
∞ ƒ π £ ª ∏ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆∞
202
να συµβολίσουµε την τιµή του αριθµού. Συµβολικά ο αριθµός Χ στο σύστηµα αρίθµησης µε βάση β γράφεται αν–1αν–2 … α0α–1α–2 …. Τα πιο συνηθισµένα αριθµητικά συστήµατα είναι αυτά που έχουν βάση β=2, 8, 10, 16 και ονοµάζονται αντίστοιχα δυαδικό , οκταδικό, δεκαδικό και δεκαεξαδικό. Τα ψηφία αυτών των αριθµητικών συστηµάτων φαίνονται στον Πίνακα Α.1. Παρατηρούµε ότι επειδή τα αριθµητικά ψηφία είναι δέκα, ενώ για την παράσταση των ψηφίων του δεκαεξαδικού συστήµατος απαιτούνται δεκαέξι, χρησιµοποιούµε και γράµµατα του αγγλικού αλφάβητου. ¶›Ó·Î·˜ ∞.1
Τα ψηφία του δυαδικού, οκταδικού, δεκαδικού και δεκαεξαδικού συστήµατος αρίθµησης. ∆υαδικά ψηφία
Οκταδικά ψηφία
∆εκαδικά ψηφία
∆εκαεξαδικά ψηφία
0
0
0
0
1
1
1
1
2
2
2
3
3
3
4
4
4
5
5
5
6
6
6
7
7
7
8
8
9
9 A B C D E F
à ƒ ∏ ™ ∏ ∞ ƒ π £ ª ∏ ∆ π ∫ ø ¡ ™ À ™ ∆ ∏ ª ∞∆ ø ¡
203
Ένας αριθµός λέµε ότι έχει πεπερασµένη παράσταση Χ(β) στο σύστηµα µε βάση β, όταν υπάρχει κάποιος ακέραιος µ τέτοιος ώστε αλ= 0 για κάθε λ= –µ–1, –µ–2, –µ–3, …. Το µ σ’αυτή την περίπτωση δηλώνει το πλήθος των κλασµατικών ψηφίων του αριθµού. Συµβολικά ένας αριθµός Ζ µε πεπερασµένη παράσταση Ζ(β) γράφεται Z(β) = αν–1αν–2 … α0α–1α–2 …. α–µ. Η σχέση Α.1 για αριθµούς µε πεπερασµένη παράσταση στο σύστηµα αρίθµησης µε βάση β παίρνει τη µορφή: C=±
-µ
Âα
λβ
λ
λ = ν -1
Είναι προφανές ότι ένας αριθµός µπορεί να έχει πεπερασµένη παράσταση στο σύστηµα αρίθµησης µε βάση β1 και µη πεπερασµένη παράσταση σε ένα άλλο σύστηµα αρίθµησης µε βάση β2. ¶·Ú¿‰ÂÈÁÌ· A.1 Σαν παράδειγµα δίνουµε κάποιους ακέραιους δυαδικούς, οκταδικούς, δεκαδικούς και δεκαεξαδικούς αριθµούς. ∆υαδικοί αριθµοί: 00110010, 10011111, 1110000 Οκταδικοί αριθµοί: 12765, 763554, 777560 ∆εκαδικοί: 987699, 56749, 234561 ∆εκαεξαδικοί αριθµοί: FFDAOO45, 0986734, 111111 Πρέπει να σηµειώσουµε ότι το ψηφίο µε το µικρότερο βάρος καλείται το λιγότερο σηµαντικό ψηφίο και καταλαµβάνει την πλέον δεξιά θέση της παράστασης, ενώ το ψηφίο µε το µεγαλύτερο βάρος καλείται το περισσότερο σηµαντικό ψηφίο και καταλαµβάνει την πλέον αριστερή θέση. Αγνοώντας τα συνεχόµενα µηδενικά που πιθανόν να βρίσκονται στις πλέον σηµαντικές θέσεις της παράστασης ενός αριθµού αριστερά της υποδιαστολής και τα συνεχόµενα µηδενικά που πιθανόν βρίσκονται στις λιγότερο σηµαντικές θέσεις δεξιά της υποδιαστολής, η αναπαράσταση ενός αριθµού σ’ αυτά τα συστήµατα αρίθµησης είναι µοναδική. ∆ηλαδή, δεν είναι δυνατόν στο ίδιο σύστηµα αρίθµησης να βρούµε δύο αριθµούς µε την ίδια τιµή και διαφορετική παράσταση.
∞ ƒ π £ ª ∏ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆∞
204
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ A.1
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ A.2
Αναφέρετε σε ποια από τα αριθµητικά συστήµατα, δυαδικό, οκταδικό, δεκαδικό και δεκαεξαδικό, θα µπορούσαν να ανήκουν οι ακόλουθες παραστάσεις αριθµών: α. 00101001, β. 12765, γ. 763554, δ. 987699, ε. 90110, ζ. FFΑ901, η. A9909.
Τι είναι σωστό και τι λάθος από τα παρακάτω; 1. Ο αριθµός 0110110 µπορεί να είναι ένας δυαδικός αριθµός. 2. Ο αριθµός 0110110 µπορεί να είναι ένας δεκαδικός αριθµός. 3. Ο αριθµός 9763 µπορεί να είναι ένας οκταδικός αριθµός. 4. Ο αριθµός 9763 µπορεί να είναι ένας δεκαεξαδικός αριθµός. 5. Ο αριθµός 8763 µπορεί να είναι ένας οκταδικός αριθµός.
∞.2 ªÂÙ·ÙÚÔ‹ ·ÚÈıÌÒÓ ·fi ¤Ó· ·ÚÈıÌËÙÈÎfi Û‡ÛÙËÌ· Û ¿ÏÏÔ
Η µετατροπή της παράστασης ενός αριθµού από το αριθµητικό σύστηµα µε βάση β στο δεκαδικό αριθµητικό σύστηµα γίνεται εύκολα, εάν εφαρµόσουµε τη σχέση Α.1 και εκτελέσουµε τις πράξεις της πρόσθεσης και του πολλαπλασιασµού στο δεκαδικό σύστηµα. ¶·Ú¿‰ÂÈÁÌ· A.2 Υποθέστε ότι επιθυµούµε να πάρουµε την παράσταση του δυαδικού αριθµού Χ(2) = 1001101.1 στο δεκαδικό σύστηµα αρίθµησης. Από τη σχέση ( Α.1) παίρνουµε: C(10 ) =
-1
Âα l =6
l2
l
= 1 ◊ 26 + 0 ◊ 25 + 0 ◊ 2 4 + 1 ◊ 2 3 + 1 ◊ 22 + 0 ◊ 21 + 1 ◊ 20 + 1 ◊ 2 -1 = 77.5
¶·Ú¿‰ÂÈÁÌ· A.3 Υποθέστε ότι θέλουµε να πάρουµε την παράσταση του δεκαεξαδικού αριθµού Χ(16) = 2Α4F0 στο δεκαδικό σύστηµα αρίθµησης. Από τη σχέση ( Α.1) παίρνουµε:
ª ∂ ∆∞∆ ƒ √ ¶ ∏ ∞ ƒ π £ ª ø ¡ ∞ ¶ √ ∂ ¡ ∞ ∞ ƒ π £ ª ∏ ∆ π ∫ √ ™ À ™ ∆ ∏ ª ∞ ™ ∂ ∞ § § √
0
C(10 ) =
 α 16 l=4
l
l
= 2 ◊16 4 + A ◊16 3 + 4 ◊162 + F ◊161 + 0 ◊160 =
= 2 ◊16 4 + 10 ◊16 3 + 4 ◊162 + 15 ◊161 + 0 ◊160 = 173296 Παρατηρούµε ότι, για να υπολογίσουµε το παραπάνω άθροισµα γινοµένων στο δεκαδικό, αντικαταστήσαµε τα ψηφία A, B, C, D και F µε 10, 11, 12, 13, 14, και 15 αντίστοιχα. Η µετατροπή ενός αριθµού από το δεκαδικό αριθµητικό σύστηµα σε ένα άλλο µε βάση β γίνεται χωριστά για το ακέραιο και το κλασµατικό µέρος. Ας ξεκινήσουµε µε το ακέραιο µέρος Χ Α = αν–1αν–2 … α0 ενός δεκαδικού αριθµού Χ. Ας υποθέσουµε ότι ο αριθµός ΧΑ στο αριθµητικό σύστηµα µε βάση β έχει την παράσταση δκ–1δκ–2 … δ0, όπου 0 £ δλ £ β–1 για λ= 0, 1, 2, …, κ–1. Μπορούµε να ξαναγράψουµε το ένα µέρος της σχέσης (Α.1), που αφορά στο ακέραιο µέρος, ως εξής: ΧΑ = ((…(δκ–1β +δκ–2)β + … +δ2)β+ δ1)β +δ0 Εποµένως, εάν διαιρέσουµε τον αριθµό ΧΑ δια του β, θα πάρουµε την τιµή του ψηφίου δ0 σαν υπόλοιπο και την τιµή της παράστασης (…(δκ–1β +δκ–2)β + … +δ2)β+ δ1 σαν πηλίκο. Εάν τώρα διαιρέσουµε το ανωτέρω πηλίκο δια του β, θα πάρουµε σαν υπόλοιπο την τιµή του δ1. Εποµένως διαιρούµε κάθε φορά το νέο πηλίκο δια του β και κρατάµε το υπόλοιπο έως ότου πάρουµε µηδενικό πηλίκο. Για να εξάγουµε την παράσταση δ–1δ–2 … δµ, του κλασµατικού µέρους ΧΚ του δεκαδικού αριθµού Χ, ξαναγράφουµε το ένα µέρος της σχέσης (Α.1), που αφορά στο κλασµατικό µέρος, ως εξής: ΧΚ = β–1{δ–1 + β–1 [δ–2 + β–1 ( δ–3+….)]}. Εάν πολλαπλασιάσουµε τον κλασµατικό αριθµό ΧΚ µε το β, θα πάρουµε έναν αριθµό µε ακέραιο µέρος το δ–1 και κλασµατικό µέρος το β–1 [δ–2 + β–1 ( δ–3+….)]. Εποµένως, µπορούµε κάθε φορά να πολλαπλασιάζουµε µε το β το κλασµατικό µέρος που προέκυψε από τον προηγούµενο πολλαπλασιασµό και να κρατάµε το ακέραιο µέρος που προκύπτει σαν το απαιτούµενο ψηφίο. Όµως, αντίθετα µε τον αλγόριθµο για το ακέραιο µέρος, αυτός ο αλγόριθµος δεν εγγυάται ότι θα τερµατιστεί, επειδή ένας κλασµατικός αριθµός που έχει πεπερασµένη παράσταση σε ένα αριθµητικό σύστηµα µπορεί να µην έχει πεπερασµένη παράσταση σε ένα άλλο αριθµητικό σύστηµα. Αυτό στην πράξη δεν αποτελεί πρόβληµα, τερµατίζουµε τη διαδικασία µετά από ψ βήµατα, όπου εµείς επιλέξουµε.
205
∞ ƒ π £ ª ∏ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆∞
206
¶·Ú¿‰ÂÈÁÌ· A.4 Υποθέστε ότι επιθυµούµε να µετατρέψουµε το δεκαδικό αριθµό Χ(10)= 59,735 στο δυαδικό σύστηµα. Θα αντιµετωπίσουµε κατ’ αρχήν το ακέραιο µέρος. Το ακέραιο µέρος του Χ(10) είναι το 59, εποµένως εφαρµόζοντας τη διαδικασία που έχουµε περιγράψει παίρνουµε: Βήµα 1. α0 = το υπόλοιπο του 59/2=1 και ακέραιο µέρος του πηλίκου 59/2=29 Βήµα 2. α1 = το υπόλοιπο του 29/2=1 και ακέραιο µέρος του πηλίκου 29/2=14 Βήµα 3. α2 = το υπόλοιπο του 14/2=0 και ακέραιο µέρος του πηλίκου 14/2=7 Βήµα 4. α3 = το υπόλοιπο του 7/2=1 και ακέραιο µέρος του πηλίκου 7/2=3 Βήµα 5. α4 = το υπόλοιπο του 3/2=1 και ακέραιο µέρος του πηλίκου 3/2=1 Βήµα 6. α5 = το υπόλοιπο του 1/2=1 και ακέραιο µέρος του πηλίκου 1/2=0 Εποµένως η δυαδική παράσταση του 59 είναι 111011. Το κλασµατικό µέρος του Χ(10) είναι το 0.735. Ας υποθέσουµε ότι επιθυµούµε ακρίβεια 6 δυαδικών κλασµατικών ψηφίων, εποµένως η διαδικασία θα επαναληφθεί 6 φορές. Βήµα 1. α–1 = ακέραιο µέρος του 2·0,735 = 1 και κλασµατικό =0,47 Βήµα 2. α–2 = ακέραιο µέρος του 2·0,47 = 0 και κλασµατικό =0,94 Βήµα 3. α–3 = ακέραιο µέρος του 2·0,94 = 1 και κλασµατικό =0,88 Βήµα 4. α–4 = ακέραιο µέρος του 2·0,88 = 1 και κλασµατικό =0,76 Βήµα 5. α–5 = ακέραιο µέρος του 2·0,76 = 1 και κλασµατικό =0,52 Βήµα 6. α–6 = ακέραιο µέρος του 2·0,52 = 1 και κλασµατικό =0,04 Εποµένως, η δυαδική παράσταση του 0,735 µε έξι δυαδικά ψηφία είναι 0. 101111. Παρατηρούµε ότι η τιµή του δυαδικού αριθµού 0.101111 είναι 1.2–1+0.2–2 +1.2–3+1.2–4+1.2–5 +1.2–6 = 0,734375, η οποία διαφέρει του 0,735. Αυτό σηµαίνει ότι ο αριθµός 0,735 δεν µπορεί να γραφεί ακριβώς στο δυαδικό χρησιµοποιώντας 6 δυαδικά ψηφία. Όσο περισσότερα δυαδικά ψηφία χρησιµοποιήσουµε τόσο περισσότερο η τιµή του δυαδικού αριθµού θα προσεγγίζει το δεκαδικό. Εάν ο δεκαδικός αριθµός έχει πεπερασµένη παράσταση στο δυαδικό σύστηµα, τότε µε τη χρησιµοποίηση ενός πεπερασµένου
ª ∂ ∆∞∆ ƒ √ ¶ ∏ ∞ ƒ π £ ª ø ¡ ∞ ¶ √ ∂ ¡ ∞ ∞ ƒ π £ ª ∏ ∆ π ∫ √ ™ À ™ ∆ ∏ ª ∞ ™ ∂ ∞ § § √
αριθµού δυαδικών ψηφίων θα παρασταθεί ακριβώς. Εφόσον έχουµε βρει τη δυαδική παράσταση του ακέραιου και του κλασµατικού µέρους του Χ(10), η παράσταση του Χ(10) στο δυαδικό σύστηµα είναι Χ(2)=111011.101111. Η µετατροπή ενός αριθµού από το δυαδικό στο οκταδικό αριθµητικό σύστηµα γίνεται εύκολα, εάν χωρίσουµε το δυαδικό αριθµό σε οµάδες των τριών δυαδικών ψηφίων και αντικαταστήσουµε κάθε οµάδα µε τον οκταδικό αριθµό που παριστάνει. Η διαµέριση του αριθµού σε οµάδες των τριών δυαδικών ψηφίων αρχίζει από την υποδιαστολή προς τα δεξιά και προς τα αριστερά. Εάν η εντελώς αριστερή οµάδα δεν περιλαµβάνει τρία δυαδικά ψηφία, τότε συµπληρώνεται µε µηδενικά από τα αριστερά. Εάν η εντελώς δεξιά οµάδα δεν περιλαµβάνει τρία δυαδικά ψηφία, τότε συµπληρώνεται µε µηδενικά από τα δεξιά. ¶·Ú¿‰ÂÈÁÌ· A.5 Υποθέστε ότι θέλουµε να πάρουµε την παράσταση των δυαδικών αριθµών Χ(2) = 101111000.10011101 και Ζ(2) = 1110010.1 στο οκταδικό σύστηµα αρίθµησης. Χ(2) = 101 111 000 . 100 111 010 5
7
0
4
7
2
εποµένως Χ(8) = 570.472. Ζ(2) = 001 110 010 . 100 1
6
2
4
εποµένως Χ(8) = 162.4. Η µετατροπή ενός αριθµού από το δυαδικό στο δεκαεξαδικό αριθµητικό σύστηµα γίνεται όπως και η µετατροπή στο οκταδικό, µόνο που τώρα χωρίζουµε τα ψηφία του δυαδικού αριθµού σε οµάδες των τεσσάρων δυαδικών ψηφίων και αντικαθιστούµε κάθε οµάδα µε το δεκαεξαδικό αριθµό που παριστάνει. ¶·Ú¿‰ÂÈÁÌ· A.6 Υποθέστε ότι θέλουµε να πάρουµε την παράσταση των δυαδικών αριθµών του παραδείγµατος 3 στο δεκαεξαδικό σύστηµα αρίθµησης.
207
∞ ƒ π £ ª ∏ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆∞
208
Χ(2) = 0001 0111 1000 . 1001 1101 1
7
8
9
D
εποµένως Χ(16) = 178.9D. Ζ(2) = 0111 0010 . 1000 7
2
8
εποµένως Ζ(16) = 72.8.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ A.3
Να παρασταθούν στο δεκαδικό σύστηµα αρίθµησης οι αριθµοί : α. Χ(2) =101111.011, β. Χ(8) = 101127 και γ. Χ(16) = 109AC.D
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ A.4
Να παρασταθούν στο δυαδικό οι ακόλουθοι αριθµοί: α. Χ(10) = 20.36, β. Χ(16) = DA905.43 γ. Χ(8) = 7605.42
™‡ÓÔ„Ë Στο Παράρτηµα αυτό είδατε τη µορφή µε την οποία µπορεί να παρασταθεί ένας πραγµατικός αριθµός και τα διάφορα αριθµητικά συστήµατα που µπορούν να χρησιµοποιηθούν. Συγκεκριµένα ασχοληθήκαµε µε το δυαδικό, το οκταδικό, το δεκαδικό και δεκαεξαδικό. Επίσης µάθατε πώς µπορείτε να µετατρέψετε την παράσταση ενός αριθµού από ένα αριθµητικό σύστηµα σε ένα άλλο αριθµητικό σύστηµα.
∞·ÓÙ‹ÛÂȘ ∞Û΋ÛÂˆÓ ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘
1.1 Το λογισµικό διακρίνεται στο λογισµικό του συστήµατος, το διαγνωστικό λογισµικό και το λογισµικό των εφαρµογών. Στην ενότητα 1.1 µπορείτε να βρείτε τα χαρακτηριστικά κάθε κατηγορίας λογισµικού, όπως και παραδείγµατα προγραµµάτων που ανήκουν στις κατηγορίες αυτές. Εάν απαντήσατε σωστά, µπράβο σας. Εάν όχι, µην απογοητεύεστε, µετά από πρόσθετη µελέτη θα τα καταφέρετε. 1.2 α. Στο υλικό ανήκει κάθε τι, το οποίο µπορείτε να πιάσετε. Εάν απαντήσατε σωστά, µπράβο σας, έχετε καταλάβει τι είναι το υλικό. β. Σωστό. Κάθε υπολογιστής είναι εφοδιασµένος µε κάποιο λειτουργικό σύστηµα, το οποίο διευκολύνει την επικοινωνία του χρήστη µε τον υπολογιστή και φροντίζει για την καλύτερη αξιοποίηση του υλικού. Αν απαντήσατε σωστά, συγχαρητήρια, έχετε πιάσει το νόηµα. Αν δεν τα πήγατε καλά, µην απογοητεύεστε, είναι βέβαιο ότι µε λίγη ακόµη προσπάθεια θα τα καταφέρετε. γ. Λάθος. Πάντα υπάρχουν κάποια κοινά βοηθητικά προγράµµατα, έστω και µε διαφορετικά ονόµατα. ∆εν είναι, όµως, όλοι οι υπολογιστές εφοδιασµένοι µε τα ίδια βοηθητικά προγράµµατα. Ανάλογα µε τον υπολογιστή, το λειτουργικό του σύστηµα και τις ανάγκες του κάθε χρήστη, οι υπολογιστές διαθέτουν και διαφορετικά βοηθητικά προγράµµατα. Αν απαντήσατε σωστά, συγχαρητήρια. Αν δεν τα πήγατε καλά, µην απογοητεύεστε, ήταν πράγµατι δύσκολη ερώτηση. 1.3 α. Η αρχιτεκτονική σε επίπεδο εντολών γλώσσας µηχανής περιγράφει την οργάνωση της κύριας µνήµης, τους καταχωρητές, που είναι προσπελάσιµοι από τον προγραµµατιστή σε γλώσσα µηχανής, τα διαθέσιµα είδη δεδοµένων και δοµών δεδοµένων, όπως και τον τρόπο κωδικοποίησής τους και
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
210
αναπαράστασής τους, τη µορφή και το σύνολο των εντολών και τους τρόπους καθορισµού διευθύνσεων. β. Η δοµή περιγράφει τις µονάδες, από τις οποίες αποτελείται ο υπολογιστής, και τον τρόπο που συνδέονται µεταξύ τους. Για παράδειγµα, το σχήµα 1.2 δίνει τη δοµή ενός προσωπικού υπολογιστή. γ. Η οργάνωση περιγράφει τη δυναµική αλληλεπίδραση και τη διαχείριση των µονάδων. δ. Η υλοποίηση δίνει τον ακριβή σχεδιασµό των µονάδων του υπολογιστή. Πρέπει να σηµειώσουµε ότι η απόδοση του υπολογιστή σ' ένα επίπεδο καθορίζεται από τη δοµή, την οργάνωση και την υλοποίηση του συστήµατος κάτω από αυτό το επίπεδο. 1.4 α. Σωστό β. Θα πρέπει να διακρίνουµε δύο περιπτώσεις: Θεωρούµε ότι το πρόγραµµα είναι γραµµένο σε γλώσσα προγραµµατισµού υψηλού επιπέδου και µεταφράζεται µε τον κατάλληλο µεταφραστή, για να εκτελεστεί στον υπολογιστή Α ή Β. Εάν επιλέξατε τις i και ii, τότε µπράβο σας έχετε πιάσει το νόηµα. 2. Θεωρούµε ότι το πρόγραµµα είναι γραµµένο σε γλώσσα µηχανής. Λάθος. Λάθος. Το πρόγραµµα, που γράφτηκε για τον Β, θα µπορούσε να εκτελεστεί και στον Α, µόνον εάν δεν χρησιµοποιεί τους τρόπους καθορισµού διευθύνσεων, που διαθέτει ο Β και όχι ο Α. Εάν αυτή ήταν η επιλογή σας, τότε µπράβο σας. Εάν εξετάσατε µόνον την περίπτωση 1, τότε αποφύγατε τα δύσκολα και θα σας συνιστούσα να µελετήσετε περισσότερο την ενότητα 1.2. 1.5 Η σωστή απάντηση είναι ότι ένα υπολογιστικό σύστηµα αποτελείται από την ΚΜΕ, τη µνήµη, τις µονάδες εισόδου και εξόδου και το σύστηµα διασύνδεσης των µονάδων.
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
Εάν δώσατε την παραπάνω απάντηση, µπράβο σας. Σωστή είναι επίσης η απάντηση ότι ένα υπολογιστικό σύστηµα αποτελείται από την ΚΜΕ, την κύρια µνήµη, τη βοηθητική µνήµη, τις µονάδες εισόδου και εξόδου και το σύστηµα διασύνδεσης των µονάδων. Απλά αλλάζει το επίπεδο περιγραφής, εισερχόµαστε σε περισσότερες λεπτοµέρειες. Κάποιος θα µπορούσε να αναφέρει συγκεκριµένες µονάδες εισόδου/εξόδου. Καλό είναι να αποφεύγονται τέτοιες απαντήσεις, διότι όλοι οι υπολογιστές δεν διαθέτουν τις ίδιες µονάδες εισόδου/εξόδου. 1.6 Ένας λόγος είναι το κόστος. Μνήµες υλοποιηµένες µε γρήγορες τεχνολογίες είναι ακριβές. Ο άλλος λόγος είναι οι απαιτήσεις µας για πολύ µεγάλη χωρητικότητα. Χρησιµοποιώντας την ίδια τεχνολογία, οι µνήµες, που είναι µεγαλύτερης χωρητικότητας, είναι συνήθως πιο αργές. Αν απαντήσατε σωστά, µπράβο. Αν δεν τα πήγατε καλά, µην απογοητεύεστε, χρειάζεται λίγο περισσότερη προσπάθεια. 1.7 Οι τρεις µονάδες µνήµης, που υπάρχουν σε κάθε υπολογιστή, είναι οι καταχωρητές, η κύρια µνήµη και η βοηθητική µνήµη. Πρέπει να σηµειώσουµε βέβαια ότι η φυσική θέση των καταχωρητών είναι στην ΚΜΕ. Εάν αυτή ήταν η απάντησή σας, συγχαρητήρια. Εάν, αντί της βοηθητικής µνήµης αναφέρατε τη µνήµη µαγνητικών δίσκων, τότε η απάντησή σας είναι και πάλι σωστή. 1.8 Το µέγεθος των καταχωρητών είναι της τάξης των ψηφιολέξεων, της κρυφής µνήµης της τάξης των Kbytes, της κύριας µνήµης της τάξης Mbytes και της βοηθητικής µνήµης της τάξης των Gbytes. Εποµένως, τα κενά πρέπει να συµπληρωθούν µε τη σειρά: δυαδικά ψηφία ή ψηφιολέξεις, Kbytes, Mbytes και Gbytes. Εάν δώσατε αυτή την απάντηση, συγχαρητήρια. Εάν έχετε απαντήσει ότι η χωρητικότητα όλων των µονάδων µνήµης µετριέται σε δυαδικά ψηφία ή ψηφιολέξεις, η απάντησή σας δεν είναι λάθος, αλλά
211
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
212
οι αριθµοί αυτοί δεν δίνουν µία άµεση αίσθηση του µεγέθους κάθε µονάδας µνήµης. Για παράδειγµα, εάν πούµε ότι η χωρητικότητα της µονάδας δίσκου είναι 9 GB ή 9.663.676.416 ψηφιολέξεις είναι το ίδιο, αλλά λέγοντας 9 GB έχουµε καλύτερη αίσθηση του µεγέθους. 1.9 α. Η ΚΜΕ αποτελείται από τη Μονάδα Επεξεργασίας ∆εδοµένων και τη Μονάδα Ελέγχου. Πρέπει να σηµειώσουµε ότι οι καταχωρητές περιλαµβάνονται στη Μονάδα Επεξεργασίας ∆εδοµένων, γι' αυτό και δεν περιλαµβάνονται στην ανωτέρω απάντηση. Αν απαντήσατε σωστά, µπράβο. Αν δεν τα πήγατε καλά, µην απογοητεύεστε, χρειάζεται λίγο περισσότερη προσπάθεια. β. Η Μονάδα Επεξεργασίας ∆εδοµένων εκτελεί αριθµητικές και λογικές πράξεις. Η Μονάδα Ελέγχου αναλύει την εντολή, που πρέπει να εκτελεστεί, και ανάλογα µε το είδος της εντολής παράγει ακολουθίες από σήµατα, που έχουν σαν συνέπεια την επιλογή της µεταφοράς των δεδοµένων µεταξύ των µονάδων ή των υποµονάδων του υπολογιστή και την εκτέλεση συγκεκριµένων πράξεων. Αν απαντήσατε σωστά, µπράβο, έχετε καταλάβει τη χρησιµότητα κάθε µονάδας της ΚΜΕ. Αν όχι, πρέπει να µελετήσετε µε µεγαλύτερη προσοχή την ενότητα 1.3.2 και είναι βέβαιο ότι τελικά θα τα καταφέρετε. γ. Η σωστή σειρά είναι η ακόλουθη: 1. Φέρνει στην ΚΜΕ την εντολή, που είναι αποθηκευµένη στη θέση µνήµης, που δείχνει ο µετρητής προγράµµατος. 2. Αλλάζει το περιεχόµενο του µετρητή προγράµµατος, ώστε να δείχνει τη θέση µνήµης που περιέχει την επόµενη προς εκτέλεση εντολή. 3. Αναλύει την εντολή και ελέγχει εάν η εντολή χρειάζεται δεδοµένα από τη µνήµη και εάν ναι, προσδιορίζει τη διεύθυνση που είναι αποθηκευµένα. 4. Φέρνει τα δεδοµένα σε κάποιους από τους καταχωρητές της. 5. Εκτελεί την εντολή. 6. Αποθηκεύει τα αποτελέσµατα. 7. Πηγαίνει στο βήµα 1, για να αρχίσει την εκτέλεση της επόµενης εντολής.
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
Εάν απαντήσατε σωστά, συγχαρητήρια, έχετε καταλάβει πώς λειτουργεί η ΚΜΕ. Εάν όχι, θα πρέπει να αφιερώσετε περισσότερο χρόνο για τη µελέτη της ενότητας 1.3.2. Πρέπει να κατανοήσετε πλήρως τη λειτουργία της ΚΜΕ, πριν προχωρήσετε. 1.10 Α. α. Οι βασικότερες ιδιότητες της κύριας µνήµης είναι ότι οι θέσεις της µπορούν να προσπελαστούν άµεσα από την ΚΜΕ, µε οποιαδήποτε σειρά, και ο χρόνος προσπέλασης µιας θέσης είναι σταθερός και ανεξάρτητος από τη διεύθυνση της θέσης. Αν δώσατε αυτή την απάντηση, µπράβο. Το χαρακτηριστικό ότι η πληροφορία χάνεται ή διατηρείται µετά τη διακοπή της τροφοδοσίας αντιστοιχεί στην τεχνολογία που χρησιµοποιείται, δηλαδή RAM ή ROM, και όχι στην κύρια µνήµη. Αν δεν απαντήσατε σωστά, µην απογοητεύεστε, είναι βέβαιο ότι θα τα καταφέρετε, αν διαβάσετε µε µεγαλύτερη προσοχή την υποενότητα κύρια µνήµη. β. Η ταχύτητα της κύριας µνήµης µετριέται µε το χρόνο προσπέλασης (access time) µιας θέσης της κύριας µνήµης. Ο χρόνος προσπέλασης ισούται µε το χρόνο που παρέρχεται από τη στιγµή που η µνήµη λαµβάνει µία απαίτηση διαβάσµατος µέχρι την στιγµή που η απαιτούµενη πληροφορία είναι διαθέσιµη στις εξόδους της µνήµης. Σε µερικές διατάξεις µνήµης, όπως οι δυναµικές µνήµες, ο χρόνος που πρέπει να περάσει από τη στιγµή που ξεκίνησε µία προσπέλαση της µνήµης µέχρι τη στιγµή που επιτρέπεται να ξεκινήσουµε µία άλλη προσπέλαση, είναι µεγαλύτερος του χρόνου προσπέλασης της µνήµης και καλείται χρόνος κύκλου της µνήµης (cycle time of the memory). Το µέγιστο ποσό πληροφορίας που µπορεί να µεταφερθεί προς ή από τη µνήµη κάθε δευτερόλεπτο είναι το αντίστροφο του χρόνου κύκλου της µνήµης και καλείται ρυθµός µεταφοράς δεδοµένων (data transfer rate ή bandwidth). Ο ρυθµός µεταφοράς δεδοµένων µετριέται σε ψηφιολέξεις ανά δευτερόλεπτο. Αν απαντήσατε σωστά, συγχαρητήρια. Αν όχι, πρέπει να καταβάλλετε µεγαλύτερη προσπάθεια, για να καταλάβετε αυτές τις έννοιες και είναι βέβαιο ότι θα το πετύχετε. γ. Κοινά χαρακτηριστικά είναι ότι α) οι θέσεις τους µπορούν να προσπελαστούν µε οποιαδήποτε σειρά και β) ο χρόνος προσπέλασης µιας θέσης είναι σταθερός και ανεξάρτητος από τη διεύθυνση της θέσης.
213
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
214
Οι διαφορές τους είναι : i.
Tα περιεχόµενα της RAM µπορούν να διαβάζονται, αλλά και να τροποποιούνται µέσα από τα προγράµµατα που εκτελούνται στον υπολογιστή, ενώ τα περιεχόµενα της ROM δεν είναι δυνατόν να τροποποιηθούν µέσα από τα προγράµµατα, που εκτελούνται στον υπολογιστή.
ii. Όταν διακοπεί η τάση τροφοδοσίας του υπολογιστή µας, η πληροφορία που είναι αποθηκευµένη στη RAM χάνεται, ενώ η πληροφορία που είναι αποθηκευµένη στην ROM διατηρείται. Αν απαντήσατε σωστά, συγχαρητήρια, αν όχι, ξαναπροσπαθήστε. Β. Λάθος. Για να εκτελεστεί ένα πρόγραµµα, θα πρέπει να βρίσκεται στην κύρια µνήµη. Σ' έναν υπολογιστή γενικού σκοπού εκτελούνται διάφορα προγράµµατα. Εάν η κύρια µνήµη είναι υλοποιηµένη µε ROM, τότε δεν µπορούµε να φορτώνουµε (γράφουµε) σ' αυτή προγράµµατα. Επίσης η ΚΜΕ δεν θα µπορεί να αποθηκεύει τα αποτελέσµατα στην κύρια µνήµη. Αν απαντήσατε σωστά, συγχαρητήρια, ήταν όντως µία δύσκολη ερώτηση. Αν όχι, µην απογοητεύεστε, ήταν µία δύσκολη ερώτηση. 1.11 Το κύριο πλεονέκτηµα της µνήµης µαγνητικών δίσκων σε σύγκριση µε τις τεχνολογίες RAM και ROM, που χρησιµοποιούνται για την υλοποίηση της κύριας µνήµης, είναι το πολύ µικρότερο κόστος ανά δυαδικό ψηφίο. Το µειονέκτηµά τους, όµως, είναι ο κατά τρεις έως τέσσερις τάξεις µεγέθους µεγαλύτερος µέσος χρόνος προσπέλασης των µονάδων µαγνητικών δίσκων (βλέπε σχήµα 1.4). Αν απαντήσατε σωστά, µπράβο. Αν όχι, µελετήστε µε µεγαλύτερη προσοχή το σχήµα 1.3. 1.12 Η µονάδα µνήµης µαγνητικών δίσκων δεν είναι σειριακής, αλλά κατ' ευθείαν προσπέλασης. Η µονάδα µνήµης µαγνητικής ταινίας είναι πράγµατι σειριακής προσπέλασης.
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
1.13 α. Σκοπός της κρυφής µνήµης είναι να ελαττώσει το µέσο χρόνο προσπέλασης του συστήµατος µνήµης. β. Η επιτυχία της κρυφής µνήµης βασίζεται στην ιδιότητα των προγραµµάτων, που ονοµάζουµε τοπικότητα των αναφορών. Η τοπικότητα των αναφορών οφείλεται αφενός στο γεγονός ότι οι εντολές ενός προγράµµατος εκτελούνται συνήθως ακολουθιακά, δηλαδή µετά από κάθε µία εντολή εκτελείται η επόµενή της, αφετέρου στην ύπαρξη τµηµάτων προγράµµατος, που εκτελούνται κατ' επανάληψη. Αν απαντήσατε σωστά, συγχαρητήρια. Αν όχι, µην απογοητεύεστε, αφιερώστε λίγο περισσότερο χρόνο και θα τα καταφέρετε. 1.14 α. Σκοπός της ιδεατής µνήµης είναι να κάνει τον προγραµµατιστή να γράφει τα προγράµµατά του, χωρίς να χρειάζεται να λάβει υπ' όψιν του το µέγεθος της κύριας µνήµης. Ο προγραµµατιστής βλέπει την κύρια µνήµη και ένα µέρος της µνήµης στο δίσκο σαν µία ενιαία πολύ µεγάλη άµεσα προσπελάσιµη από την ΚΜΕ µνήµη. β. Η διαχείριση της ιδεατής µνήµης γίνεται από το λειτουργικό σύστηµα µε ή χωρίς τη βοήθεια (ανάλογα του συγκεκριµένου υπολογιστή) µονάδας υλικού. Σαν παράδειγµα αναφέρουµε τη Μονάδα ∆ιαχείρισης Μνήµης. 1.15 • Oι µονάδες πληκτρολόγιο, σαρωτής, οπτικός δίσκος µόνο ανάγνωσης και µικρόφωνο είναι µονάδες εισόδου. • Oι µονάδες οθόνη, έγχρωµος εκτυπωτής και µεγάφωνο είναι µονάδες εξόδου. • Oι µονάδες οθόνη/ποντίκι και ελεγκτής δικτύου/δίκτυο είναι µονάδες εισόδου και εξόδου. • Oι µονάδες µαγνητικού δίσκου, µαγνητικής ταινίας και οπτικού δίσκου ανάγνωσης/εγγραφής είναι µονάδες αποθήκευσης.
215
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
216
1.16 Εφόσον έχουν διαφορετικά σύνολα εντολών δεν µπορούµε, βασιζόµενοι µόνο στα MIPS καθενός, να συµπεράνουµε ποιος έχει µεγαλύτερη απόδοση. 2.1 α. Με τη µέθοδο της περικοπής: 1. Χ(2) = 101110.00 2. Χ(2) = 101011.01 3. Χ(2) = 11011.010 4. Χ(10) = 97832.001 5. Χ(10) = 105389.09 6. Χ(10) = 5389.0940 β. Με τη µέθοδο της στρογγυλοποίησης: 1. Προσθέτουµε το (2–2)/2 = 2–3, οπότε παίρνουµε Χ(2) = 101110.01. 2. Προσθέτουµε το (2–2)/2 = 2–3, οπότε παίρνουµε Χ(2) = 101011.10. 3. Προσθέτουµε το (2–3)/2 = 2–4, οπότε παίρνουµε Χ(2) = 101011.010. 4. Προσθέτουµε το (10–3)/2 = 0.0005, οπότε παίρνουµε Χ(10) = 97832.002. 5. Προσθέτουµε το (10–2)/2 = 0.005, οπότε παίρνουµε Χ(10) = 105389.10. 6. Προσθέτουµε το (10–4)/2 = 0.00005, οπότε παίρνουµε Χ(10) = 5389.0940. Παρατηρούµε ότι οι αριθµοί που προκύπτουν εφαρµόζοντας τη µέθοδο της στρογγυλοποίησης διαφέρουν λιγότερο από τους αρχικούς αριθµούς ή στην χειρότερη περίπτωση το ίδιο από ό,τι οι αριθµοί που προκύπτουν µε περικοπή. Αν απαντήσατε σωστά, µπράβο σας. Αν όχι, µην απογοητεύεστε µετά από πρόσθετη µελέτη θα τα καταφέρετε. 2.2 α. Χ(10) = 4 7 2. 0 1 άρα στο BCD θα είναι Χ = 0100 0111 0010. 0000 0001. β. Χ(10) = 9 0 2. 3 4 άρα στο BCD θα είναι Χ = 1001 0000 0010.0011 0100.
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
Αν απαντήσατε σωστά, συγχαρητήρια. Αν δεν τα πήγατε καλά, πρέπει να διαβάσετε την υποενότητα 2.1.1 µε µεγαλύτερη προσοχή. 2.3 1. Χ(2) = 10110 Επειδή το πλέον σηµαντικό ψηφίο έχει την τιµή 1, ο αριθµός είναι αρνητικός. α. Παράσταση προσηµασµένου µεγέθους. Το µέγεθος δίνεται από τα υπόλοιπα ψηφία, άρα Χ(10) = +6. β. Παράσταση συµπληρώµατος ως προς 1. Για να πάρουµε το µέγεθος του Χ(2) παίρνουµε το συµπλήρωµά του ως προς 1, οπότε έχουµε Χ(2) = – 01001 και Χ(10) = – 9. γ. Παράσταση συµπληρώµατος ως προς 2. Για να πάρουµε το µέγεθος του Χ(2) παίρνουµε το συµπλήρωµά του ως προς 2, οπότε έχουµε Χ(2) = – 01010 και Χ(10) = – 10. 2. Υ(2) = 011110 Επειδή το πλέον σηµαντικό ψηφίο έχει την τιµή 0 ο αριθµός είναι θετικός, εποµένως το µέγεθός του και στις τρεις παραστάσεις είναι Υ(10) = + 30. 3. Ζ(2) = 111011 Επειδή το πλέον σηµαντικό ψηφίο έχει την τιµή 1, ο αριθµός είναι αρνητικός. α. Παράσταση προσηµασµένου µεγέθους. Το µέγεθος δίνεται από τα υπόλοιπα ψηφία, άρα Ζ(10) = – 27. β. Παράσταση συµπληρώµατος ως προς 1. Για να πάρουµε το µέγεθος του Ζ(2), παίρνουµε το συµπλήρωµά του ως προς 1, οπότε έχουµε Ζ(2) = – 000100 και Ζ(10) = – 4. γ. Παράσταση συµπληρώµατος ως προς 2. Για να πάρουµε το µέγεθος του Ζ(2) παίρνουµε το συµπλήρωµά του ως προς 2, οπότε έχουµε Ζ(2) = – 000101 και Χ(10) = – 5. Αν απαντήσατε σωστά, µπράβο σας. Αν όχι, µην απογοητεύεστε, χρειάζεται λίγη περισσότερη προσπάθεια.
217
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
218
2.4 α. Από το σχήµα 2.1 και τη σχέση 2.1 παίρνουµε Ε(2) = 01101101, οπότε Ε(10) = 109. Επειδή ο εκθέτης είναι πολωµένος, πρέπει να αφαιρέσουµε την πόλωση, άρα Ε'(10) = 109 – 127 = – 18. Ο συντελεστής είναι Σ(2) = 1.1, οπότε Σ(10) = 1·20 + 1·2–1 = 1.5. Εποµένως ο αριθµός είναι Χ(10) = + 1.5·2–18. β. Παρατηρούµε ότι, εάν εξαιρέσουµε το πρώτο δυαδικό ψηφίο, όλα τα άλλα δυαδικά ψηφία είναι ίδια µε τα αντίστοιχα ψηφία του αριθµού της περίπτωσης α. Λαµβάνοντας υπόψη ότι το πρώτο δυαδικό ψηφίο δηλώνει το πρόσηµο του αριθµού, συµπεραίνουµε ότι ο αριθµός της περίπτωσης αυτής έχει την ίδια τιµή, αλλά διαφορετικό πρόσηµο από αυτό του αριθµού της περίπτωσης α. Εποµένως, Χ(10) = – 1.5·2–18. γ. Ε(2) = 10110000, οπότε Ε(10) = 176. Επειδή ο εκθέτης είναι πολωµένος, πρέπει να αφαιρέσουµε την πόλωση, άρα Ε'(10) = 176 – 127 = 49. Ο συντελεστής είναι Σ(2) = 1.0, οπότε Σ(10) = 1·20 = 1. Εποµένως ο αριθµός είναι Χ(10) = + 1·249. δ. Όταν όλα τα δυαδικά ψηφία του συντελεστή και του εκθέτη είναι µηδενικά, τότε ο αριθµός είναι το µηδέν. Αν απαντήσατε σωστά συγχαρητήρια έχετε κατανοήσει το στάνταρτ ΙΕΕΕ 754. Αν όχι θα πρέπει να αφιερώσετε περισσότερο χρόνο για τη µελέτη της υποενότητας 2.1.1. 2.5 Σηµειώστε ότι ο κώδικας ASCII δεν υποστηρίζει το Ελληνικό αλφάβητο, εποµένως τα γράµµατα του Ελληνικού αλφάβητου α, β, ζ και ω δεν µπορούν να παρασταθούν στον κώδικα ASCII. α. Στον κώδικα ASCII έχουµε R: 1010010, q: 1110001, [: 1011011 και %: 0100101 α. Στον κώδικα ΕΛΟΤ 928 έχουµε R: 01010010, q: 01110001, [: 01011011, %: 00100101, α: 11100001, β: 11100010, ζ: 11100110 και ω: 11111001. Παρατηρούµε ότι όσον αφορά τα στοιχεία R, q, [ και %, η παράστασή τους στον κώδικα ΕΛΟΤ 928 προκύπτει από την παράστασή τους στον
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
κώδικα ASCII, επισυνάπτοντας ένα ακόµη µηδενικό ψηφίο στην πιο σηµαντική θέση. Αν απαντήσατε σωστά, µπράβο σας. Αν όχι, µην απογοητεύεστε µετά από πρόσθετη µελέτη θα τα καταφέρετε. 2.6 Load A: H εντολή αυτή είναι µία εντολή µεταφοράς δεδοµένων, διότι η εκτέλεσή της έχει ως αποτέλεσµα το περιεχόµενο της θέσης µνήµης µε διεύθυνση Α να µεταφερθεί στο συσσωρευτή. Store A: H εντολή αυτή είναι µία εντολή µεταφοράς δεδοµένων, διότι η εκτέλεσή της έχει ως αποτέλεσµα το περιεχόµενο του συσσωρευτή να µεταφερθεί στη θέση µνήµης µε διεύθυνση Α. Add R1, R2, R3: H εντολή αυτή ανήκει τόσο στις αριθµητικές εντολές όσο και στις εντολές µεταφοράς δεδοµένων, διότι η εκτέλεσή της έχει ως αποτέλεσµα το περιεχόµενο των καταχωρητών R2 και R3 να προστεθεί και το αποτέλεσµα να µεταφερθεί στον καταχωρητή Α. AND R1, R2, R3: H εντολή αυτή ανήκει τόσο στις λογικές εντολές όσο και στις εντολές µεταφοράς δεδοµένων, διότι η εκτέλεσή της έχει ως αποτέλεσµα να γίνει η λογική πράξη AND µεταξύ των περιεχοµένων των καταχωρητών R2 και R3, δυαδικό ψηφίο προς δυαδικό ψηφίο, και το αποτέλεσµα να µεταφερθεί στον καταχωρητή Α. JUMP X1: H εντολή αυτή ανήκει στις εντολές ελέγχου της ροής του προγράµµατος. Είναι µία άνευ συνθήκης εντολή άλµατος. Η εκτέλεσή της έχει ως αποτέλεσµα η επόµενη προς εκτέλεση εντολή να είναι αυτή που υπάρχει στη θέση µνήµης Χ1. JUMPΕ X1: H εντολή αυτή ανήκει στις εντολές ελέγχου της ροής του προγράµµατος. Είναι µία υπό συνθήκη εντολή άλµατος. Η εκτέλεσή της έχει ως αποτέλεσµα, εάν η σηµαία µηδενικού αποτελέσµατος στον καταχωρητή κατάστασης έχει την τιµή ένα, η επόµενη προς εκτέλεση εντολή να είναι αυτή που υπάρχει στη θέση µνήµης Χ1. ∆ιαφορετικά, η επόµενη προς εκτέλεση εντολή είναι αυτή που ακολουθεί την εντολή JUMPΕ X1 στο πρόγραµµα.
219
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
220
2.7 α. Το µειονέκτηµα του έµµεσου τρόπου διεθυνσιοδότησης είναι ότι απαιτείται η προσπέλαση περισσότερων από µία θέσεων της κύριας µνήµης ή /και καταχωρητών για την προσπέλαση του τελούµενου. Αυτό συνεπάγεται µεγάλο χρόνο προσπέλασης. β. Το µειονέκτηµα του σχετικού τρόπου διεθυνσιοδότησης είναι ότι απαιτείται η εκτέλεση τουλάχιστον µίας πράξης πρόσθεσης για να υπολογιστεί η διεύθυνση της θέσης της κύριας µνήµης ή ο καταχωρητής που περιέχει το ζητούµενο δεδοµένο. 2.8 Είναι δυνατόν ένας από τους υπολογιστές Χ1 και Χ2 ή και δύο να υποστηρίζουν σε επίπεδο εντολών γλώσσας µηχανής τη δοµή λίστα χαρακτήρων. Σε περίπτωση που κάποιος υπολογιστής δεν υποστηρίζει αυτή τη δοµή, τότε στο πρόγραµµα που παράγεται γι’ αυτόν τον υπολογιστή από τη µεταγλώττιση του προγράµµατος που γράφτηκε σε γλώσσα προγραµµατισµού υψηλού επιπέδου, η δοµή λίστα χαρακτήρων υλοποιείται µε έναν αριθµό από εντολές, δηλαδή τµήµα προγράµµατος, σε επίπεδο γλώσσας µηχανής του συγκεκριµένου υπολογιστή. 3.1 Αριθµητική λογική µονάδα, µονάδα ολίσθησης, µονάδα πολλαπλασιασµού και µονάδα διαίρεσης. 3.2 α. Α = 01011000, Β = 10100010 1. Θεωρούµε τους αριθµούς σαν θετικούς ακέραιους χωρίς πρόσηµο. 01011000(2) 10100010(2) –––––––––– 11111010(2) Παρατηρούµε ότι δεν υπάρχει κρατούµενο εξόδου, άρα το αποτέλεσµα είναι σωστό. Στο δεκαδικό έχουµε Α(10) + Β(10) = 88 + 162 = 250. Ο µέγιστος αριθµός
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
που µπορεί να παρασταθεί µε 8 δυαδικά ψηφία είναι ο 28 –1=255, εποµένως αφού το αποτέλεσµα της πρόσθεσης είναι 250, 250<255, συνεπάγεται ότι το αποτέλεσµα είναι σωστό. 2. Θεωρούµε ότι οι αριθµοί είναι σε παράσταση συµπληρώµατος ως προς δύο. 01011000(2) 10100010(2) –––––––––– 11111010(2) Σε παράσταση συµπληρώµατος ως προς δύο η υπερχείλιση προσδιορίζεται από τη σχέση (3.2) Υ = κν–1 ≈ κν–2 , που στην προκειµένη περίπτωση παίρνει την τιµή µηδέν. Εποµένως δεν έχουµε υπερχείλιση και το αποτέλεσµα είναι σωστό. Στο δεκαδικό έχουµε Α(10) + Β(10) = 88 + (–94) = –6. Ο ελάχιστος αριθµός που µπορεί να παρασταθεί µε 8 δυαδικά ψηφία σε παράσταση συµπληρώµατος ως προς δύο είναι ο –27 = –128, εποµένως αφού το αποτέλεσµα της πρόσθεσης είναι –6, συνεπάγεται ότι το αποτέλεσµα είναι σωστό. β. Α = 10010100, Β = 10011100 1. Θεωρούµε τους αριθµούς σαν θετικούς ακέραιους χωρίς πρόσηµο. 10010100 (2) 10011100 (2) ––––––––––– 100110000 (2) Παρατηρούµε ότι υπάρχει κρατούµενο εξόδου, η υπογραµµισµένη µονάδα που βρίσκεται στην πλέον αριστερή θέση του αποτελέσµατος, άρα υπάρχει υπερχείλιση και το αποτέλεσµα δεν µπορεί να θεωρηθεί σωστό. Στο δεκαδικό έχουµε Α(10) + Β(10) = 148 + 156 = 304. Ο µέγιστος αριθµός που µπορεί να παρασταθεί µε 8 δυαδικά ψηφία είναι ο 28 –1=255, εποµένως αφού το αποτέλεσµα της πρόσθεσης είναι 304, 304>255, συνεπάγεται ότι το αποτέλεσµα δεν µπορεί να παρασταθεί µε 8 δυαδικά ψηφία.
221
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
222
2. Θεωρούµε ότι οι αριθµοί είναι σε παράσταση συµπληρώµατος ως προς δύο. 10010100 (2) 10011100 (2) ––––––––––– 100110000 (2) Σε παράσταση συµπληρώµατος ως προς δύο η υπερχείλιση προσδιορίζεται από τη σχέση (3.2) Υ = κν–1 ≈ κν–2, που στην προκειµένη περίπτωση παίρνει την τιµή ένα. Εποµένως, έχουµε υπερχείλιση και το αποτέλεσµα δεν µπορεί να θεωρηθεί σωστό. Στο δεκαδικό έχουµε Α(10) + Β(10) = –108 + (–100) = –208 Ο ελάχιστος αριθµός που µπορεί να παρασταθεί µε 8 δυαδικά ψηφία σε παράσταση συµπληρώµατος ως προς δύο είναι ο –27 = –128, εποµένως αφού το αποτέλεσµα της πρόσθεσης είναι –208, συνεπάγεται ότι το αποτέλεσµα δεν µπορεί να θεωρηθεί σωστό. γ. Α = 00001010, Β = 01111111 1. Θεωρούµε τους αριθµούς σαν θετικούς ακέραιους χωρίς πρόσηµο. 00001010(2) 01111111(2) –––––––––– 10001001(2) Παρατηρούµε ότι δεν υπάρχει κρατούµενο εξόδου, άρα το αποτέλεσµα είναι σωστό. Στο δεκαδικό έχουµε Α(10) + Β(10) = 10 + 127 = 137. Ο µέγιστος αριθµός που µπορεί να παρασταθεί µε 8 δυαδικά ψηφία είναι ο 28 –1=255, εποµένως αφού το αποτέλεσµα της πρόσθεσης είναι 137, 137<255, συνεπάγεται ότι το αποτέλεσµα είναι σωστό. 2. Θεωρούµε ότι οι αριθµοί είναι σε παράσταση συµπληρώµατος ως προς δύο. 00001010(2) 01111111(2) –––––––––– 10001001(2)
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
Σε παράσταση συµπληρώµατος ως προς δύο η υπερχείλιση προσδιορίζεται από τη σχέση (3.2) : Υ = κν–1 ≈ κν–2, που στην προκειµένη περίπτωση παίρνει την τιµή ένα. Εποµένως έχουµε υπερχείλιση και το αποτέλεσµα δεν µπορεί να θεωρηθεί σωστό. Σε αντίθετη περίπτωση, από το άθροισµα δύο θετικών αριθµών θα προέκυπτε ένας αρνητικός. Στο δεκαδικό έχουµε Α(10) + Β(10) = 10 + 127 = 137. Ο µέγιστος αριθµός που µπορεί να παρασταθεί µε 8 δυαδικά ψηφία σε παράσταση συµπληρώµατος ως προς δύο είναι ο 27 –1 = 127, εποµένως αφού το αποτέλεσµα της πρόσθεσης είναι 137, συνεπάγεται ότι το αποτέλεσµα δεν µπορεί να θεωρηθεί σωστό. 3.3 Ένας ολισθητής των 64 δυαδικών ψηφίων που βασίζεται στη χρήση πολυπλεκτών, όπως αυτός του σχήµατος 3.6, θα αποτελείται από log2(64) = 6 επίπεδα. Ο χρόνος διάδοσης ενός σήµατος διαµέσου αυτών των έξι επιπέδων είναι µεγαλύτερος από το χρόνο που απαιτείται ώστε ένα σήµα να περάσει από την είσοδο στην έξοδο ενός φλιπ–φλοπ, υπό την προϋπόθεση βέβαια ότι και οι δύο έχουν υλοποιηθεί µε την ίδια τεχνολογία. Εποµένως, η ολίσθηση κατά µία θέση θα γίνεται πιο γρήγορα στον καταχωρητή–ολισθητή. Όµως η ολίσθηση κατά 30 θέσεις θα γίνεται πολύ πιο γρήγορα στον συνδυαστικό ολισθητή, διότι αυτός εκτελεί σε ένα βήµα οποιοδήποτε αριθµό ολισθήσεων, ενώ ο καταχωρητής–ολισθητής απαιτεί 30 χρονικές περιόδους. 3.4 Υποθέτουµε ότι πολλαπλασιάζουµε αριθµούς που καθένας είναι των ν δυαδικών ψηφίων. Τότε: α. Στη χειρότερη περίπτωση απαιτούνται 2ν–1 προσθέσεις, όπου 2ν–1 είναι ο µέγιστος αριθµός που µπορεί να παρασταθεί µε ν δυαδικά ψηφία. β. Στη χειρότερη περίπτωση απαιτούνται ν προσθέσεις και ν ολισθήσεις. Παρατηρούµε ότι για µεγάλες τιµές του ν η διαφορά γίνεται τεράστια υπέρ του αλγόριθµου του σχήµατος 3.7. 3.5 Στον Πίνακα 3.3 περιγράφεται η εφαρµογή του αλγόριθµου του σχήµατος
223
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
224
3.8. Ο πολλαπλασιαστέος είναι 1010 = 00001010(2) και ο πολλαπλασιαστής 3810 = 00100110(2). Μετά την ολοκλήρωση της όγδοης επανάληψης οι καταχωρητές Κ1/Κ2 περιέχουν το αποτέλεσµα του πολλαπλασιασµού 0000000101111100 = 38010.
¶›Ó·Î·˜ 3.3
Εκτέλεση της πράξης του πολλαπλασιασµού µε διαδοχικές προσθέσεις και ολισθήσεις επανάληψη
λειτουργία
0
Τοποθέτηση αρχικών τιµών
1
ΛΣΨ(Κ1/Κ2)=0Þ όχι πρόσθεση
2
3
Κ1 00000000
Ολίσθησε το περιεχόµενο των Κ1/Κ2 κατά µία θέση προς τα δεξιά.
00000000
ΛΣΨ(Κ1/Κ2)=1Þ πρόσθεση
+00001010
00100110
Ολίσθησε το περιεχόµενο των Κ1/Κ2 κατά µία θέση προς τα δεξιά.
00000101
00001001
ΛΣΨ(Κ1/Κ2)=1Þ πρόσθεση
+00001010
00001010 00001001
00000111 10000100
ΛΣΨ(Κ1/Κ2)=0Þ όχι πρόσθεση
00001010
00000011
11000010
ΛΣΨ(Κ1/Κ2)=0Þ όχι πρόσθεση
Ολίσθησε το περιεχόµενο των Κ1/Κ2 κατά µία θέση προς τα δεξιά.
00001010
00001010 00010011
Ολίσθησε το περιεχόµενο των Κ1/Κ2 κατά µία θέση προς τα δεξιά.
Κ3
00010011
00001010
Ολίσθησε το περιεχόµενο των Κ1/Κ2 κατά µία θέση προς τα δεξιά.
5
Κ2
00001010
00001111
4
/
00001010
00000001
11100001
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
6
ΛΣΨ(Κ1/Κ2)=1Þ πρόσθεση
Ολίσθησε το περιεχόµενο των Κ1/Κ2 κατά µία θέση προς τα δεξιά 7
+00001010
00001010
00001011
11100001
00000101
11110000
ΛΣΨ(Κ1/Κ2)=0Þ όχι πρόσθεση
Ολίσθησε το περιεχόµενο των Κ1/Κ2 κατά µία θέση προς τα δεξιά 8
225
00001010
00000010
11111000
ΛΣΨ(Κ1/Κ2)=0Þ όχι πρόσθεση
Ολίσθησε το περιεχόµενο των Κ1/Κ2 κατά µία θέση προς τα δεξιά
00001010
00000001
3.6 Εάν εφαρµόσουµε τον αλγόριθµο µε µολύβι και χαρτί, οι δύο ενέργειες είναι ισοδύναµες. Στον υπολογιστή, όµως, εξαιτίας του πεπερασµένου αριθµού δυαδικών ψηφίων που χρησιµοποιούνται για την παράσταση των αριθµών, τα πράγµατα είναι διαφορετικά. Εάν ολισθήσουµε το συντελεστή του µικρότερου αριθµού προς τα δεξιά, µπορεί να χάσουµε κάποια από τα λιγότερο σηµαντικά δυαδικά ψηφία, γεγονός που θα επηρεάσει µόνο την ακρίβεια του αποτελέσµατος. Αντίθετα, εάν ολισθήσουµε το συντελεστή του µεγαλύτερου αριθµού προς τα αριστερά, επειδή οι αριθµοί είναι κανονικοποιηµένοι, θα χάσουµε κάποια από τα περισσότερο σηµαντικά δυαδικά ψηφία, που είναι καταστροφικό για το αποτέλεσµα. 3.7 Όταν χρησιµοποιείται η κωδικοποίηση ενός ενεργού σήµατος, µπορούµε να χρησιµοποιήσουµε σήµα χρονισµού (clock) µεγαλύτερης συχνότητας, διότι η µεταφορά από µία κατάσταση σε µία άλλη είναι γενικά απλούστερη και µπορεί να υλοποιηθεί µε απλά συνδυαστικά κυκλώµατα λίγων επιπέδων. Εποµένως η µονάδα ελέγχου είναι πιο γρήγορη, όταν για την κωδικοποίηση καταστάσεων χρησιµοποιείται η κωδικοποίηση ενός ενεργού σήµατος.
01111100
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
226
3.8 Πλεονεκτήµατα: Η τεχνική του µικροπρογραµµατισµού κάνει το σχεδιασµό της µονάδας ελέγχου πιο συστηµατικό. Επειδή τα σήµατα ελέγχου είναι πραγµατοποιηµένα µε λογισµικό και όχι µε υλικό, είναι εύκολο να γίνει διόρθωση σχεδιαστικών λαθών ή τροποποίηση του συνόλου των εντολών της µηχανής. Μειονεκτήµατα: Η µικροπρογραµµατισµένη µονάδα ελέγχου είναι πιο αργή από τη µονάδα ελέγχου που υλοποιείται σαν ακολουθιακό κύκλωµα λόγω του χρόνου που απαιτείται για την προσκόµιση των µικροεντολών από τη µνήµη ελέγχου. 3.9 α. Χρησιµοποίηση περισσότερων της µίας µορφών µικροεντολών. β. Οργάνωση δύο επιπέδων, νανοπρογραµµατισµός. γ. Κωδικοποίηση των σηµάτων ελέγχου. 3.10 Για την υλοποίηση της µνήµης ελέγχου ενός επιπέδου απαιτούνται 2048 ¥100 = 204800 δυαδικά ψηφία. Όταν η µνήµη ελέγχου υλοποιείται µε την τεχνική του νανοπρογραµµατισµού, το δεύτερο επίπεδο αποτελείται από 200 θέσεις, όσες είναι οι διαφορετικές µικροεντολές, των 100 δυαδικών ψηφίων η καθεµία, όσο το µήκος της κάθε µικροεντολής. Το πρώτο επίπεδο έχει 2048 θέσεις, όσες θέσεις καταλαµβάνουν τα µικροπρογράµµατα στην περίπτωση ενός επιπέδου, των 8 δυαδικών ψηφίων η καθεµία. Εποµένως στην περίπτωση του νανοπρογραµµατισµού απαιτούνται 200 ¥ 100 + 2048 ¥ 8 = 36384 δυαδικά ψηφία. Παρατηρούµε λοιπόν ότι στην περίπτωση που χρησιµοποιούµε την τεχνική του νανοπρογραµµατισµού απαιτείται λιγότερο από το ένα πέµπτο της χωρητικότητας που απαιτείται στην περίπτωση της µνήµης ελέγχου ενός επιπέδου. Όσον αφορά όµως στην ταχύτητα στην περίπτωση της µνήµης ελέγχου ενός επιπέδου για να εκτελεστεί µία µικροεντολή αρκεί µία προσπέλαση της µνήµης ελέγχου, ενώ στην περίπτωση του νανοπρογραµµατισµού χρειάζονται δύο προσπελάσεις, µία της µνήµης του πρώτου επιπέδου και µία της µνήµης του δεύτερου.
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
3.11 Όταν εκτελείται µία οριζόντια µικροεντολή, πολλές µικρολειτουργίες ενεργοποιούνται ταυτόχρονα. Για να µπορούν όµως να εκτελεστούν ταυτόχρονα, θα πρέπει να είναι σχεδιασµένος κατάλληλα ολόκληρος ο επεξεργαστής. Στην άσκηση ο επεξεργαστής δεν είναι σχεδιασµένος γι’ αυτό το σκοπό, εποµένως δεν µπορούµε να χρησιµοποιήσουµε οριζόντιες µικροεντολές. 4.1
4.2 α. Παρατηρούµε ότι η κυψελίδα του σχήµατος 4.6 απαιτεί επιπλέον του υλι-
227
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
228
κού της κυψελίδας του σχήµατος 4.1 µία πύλη AND 2 εισόδων, µία πύλη XOR δύο εισόδων και µία πύλη τριών καταστάσεων. Επίσης απαιτείται αρκετά περισσότερο εµβαδόν για τη διασύνδεση των πυλών και του φλιπ–φλοπ της κυψελίδας του σχήµατος 4.6 από ό,τι της κυψελίδας του σχήµατος 4.1. Εποµένως το κόστος υλοποίησης της κυψελίδας του σχήµατος 4.6 είναι µεγαλύτερο. β. Από τα σχήµατα 4.2 και 4.5 παρατηρούµε ότι η µνήµη που προσπελαύνεται ανάλογα του περιεχοµένου της αποτελείται από περισσότερες υποµονάδες από ό,τι η µνήµη που προσπελαύνεται µε διευθύνσεις. Λαµβάνοντας επίσης υπόψη ότι η κυψελίδα της µνήµης που προσπελαύνεται ανάλογα του περιεχοµένου της είναι περισσότερο πολύπλοκη από την κυψελίδα της µνήµης που προσπελαύνεται µε διευθύνσεις, συµπεραίνουµε ότι το κόστος υλοποίησης της µνήµης που προσπελαύνεται ανάλογα του περιεχοµένου της είναι µεγαλύτερο. 4.3 α. Η µονάδα µνήµης µαγνητικών δίσκων δεν είναι σειριακής αλλά κατ' ευθείαν προσπέλασης. Η µονάδα µνήµης µαγνητικής ταινίας είναι πράγµατι σειριακής προσπέλασης. β. Σωστό. Οι µονάδες µνήµης µαγνητικών δίσκων σταθερής κεφαλής έχουν µικρότερο µέσο χρόνο προσπέλασης από τις αντίστοιχες µονάδες µαγνητικών δίσκων κινητής κεφαλής, διότι σε κάθε οµόκεντρο κύκλο κάθε επιφάνειας δίσκου διαθέτουν και µία κεφαλή ανάγνωσης/εγγραφής, εποµένως ο χρόνος αναζήτησης είναι µηδενικός. Θα πρέπει να τονίσουµε ότι, επειδή οι µνήµες µαγνητικών δίσκων σταθερής κεφαλής έχουν µία κεφαλή ανά οµόκεντρο κύκλο, είναι πιο ακριβές. Αν απαντήσατε σωστά, συγχαρητήρια. Αν όχι, µην απογοητεύεστε, αν δώσετε λίγο περισσότερη προσοχή είναι βέβαιο ότι θα τα καταφέρετε. 4.4 α. Ένας λόγος της τοπικότητας των αναφορών είναι ότι οι εντολές και σε µικρότερη έκταση τα δεδοµένα γράφονται και στη συνέχεια αποθηκεύονται στη µνήµη του υπολογιστή σχεδόν µε τη σειρά µε την οποία χρειάζονται κατά τη διάρκεια της εκτέλεσης του προγράµµατος. Ένας δεύτερος
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
229
παράγοντας που συµβάλλει στην τοπικότητα των αναφορών είναι οι βρόχοι (loops) που εµφανίζονται µέσα στα προγράµµατα. Η εκτέλεση των εντολών που περιέχονται µέσα σ’ ένα βρόχο επαναλαµβάνεται πολλές φορές µε αποτέλεσµα να έχουµε µεγάλη συχνότητα εµφάνισης των διευθύνσεών τους. β. Υποθέστε ότι η ΚΜΕ απαιτεί τη διεύθυνση Α που περιέχει την εντολή Ι και ότι αυτή η διεύθυνση υπάρχει στη µνήµη Μi µε i≠1. Η επόµενη εντολή που θα απαιτηθεί κατά πάσα πιθανότητα από την ΚΜΕ είναι η εντολή που έπεται της Ι και, αν υποθέσουµε ότι η εντολή καταλαµβάνει µία θέση µνήµης, είναι αποθηκευµένη στη διεύθυνση Α+1. Εποµένως, αντί να µεταφέρουµε µόνο την εντολή Ι στο επίπεδο µνήµης Μ1, είναι επιθυµητό να µεταφέρουµε µια οµάδα, µπλοκ, από διαδοχικές λέξεις που περιέχουν την Ι. Οι επόµενες αναφορές στη µνήµη είναι πιθανόν να αναφέρονται σε διευθύνσεις που περιέχονται στο µπλοκ πληροφορίας που µεταφέραµε στο επίπεδο µνήµης Μ1, εποµένως η µεταφορά του µπλοκ πληροφορίας στο Μ1 ανταποκρίνεται σε µελλοντικές αναφορές της ΚΜΕ, στη µνήµη. γ. Ο µέσος χρόνος προσπέλασης Τ πληροφορίας που βρίσκεται σε ιεραρχία µνηµών ν επιπέδων δίνεται από τη σχέση T =
n
 E T . ∆ηλαδή ισούται µε i i
i =1
το άθροισµα των γινοµένων της πιθανότητας η πληροφορία να βρίσκεται στο επίπεδο µνήµης i και να µην βρίσκεται σε κάποιο επίπεδο µνήµης περισσότερο κοντά στην ΚΜΕ επί το χρόνο µεταφοράς της πληροφορίας από το επίπεδο i στην ΚΜΕ, για i=1, 2, .., ν. 4.5 α. Η προσκόµιση ενός µπλοκ από την κύρια µνήµη στην κρυφή µνήµη όταν αυτό απαιτείται(on demand) ή εκ των προτέρων (prefetch). β. Στην περίπτωση της εκ των προτέρων προσκόµισης χρησιµοποιούνται τεχνικές που προσπαθούν να φέρουν στην κρυφή µνήµη την πληροφορία πριν αυτή απαιτηθεί από την ΚΜΕ. Αν στην πλειονότητα των περιπτώσεων αυτό πετυχαίνεται, η ΚΜΕ δεν θα χάνει χρόνο περιµένοντας τη ζητούµενη πληροφορία να προσκοµιστεί από την κύρια µνήµη. Σ' αυτή την περίπτωση η τακτική της προσκόµισης µπλοκ εκ των προτέρων είναι πιο αποτελεσµατική.
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
230
4.6 Οι τρόποι οργάνωσης της κρυφής µνήµης είναι ο άµεσος, ο πλήρους συσχέτισης και ο τ–τρόπων συνόλου συσχέτισης. Τα πλεονεκτήµατα του άµεσου τρόπου οργάνωσης είναι το χαµηλό κόστος υλοποίησης και ο µικρότερος χρόνος προσπέλασης της κρυφής µνήµης. Το µειονέκτηµα είναι ο µεγαλύτερος λόγος αποτυχίας. Επίσης, όταν δύο ή περισσότερα µπλοκ της κύριας µνήµης που αντιστοιχούν στο ίδιο πλαίσιο της κρυφής µνήµης απαιτούνται από την ΚΜΕ εναλλάξ το ένα µετά το άλλο, επειδή δεν µπορούν να βρίσκονται ταυτόχρονα στην κρυφή µνήµη, θα πρέπει να µεταφέρονται εναλλάξ µεταξύ της κύριας και της κρυφής µνήµης. Τα πλεονεκτήµατα της κρυφής µνήµης µε οργάνωση πλήρους συσχέτισης είναι ο µικρότερος λόγος αποτυχίας σε σχέση µε τις άλλες δύο οργανώσεις. Μειονεκτήµατα είναι το πολύ µεγαλύτερο κόστος υλοποίησης και ο µεγαλύτερος χρόνος προσπέλασης. Η κρυφή µνήµη τ–τρόπων συνόλου συσχέτισης, όσον αφορά στα πλεονεκτήµατα και µειονεκτήµατα, βρίσκεται µεταξύ των δύο άλλων οργανώσεων. Για µικρές τιµές του τ τα χαρακτηριστικά της είναι πιο κοντά στην κρυφή µνήµη άµεσης οργάνωσης, ενώ για µεγάλες τιµές του τ είναι κοντά στην κρυφή µνήµη πλήρους συσχέτισης. 4.7 Το µπλοκ της κύριας µνήµης µε διεύθυνση Α θα αποθηκευτεί στο πλαίσιο Π της κρυφής µνήµης, όταν το υπόλοιπο της διαίρεσης του Α δια του 4 (επειδή η κρυφή µνήµη έχει τέσσερα πλαίσια) ισούται µε Π. Άρα τα µπλοκ της κύριας µνήµης µε διευθύνσεις 3, 4, 6, 8, 9, 12 και 13 µπορούν να αποθηκευτούν σε πλαίσια της κρυφής µνήµης µε διευθύνσεις 3, 0, 2, 0, 1, 0 και 1 αντίστοιχα. 4.8 α. Η κρυφή µνήµη είναι των 16 Κλέξεων, δηλαδή 214 λέξεις, και κάθε πλαίσιο αποτελείται από 4 λέξεις, εποµένως η κρυφή µνήµη περιέχει 214/22 = 214–2 = 212 πλαίσια. Εφόσον η αρτηρία διευθύνσεων είναι των 32 δυαδικών ψηφίων, η κύρια µνήµη µπορεί να έχει µέχρι 232 θέσεις µνήµης. Εµείς θα θεωρήσουµε ότι έχει 232 θέσεις. Το µήκος κάθε θέσης είναι µία λέξη, δηλαδή 8 δυαδικά ψηφία. Το µέγεθος του µπλοκ της κύριας µνήµης είναι
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
το ίδιο µε το µέγεθος του πλαισίου της κρυφής µνήµης, εποµένως η κύρια µνήµη έχει 232/22 = 230 µπλοκ και στο ίδιο πλαίσιο της κρυφής µνήµης µπορούν να αποθηκευτούν 230/212 = 230–12 = 218 µπλοκ της κύριας µνήµης. β. 690F8(16) = 0110 1001 0000 1111 1000(2). Επειδή κάθε µπλοκ αποτελείται από 4 λέξεις, τα δύο λιγότερο σηµαντικά ψηφία της διεύθυνσης δηλώνουν τη λέξη µέσα στο µπλοκ και τα υπόλοιπα τη διεύθυνση του µπλοκ της κύριας µνήµης. Άρα η διεύθυνση του µπλοκ στην κύρια µνήµη είναι Α = 01 1010 0100 0011 1110(2). Για να βρούµε τη διεύθυνση του πλαισίου της κρυφής µνήµης στο οποίο µπορεί να αποθηκευτεί το περιεχόµενο της θέσης µνήµης µε διεύθυνση 690F8(16) πρέπει να πάρουµε το υπόλοιπο της διαίρεσης του Α µε το 212. Αυτό γίνεται κρατώντας τα 12 λιγότερο σηµαντικά δυαδικά ψηφία του Α, δηλαδή 0100 0011 1110(2) = 43D. Άρα η λέξη που είναι αποθηκευµένη στη θέση µνήµης µε διεύθυνση 690F8(16) µπορεί να µεταφερθεί στο πλαίσιο της κρυφής µνήµης µε διεύθυνση 43D. γ. Τα µπλοκ της κύριας µνήµης που µπορούν να αποθηκευτούν στο πλαίσιο της κρυφής µνήµης µε διεύθυνση 960(16) έχουν µία από τις διευθύνσεις που µπορούν να παρασταθούν από την παράσταση RWZYX960, όπου τα W, Z, Y και X παίρνουν τιµές από 0 µέχρι και F(16), ενώ το R παίρνει τιµές από 0 µέχρι και 3. 4.9 Αφού η κρυφή µνήµη είναι πλήρους συσχέτισης, η λέξη που είναι αποθηκευµένη στη θέση µε διεύθυνση A79233(16) µπορεί να αποθηκευτεί σε οποιοδήποτε πλαίσιο της κρυφής µνήµης. 4.10 α. Η κρυφή µνήµη είναι των 64 Κλέξεων, δηλαδή 216 λέξεις και κάθε πλαίσιο αποτελείται από 4 λέξεις, εποµένως η κρυφή µνήµη περιέχει 216/22 = 216–2 = 214 πλαίσια. Κάθε σύνολο αποτελείται από 4 πλαίσια, εποµένως η κρυφή µνήµη περιέχει 214/22 = 214–2 = 212 σύνολα. Εφόσον η αρτηρία διευθύνσεων είναι των 32 δυαδικών ψηφίων, η κύρια µνήµη µπορεί να έχει µέχρι 232 θέσεις µνήµης. Εµείς θα θεωρήσουµε ότι έχει 2 32 θέσεις. Το µήκος κάθε θέσης είναι µία λέξη, δηλαδή 8 δυαδικά ψηφία. Το µέγεθος του µπλοκ της κύριας µνήµης είναι το ίδιο µε το µέγεθος του πλαισίου της κρυφής µνήµης, εποµένως η κύρια µνήµη έχει 232/22 = 230 µπλοκ και στο ίδιο πλαίσιο της κρυφής µνήµης µπορούν να αποθηκευτούν 230/212 = 230–12
231
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
232
= 218 µπλοκ της κύριας µνήµης. β. 960F8(16) = 1001 0110 0000 1111 1000(2). Επειδή κάθε µπλοκ αποτελείται από 4 λέξεις, τα δύο λιγότερο σηµαντικά ψηφία της διεύθυνσης δηλώνουν τη λέξη µέσα στο µπλοκ και τα υπόλοιπα τη διεύθυνση του µπλοκ της κύριας µνήµης. Άρα η διεύθυνση του µπλοκ στην κύρια µνήµη είναι Α = 10 0101 1000 0011 1110 (2). Για να βρούµε τη διεύθυνση του συνόλου της κρυφής µνήµης, στο οποίο µπορεί να αποθηκευτεί το περιεχόµενο της θέσης µνήµης µε διεύθυνση 960F8(16) πρέπει να πάρουµε το υπόλοιπο της διαίρεσης του Α µε το 212. Αυτό γίνεται κρατώντας τα 12 λιγότερο σηµαντικά δυαδικά ψηφία του Α, δηλαδή 1000 0011 1110(2) = 83E. Άρα η λέξη που είναι αποθηκευµένη στη θέση µνήµης µε διεύθυνση 960F8(16) µπορεί να µεταφερθεί σε οποιοδήποτε πλαίσιο του συνόλου µε διεύθυνση 83E της κρυφής µνήµης. γ. Λαµβάνοντας υπόψη ότι υπάρχουν 212 σύνολα και 230 µπλοκ της κύριας µνήµης, συµπεραίνουµε ότι τα µπλοκ της κύριας µνήµης που µπορούν να αποθηκευτούν στο σύνολο της κρυφής µνήµης 60(16) είναι αυτά που µπορούν να παρασταθούν από την παράσταση RWZYX060 όπου τα W, Z, Y και X παίρνουν τιµές από 0 µέχρι και F(16), ενώ το R παίρνει τιµές από 0 µέχρι και 3. 4.11 Τυχαία επιλογή, επιλογή του πλαισίου που δεν χρησιµοποιήθηκε πρόσφατα και επιλογή του πλαισίου που προσκοµίστηκε πρώτο στην κρυφή µνήµη. 4.12 α. Στο πρώτο τµήµα αντιστοιχούν οι πρώτες 210 διευθύνσεις, στο δεύτερο οι επόµενες 210 διευθύνσεις κλπ. β. Οι διευθύνσεις που όταν τις διαιρέσουµε µε το 4 δίνουν υπόλοιπο µηδέν, ένα, δύο και τρία αντιστοιχούν στο πρώτο , δεύτερο, τρίτο και τέταρτο τµήµα αντίστοιχα. 5.1 • H αρτηρία PCI είναι αρτηρία συστήµατος. • Oι αρτηρίες ISA, EISA, EIDE και SCSI είναι αρτηρίες εισόδου/εξόδου.
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
5.2 α. Στις αρτηρίες εισόδου/εξόδου συνδέονται συνήθως µονάδες µε πολύ διαφορετικές ταχύτητες. Χρησιµοποιώντας ασύγχρονες αρτηρίες µπορούµε να λειτουργήσουµε κάθε συνδεδεµένη µονάδα στη µέγιστη ταχύτητά της, αρκεί αυτή να µην ξεπερνάει την ταχύτητα της αρτηρίας. β. Το πρωτόκολλο της σύγχρονης επικοινωνίας µπορεί να υλοποιηθεί πολύ εύκολα µε ένα µικρό ακολουθιακό κύκλωµα, εποµένως οι σύγχρονες αρτηρίες µπορεί να είναι πιο γρήγορες από τις ασύγχρονες (βέβαια η ταχύτητα µίας αρτηρίας εξαρτάται και από άλλους παράγοντες, όπως το µήκος της και το πλήθος των µονάδων που είναι συνδεδεµένες σ’ αυτή). Η αρτηρία επεξεργαστή–µνήµης σχεδιάζεται µε στόχο την επίτευξη µεγάλης ταχύτητας, εποµένως βολεύει να είναι σύγχρονη. γ. Το κύριο πλεονέκτηµα της διαιτησίας µε χρήση αλυσίδας προτεραιότητας είναι το µικρό κόστος υλοποίησής της. Τα κύρια µειονεκτήµατα είναι η απουσία δικαιοσύνης και το γεγονός ότι η αλλαγή προτεραιοτήτων των µονάδων δεν µπορεί να γίνει µε λογισµικό, απαιτούνται αλλαγές στο υλικό. δ. Επιθυµία µας είναι να µπορούµε να αγοράζουµε περιφερειακές µονάδες από διάφορους κατασκευαστές και να τις συνδέουµε στον υπολογιστή µας. Σ’ ένα σύστηµα που διαθέτει αρτηρία ή αρτηρίες εισόδου/εξόδου οι περιφερειακές µονάδες συνδέονται σ’ αυτές τις αρτηρίες. Για να µπορεί λοιπόν να συνδεθεί µία περιφερειακή µονάδα σε µία αρτηρία εισόδου/εξόδου του υπολογιστή, θα πρέπει τα χαρακτηριστικά της αρτηρίας αυτής να είναι πλήρως γνωστά στον κατασκευαστή της περιφερειακής µονάδας. Επίσης τα χαρακτηριστικά της αρτηρίας αυτής θα πρέπει να είναι σταθερά. 5.3 α. Η οικογένεια επεξεργαστών Intel 80X86 διαθέτει ειδικές εντολές εισόδου/εξόδου. Αντίθετα, η οικογένεια επεξεργαστών Motorola 680¥0 δεν διαθέτει εντολές εισόδου/εξόδου. β. Εάν ο επεξεργαστής βρίσκεται σε κατάσταση στην οποία δεν επιτρέπεται η εξυπηρέτηση σηµάτων διακοπής δε θα συµβεί τίποτε. Στην αντίθετη περίπτωση µετά την ολοκλήρωση του τρέχοντος κύκλου εντολής: 1. το περιεχόµενο του µετρητή προγράµµατος και όλων των καταχωρητών που αποτελούν το πτητικό περιβάλλον της τρέχουσας διαδικασίας θα αποθηκευτεί στη µνήµη σωρού.
233
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
234
2. θα προσδιοριστεί η µονάδα που έστειλε το σήµα διακοπής (υπάρχουν διάφοροι τρόποι για να γίνει αυτός ο προσδιορισµός). 3. ο έλεγχος του προγράµµατος θα µεταφερθεί στην υπορουτίνα εξυπηρέτησης της συγκεκριµένης µονάδας. γ. Το κύριο πλεονέκτηµα της προγραµµατισµένης διαδικασίας εισόδου/εξόδου είναι το µικρό κόστος υλοποίησης. Το κύριο µειονέκτηµα είναι ότι απασχολείται η ΚΜΕ µε την εκτέλεση της διαδικασίας εισόδου/εξόδου, ενώ σε ένα σύστηµα πολλαπλών διεργασιών (multitasking), που θα διέθετε επίσης µονάδα Άµεσης Προσπέλασης Μνήµης, η ΚΜΕ θα µπορούσε να ασχολείται µε την εκτέλεση κάποιας άλλης διεργασίας κατά την εκτέλεση της διαδικασίας εισόδου/εξόδου. ¶·Ú¿ÚÙËÌ· ∞.1 Υπενθυµίζουµε ότι στο δυαδικό, οκταδικό, δεκαδικό και δεκαεξαδικό σύστηµα αρίθµησης τα ψηφία αλ µπορούν να παίρνουν ακέραιες τιµές στην περιοχή 0 £ αλ £ 1, 0 £ αλ £ 7, 0 £ αλ £ 9 και 0 £ αλ £ 15 αντίστοιχα. Επίσης υπενθυµίζουµε ότι στο δεκαεξαδικό σύστηµα για την παράσταση των αριθµών από 10 έως και 15 χρησιµοποιούµε τα γράµµατα A, B, C, D, και F. Εποµένως, επειδή τα ψηφία του αριθµού α. 00101001 είναι µεταξύ 0 και 1, ο αριθµός αυτός µπορεί να είναι δυαδικός, οκταδικός, δεκαδικός ή δεκαεξαδικός. Ο αριθµός β. 12765, επειδή έχει ψηφία µεγαλύτερα του 1, δεν µπορεί να είναι δυαδικός. Λαµβάνοντας δε υπόψη ότι όλα τα ψηφία του είναι µικρότερα του οκτώ συµπεραίνουµε ότι µπορεί να είναι οκταδικός, δεκαδικός ή δεκαεξαδικός. Σκεπτόµενοι µε τον ίδιο τρόπο, συµπεραίνουµε ότι ο αριθµός γ. 763554 µπορεί να είναι οκταδικός, δεκαδικός ή δεκαεξαδικός, οι αριθµοί δ. 987699 και ε. 90110 µπορεί να είναι δεκαδικοί ή δεκαεξαδικοί και οι αριθµοί ζ. FFΑ901 και η. A9909 µπορούν να είναι µόνο δεκαεξαδικοί. Εάν απαντήσατε σωστά, µπράβο σας. Εάν όχι, µην απογοητεύεστε, µετά από πρόσθετη µελέτη θα τα καταφέρετε. ¶·Ú¿ÚÙËÌ· ∞.2 Η απάντηση είναι: 1. σωστό, 2. σωστό, 3. λάθος, 4. σωστό, 5. λάθος. Η αιτιολόγηση είναι ίδια µε αυτή της άσκησης 1. Εάν απαντήσατε σωστά, µπράβο σας. Εάν όχι, πρέπει να ξαναµελετήσετε το περιεχόµενο του παραρτήµατος πιο προσεκτικά και είναι βέβαιο ότι θα τα καταφέρετε.
∞¶∞¡∆∏™∂π™ ∞™∫∏™∂ø¡ ∞À∆√∞•π√§√°∏™∏™
¶·Ú¿ÚÙËÌ· ∞.3 α. Επειδή ο αριθµός είναι στο δυαδικό, η βάση του συστήµατος αρίθµησης είναι το δύο, εποµένως χρησιµοποιώντας τη σχέση Α.2 παίρνουµε: Χ(10) = 1. 25+0 . 24+1. 23+1. 22+1. 21+1. 20+0 . 2–1+1 . 2–2+1. 2–3 = 47,375 β. Επειδή ο αριθµός είναι στο οκταδικό η βάση του συστήµατος αρίθµησης είναι το οκτώ, εποµένως χρησιµοποιώντας τη σχέση Α.2 παίρνουµε: Χ(10) = 1. 85+0 . 84+1. 83+1. 82+2 . 81+7 . 80 = 33367 γ. Επειδή ο αριθµός είναι στο δεκαεξαδικό, η βάση του συστήµατος αρίθµησης είναι το 16, εποµένως χρησιµοποιώντας τη σχέση Α.2 παίρνουµε: Χ(10) = 1 . 164+0 . 163+9 . 162+Α. 161+C. 160+D . 16–1 = = 1 . 164+0 . 163+9 . 162+10. 161+13. 160+14 . 16–1 = 68013,875 ¶·Ú¿ÚÙËÌ· ∞.4 α. Η µετατροπή θα γίνει χωριστά για το ακέραιο και το κλασµατικό µέρος. Ξεκινώντας από το ακέραιο µέρος έχουµε: Βήµα 1. α0 = το υπόλοιπο του 20/2= 0 και ακέραιο µέρος του πηλίκου 20/2=10 Βήµα 2. α1 = το υπόλοιπο του 10/2=0 και ακέραιο µέρος του πηλίκου 10/2=5 Βήµα 3. α2 = το υπόλοιπο του 5/2=1 και ακέραιο µέρος του πηλίκου 5/2=2 Βήµα 4. α3 = το υπόλοιπο του 2/2=0 και ακέραιο µέρος του πηλίκου 2/2=1 Βήµα 5. α4 = το υπόλοιπο του 1/2=1 και ακέραιο µέρος του πηλίκου 1/2=0 Άρα το ακέραιο µέρος ΑΧ(2) είναι: 10100 Όσον αφορά στο κλασµατικό µέρος του Χ(10), που είναι το 0.36, θα πρέπει να αποφασίσουµε πόσα δυαδικά ψηφία θα χρησιµοποιήσουµε για την παράστασή του. Έστω λοιπόν ότι θα χρησιµοποιήσουµε τέσσαρα δυαδικά ψηφία. Τότε: Βήµα 1. α–1 = ακέραιο µέρος του 2.0,36 = 0 και κλασµατικό =0,72 Βήµα 2. α–2 = ακέραιο µέρος του 2.0,72 = 1 και κλασµατικό =0,44 Βήµα 3. α–3 = ακέραιο µέρος του 2.0,44 = 0 και κλασµατικό =0,88 Βήµα 4. α–4 = ακέραιο µέρος του 2.0,88 = 1 και κλασµατικό =0,76
235
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
236
άρα το κλασµατικό µέρος είναι: 0101. Εποµένως Χ(2) = 10100.0101 β. Αντικαθιστώ κάθε ψηφίο του δεκαεξαδικού αριθµού µε τη δυαδική του παράσταση χρησιµοποιώντας τέσσαρα δυαδικά ψηφία. Άρα Χ(16) = D
A
9
0
5 . 4
3
Χ(2) = 1101 1010 1001 0000 0101 . 0100 0011 γ. Αντικαθιστώ κάθε ψηφίο του οκταδικού αριθµού µε τη δυαδική του παράσταση χρησιµοποιώντας τρία δυαδικά ψηφία. Άρα Χ(8) =
7
6
0
5 . 4
2
Χ(2) = 111 110 000 101 . 100 010
∂Ó‰ÂÈÎÙÈΤ˜ ∞·ÓÙ‹ÛÂȘ ¢Ú·ÛÙËÚÈÔًوÓ
1.1 Προφανώς, οι τιµές που θα πάρετε, απευθυνόµενοι σε περισσότερους από έναν πωλητές, θα διαφέρουν, όπως θα διαφέρουν επίσης ανάλογα µε τα χαρακτηριστικά του προϊόντος. Μία 32 ΜΨηφιολέξεων SDRAM, ένα είδος δυναµικής µνήµης, κοστίζει περίπου 14000 δραχµές, ενώ ένας σκληρός δίσκος χωρητικότητας 4 GΨηφιολέξεων κοστίζει περίπου 45000 δραχµές. Εποµένως, το κόστος ανά ψηφιολέξη για µεν την κύρια µνήµη είναι 4.2 ¥ 10–4 για δε το σκληρό δίσκο 1.0 ¥ 10–5. Παρατηρούµε, λοιπόν, ότι ανά ψηφιολέξη η κύρια µνήµη κοστίζει 40 φορές περισσότερο από τη µνήµη σκληρού δίσκου. 1.2 α. Τόσο κατά σειρά αύξοντος χρόνου προσπέλασης όσο και κατά σειρά αύξουσας χωρητικότητας έχουµε : καταχωρητές, κρυφή µνήµη µεταξύ ΚΜΕ και κύριας µνήµης, κύρια µνήµη, βοηθητική µνήµη. β. Παρατηρούµε ότι όσο αποµακρυνόµαστε από την ΚΜΕ, το κόστος ανά δυαδικό ψηφίο ελαττώνεται, η χωρητικότητα της µονάδας µνήµης αυξάνεται και επίσης αυξάνεται ο χρόνος προσπέλασής της. Αν απαντήσατε σωστά, µπράβο έχετε πιάσει το νόηµα, αν όχι, µην απογοητεύεστε, ξαναδοκιµάστε, αφού πρώτα µελετήσετε και πάλι την ενότητα 1.2.4. 1.3 Η ανισότητα που χαρακτηρίζει τα µεγέθη αυτά είναι: λέξη < µπλοκ < σελίδα. Η αιτία αυτής της επιλογής είναι η τοπικότητα των αναφορών ( βλέπε ενότητα 1.3.4), που χαρακτηρίζει την πλειονότητα των προγραµµάτων. 2.1 Κατ’ αρχήν η αριθµητική έκφραση Χ=Α·Β+Γ µετατρέπεται σε “postfix” συµβολισµό: Χ = (Α·Β)+Γ = (ΑΒ· )+Γ = ΑΒ·Γ+ Το πρόγραµµα προκύπτει εάν για κάθε µεταβλητή που συναντάµε, διαβάζοντας την παραπάνω έκφραση από τα αριστερά προς τα δεξιά, γράφουµε την εντολή PUSH, ενώ για κάθε τελεστή γράφουµε το όνοµα της εντολής που
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
238
αντιστοιχεί στον τελεστή. Στο τέλος του προγράµµατος που προκύπτει γράφουµε την εντολή POP για να αποθηκευτεί το αποτέλεσµα στη θέση µνήµης που επιθυµούµε. Το πρόγραµµα είναι το εξής: PUSH Α PUSH Β MULT PUSH Γ ADD POP X 4.1
δεδοµέναz εισόδου D
Q
clk
5.1 Ο ελεγκτής ΑΠΜ είναι µία αρκετά πολύπλοκη µονάδα. Η χρησιµότητά της εξαρτάται από το σύστηµα στο οποίο χρησιµοποιείται. Σ’ ένα σύστηµα που τρέχει το λειτουργικό σύστηµα DOS, το οποίο είναι ένα λειτουργικό σύστηµα που επιτρέπει κάθε φορά µόνο µία διεργασία να εκτελείται (single–tasking operating system), η ΚΜΕ δεν κάνει τίποτε όσο η διαδικασία εισόδου/εξόδου είναι σε εξέλιξη, εποµένως γιατί να µην κάνει τη µεταφορά µόνη της; Αντίθετα σε ένα περιβάλλον UNIX ή Windows, που είναι περιβάλλοντα πολλαπλών διεργασιών (multitasking), η ΚΜΕ είναι ελεύθερη να εκτελέσει µία άλλη διαδικασία στο διάστηµα κατά το οποίο εξελίσσεται η διαδικασία εισόδου/εξόδου κάτω από τον έλεγχο µίας µονάδας ΑΠΜ.
°ÏˆÛÛ¿ÚÈ/E˘ÚÂÙ‹ÚÈÔ
αθροιστής διαδοχικού κρατούµενου (ripple carry adder) αθροιστής πρόβλεψης κρατούµενου (carry lookahead adder)
βοηθητική µνήµη (secondary memory) βοηθητικά προγράµµατα (utility programs) γλώσσα µηχανής (machine language) δείκτης σωρού (stack pointer)
αλφαριθµητικά δεδοµένα (alphanumeric data) διαγνωστικό λογισµικό (diagnostic software) άµεση προσπέλαση µνήµης (Direct Memory Access, DMA)
διάθεση αρτηρίας (bus grant)
άµεσος τρόπος διευθυνσιοδότησης (Immediate Addressing Mode)
διαµόρφωση µνήµης (memory configuration)
απαίτηση αρτηρίας (Bus Request)
δισκέτες (floppy disks)
απασχοληµένη αρτηρία (Bus Busy).
δυαδικά κωδικοποιηµένοι δεκαδικοί αριθµοί (Binary Coded Decimal, BCD, numbers)
απαίτηση άµεσης προσπέλασης µνήµης, ΑΠΜ, (Direct Memory Access Request, DMA request)
διερµηνείς (interpreters)
δυαδικό ψηφίο (bit)
απόδοση υπολογιστή (performance)
δυναµικές µνήµες άµεσης προσπέλασης, DRAM
αριθµητική λογική µονάδα (arithmetic logic unit)
ειδική περίπτωση (exception)
αρτηρία αποκλειστικής χρήσης (dedicated buse) αρτηρία κοινής χρήσης (shared bus)
εκατοµµύρια εντολές το δευτερόλεπτο (Million Instructions Per Second, MIPS)
αρτηρία συστήµατος (local bus)
εκατοµµύρια εντολές κινητής υποδιαστολής το δευτερόλεπτο (Million FLoating–point OPerations per Second,MFLOPS)
αρχιτεκτονική υπολογιστών (computer architecture)
εκτυπωτής (printer)
αρχιτεκτονική βασισµένη στη χρήση µηχανισµού σωρού (stack based architecture)
έµµεσος τρόπος διευθυνσιοδότησης (Indirect Addressing Mode)
αρχιτεκτονική βασισµένη στη χρήση συσσωρευτή (accumulator based architecture)
ενοποιηµένη κρυφή µνήµη (unified cache memory)
αρχιτεκτονική βασισµένη στη χρήση καταχωρητών γενικού σκοπού (general purpose register architecture)
εντολές (instructions)
αυτό που προσκοµίστηκε πρώτο αποµακρύνεται πρώτο (First–In/First–Out, FIFO, policy)
εντολή άλµατος (jump instruction) εντολή διακλάδωσης (branch instruction) εντολή κλήσεως υποπρογράµµατος (call for
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
240
subroutine instruction) επεξεργαστής (processor) Ηµιαγωγικές µνήµες άµεσης προσπέλασης προσπελάσιµες µε διευθύνσεις (Random Access Memories, RAM), χρησιµοποιείται συχνά και ο όρος µνήµες άµεσης προσπέλασης
κρυφή µνήµη άµεσης οργάνωση (direct mapped cache memory) κρυφή µνήµη κ–τρόπων συνόλου συσχέτισης (k–way set associative cache memory) κρυφή µνήµη πλήρους συσχέτισης (fully associative cache memory)
Ηµιαγωγικές µνήµες προσπελάσιµες ανάλογα µε το περιεχόµενό τους (Content Addressable Memories, CAM), καλούνται συχνά και συσχετιστικές µνήµες (associative memories)
κρυφή µνήµη δεδοµένων (data cache)
κανονικοποιηµένη παράσταση (normalized presentation)
κρυφή µνήµη αρχείων (file cache)
κατανεµηµένη διαιτησία µε επιλογή (Distributed arbitration by self–selection)
ιδεατή µνήµη (virtual memory)
ειδική περίπτωση (exception) καταχωρητής (register) καταχωρητής δείκτη (index register) καταχωρητή κατάστασης (status register) καταχωρητής προσωρινής αποθήκευσης (buffer register) κατ’ απαίτηση (on demand) κατ’ ευθείαν προσπέλαση ( direct access ) κατ’ ευθείαν τρόπος διευθυνσιοδότησης (Direct Addressing Mode) κεντρική µονάδα επεξεργασίας, ΚΜΕ ( central processing unit) κεντρική παράλληλη διαιτησία (Centralized Parallel Arbitration) κρυφή µνήµη (cache memory) κωδικός λειτουργίας (operation code, opcode)
κρυφή µνήµη εντολών (instruction cache) κρυφή µνήµη δίσκου (disk cache)
κύρια µνήµη (main memory)
ιεραρχία µνηµών (memory hierarhy) λειτουργικό σύστηµα (Operating system) λογικές διευθύνσεις (logical addresses) λογικός χώρος διευθύνσεων (logical address space). λογισµικό (software) λογισµικό του συστήµατος (system software) λογισµικό των εφαρµογών (application software) µαγνητικοί δίσκοι µε κινητές κεφαλές (moving–head disks) µαγνητικοί δίσκοι µε σταθερή κεφαλή (fixed–head disks) µη πρόσφατα χρησιµοποιηθέν (Least–Recently Used, LRU, policy). µεταφραστές (translators) µετρητής προγράµµατος (program counter) µετροπρογράµµατα (benchmarks)
°§ø™™∞ƒπ/EÀƒ∂∆∏ƒπ√
µνήµη (memory) µνήµη µόνο ανάγνωσης ( Read Only Memory, ROM ) µονάδα δισκετών (floppy disk) µονάδα εισόδου/εξόδου (input/output unit)
241
παράσταση σταθερής υποδιαστολής (fixed point representation) παράσταση προσηµασµένου µεγέθους (sign–magnitude representation) παράσταση συµπληρώµατος ως προς βάση (radix complement representation)
µονάδα επεξεργασίας δεδοµένων (data path) µονάδα διαχείρισης µνήµης, Μ∆Μ, (Memory Managment Unit, MMU).
παράσταση συµπληρώµατος ως προς ελαττωµένη βάση (diminished – radix complement representation).
µονάδα επεξεργασίας δεδοµένων σταθερής υποδιαστολής (fixed point arithmetic unit)
περιβάλλον πολλαπλών διεργασιών (multitasking)
µονάδα επεξεργασίας δεδοµένων κινητής υποδιαστολής (floating point arithmetic unit)
περικοπή (truncation) πολυπρογραµµατισµός (multiprogramming)
µονάδα ελέγχου (Control Unit) προγράµµατα βιβλιοθήκης (library routines) µονάδα οπτικού δίσκου (CD–ROM) προσκόµιση εκ των προτέρων (prefetch) µικροπρογραµµατισµένη µονάδα ελέγχου (microprogrammed control unit) µικροπρογραµµατισµός (microprogramming) µικροεντολή (microinstruction)
πρωτόκολλο χειραψίας (handshaking protocol) ρυθµός επιτυχίας (hit rate) ρυθµός µεταφοράς δεδοµένων (data transfer rate ή bandwidth)
µικροπρόγραµµα (microprogram) σαρωτής (scanner) µικροπρογραµµατιζόµενες µονάδες ελέγχου (microprogrammable control units) µνήµη ελέγχου (control memory) Ν–δρόµων χαµηλής τάξης διαφύλλωση µνήµης (Ν–way low–order interleaving)
σειριακή προσπέλαση (serial access) σήµα αναγνώρισης (acknowledge) σήµα απαίτησης (request) σήµα διακοπής (interrupt)
ολισθητής (shifter)
σκληρός δίσκος (hard disk)
ολοκληρωµένο κύκλωµα (Integrated Circuit, IC)
στρατηγική απελευθέρωσης πλαισίων της κρυφής µνήµης για την προσκόµιση µπλοκ της κύριας µνήµης (replacement policy)
οµόκεντροι κύκλοι (tracks) παράσταση κινητής υποδιαστολής (floating point representation)
στρογγυλοποίηση (rounding) συµπλήρωµα ως προς 1 (1’s complement)
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
242
συµπλήρωµα ως προς 2 (2’s complement) συν–επεξεργαστής ή µαθηµατικός συνεπεξεργαστής (coprocessor) σύνθεση του συστήµατος (system configuration)
υπολογιστές απλού συνόλου εντολών (Reduced Instruction Set Computers, RISC) υπολογιστές πολύπλοκου συνόλου εντολών (Complex Instruction Set Computers, CISC)
σύνολο εντολών (instruction set)
υψηλής τάξης διαφύλλωση µνήµης (high–order interleaving)
συχνότητα λειτουργίας της ΚΜΕ (CPU clock rate)
χρόνος αναζήτησης (seek time)
σφάλµατα στρογγυλοποίησης (round–off errors)
χρόνος αναµονής (latency time ή rotational delay)
σχετικός τρόπος διευθυνσιοδότησης (relative addressing mode)
χρόνο εκτέλεσης (execution time)
τακτική άµεσης ενηµέρωσης (write through ή store through) τακτική ενηµέρωσης (update policy) τακτική µη προσκόµισης κατά την εγγραφή (no–write allocate ή write around). τακτική προσκόµισης κατά την εγγραφή (write allocate ή fetch on write) τακτική προσκόµισης µπλοκ πληροφορίας (fetch policy) τακτική τελικής ενηµέρωσης (write back ή copy back ή store in) τοπικότητα των αναφορών (principle of locality) τρόπος απεικόνισης µπλοκ της κύριας µνήµης σε πλαίσια της κρυφής µνήµης (placement policy) τρόποι καθορισµού διευθύνσεων (addressing modes) τυχαία επιλογή (Random policy) υπερχείλιση (overflow) υλικό (hardware) υλοποίηση (implementation)
χρόνος κύκλου της ΚΜΕ (CPU cycle time) χρόνος κύκλου της µνήµης (cycle time of the memory) χρόνο προσπέλασης (access time) ψηφιολέξη (byte)
B π µ § π √ ° ƒ∞ º π ∞
243
BÈ‚ÏÈÔÁÚ·Ê›·
Παπακωνσταντίνου, Π. ∆. Τσανάκας, Γ. Π. Φραγκάκης, Αρχιτεκτονική Υπολογιστών, Εκδόσεις Συµµετρία, 1987. Στο κεφάλαιο 8 µπορείτε να βρείτε πληροφορία για την οργάνωση του συστήµατος µνήµης, ενώ στο κεφάλαιο 9 για το σύστηµα διασύνδεσης και εισόδου/εξόδου. A. J. van de Goor, Computer Architecture and Design, Addison Wesley, 1989. Αν και κάπως παλαιό, πολύ καλό βιβλίο. Το µόνο του µειονέκτηµα είναι ότι τα παραδείγµατά του αναφέρονται σε παλαιότερους επεξεργαστές. D. A. Patterson, J. L. Hennessy, Computer Organization & Design, The Hardware/ Software Interface, Morgan Kaufmann, 1994. Πολύ καλό βιβλίο. Παρουσιάζει τόσο τα αρχιτεκτονικά χαρακτηριστικά ενός υπολογιστή όσο και εναλλακτικούς τρόπους υλοποίησής τους. J. L. Hennessy, D. A. Patterson, Computer Architecture, a Quantitative Approach, second edition, Morgan Kaufmann, 1996. Το βιβλίο αυτό είναι µεταπτυχιακού επιπέδου. Στο παράρτηµα D, όµως, υπάρχει µια πολύ καλή παρουσίαση των βασικών χαρακτηριστικών των επεξεργαστών της Intel 80286, 80386, 80486 και Pentium. J. P. Hayes, Computer Architecture and Organization, McGraw–Hill, Third edition, 1998. Στο πρώτο κεφάλαιο του βιβλίου θα βρείτε την ιστορία της εξέλιξης των υπολογιστών. Στα επόµενα κεφάλαια θα βρείτε τα χαρακτηριστικά και τον τρόπο σχεδίασης της ΚΜΕ, του συστήµατος µνήµης και του συστήµατος διασύνδεσης των µονάδων του υπολογιστή. Κόµβοι κάποιων βασικών κατασκευαστών µικροεπεξεργαστών στο διαδίκτυο, όπου µπορείτε να βρείτε πληροφορία για διάφορους µικροεπεξεργαστές. AMD: www.amd.com ARM : www.arm.com Digital: www.digital.com Hewlett–Packard: www.hp.com
KÂʿϷÈÔ 1
AƒÃπ∆∂∫∆√¡π∫∏ Y¶√§√°π™∆ø¡ I
244
IBM: www.chips.ibm.com Intel: www.intel.com Motorola: www.mot.com/SPS/General Texas Instruments: www.ti.com Siemens Semiconductor: www.sci.siemens.com Philips: www.semiconductors.philips.com
KÂʿϷÈÔ 2
D.A. Patterson, J. L. Hennessy, Computer Organization & Design, The Hardware/Software Interface, Morgan Kaufmann, 1994. Το κεφάλαιο 4 ασχολείται µε την αριθµητική των υπολογιστών και συνιστάται ανεπιφύλακτα σε όποιον ενδιαφέρεται να µάθει κάτι περισσότερο. I. Koren, Computer Arithmetic Algorithms, Prentice Hall, Englewood Cliffs, New Jersey, 1993. Τα κεφάλαια 1 και 2 αναφέρονται στην αναπαράσταση αριθµών στον υπολογιστή. J. P. Hayes, Computer Architecture and Organization, second ed., McGraw– Hill, 1998. Στο κεφάλαιο 3 µπορεί να βρει κανείς πολύ ενδιαφέρουσα πληροφορία για την αναπαράσταση της πληροφορίας στον υπολογιστή και τις εντολές επιπέδου γλώσσας µηχανής.
KÂʿϷÈÔ 3
A. Patterson, J. L. Hennessy, Computer Organization & Design, The Hardware/ Software Interface, Morgan Kaufmann, 1994 Πολύ καλό βιβλίο. J. P. Hayes, Computer Architecture and Organization, McGraw–Hill, Third edition, 1998. Στα κεφάλαια 4 και 5 θα βρείτε εκτενή πληροφορία και πολλά παραδείγµατα για τον τρόπο υλοποίησης της µονάδας επεξεργασίας δεδοµένων και της µονάδας ελέγχου.
B π µ § π √ ° ƒ∞ º π ∞
D. A. Patterson, J. L. Hennessy, Computer Organization & Design, The Hardware/ Software Interface, Morgan Kaufmann, 1994
245
KÂʿϷÈÔ 4
J. P. Hayes, Computer Architecture and Organization, McGraw–Hill, Third edition, 1998. B. Prince, High Performance Memories, John Wiley & Sons, 1998.
D. A. Patterson, J. L. Hennessy, Computer Organization & Design, The Hardware/ Software Interface, Morgan Kaufmann, 1994
KÂʿϷÈÔ 5
J. P. Hayes, Computer Architecture and Organization, McGraw–Hill, Third edition, 1998. D. B. Gustavson, “Computer Buses–A Tutorial”, IEEE Micro, August 1984, pp. 7–22. G. White, “A Bus Tour”, Byte, September 1989, pp. 296–302. Πληροφορίες για κάθε αρτηρία µπορείτε εύκολα να βρείτε ψάχνοντας στο διαδίκτυο. Για παράδειγµα, µπορείτε να βρείτε µία σύγκριση των αρτηριών EIDE και SCSI στον κόµβο http://www.lionsgate.com/home/baden/public html_index/SCSI/EIDE_versus_SCSI.html
I. Koren, Computer Arithmetic Algorithms, Prentice Hall, Englewood Cliffs, New Jersey, 1993. Στην ενότητα 1.3 παρουσιάζεται µε συνοπτικό, αλλά πολύ ωραίο τρόπο η διαδικασία µετατροπής ενός αριθµού από ένα αριθµητικό σύστηµα σε ένα άλλο. M. M. Mano, Ψηφιακή Σχεδίαση, Εκδόσεις Παπασωτηρίου, 1992. Στο πρώτο κεφάλαιο παρουσιάζει τα συστήµατα αρίθµησης και τη διαδικασία µετατροπής ενός αριθµού από ένα σύστηµα σε άλλο.
¶·Ú¿ÚÙËÌ· A