Mικροεπεξεργαστές
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών
ΠΛΗΡΟΦΟΡΙΚΗ...
102 downloads
1032 Views
3MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Mικροεπεξεργαστές
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών
ΠΛΗΡΟΦΟΡΙΚΗ Θεµατική Eνότητα
ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Tόµος Γ'
Mικροεπεξεργαστές ΓEΩPΓIOΣ AΛEΞIOY Kαθηγητής Tµήµατος Mηχανικών H/Y & Πληροφορικής Πανεπιστηµίου Πατρών
ΠATPA 2001
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Τόµος Γ' Mικροεπεξεργαστές Συγγραφή ΓEΩPΓIOΣ AΛEΞIOY Kαθηγητής Tµήµατος Mηχανικών H/Y & Πληροφορικής Πανεπιστηµίου Πατρών Κριτική Ανάγνωση ANTΩNHΣ ΠAΣXAΛHΣ Eπίκουρος Kαθηγητής Tµήµατος Πληροφορικής & Tηλεπικοινωνιών Πανεπιστηµίου Aθηνών Ακαδηµαϊκός Υπεύθυνος για την επιστηµονική επιµέλεια του τόµου ΣΩKPATHΣ KATΣIKAΣ Καθηγητής Tµήµατος Mαθηµατικών Πανεπιστηµίου Aιγαίου Επιµέλεια στη µέθοδο της εκπαίδευσης από απόσταση ΓEPAΣIMOΣ MΩPAΊTHΣ Γλωσσική Επιµέλεια EΛΠI∆A BAKAΛOΓΛOY Τεχνική Επιµέλεια ΕΣΠΙ ΕΚ∆ΟΤΙΚΗ Ε.Π.Ε. Καλλιτεχνική Επιµέλεια – Σελιδοποίηση TYPORAMA Συντονισµός ανάπτυξης εκπαιδευτικού υλικού και γενική επιµέλεια των εκδόσεων ΟΜΑ∆Α ΕΚΤΕΛΕΣΗΣ ΕΡΓΟΥ ΕΑΠ / 2001 ISBN: 960–538–197–4 Kωδικός Έκδοσης: ΠΛH 21/3 Copyright 2000 για την Ελλάδα και όλο τον κόσµο ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Οδός Παπαφλέσσα & Υψηλάντη, 26222 Πάτρα – Τηλ: (0610) 314094, 314206 Φαξ: (0610) 317244 Σύµφωνα µε το Ν. 2121/1993, απαγορεύεται η συνολική ή αποσπασµατική αναδηµοσίευση του βιβλίου αυτού ή η αναπαραγωγή του µε οποιοδήποτε µέσο χωρίς την άδεια του εκδότη.
¶ÂÚȯfiÌÂÓ· K∂º∞§∞π√ 1
EÈÛ·ÁˆÁ‹
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................... 11 1.1 1.2 1.3 1.4
H ανάγκη: Έξυπνα, ευέλικτα συστήµατα µε µικρό µέγεθος .............. 13 O τρόπος: Oλοκληρωµένα κυκλώµατα ................................................................ 13 Tο αποτέλεσµα: H εµφάνιση των µικρο–επεξεργαστών ....................... 18 Mικροϋπολογιστές και µικροεπεξεργαστές ...................................................... 19
1.5
Iστορική αναδροµή
Σύνοψη
................................................................................................................
24
..............................................................................................................................................................
26
Bιβλιογραφία
................................................................................................................................................
27
K∂º∞§∞π√ 2
OÈ MÈÎÚÔÂÂÍÂÚÁ·ÛÙ¤˜
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................... 29 2.1
2.2 2.3 2.4 2.5
H Aρχιτεκτονική των µικροεπεξεργαστών ......................................................... 31 2.1.1 Aριθµητική και λογική µονάδα ..................................................................... 31 2.1.2 Mονάδα ελέγχου ......................................................................................................... 33 2.1.3 Kαταχωρητές ................................................................................................................. 35 Oι δίαυλοι διευθύνσεων/δεδοµένων/ελέγχου .................................................. 37 O χρονισµός των εντολών (κύκλος εντολής–µηχανής–ρολογιού) 41 Tο σύνολο εντολών του µικροεπεξεργαστή ..................................................... 46 Oι τρόποι διευθυνσιοδότησης των εντολών
Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις
...........
53
Σύνοψη .............................................................................................................................................................. 58 2.6 Tι πρέπει να γνωρίζουµε για ένα µικροεπεξεργαστή ................................ 63 Σύνοψη
..............................................................................................................................................................
Bιβλιογραφία
................................................................................................................................................
65 67
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
6
K∂º∞§∞π√ 3
O MÈÎÚÔÂÂÍÂÚÁ·ÛÙ‹˜ Intel 8080/8085
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................... 69 3.1
3.2 3.3
H αρχιτεκτονική του 8080 ................................................................................................. 71 3.1.1 Γενικά χαρακτηριστικά ......................................................................................... 71 3.1.2 Oι καταχωρητές του 8080 .................................................................................. 73 3.1.3 Aκροδέκτες και σήµατα ....................................................................................... 75 Kύκλοι µηχανής και σήµατα κατάστασης .......................................................... 78 H χρονική ακολουθία εκτέλεσης εντολών
Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις 3.4 Oι καταστάσεις Wait, Hold & Halt
...........
82
Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις ........... 87 3.5 H αρχικοποίηση του 8080 ................................................................................................ 92 3.6 Oι διακοπίες στον 8080 ...................................................................................................... 92 3.7 Tρόποι διευθυνσιοδότησης – Σύνολο εντολών ............................................. 96 3.8 Συσκευές υποστήριξης ........................................................................................................ 97 3.9 ∆ιαφορές του 8080 µε τον 8085 .............................................................................. 100 Σύνοψη
...........................................................................................................................................................
Bιβλιογραφία
.............................................................................................................................................
102 104
K∂º∞§∞π√ 4
O MÈÎÚÔÂÂÍÂÚÁ·ÛÙ‹˜ Motorola 6800
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................ 105 4.1
4.2
H αρχιτεκτονική του 6800 ............................................................................................ 107 4.1.1 Γενικά χαρακτηριστικά ...................................................................................... 107 4.1.2 Oι καταχωρητές του 6800 ............................................................................... 109 4.1.3 Aκροδέκτες και σήµατα .................................................................................... 111 Xρονισµός του 6800 – Xρονική ακολουθία εκτέλεσης εντολών
Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις ........ 115 4.3 Oι καταστάσεις Wait, Hold & Halt ........................................................................ 119 4.4 Oι διακοπές στον 6800 ..................................................................................................... 123 4.5 Σύνολο εντολών – Tρόποι διευθυνσιοδότησης .......................................... 125 4.6 Σύγκριση του 6800 µε τον 8080/8085 ................................................................ 128 Σύνοψη
...........................................................................................................................................................
130
¶EPIEXOMENA
Bιβλιογραφία
7
.............................................................................................................................................
132
K∂º∞§∞π√ 5
O MÈÎÚÔÂÂÍÂÚÁ·ÛÙ‹˜ Intel 8086/8088
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................ 133 5.1 H αρχιτεκτονική του 8086 Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις ........ 135 5.1.1 Γενικά χαρακτηριστικά ...................................................................................... 135 5.1.2 H οργάνωση της µνήµης .................................................................................. 138 5.1.3 Oι καταχωρητές του 8086 ............................................................................... 140 5.1.4 Aκροδέκτες και σήµατα .................................................................................... 142 Σύνοψη ........................................................................................................................................................... 144 5.2 O χρονισµός του 8086 ...................................................................................................... 145 5.3 H αρχικοποίηση και οι διακοπές του 8086 ..................................................... 147 5.4 Tο σύνολο εντολών και οι τρόποι διευθυνσιοδότησης Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις ........ 149 Σύνοψη
...........................................................................................................................................................
Bιβλιογραφία
.............................................................................................................................................
152 154
K∂º∞§∞π√ 6
OÏÔÎÏËڈ̤ӷ MÈÎÚÔ¸ÔÏÔÁÈÛÙÈο ™˘ÛÙ‹Ì·Ù·
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................ 155 6.1 Bασικές αρχές – Συσκευές διασύνδεσης .......................................................... 157 6.2 ∆ιασύνδεση µνηµών Rom ............................................................................................. 158 6.3 ∆ιασύνδεση µνηµών Ram ............................................................................................. 161 6.4 ∆ιασύνδεση συσκευών εισόδου / εξόδου Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις ........ 163 6.5 Συστήµατα ανάπτυξης µικροϋπολογιστικών συστηµάτων .............. 170 Σύνοψη
...........................................................................................................................................................
Bιβλιογραφία
.............................................................................................................................................
170 172
K∂º∞§∞π√ 7
E›ÏÔÁÔ˜: ™‡Á¯ÚÔÓ˜ T¿ÛÂȘ ™¯Â‰È·ÛÌÔ‡ MÈÎÚÔÂÂÍÂÚÁ·ÛÙÒÓ
Σκοπός, Προσδοκώµενα αποτελέσµατα, Έννοιες κλειδιά Eισαγωγικές παρατηρήσεις ............................................................................................................ 173 7.1 H εξέλιξη των µικροεπεξεργαστών – Σύγχρονα κυκλώµατα ......... 174 Σύνοψη
...........................................................................................................................................................
176
Aπαντήσεις Aσκήσεων Aυτοαξιολόγησης ..................................................................... 177 Eνδεικτικές Aπαντήσεις ∆ραστηριοτήτων ..................................................................... 203 Γλωσσάρι ..................................................................................................................................................... 208
¶ÚfiÏÔÁÔ˜ Tο βιβλίο αυτό γράφτηκε για να καλύψει τις ανάγκες του µαθήµατος «Mικροεπεξεργαστές» του Eλληνικού Aνοικτού Πανεπιστηµίου. Bασίστηκε κυρίως στη σειρά των περισσότερων από δέκα χρόνων διδασκαλίας του αντίστοιχου µαθήµατος στο τµήµα Mηχανικών Hλεκτρονικών Yπολογιστών και Πληροφορικής του Πανεπιστηµίου Πατρών και επιπλέον στις αρχές της «Aνοικτής και εξ αποστάσεως Eκπαίδευσης», όπως αυτές έχουν διαµορφωθεί τα τελευταία χρόνια στην Eλληνική πραγµατικότητα µε βάση και τη διεθνή εµπειρία και πρακτική. Στο βιβλίο περιλαµβάνεται αρχικά µια εισαγωγική ιστορική αναδροµή για τους Mικροεπεξεργαστές και τη Mικροηλεκτρονική από την εµφάνισή τους µέχρι σήµερα. Aκολουθούν βασικά στοιχεία αρχιτεκτονικής και προγραµµατισµού των Mικροεπεξεργαστών. Στη συνέχεια παρατίθενται, όσο γίνεται πιο αναλυτικά, οι δύο κυριότερες οικογένειες µικροεπεξεργαστών των 8 bits, της INTEL και της MOTOROLA. Στο επόµενο κεφάλαιο ασχολούµαστε µε τους µικροεπεξεργαστές των 16 bits µε την παρουσίαση του αντιπροσωπευτικότερου του είδους 8086 της INTEL. Στο τελευταίο κεφάλαιο δίνονται οι βασικές αρχές και η µεθοδολογία σχεδιασµού συστηµάτων βασισµένων στους µικροεπεξεργαστές και τις περιφερειακές συσκευές τους. Tο βιβλίο έχει σαν επίλογο µια σύντοµη αναφορά στις σύγχρονες τάσεις σχεδιασµού µικροεπεξεργαστών. Tελειώνοντας, θέλω να ευχαριστήσω όλους όσους, έµµεσα ή άµεσα, βοήθησαν στο γράψιµο αυτού του βιβλίου, τους φοιτητές µου, τους κριτικούς αναγνώστες και ιδιαίτερα τον συνεργάτη µου ∆ηµήτρη Mπακάλη, Mηχανικό H/Y και Πληροφορικής, για την πολύ σηµαντική του βοήθεια σε όλο το διάστηµα των σχεδόν δύο χρόνων ενασχόλησης µε αυτό το βιβλίο. Γ.Φ. Aλεξίου Πάτρα 2000
∫
EÈÛ·ÁˆÁ‹ ™ÎÔfi˜ Μελετώντας αυτό το κεφάλαιο θα γνωρίσετε τις ανάγκες που επέβαλαν την εµφάνιση των µικροεπεξεργαστών, τις τεχνολογικές εξελίξεις, που έκαναν εφικτή αυτή την εµφάνιση, καθώς και τη ραγδαία εξέλιξή τους µέσα από µία µικρή ιστορική αναδροµή από τον πρώτο µικροεπεξεργαστή µέχρι σήµερα. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα ολοκληρώσετε τη µελέτη αυτού του κεφαλαίου, θα είστε σε θέση να: • αναφέρετε τη βασική ανάγκη, η οποία οδήγησε στην ανάπτυξη των µικροεπεξεργαστών. • δώσετε τουλάχιστον τρία παραδείγµατα εφαρµογών, τα οποία απαιτούν τη χρήση µικροεπεξεργαστή. • ορίσετε τι είναι και από τι αποτελούνται τα ολοκληρωµένα κυκλώµατα. • περιγράψετε πέντε κατηγορίες των ολοκληρωµένων κυκλωµάτων ως προς το µέγεθός τους και το πλήθος των τρανσίστορς, που περιέχουν. • δώσετε τα τέσσερα κυριότερα πλεονεκτήµατα, που έχουν τα ολοκληρωµένα κυκλώµατα. • περιγράψετε τα έξι βασικά βήµατα που απαιτούνται για την κατασκευή τους. • απαριθµήσετε τις βασικές χρονολογίες–σταθµούς στην ιστορία των µικροεπεξεργαστών. • δώσετε τον ορισµό ενός µικροϋπολογιστικού συστήµατος και να περιγράψετε τα τρία βασικά τµήµατα, από τα οποία αποτελείται. • δώσετε τον ορισµό ενός µικροεπεξεργαστή και να αναφέρετε τα τρία βασικά του τµήµατα. • περιγράψετε τους τρεις διαύλους επικοινωνίας, που συναντάµε σ’ ένα µικροϋπολογιστικό σύστηµα. • ορίσετε τη γενική µορφή των εντολών, τις οποίες καταλαβαίνει ένας µικροεπεξεργαστής. ŒÓÓÔȘ ÎÏÂȉȿ • ∆ίαυλος ∆εδοµένων
• Μικροεπεξεργαστής
• ∆ίαυλος ∆ιευθύνσεων
• Μικροϋπολογιστής
• ∆ίαυλος Ελέγχου.
• Ολοκληρωµένο Κύκλωµα
1 ∂
º
∞
§
∞
π
√
KEºA§AIO 1: EI™A°ø°H
12
∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Το πρώτο κεφάλαιο του βιβλίου αποτελεί µια µικρή εισαγωγή στον κόσµο των µικροϋπολογιστών και των µικροεπεξεργαστών. Ως τέτοιο, δεν περιέχει δυσκολονόητες έννοιες, αλλά σας προετοιµάζει για τα κεφάλαια που θα ακολουθήσουν. Θα πρέπει να δώσετε ιδιαίτερη προσοχή στην ενότητα 1.4, στην οποία αναφέρονται βασικές έννοιες, οι οποίες θα αναλυθούν µε µεγάλη λεπτοµέρεια στο κεφάλαιο 2.
1 . 1 H A ¡ ∞ ° ∫ ∏ : ∂ • À ¶ ¡ ∞ , ∂ À ∂ § π ∫ ∆∞ ™ À ™ ∆ ∏ ª ∞ ∆ ∞ ª ∂ ª π ∫ ƒ √ ª ∂ ° ∂ £ √ ™
1.1 H AÓ¿ÁÎË: ŒÍ˘Ó·, ¢¤ÏÈÎÙ· Û˘ÛÙ‹Ì·Ù· Ì ÌÈÎÚfi ̤ÁÂıÔ˜
Καθώς οι υπολογιστές εξελίσσονταν, ένα από τα πιο σηµαντικά προβλήµατα που παρουσιάστηκαν ήταν το πώς θα µπορούσαν να χρησιµοποιηθούν σε όσο το δυνατόν περισσότερες καθηµερινές εφαρµογές. Πολλές συσκευές (ηλεκτρικές συσκευές, συσκευές ελέγχου µηχανών, συστήµατα σηµατοδότησης) θα µπορούσαν να γίνουν πολύ πιο αποδοτικές και λειτουργικές, εάν µπορούσαν να χρησιµοποιήσουν την «ευφυΐα» και την ευκολία, µε την οποία κάνουν πράξεις οι υπολογιστές. Φυσικά, ήταν αδύνατο να δεσµευτεί ένας µεγάλος ή έστω ένας µεσαίων δυνατοτήτων υπολογιστής σ’ αυτού του είδους τις εφαρµογές κυρίως λόγω του υπερβολικού τους µεγέθους και κόστους. Το ζητούµενο, λοιπόν, ήταν να κατασκευασθεί ένα σύστηµα που να περιέχει τόσο τα κυκλώµατα όσο και τη βασική λογική (πρόγραµµα) έτσι ώστε να µπορεί να αντεπεξέλθει στο σύνολο των απαιτούµενων εφαρµογών. Συνεπώς, η λύση θα ήταν ένας ολοκληρωµένος αυτοδύναµος υπολογιστής µέσα σ’ ένα µοναδικό ολοκληρωµένο κύκλωµα, ο οποίος θα έπρεπε να είχε τη δυνατότητα αποθήκευσης προγραµµάτων και εκτέλεσης σύνθετων µαθηµατικών πράξεων. Βέβαια, όπως συνήθως γίνεται, οι απαιτήσεις της βιοµηχανίας και οι δυνατότητες των σχεδιαστών υπολογιστών ήταν αδύνατο να γεφυρωθούν. Φυσικά ήταν δυνατό να δοθεί λύση σε µερικές από τις απαιτήσεις, αλλά η κατασκευή ενός υπολογιστή πάνω σ’ ένα µοναδικό ολοκληρωµένο κύκλωµα φαινόταν σαν µία µακρινή επιδίωξη. Τη λύση φάνηκε να τη δίνει η τεχνολογία ολοκληρωµένων κυκλωµάτων, όταν µπόρεσε να τοποθετήσει χιλιάδες κυκλώµατα πάνω σε µια πολύ µικρή επιφάνεια. 1.2 O TÚfiÔ˜: OÏÔÎÏËڈ̤ӷ ΢ÎÏÒÌ·Ù·
Όλα τα λογικά κυκλώµατα σήµερα κατασκευάζονται µε τη µορφή ολοκληρωµένων κυκλωµάτων (integrated circuits, ICs). Τα ολοκληρωµένα κυκλώµατα αποτελούνται από ένα κοµµάτι αγώγιµου υλικού (πυριτίου), πάνω στο οποίο έχει δηµιουργηθεί το κύκλωµα, το οποίο επιθυµούµε, µε τρανσίστορς (transistors), διόδους, αντιστάσεις και πυκνωτές. Το κοµµάτι αυτό του πυριτίου προστατεύεται από πλαστικό ή κεραµικό περίβληµα, ενώ οι είσοδοι και οι έξοδοι του κυκλώµατος καταλήγουν σε µεταλλικές επαφές εκτός περιβλήµατος, που ονοµάζονται ακροδέκτες (pins). Η µορφή ενός ολοκληρωµένου κυκλώµατος φαίνεται στο σχήµα 1.1.
13
KEºA§AIO 1: EI™A°ø°H
14
Τα κυριότερα πλεονεκτήµατα, που έχουν τα ολοκληρωµένα κυκλώµατα, είναι το µικρό µέγεθός τους, η µικρή κατανάλωση ισχύος, το µικρό κόστος και η µεγάλη αξιοπιστία τους.
(α)v Mικροεπεξεργαστής 40-pin DIPv σε πλαστικό περίβληµα
(β)v Mικροεπεξεργαστής 40-pin DIPv σε κεραµικό περίβληµα
∆είκτες αρίθµησης 40
1
(γ)v
H αρίθµηση των ακροδεκτώνv σε πλαστικό περίβληµα
∆είκτης αρίθµησης 21
40
20
1
21
(δ)v
20
H αρίθµηση των ακροδεκτώνv σε κεραµικό περίβληµα
™¯‹Ì· 1.1
Η µορφή των ολοκληρωµένων κυκλωµάτων των µικροεπεξεργαστών
Τα ολοκληρωµένα κυκλώµατα χωρίζονται σε κατηγορίες ανάλογα µε τον αριθµό των τρανσίστορς, που περιέχονται πάνω στην επιφάνεια του αγώγιµου υλικού. Σε γενικές γραµµές διαχωρίζονται ως εξής: • Κυκλώµατα µικρής κλίµακας ολοκλήρωσης (Small Scale Integration ή SSI), που περιέχουν µερικά µόνο τρανσίστορς. • Κυκλώµατα µεσαίας κλίµακας ολοκλήρωσης (Medium Scale Integration ή MSI), που περιέχουν από µερικές δεκάδες µέχρι εκατοντάδες τρανσίστορς. • Κυκλώµατα µεγάλης κλίµακας ολοκλήρωσης (Large Scale Integration ή LSI), που περιέχουν από µερικές εκατοντάδες έως χιλιάδες τρανσίστορς. • Κυκλώµατα πολύ µεγάλης κλίµακας ολοκλήρωσης (Very Large Scale Integration ή VLSI), που περιέχουν από µερικές χιλιάδες έως εκατοντάδες χιλιάδες τρανσίστορς.
1 . 2 O T ƒ √ ¶ √ ™ : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ ∫ À ∫ § ø ª ∞∆ ∞
• Κυκλώµατα εξαιρετικά υψηλής κλίµακας ολοκλήρωσης (Ultra Large Scale Integration ή ULSI), που περιέχουν από ένα εκατοµµύριο τρανσίστορς και πάνω. Καθώς ο αριθµός των τρανσίστορς, που περικλείονται σε µια επιφάνεια ενός ολοκληρωµένου κυκλώµατος, είναι τροµακτικά µεγάλος, είναι αδύνατη πλέον η σχεδίασή του χωρίς τη χρήση υπολογιστή. Κατά τη διάρκεια σχεδίασης, ο σχεδιαστής χρησιµοποιεί έναν τερµατικό σταθµό για να σχεδιάσει σε αυτόν το γράφηµα του λογικού κυκλώµατος, που θα αποτυπωθεί πάνω στην επιφάνεια πυριτίου. Κατόπιν, µε τη βοήθεια ειδικών προγραµµάτων αποθηκευµένων στον υπολογιστή και ειδικών εργαλείων, το γράφηµα αυτό θα σχηµατιστεί πάνω στην επιφάνεια του ολοκληρωµένου κυκλώµατος. Μετά το τέλος της διαδικασίας σχεδιασµού, ακολουθεί η διαδικασία παραγωγής και ελέγχου ορθής λειτουργίας του ολοκληρωµένου κυκλώµατος. Τα ολοκληρωµένα κυκλώµατα κατασκευάζονται σε δεκάδες ή εκατοντάδες, ανάλογα µε το µέγεθός τους, πάνω σε ένα δίσκο πυριτίου, ο οποίος ονοµάζεται wafer (παρατηρήστε το σχήµα 1.2). Το wafer περιέχει εκτός από τα κυκλώµατα, τα οποία επιθυµούµε να κατασκευάσουµε, και κυκλώµατα ελέγχου της διαδικασίας (test structures). Τα κυκλώµατα αυτά έχουν ως στόχο την παρακολούθηση της διαδικασίας παραγωγής από τον κατασκευαστή και τον έλεγχο ποιότητας του αποτελέσµατος. Σε περίπτωση, που κάποια κυκλώµατα ελέγχου δείξουν προβληµατική συµπεριφορά, αυτόµατα σταµατάει η διαδικασία και o δίσκος πυριτίου απορρίπτεται. Το πρώτο βήµα που έχουµε εποµένως είναι η κατασκευή του δίσκου πυριτίου. Η διαδικασία αποτύπωσης των κυκλωµάτων πάνω σε αυτόν ακολουθεί διάφορα στάδια. Αρχικά έχουµε την κατασκευή µιας απόλυτα καθαρής ηµιαγώγιµης επιφάνειας, στην οποία υπεισάγονται προσµίξεις µε τη βοήθεια ενός µονωτικού επιστρώµατος οξειδίου για να αποδοθούν οι απαραίτητες ηλεκτρικές ιδιότητες. Πάνω στην επιφάνεια αυτή επιτίθεται προστατευτικό επίχρισµα και εκτίθεται σε ακτινοβολία µέσω µασκών, µετά καθαρίζεται, χαράσσεται µε οξέα, προστίθενται καινούργιες προσµίξεις και η διαδικασία αυτή επαναλαµβάνεται µέχρις ότου χαραχτούν όλα τα κυκλώµατα. Το επόµενο βήµα είναι ο έλεγχος των πλακιδίων (dies), που παράγονται. Η διαδικασία ελέγχου βασίζεται στην εφαρµογή σηµάτων ελέγχου στα σηµεία των εξωτερικών συνδεσµολογιών κάθε πλακιδίου. Όσα δεν έχουν σωστή απόκριση, σηµειώνονται ως ελαττωµατικά.
15
KEºA§AIO 1: EI™A°ø°H
16
™¯‹Ì· 1.2
Η διαδικασία κατασκευής των ολοκληρωµένων κυκλωµάτων
Στη συνέχεια, όπως φαίνεται στο σχήµα 1.3, οι δίσκοι πυριτίου κόβονται στα επιµέρους τµήµατα, που είναι τα ολοκληρωµένα κυκλώµατα, και τα ελαττωµατικά απορρίπτονται. Το κάθε ολοκληρωµένο κύκλωµα, που προκύπτει,
1 . 2 O T ƒ √ ¶ √ ™ : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ ∫ À ∫ § ø ª ∞∆ ∞
17
τοποθετείται σε µία βάση (πλαστικό ή κεραµικό περίβληµα) και οι γραµµές, που έχει, συνδέονται µε χρυσά σύρµατα στους ακροδέκτες της βάσης. Τέλος τοποθετείται το πάνω µέρος του περιβλήµατος και τα ολοκληρωµένα κυκλώµατα είναι έτοιµα.
™¯‹Ì· 1.3
Η κοπή των πλακιδίων από το δίσκο πυριτίου
Μετά από το σηµείο αυτό γίνεται και ο τελικός έλεγχος των ολοκληρωµένων κυκλωµάτων σχετικά µε την τήρηση των προδιαγραφών λειτουργίας τους και την τήρηση των ζητούµενων χαρακτηριστικών.
Τι είναι τα ολοκληρωµένα κυκλώµατα; Από τι αποτελούνται;
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.1
KEºA§AIO 1: EI™A°ø°H
18
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.2
Αντιστοιχίστε τις κατηγορίες των ολοκληρωµένων κυκλωµάτων µε τον αριθµό των τρανσίστορς, τα οποία περιέχουν: SSI
µεταξύ 10 και 100
MSI
λιγότερα από 10
LSI
µεταξύ 10.000 και 1.000.000
VLSI
πάνω από 1.000.000
ULSI
µεταξύ 100 και 10.000
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.3
Αναφέρετε ποια είναι τα τέσσερα κυριότερα πλεονεκτήµατα των ολοκληρωµένων κυκλωµάτων.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.4
Απαριθµήστε τα βασικά βήµατα στη διαδικασία κατασκευής ενός ολοκληρωµένου κυκλώµατος.
1.3 TÔ AÔÙ¤ÏÂÛÌ·: H ÂÌÊ¿ÓÈÛË ÙˆÓ ÌÈÎÚÔ–ÂÂÍÂÚÁ·ÛÙÒÓ
Το αποτέλεσµα της εµφάνισης της τεχνολογίας των ολοκληρωµένων κυκλωµάτων ήταν η ενσωµάτωση σε ένα µόνο ολοκληρωµένο κύκλωµα όλης της κεντρικής µονάδας επεξεργασίας, η οποία βέβαια θα έπρεπε να προγραµµατίζεται για να περιέχει τις βασικότερες λειτουργίες ενός ψηφιακού υπολογιστή. Το κύκλωµα αυτό ονοµάστηκε µικροεπεξεργαστής. Η µνήµη του βρίσκεται σε αρκετά ολοκληρωµένα κυκλώµατα περιορισµένων αποθηκευτικών δυνατοτήτων, τα οποία το συνοδεύουν. Επίσης υποστηρίζεται και από µια πλειάδα α) ολοκληρωµένων κυκλωµάτων για να διασυνδέεται κατάλληλα και µε τον εξωτερικό κόσµο µια και δεν έχει ενσωµατωµένες αυτές τις δυνατότητες και β) ολοκληρωµένων κυκλωµάτων, που επιτελούν τις λειτουργίες χρονισµού και προώθησης δεδοµένων στον τελικό τους προορισµό. Η ανάπτυξη της τεχνολογίας των ολοκληρωµένων κυκλωµάτων τις τελευταίες δεκαετίες έδωσε τη δυνατότητα να µπορούν να ενσωµατωθούν σε ένα ολοκληρωµένο κύκλωµα όλο και πιο πολύπλοκα κυκλώµατα (από τον πρώτο
1 . 4 M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ ∂ ™ ∫ ∞ π ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
19
µικροεπεξεργαστή, που είχε 2 χιλιάδες τρανσίστορς, έχουµε φτάσει πλέον σε επεξεργαστές µε πάνω από 7 εκατοµµύρια τρανσίστορς σε ένα και µόνο ολοκληρωµένο κύκλωµα) µε αποτέλεσµα τη γρήγορη ανάπτυξη των µικροεπεξεργαστών και την ολοένα και πιο συχνή χρήση τους τόσο σε πολύπλοκες υπολογιστικές συσκευές όσο και σε απλές οικιακές συσκευές ή συστήµατα ελέγχου. 1.4 MÈÎÚÔ¸ÔÏÔÁÈÛÙ¤˜ Î·È ÌÈÎÚÔÂÂÍÂÚÁ·ÛÙ¤˜
Η οργάνωση των µικροϋπολογιστικών συστηµάτων είναι παρόµοια µε εκείνη των κλασικών υπολογιστικών συστηµάτων (main frame, mini). Αποτελούνται, όπως µπορείτε να παρατηρήσετε στο σχήµα 1.4, από τις παρακάτω λειτουργικές µονάδες: • Mονάδες εισόδου/εξόδου, µε τις οποίες το σύστηµα επικοινωνεί µε το εξωτερικό του περιβάλλον. • Tο µικροεπεξεργαστή (ή αλλιώς κεντρική µονάδα επεξεργασίας), η οποία περιλαµβάνει την αριθµητική και λογική µονάδα, που επεξεργάζεται τα δεδοµένα, τη µονάδα ελέγχου, που είναι υπεύθυνη για τον έλεγχο και το συντονισµό όλων των µονάδων του συστήµατος, και τους καταχωρητές, που χρησιµεύουν για προσωρινή αποθήκευση. • Tην κύρια µνήµη, που χρησιµεύει για την αποθήκευση των εντολών του προγράµµατος, των αρχικών δεδοµένων και των ενδιάµεσων αποτελεσµάτων.
EIΣO∆OΣv INPUT
KME (CPU)v Mονάδα ελέγχουv +v Aριθµητική λογική µονάδαv (Control + arithmetic)
Mνήµηv προγράµµατος
EΞO∆OΣv OUTPUT
Mνήµηv δεδοµένων
Mνήµη (Memory)
Τα µηχανικά και ηλεκτρονικά µέρη του µικροϋπολογιστικού συστήµατος αποτελούν το υλικό (hardware), ενώ το σύνολο των προγραµµάτων και εντο-
™¯‹Ì· 1.4
Ένα τυπικό µικροϋπολογιστικό σύστηµα
KEºA§AIO 1: EI™A°ø°H
20
λών που κατευθύνουν τη λειτουργία του αποτελούν το λογισµικό (software). Ο συνδυασµός υλικού και λογισµικού αναφέρεται µερικές φορές σαν υλικολογισµικό (firmware). Το ιδιαίτερο χαρακτηριστικό σε σχέση µε άλλα υπολογιστικά συστήµατα είναι ότι ολόκληρη η µονάδα επεξεργασίας περιέχεται σε ένα ολοκληρωµένο κύκλωµα, που κατασκευάζεται σε ένα µικρό κοµµάτι πυριτίου και αναφέρεται σαν µικροεπεξεργαστής. Η ενσωµάτωση όλων των στοιχείων της κεντρικής µονάδας επεξεργασίας σε ένα µόνο ολοκληρωµένο κύκλωµα, συνδυάζει τα πλεονεκτήµατα του µικρού µεγέθους, της υψηλής αξιοπιστίας και του χαµηλού κόστους. Ο µικροεπεξεργαστής συνδέεται κατάλληλα µε τα ολοκληρωµένα κυκλώµατα της µνήµης και των µονάδων εισόδου/εξόδου, για να αποτελέσει το υπολογιστικό σύστηµα που ονοµάζουµε µικροϋπολογιστή ή µικροϋπολογιστικό σύστηµα.
™¯‹Ì· 1.5
Οι δίαυλοι επικοινωνίας του µικροϋπολογιστή
Mικροεπεξεργαστήςv CPUv control + arithmetic
Mνήµηv προγράµµατος
Mνήµηv δεδοµένων
Έξοδοιv Output(s)
∆ίαυλος διεδοµένων (8 γραµµές)
∆ίαυλος διευθύνσεων (16 γραµµές)
Γραµµές ελέγχου
Eίσοδοιv Input(s)
1 . 4 M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ ∂ ™ ∫ ∞ π ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
Θα πρέπει να αναφέρουµε επίσης ότι και οι µικροεπεξεργαστές, όπως άλλωστε και όλα τα λογικά κυκλώµατα, λειτουργούν µε βάση τη δυαδική λογική, όπου µε τη βοήθεια δύο µόνο λογικών καταστάσεων (λογικό 0 και λογικό 1), που αναπαρίστανται µε επίπεδα ηλεκτρικών τάσεων, εκτελούν όλες τις αριθµητικές πράξεις. Η τεχνική αυτή επιβλήθηκε για λόγους τεχνολογικής αξιοπιστίας. Έτσι οι πληροφορίες που ανταλλάσσει ο µικροεπεξεργαστής µε τη µνήµη και τις µονάδες εισόδου/εξόδου είναι συνδυασµοί δυαδικών ψηφίων. Η µεταφορά της δυαδικής πληροφορίας ανάµεσα στις διάφορες µονάδες του µικροϋπολογιστή γίνεται παράλληλα από ένα σύνολο γραµµών, που αναφέρονται σαν δίαυλος δεδοµένων (data bus). Οι γραµµές αυτές αναφέρονται σαν γραµµές δεδοµένων (data lines). Ο δίαυλος δεδοµένων δεν λύνει όλα τα προβλήµατα µεταφοράς της πληροφορίας. Ο µικροεπεξεργαστής θα πρέπει να έχει τη δυνατότητα επιλογής της µονάδας, µε την οποία θα επικοινωνήσει, και να µπορεί να την ειδοποιήσει ότι θα στείλει ή θα πάρει δεδοµένα από αυτή. Για το λόγο αυτό διαθέτει δύο ακόµα διαύλους, το δίαυλο διευθύνσεων (address bus) και το δίαυλο ελέγχου (control bus). Οι γραµµές των διαύλων αυτών λέγονται αντίστοιχα γραµµές διευθύνσεων (address lines) και γραµµές ελέγχου (control lines). Με τις γραµµές διευθύνσεων ο µικροεπεξεργαστής στέλνει τη δυαδική διεύθυνση της θέσης µνήµης ή της µονάδας εισόδου/εξόδου, µε την οποία θέλει να επικοινωνήσει, και µε τις γραµµές ελέγχου τα κατάλληλα ηλεκτρικά σήµατα για την ενεργοποίηση των επιθυµητών λειτουργιών της µνήµης ή των µονάδων εισόδου/εξόδου. Παρατηρήστε στο σχήµα 1.5 τον τρόπο µε τον οποίο συνδέονται οι δίαυλοι επικοινωνίας σε ένα τυπικό µικροϋπολογιστικό σύστηµα. Η απαίτηση της ενεργοποίησης στοιχειωδών λειτουργιών σε προκαθορισµένα χρονικά διαστήµατα, δηµιουργεί την ανάγκη ύπαρξης µιας βάσης χρόνου, που αναφέρεται ως κύκλωµα χρονισµού (clock). Το κύκλωµα χρονισµού αποτελείται συνήθως από ένα κρυσταλλικό ταλαντωτή, που παράγει τετραγωνικούς παλµούς σταθερής συχνότητας. Η συχνότητα αυτή του ταλαντωτή καθορίζει και τη συχνότητα λειτουργίας του µικροεπεξεργαστή. Σε κάθε υπολογιστή η κύρια µνήµη αποτελείται από ένα σύνολο θέσεων, καθεµία από τις οποίες περιλαµβάνει ένα ή περισσότερα αποθηκευτικά κύτταρα (storage cells) ικανά να αποθηκεύσουν πληροφορία ενός δυαδικού ψηφίου 0 ή 1 (binary digit – bit). Η διάκριση µεταξύ δύο θέσεων γίνεται από ένα χαρακτηριστικό αριθµό, που ονοµάζεται διεύθυνση. Η αρίθµηση των θέσεων µνήµης αρχίζει από τον αριθµό 0 και είναι συνεχής. Ο αριθµός, που
21
KEºA§AIO 1: EI™A°ø°H
22
αντιστοιχεί στην τελευταία θέση µνήµης, το πλήθος δηλαδή των θέσεων µνήµης, διαφέρει από σύστηµα σε σύστηµα και εξαρτάται αποκλειστικά από την κατασκευή της κεντρικής µονάδας επεξεργασίας και τον τρόπο σύνδεσής της µε την κύρια µνήµη. Στην περίπτωση που κάθε θέση µνήµης περιέχει ένα µόνο αποθηκευτικό κύτταρο, λέµε ότι είναι οργανωµένη σε δυαδικά ψηφία, ενώ, όταν περιέχει περισσότερα από ένα αποθηκευτικά κύτταρα, λέµε ότι είναι οργανωµένη σε λέξεις. Το πλήθος των αποθηκευτικών κυττάρων της λέξης είναι δύναµη του δύο. Μια οµάδα από 8 δυαδικά ψηφία ονοµάζεται ψηφιολέξη (byte). Συνήθως η ψηφιολέξη χωρίζεται σε δύο οµάδες των 4 δυαδικών ψηφίων, καθεµία από τις οποίες ονοµάζεται ηµιψηφιολέξη (nibble). Η πρώτη από τα αριστερά συµβολίζεται µε NBH (Nibble Byte High) και η δεύτερη µε NBL (Nibble Byte Low).
Kωδικόςv λειτουργίας
™¯‹Ì· 1.6
Η µορφή των εντολών
Έντελο 1
Έντελο 2
Πεδίοv πηγής
Πεδίοv προορισµού
Όπως είπαµε και νωρίτερα, ο µικροεπεξεργαστής δέχεται και εκτελεί οδηγίες. Οι οδηγίες αυτές βρίσκονται συνήθως αποθηκευµένες στη µνήµη µε τη µορφή εντολών. Κάθε εντολή αποτελείται συνήθως από τρία πεδία: • το πεδίο του κωδικού λειτουργίας (operation code), το οποίο περιέχει τον κωδικό της εντολής και υπαγορεύει στην κεντρική µονάδα επεξεργασίας την εκτέλεση της συγκεκριµένης λειτουργίας, • το έντελο ή αλλιώς πεδίο πηγής (source operand field), που περιέχει τα δεδοµένα ή τη διεύθυνση των δεδοµένων, τα οποία θα χειριστεί η κεντρική µονάδα επεξεργασίας κατά την εκτέλεση της εντολής, • το έντελο ή αλλιώς πεδίο προορισµού (destination operand field), που δηλώνει τη θέση όπου θα αποθηκευτεί το αποτέλεσµα. Ανάλογα µε την εσωτερική οργάνωση, που έχει ο κάθε µικροεπεξεργαστής,
1 . 4 M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ ∂ ™ ∫ ∞ π ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
23
εµφανίζονται πολλές φορές διαφοροποιήσεις από τη γενική περίπτωση, που αναφέραµε παραπάνω. Έτσι π.χ. µπορεί να υπάρχουν εντολές µε τρία έντελα (όπως συµβαίνει στην περίπτωση µιας εντολής πρόσθεσης δύο αριθµών) ή µε ένα έντελο ή µε κανένα (στην περίπτωση αυτή ο κωδικός λειτουργίας περιέχει και το πού θα εφαρµοστεί η εντολή).
Προσπαθήστε να εξηγήσετε ποια απαίτηση των κατασκευαστών συστηµάτων οδήγησε στην εµφάνιση των µικροεπεξεργαστών. Σκεφτείτε παραδείγµατα από την καθηµερινή ζωή και από τις συσκευές, τις οποίες χρησιµοποιείτε συχνά, και αναφέρετε τρία παραδείγµατα συσκευών ή γενικότερα συστηµάτων, που να χρησιµοποιούν µικροεπεξεργαστές. Για να οδηγηθείτε σε σωστό δρόµο σκεφτείτε ενέργειες, που κάνουν οι σύγχρονες συσκευές και δεν υπήρχαν στις παλαιότερες. Προσπαθήστε σε κάθε παράδειγµα να προσδιορίσετε α) ποια είναι η πληροφορία, την οποία επεξεργάζεται ο µικροεπεξεργαστής, β) ποια είναι η είσοδος σε αυτόν και γ) ποια είναι η έξοδος της επεξεργασίας. Ο χρόνος απασχόλησής σας για την ολοκλήρωση αυτής της δραστηριότητας εκτιµάµε πως δεν θα ξεπεράσει τα 30 περίπου λεπτά.
Ποια είναι τα τρία βασικά τµήµατα, από τα οποία αποτελείται ένα µικροϋπολογιστικό σύστηµα;
Τα µικροϋπολογιστικά συστήµατα επικοινωνούν µεταξύ τους µέσω τριών διαύλων. Αντιστοιχίστε το όνοµα του καθενός από αυτούς µε τις ενέργειες που εµφανίζονται στη δεξιά στήλη: ∆ίαυλος ∆εδοµένων
Mεταφέρει τη διεύθυνση της θέσης µνήµης ή της συσκευής Ι/Ο, µε την οποία ανταλλάσσονται δεδοµένα.
∆ίαυλος ∆ιευθύνσεων
Mεταφέρει τη χρήσιµη πληροφορία, δηλαδή τα δεδοµένα.
∆ίαυλος Ελέγχου
Eνεργοποιεί ή απενεργοποιεί τη µνήµη και τις συσκευές Ι/Ο, επιλέγει εάν θα γίνει ανάγνωση ή εγγραφή στη µνήµη.
¢Ú·ÛÙËÚÈfiÙËÙ· 1.1
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.5
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.6
KEºA§AIO 1: EI™A°ø°H
24
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.7
Ποια είναι τα τρία πεδία, από τα οποία αποτελείται, στη γενική περίπτωση, µία εντολή;
1.5 IÛÙÔÚÈ΋ ·Ó·‰ÚÔÌ‹
Ο πρώτος µικροεπεξεργαστής έκανε την εµφάνιση του στις αρχές του 1972, σχεδόν τρεις δεκαετίες µετά από τους πρώτους ηλεκτρονικούς υπολογιστές. Η εξέλιξη των µικροεπεξεργαστών θυµίζει πολύ την αντίστοιχη εξέλιξη των µεσαίων υπολογιστών. Όπως δηλαδή οι σχεδιαστές των µεσαίων υπολογιστών µετέφεραν σε αυτούς τις ιδέες τους από τη σχεδίαση µεγάλων συστηµάτων, έτσι και οι σχεδιαστές των µικροεπεξεργαστών υιοθέτησαν πολλά στοιχεία της οργάνωσης και της αρχιτεκτονικής των µεσαίων και µεγάλων συστηµάτων. Στους µικροεπεξεργαστές της τελευταίας γενιάς άρχισαν ήδη να εφαρµόζονται προχωρηµένα στοιχεία αρχιτεκτονικής, µε αποτέλεσµα σήµερα να είναι ασαφής ο διαχωρισµός ανάµεσα στους µεσαίους υπολογιστές και σε συστήµατα βασισµένα σε µικροεπεξεργαστές.
™¯‹Ì· 1.7
Γνωστοί µικροεπεξεργαστές: α) 8080Α, β) 8086–8088 και γ) Pentium–II
Χρονολογίες–σταθµοί στην ιστορία των (µικρο)επεξεργαστών µπορούν να θεωρηθούν οι παρακάτω: • 1971: Η Intel παρουσιάζει τον πρώτο µικροεπεξεργαστή, τον 4004. Έχει δίαυλο δεδοµένων πλάτους 4 bit, κατασκευάζεται µε 2.300 τρανσίστορς και έχει συχνότητα λειτουργίας 108 kHz. Μέσα στην επόµενη χρονιά εµφανίζεται ο διάδοχος του 8008. • 1974: Εµφάνιση του 8–bit µικροεπεξεργαστή Intel 8080 ως αποτέλεσµα
1.5 I™∆√ƒπ∫∏ ∞¡∞¢ƒ√ª∏
25
της εξέλιξης του 8008. Έχει συχνότητα λειτουργίας 2 MHz και η κατασκευή του απαιτεί 6.000 τρανσίστορς. Απάντηση της Zilog µε τον Z80 και της Motorola µε τον 6800, o οποίος έχει 4.000 τρανσίστορς και ίδια συχνότητα λειτουργίας µε τον 8080. • 1975: Η Intel αναβαθµίζει τον 8080 σε 8085. • 1978: Εµφανίζονται οι πρώτοι 16–bit µικροεπεξεργαστές (δηλαδή ο δίαυλος δεδοµένων τους έχει πλάτος 16 bit). H Intel παρουσιάζει τον 8086/8088, του οποίου η συχνότητα λειτουργίας έχει ανέβει πλέον στα 10 MHz και η κατασκευή του απαιτεί 29.000 τρανσίστορς. Η Motorola εµφανίζει τον 68000 µε συχνότητα λειτουργίας 8 MHz, ο οποίος περιέχει 68.000 τρανσίστορς (από αυτό το γεγονός πήρε και το όνοµά του). • 1982: Εµφανίζεται ο Intel 80286, ο οποίος περιέχει 134.000 τρανσίστορς και έχει συχνότητα λειτουργίας 12,5 MHz. Αντίστοιχα η Motorola εµφανίζει τον 68010. • 1985: Εµφανίζονται οι πρώτοι 32–bit µικροεπεξεργαστές. Από τη µια ο Intel 80386, ο οποίος περιέχει 275.000 τρανσίστορς και συχνότητα λειτουργίας 33 MHz και από την άλλη ο Motorola 68020 µε 200.000 τρανσίστορς και 16 MHz. Οι εξελίξεις πλέον είναι ραγδαίες. • 1989: Εµφανίζεται ο 32–bit µικροεπεξεργαστής Intel 80486, ο οποίος έχει 1.200.000 τρανσίστορς και συχνότητα λειτουργίας 50 MHz. • 1993: Εµφανίζεται ο Intel Pentium, ο οποίος περιέχει 3.100.000 τρανσίστορς και η συχνότητα λειτουργίας του έχει φτάσει στα 166 MHz. • 1993: H Digital παρουσιάζει τον πρώτο 64–bit µικροεπεξεργαστή Alpha. • 1997: H Intel ανακοινώνει τον Pentium II. Η συχνότητα λειτουργίας του βρίσκεται στα 300 MHz και το ολοκληρωµένο κύκλωµά του αποτελείται από 7.700.000 τρανσίστορς. • 1999: H Intel ανακοινώνει τον Pentium III µε συχνότητα λειτουργίας 450 MHz (σήµερα έχει φτάσει στο 1.13 GHz). Tο ολοκληρωµένο κύκλωµα αποτελείται από 9.500.000 τρανσίστορς.
Στην ενότητα 1.5 κάναµε µια ιστορική αναδροµή και είδαµε πώς εξελίχθηκαν οι µικροεπεξεργαστές µέχρι σήµερα. Τα κυριότερα χαρακτηριστικά, στα οποία αναφερθήκαµε, ήταν το µήκος λέξης του µικροεπεξεργαστή
¢Ú·ÛÙËÚÈfiÙËÙ· 1.2
KEºA§AIO 1: EI™A°ø°H
26
(δηλαδή το πλήθος των γραµµών δεδοµένων), η χρονιά εµφάνισής του, η συχνότητα λειτουργίας του και ο αριθµός των τρανσίστορς, που περιέχει. ∆ηµιουργήστε ένα συγκεντρωτικό πίνακα µε όλα αυτά τα χαρακτηριστικά για κάθε επεξεργαστή της Intel, τον οποίο γνωρίζετε. Ο χρόνος απασχόλησής σας για την ολοκλήρωση αυτής της δραστηριότητας εκτιµάµε πως δεν θα ξεπεράσει τα 30 περίπου λεπτά.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.8
Ετοιµάστε µε τα στοιχεία, τα οποία έχετε από την ενότητα 1.5 είτε από τη δραστηριότητα 2 του κεφαλαίου 1, µία γραφική παράσταση µε τον αριθµό των τρανσίστορς στα ολοκληρωµένα κυκλώµατα σε σχέση µε τις χρονολογίες εµφάνισης τους. Παρατηρήστε τη γραφική παράσταση και βρείτε τη σχέση που συνδέει τις δύο παραµέτρους (είναι γραµµική; πολυωνυµική; εκθετική;).
™‡ÓÔ„Ë Η επιθυµία των κατασκευαστών συστηµάτων να δηµιουργήσουν όλο και πιο έξυπνα συστήµατα µε περισσότερες δυνατότητες και µε µικρότερο µέγεθος οδήγησε στην ανάγκη για ενσωµάτωση όλων των λειτουργιών ενός ολόκληρου υπολογιστή σε ένα ή µερικά ολοκληρωµένα κυκλώµατα. Η ανάπτυξη της τεχνολογίας κατασκευής των τελευταίων µε την συνεχή αύξηση του αριθµού των τρανσίστορς, που θα µπορούσαν να αποθηκευτούν σε αυτά, µε το µικρό κόστος, τη µικρή κατανάλωση ισχύος και την αξιόπιστη λειτουργία τους παρείχε αυτή τη δυνατότητα. Έτσι σήµερα η χρήση µικροεπεξεργαστών σε συσκευές της καθηµερινής µας ζωής, σε βιοµηχανικά συστήµατα ελέγχου και σε πολλά άλλα συστήµατα είναι πλέον δεδοµένη. Όλα τα συστήµατα, τα οποία περιέχουν κάποιο µικροεπεξεργαστή, ονοµάζονται µικροϋπολογιστές ή µικροϋπολογιστικά συστήµατα. Τα συστήµατα αυτά περιέχουν ακόµα µονάδες εισόδου/εξόδου για να επικοινωνούν µε το περιβάλλον και την κύρια µνήµη για να αποθηκεύουν τα δεδοµένα και τις εντολές του προγράµµατος, το οποίο εκτελεί ο µικροεπεξεργαστής. Οι εντολές είναι αποθηκευµένες στην κύρια µνήµη και αποτελούνται από τον κωδικό λειτουργίας, που καθορίζει τι πρέπει να κάνει η κάθε εντολή, και τα έντελα πηγής και προορισµού, που περιέχουν είτε τις διευθύνσεις, στις οποίες βρίσκονται τα δεδοµένα, είτε τα ίδια τα δεδοµένα.
B π µ § π √ ° ƒ∞ º π ∞
Η επικοινωνία µεταξύ των διαφόρων µονάδων ενός µικροϋπολογιστή γίνεται µέσω τριών διαύλων, του διαύλου δεδοµένων για τη µεταφορά των δεδοµένων, του διαύλου διευθύνσεων για την επιλογή της θέσης µνήµης ή µονάδας εισόδου/εξόδου, από την οποία θα µεταφερθούν τα δεδοµένα, και του διαύλου ελέγχου για τον έλεγχο των διαφόρων λειτουργιών του συστήµατος. Οι γραµµές, που περιέχουν οι δίαυλοι αυτοί, ονοµάζονται αντίστοιχα γραµµές δεδοµένων, γραµµές διευθύνσεων και γραµµές ελέγχου. Η ανάπτυξη των µικροεπεξεργαστών ήταν ραγδαία. Από τον πρώτο µικροεπεξεργαστή (Intel 4004), ο οποίος εµφανίστηκε το 1971 µε 2.300 τρανσίστορς και συχνότητα λειτουργίας 108 kHz, έχουµε φτάσει σήµερα σε επεξεργαστές (Intel Pentium III), που περιέχουν 9.500.000 τρανσίστορς και συχνότητες λειτουργίας µέχρι 1.13 MHz, µε αποτέλεσµα να δηµιουργούνται όλο και πιο ισχυρά και γρήγορα µικροϋπολογιστικά συστήµατα. BÈ‚ÏÈÔÁÚ·Ê›·
Τώρα που τελειώσατε µε το εισαγωγικό κεφάλαιο, εάν µπορείτε να διαθέσετε κάποιον επιπλέον χρόνο, καλό θα ήταν να µελετήσετε τα παρακάτω κείµενα: Theory and Problems of Microprocessor Fundamentals, Schaum’s Outline Series, Roger L. Tokheim, Κεφάλαιο 1. Στο κεφάλαιο αυτό θα βρείτε ένα πολύ ωραίο παράδειγµα, το οποίο περιγράφει πώς λειτουργεί ένας µικροϋπολογιστής. Theory and Problems of Microprocessor Fundamentals, Schaum’s Outline Series, Roger L. Tokheim, Κεφάλαιο 3. Το κεφάλαιο αυτό θα σας θυµίσει βασικά κυκλώµατα σχεδιασµού, όπως τις βασικές πύλες AND, OR, NOT, τα flip–flops, τους κωδικοποιητές και αποκωδικοποιητές, τους αποµονωτές και τις µνήµες. Όλα αυτά τα κυκλώµατα θα µας είναι χρήσιµα στο σχεδιασµό µικροϋπολογιστικών συστηµάτων, που θα δούµε στο κεφάλαιο 7. Εάν πάλι δεν έχετε χρόνο, µην ανησυχείτε. Στα επόµενα κεφάλαια θα αναλύσουµε ένα προς ένα τα θέµατα που µας χρειάζονται, για να αποκτήσετε µια ολοκληρωµένη άποψη για τους µικροεπεξεργαστές.
27
∫
OÈ MÈÎÚÔÂÂÍÂÚÁ·ÛÙ¤˜ ™ÎÔfi˜ Μελετώντας αυτό το κεφάλαιο θα γνωρίσετε ένα γενικό µικροεπεξεργαστή, τα βασικά τµήµατα, από τα οποία αυτός αποτελείται, καθώς επίσης και τις βασικές αρχές και χαρακτηριστικά λειτουργίας του χωρίς να αναφερόµαστε σε κάποιο συγκεκριµένο µικροεπεξεργαστή. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα ολοκληρώσετε τη µελέτη αυτού του κεφαλαίου, θα είστε σε θέση να: • εξηγήσετε σε µία παράγραφο τις βασικές λειτουργίες που επιτελούν τα τρία τµήµατα, από τα οποία αποτελείται ένας µικροεπεξεργαστής. • ορίσετε ποιες είναι οι αριθµητικές και ποιες οι λογικές πράξεις, που γίνονται µέσα στην αριθµητική και λογική µονάδα. • αναφέρετε τα πέντε βασικά κυκλώµατα, από τα οποία αποτελείται η αριθµητική και λογική µονάδα. • ορίσετε τι είναι ένας καταχωρητής και πού µας χρησιµεύει. • αναφέρετε τους έξι βασικούς τύπους καταχωρητών και τη λειτουργία που επιτελεί ο καθένας από αυτούς. • καταγράψετε τον τρόπο, µε τον οποίο οι µικροεπεξεργαστές µας δείχνουν την κατάσταση, στην οποία βρίσκονται µετά από την εκτέλεση µιας εντολής ή λειτουργίας. • διαχωρίσετε τους τρεις διαύλους επικοινωνίας µε βάση την πληροφορία, την οποία µεταφέρουν. • ορίσετε µε ποιόν τρόπο αρχικοποιούµε ένα µικροεπεξεργαστή. • χωρίσετε το χρόνο, που απαιτείται για την εκτέλεση µιας εντολής, σε µικρότερα τµήµατα. • αναφέρετε τις έξι βασικές κατηγορίες, στις οποίες χωρίζεται το σύνολο εντολών ενός µικροεπεξεργαστή. • ορίσετε τους εφτά διαφορετικούς τρόπους, µε τους οποίους µια εντολή καθορίζει πού βρίσκονται τα δεδοµένα, τα οποία αυτή χρειάζεται για να εκτελεστεί.
2 ∂
º
∞
§
∞
π
√
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
30
ŒÓÓÔȘ ÎÏÂȉȿ • Αριθµητική και Λογική Μονάδα
• Κύκλος Μηχανής
• ∆είκτης Σωρού
• Κύκλος Ρολογιού
• ∆ίαυλος ∆εδοµένων
• Κύκλωµα Χρονισµού
• ∆ίαυλος ∆ιευθύνσεων
• Μετρητής Προγράµµατος
• ∆ίαυλος Ελέγχου
• Μικροεπεξεργαστής
• Ενεργή ∆ιεύθυνση
• Μικροϋπολογιστής
• Καταχωρητής
• Μονάδα Ελέγχου
• Καταχωρητής Γενικού Σκοπού • Σύνολο Εντολών • Καταχωρητής Εντολών • Kαταχωρητής Κατάστασης Επεξεργαστή
• Συσσωρευτής • Τρόποι ∆ιευθυνσιοδότησης
• Κύκλος Εντολής ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Το κεφάλαιο αυτό αποτελεί ίσως το σηµαντικότερο κεφάλαιο του βιβλίου και γι’ αυτό θα πρέπει να το µελετήσετε µε ιδιαίτερη προσοχή. Αναπτύσσονται πολλές νέες έννοιες, οι οποίες θα χρησιµεύσουν στα επόµενα κεφάλαια, και γι’ αυτό χρειάζονται ίσως αρκετές αναγνώσεις του κειµένου από σας για να τις καταλάβετε πλήρως. Μην προχωρήσετε στο κεφάλαιο 3 πριν κατανοήσετε τα περιεχόµενα του κεφαλαίου αυτού.
2 . 1 H A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∆ ø ¡ ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ø ¡
31
2.1 H AÚ¯ÈÙÂÎÙÔÓÈ΋ ÙˆÓ ÌÈÎÚÔÂÂÍÂÚÁ·ÛÙÒÓ
Στο κεφάλαιο 1 είδαµε ότι η κεντρική µονάδα επεξεργασίας (ΚΜΕ) ή µικροεπεξεργαστής (microprocessor) είναι αυτή που ρυθµίζει όλες τις ενέργειες, που επιτελούνται στο µικροϋπολογιστικό σύστηµα. Eίσοδος
Έξοδος Eνεργοποίηση
∆εδοµένα Mονάδα ελέγχου
Aριθµητικήv λογική µονάδα
Eντολές
Aποτελέσµατα
KME ∆ιεύθυνση
Eντολές
Aποτελέσµατα ∆εδοµέναv MNHMH
Ο µικροεπεξεργαστής καθορίζει τη σειρά εκτέλεσης των εντολών. Κατά τη διάρκεια εκτέλεσης των εντολών συντονίζει τη µεταφορά των δεδοµένων από τις εισόδους προς αυτόν και προς την κύρια µνήµη. Επεξεργάζεται τα δεδοµένα σύµφωνα µε το πρόγραµµα επεξεργασίας του µικροϋπολογιστικού συστήµατος ώστε να ανταποκρίνονται στη ζητούµενη εφαρµογή. Επίσης κατευθύνει τη µεταφορά δεδοµένων από τον ίδιο ή από την κύρια µνήµη προς τις εξόδους του. Οι µικροεπεξεργαστές αποτελούνται βασικά από τρία τµήµατα (δείτε το σχήµα 2.1), τα οποία συνεργάζονται αρµονικά µεταξύ τους: την αριθµητική και λογική µονάδα (arithmetic and logic unit, ALU), τη µονάδα ελέγχου (control unit, CU) και τους καταχωρητές (registers). Ας δούµε το κάθε τµήµα ξεχωριστά. 2.1.1 AÚÈıÌËÙÈ΋ Î·È ÏÔÁÈ΋ ÌÔÓ¿‰·
Η εκτέλεση των διαφόρων λογικών και αριθµητικών πράξεων, που απαιτούνται από το σύνολο εντολών ενός µικροεπεξεργαστή, πραγµατοποιείται σ’ αυτό το τµήµα του, που καλείται αριθµητική και λογική µονάδα (ALU).
∆εδοµένα Έλεγχος Eντολές ™¯‹Ì· 2.1
Ο µικροεπεξεργαστής
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
32
Έλεγχος
™¯‹Ì· 2.2
Aθροιστής
Oλισθητής Tελεστής A Συγκριτής
Tελεστής B
Aριθµητική λογική µονάδα
Kρατούµενο
Kατάσταση
Aποτέλεσµα
Η αριθµητική και λογική µονάδα
Ως αριθµητικές πράξεις εννοούµε την πρόσθεση και την αφαίρεση δύο αριθµών, την αύξηση και την ελάττωση ενός αριθµού κατά ένα, το συµπλήρωµα ενός αριθµού ως προς 1 ή ως προς 2. Οι λογικές πράξεις εφαρµόζονται κατά κύριο λόγο σε δυαδικά δεδοµένα και δεν είναι άλλες από τις γνωστές µας ΚΑΙ (AND), Ή (OR) και ΟΧΙ (NOT). Εκτός από αυτές, λογικές πράξεις θεωρούνται και η ολίσθηση ή η περιστροφή ενός αριθµού και η σύγκριση δύο αριθµών. Η εκτέλεση καθεµιάς από τις πράξεις αυτές µπορεί να υπάρχει είτε αυτούσια ενσωµατωµένη µέσα στο µικροεπεξεργαστή µε τη µορφή µίας εντολής (π.χ. πρόσθεση) είτε να απαιτεί την εκτέλεση µιας ακολουθίας πολλών εντολών. Είναι ευνόητο ότι πράξεις, όπως είναι ο πολλαπλασιασµός, η διαίρεση, η εύρεση ρίζας, η διαφόριση, ολοκλήρωση και διάφορες άλλες, που απαιτούν πολύπλοκους υπολογισµούς µε πολλές µετακινήσεις δεδοµένων, το υλικό του µικροεπεξεργαστή δεν είναι σε θέση από µόνο του να τις αντιµετωπίσει. Αντίθετα, επειδή όλες αυτές οι πράξεις αναλύονται σε συνδυασµό βασικών αριθµητικών εντολών (π.χ. η εύρεση ρίζας αριθµού µπορεί να γίνει µε διαδοχικές αφαιρέσεις), µπορούν πολύ εύκολα να υλοποιηθούν ως ακολουθία βασικών εντολών, που µπορούν να εκτελεστούν στην αριθµητική και λογική µονάδα. Φυσικά, όταν χρησιµοποιείται το υλικό για να εκτελέσει ακόµα και τις πιο πολύπλοκες πράξεις, η ταχύτητα εκτέλεσής τους είναι πολύ µεγαλύτερη. Σε πολλές περιπτώσεις οι λογικές και αριθµητικές πράξεις είναι µικροπρογραµµατιζόµενες. Ο µικροπρογραµµατισµός αποβλέπει στη γρηγορότερη εκτέλεση των πράξεων και στην επίτευξη µεγαλύτερων ταχυτήτων. Με βάση αυτόν, χωριστές µνήµες ελέγχου (control memories) περιέχουν το µικροπρόγραµµα,
2 . 1 H A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∆ ø ¡ ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ø ¡
το οποίο ανταποκρίνεται στις γενικές εντολές του χρήστη και καθοδηγεί την αριθµητική και λογική µονάδα ώστε να εκτελέσει τις απαιτούµενες λειτουργίες. Τα δεδοµένα, πάνω στα οποία θα πρέπει να λειτουργήσει η αριθµητική και λογική µονάδα, είναι αποθηκευµένα στη µνήµη σαν τµήµα της εντολής. Η αποκωδικοποίηση της εντολής καταλήγει στην εκποµπή ενός σήµατος από τη µονάδα ελέγχου προς την αριθµητική και λογική µονάδα, ενεργοποιώντας τα κατάλληλα κυκλώµατα της µονάδας αυτής. Μετά την εκτέλεση της απαιτούµενης πράξης, η µονάδα ελέγχου προωθεί την επόµενη εντολή, που πρόκειται να εκτελεστεί, και έτσι επαναλαµβάνεται ο κύκλος αυτός, εφόσον βέβαια απαιτείται ξανά η ενεργοποίηση της αριθµητικής µονάδας. Τα κυκλώµατα, τα οποία περιέχονται σε µια αριθµητική και λογική µονάδα (δείτε το σχήµα 2.2), διαφέρουν από µικροεπεξεργαστή σε µικροεπεξεργαστή, αλλά συνήθως υπάρχουν τα ακόλουθα κυκλώµατα: 1. Ένας αθροιστής (adder) για να εκτελεί τις βασικές αριθµητικές πράξεις. 2. Ένας συγκριτής (comparator), ο οποίος µπορεί να συγκρίνει τους αριθµούς που τοποθετούνται στους καταχωρητές εντέλων. 3. Ένας ολισθητής (shifter), ο οποίος εκτελεί την ολίσθηση ή περιστροφή ενός αριθµού. 4. Μία µονάδα λογικής επεξεργασίας, που εκτελεί λογικές πράξεις πάνω στους αριθµούς, που τοποθετούνται στους καταχωρητές εντέλων. 5. Κάποιοι καταχωρητές για να αποθηκεύονται οι αριθµοί και τα αποτελέσµατα των πράξεων (µην ανησυχείτε, για τους καταχωρητές θα µιλήσουµε στην υποενότητα 2.1.3). Με βάση τα παραπάνω βασικά κυκλώµατα µπορούν να υλοποιηθούν και όλες οι υπόλοιπες πράξεις, π.χ. η αφαίρεση δύο αριθµών µπορεί να υλοποιηθεί ως πρόσθεση του πρώτου µε το συµπλήρωµα του δεύτερου (εποµένως δεν απαιτείται η ύπαρξη ενός αφαιρέτη), ο πολλαπλασιασµός και η διαίρεση απαιτούν διαδοχικές αυξήσεις και ολισθήσεις, ενώ η τετραγωνική ρίζα µπορεί να υλοποιηθεί µε διαδοχικές αφαιρέσεις, κ.ο.κ. 2.1.2 MÔÓ¿‰· ÂϤÁ¯Ô˘
Όπως είναι ήδη γνωστό, ο µικροεπεξεργαστής λειτουργεί µε σειριακό τρόπο ανάλογα µε τις υποδείξεις των εντολών του αποθηκευµένου προγράµµατος. Αλλά βέβαια το πρόγραµµα από µόνο του δεν είναι αρκετό για να κατευθύνει τη λειτουργία του. Για παράδειγµα ο µικροεπεξεργαστής θα πρέπει να
33
34
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
γνωρίζει πού είναι αποθηκευµένη (σε ποια διεύθυνση) µέσα στη µνήµη η πρώτη εκτελέσιµη εντολή του προγράµµατος. Θα πρέπει ακολούθως ν’ αναπτύξει τα κατάλληλα σήµατα ελέγχου, που θα αποσπάσουν την εντολή από τη µνήµη και έπειτα θα πρέπει να εξετάσει το περιεχόµενο της εντολής αυτής για να αποφασίσει για τις ενέργειες, που αυτή απαιτεί. Η µνήµη, οι µονάδες εισόδου/εξόδου, καθώς και η αριθµητική και λογική µονάδα, θα πρέπει να ενεργοποιηθούν στα κατάλληλα χρονικά διαστήµατα ώστε να εκτελέσουν την αποκωδικοποιηµένη εντολή µε τέτοιο τρόπο ώστε οι λειτουργίες αυτές να µην παρεµβάλλονται µεταξύ τους και να µην δηµιουργούν ανεπιθύµητα αποτελέσµατα. Όλες αυτές οι απαιτήσεις οδηγούν στην ανάγκη της παρουσίας της µονάδας ελέγχου (ΜΕ). Σε γενικές γραµµές, η µονάδα ελέγχου είναι το κατευθυντήριο κέντρο του µικροεπεξεργαστή και παρέχει τις λειτουργίες χρονισµού, αποκωδικοποίησης και ενεργοποίησης για όλα τα τµήµατα του µικροϋπολογιστή. Στο σχήµα 2.3 φαίνεται το λειτουργικό διάγραµµα µιας τυπικής µονάδας ελέγχου. Η βασική πηγή για όλα τα σήµατα ελέγχου, που κατευθύνουν τις συσκευές του συστήµατος, είναι το ρολόι. Οι απαιτήσεις για χρονισµό σ’ ένα µικροϋπολογιστικό σύστηµα ποικίλλουν από σχετικά µεγάλης διάρκειας παλµούς (secs ή msecs) µέχρι πολύ µικρής διάρκειας (nsecs). Η φύση των σηµάτων χρονισµού είναι τέτοια ώστε οι παλµοί να εµφανίζονται και να διαρκούν µόνο για ένα απαιτούµενο χρονικό διάστηµα, να επαναλαµβάνονται µε µια καθορισµένη ακολουθία ή να εµφανίζονται µετά από απαίτηση. Είναι γνωστό ότι µια εντολή χωρίζεται σε δύο τµήµατα: στον κώδικα λειτουργίας (operation code) και στο έντελο (operand), δηλαδή τη διεύθυνση του δεδοµένου, πάνω στο οποίο θα επενεργήσει ο κώδικας λειτουργίας. Ο κώδικας λειτουργίας εξετάζεται από τον αποκωδικοποιητή εντολών για να αποφασίσει ποιες λειτουργίες θα πρέπει να ακολουθήσουν. Για να µπορέσει να εκτελεστεί αυτή η διαδικασία θα πρέπει πρώτα ο κώδικας λειτουργίας της εντολής να µεταφερθεί στον καταχωρητή εντολής της µονάδας ελέγχου. Ο καταχωρητής εντολής χρησιµοποιείται για να διαφυλάσσει τον κώδικα λειτουργίας, ενώ αυτή αποκωδικοποιείται. Ο αποκωδικοποιητής εντολών είναι κατασκευασµένος από πύλες, έτσι ώστε να αναγνωρίζει µόνο συγκεκριµένους συνδυασµούς δυαδικών συµβόλων, αυτούς που αντιστοιχούν σε πραγµατικές εντολές. Ένας ξεχωριστός συνδυασµός πυλών χρησιµοποιείται συνήθως για την αναγνώριση κάθε κώδικα λειτουργίας και η έξοδος του αποκωδικοποιητή εντολών είναι
2 . 1 H A ƒ Ã π ∆ ∂ ∫ ∆ √ ¡ π ∫ ∏ ∆ ø ¡ ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ø ¡
35
Προς δίαυλοv διευθύνσεων
Pολόι
Mετρητήςv προγράµµατος
Γεννήτριαv χρονισµού
Kαταχωρητήςv δεδοµένων
Γεννήτριαv ελέγχου
Aποκωδικο-v ποιητήςv εντολών
Aπό και προςv δίαυλοv δεδοµένων
Kαταχωρητήςv εντολών
Σήµατα χρονισµούv και ελέγχου
ένα ξεχωριστό σήµα, που ενεργοποιεί το κατάλληλο κύκλωµα της γεννήτριας ελέγχου, που αντιστοιχεί στο συγκεκριµένο κώδικα λειτουργίας. Η γεννήτρια ελέγχου (control generator) αποτελείται επίσης από πύλες, που συνδυάζουν την έξοδο του αποκωδικοποιητή εντολών µε τα κυκλώµατα χρονισµού έτσι ώστε να κατευθύνονται τα υπόλοιπα τµήµατα του µικροϋπολογιστή και να ενεργοποιούνται πάντα µε τη σωστή σειρά λειτουργίας. Θα πρέπει να αναφερθεί επίσης ότι η µονάδα ελέγχου συνήθως περιέχει και άλλους ειδικούς καταχωρητές, όπως το µετρητή προγράµµατος, τον καταχωρητή κατάστασης επεξεργαστή (processor status word ή PSW) και το δείκτη σωρού (stack pointer), για τους οποίους θα µιλήσουµε στη συνέχεια. 2.1.3 K·Ù·¯ˆÚËÙ¤˜
Οι καταχωρητές (registers) χρησιµεύουν για την αποθήκευση προσωρινών αποτελεσµάτων ή δεδοµένων, που έχουν σηµασία για το µικροεπεξεργαστή. Παρά το γεγονός ότι το πλήθος και το είδος των καταχωρητών είναι διαφορετικό σε κάθε µικροεπεξεργαστή, συνήθως συναντάµε τους παρακάτω:
™¯‹Ì· 2.3
Η µονάδα ελέγχου
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
36
Συσσωρευτής (accumulator): Bρίσκεται στην αριθµητική και λογική µονάδα και χρησιµοποιείται για να αποθηκεύει (α) τον έναν από τους αριθµούς που απαιτούνται για να εκτελεστεί η πράξη και (β) το αποτέλεσµα της πράξης. Καταχωρητής γενικού σκοπού (general purpose register): Bρίσκεται στην αριθµητική και λογική µονάδα και χρησιµοποιείται για να αποθηκεύει τον άλλο αριθµό που απαιτείται για να εκτελεστεί µία πράξη, καθώς και ως αποθηκευτικός χώρος για ενδιάµεσα αποτελέσµατα. Οι καταχωρητές αυτοί µπορούν να αποθηκεύσουν επίσης τη διεύθυνση της θέσης µνήµης, όπου βρίσκονται οι αριθµοί, ή τη διεύθυνση της θέσης µνήµης, όπου θα αποθηκευτεί το αποτέλεσµα. Σε πολλούς επεξεργαστές η ύπαρξη πολλών καταχωρητών γενικού σκοπού καθιστά περιττή την ύπαρξη του συσσωρευτή. Kαταχωρητής κατάστασης επεξεργαστή (processor status word): Bρίσκεται και αυτός στην αριθµητική και λογική µονάδα. Συνήθως αποτελείται από ένα σύνολο από δυαδικά ψηφία (bits), που ονοµάζονται δείκτες (flags) ή σηµαίες κατάστασης. Αυτά χρησιµοποιούνται για να δείχνουν στο χρήστη την παρούσα κατάσταση του µικροεπεξεργαστή, καθώς επίσης και χαρακτηριστικά γνωρίσµατα των αποτελεσµάτων της προηγούµενης πράξης. Όλοι οι µικροεπεξεργαστές είναι σε θέση µέσω του καταχωρητή κατάστασης να υποδείξουν ένα µηδενικό αποτέλεσµα (zero), ένα αρνητικό αποτέλεσµα (negative), ένα κρατούµενο (carry), µία υπερχείλιση (overflow), κ.λπ. Καταχωρητής εντολών (instruction register): Bρίσκεται στη µονάδα ελέγχου του µικροεπεξεργαστή και χρησιµοποιείται για να αποθηκεύει τον κώδικα λειτουργίας της εντολής, ενώ αυτή αποκωδικοποιείται για να εκτελεστεί.
S
Z
…
O
C
∆ιακόπτης κρατούµενουv (Carry flag) ∆ιακόπτης υπερχείλησηςv (Overflow flag)
™¯‹Ì· 2.4
∆ιακόπτης µηδενικούv αποτελέσµατοςv (Zero flag)
Ο καταχωρητής κατάστασης επεξεργαστή
∆ιακόπτης προσήµουv (Sign flag)
2.2 Oπ ¢π∞À§√π ¢π∂À£À¡™∂ø¡/¢∂¢√ª∂¡ø¡/∂§∂°Ã√À
37
Μετρητής προγράµµατος (program counter): Bρίσκεται και αυτός στη µονάδα ελέγχου και αποθηκεύει τη διεύθυνση της θέσης µνήµης, στην οποία βρίσκεται η επόµενη προς εκτέλεση εντολή, έτσι ώστε να ανακληθεί από τη µνήµη, όταν τελειώσει η εκτέλεση της τρέχουσας εντολής. ∆είκτης σωρού (stack pointer): Όλοι οι µικροεπεξεργαστές χρησιµοποιούν µια περιοχή για αποθήκευση δεδοµένων. Η περιοχή αυτή ονοµάζεται σωρός (stack). Ο σωρός µπορεί να είναι ένα σύνολο από καταχωρητές µέσα στο µικροεπεξεργαστή είτε ένα τµήµα της κύριας µνήµης (RAM). Ο σωρός χρησιµοποιείται για να αποθηκεύει ενδιάµεσα αποτελέσµατα αλλά και πληροφορίες, που αφορούν συνήθως στο µικροεπεξεργαστή. Συνήθως ο σωρός είναι της µορφής Last In First Out (LIFO), όπου η τελευταία πληροφορία, που τοποθετείται στο σωρό, είναι και η πρώτη που θα πρέπει να αποσπαστεί. O δείκτης σωρού δείχνει πάντα στην κορυφή του σωρού, η οποία περιέχει την τελευταία πληροφορία, που τοποθετήθηκε στο σωρό. Ένας µικροεπεξεργαστής αποτελείται από τα εξής τρία τµήµατα: α) …
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.1
β) … γ) …
Οι διάφορες πράξεις µεταξύ των δεδοµένων γίνονται στο τµήµα εκείνο του µικροεπεξεργαστή που ονοµάζεται …………………………………… Απαριθµήστε τα κυκλώµατα, τα οποία υπάρχουν συνήθως στο τµήµα αυτό.
Ποιοι καταχωρητές βρίσκονται στην αριθµητική και λογική µονάδα, ποιοι στη µονάδα ελέγχου και τι λειτουργία επιτελεί ο καθένας από αυτούς;
2.2 OÈ ¢›·˘ÏÔÈ ‰È¢ı‡ÓÛˆÓ/‰Â‰Ô̤ӈÓ/ÂϤÁ¯Ô˘
Οι περισσότεροι µικροϋπολογιστές αναπτύσσονται γύρω από ένα δίαυλο (bus). Ο δίαυλος αυτός είναι ένα σύνολο από γραµµές (καλώδια), που συνδέουν τα διάφορα τµήµατα του µικροϋπολογιστή. Για παράδειγµα συνδέουν όλα τα σήµατα ελέγχου, δεδοµένων και διευθύνσεων από το ένα τµήµα του
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.2
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.3
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
38
στο άλλο. Η λειτουργία του διαύλου είναι να παρέχει ένα µονοπάτι επικοινωνίας µεταξύ δύο ή περισσότερων τµηµάτων του µικροϋπολογιστή.
KME
Σύστηµα µνήµης
Σύστηµαv εισόδου–εξόδου
∆ίαυλος διευθύνσεων
∆ίαυλος δεδοµένων
∆ίαυλος ελέγχου
™¯‹Ì· 2.5
Οι δίαυλοι διευθύνσεων – δεδοµένων – ελέγχου
Το τµήµα του µικροεπεξεργαστή, που αποτελεί τη µονάδα ελέγχου, αποφασίζει για το ποιο από τα τµήµατα του µικροϋπολογιστή πρόκειται να προωθήσει µια πληροφορία και ποια άλλα τµήµατα πρόκειται να χρησιµοποιήσουν την πληροφορία αυτή. Στο σχήµα 1.5 του προηγούµενου κεφαλαίου είδαµε την οργάνωση ενός µικροϋπολογιστικού συστήµατος, που αναπτύσσεται γύρω από ένα δίαυλο. Μερικές από τις γραµµές του διαύλου είναι αφιερωµένες µόνο στη µεταφορά διευθύνσεων µνήµης, άλλες στη µεταφορά δεδοµένων, ενώ άλλες µεταφέρουν µόνο σήµατα ελέγχου. Όλα συνεπώς τα τµήµατα του µικροϋπολογιστή, όπως άλλωστε φαίνεται και στο σχήµα 2.5, χρησιµοποιούν αυτές τις γραµµές διευθύνσεων, δεδοµένων και ελέγχου, που σχετίζονται άµεσα µε τη λειτουργία που εκτελούν. Ο δίαυλος δεδοµένων µεταφέρει είτε εντολές, που πρόκειται να αποκωδικοποιηθούν, είτε πληροφορίες, που πρόκειται να επεξεργαστούν. Είναι ένας δίαυλος διπλής κατεύθυνσης (bidirectional), πράγµα το οποίο σηµαίνει ότι µπορεί να µεταφέρει πληροφορίες από το µικροεπεξεργαστή στα άλλα τµήµατα του µικροϋπολογιστή σε µία χρονική περίοδο (π.χ. όταν αποθηκεύονται τα αποτελέσµατα µιας αριθµητικής πράξης στην κύρια µνήµη), ενώ σε άλλες περιόδους οι πληροφορίες µπορεί να µεταφέρονται από διάφορα τµήµατα του µικροϋπολογιστή προς το µικροεπεξεργαστή (π.χ. όταν µεταφέρο-
2.2 Oπ ¢π∞À§√π ¢π∂À£À¡™∂ø¡/¢∂¢√ª∂¡ø¡/∂§∂°Ã√À
νται δύο αριθµοί στην αριθµητική και λογική µονάδα για να γίνει µια αριθµητική πράξη). Η κατεύθυνση που θα ακολουθήσουν τα δεδοµένα πάνω στο δίαυλο δεδοµένων εξαρτάται από τη µονάδα ελέγχου. Το µήκος της λέξης, την οποία διαχειρίζεται ο µικροεπεξεργαστής, ορίζει και τον αριθµό των γραµµών του διαύλου (ένας µικροεπεξεργαστής µε µήκος λέξης 8 bits θα έχει 8 γραµµές διασύνδεσης στο δίαυλο δεδοµένων, ενώ ένας µικροεπεξεργαστής µε µήκος λέξης 16 bits θα έχει 16 γραµµές δεδοµένων). Ο δίαυλος διευθύνσεων είναι µοναδικής κατεύθυνσης (unidirectional) και µεταφέρει το δυαδικό κώδικα, που αναπαριστά τη διεύθυνση µνήµης, από την οποία θα αποσπασθούν ή στην οποία θα τοποθετηθούν τα δεδοµένα. Σε πολλούς µικροεπεξεργαστές ο δίαυλος διευθύνσεων χρησιµοποιείται για να ορίσει, εκτός από την κύρια µνήµη, και ποιες συσκευές εισόδου/εξόδου πρόκειται να χρησιµοποιηθούν. Η µονάδα ελέγχου του µικροεπεξεργαστή υποδεικνύει κάθε φορά αν θα πρέπει ο δυαδικός κώδικας, που µεταφέρει ο δίαυλος διευθύνσεων, να επενεργήσει πάνω σε µία συσκευή εισόδου/εξόδου ή πάνω στη µνήµη. Η µέγιστη ποσότητα µνήµης, που µπορεί να διαχειριστεί ένας µικροεπεξεργαστής, καθορίζει και τον αριθµό των γραµµών διασύνδεσης του διαύλου διευθύνσεων. Μία µνήµη µε 65536 (64 Κ) µονάδες αποθήκευσης χρειάζεται 16 γραµµές (216= 65536) στο δίαυλο δεδοµένων. Ο δίαυλος ελέγχου είναι ένας δίαυλος µοναδικής κατεύθυνσης και µεταφέρει πληροφορίες, που περιγράφουν το είδος της λειτουργίας, που πρόκειται να εκτελεστεί (π.χ. εάν θα γίνει ανάγνωση ή εγγραφή στη µνήµη), ποιες συσκευές θα πρέπει να ανταποκριθούν (π.χ. ανάγνωση από θέση µνήµης ή από µονάδα εισόδου/εξόδου) κ.λπ. Το πλήθος των γραµµών του διαύλου ελέγχου εξαρτάται από τον αριθµό των σηµάτων ελέγχου που χρειάζεται ο µικροεπεξεργαστής για τις λειτουργίες του και έχει άµεση σχέση µε το σχεδιασµό και τον τρόπο κατασκευής του. Σε γενικές γραµµές ένα πλήθος πληροφοριών θα πρέπει να ανταλλαγεί µεταξύ του µικροεπεξεργαστή και της µνήµης ή των περιφερειακών συσκευών, έτσι ώστε να αποκατασταθεί µία πλήρης επικοινωνία µεταξύ τους. Οι πληροφορίες, που ανταλλάσσονται µεταξύ των µικροεπεξεργαστών και των άλλων συσκευών, προέρχονται από τη µονάδα ελέγχου και κατευθύνονται προς αυτήν και περιλαµβάνουν ένα συνδυασµό των ακόλουθων: 1. Απαιτήσεις για χρήση του διαύλου δεδοµένων, που προέρχονται από τις διάφορες συσκευές συνδεµένες στο δίαυλο.
39
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
40
2. Παραχωρήσεις του διαύλου δεδοµένων, που γίνονται σύµφωνα µε µια προαποφασισµένη προτεραιότητα παροχής σύµφωνα µε ειδικό αλγόριθµο ή και µε χρήση ειδικών κυκλωµάτων. Αυτό το τµήµα πολλές φορές είναι µέρος του µικροεπεξεργαστή ή µπορεί ακόµα και να αποτελείται από ένα σύνολο από ολοκληρωµένα κυκλώµατα. 3. Σήµατα διακοπής (interrupt signals), τα οποία υποδεικνύουν ότι διάφορα γεγονότα απαιτούν τάχιστη εξυπηρέτηση. 4. Σήµατα χρονισµού για να συντονίζουν τη µεταφορά των δεδοµένων ή διευθύνσεων πάνω στα αντίστοιχα τµήµατα του διαύλου. 5. Σήµατα που να υποδεικνύουν την εµφάνιση παρενεργειών ή και την έλλειψη ισχύος. Η ταξινόµηση αυτών των γραµµών ελέγχου διαφέρει αισθητά από µικροεπεξεργαστή σε µικροεπεξεργαστή, αλλά καθένας είναι απαραίτητο να χρησιµοποιεί τις παραπάνω γραµµές ελέγχου, καθώς επίσης και γραµµές ελέγχου για επιλογή ανάγνωσης ή εγγραφής µνήµης και ανάγνωσης ή εγγραφής συσκευής εισόδου/εξόδου. Το πώς ενεργοποιούνται τα διάφορα τµήµατα ενός µικροϋπολογιστικού συστήµατος δίχως να υπάρχουν παρεµβολές από άλλα είναι ένα πρόβληµα αρκετά σύνθετο. Γεγονός είναι πάντως ότι οι διάφορες συσκευές έχουν δικές τους διευθύνσεις και προτεραιότητες και η επιλογή τους γίνεται µέσω συνδυαστικών κυκλωµάτων, που υλοποιούνται µε πύλες. Η περιγραφή της επιλογής και ο σχεδιασµός των κυκλωµάτων θα συζητηθεί εκτενέστερα στο κεφάλαιο 7.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.4
∆ίνεται µικροεπεξεργαστής µε µήκος λέξης 4 bytes, ο οποίος µπορεί να διαχειριστεί 16.777.216 θέσεις µνήµης και 65.536 θέσεις συσκευών εισόδου/εξόδου. Βρείτε από πόσες γραµµές αποτελείται ο δίαυλος δεδοµένων και ο δίαυλος διευθύνσεων.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.5
Ο Motorola 6800 είναι ένας µικροεπεξεργαστής των 8 bits. Το ολοκληρωµένο κύκλωµα του έχει 40 ακροδέκτες, από τους οποίους 16 αποτελούν το δίαυλο διευθύνσεων και 8 αποτελούν το δίαυλο δεδοµένων. Ποια είναι η µέγιστη µνήµη, την οποία µπορούµε να συνδέσουµε στον επεξεργαστή αυτό;
2.3 O Ã√¡π™ª√™ ∆ø¡ ∂¡∆√§ø¡ (KÀ∫§√™ ∂¡∆√§∏™–ª∏Ã∞¡∏™–ƒ√§√°π√À)
2.3 O ¯ÚÔÓÈÛÌfi˜ ÙˆÓ ÂÓÙÔÏÒÓ (K‡ÎÏÔ˜ ÂÓÙÔÏ‹˜–Ì˯·Ó‹˜–ÚÔÏÔÁÈÔ‡)
Οι απαιτήσεις για χρονισµό σε ένα µικροϋπολογιστικό σύστηµα ποικίλλουν από σχετικά µεγάλης διάρκειας παλµούς µέχρι πολύ µικρής διάρκειας. Η βασική πηγή για όλες τις λειτουργίες του µικροεπεξεργαστή είναι το ρολόι (ή αλλιώς κύκλωµα χρονισµού). Πολλές φορές σε διάφορες διατάξεις µικροεπεξεργαστών το ρολόι είναι ανεξάρτητο του µικροεπεξεργαστή και αυτό γίνεται για να µπορέσει ο κατασκευαστής ή σχεδιαστής να διαλέξει ένα ρολόι µε την ακολουθία παλµών που τον ενδιαφέρει παρ’ όλα αυτά, ακόµα και όταν το ρολόι είναι ενσωµατωµένο στο µικροεπεξεργαστή, δεν σηµαίνει ότι ο σχεδιαστής δεν µπορεί να αποφασίζει για την ακολουθία παλµών. Συνήθως, ο κατασκευαστής δίνει τη δυνατότητα να συνδεθεί ο µικροεπεξεργαστής µε ένα κατάλληλο κρύσταλλο (ή κρυσταλλικό ταλαντωτή), RC ή LC κύκλωµα, το οποίο θα του αποδώσει τους απαραίτητους παλµούς. Η ταχύτητα, µε την οποία λειτουργεί ο µικροεπεξεργαστής, εξαρτάται βέβαια από τους παλµούς του ρολογιού. Όλοι οι µικροεπεξεργαστές έχουν µια ανώτατη και µια κατώτατη τιµή για την ακολουθία παλµών, η οποία επιφέρει και ένα όριο για την ανώτατη και κατώτατη ταχύτητά του. Εκτός από το σήµα ρολογιού, το οποίο συναντάµε σε κάθε µικροεπεξεργαστή, απαιτείται και η ύπαρξη ενός σήµατος αρχικοποίησής του. Φανταστείτε τι γίνεται κάθε φορά που δίνουµε τροφοδοσία σε ένα µικροεπεξεργαστή. Οι εσωτερικοί καταχωρητές του περιέχουν απροσδιόριστες τιµές. Ο µετρητής προγράµµατος εποµένως θα περιέχει µια τυχαία τιµή, η οποία θα αναγκάζει το σύστηµα να ξεκινάει την εκτέλεση του προγράµµατος από διαφορετική εντολή κάθε φορά. Το πρόβληµα αυτό έρχεται να λύσει το σήµα αρχικοποίησης, το οποίο κάθε φορά που ενεργοποιείται επαναφέρει το µικροεπεξεργαστή σε µία γνωστή αρχική κατάσταση. Στο παράδειγµα 1 µπορείτε να βρείτε πληροφορίες για το χρονισµό του επεξεργαστή Intel 8088. Ο µικροεπεξεργαστής λειτουργεί εκτελώντας µία σειρά από εντολές του τύπου ανάγνωσης ή εγγραφής, καθεµία από τις οποίες µεταφέρει µια λέξη (η οποία µπορεί να είναι ένα ή δύο bytes) πληροφοριών µεταξύ του µικροεπεξεργαστή και µιας συγκεκριµένης θέσης µνήµης ή µονάδας εισόδου/εξόδου. Αυτές οι εντολές του τύπου ανάγνωσης (read)/εγγραφής (write) είναι το µόνο µέσο επικοινωνίας µεταξύ του µικροεπεξεργαστή και των άλλων συσκευών του µικροϋπολογιστή και είναι αναγκαίες για την εκτέλεση µιας οποιασδήποτε εντολής ή προγράµµατος.
41
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
42
I1
I1:v Kύκλος εντολής
M1
M2
M3
M4
M5
M1–5:v Kύκλοι µηχανής
T1
T2
T3
T4
T5
T1–5:v Kύκλοι ρολογιού
™¯‹Ì· 2.6
Κύκλοι εντολής, µηχανής και ρολογιού
Όπως αναφέρθηκε προηγουµένως, ο µικροεπεξεργαστής χρησιµοποιεί ένα ρολόι για να συγχρονίζει τις διάφορες λειτουργίες των συσκευών του. Το ρολόι είναι µια γεννήτρια παλµών, που παράγει παλµούς της ίδιας συχνότητας, αλλά µε διαφορετικές φάσεις (συνήθως δύο). Κάθε παλµός ονοµάζεται κύκλος ρολογιού (clock cycle) και κατά τη διάρκειά του µπορούν να γίνουν στοιχειώδεις λειτουργίες. Ο χρόνος που απαιτείται για το συνδυασµό των λειτουργιών, που χρειάζονται κατά την εκτέλεση µιας εντολής, λέγεται κύκλος εντολής (instruction cycle). Επειδή µερικές εντολές απαιτούν πολύ περισσότερες λειτουργίες από άλλες, κάθε κύκλος εντολής διαιρείται σε τµήµατα, που ονοµάζονται κύκλοι µηχανής (machine cycles). Κάθε κύκλος εντολής συνήθως αποτελείται από ένα µέχρι πέντε κύκλους µηχανής. Ο κύκλος µηχανής είναι ο χρόνος που χρειάζεται ο µικροεπεξεργαστής για να εκτελέσει µια βασική λειτουργία, όπως µια λειτουργία τύπου ανάγνωσης/εγγραφής. Σε όλους τους µικροεπεξεργαστές παρατηρούµε τουλάχιστον τους παρακάτω τύπους κύκλων µηχανής: • κύκλος προσκόµισης ή ανάκλησης εντολής • κύκλος ανάγνωσης από µνήµη ή µονάδα εισόδου/εξόδου • κύκλος εγγραφής σε µνήµη ή µονάδα εισόδου/εξόδου • κύκλος εκτέλεσης εσωτερικής λειτουργίας Με τη σειρά του ο κάθε κύκλος µηχανής αποτελείται από τρεις έως έξι κύκλους ρολογιού. Ο πρώτος κύκλος µηχανής κάθε εντολής καλείται κύκλος προσκόµισης ή αλλιώς κύκλος ανάκλησης (fetch cycle) και κατά τη διάρκειά του µεταφέρεται η εντολή από τη θέση µνήµης στον καταχωρητή εντολής.
2.3 O Ã√¡π™ª√™ ∆ø¡ ∂¡∆√§ø¡ (KÀ∫§√™ ∂¡∆√§∏™–ª∏Ã∞¡∏™–ƒ√§√°π√À)
Κατά τη διάρκεια του πρώτου κύκλου ρολογιού του κύκλου προσκόµισης µετακινούνται τα περιεχόµενα του µετρητή προγράµµατος στο δίαυλο διευθύνσεων ώστε να µεταφερθεί η εντολή από τη µνήµη. Κατά τη διάρκεια του δεύτερου κύκλου ρολογιού του κύκλου προσκόµισης ο µετρητής προγράµµατος αυξάνεται κατάλληλα, ώστε να δείχνει την επόµενη θέση µνήµης που πρόκειται να προσπελαστεί. Ο τρίτος κύκλος ρολογιού του κύκλου προσκόµισης αντιστοιχεί στη µετακίνηση του κώδικα λειτουργίας της εντολής από τη συγκεκριµένη θέση µνήµης στον καταχωρητή εντολής του µικροεπεξεργαστή. Ο τελευταίος κύκλος ρολογιού του κύκλου προσκόµισης αντιστοιχεί σε εσωτερικές λειτουργίες του µικροεπεξεργαστή, όπως µεταφορά πληροφοριών µεταξύ των καταχωρητών του και άλλες. Στο σχήµα 2.6 µπορείτε να δείτε το παράδειγµα µιας εντολής, που αποτελείται από πέντε κύκλους µηχανής και ο Μ3 κύκλος µηχανής αποτελείται από πέντε κύκλους ρολογιού. Στο παράδειγµα 2 αναλύουµε τον τρόπο, µε τον οποίο ένας κύκλος εντολής χωρίζεται σε κύκλους µηχανής. ¶·Ú¿‰ÂÈÁÌ· 2.1 Μελέτη των κυκλωµάτων χρονισµού του επεξεργαστή Intel 8088.
∞¿ÓÙËÛË ¶·Ú·‰Â›ÁÌ·ÙÔ˜ 2.1 Ο επεξεργαστής Intel 8088 διαθέτει ένα σήµα (CLK), το οποίο χρησιµοποιείται ως είσοδος ρολογιού. Στον ακροδέκτη αυτό εισάγουµε παλµούς ρολογιού µε duty cycle 33% (δηλαδή το πλάτος του παλµού ρολογιού στη λογική κατάσταση “1” µε το πλάτος του παλµού στη λογική κατάσταση “0” έχει µια σχέση 1 προς 2). Επίσης διαθέτει ένα σήµα µε όνοµα RESET, το οποίο είναι το σήµα αρχικοποίησης. Εάν το σήµα, που θα εφαρµόσουµε στον ακροδέκτη αυτό, µείνει στη λογική κατάσταση “1” για χρόνο µεγαλύτερο από τέσσερις παλµούς ρολογιού, τότε µε την κάθοδο του σήµατος αυτού στη λογική κατάσταση “0” ο επεξεργαστής αρχικοποιείται. Για να µπορέσουµε να δηµιουργήσουµε τα δύο σήµατα, που αναφέραµε παραπάνω, χρειαζόµαστε τη βοήθεια ενός ολοκληρωµένου κυκλώµατος, που ονοµάζεται γεννήτρια χρονισµού. Για την περίπτωση του Intel 8088 η γεννήτρια χρονισµού έχει την κωδική ονοµασία 8284. Παρατηρήστε, µε τη βοήθεια του σχήµατος 2.7, τον τρόπο µε τον οποίο αυτή συνδέεται µε τον επεξεργαστή.
43
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
44
U2 22 19 21 18
READY CLK RESET INTR
U1 17 16
4 6 3 7 14 1 15 13
VCC
X1 X2
5 READY CLK 8 10 RESET PCLK
RDY1 RDY2 AEN1 AEN2 EFI CSYNC ASYNC F/C
OSC
2 12
AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 A8 A9 A10 A11 A12 A13 A14 A15 A16/S3 A17/S4 A18/S5 A19/S6
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 39 38 37 36 35
BME
34
S0 S1 S2
26 27 28
RD LOCK QS0 QS1
32 29 25 24
RES 8284
™¯‹Ì· 2.7
Τα κυκλώµατα χρονισµού του 8088
31 30 17 23 33
RQ/GT0 RQ/GT1 NMI TEST MX 8088MAX
Η γεννήτρια χρονισµού χρησιµοποιεί έναν κρύσταλλο (ή κρυσταλλικό ταλαντωτή) συγκεκριµένης συχνότητας ως είσοδο στους ακροδέκτες της Χ1 και Χ2 και δίνει στην έξοδο το σήµα CLK, το οποίο εφαρµόζεται στον επεξεργαστή. Επίσης µε τη βοήθεια του κυκλώµατος της αντίστασης, της διόδου και του πυκνωτή, που εφαρµόζονται στο σήµα RES, παράγεται το σήµα αρχικοποίησης RESET του Intel 8088.
2.3 O Ã√¡π™ª√™ ∆ø¡ ∂¡∆√§ø¡ (KÀ∫§√™ ∂¡∆√§∏™–ª∏Ã∞¡∏™–ƒ√§√°π√À)
45
Ελέγχοντας τα βιβλία του κατασκευαστή, διαβάζουµε ότι για τη σωστή λειτουργία του επεξεργαστή απαιτείται η περίοδος ρολογιού να είναι µεταξύ 200 ns και 500 ns. Εποµένως, η συχνότητα λειτουργίας του κρυσταλλικού ταλαντωτή, που συνδέουµε στη γεννήτρια χρονισµού, θα κυµαίνεται από 2 MHz έως 5 MHz (θυµηθείτε ότι η περίοδος είναι το αντίστροφο της συχνότητας). ¶·Ú¿‰ÂÈÁÌ· 2.2 Χωρισµός ενός κύκλου εντολής σε κύκλους µηχανής και ρολογιού.
∞¿ÓÙËÛË ¶·Ú·‰Â›ÁÌ·ÙÔ˜ 2.2 Kύκλος εντολής
M1
M1
M3
T 1 T2 T3 T4
T1 T 2 T3
T1 T2 T3
Kύκλοςv προσκόµισηςv εντολής
Kύκλοςv ανάγνωσηςv µνήµης
Eκτέλεσηv εντολής
Η κάθε εντολή, ανάλογα µε τη λειτουργία που επιτελεί, τον αριθµό των εντέλων και τον αριθµό των bytes, που έχει το κάθε έντελο, αποτελείται από διαφορετικό αριθµό κύκλων µηχανής. Έστω ότι χρησιµοποιούµε το µικροεπεξεργαστή Intel 8086. Αυτός διαθέτει µια εντολή πρόσθεσης (µε όνοµα ADD), η οποία προσθέτει την τιµή που δίνουµε µε τα περιεχόµενα του συσσωρευτή και αποθηκεύει το αποτέλεσµα στο συσσωρευτή. Η εντολή συντάσσεται ως εξής: ADD , όπου είναι η τιµή που θέλουµε να προσθέσουµε στο συσσωρευτή. Η εντολή αυτή αποθηκεύεται στη µνήµη σε δύο bytes. Το πρώτο byte περιέχει τον κωδικό λειτουργίας της εντολής (στην συγκεκριµένη περίπτωση περιέχει το 0416) και το δεύτερο byte την τιµή που θέλουµε να προσθέσουµε (έστω ότι περιέχει την τιµή 2F16). Η εντολή αυτή αποτελείται από τρεις κύκλους µηχανής, όπως µπορείτε να παρατηρήσετε στο σχήµα 2.8. O πρώτος κύκλος µηχανής αποτελεί τον κύκλο προσκόµισης της εντολής. Ο κωδικός λειτουργίας της εντολής (0416) µετα-
™¯‹Ì· 2.8
Οι κύκλοι µηχανής και ρολογιού της εντολής ADD
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
46
φέρεται από τη µνήµη στον επεξεργαστή (και συγκεκριµένα στον αποκωδικοποιητή εντολών) και αποκωδικοποιείται. Από τον κωδικό λειτουργίας ο επεξεργαστής καταλαβαίνει ότι απαιτείται στη συνέχεια ένας κύκλος µηχανής για την ανάγνωση της τιµής, που θέλουµε να προσθέσουµε. Για το λόγο αυτό ο δεύτερος κύκλος µηχανής αποτελεί έναν κύκλο ανάγνωσης από τη µνήµη. Κατά τη διάρκεια αυτού η τιµή 2F16 µεταφέρεται από τη µνήµη στον επεξεργαστή και αποθηκεύεται σε κάποιον προσωρινό καταχωρητή της αριθµητικής και λογικής µονάδας. Στον τρίτο κύκλο µηχανής γίνεται η λειτουργία της πρόσθεσης. Η αριθµητική και λογική µονάδα προσθέτει τις δύο τιµές και αποθηκεύει το αποτέλεσµα στο συσσωρευτή.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.6
(α) Τι εκφράζουν ο κύκλος εντολής, ο κύκλος µηχανής και ο κύκλος ρολογιού; (β) Κατατάξτε τους από το µικρότερο σε χρονική διάρκεια έως το µεγαλύτερο.
2.4 TÔ Û‡ÓÔÏÔ ÂÓÙÔÏÒÓ ÙÔ˘ ÌÈÎÚÔÂÂÍÂÚÁ·ÛÙ‹
Όπως θα θυµάστε από την Ενότητα 1.4, οι µικροϋπολογιστές λειτουργούν µε βάση κάποιο πρόγραµµα, το οποίο είναι αποθηκευµένο στην κύρια µνήµη (που µπορεί να αποτελείται από διάφορες µνήµες ROM, EPROM, RAM, κ.α.). Το πρόγραµµα αυτό αποτελείται από εντολές, οι οποίες αποθηκεύονται η µία µετά την άλλη. Οι διάφορες εντολές, τις οποίες µπορεί να εκτελέσει κάποιος µικροεπεξεργαστής, καθορίζουν το σύνολο εντολών του. Ανάλογα µε την τεχνολογία και το σχεδιασµό του, ο κάθε µικροεπεξεργαστής διαθέτει το δικό του σύνολο εντολών. Το πλήθος των εντολών αυτών διαφέρει και µπορεί να είναι από πολύ µικρό, όπως λίγες δεκάδες εντολών, έως πολύ µεγάλο, όπως µερικές εκατοντάδες εντολές. Για παράδειγµα ο µικροεπεξεργαστής 6502, που παρουσιάστηκε από την εταιρία MOS Technology το 1975, διαθέτει 151 διαφορετικές εντολές, ενώ ο 8085 της Intel διαθέτει 239 εντολές. Το µήκος των εντολών εξαρτάται από τον αριθµό των εντέλων και συνήθως είναι µεταξύ ενός και τριών bytes. Το πρώτο byte αποτελεί πάντα τον κωδικό λειτουργίας της εντολής. Για το λόγο αυτό το σύνολο εντολών των µικροεπεξεργαστών αποτελείται από λιγότερες από 255 εντολές. Τα υπόλοιπα bytes περιέ-
2 . 4 T √ ™ À ¡ √ § √ ∂ ¡ ∆ √ § ø ¡ ∆ √ À ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏
χουν είτε δεδοµένα είτε διευθύνσεις καταχωρητών είτε διευθύνσεις µνήµης. Μπορούµε µε διάφορους τρόπους να χωρίσουµε το σύνολο εντολών ενός µικροεπεξεργαστή σε κατηγορίες. Στη γενική περίπτωση µπορούµε να διακρίνουµε τις παρακάτω κατηγορίες: • Aριθµητικές εντολές: Στην κατηγορία αυτή ανήκουν όλες οι εντολές, οι οποίες έχουν σχέση µε αριθµητικές πράξεις, όπως για παράδειγµα εντολές πρόσθεσης ή αφαίρεσης δύο αριθµών, εντολές αύξησης ή ελάττωσης ενός αριθµού κατά ένα, εντολές µετατροπής αριθµού σε µορφή συµπληρώµατος ως προς 1 ή ως προς 2. Σε πιο πρόσφατους µικροεπεξεργαστές συναντάµε επίσης πιο πολύπλοκες εντολές, όπως εντολές πολλαπλασιασµού ή διαίρεσης. • Λογικές εντολές: Στην κατηγορία αυτή βρίσκουµε εντολές που έχουν σχέση µε λογικές πράξεις, όπως εντολές λογικού KAI (AND), OXI (NOT), Ή (OR), ΑΠΟΚΛΕΙΣΤΙΚΟΥ Ή (XOR), εντολές ολίσθησης ενός αριθµού προς τα αριστερά ή προς τα δεξιά, εντολές περιστροφής ενός αριθµού, εντολές σύγκρισης δύο αριθµών. • Eντολές µετακίνησης δεδοµένων: H κατηγορία αυτή περιέχει τις εντολές, οι οποίες µετακινούν δεδοµένα. Πριν εκτελέσουµε µια αριθµητική ή λογική πράξη θα πρέπει να έχουµε µεταφέρει τα δεδοµένα, που θα πάρουν µέρος στην πράξη είτε στο συσσωρευτή είτε στους καταχωρητές γενικού σκοπού. Επίσης µετά από µια τέτοια ενέργεια θα πρέπει να µπορούµε να µεταφέρουµε τα αποτελέσµατα της πράξης είτε στην κύρια µνήµη είτε σε άλλους καταχωρητές. Εντολές που µας δίνουν αυτή τη δυνατότητα είναι, π.χ., οι εντολές φόρτωσης αριθµού στο συσσωρευτή ή στους καταχωρητές γενικού σκοπού, εντολές αποθήκευσης αριθµού στην κύρια µνήµη ή στους καταχωρητές, εντολές µετακίνησης δεδοµένων µεταξύ της µνήµης, εντολές ανάγνωσης ή εγγραφής δεδοµένων στις συσκευές εισόδου/εξόδου. • Eντολές διακλάδωσης: Όπως γνωρίζετε, ένα πρόγραµµα αποτελείται από εντολές που βρίσκονται αποθηκευµένες σειριακά στη µνήµη και εκτελούνται η µία µετά την άλλη. Ο µετρητής προγράµµατος είναι αυτός που καθορίζει ποια θα είναι η επόµενη εντολή που θα εκτελεστεί. Υπάρχουν περιπτώσεις, όµως, (π.χ. όταν θέλουµε να εκτελέσουµε διαφορετικές εντολές ανάλογα µε το αποτέλεσµα µιας πράξης), όπου θα πρέπει να µπορούµε να αλλάξουµε τη σειρά εκτέλεσης των εντολών και να µεταβάλλουµε τα περιεχόµενα του µετρητή προγράµµατος. Οι εντολές που µας δίνουν
47
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
48
αυτή τη δυνατότητα ονοµάζονται εντολές διακλάδωσης και χωρίζονται σε δύο υποκατηγορίες: (α) στις εντολές διακλάδωσης χωρίς συνθήκη, οι οποίες µεταφέρουν πάντα την εκτέλεση των εντολών στο σηµείο που περιγράφει το έντελό τους, και (β) στις εντολές διακλάδωσης υπό συνθήκη, όπου ο έλεγχος της συνθήκης θα κρίνει κατά πόσο θα µεταφερθεί ή όχι η εκτέλεση των εντολών σε άλλο σηµείο ή όχι. Στην πρώτη περίπτωση ανήκουν οι εντολές JUMP, ενώ στη δεύτερη περίπτωση ανήκουν οι εντολές διακλάδωσης σε περίπτωση µηδενικού ή όχι αποτελέσµατος, οι εντολές διακλάδωσης σε περίπτωση θετικού ή αρνητικού αποτελέσµατος κ.ά. • Eντολές κλήσης και επιστροφής από υπορουτίνα: Όπως και στις σύγχρονες γλώσσες προγραµµατισµού, έτσι και στις εντολές του µικροεπεξεργαστή, όταν µια ακολουθία εντολών χρησιµοποιείται σε πολλά σηµεία του προγράµµατος, την οµαδοποιούµε και την ονοµάζουµε υπορουτίνα (subroutine). Οι µικροεπεξεργαστές διαθέτουν µια εντολή κλήσης υπορουτίνας (συνήθως ονοµάζεται CALL), η οποία, όταν εκτελείται, µεταφέρει το µετρητή προγράµµατος στο σηµείο όπου βρίσκονται οι εντολές της υπορουτίνας. Η τελευταία εντολή της υπορουτίνας ονοµάζεται εντολή επιστροφής από υπορουτίνα (συνήθως ονοµάζεται RETURN) και επαναφέρει το µετρητή προγράµµατος στο σηµείο όπου βρισκόταν όταν έγινε η κλήση της υπορουτίνας για να συνεχίσει την εκτέλεση του προγράµµατος µε την επόµενη εντολή. • Γενικές εντολές: Oι µικροεπεξεργαστές διαθέτουν και διάφορες άλλες εντολές γενικού σκοπού. Τέτοιες εντολές είναι οι εντολές διαχείρισης σωρού (PUSH, POP), εντολές διακοπής λειτουργίας (HALT, BReaK), κ.ά. Στην κατηγορία αυτή ανήκει επίσης και η εντολή NOP (Νo operation), η οποία δεν εκτελεί καµία λειτουργία, αλλά µπορεί να φανεί πολύ χρήσιµη, ειδικά σε περιπτώσεις όπου µέσα στο πρόγραµµα θα πρέπει να περιµένουµε κάποιο χρονικό διάστηµα µέχρι να προχωρήσουµε στην εκτέλεση της επόµενης εντολής. Στο παράδειγµα 3 µπορείτε να βρείτε ένα µικρό πρόγραµµα, τον τρόπο µε τον οποίο αποθηκεύεται στην κύρια µνήµη του µικροϋπολογιστικού συστήµατος, καθώς και τον τρόπο µε τον οποίο εκτελείται. ¶·Ú¿‰ÂÈÁÌ· 2.3 Έστω ότι θέλουµε να φτιάξουµε στο µικροεπεξεργαστή 80196 της Intel ένα µικρό πρόγραµµα, το οποίο να αποθηκεύει σε έναν καταχωρητή διαδοχικά τις τιµές από το 0 µέχρι το 5.
2 . 4 T √ ™ À ¡ √ § √ ∂ ¡ ∆ √ § ø ¡ ∆ √ À ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏
∞¿ÓÙËÛË ¶·Ú·‰Â›ÁÌ·ÙÔ˜ 2.3 Από το εγχειρίδιο του κατασκευαστή βρίσκουµε ότι ο µικροεπεξεργαστής αυτός διαθέτει µεταξύ άλλων τις παρακάτω εντολές: • LDB (load byte), η οποία αποθηκεύει την τιµή που θέλουµε σε κάποιον καταχωρητή. Η εντολή συντάσσεται ως εξής: LDB <ηٷ¯ˆÚËÙ‹˜> , #<·ÚÈıÌfi˜> , όπου <καταχωρητής> είναι ο αριθµός του καταχωρητή, που θέλουµε να χρησιµοποιήσουµε, και <αριθµός> είναι τα δεδοµένα (byte), που θέλουµε να φορτώσουµε στον καταχωρητή. Η εντολή αποθηκεύεται στην κύρια µνήµη σε τρία bytes (ένα για τον κωδικό λειτουργίας που είναι η τιµή Β116, ένα για τον καταχωρητή και ένα για τον αριθµό). • ADDB (add byte), η οποία προσθέτει τα περιεχόµενα ενός καταχωρητή µε την τιµή, που θέλουµε, και αποθηκεύει το αποτέλεσµα πίσω στον καταχωρητή. Η εντολή συντάσσεται ως εξής: ADDB <ηٷ¯ˆÚËÙ‹˜> , #<·ÚÈıÌfi˜> , όπου <καταχωρητής> είναι ο αριθµός του καταχωρητή, που θέλουµε να χρησιµοποιήσουµε, και <αριθµός> είναι τα δεδοµένα (byte), που θέλουµε να προσθέσουµε στον καταχωρητή. Η εντολή αποθηκεύεται στην κύρια µνήµη, όπως και η LDB, σε τρία bytes, ενώ ο κωδικός λειτουργίας της είναι το 7516. • CMPB (compare byte), η οποία συγκρίνει τα περιεχόµενα ενός καταχωρητή µε µία τιµή. Η εντολή συντάσσεται ως εξής: CMPB <ηٷ¯ˆÚËÙ‹˜> , #<·ÚÈıÌfi˜>, όπου <καταχωρητής> είναι ο αριθµός του καταχωρητή, που θέλουµε να χρησιµοποιήσουµε, και <αριθµός> είναι τα δεδοµένα (byte), που θέλουµε να συγκρίνουµε µε τον καταχωρητή. Η εντολή αυτή, όπως και οι προηγούµενες, αποθηκεύεται στην κύρια µνήµη σε τρία bytes, ενώ ο κωδικός λειτουργίας της είναι το 9916. • JNE (jump if not equal), η οποία, εάν οι δύο αριθµοί της προηγούµενης πράξης είναι ίσοι, τότε µεταφέρει την εκτέλεση του προγράµµατος στο σηµείο του προγράµµατος, που θέλουµε. Η εντολή συντάσσεται ως εξής: JNE <ÂÙÈΤٷ>,
49
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
50
όπου <ετικέτα> είναι το σηµείο του προγράµµατος, στο οποίο θα µεταφερθούµε εάν ισχύει η συνθήκη ισότητας. Η εντολή αποθηκεύεται στην κύρια µνήµη σε δύο bytes (ένα για τον κωδικό λειτουργίας που είναι το D716 και ένα για τον αριθµό που δείχνει πόσα bytes µπροστά ή πίσω από την τρέχουσα εντολή θα πρέπει να µεταφερθούµε). • BRK (break), η οποία τερµατίζει την εκτέλεση του προγράµµατος. Η εντολή συντάσσεται ως εξής: BRK χωρίς να έχει κάποιο έντελο. Η εντολή αποθηκεύεται στην κύρια µνήµη σε τρία bytes και ο κωδικός λειτουργίας της είναι το Ε716. Στην πραγµατικότητα η εντολή BRK είναι µία εντολή διακλάδωσης χωρίς συνθήκη, η οποία αποθηκεύει στο µετρητή προγράµµατος εκείνη τη διεύθυνση της µνήµης, όπου υπάρχουν ειδικές εντολές, που τερµατίζουν την εκτέλεση του προγράµµατος. Έχουµε όµως συνηθίσει να τη θεωρούµε ως µία γενική εντολή και όχι ως εντολή διακλάδωσης. Έστω ότι χρησιµοποιούµε τον καταχωρητή γενικού σκοπού 8016 (ο συγκεκριµένος µικροεπεξεργαστής περιέχει πολλούς καταχωρητές) και ότι το πρόγραµµά µας αποθηκεύεται στην κύρια µνήµη ξεκινώντας από τη θέση µνήµης 500016 (µην ξεχνάτε ότι οι αριθµοί µας βρίσκονται στο δεκαεξαδικό σύστηµα αρίθµησης). Ένα πρόγραµµα, το οποίο αποθηκεύει στον καταχωρητή 8016 διαδοχικά τις τιµές από το 0 έως το 5 και χρησιµοποιεί τις εντολές, που είδαµε έως τώρα, είναι το παρακάτω: LDB 80, #00 C:
ADDB 80, #01 CMPB 80, #05 JNE C BRK
Ας παρακολουθήσουµε τη λογική του προγράµµατος για να καταλάβουµε πώς λειτουργεί. Αφού, όπως είπαµε, χρησιµοποιούµε τον καταχωρητή µε αριθµό 8016 για να αποθηκεύουµε τους αριθµούς από το 0 έως το 5, το πρώτο βήµα είναι να τον αρχικοποιήσουµε µε την τιµή 0016 (εντολή LDB). Στην συνέχεια πρέπει να αυξάνουµε τα περιεχόµενα του 8016 κάθε φορά κατά ένα µέχρι να φτάσουµε στην τελευταία τιµή, που είναι το 5. Για το
2 . 4 T √ ™ À ¡ √ § √ ∂ ¡ ∆ √ § ø ¡ ∆ √ À ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏
51
σκοπό αυτό προσθέτουµε την τιµή 0116 στα περιεχόµενα του καταχωρητή (εντολή ADDB) και στη συνέχεια ελέγχουµε µήπως έχουµε φτάσει ήδη στην τελευταία τιµή (εντολή σύγκρισης CMPB). Εάν δεν έχουµε φτάσει (εντολή JNE), επιστρέφουµε στο σηµείο C και επαναλαµβάνουµε την πρόσθεση µέχρι ο καταχωρητής 8016 να περιέχει την τιµή 0516. Τότε η εντολή JNE δεν θα επιστρέψει στο σηµείο C, αλλά η εκτέλεση του προγράµµατος θα συνεχιστεί µε την επόµενη εντολή, η οποία και τερµατίζει το πρόγραµµα. (εντολή BRK). Εάν παρατηρήσουµε την κύρια µνήµη, θα δούµε ότι το πρόγραµµά µας έχει αποθηκευτεί όπως φαίνεται στο σχήµα 2.9. Στις πρώτες τρεις θέσεις µνήµης έχει αποθηκευτεί η εντολή LDB. Το πρώτο byte αποτελεί τον κωδικό λειτουργίας της, το δεύτερο byte (0016) τον αριθµό, τον οποίο φορτώνουµε, και το τρίτο byte (8016) τον καταχωρητή, τον οποίο χρησιµοποιούµε. Με αντίστοιχο τρόπο στις επόµενες έξι θέσεις µνήµης έχουν αποθηκευτεί οι δύο επόµενες εντολές του προγράµµατός µας.
™¯‹Ì· 2.9
Η εκτέλεση του προγράµµατος ξεκινάει µε τη βοήθεια του µετρητή προ- Το πρόγραµµα αποθηκευγράµµατος από τη θέση µνήµης 500016. Ο µικροεπεξεργαστής διαβάζει το µένο στην κύρια µνήµη πρώτο byte και το αποκωδικοποιεί µε βάση τον κωδικό λειτουργίας του. Από αυτόν καταλαβαίνει ότι ακολουθούν άλλα δύο bytes µε τα έντελα της εντολής, τα οποία διαβάζει από τη µνήµη και στη συνέχεια εκτελεί την εντολή. Στη 5000 B1 συνέχεια διαβάζει το περιεχόµενο της θέσης µνήµης 500316, 00 5001 LDB 80, #00 80 5002 που περιέχει την επόµενη εντολή, την αποκωδικοποιεί, την 75 5003 εκτελεί κ.ο.κ. µέχρι να φτάσει στη θέση µνήµης 500916. Στις θέσεις µνήµης 500916 και 500Α16 βρίσκουµε αποθηκευµένη την εντολή JNE. Το πρώτο byte είναι ο κωδικός λειτουργίας. Το δεύτερο byte περιέχει τον αριθµό F8 16, ο οποίος αναπαριστά τον αριθµό –810 σε µορφή συµπληρώµατος ως προς 2. Όταν εκτελείται αυτή η εντολή, ο µετρητής προγράµµατος δείχνει στην επόµενη εντολή, δηλαδή στην BRK, η οποία ξεκινάει στη θέση µνήµης 500Β16. Εάν ισχύει η συνθήκη της ισότητας στην εντολή σύγκρισης, τότε το πρόγραµµα συνεχίζεται µε την εκτέλεση της εντολής BRK. Εάν όµως δεν ισχύει η συνθήκη της ισότητας, τότε προστίθεται στο µετρητή προγράµµατος ο αριθµός –8 10,
5004 5005 5006 5007 5008 5009 500A 500B 500C 500D
01 80 99 05 80 D7 F8 E7 F2 DF
ADDB 80, #01
CMPB 80, #05
JNE C
BRK
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
52
οπότε αυτός δείχνει πλέον στη θέση µνήµης 500316, στην οποία ξεκινάει η εντολή ADDB. Με τον τρόπο αυτό, δηλαδή την πρόσθεση κάποιας προσηµασµένης τιµής στο περιεχόµενο του µετρητή προγράµµατος, υλοποιούνται οι εντολές διακλάδωσης (είτε υπό συνθήκη είτε χωρίς). Τέλος, στις θέσεις µνήµης 500Β16 έως και 500D16 βρίσκεται αποθηκευµένη η τελευταία εντολή του προγράµµατός µας, η οποία, όταν εκτελείται, τερµατίζει τη λειτουργία του.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.7
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.8
Ποιες κατηγορίες εντολών γνωρίζετε;
∆ίνεται το παρακάτω πρόγραµµα, το οποίο έχει γραφτεί για το µικροεπεξεργαστή 80196 της Intel: LDB 8C, #0A A:
ADDB 8C, #05 CMPB 8C, #64 JNE A BRK
(α)Υποθέτοντας ότι το πρόγραµµα αποθηκεύεται στην κύρια µνήµη ξεκινώντας από τη θέση µνήµης 300016, βρείτε τα περιεχόµενα της µνήµης από τη θέση 300016 έως και την 300D16. Ποιο είναι το µέγεθος του προγράµµατος σε bytes; (β) Ποια είναι η λειτουργία του προγράµµατος; (γ) Εάν εκτελέσουµε το πρόγραµµα, πόσες φορές θα εκτελεστεί η πρώτη εντολή (LDB) και πόσες φορές η δεύτερη εντολή (ADDB);
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.9
Κατατάξτε τις εντολές του προγράµµατος του παραδείγµατος 2.3 στις κατηγορίες εντολών που περιγράφονται στην ενότητα 2.4.
2.5 Oπ Tƒ√¶√π ¢π∂À£À¡™π√¢√∆∏™∏™ ∆ø¡ ∂¡∆√§ø¡
Έστω ότι δεν γνωρίζουµε την ύπαρξη της εντολής ADDB στο µικροεπεξεργαστή 80196. Γνωρίζουµε όµως ότι αυτός διαθέτει µία εντολή µε όνοµα INCB, η οποία αυξάνει τα περιεχόµενα ενός καταχωρητή κατά ένα. Η εντολή αυτή συντάσσεται ως εξής: INCB <ηٷ¯ˆÚËÙ‹˜> και αποθηκεύεται στην κύρια µνήµη σε δύο bytes (το πρώτο περιέχει τον κωδικό λειτουργίας µε τιµή 1716, ενώ το δεύτερο περιέχει τον καταχωρητή). (α)Ποιες αλλαγές πρέπει να κάνουµε στο πρόγραµµα του παραδείγµατος 3 ώστε να µην χρησιµοποιεί την εντολή ADDB; (β) Πώς αποθηκεύεται το νέο πρόγραµµα στη µνήµη; Ποιο είναι το µέγεθός του;
2.5 OÈ TÚfiÔÈ ‰È¢ı˘ÓÛÈÔ‰fiÙËÛ˘ ÙˆÓ ÂÓÙÔÏÒÓ
™ÎÔfi˜ Στην προηγούµενη ενότητα είδαµε τις διάφορες κατηγορίες εντολών, που συνθέτουν το σύνολο εντολών ενός µικροεπεξεργαστή. Τα δεδοµένα, που χρειάζεται η κάθε εντολή για να εκτελεστεί η λειτουργία της, µπορεί να βρίσκονται είτε µετά από τον κωδικό λειτουργίας της εντολής είτε σε κάποια θέση µνήµης είτε σε κάποιον καταχωρητή. Στην ενότητα αυτή θα µάθετε τους διαφορετικούς τρόπους, µε τους οποίους ένας µικροεπεξεργαστής σηµατοδοτεί τη θέση, στην οποία βρίσκονται τα δεδοµένα αυτά (οι τρόποι αυτοί ονοµάζονται τρόποι διευθυνσιοδότησης ή αλλιώς τρόποι προσπέλασης). ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν ολοκληρώσετε τη µελέτη της ενότητας αυτής, θα είστε σε θέση να ορίσετε επτά διαφορετικούς τρόπους διευθυνσιοδότησης, που χρησιµοποιούν οι εντολές για να προσδιορίσουν το σηµείο, στο οποίο βρίσκονται τα δεδοµένα που χρειάζονται. ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή είναι σχετικά µεγάλη σε µέγεθος. Μελετήστε, µε τη σειρά, έναν–έναν τους διαφορετικούς τρόπους διευθυνσιοδότησης και προσπαθήστε
53
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.10
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
54
να διακρίνετε τις διαφορές του καθενός από αυτούς µε τους προηγούµενους, που έχετε ήδη µελετήσει. Για κάθε τρόπο διευθυνσιοδότησης θα βρείτε ενδεικτικά σχήµατα και παραδείγµατα ώστε να τους κατανοήσετε καλύτερα. Αφού τελειώσετε µε τη µελέτη της θεωρίας, που περιέχει η ενότητα, θα πρέπει να διαβάσετε προσεκτικά το παράδειγµα 2.4, το οποίο είναι αρκετά αναλυτικό. Οι µέθοδοι, που χρησιµοποιεί ο κάθε µικροεπεξεργαστής για να «δείξει» το πού βρίσκονται τα δεδοµένα, που χρειάζεται η κάθε εντολή, ονοµάζονται µέθοδοι διευθυνσιοδότησης ή αλλιώς τρόποι διευθυνσιοδότησης (addressing modes). Πολλές φορές, επειδή τα δεδοµένα βρίσκονται συνήθως στην κύρια µνήµη, ονοµάζονται και τρόποι προσπέλασης. Η φυσική διεύθυνση της µνήµης, η οποία προκύπτει από την εφαρµογή του τρόπου διευθυνσιοδότησης σε µία εντολή, ονοµάζεται ενεργή διεύθυνση (effective address). Μια εντολή (π.χ. πρόσθεσης) µπορεί να χρησιµοποιηθεί µε πολλούς τρόπους διευθυνσιοδότησης και φυσικά πολλές εντολές µπορούν να έχουν τον ίδιο τρόπο διευθυνσιοδότησης. Οι τρόποι διευθυνσιοδότησης διαφέρουν από µικροεπεξεργαστή σε µικροεπεξεργαστή, καθώς εξαρτώνται από τον τρόπο σχεδιασµού του. Σε κάθε µικροεπεξεργαστή όµως µπορούµε να διακρίνουµε όλους ή µερικούς από τους τρόπους που περιγράφονται εδώ. • Υπονοούµενη διευθυνσιοδότηση (implied or register addressing)
Kωδικόςv λειτουργίας ∆εδοµένα
™¯‹Ì· 2.10
Η άµεση διευθυνσιοδότηση (immediate)
Στην περίπτωση αυτή τα δεδοµένα, τα οποία χρειάζεται η εντολή, βρίσκονται αποθηκευµένα σε κάποιον καταχωρητή και το όνοµα αυτού του καταχωρητή προσδιορίζεται από τον κωδικό λειτουργίας. Για παράδειγµα στο µικροεπεξεργαστή 6502, ο οποίος διαθέτει δύο καταχωρητές Χ και Υ, υπάρχει µια εντολή µε όνοµα DEΥ (DEcrement Y), η οποία ελαττώνει τα περιεχόµενα του καταχωρητή Υ κατά ένα. Η εντολή αυτή χρησιµοποιεί τον υπονοούµενο τρόπο διευθυνσιοδότησης, καθώς η διεύθυνση, στην οποία υπάρχουν τα δεδοµένα (καταχωρητής Υ), «υπονοείται» από την εντολή. • Άµεση διευθυνσιοδότηση (immediate addressing) Στην άµεση διευθυνσιοδότηση (βλέπε σχήµα 2.10) τα δεδοµένα, που χρειάζονται για να εκτελεστεί η εντολή, βρίσκονται στο έντελο, που συνοδεύει την εντολή, και αποθηκεύονται αµέσως µετά τον κωδικό λειτουργίας. Παράδειγµα τέτοιας εντολής είναι η εντολή ADDB 80, #01 που είδαµε στο παράδειγµα 2.3. Στην εντολή αυτή τα δεδοµένα, που θέλουµε να προσθέσουµε (τιµή 0116), αποθηκεύονται στο δεύτερο έντελο της εντολής. Αντίστοιχα στον
2.5 Oπ Tƒ√¶√π ¢π∂À£À¡™π√¢√∆∏™∏™ ∆ø¡ ∂¡∆√§ø¡
55
6502 συναντάµε την εντολή LDX #55, η οποία µεταφέρει την τιµή 5516 στον καταχωρητή Χ. Για να υποδηλώσουµε άµεση διευθυνσιοδότηση χρησιµοποιούµε συνήθως το σύµβολο # πριν από τα δεδοµένα. • Απευθείας ή απόλυτη διευθυνσιοδότηση (direct or absolute addressing) Στην απευθείας ή απόλυτη διευθυνσιοδότηση τα δεδοµένα, που χρειάζεται η εντολή, βρίσκονται σε κάποια θέση της κύριας µνήµης. Το έντελο της εντολής, όπως φαίνεται στο σχήµα 2.11, περιέχει τη διεύθυνση της µνήµης όπου υπάρχουν τα δεδοµένα αυτά. Το µέγεθος του εντέλου είναι µια λέξη (δύο bytes) ώστε να µπορεί να διευθυνσιοδοτήσει όλη την κύρια µνήµη, που συνήθως είναι 64 KB.
Kωδικόςv λειτουργίας ∆ιεύθυνσηv µνήµηςv (2 bytes) •v •v •
∆εδοµένα Παράδειγµα τέτοιου τρόπου διευθυνσιοδότησης Eνεργήv στον 6502 αποτελεί η εντολή LDX $DC00. Η διεύθυνση εντολή αυτή µεταφέρει τα δεδοµένα, τα οποία βρίσκονται στη θέση µνήµης µε διεύθυνση DC0016, στον καταχωρητή Χ. Συνήθως, όταν αναφερόµαστε σε θέσεις µνήµης, χρησιµοποιούµε το σύµβολο $ πριν από τη διεύθυνση.
™¯‹Ì· 2.11
Η απευθείας ή απόλυτη διευθυνσιοδότηση (direct or absolute)
• Σχετική διευθυνσιοδότηση (relative addressing) Η σχετική διευθυνσιοδότηση είναι ο τρόπος διευθυνσιοδότησης, που χρησιµοποιούν οι εντολές διακλάδωσης. Το έντελο των εντολών αυτών, όπως φαίνεται στο σχήµα 2.12, περιέχει µια τιµή, η οποία προστίθεται στο περιεχόµενο του µετρητή προγράµµατος για να προκύψει η ενεργή διεύθυνση ή αλλιώς η διεύθυνση στόχος. Η τιµή αυτή είναι συνήθως ένας προσηµασµένος αριθµός. Εποµένως, το έντελο περιέχει το πόσο προς τα πάνω ή προς τα κάτω πρέπει να µετακινηθούµε στην κύρια µνήµη σε σχέση µε το σηµείο, στο οποίο βρισκόµαστε τώρα για να βρούµε την επόµενη εντολή. Όπως είδαµε και στο προηγούµενο παράδειγµα (παράδειγµα 2.3), η εντολή JNE C περιέχει ως έντελο την τιµή –810, η οποία προστιθέµενη στον µετρητή προγράµµατος
Kωδικόςv λειτουργίας Έντελο Mετρητήςv προγράµµατος
+
Eνεργήv διεύθυνση
•v •v •
Eντολή
™¯‹Ì· 2.12
Η σχετική διευθυνσιοδότηση (relative)
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
56
µας οδηγεί στη διεύθυνση της µνήµης, στην οποία υπάρχει η εντολή ADDB. Το µέγεθος του εντέλου είναι συνήθως ένα byte µε αποτέλεσµα να µπορούµε να µετακινηθούµε κατά –127 έως +128 θέσεις µνήµης. Σε µερικούς µικροεπεξεργαστές υπάρχουν και εντολές σχετικής διευθυνσιοδότησης, όπου το µέγεθος του εντέλου είναι µια λέξη (δύο bytes), ώστε να µπορούµε να µετακινηθούµε σε µεγαλύτερο µέρος της κύριας µνήµης. • Έµµεση διευθυνσιοδότηση (indirect addressing)
Kαταχωρητήςv προσδιορισµένοςv από τον κωδικόv λειτουργίας
Kωδικόςv λειτουργίας •v •v •
Στην έµµεση διευθυνσιοδότηση τα δεδοµένα, που χρειάζεται η εντολή, βρίσκονται σε κάποια θέση της κύριας µνήµης. Η ενεργή διεύθυνση σχηµατίζεται από το περιεχόµενο του καταχωρητή ή της θέσης µνήµης, την οποία περιέχει η εντολή στο έντελό της. Το σχήµα 2.13 παρουσιάζει σχηµατικά τον τρόπο αυτό διευθυνσιοδότησης.
Για παράδειγµα έστω ότι σε έναν υποθετικό υπολογιστή, που διαθέτει έναν καταχωρητή µε όνοµα Υ, υπάρχει η εντο∆εδοµένα λή INC (Y), η οποία αυξάνει το περιεχόµενο µιας θέσης Eνεργήv µνήµης κατά ένα. Η εντολή αυτή χρησιµοποιεί τον έµµεσο διεύθυνση τρόπο διευθυνσιοδότησης. Έστω επίσης ότι ο καταχωρητής Υ περιέχει την τιµή 8D0016. Όταν εκτελεστεί η εντολή αυτή, η ενεργή διεύθυνση, που θα σχηµατιστεί, θα είναι το ™¯‹Ì· 2.13 περιεχόµενο του καταχωρητή Υ, που είναι η τιµή 8D0016, εποµένως θα διαΗ έµµεση διευθυνσιοδότη- βάσει το περιεχόµενο της κύριας µνήµης µε διεύθυνση 8D0016, θα αυξήσει ση (indirect) το περιεχόµενο αυτό κατά ένα και θα αποθηκεύσει το αποτέλεσµα πίσω στη διεύθυνση της κύριας µνήµης. ∆ιεύθυνση
Παρατηρήστε ότι, ενώ στους προηγούµενους τρόπους διευθυνσιοδότησης το έντελο της εντολής περιείχε είτε τα δεδοµένα είτε τη διεύθυνση, στην οποία βρίσκονται, στην έµµεση διευθυνσιοδότηση το έντελο περιέχει έναν ενδιάµεσο καταχωρητή ή θέση µνήµης, ο οποίος περιέχει τη διεύθυνση της κύριας µνήµης, στην οποία βρίσκονται τα δεδοµένα (γι’ αυτό ακριβώς ονοµάζεται και έµµεση, επειδή εισάγει ένα ενδιάµεσο βήµα).
2.5 Oπ Tƒ√¶√π ¢π∂À£À¡™π√¢√∆∏™∏™ ∆ø¡ ∂¡∆√§ø¡
57
• ∆εικτοδοτηµένη διευθυνσιοδότηση (indexed addressing) Στον τρόπο αυτό διευθυνσιοδότησης, η ενεργή διεύθυνση είναι το αποτέλεσµα που προκύπτει από το άθροισµα της τιµής που περιέχει το έντελο και του περιεχοµένου ενός καταχωρητή. Ο καταχωρητής στην περίπτωση αυτή ονοµάζεται καταχωρητής δείκτη. Έστω η εντολή φόρτωσης τιµής στο συσσωρευτή LOAD $5000,X, η οποία χρησιµοποιεί αυτόν τον τρόπο προσπέλασης. Έστω ότι ο καταχωρητής Χ περιέχει την τιµή 0516 και ότι η θέση µνήµης 500516 περιέχει την τιµή ΒΒ16. Εκτελώντας αυτή την εντολή προστίθεται το περιεχόµενο του καταχωρητή Χ µε την τιµή 500016 και προκύπτει η ενεργή διεύθυνση, η οποία είναι το 500516. Εποµένως, ο µικροεπεξεργαστής µεταφέρει το περιεχόµενο της θέσης µνήµης 500516, δηλαδή την τιµή ΒΒ16, στο συσσωρευτή.
Kωδικόςv λειτουργίας Έντελο Kαταχωρητήςv δείκτη
+
Eνεργήv διεύθυνση
•v •v •
∆εδοµένα
™¯‹Ì· 2.14
Η δεικτοδοτηµένη προσπέλαση χρησιµοποιείται συνήθως, όταν θέλουµε να επεξεργαστούµε πολλά δεδοµένα, τα οποία είναι σε διαδοχικές θέσεις µνήµης, όπως π.χ. στην περίπτωση ενός µονοδιάστατου πίνακα. Εάν θέλουµε να φορτώσουµε στο συσσωρευτή το n–οστό στοιχείο του πίνακα, τότε χρησιµοποιούµε την εντολή LOAD $BASE,X, όπου BASE είναι η αρχή του πίνακα (δηλαδή η διεύθυνση του πρώτου στοιχείου του πίνακα), ενώ στον καταχωρητή Χ έχουµε αποθηκεύσει την τιµή n.
Η δεικτοδοτηµένη διευθυνσιοδότηση (indexed)
• ∆ιευθυνσιοδότηση µηδενικής σελίδας (zero page addressing) Η διευθυνσιοδότηση µηδενικής σελίδας είναι όµοια µε την απόλυτη προσπέλαση µε τη µόνη διαφορά ότι το µέγεθος του εντέλου είναι ένα byte και όχι δύο. Με τον τρόπο αυτό µπορούµε να διευθυνσιοδοτήσουµε µόνο τα πρώτα 256 bytes της κύριας µνήµης, δηλαδή αυτά που έχουν διεύθυνση από 000016 έως και 00FF16. Στο σχήµα 2.15 φαίνεται σχηµατικά η διευθυνσιοδότηση µηδενικής σελίδας. Παράδειγµα τέτοιας εντολής είναι η LDX $CC του 6502, η οποία µεταφέρει το περιεχόµενο της διεύθυνσης 00CC16 της µνήµης στον καταχωρητή X.
Kωδικόςv λειτουργίας ∆ιεύθυνσηv µνήµηςv (1 byte) •v •v •
∆εδοµένα Eνεργήv διεύθυνση
™¯‹Ì· 2.15
Η διευθυνσιοδότηση µηδενικής σελίδας (zero page)
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
58
Ανάλογα µε το σχεδιασµό τους, οι διάφοροι µικροεπεξεργαστές είναι πιθανό να διαθέτουν και κάποιους επιπλέον τρόπους διευθυνσιοδότησης, οι οποίοι δεν αναφέρθηκαν παραπάνω. Επίσης, επειδή δεν υπάρχει κάποια κοινή ονοµατολογία για τους τρόπους διευθυνσιοδότησης, πολλές φορές αναφέρονται µε διαφορετικά ονόµατα και µπορεί να προκαλέσουν σύγχυση. Για παράδειγµα στο µικροεπεξεργαστή 6800 της Motorola, η διευθυνσιοδότηση µηδενικής σελίδας αναφέρεται από τον κατασκευαστή σαν απόλυτη διευθυνσιοδότηση (direct addressing), ενώ η απόλυτη διευθυνσιοδότηση αναφέρεται σαν extended addressing. Στο υπόλοιπο κείµενο θα χρησιµοποιούµε τις ονοµασίες τις οποίες ορίσαµε παραπάνω, ενώ θα κάνουµε αναφορά όπου υπάρχουν διαφοροποιήσεις από τους κατασκευαστές στα ονόµατα των τρόπων προσπέλασης. Στο παράδειγµα 2.4 µπορείτε να βρείτε παραδείγµατα ορισµένων τρόπων διευθυνσιοδότησης που διαθέτει ο µικροεπεξεργαστής 6800. ™‡ÓÔ„Ë Οι διαφορετικοί τρόποι που χρησιµοποιούµε σε ένα µικροεπεξεργαστή για να δηλώσουµε εάν τα δεδοµένα που απαιτεί µία εντολή ακολουθούν την εντολή ή βρίσκονται σε κάποιο καταχωρητή ή θέση µνήµης ονοµάζονται τρόποι διευθυνσιοδότησης ή τρόποι προσπέλασης. Η κάθε εντολή περιέχει στον κωδικό λειτουργίας της και τον τρόπο διευθυνσιοδότησής της. Οι µικροεπεξεργαστές περιέχουν συνήθως όλους ή τους περισσότερους από τους παρακάτω τρόπους διευθυνσιοδότησης: (α) υπονοούµενη διευθυνσιόδοτηση, (β) άµεση, (γ) απευθείας ή απόλυτη, (δ) σχετική, (ε) έµµεση, (στ) δεικτοδοτηµένη και (ζ) διευθυνσιόδοτηση µηδενικής σελίδας. ¶·Ú¿‰ÂÈÁÌ· 2.4 Από το βιβλίο του κατασκευαστή βλέπουµε πως ο µικροεπεξεργαστής Motorola 6800 διαθέτει την εντολή ADD_A, η οποία προσθέτει το περιεχόµενο του καταχωρητή Α µε το περιεχόµενο της θέσης µνήµης και αποθηκεύει το αποτέλεσµα στον καταχωρητή Α. Θεωρούµε ότι ο καταχωρητής Α περιέχει την τιµή 0Α16, η θέση µνήµης 200016 την τιµή Α016, η θέση µνήµης 00DF16 την τιµή 0616 και η θέση µνήµης 100216 την τιµή 1616 και ο καταχωρητής δείκτη Χ την τιµή 100016.
2.5 Oπ Tƒ√¶√π ¢π∂À£À¡™π√¢√∆∏™∏™ ∆ø¡ ∂¡∆√§ø¡
Όνοµα εντολής
59
Κώδικας λειτουργίας
Τρόπος προσπέλασης
8B
Άµεση διευθυνσιοδότηση
9B
∆ιευθυνσιοδότηση µηδενικής σελίδας
AB
∆εικτοδοτηµένη διευθυνσιοδότηση
BB
Απόλυτη διευθυνσιοδότηση
ADD_A
Βρείτε ποιό θα είναι το περιεχόµενο του καταχωρητή Α µετά την εκτέλεση των παρακάτω εντολών.: (α) ADD_A #32 (κωδικός λειτουργίας εντολής 8Β) (β) ADD_A $DF (κωδικός λειτουργίας εντολής 9Β) (γ) ADD_A $2000 (κωδικός λειτουργίας εντολής ΒΒ) (δ) ADD_A $02,X (κωδικός λειτουργίας εντολής ΑΒ)
∞¿ÓÙËÛË ¶·Ú·‰Â›ÁÌ·ÙÔ˜ 2.4 Η πρώτη εντολή, όπως µπορούµε να καταλάβουµε από τον κωδικό λειτουργίας της, χρησιµοποιεί την άµεση διευθυνσιοδότηση εποµένως το έντελο (#32) περιέχει τα δεδοµένα τα οποία θα προστεθούν στον καταχωρητή. Μετά την εκτέλεση της εντολής ο καταχωρητής Α θα περιέχει την τιµή 3C 16 ( 0A16+3216 = 3C16 ). Η εντολή αποθηκεύεται στην κύρια µνήµη σε δύο bytes, ένα για τον κωδικό λειτουργίας 8B16 και ένα για τα δεδοµένα 3216 όπως φαίνεται και στο σχήµα 2.16
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
60
3000
8B
A
3001
32
0A
•v •v •
™¯‹Ì· 2.16
A +
3001
3C
32
Παράδειγµα άµεσης διευθυνσιοδότησης
00DF
06 •v •v •
3000
9B
3001
DF
A 0A
A +
10
00DF 06
™¯‹Ì· 2.17
Παράδειγµα διευθυνσιοδότησης µηδενικής σελίδας
H εντολή ADD_A $DF χρησιµοποιεί προσπέλαση µηδενικής σελίδας. Εποµένως, το έντελο περιέχει την θέση µνήµης στην οποία βρίσκονται τα δεδοµένα που θέλουµε να προσθέσουµε. Εκτελώντας την εντολή, ο µικροεπεξεργαστής θα προσπελάσει τη θέση µνήµης 00DF16, θα προσθέσει τα περιεχόµενά της µε αυτά του καταχωρητή A και θα αποθηκεύσει την τιµή 1016 στον καταχωρητή Α (αφού 0Α16+0616 = 1016). Η εντολή (βλέπε σχήµα 2.17) αποθηκεύεται στην κύρια µνήµη σε δύο bytes, ένα για τον κωδικό λειτουργίας 9B16 και ένα για τη διεύθυνση DF16 (το 00 εννοείται). H τρίτη εντολή (ADD_A $2000) χρησιµοποιεί απόλυτη προσπέλαση. Εποµένως, το έντελο περιέχει τη θέση µνήµης στην οποία βρίσκονται τα δεδοµένα που θέλουµε να προσθέσουµε. Εκτελώντας την εντολή, ο µικροεπεξεργαστής θα προσπελάσει τη θέση µνήµης 200016, θα προσθέσει τα περιεχόµενά της µε αυτά του καταχωρητή A και θα αποθηκεύσει την τιµή ΑΑ16
2.5 Oπ Tƒ√¶√π ¢π∂À£À¡™π√¢√∆∏™∏™ ∆ø¡ ∂¡∆√§ø¡
61
στον καταχωρητή Α (αφού 0Α16+Α016 = ΑΑ16). Η εντολή αποθηκεύεται στην κύρια µνήµη σε τρία bytes, ένα για τον κωδικό λειτουργίας ΒB16 και δύο για τη διεύθυνση 200016. Παρατηρήστε ότι πρώτα αποθηκεύεται το λιγότερο σηµαντικό byte της διεύθυνσης (00) και στη συνέχεια αποθηκεύεται το περισσότερο σηµαντικό byte (20).
2000
A0 •v •v •
3000 3001 3002
A 0A
BB 00 20
A +
2000
AA
A0
•v •v •
™¯‹Ì· 2.18
Παράδειγµα απόλυτης διευθυνσιοδότησης
1002
A0 •v •v •
3000 3001
AB 02 •v •v •
A +
0A +
1000 X
A
1002
20
16 ™¯‹Ì· 2.19
Παράδειγµα δεικτοδοτηµένης διευθυνσιοδότησης
Η εντολή ADD_A $02,X χρησιµοποιεί δεικτοδοτηµένη προσπέλαση. Στις εντολές αυτές ο 6800 χρησιµοποιεί ως καταχωρητή δείκτη τον 16–bit κατα-
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
62
χωρητή Χ στον οποίο προσθέτει το έντελο για να σχηµατίσει την ενεργή διεύθυνση. Στην συγκεκριµένη εντολή προστίθεται το περιεχόµενο του καταχωρητή Χ µε το 0216 και προκύπτει η ενεργή διεύθυνση 1002 16, η οποία περιέχει την τιµή 1616. Η τιµή αυτή προστίθεται µε την τιµή 0Α16 και το αποτέλεσµα (1616+0Α16 = 2016) αποθηκεύεται πίσω στον καταχωρητή Α. Η εντολή αποθηκεύεται στην κύρια µνήµη σε δύο bytes, ένα για τον κωδικό λειτουργίας ΑB16 και ένα για την τιµή 0216, η οποία προστίθεται στον καταχωρητή δείκτη, όπως µπορείτε να παρατηρήσετε και στο σχήµα 2.19. ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.11
Ποιες µεθόδους διευθυνσιοδότησης συναντάµε συνήθως στους µικροεπεξεργαστές;
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.12
Ποια µέθοδος διευθυνσιοδότησης χρησιµοποιείται στις εντολές διακλάδωσης;
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 2.13
Ο µικροεπεξεργαστής 6502 έχει µία εντολή αποθήκευσης του περιεχοµένου του συσσωρευτή Α σε µία θέση µνήµης. Μεταξύ άλλων διαθέτει τους παρακάτω τρόπους διευθυνσιοδότησης: Όνοµα εντολής
STA
Κώδικας λειτουργίας
Τρόπος προσπέλασης
8D
Απόλυτη διευθυνσιοδότηση
85
∆ιευθυνσιοδότηση µηδενικής σελίδας
92
Έµµεση διευθυνσιοδότηση
Υποθέτουµε ότι το περιεχόµενο της θέσης µνήµης 323216 είναι η τιµή 121216. Σε ποια θέση µνήµης θα αποθηκευτεί το περιεχόµενο του Α εκτελώντας καθεµία από τις παρακάτω εντολές; (α) STA $1234 (κωδικός λειτουργίας 8D16)
2 . 6 T π ¶ ƒ ∂ ¶ ∂ π ¡ ∞ ° ¡ ø ƒ π ∑ √ À ª ∂ ° π ∞ ∂ ¡ ∞ ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏
(β) STA $34 (κωδικός λειτουργίας 8516) (γ) STA $3232 (κωδικός λειτουργίας 9216)
2.6 TÈ Ú¤ÂÈ Ó· ÁÓˆÚ›˙Ô˘Ì ÁÈ· ¤Ó· ÌÈÎÚÔÂÂÍÂÚÁ·ÛÙ‹
Τελειώνοντας το κεφάλαιο αυτό θα πρέπει να συνοψίσουµε τα πράγµατα, τα οποία θα πρέπει να προσέχουµε, καθώς µελετάµε κάποιον µικροεπεξεργαστή. Ένα από τα πρώτα σηµεία στα οποία θα πρέπει να σταθεί η προσοχή µας είναι στην αρχιτεκτονική του µικροεπεξεργαστή. Η οργάνωση της µονάδας ελέγχου και της αριθµητικής και λογικής µονάδας µας δείχνει την φιλοσοφία σχεδιασµού του. Το σύνολο των ακροδεκτών του µας προδίδει τις γραµµές διευθύνσεων/δεδοµένων/ελέγχου, ενώ το σύνολο και η µορφή των καταχωρητών µας προϊδεάζει για το είδος και τη µορφή των εντολών του. Η κατανόηση των γραµµών δεδοµένων/διευθύνσεων/ελέγχου είναι απαραίτητη για να µπορέσουµε να καταλάβουµε µε ποιο τρόπο µπορεί να συνδεθεί ο µικροεπεξεργαστής µε τη µνήµη ή διάφορες µονάδες εισόδου/εξόδου. Το επόµενο σηµείο είναι ο χρονισµός του µικροεπεξεργαστή, δηλαδή τα εξωτερικά εκείνα κυκλώµατα που απαιτεί για τη γεννήτρια χρονισµού του. Επίσης, απαιτείται η γνώση του χρονισµού των διαφόρων εντολών και του τρόπου µε τον οποίο αυτές χωρίζονται σε κύκλους µηχανής και ρολογιού. Τα διαγράµµατα χρονισµού των διαφόρων εντολών είναι απαραίτητα ώστε να µπορέσουµε να διασυνδέσουµε το µικροεπεξεργαστή µε περιφερειακές συσκευές ή µνήµες. Ενδιαφέρον παρουσιάζει επίσης ο τρόπος µε τον οποίο ο µικροεπεξεργαστής µπορεί να διασυνδεθεί µε αργές µνήµες (δηλαδή µνήµες που απαιτούν µεγαλύτερο χρόνο για να ανταποκριθούν σε αυτό που ζητάει ο µικροεπεξεργαστής – εγγραφή ή ανάγνωση – από το χρόνο που καθορίζει η περίοδος χρονισµού του µικροεπεξεργαστή). Σε ένα µικροϋπολογιστικό σύστηµα, θα πρέπει οι εξωτερικές συσκευές να έχουν κάποιο τρόπο να ζητήσουν την «προσοχή» του µικροεπεξεργαστή. Ο τρόπος αυτός είναι τα σήµατα διακοπής που διαθέτουν οι µικροεπεξεργαστές. Οι εξωτερικές συσκευές, χρησιµοποιώντας τα σήµατα αυτά, διακόπτουν το πρόγραµµα που εκτελείται εκείνη την στιγµή. Ο µικροεπεξεργαστής τότε εκτελεί τη ρουτίνα εξυπηρέτησης της διακοπής (ένα µικρό πρόγραµµα που βρίσκεται αποθηκευµένο σε κάποιες θέσεις στη µνήµη) µε την οποία εξυ-
63
64
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
πηρετεί την εξωτερική συσκευή και στη συνέχεια συνεχίζει µε την εκτέλεση του προγράµµατος. Η γνώση των σηµάτων διακοπής ενός µικροεπεξεργαστή και του τρόπου µε τον οποίο αυτός εξυπηρετεί τις διακοπές είναι απαραίτητα στο σχεδιασµό ενός µικροϋπολογιστικού συστήµατος. Επίσης, σε πολλά συστήµατα θα βρείτε λειτουργίες απευθείας προσπέλασης της µνήµης (Direct Memory Access – DMA). Ο κάθε µικροεπεξεργαστής παρέχει τρόπους (µε κάποιους ακροδέκτες ή κάποιες εντολές) µε τους οποίους απελευθερώνει τους διαύλους του συστήµατος ώστε να µπορεί να τους χρησιµοποιήσει µία εξωτερική συσκευή για να µεταφέρει δεδοµένα µεταξύ αυτής και της µνήµης. Οι µεταφορές αυτές γίνονται χωρίς τη βοήθεια του µικροεπεξεργαστή και γι’ αυτό η λειτουργία αυτή ονοµάζεται λειτουργία απευθείας προσπέλασης της µνήµης. Μελετώντας διάφορους µικροεπεξεργαστές, θα βρείτε πολλούς και διαφορετικούς τρόπους µε τους οποίους µπορείτε να σχεδιάσετε µία τέτοια λειτουργία. Απαραίτητη για τη συγγραφή προγραµµάτων για ένα συγκεκριµένο επεξεργαστή είναι επίσης η γνώση και η κατανόηση του συνόλου εντολών που αυτός διαθέτει, καθώς και των διαφόρων τρόπων διευθυνσιοδότησης που διαθέτει η κάθε εντολή. Η γνώση των παραπάνω βοηθάει τον προγραµµατιστή ώστε να παράγει προγράµµατα µικρά σε µέγεθος και µε µεγάλη ταχύτητα εκτέλεσης, καθώς εκµεταλλεύεται τα ιδιαίτερα χαρακτηριστικά της κάθε εντολής. Τέλος απαιτείται η γνώση του ελάχιστου αριθµού των κυκλωµάτων που απαιτούνται ώστε ένας µικροεπεξεργαστής να αποτελέσει ένα µικροϋπολογιστικό σύστηµα, καθώς και γνώση των διαφόρων συσκευών υποστήριξης, οι οποίες τον συνοδεύουν. Οι συσκευές υποστήριξης είναι όλα εκείνα τα ολοκληρωµένα κυκλώµατα, τα οποία µπορούν να διασυνδεθούν χωρίς ιδιαίτερη δυσκολία σε κάποιο επεξεργαστή και καλύπτουν πολλές περιπτώσεις εφαρµογών, όπως κυκλώµατα µνήµης RAM, ROM, PROM, κυκλώµατα διαχείρισης διακοπών, κυκλώµατα απεικόνισης δεδοµένων σε κάποιο display κ.ο.κ. Προφανώς, ο κάθε µικροεπεξεργαστής διαθέτει και τη δική του οικογένεια συσκευών υποστήριξης και σπανίως ολοκληρωµένα κυκλώµατα µιας οικογένειας µπορούν να χρησιµοποιηθούν µε άλλο µικροεπεξεργαστή. Το πλήθος των ολοκληρωµένων κυκλωµάτων σε µία οικογένεια έχει αποδειχτεί πολλές φορές στο παρελθόν καθοριστικός παράγοντας για την εµπορική ή όχι επιτυχία του µικροεπεξεργαστή, καθώς η ύπαρξη λίγων συσκευών υποστήριξης για έναν πολύ καλό µικροεπεξεργαστή µετριάζει τη χρήση του, ενώ ανάποδα η ύπαρξη πολλών συσκευών υποστήριξης µπορεί να δώσει µεγάλη
™YNOæH
ώθηση σε ένα µέτριο µικροεπεξεργαστή, καθώς αυτός µπορεί να χρησιµοποιηθεί σε πολλές εφαρµογές. ™‡ÓÔ„Ë Ο µικροεπεξεργαστής αποτελεί την καρδιά ενός µικροϋπολογιστικού συστήµατος. Με τη βοήθεια του προγράµµατος, που βρίσκεται στην κύρια µνήµη, ελέγχει τα διάφορα τµήµατα του συστήµατος και συντονίζει τις λειτουργίες τους. Ο µικροεπεξεργαστής αποτελείται από τρία τµήµατα: (α) Tην αριθµητική και λογική µονάδα, που είναι υπεύθυνη για τις αριθµητικές και λογικές πράξεις. Τα κυκλώµατα, που συναντάµε στη µονάδα αυτή, είναι αθροιστές, συγκριτές, ολισθητές, µονάδες και µονάδες λογικής επεξεργασίας, µε βάση τα οποία µπορεί να γίνει οποιαδήποτε πράξη, καθώς ακόµα και οι πιο σύνθετες πράξεις (πολ/σµοί, διαιρέσεις, κ.ά.) αναλύονται σε συνδυασµό των βασικών πράξεων. (β) Tη µονάδα ελέγχου, η οποία είναι υπεύθυνη για τη σωστή λειτουργία του µικροεπεξεργαστή και παρέχει λειτουργίες χρονισµού, αποκωδικοποίησης των εντολών, καθώς αυτές µεταφέρονται σε αυτόν από τη µνήµη, και ενεργοποίησης των κατάλληλων τµηµάτων του µικροεπεξεργαστή σε κάθε χρονική στιγµή. (γ) Tους διάφορους καταχωρητές, οι οποίοι χρησιµοποιούνται είτε για τις λειτουργίες της αριθµητικής και λογικής µονάδας (συσσωρευτής, καταχωρητές γενικού σκοπού, καταχωρητής κατάστασης επεξεργαστή) είτε χρησιµοποιούνται ως ειδικοί καταχωρητές και επιτελούν συγκεκριµένη λειτουργία, π.χ. ο καταχωρητής εντολών περιέχει τον κώδικα λειτουργίας της εντολής καθώς αυτή αποκωδικοποιείται, ο µετρητής προγράµµατος περιέχει τη διεύθυνση της κύριας µνήµης, όπου υπάρχει η επόµενη προς εκτέλεση εντολή κ.ο.κ. Κατά την εκτέλεση µίας εντολής, ο µετρητής προγράµµατος µεταφέρει τη διεύθυνση της κύριας µνήµης, στην οποία είναι αποθηκευµένη η εντολή στις γραµµές διευθύνσεων. Με τη βοήθεια των σηµάτων ελέγχου, η εντολή µεταφέρεται στο µικροεπεξεργαστή µέσω των γραµµών δεδοµένων και αποθηκεύεται στον καταχωρητή εντολής, όπου και αποκωδικοποιείται. Με την αποκωδικοποίηση η µονάδα ελέγχου ενεργοποιεί τα κατάλληλα κυκλώµατα για την εκτέλεση της εντολής. Εάν η εντολή απαιτεί την ανάγνωση ή εγγραφή δεδο-
65
66
K E º A § A I O 2 : O π M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
µένων στη µνήµη, τότε αυτό γίνεται µε τη βοήθεια των τριών διαύλων (διευθύνσεων, δεδοµένων και ελέγχου). Όλοι οι µικροεπεξεργαστές λειτουργούν µε βάση κάποιους παλµούς, οι οποίοι προκύπτουν από το ρολόι του συστήµατος. H χρονική διάρκεια ενός παλµού αποτελεί τον κύκλο ρολογιού. Ο χρόνος εκτέλεσης µιας εντολής ονοµάζεται κύκλος εντολής, ενώ ο χρόνος εκτέλεσης µιας βασικής λειτουργίας (ανάγνωση ή εγγραφή στην µνήµη, προσκόµιση εντολής) ονοµάζεται κύκλος µηχανής. Οι διάφορες εντολές, τις οποίες µπορεί να εκτελέσει ένας µικροεπεξεργαστής, αποτελούν το σύνολο εντολών του. Οι εντολές χωρίζονται σε οµάδες ανάλογα µε τη λειτουργία που επιτελούν. Έτσι µπορούµε να διακρίνουµε: (α) αριθµητικές εντολές, όπως εντολές πρόσθεσης ή αύξησης, (β)λογικές εντολές, όπως εντολές λογικού ΚΑΙ/Ή/ΟΧΙ ή εντολές ολίσθησης, (γ) εντολές µετακίνησης δεδοµένων, όπως εντολές µεταφοράς δεδοµένων από τη µνήµη σε καταχωρητές ή και το ανάποδο, (δ) εντολές διακλάδωσης, οι οποίες µπορούν να αλλάξουν τη σειριακή εκτέλεση των εντολών είτε πάντα (εντολές διακλάδωσης χωρίς συνθήκη) είτε µε βάση το αποτέλεσµα µιας συνθήκης (εντολές διακλάδωσης υπό συνθήκη), (ε) εντολές κλήσης και επιστροφής από υπορουτίνα, όπως οι εντολές CALL και RETURN, και (στ) γενικές εντολές, όπως οι εντολές διαχείρισης σωρού και η εντολή NOP. Η κάθε εντολή χρησιµοποιεί διάφορους τρόπους διευθυνσιοδότησης για να προσδιορίσει εάν τα δεδοµένα, που χρειάζεται, ακολουθούν την εντολή ή βρίσκονται σε κάποιο καταχωρητή ή θέση µνήµης. Έτσι, σε κάθε µικροεπεξεργαστή, ανάλογα µε τη φιλοσοφία σχεδιασµού του, συναντάµε διάφoρους τρόπους διευθυνσιοδότησης. Οι πιο συνηθισµένοι είναι (α) η υπονοούµενη διευθυνσιοδότηση, (β) η άµεση διευθυνσιοδότηση, (γ) η απευθείας ή απόλυτη διευθυνσιοδότηση, (δ) η σχετική διευθυνσιοδότηση, (ε) η έµµεση διευθυνσιοδότηση, (στ) η δεικτοδοτηµένη διευθυνσιοδότηση και (ζ) η διευθυνσιοδότηση µηδενικής σελίδας. Για να γνωρίσουµε κάποιο µικροεπεξεργαστή, θα πρέπει να µελετήσουµε την αρχιτεκτονική του, τους ακροδέκτες, που διαθέτει, και τη λειτουργία του καθενός από αυτούς, το χρονισµό των διαφόρων σηµάτων ελέγχου, τον τρόπο µε τον οποίο χωρίζονται οι εντολές σε κύκλους ρολογιού/µηχανής/εντολής, το
B I B § I O ° PA º I A
σύνολο των εντολών και τους διάφορους τρόπους προσπέλασης, τα ελάχιστα κυκλώµατα, που απαιτούνται, ώστε να είναι λειτουργικός και φυσικά τις διάφορες συσκευές υποστήριξης, µε τις οποίες µπορεί να διασυνδεθεί. BÈ‚ÏÈÔÁÚ·Ê›·
Τώρα που τελειώσατε την ανάγνωση του δεύτερου κεφαλαίου, καλό είναι να διαθέσετε κάποιον επιπλέον χρόνο για να µελετήσετε τα παρακάτω κείµενα: 1. Theory and Problems of Microprocessor Fundamentals, Schaum’s Outline Series, Roger L. Tokheim, Κεφάλαιο 4, Ενότητα 4.4. Η ενότητα αυτή αναφέρει τις κατηγορίες εντολών ενός µικροεπεξεργαστή και διαθέτει πολλές ερωτήσεις και απαντήσεις, που θα σας βοηθήσουν να εξασκηθείτε. 2. Theory and Problems of Microprocessor Fundamentals, Schaum’s Outline Series, Roger L. Tokheim, Κεφάλαιο 6. Ακόµα περισσότερο θα σας βοηθήσει να εξασκηθείτε το κεφάλαιο 6. Το κεφάλαιο αυτό, οργανωµένο σε µικρές ενότητες, αναλύει την κάθε κατηγορία εντολών ξεχωριστά καθώς και τους τρόπους διευθυνσιοδότησής τους και διαθέτει σχηµατικά παραδείγµατα και πολλές ερωτήσεις µαζί µε τις απαντήσεις τους. Εάν πάλι δεν µπορείτε να διαθέσετε πολύ χρόνο, µην ανησυχείτε. Στα επόµενα κεφάλαια θα αναλύσουµε παραδείγµατα γνωστών µικροεπεξεργαστών και θα κατανοήσετε καλύτερα τις βασικές αρχές τους (άλλωστε ο καλύτερος τρόπος εκµάθησης της θεωρίας είναι µέσα από παραδείγµατα).
67
∫
O MÈÎÚÔÂÂÍÂÚÁ·ÛÙ‹˜ Intel 8080/8085 ™ÎÔfi˜ Μελετώντας αυτό το κεφάλαιο θα γνωρίσετε έναν από τους πρώτους, αλλά πολύ δηµοφιλή µέχρι πριν από µερικά χρόνια µικροεπεξεργαστή, και συγκεκριµένα τον 8080/8085 της Intel. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα ολοκληρώσετε τη µελέτη αυτού του κεφαλαίου, θα είστε σε θέση να: • εξηγήσετε τη λειτουργία του καθενός από τους σαράντα ακροδέκτες του µικροεπεξεργαστή 8080. • ορίσετε το πλήθος των γραµµών των τριών διαύλων επικοινωνίας, που διαθέτει. • απαριθµήσετε το πλήθος των καταχωρητών του µικροεπεξεργαστή και να αναφέρετε τη λειτουργία του καθενός από αυτούς. • χωρίσετε µία εντολή του 8080 σε κύκλους µηχανής και ρολογιού. • αναφέρετε τις λειτουργίες, που επιτελούνται σε κάθε κύκλο ρολογιού του πρώτου κύκλου µηχανής µιας εντολής, καθώς και το χρονισµό των σηµάτων ελέγχου. • αναφέρετε τον τρόπο, µε τον οποίο ο µικροεπεξεργαστής ενηµερώνει τις υπόλοιπες συσκευές του συστήµατος για τον κύκλο µηχανής, που θα ακολουθήσει. • διακρίνετε τρεις ειδικές καταστάσεις λειτουργίας του 8080. • περιγράψετε τον τρόπο, µε τον οποίο ικανοποιούνται οι αιτήσεις διακοπής της λειτουργίας του µικροεπεξεργαστή. • ορίσετε τους τρόπους διευθυνσιοδότησης, που υπάρχουν στο σύνολο των εντολών του. • περιγράψετε τις δύο συσκευές υποστήριξης, που συµπληρώνουν τον 8080. • καταγράψετε τις διαφορές µεταξύ του 8080 και του 8085. ŒÓÓÔȘ ÎÏÂȉȿ • Γεννήτρια Ρολογιού
• Intel 8080/8085
• ∆ιαχείριση ∆ιακοπών
• Καταστάσεις WAIT/HOLD/HALT
• Ελεγκτής Συστήµατος
• Κύκλος προσκόµισης εντολής
3 ∂
º
∞
§
∞
π
√
70
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
• Πολύπλεξη διαύλου διευθύνσεων / δεδοµένων
• Σήµατα Κατάστασης
∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Μέχρι τώρα µιλούσαµε γενικά για τους µικροεπεξεργαστές και τις αρχές λειτουργίας τους. Στο κεφάλαιο αυτό εξετάζουµε πρώτα το µικροεπεξεργαστή Intel 8080 και µετά τον Intel 8085. Οι δύο αυτοί επεξεργαστές ανήκουν στην ίδια οικογένεια, έχουν παρόµοια φιλοσοφία σχεδιασµού και ελάχιστες διαφορές. Στο µεγαλύτερο µέρος του κεφαλαίου αναφερόµαστε στον 8080, ενώ στο τέλος θα αναφέρουµε τις διαφορές του µε τον 8085. Οι έννοιες, οι οποίες χρησιµοποιούνται, έχουν αναλυθεί στα προηγούµενα δύο κεφάλαια και γι’ αυτό δεν θα πρέπει να έχετε πρόβληµα στην κατανόησή τους. Προσοχή θα πρέπει να δώσετε στις ενότητες 3.3, 3.4 και 3.6, που αναφέρουν την ακολουθία καταστάσεων των διαφόρων σηµάτων ελέγχου κατά τη διάρκεια ενός κύκλου µηχανής, τις καταστάσεις αναµονής και τον τρόπο αντιµετώπισης των αιτήσεων διακοπής, καθώς αναφέρονται σε έννοιες, τις οποίες δεν είχαµε τη δυνατότητα να εξετάσουµε µε λεπτοµέρεια έως τώρα. Η ενότητα 3.1 είναι σχετικά µεγάλη σε µέγεθος. Έχει όµως χωριστεί σε τρεις ανεξάρτητες υποενότητες, ώστε να µπορείτε να τη µελετήσετε τµηµατικά.
3.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 8080
3.1 H AÚ¯ÈÙÂÎÙÔÓÈ΋ ÙÔ˘ 8080
Ο 8080 είναι από τους πιο διαδεδοµένους µικροεπεξεργαστές των 8 δυαδικών ψηφίων. Πρωτοεµφανίστηκε από την Intel και αποτελεί τον άµεσο απόγονο του 8008, ο οποίος είχε κατασκευαστεί για να διευκολύνει την επεξεργασία δεδοµένων σε τερµατικές συσκευές. Ο 8080 σχεδιάστηκε σε µια εποχή, όπου η τεχνολογία των µικροεπεξεργαστών έκανε τα πρώτα της βήµατα. Το γεγονός αυτό δικαιολογεί πολλά πρωτόγονα χαρακτηριστικά του, όπως τα τρία επίπεδα τάσης τροφοδοσίας και το γεγονός ότι τα κυκλώµατα χρονισµού δεν περιλαµβάνονται στο ίδιο ολοκληρωµένο κύκλωµα. Η µεγάλη επιτυχία, που γνώρισε, οφείλεται κατά πολύ σε θέµατα χαµηλού κόστους και διαθεσιµότητας πολλών συσκευών υποστήριξής του. Μια βελτιωµένη έκδοση του 8080 είναι ο 8085. Σε πολλές περιπτώσεις οι συσκευές υποστήριξης του 8080 είναι δυνατό να χρησιµοποιηθούν µε την CPU του 8085, αλλά είναι απίθανο να χρησιµοποιηθούν οι συσκευές υποστήριξης του 8085 µε τον 8080. Ο 8080 έχει περισσότερες συσκευές υποστήριξης από κάθε άλλο µικροεπεξεργαστή των 8 δυαδικών ψηφίων. Μερικές από αυτές τις συσκευές υποστήριξης είναι ειδικές για τον 8080, αλλά στην πλειοψηφία τους µπορούν να χρησιµοποιηθούν µε οποιοδήποτε µικροεπεξεργαστή. 3.1.1 °ÂÓÈο ¯·Ú·ÎÙËÚÈÛÙÈο
Ο 8080 κατασκευάστηκε αρχικά από την Intel, αλλά αργότερα παράχθηκε και από άλλους κατασκευαστές. Τα κυριότερα χαρακτηριστικά του είναι τα εξής: • Aπαιτεί τρία επίπεδα τάσης τροφοδοσίας (–5V, +5V, +12V). • Tα κυκλώµατα χρονισµού και διασύνδεσης των διαύλων του µε µνήµες και άλλες συσκευές εισόδου/εξόδου δεν εµπεριέχονται στο ολοκληρωµένο κύκλωµά του. • Xρησιµοποιεί TTL–συµβατά επίπεδα δυναµικού. • ∆ιαθέτει απλό τρόπο χειρισµού των σηµάτων διακοπής. • ∆ιαθέτει 72 εντολές του ενός, δύο ή τριών bytes. • O χρόνος εκτέλεσης των εντολών, µε σήµα χρονισµού περιόδου 500 ns (δηλαδή συχνότητας 2 MHz), ποικίλλει από 2 µsec µέχρι 9 µsec.
71
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
72
Οι βασικές λειτουργίες του µικροεπεξεργαστή φαίνονται στο σχήµα 3.1. Ο 8080 αποτελείται από µια αριθµητική και λογική µονάδα, µια µονάδα ελέγχου και αρκετούς καταχωρητές. Η επικοινωνία του µε τις υπόλοιπες µονάδες του συστήµατος γίνεται µέσα από τους τρεις δίαυλους επικοινωνίας.
8080
Λογικήv ρολογιού
8224 8228
Λογικήv εξυπηρέτησηςv διακοπών
Aριθµητική καιv λογική µονάδα
Συσσωρευτής
Kαταχωρητήςv εντολών Mονάδα ελέγχου
Kαταχωρητές
Kαταχωρητήςv σωρού Λογικήv διασύνδεσης µεv τους διαύλους
Mετρητήςv προγράµµατος
∆ίαυλοι του συστήµατος
™¯‹Ì· 3.1
Το λειτουργικό διάγραµµα του 8080
Ο δίαυλος διευθύνσεων (Α15 – Α0) αποτελείται από 16 γραµµές και χρησιµεύει για τη διακίνηση διευθύνσεων µεταξύ του µικροεπεξεργαστή και των µονάδων µνήµης και εισόδου/εξόδου. Οι µεγέθους 16 bits διευθύνσεις µνήµης επιτρέπουν στον 8080 την απευθείας διευθυνσιοδότηση µνήµης χωρητικότητας 64 KB. Η είσοδος/έξοδος γίνεται µέσω ειδικών εντολών. Οι εντολές αυτές περιέχουν µια 8–bit διεύθυνση, που ονοµάζεται διεύθυνση συσκευής ή αριθµός συσκευής (device number ή device address) και τοποθετείται ταυτόχρονα τόσο στις 8 πιο σηµαντικές (Α15 – Α8) όσο και στις 8 λιγότερο σηµαντικές (Α7 – Α0)
3.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 8080
γραµµές του διαύλου διευθύνσεων. Με τον αριθµό συσκευής ο χρήστης µπορεί να επιλέξει µέχρι 256 πόρτες εισόδου ή 256 πόρτες εξόδου. Όλα τα δεδοµένα αποθηκεύονται στη µνήµη σαν αριθµοί των 8 δυαδικών ψηφίων και διατηρούν τη µορφή τους αυτή σε όλες τις µετακινήσεις τους πάνω στο δίαυλο δεδοµένων. Ο 8080 εκπέµπει 6 διαφορετικά σήµατα χρονισµού και ελέγχου (τα SYNC, DBIN, WAIT, WR~, HLDA, INTE), ενώ δέχεται σαν είσοδο τέσσερα σήµατα (τα READY, HOLD, INT, RESET). Για τη δηµιουργία όλων των απαραίτητων σηµάτων ελέγχου, που απαιτεί ένα πλήρες σύστηµα, χρησιµοποιούνται συνήθως επιπρόσθετα εξωτερικά κυκλώµατα, που συνδυάζουν τα 6 αυτά σήµατα ελέγχου µε τα σήµατα κατάστασης της εκτελούµενης εντολής. Όλα αυτά τα σήµατα ελέγχου αποτελούν το δίαυλο ελέγχου. Ο δίαυλος δεδοµένων (D7 – D0), πάνω στον οποίο κινούνται τα δεδοµένα, είναι διπλής κατεύθυνσης και αποτελείται από 8 γραµµές. Ο δίαυλος αυτός λειτουργεί µε τέτοιο τρόπο (πολυπλεξία) ώστε κάποιες χρονικές στιγµές να µεταφέρει αντί δεδοµένων σήµατα κατάστασης της εκτελούµενης εντολής (status). Η αριθµητική και λογική µονάδα εκτελεί όλες τις αριθµητικές, λογικές και πράξεις ολίσθησης. Το αποτέλεσµα της κάθε πράξης µεταβιβάζεται είτε στον εξωτερικό δίαυλο δεδοµένων είτε στο συσσωρευτή. Επίσης τροφοδοτεί τον καταχωρητή κατάστασης επεξεργασίας ανάλογα µε το αποτέλεσµα των πράξεων ή διαβάζει τα περιεχόµενα του καταχωρητή κατάστασης επεξεργαστή και εκτελεί ή δεν εκτελεί µια λογική πράξη ανάλογα µε την τιµή της αντίστοιχης σηµαίας κατάστασης. Οι αριθµητικές δυνατότητες της αριθµητικής και λογικής µονάδας περιλαµβάνουν δυαδικές πράξεις των 8 bit (χρησιµοποιεί το συµπλήρωµα ως προς 2 για τους αρνητικούς αριθµούς), δεκαδικές πράξεις (πράξεις αριθµών σε παράσταση BCD), καθώς και πράξεις διπλής ακρίβειας. 3.1.2 OÈ Î·Ù·¯ˆÚËÙ¤˜ ÙÔ˘ 8080
Η υπολογιστική δύναµη ενός µικροεπεξεργαστή εξαρτάται άµεσα από τον αριθµό και από την οργάνωση των καταχωρητών, που διαθέτει. Ο 8080 περιέχει επτά 8–bit καταχωρητές, ένα 16–bit µετρητή προγράµµατος, ένα 16–bit καταχωρητή δείκτη σωρού και έναν καταχωρητή κατάστασης επεξεργαστή.
73
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
74
PSW
Kαταχωρητής κατάστασης επεξεργαστή
A
Συσσωρευτής
B
C
Kαταχωρητές γενικού σκοπού
D
E
Kαταχωρητές γενικού σκοπού
H
L
Kαταχωρητές γενικού σκοπού
SP
Kαταχωρητής δείκτη σωρού
PC
Mετρητής προγράµµατος
Kαταχωρητής κατάστασης επεξεργαστή ™¯‹Ì· 3.2
Οι καταχωρητές του 8080
b7
b6
S
Z
b5
b4 AC
b3
b2 P
b1
b0 C
Ο µετρητής προγράµµατος (PC) περιέχει την 16–bit διεύθυνση µνήµης της επόµενης εντολής του προγράµµατος και αυξάνεται αυτόµατα µε κάθε προσκόµιση µιας εντολής από τη µνήµη. Ο καταχωρητής δείκτη σωρού χρησιµοποιείται για να διευθυνσιοδοτεί τη µνήµη σωρού, δηλαδή την περιοχή της µνήµης, η οποία χρησιµοποιείται για προσωρινή αποθήκευση ενδιάµεσων αποτελεσµάτων. Οι 6 καταχωρητές γενικού σκοπού µπορούν να χρησιµοποιηθούν είτε σαν έξι καταχωρητές των 8–bit (B, C, D, E, H, L) είτε σαν τρεις καταχωρητές των 16–bit δηλαδή (BC, DE, HL). O καταχωρητής κατάστασης επεξεργαστή περιέχει τους ακόλουθους δείκτες ή αλλιώς σηµαίες κατάστασης (status flags): µηδενικού αποτελέσµατος (Zero – Z), πρόσηµου (Sign – S), ισοτιµίας (Parity – P), βοηθητικού κρατούµενου (Auxiliary Carry – AC) και κρατούµενου (Carry – C). Η έννοια των σηµαιών κατάστασης είναι ήδη γνωστή. Εάν π.χ. εκτελέσουµε µια εντολή πρόσθεσης και το αποτέλεσµα είναι αρνητικός αριθµός, τότε η σηµαία κατάστασης πρόσηµου θα πάρει την τιµή 1. Σε αντίθετη περίπτωση θα πάρει την τιµή 0. Η σηµαία ισοτιµίας παίρνει την τιµή 1, όταν το αποτέλεσµα της τελευταίας πράξης έχει άρτια ισοτιµία, ενώ παίρνει την τιµή 0, όταν το αποτέλεσµα έχει περιττή ισοτιµία.
3.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 8080
75
Το βοηθητικό κρατούµενο χρησιµοποιείται στην εκτέλεση δεκαδικών αριθµητικών πράξεων, που βρίσκονται σε κωδικοποίηση BCD. Επειδή σε ένα byte αποθηκεύονται δύο BCD αριθµοί (αφού ο κάθε αριθµός απαιτεί 4 δυαδικά ψηφία), απαιτείται η διαφύλαξη του κρατούµενου, που πιθανόν δηµιουργείται από τα δεξιότερα 4 bits του αποτελέσµατος. Η σηµαία AC ισούται µε την τιµή του κρατούµενου αυτού. 3.1.3 AÎÚÔ‰¤ÎÙ˜ Î·È Û‹Ì·Ù· A10v (VSS)GNDv D4v D5v D6v D7v D3v D2v D1v D0v (VBB)–5Vv RESETv HOLDv INTv Φ2v INTEv DBINv WR~v SYNCv (VCC)+5V
1v 2v 3v 4v 5v 6v 7v 8v 9v 10v 8080 11v 12v 13v 14v 15v 16v 17v 18v 19v 20
40v 39v 38v 37v 36v 35v 34v 33v 32v 31v 30v 29v 28v 27v 26v 25v 24v 23v 22v 21
A11v A14v A13v A12v A15v A9v A8v A7v A6v A5v A4v A3v +12V(VDD)v A2v A1v A0v WAITv READYv Φ1v HLDA
™¯‹Ì· 3.3
Τα σήµατα του 8080
Ακροδέκτης
Περιγραφή
Τύπος
Α0–Α15
Γραµµές διευθύνσεων
Έξοδος, τριών καταστάσεων
D0–D7
Γραµµές δεδοµένων
∆ιπλής κατεύθυνσης, τριών καταστάσεων
SYNC
∆είκτης πρώτου κύκλου ρολογιού
Έξοδος
DBIN
Σήµα εισόδου δεδοµένων
Έξοδος
READY
Είσοδος δεδοµένων έτοιµη
Είσοδος
WAIT
Κατάσταση αναµονής
Έξοδος
WR~
Σήµα εξόδου δεδοµένων
Έξοδος
HOLD
Εισαγωγή σε κατάσταση HOLD
Είσοδος
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
76
HLDA
Αναγνώριση κατάστασης HOLD
Έξοδος
INT
Σήµα διακοπής
Είσοδος
INTE
Ενεργοποίηση διακοπής
Έξοδος
RESET
Σήµα αρχικοποίησης
Είσοδος
Φ1, Φ2
Σήµατα χρονισµού
Είσοδος
VSS, VDD, VCC, VBB
Σήµατα τροφοδοσίας και γείωσης
Το ολοκληρωµένο κύκλωµα του 8080 αποτελείται από 40 ακροδέκτες όπως φαίνεται στο σχήµα 3.3. Oι ακροδέκτες του 8080 λειτουργούν ως εξής • Α0–Α15: Aποτελούν το δίαυλο διευθύνσεων. Είναι τριών καταστάσεων, δηλαδή οι γραµµές του µπορούν να µεταβούν σε λογική τιµή “1”, σε λογική τιµή “0” και σε κατάσταση υψηλής εµπέδησης. Η κατάσταση υψηλής εµπέδησης χρησιµοποιείται για να απελευθερώνει ο µικροεπεξεργαστής το δίαυλο διευθύνσεων, ώστε να µπορούν οι υπόλοιπες συσκευές του συστήµατος (µνήµη, συσκευές εισόδου/εξόδου) να το χρησιµοποιήσουν για µεταφορά δεδοµένων. • D0–D7: Aποτελούν το δίαυλο δεδοµένων, µε τη βοήθεια του οποίου ο επεξεργαστής αφενός ενηµερώνει τις περιφερειακές συσκευές για το είδος του κύκλου µηχανής, που θα ακολουθήσει (δίνοντας τα σήµατα κατάστασής του) και αφετέρου µετακινεί δεδοµένα προς και από τις περιφερειακές συσκευές. Όπως ο δίαυλος διευθύνσεων, έτσι και ο δίαυλος δεδοµένων είναι τριών καταστάσεων. • GND, +5V, –5V, +12V: Oι ακροδέκτες τροφοδοσίας του ολοκληρωµένου κυκλώµατος. • Φ1, Φ2: Eίναι οι είσοδοι χρονισµού του ολοκληρωµένου κυκλώµατος. Ο χρονισµός αυτός συνήθως επιτυγχάνεται µε τη χρήση της 8224 γεννήτριας χρονισµού. • READY, WAIT: Όταν η µνήµη λάβει ένα σήµα ανάγνωσης/εγγραφής και δεν µπορεί να ανταποκριθεί εντός µιας περιόδου ρολογιού, θέτει τη γραµµή READY στο λογική κατάσταση “0” και έτσι ειδοποιεί τον 8080 ότι πρέπει να αδρανήσει προσωρινά. Αυτός αντιδρά θέτοντας το WAIT στη λογική κατάσταση “1”. Όταν η µνήµη ανταποκριθεί, τότε ο 8080 απελευθερώνει τη γραµµή WAIT και ο κύκλος της εντολής προχωρεί.
3.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 8080
• HOLD, HLDA: Η λειτουργία του 8080 µπορεί να σταµατήσει µεταξύ του τέλους εκτέλεσης µιας εντολής και την αρχή εκτέλεσης της επόµενης εντολής, εάν θέσουµε τη γραµµή HOLD σε λογική κατάσταση “1”. Ο 8080 τότε οδηγεί τους διαύλους δεδοµένων και διευθύνσεων σε κατάσταση υψηλής εµπέδησης και θέτει σε λογική κατάσταση “1” το σήµα HLDA. Με τον τρόπο αυτό µπορούν εξωτερικές συσκευές να πάρουν τον έλεγχο των διαύλων και να υλοποιήσουν λειτουργίες µεταφοράς δεδοµένων (λειτουργίες DMA). • RESET: Είναι ένα σήµα που για να εκτελεστεί θα πρέπει να παραµείνει στη λογική κατάσταση “1” για τουλάχιστον τρεις περιόδους ρολογιού. Κατά τη διάρκεια αυτών των περιόδων µηδενίζονται όλοι οι καταχωρητές (εκτός του καταχωρητή κατάστασης επεξεργαστή), γεγονός που οδηγεί το µικροεπεξεργαστή να ξεκινήσει µε την εκτέλεση της εντολής που βρίσκεται στη θέση 000016 της µνήµης. • DBIN, WR~: Kαθορίζουν την κατάσταση του διαύλου δεδοµένων. Όταν το DBIN είναι στη λογική κατάσταση “1”, θα πρέπει να τοποθετηθούν δεδοµένα στο δίαυλο δεδοµένων από κάποια µνήµη ή συσκευή εισόδου/εξόδου. Όταν το WR~ είναι στη λογική κατάσταση “0”, τότε ο επεξεργαστής εξάγει δεδοµένα στο δίαυλο δεδοµένων. • INT, INTE: Ο επεξεργαστής 8080 έχει δύο γραµµές ελέγχου διακοπής, τις INT και INTE. Μια εξωτερική συσκευή απαιτεί διακοπή εισάγοντας το INT στη λογική κατάσταση “1”. Ο 8080 χρησιµοποιεί το INTE για να δείξει εάν υπάρχει δυνατότητα εξυπηρέτησης διακοπής ή όχι. • SYNC: Είναι ενεργό για µια περίοδο ρολογιού και σηµατοδοτεί το τέλος του πρώτου (Τ1) και την αρχή του δεύτερου (Τ2) κύκλου ρολογιού.
77
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
78
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.1
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.2
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.3
Ποιους καταχωρητές διαθέτει ο µικροεπεξεργαστής 8080;
Έστω ότι ο συσσωρευτής Α έχει την τιµή 60 16. Εκτελώντας την εντολή ADD_A του µικροεπεξεργαστή, η οποία προσθέτει τα περιεχόµενα του Α στον Α και αποθηκεύει το αποτέλεσµα πίσω στον Α (δηλαδή διπλασιάζει την τιµή του Α), ποιες θα είναι οι τιµές των σηµαιών κατάστασης του καταχωρητή κατάστασης επεξεργαστή;
Απαριθµήστε τα σήµατα ελέγχου που περιέχει ο 8080.
3.2 K‡ÎÏÔÈ Ì˯·Ó‹˜ Î·È Û‹Ì·Ù· ηٿÛÙ·Û˘
Κάθε εντολή του 8080 εκτελείται ως µια ακολουθία από κύκλους µηχανής, οι οποίοι διαιρούνται σε κύκλους ρολογιού. Κάθε κύκλος εντολής αποτελείται από έναν έως πέντε κύκλους µηχανής, που συµβολίζονται µε MC1, MC2, MC3, MC4, MC5. Για κάθε byte, που φέρνει ο επεξεργαστής από τη µνήµη, χρειάζεται έναν κύκλο µηχανής. Ο αριθµός των κύκλων µηχανής εξαρτάται από το είδος της εντολής. Μερικές εντολές χρειάζονται µόνο έναν κύκλο µηχανής για να φέρουν όλη την εντολή στο µικροεπεξεργαστή. Άλλες εντολές, στις οποίες γράφονται ή διαβάζονται δεδοµένα από τη µνήµη ή τις εξωτερικές συσκευές, χρειάζονται περισσότερους κύκλους µηχανής. Ο 8080 οδηγείται από δύο µη επικαλυπτόµενα σήµατα χρονισµού, Φ1 και Φ2, τα οποία παρέχουν στο µικροεπεξεργαστή τον απαραίτητο χρονισµό. Τα σήµατα χρονισµού χρησιµοποιούνται για να παράγουν έναν κύκλο µηχανής, ο οποίος αποτελείται από 5 κύκλους ρολογιού, που συµβολίζονται Τ1, Τ2, Τ3, Τ4, Τ5, όπως φαίνεται στο σχήµα 3.4. Το σήµα SYNC καθορίζει την πρώτη περίοδο ρολογιού κάθε κύκλου µηχανής, στην οποία ο 8080 εξάγει στο δίαυλο δεδοµένων τα σήµατα κατάστασης.
3 . 2 K À ∫ § √ π ª ∏ Ã ∞ ¡ ∏ ™ ∫ ∞ π ™ ∏ ª ∞∆ ∞ ∫ ∞ ∆ ∞ ™ ∆ ∞ ™ ∏ ™
T1
T2
79
T3
Φ1 Φ2 SYNC Kατάσταση
∆ίαυλοςv δεδοµένων
™¯‹Ì· 3.4 Όταν τα σήµατα Φ1 και SYNC είναι στην λογική v κατάσταση 1 τότε µια εξωτερική συσκευή µπορεί να v διαβάσει τα σήµατα κατάστασης από τον δίαυλο δεδοµένων
Κύκλος µηχανής και χρονισµός στον 8080
MC1 T1
T2
T3
T4
T5 Aύξηση του µετρητήv προγράµµατος Eσωτερικές λειτουργίες Προσκόµιση εντολής
T1
T2
T3
T4
T5
Eσωτερικές λειτουργίες Λειτουργίες αναφοράς στη µνήµη
Οι κύκλοι ρολογιού Τ1, Τ2, Τ3 κάθε κύκλου µηχανής χρησιµοποιούνται για λειτουργίες αναφοράς στη µνήµη. Κατά τη διάρκεια των κύκλων Τ4, Τ5 εκτελούνται εσωτερικές λειτουργίες στο µικροεπεξεργαστή. Αυτοί οι δύο κύκλοι ρολογιού µπορούν να χρησιµοποιηθούν και από κάποιο εξωτερικό κύκλωµα για έναν περιορισµένο αριθµό λειτουργιών, όπου δεν εµπλέκεται ο µικροεπεξεργαστής.
™¯‹Ì· 3.5
Κύκλοι µηχανής και λειτουργίες
80
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
Οι πρώτοι τρεις κύκλοι ρολογιού του πρώτου κύκλου µηχανής χρησιµοποιούνται για τη µεταφορά µιας εντολής από τη µνήµη και για την αποθήκευσή της στον καταχωρητή εντολών του 8080. O πρώτος κύκλος µηχανής (MC1) έχει πάντα τουλάχιστον 4 κύκλους ρολογιού µε το µετρητή προγράµµατος (PC) να αυξάνεται κατά τη διάρκεια του Τ4 (βλέπε σχήµα 3.5). Ο 8080 καθορίζει τις λειτουργίες, που θα συµβούν κατά τη διάρκεια ενός κύκλου µηχανής, εξάγοντας τα σήµατα κατάστασης (status) στο δίαυλο δεδοµένων κατά τον κύκλο ρολογιού Τ2. Τα εξωτερικά κυκλώµατα χρησιµοποιούν τα σήµατα SYNC και Φ1 στο ξεκίνηµα του κύκλου Τ2 για να διαβάσουν τις γραµµές του δίαυλου δεδοµένων. Οι λειτουργίες που καθορίζει είναι οι εξής: • INTA – D0 bit: Με αυτό το σήµα κατάστασης ο επεξεργαστής αναγνωρίζει ότι έχει λάβει αίτηση διακοπής, θέτοντας το bit D0 στην τιµή 1. Το σήµα θα πρέπει να χρησιµοποιηθεί ώστε να τοποθετηθεί εντολή στο δίαυλο δεδοµένων, όταν το DBIN είναι ενεργό, δηλαδή σε λογική τιµή “1”. • WO~ – D1 bit: Όταν το WO~ είναι ίσο µε την τιµή 0, τότε η τρέχουσα λειτουργία του κύκλου µηχανής του επεξεργαστή είναι εγγραφή στη µνήµη ή λειτουργία εξόδου. Όταν το WO~ είναι ίσο µε την τιµή 1, τότε θα εκτελεστεί λειτουργία ανάγνωσης µνήµης, λειτουργία εισόδου ή διακοπή ή στάση. • STACK – D2 bit: Όταν το σήµα STACK είναι ίσο µε την τιµή 1, τότε ο δίαυλος διευθύνσεων έχει πάρει τη διεύθυνση του σωρού από το δείκτη σωρού (SP). • HLTA – D3 bit: Είναι το σήµα που εµφανίζεται, όταν εκτελείται η εντολή στάσης HALT. • OUT – D4 bit: Όταν το OUT είναι ίσο µε την τιµή 1, ο δίαυλος διευθύνσεων έχει τη διεύθυνση µιας εξωτερικής συσκευής και θα µεταφέρει σε αυτήν ένα byte δεδοµένων, όταν ενεργοποιηθεί το σήµα WR~. • M1 – D5 bit: Όταν το Μ1 είναι ίσο µε την τιµή 1, τότε ο 8080 είναι στον κύκλο προσκόµισης του πρώτου byte µιας εντολής, δηλαδή του κωδικού λειτουργίας. • INP – D6 bit: ∆ηλώνει ότι ο δίαυλος διευθύνσεων έχει τη διεύθυνση µιας συσκευής εισόδου και ότι θα µεταφερθεί από αυτήν ένα byte δεδοµένων στο δίαυλο δεδοµένων, όταν ενεργοποιηθεί το σήµα DBIN. • MEMR – D7 bit: ∆ηλώνει ότι ο δίαυλος δεδοµένων θα χρησιµοποιηθεί
3 . 2 K À ∫ § √ π ª ∏ Ã ∞ ¡ ∏ ™ ∫ ∞ π ™ ∏ ª ∞∆ ∞ ∫ ∞ ∆ ∞ ™ ∆ ∞ ™ ∏ ™
81
για ανάγνωση δεδοµένων από τη µνήµη. Υπάρχουν δέκα διαφορετικά είδη κύκλων µηχανής, που µπορούν να εµφανιστούν σε έναν κύκλο εντολής. Οι συνδυασµοί των οκτώ σηµάτων κατάστασης ορίζουν τα δέκα είδη των κύκλων µηχανής, όπως φαίνεται στο σχήµα 3.6.
ΙΝΤΑ (D0)
WO~ (D1)
STACK HLTA (D2) (D3)
OUT (D4)
M1 (D5)
INP (D6)
MEMR (D7)
Προσκόµιση εντολής
0
1
0
0
0
1
0
1
Ανάγνωση µνήµης
0
1
0
0
0
0
0
1
Εγγραφή µνήµης
0
0
0
0
0
0
0
0
Ανάγνωση σωρού
0
1
1
0
0
0
0
1
Εγγραφή σωρού
0
0
1
0
0
0
0
0
Ανάγνωση εισόδου/εξόδου
0
1
0
0
0
0
1
0
Εγγραφή εισόδου/εξόδου
0
0
0
0
1
0
0
0
Αναγνώριση διακοπής
1
1
0
0
0
1
0
0
Αναγνώριση HALT
0
1
0
1
0
0
0
1
Αναγνώριση διακοπής εν µέσω HALT
1
1
0
1
0
1
0
0
™¯‹Ì· 3.6
Οι κύκλοι µηχανής του 8080
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
82
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.4
Από πόσους κύκλους µηχανής αποτελείται ένας κύκλος εντολής; Από τι εξαρτάται το πλήθος των κύκλων µηχανής; Βρείτε το πλήθος των κύκλων µηχανής για τις παρακάτω εντολές: (α)ANA_register: Λογικό ΚΑΙ µεταξύ του συσσωρευτή Α και ενός καταχωρητή (εντολή ενός byte). Το αποτέλεσµα αποθηκεύεται πίσω στο συσσωρευτή. (β) ANA_Memory: Λογικό ΚΑΙ µεταξύ του συσσωρευτή Α και µίας θέσης µνήµης (εντολή ενός byte – η διεύθυνση της θέσης µνήµης βρίσκεται στον καταχωρητή HL). Το αποτέλεσµα αποθηκεύεται πίσω στο συσσωρευτή. (γ) ANI_data: Λογικό ΚΑΙ µεταξύ του συσσωρευτή Α και µιας τιµής (εντολή δύο bytes – η τιµή ακολουθεί τον κωδικό λειτουργίας της εντολής). Το αποτέλεσµα αποθηκεύεται πίσω στο συσσωρευτή.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.5
Τι είναι τα σήµατα κατάστασης του 8080; Ποια η χρησιµότητά τους;
3.3 H ¯ÚÔÓÈ΋ ·ÎÔÏÔ˘ı›· ÂÎÙ¤ÏÂÛ˘ ÂÓÙÔÏÒÓ
™ÎÔfi˜ Στο κεφάλαιο 2 µάθαµε ότι κάθε εντολή χωρίζεται σε κύκλους µηχανής και ότι κάθε κύκλος µηχανής χωρίζεται σε κύκλους ρολογιού. Σκοπός της ενότητας αυτής είναι να γνωρίσετε τον τρόπο, µε τον οποίο αλληλεπιδρούν τα διάφορα σήµατα ελέγχου µε τους διαύλους διευθύνσεων και δεδοµένων σε κάθε κύκλο µηχανής και κάθε κύκλο ρολογιού. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Με την ολοκλήρωση της ενότητας αυτής θα είστε σε θέση να χωρίσετε κάθε εντολή του 8080/8085 σε κύκλους µηχανής και κύκλους ρολογιού και να περιγράψετε τον τρόπο, µε τον οποίο µεταβάλλονται τα σήµατα χρονισµού σε κάθε περίπτωση.
3.3 H Ã√¡π∫∏ ∞∫√§√À£π∞ ∂∫∆∂§∂™∏™ ∂¡∆√§ø¡
83
∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Επειδή δεν έχουµε ασχοληθεί έως τώρα µε κάτι παρόµοιο, είναι επόµενο ότι θα συναντήσετε δυσκολίες κατά τη µελέτη της ενότητας αυτής. Μην απογοητεύεστε όµως. ∆ιαβάστε προσεκτικά το κείµενο, χρησιµοποιείτε ως οδηγό σας το αντίστοιχο σχήµα (σχήµα 3.7 ή σχήµα 3.8) και γρήγορα θα κατανοήσετε την αντίστοιχη ύλη. Ο κύκλος προσκόµισης εντολής αρχίζει πάντα µε τον πρώτο κύκλο ρολογιού Τ1 του πρώτου κύκλου µηχανής Μ1. Για µια απλή εντολή ενός byte απαιτείται ένας µόνο κύκλος µηχανής Μ1, που αποτελείται από τις τέσσερις καταστάσεις Τ1, Τ2, Τ3, Τ4. Η χρονική ακολουθία των σηµάτων για τον κύκλο Μ1, που γίνεται ανάκληση ενός byte εντολής, δίνονται στο σχήµα 3.7.
T1
T2
T3
T4
T5
Φ1 Φ2 SYNC READY
WAIT DBIN WR Di
Eντολή
Kατάσταση
Floating
A0 – A15 Aνάγνωση σηµάτωνv κατάστασης από v εξωτερική συσκευή Προσκόµιση v εντολής
™¯‹Ì· 3.7 Ο κύκλος προσκόµισης εντολής
84
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
Κατάσταση Τ1: Κατά την κατάσταση Τ1, το θετικό µέτωπο του σήµατος Φ2 προκαλεί την ενεργοποίηση του σήµατος SYNC. Το σήµα αυτό, που εκπέµπει ο 8080, ειδοποιεί όλες τις άλλες µονάδες του συστήµατος ότι ο µικροεπεξεργαστής βρίσκεται στην πρώτη κατάσταση Τ1 του κύκλου µηχανής. Το σήµα WAIT είναι στη λογική κατάσταση “0”, ενώ το WR~ στη λογική κατάσταση “1”, αφού είµαστε σε κύκλο προσκόµισης εντολής (µην ξεχνάτε ότι ένας κύκλος προσκόµισης εντολής δεν παύει να είναι ένας κύκλος ανάγνωσης από τη µνήµη µε την ιδιαιτερότητα ότι τα δεδοµένα που µεταφέρονται στο δίαυλο δεδοµένων αποτελούν τον κωδικό λειτουργίας µίας εντολής). Κατά τη διάρκεια του Τ1 ο 8080 χρησιµοποιεί το δίαυλο δεδοµένων για να στείλει τη λέξη κατάστασης, µε την οποία ενηµερώνει όλες τις υπόλοιπες µονάδες του συστήµατος για το είδος του κύκλου µηχανής, που αρχίζει. Στην περίπτωση του κύκλου µηχανής για την ανάκληση εντολής, η αντίστοιχη λέξη κατάστασης έχει την τιµή 1 στα δυαδικά ψηφία WO~ (D1), M1 (D5) και MEMR (D7). Το θετικό µέτωπο του Φ2 είναι αυτό που προκαλεί την τοποθέτηση της λέξης κατάστασης πάνω στο δίαυλο δεδοµένων. Επιπλέον, ο µικροεπεξεργαστής τοποθετεί τα περιεχόµενα του µετρητή προγράµµατος στο δίαυλο διευθύνσεων. Οι γραµµές του δίαυλου διευθύνσεων διατηρούν τις λογικές τιµές, που παίρνουν, µέχρις ότου εµφανιστεί ο πρώτος παλµός Φ2 µετά την κατάσταση Τ3. Αυτό παρέχει στο µικροεπεξεργαστή αρκετό χρόνο ώστε να µπορέσει να διαβάσει το byte εντολής, που του στέλνει η µνήµη. Κατάσταση Τ2: Τα εξωτερικά κυκλώµατα διαβάζουν τη λέξη κατάστασης που έστειλε ο µικροεπεξεργαστής, όταν τα σήµατα Φ1 και SYNC έχουν τη λογική τιµή “1”. Ας υποθέσουµε εδώ ότι κατά τη διάρκεια της Τ2 το εξωτερικό σήµα READY, που δέχεται ο µικροεπεξεργαστής, έχει τη λογική τιµή “1”. Αυτό σηµαίνει ότι η µνήµη έχει αρκετό χρόνο ώστε να προσπελάσει και να εξάγει τον κωδικό λειτουργίας της εντολής. Με τη θετική ακµή του Φ2 παύει το σήµα SYNC, ενεργοποιείται το σήµα DBIN και αποσύρεται η λέξη κατάστασης από το δίαυλο δεδοµένων. Το σήµα DBIN εξάγεται από το µικροεπεξεργαστή για να ειδοποιήσει τις άλλες µονάδες του συστήµατος ότι ο δίαυλος δεδοµένων είναι τώρα ελεύθερος να δεχθεί από αυτές δεδοµένα. Η διάρκεια του σήµατος DBIN είναι ακριβώς ένας κύκλος ρολογιού.
3.3 H Ã√¡π∫∏ ∞∫√§√À£π∞ ∂∫∆∂§∂™∏™ ∂¡∆√§ø¡
Στην περίπτωση της προσκόµισης εντολής, η µνήµη θα πρέπει να τοποθετήσει στο δίαυλο δεδοµένων τον κωδικό λειτουργίας της εντολής που έχει εξάγει. Κατάσταση Τ3: Εφόσον το READY ήταν σε λογική τιµή “1”, το σύστηµα θα εισέλθει πλέον στην κατάσταση Τ3. Οι συγκεκριµένες λειτουργίες, που θα εκτελεστούν κατά τη διάρκεια της κατάστασης αυτής, εξαρτώνται από τον αντίστοιχο κύκλο µηχανής. Εφόσον εδώ πρόκειται για τον πρώτο κύκλο Μ1 ανάκλησης εντολής, ο µικροεπεξεργαστής διαβάζει τη λέξη, που βρίσκεται στο δίαυλο δεδοµένων, την τοποθετεί στο καταχωρητή εντολών και την αποκωδικοποιεί. Η θετική ακµή του Φ2 οδηγεί το δίαυλο δεδοµένων σε κατάσταση υψηλής εµπέδησης και το σήµα DBIN στη λογική τιµή “0”. Κατάσταση Τ4: Στη θετική ακµή του Φ2 στον κύκλο ρολογιού Τ4, ο δίαυλος διευθύνσεων επανέρχεται σε κατάσταση υψηλής εµπέδησης, ενώ ο µικροεπεξεργαστής αυξάνει εσωτερικά το µετρητή προγράµµατος Στην περίπτωση κύκλου µηχανής ανάγνωσης από τη µνήµη, η ακολουθία χρονισµού είναι ίδια µε αυτή του σχήµατος 3.7 (δηλ. όσον αφορά στα εξωτερικά λογικά κυκλώµατα, δεν υπάρχει διαφορά µεταξύ αυτών των δύο κύκλων µηχανής) εκτός ότι στην περίπτωση αυτή το σήµα κατάστασης Μ1 (D5 στο δίαυλο δεδοµένων) έχει την τιµή 0 και τα δεδοµένα, που µεταφέρονται στο δίαυλο δεδοµένων, δεν αποτελούν τον κωδικό λειτουργίας κάποιας εντολής. Στην περίπτωση κύκλου µηχανής εγγραφής στη µνήµη, η ακολουθία χρονισµού παραµένει όπως πριν, µε τη µόνη διαφορά ότι εξάγεται διαφορετική λέξη κατάστασης στη διάρκεια του Τ1, το σήµα DBIN παραµένει συνέχεια στη λογική τιµή “0”, ενώ το σήµα WR~ βρίσκεται στη λογική τιµή “0” για όλο το Τ3. (βλέπε σχήµα 3.8)
85
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
86
T1
T2
T3
T4
T5
Φ1 Φ2 SYNC READY
WAIT DBFL WR Di
Kατάσταση
∆εδοµένα
Floating Floating
A0 – A15 Aνάγνωση σηµάτωνv κατάστασης από v εξωτερική συσκευή ™¯‹Ì· 3.8 Ο κύκλος µηχανής εγγραφής
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.6
Περιγράψτε τη χρονική ακολουθία εκτέλεσης ενός κύκλου µηχανής εγγραφής στη µνήµη.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.7
Σε ποιες χρονικές περιόδους κατά τη διάρκεια ενός κύκλου προσκόµισης εντολής είναι το σήµα DBIN ενεργό (δηλαδή στη λογική “1”);
3 . 4 O π ∫ ∞ ∆ ∞ ™ ∆ ∞ ™ ∂ π ™ WA I T, H O L D ∫ ∞ π H A L T
3.4 OÈ Î·Ù·ÛÙ¿ÛÂȘ Wait, Hold Î·È Halt
™ÎÔfi˜ Ο κάθε επεξεργαστής διαθέτει διάφορες ειδικές καταστάσεις λειτουργίας. Οι WAIT, HOLD και HALT είναι καταστάσεις του 8080, που χρησιµοποιούνται για λειτουργίες, όπως διασύνδεση αργών µνηµών και αναστολή επεξεργασίας του µικροεπεξεργαστή. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Τελειώνοντας τη µελέτη αυτής της ενότητας, θα είστε σε θέση να διακρίνετε τα ιδιαίτερα χαρακτηριστικά των τριών διαφορετικών τρόπων λειτουργίας του 8080. ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Μελετήστε την ενότητα δίνοντας µεγαλύτερη προσοχή στο κείµενο και λιγότερη στις ακολουθίες χρονισµού, που εµφανίζονται στα σχήµατα. Προσπαθήστε να καταλάβετε σε ποια χρονική στιγµή µπορεί να εµφανιστεί η κάθε κατάσταση και ποια µπορεί να είναι η χρησιµότητά της.
Η κατάσταση WAIT µπορεί να συµβεί µεταξύ των Τ2 και Τ3 κύκλων ρολογιού. Χρησιµοποιείται για να καθυστερούµε τον 8080 όσο χρόνο χρειάζεται η µνήµη ή µια εξωτερική συσκευή για να ανταποκριθεί σε µια εγγραφή ή ανάγνωση. Εάν κατά τη διάρκεια του Φ2 του Τ2 το σήµα READY είναι στη λογική τιµή “0”, τότε ο 8080 εισέρχεται σε κατάσταση WAIT. Αυτή αποτελείται από ακέραιους κύκλους ρολογιού, στους οποίους ο 8080 διατηρεί τα σήµατα εξόδου του. Η κατάσταση WAIT τελειώνει, όταν το READY πάρει τη λογική τιµή “1”. Ο µικροεπεξεργαστής ελέγχει τη γραµµή READY κάθε φορά κατά τη διάρκεια του Φ2 και, εάν αυτή έχει την τιµή 1, τότε εισέρχεται στο επόµενο κύκλο ρολογιού (Τ3) µε τον επόµενο παλµό Φ1.
87
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
88
T1
T2
WAIT
T3
T4
T5
T3
T4
T5
Φ1 Φ2 SYNC READY
WAIT WR
™¯‹Ì· 3.9 Ένας κύκλος µηχανής µε χρήση κατάστασης WAIT
T1
T2
Φ1 Φ2 SYNC READY
WAIT WR Kατάσταση ™¯‹Ì· 3.10 Ένας κύκλος µηχανής χωρίς κατάσταση WAIT
3 . 4 O π ∫ ∞ ∆ ∞ ™ ∆ ∞ ™ ∂ π ™ WA I T, H O L D ∫ ∞ π H A L T
Με τον τρόπο αυτό µπορούµε να διασυνδέσουµε οποιαδήποτε µνήµη ή άλλη συσκευή στον 8080. Εάν αυτή είναι αρκετά γρήγορη και µπορεί να ανταποκρίνεται σε ρυθµούς ίδιους µε αυτούς του µικροεπεξεργαστή, τότε διατηρούµε το σήµα READY συνεχώς στη λογική τιµή 1. Εάν η µνήµη είναι πιο αργή από το µικροεπεξεργαστή, τότε εισάγουµε ακέραιο αριθµό από καταστάσεις WAIT για να καθυστερήσουµε τον 8080. Έχοντας συζητήσει την κατάσταση WAIT θα πρέπει να δούµε και δύο άλλες καταστάσεις, κατά τη διάρκεια των οποίων δεν εκτελούνται εντολές. Αυτές είναι οι καταστάσεις HOLD και HALT. Όπως έχουµε ήδη αναφέρει, η κατάσταση WAIT αποτελείται από ένα ή περισσότερους κύκλους ρολογιού, οι οποίοι εισάγονται µέσα στον κύκλο µηχανής, δίνοντας χρόνο στο εξωτερικό κύκλωµα να ανταποκριθεί σε µια προσπέλαση µνήµης. Έτσι, η κατάσταση WAIT αποτελείται από ένα µη καθορισµένο αριθµό περιόδων ρολογιού, οι οποίες συµβαίνουν µέσα σε έναν κύκλο µηχανής και αυξάνουν τη διάρκεια αυτού του κύκλου µηχανής. Ο σκοπός της κατάστασης HOLD είναι να οδηγεί σε κατάσταση υψηλής εµπέδησης τους διαύλους του µικροεπεξεργαστή έτσι ώστε εξωτερικές συσκευές να υλοποιούν λειτουργίες µεταφοράς δεδοµένων χωρίς τη βοήθειά του. Έτσι, η κατάσταση HOLD αποτελείται από οποιονδήποτε αριθµό κύκλων ρολογιού, οι οποίοι βρίσκονται µεταξύ δύο κύκλων µηχανής, που καθορίζουν το τέλος της εκτέλεσης µιας εντολής και την αρχή εκτέλεσης της επόµενης εντολής. Η κατάσταση HOLD µπορεί να θεωρηθεί σαν µια περίοδος χρόνου, όπου ο µικροεπεξεργαστής µπαίνει σε µια κατάσταση αναστολής δραστηριότητας. H κατάσταση HALT προκύπτει από την εκτέλεση της εντολής HALT. Κατά τη διάρκεια της κατάστασης HALT ο 8080 απλώς µετράει χρόνο. Ο σκοπός της κατάστασης αυτής είναι να καθορίσει εκείνα τα διαστήµατα χρόνου, στα οποία δεν υπάρχει τίποτα να εκτελέσει ο µικροεπεξεργαστής. Είναι λογικό να υποθέσουµε ότι ο µικροεπεξεργαστής δεν µπορεί να ξέρει πόσο θα διαρκέσει ο χρόνος αυτός µέχρι να έχει κάτι να κάνει. Η κατάσταση HALT τελειώνει, όταν κάποια εξωτερική συσκευή απαιτήσει εξυπηρέτηση από το µικροεπεξεργαστή. Έτσι, ο 8080 απαιτεί µια αίτηση διακοπής για να τελειώσει η κατάσταση HALT.
89
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
90
T1
Kύκλος µηχανής N T2 T3
TW
Kύκλος µηχανής N + 1 TW TW TW
TW
T1
Φ1 Φ2 SYNC HOLD HLDA
Kατάσταση HOLD
WR D0 – D7
Kατάσταση
∆εδοµένα
Floating
A0 – A15 ™¯‹Ì· 3.11 Η κατάσταση HOLD µετά από κύκλο ανάγνωσης
Η κατάσταση HOLD ξεκινά µε το σήµα εισόδου HOLD. Ο 8080 αναγνωρίζει το ξεκίνηµα της κατάστασης HOLD εξάγοντας το HLDA στη λογική τιµή “1”. Αν η αίτηση του HOLD γίνει κατά τη διάρκεια µίας ανάγνωσης ή λειτουργίας εισόδου, τότε το HLDA τοποθετείται στη λογική τιµή “1” στη θετική ακµή του Φ1 στο Τ3. Αν το HOLD απαιτηθεί κατά τη διάρκεια µίας εγγραφής ή λειτουργίας εξόδου, τότε το HLDA τοποθετείται στη λογική τιµή “1” στη θετική ακµή του Φ1 στον κύκλο, που ακολουθεί το Τ3. Aς σηµειωθεί ότι ακόµα και αν το HOLD έχει αναγνωριστεί και η HOLD κατάσταση έχει ξεκινήσει στο Τ3, κατά τη διάρκεια ενός κύκλου µηχανής ανάγνωσης από τη µνήµη ή µονάδα εισόδου/εξόδου, τα δεδοµένα θα πρέπει να κρατηθούν σταθερά στο δίαυλο δεδοµένων µέχρι τη θετική ακµή του Φ2 στο Τ3. Αυτό γιατί οι λειτουργίες του µικροεπεξεργαστή θα εκτελεστούν φυσιολογικά κατά τη διάρκεια ενός HOLD. Η µετάβαση του σήµατος HOLD στη λογική τιµή “0” θα οδηγήσει στο τέλος της κατάστασης HOLD. Η µετάβαση αυτή θα πρέπει να συµπέσει µε τη θετική ακµή του Φ1 της Τ1 περιόδου ρολογιού του επόµενου κύκλου µηχανής. Στην περίπτωση αυτή ο 8080 σηµατοδοτεί το τέλος του HOLD θέτοντας το σήµα HLDA στη λογική τιµή “0”.
3 . 4 O π ∫ ∞ ∆ ∞ ™ ∆ ∞ ™ ∂ π ™ WA I T, H O L D ∫ ∞ π H A L T
T1
Kύκλος µηχανής N T2 T3
91
Kύκλος µηχανής N + 1 TW TW T1W
TW
TW
T1
Φ1 Φ2 SYNC HOLD HLDA
Kατάσταση HOLD
WR D0 – D7
Kατάσταση
∆εδοµένα
Floating Floating
A0 – A15 ™¯‹Ì· 3.12 Η κατάσταση HOLD µετά από κύκλο εγγραφής
Κατά τη διάρκεια του HOLD οι δίαυλοι διευθύνσεων και δεδοµένων βρίσκονται σε κατάσταση υψηλής εµπέδησης. Αυτή ξεκινά στο Φ2 του Τ3 για µια λειτουργία ανάγνωσης µνήµης και στο Φ2 της περιόδου ρολογιού που ακολουθεί την Τ3 στις υπόλοιπες περιπτώσεις. H κατάσταση HALT είναι ίδια µε την WAIT εκτός του ότι ξεκινά µε την εντολή HALT. Η κατάσταση αυτή δεν ξεκινά µε το σήµα READY στη λογική τιµή “0”, παρά το γεγονός ότι αυτό είναι αναγκαία προϋπόθεση. Αυτό σηµαίνει ότι το READY στη λογική τιµή “1” δεν µπορεί να χρησιµοποιηθεί για να σταµατήσει την κατάσταση HALT. Για να σταµατήσει η κατάσταση HALT, απαιτείται αίτηση διακοπής (δηλαδή το σήµα INT θα πρέπει να µεταβεί στη λογική τιµή “1”). Εάν οι διακοπές έχουν κατασταλεί, η αίτηση διακοπής δεν πρόκειται να αναγνωριστεί ποτέ και ο µόνος τρόπος για έξοδο από την κατάσταση HALT είναι να κλείσουµε το διακόπτη τροφοδοσίας στο µικροεπεξεργαστή.
Ποια η διαφορά ανάµεσα στις καταστάσεις WAIT, HOLD και HALT; Σε ποια περίπτωση θα χρησιµοποιούσατε την καθεµία από αυτές;
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.8
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
92
3.5 H ·Ú¯ÈÎÔÔ›ËÛË ÙÔ˘ 8080
Η είσοδος του σήµατος RESET στη λογική τιµή “1” θα καθαρίσει το µετρητή προγράµµατος και θα απενεργοποιήσει τις διακοπές. Για να εκτελεστεί η λειτουργία RESET, το αντίστοιχο σήµα θα πρέπει να τοποθετηθεί στη λογική τιµή “1” για τρεις τουλάχιστον περιόδους ρολογιού. Κατά τη διάρκεια των τριών αυτών περιόδων οι λειτουργίες που εκτελούνται είναι οι εξής: (α) Mηδενίζεται ο µετρητής προγράµµατος, (β) απενεργοποιούνται όλες οι αιτήσεις διακοπής, (γ) αρχικοποιείται η λογική αναγνώρισης διακοπών (τα κυκλώµατα που είναι σχετικά µε το σήµα INTE) και τέλος (δ) αρχικοποιείται η λογική αναγνώρισης του HOLD (τα κυκλώµατα που είναι σχετικά µε το σήµα HLDA). Όσο το RESET είναι στη λογική τιµή “1”, όλες οι λειτουργίες του 8080 είναι σε αναµονή. Όταν το RESET µεταβεί στη λογική τιµή “0”, αρχίζει πάλι η εκτέλεση εντολών µε τον κύκλο ρολογιού Τ1 στον επόµενο παλµό Φ1. Εφόσον ο µετρητής προγράµµατος έχει µηδενιστεί, η πρώτη εντολή που εκτελείται µετά το RESET είναι η εντολή που έχει αποθηκευτεί στη θέση της µνήµης µε διεύθυνση 000016. Οι διακοπές παραµένουν απενεργοποιηµένες, όταν ξεκινά η εκτέλεση του προγράµµατος. Όταν ανοίγουµε (τροφοδοτούµε µε ρεύµα) ένα σύστηµα βασισµένο στον 8080, θα πρέπει ταυτόχρονα να τον αρχικοποιούµε εκτελώντας τη λειτουργία RESET. Αν δεν εκτελέσουµε την λειτουργία RESET, τότε οι καταχωρητές περιλαµβανόµενου και του µετρητή προγράµµατος θα περιέχουν ακαθόριστα δεδοµένα µε αποτέλεσµα η εκτέλεση του προγράµµατος να ξεκινήσει αµέσως, αλλά λανθασµένα από κάποια τυχαία θέση της µνήµης. ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.9
Μετά από µία διακοπή ρεύµατος, ποια είναι τα περιεχόµενα του µετρητή προγράµµατος; Είναι πάντα τα ίδια;
3.6 OÈ ‰È·ÎÔ¤˜ ÛÙÔÓ 8080
Ο µηχανισµός της διακοπής δίνει τη δυνατότητα σε µια εξωτερική συσκευή (εξωτερικό κύκλωµα) να διακόψει την εκτέλεση του προγράµµατος και να ζητήσει εξυπηρέτηση από τον επεξεργαστή. Όπως όλοι οι µικροεπεξεργαστές, έτσι και ο 8080 έχει τη δυνατότητα να χειριστεί εξωτερικά σήµατα διακοπής.
3.6 Oπ ¢π∞∫√¶∂™ ™∆√¡ 8080
93
Μια εξωτερική συσκευή µπορεί να απαιτήσει εξυπηρέτηση οποιαδήποτε στιγµή τοποθετώντας το σήµα εισόδου INT στη λογική τιµή “1”. Η αίτηση διακοπής θα αναγνωριστεί µόνο αν υπάρχει δυνατότητα διακοπών. Οι εντολές ΕΙ (Enable Interrupt) και (Disable Interrupt) χρησιµοποιούνται για ενεργοποίηση ή απενεργοποίηση των διακοπών. Παρ’ όλα αυτά οι διακοπές απενεργοποιούνται αυτόµατα από τον 8080 κατά τη διάρκεια της εκτέλεσης της αρχικοποίησης και κατά την αναγνώριση µιας διακοπής.
N
Kύκλος µηχανής N + 1 T2 T3 T4
T1
T5
N+2 T1
Φ1 Φ2 SYNC READY DBIN WAIT WR INT INTE D0 – D7
Kατάσταση
∆εδοµένα
Floating
A0 – A15 Aνάγνωση σηµάτωνv κατάστασης από v εξωτερική συσκευή Aρχή διακοπής
Ο 8080 εξάγει στο σήµα εξόδου INTE τη λογική τιµή “1”, όταν έχουν ενεργοποιηθεί οι διακοπές, και τη λογική τιµή “0”, όταν έχουν απενεργοποιηθεί οι διακοπές. Όταν οι διακοπές είναι ενεργοποιηµένες, τότε ο 8080 θα αναγνωρίσει την αίτηση διακοπής κατά τον επόµενο κύκλο ρολογιού Τ1 στη θετική ακµή του Φ2. Τη στιγµή αυτή το INTE µεταβαίνει στη λογική τιµή “0” ώστε να αντα-
™¯‹Ì· 3.13
Ακολουθία αναγνώρισης διακοπής
94
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
νακλά το γεγονός ότι αναγνωρίστηκε η διακοπή και αυτόµατα απενεργοποιεί τις διακοπές ώστε να µην δεχτεί νέα αίτηση διακοπής (βλέπε σχήµα 3.13). Ο 8080 πληροφορεί την εξωτερική συσκευή ότι µια διακοπή έχει αναγνωριστεί εξάγοντας την κατάσταση αυτή στο δίαυλο δεδοµένων µε τον επόµενο κύκλο µηχανής, δηλαδή θέτει σε τιµή 1 τα D0–INTA, D1–R1/WO, D5–M1. Το INTA είναι η κυριότερη κατάσταση αναγνώρισης διακοπής. Η κατάσταση αυτή µετατρέπεται σε ένα ξεχωριστό σήµα ελέγχου αναγνώρισης διακοπής στα µικροϋπολογιστικά συστήµατα, που χρησιµοποιούν τον ελεγκτή συστήµατος 8228 (περισσότερες λεπτοµέρειες θα δούµε στην ενότητα 3.8). Εφόσον έχει αναγνωριστεί µια διακοπή, ο µικροεπεξεργαστής εισάγει µια σειρά κύκλων προσκόµισης εντολής, αλλά µε δύο διαφορές: • η λογική της αύξησης του µετρητή προγράµµατος έχει κατασταλεί, • εξάγονται διαφορετικές καταστάσεις στο δίαυλο δεδοµένων. Έτσι µπορούµε να διακρίνουµε έναν κύκλο προσκόµισης εντολής από έναν κύκλο µηχανής, που ακολουθεί την αναγνώριση µιας διακοπής Για να µπορούµε, µετά το τέλος της εξυπηρέτησης της διακοπής, να συνεχίσουµε µε την εκτέλεση του προγράµµατος, η πρώτη εντολή, που εκτελείται ακολουθώντας την αναγνώριση µιας διακοπής, θα πρέπει να αποθηκεύσει το περιεχόµενο του µετρητή προγράµµατος (συνήθως στο σωρό), ενώ η τελευταία εκτελούµενη εντολή µέσα στη ρουτίνα εξυπηρέτησης της διακοπής θα πρέπει να το επαναφέρει στο µετρητή προγράµµατος. Κατά τη διάρκεια της προσκόµισης εντολής, που ακολουθεί την αναγνώριση διακοπής, η λογική της αύξησης του µετρητή προγράµµατος έχει κατασταλεί, γιατί ο 8080 αναµένει να του δοθεί ο κώδικας λειτουργίας της πρώτης εντολής εξυπηρέτησης της διακοπής από την εξωτερική συσκευή, που προκάλεσε τη διακοπή, και όχι από τη µνήµη. Ο κώδικας λειτουργίας, που παρέχεται από την εξωτερική συσκευή, θα πρέπει να είναι ο κώδικας λειτουργίας µιας εντολής, που θα αποθηκεύει το περιεχόµενο του µετρητή προγράµµατος για επακόλουθη ανάκτηση. Η µόνη εντολή που µπορεί να εκτελέσει τα παραπάνω είναι µία εντολή κλήσης υπορουτίνας. Η εντολή αυτή αποθηκεύει το περιεχόµενο του µετρητή προγράµµατος στο σωρό και µετά αποθηκεύει µια νέα διεύθυνση στο µετρητή προγράµµατος. Ο κανονικός τρόπος για να τελειώσει µια υπορουτίνα είναι διαµέσου της εντολής RETURN. Αυτή η εντολή µεταφέρει τα δεδοµένα, που βρίσκονται
3.6 Oπ ¢π∞∫√¶∂™ ™∆√¡ 8080
στην κορυφή του σωρού στο µετρητή προγράµµατος. Υπάρχουν δύο τύποι εντολής για κλήση ρουτίνας εξυπηρέτησης στον 8080, ο τύπος RESTART (RST) και ο τύπος CALL. Η εντολή CALL είναι µια τυπική εντολή των τριών bytes µε άµεση διευθυνσιοδότηση. Η διεύθυνση της εντολής, που θα εκτελεστεί µετά την εξυπηρέτηση της διακοπής, αποθηκεύεται στο σωρό ώστε να ανακληθεί ακολούθως. Το δεύτερο και τρίτο byte του κώδικα λειτουργίας της εντολής CALL παρέχει τη διεύθυνση της πρώτης εντολής της υπορουτίνας εξυπηρέτησης και αποθηκεύεται στο µετρητή προγράµµατος. Στην περίπτωση της εντολής CALL, το σήµα κατάστασης INTA χρησιµοποιείται στην καταστολή των κανονικών προσπελάσεων στη µνήµη για τους επόµενους τρεις κύκλους µηχανής, αφού η εξωτερική συσκευή θα πρέπει να παρέχει τα τρία διαδοχικά bytes του κώδικα λειτουργίας µιας CALL εντολής. H RST εντολή είναι µεγέθους ενός byte. Η ανταπόκριση στην αναγνώριση διακοπής µε εισαγωγή µιας εντολής RST είναι πολύ πιο απλή. Το σήµα κατάστασης INTA µπορεί να χρησιµοποιηθεί για την επιλογή της εξωτερικής συσκευής, ενώ η έλλειψη του σήµατος MEMR µπορεί να χρησιµοποιηθεί στην καταστολή ενός κανονικού κύκλου προσκόµισης εντολής, ο οποίος θα συνέβαινε από τη µνήµη. Εποµένως, ένας προσωρινός 8–bit καταχωρητής εισόδου/εξόδου µπορεί να παράγει τον κωδικό λειτουργίας µιας RESTART εντολής. Σε ένα µικροϋπολογιστικό σύστηµα που περιέχει τον ελεγκτή συστήµατος 8228, όταν το byte του κώδικα λειτουργίας που λαµβάνεται ακολουθώντας το INTA είναι ένα CALL (CD16), ο 8228 εξάγει δύο ακόµα καταστάσεις INTA για τους επόµενους δύο κύκλους µηχανής. Έτσι, η εξωτερική συσκευή µπορεί να χρησιµοποιήσει το INTA σαν σήµα, που καταστέλλει τις κανονικές προσπελάσεις στη µνήµη, ώστε να στείλει η ίδια τα τρία bytes της CALL εντολής. Εάν το µικροϋπολογιστικό σύστηµα δεν περιλαµβάνει ελεγκτή συστήµατος 8228, τότε η διαδικασία είναι αρκετά πολύπλοκη. Οι λειτουργίες, που µια εξωτερική συσκευή θα πρέπει να εκτελέσει, είναι οι εξής: 1) Σε ανταπόκριση του σήµατος INTA θα πρέπει να καταστέλλει τις κανονικές αναφορές στη µνήµη και να µεταφέρει τον κώδικα λειτουργίας της εντολής CALL (CD16) στο µικροεπεξεργαστή. Ο κώδικας λειτουργίας θα πρέπει να µεταφερθεί στον κατάλληλο χρόνο στο δίαυλο δεδοµένων, όπως συµβαίνει µε όλες τις υπόλοιπες εντολές.
95
96
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
2) Θα πρέπει να καταστέλλει τις κανονικές προσπελάσεις µνήµης για τους επόµενους δύο κύκλους µηχανής. Κατά τη διάρκεια των κύκλων αυτών, θα πρέπει να µεταφέρει το λιγότερο και περισσότερο σηµαντικό µέρος της διεύθυνσης της ρουτίνας εξυπηρέτησης της διακοπής στο δίαυλο δεδοµένων. Ο χρονισµός τους στο δίαυλο δεδοµένων θα πρέπει να συµπίπτει µε αυτόν µίας κανονικής εντολής µεγέθους τριών bytes. 3.7 TÚfiÔÈ ‰È¢ı˘ÓÛÈÔ‰fiÙËÛ˘ – ™‡ÓÔÏÔ ÂÓÙÔÏÒÓ
Οι τρόποι διευθυνσιοδότησης, που χρησιµοποιούνται από τον 8080, είναι ο άµεσος, ο υπονοούµενος, ο έµµεσος και η απόλυτη διευθυνσιοδότηση. Στην άµεση διευθυνσιοδότηση τα δεδοµένα ακολουθούν τον κωδικό λειτουργίας της εντολής. Οι εντολές αυτές έχουν µέγεθος δύο bytes. Ο υπονοούµενος τρόπος διευθυνσιοδότησης είναι ο συχνότερα χρησιµοποιούµενος. Κατ' αυτόν ο καταχωρητής, στον οποίο είναι αποθηκευµένα τα δεδοµένα, ορίζεται από την ίδια την εντολή. ∆ηλαδή η διεύθυνση (ο αριθµός) του καταχωρητή περιέχεται στον κωδικό λειτουργίας της εντολής. Ο έµµεσος τρόπος διευθυνσιοδότησης χρησιµοποιεί το ζεύγος των καταχωρητών HL, που η βασική τους χρήση είναι να περιέχουν διευθύνσεις µνήµης. Υπάρχουν βέβαια και άλλα ζεύγη καταχωρητών BC, DE, που χρησιµοποιούνται για αναφορά στη µνήµη, αλλά από περιορισµένο αριθµό εντολών. Ένας άλλος τρόπος διευθυνσιοδότησης, που χρησιµοποιεί ο 8080, είναι η απόλυτη διευθυνσιοδότηση. Η ύπαρξή της είναι αναγκαία, γιατί είναι ο µόνος τρόπος διευθυνσιοδότησης που παρέχεται για τις εντολές διακλάδωσης. Όπως οι περισσότεροι µικροεπεξεργαστές των 8–bits, έτσι και ο 8080 διαθέτει εντολές µεταβλητού µήκους του ενός, των δύο, και των τριών bytes. Το πρώτο byte αντιπροσωπεύει πάντα τον κώδικα λειτουργίας. Το σύνολο εντολών του 8080 περιέχει τις κατηγορίες εντολών, που γνωρίσαµε στο προηγούµενο κεφάλαιο. Έτσι, θα βρούµε σε αυτόν εντολές µεταφοράς δεδοµένων, αριθµητικές εντολές, λογικές εντολές, εντολές διακλάδωσης, εντολές κλήσης υπορουτίνας (CALL), επιστροφής από υπορουτίνα (RETURN) και γενικές εντολές, όπως διαχείρισης σωρού, και εντολές εισόδου/εξόδου.
3.8 ™À™∫∂À∂™ À¶√™∆∏ƒπ•∏™
Τι τρόπο διευθυνσιοδότησης χρησιµοποιεί η καθεµία από τις εντολές που αναφέρονται στην άσκηση αυτοαξιολόγησης 3.4;
3.8 ™˘Û΢¤˜ ˘ÔÛÙ‹ÚÈ͢
Ο 8080 έχει τόσες πολλές συσκευές υποστήριξης ώστε σπάνια χρησιµοποιεί συσκευές άλλων µικροεπεξεργαστών. Η γεννήτρια ρολογιού 8224 (clock generator) και ο ελεγκτής συστήµατος 8228 (system controller) είναι δύο συσκευές που χρησιµοποιούνται τόσο συχνά µε τον 8080 ώστε συχνά να θεωρούνται σαν ένας µικροεπεξεργαστής τριών ολοκληρωµένων κυκλωµάτων (three chip microprocessor). Ο κύριος σκοπός της γεννήτριας ρολογιού 8224 είναι να παρέχει στον 8080 τα απαιτούµενα σήµατα ρολογιού Φ1 και Φ2. Επίσης δηµιουργεί τα σήµατα εισόδου READY και RESET του 8080 µε σωστό συγχρονισµό, καθώς τα δύο αυτά σήµατα πρέπει να είναι συγχρονισµένα µε το Φ2. Η συχνότητα του ρολογιού ελέγχεται από έναν κρύσταλλο συνδεµένο στους ακροδέκτες XTAL1 και XTAL2. Η συχνότητα του κρυστάλλου πρέπει να είναι ακριβώς εννέα φορές µεγαλύτερη της απαιτούµενης συχνότητας ρολογιού. Συνήθως, η περίοδος ρολογιού του 8080 ισούται µε 500 ns (εποµένως η συχνότητά του είναι 2 MHz). Εφόσον η συχνότητα του κρυστάλλου πρέπει να είναι εννέα φορές µεγαλύτερη της συχνότητας του ρολογιού, το σύνηθες ρολόι των 500 ns απαιτεί συχνότητα κρυστάλλου 18 MHz. Η γεννήτρια ρολογιού 8224 δέχεται µια είσοδο, όπως φαίνεται στο RESIN, και δηµιουργεί ένα σήµα εξόδου RESET µε τα χαρακτηριστικά που απαιτεί ο 8080. Το RESET συχνά συνδέεται και µε χειροκίνητους διακόπτες, που επιτρέπουν στο µικροϋπολογιστικό σύστηµα να αρχικοποιηθεί και µε ανθρώπινη παρέµβαση. Το κύκλωµα του σχήµατος 3.14 δηµιουργεί την κατάλληλη είσοδο RESIN στην 8224 γεννήτρια ρολογιού έτσι ώστε είτε πτώση ισχύος είτε εξωτερικός διακόπτης να µπορούν να επαναφέρουν το µικροεπεξεργαστή σε κατάσταση αρχικοποίησης.
97
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.10
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
98
VCC
Επίσης η γεννήτρια ρολογιού 8224 δέχεται ένα µη συγχρονισµένο RDYIN σήµα από µία αργή µνήµη και δηµιουργεί ένα συγχρονισµένο σήµα εισόδου READY για τον 8080.
v
RESIN~
™¯‹Ì· 3.14
Στο σχήµα 3.15 βλέπουµε τον τρόπο, µε τον οποίο συνδέονται ο 8080 µε τη γεννήτρια ρολογιού 8224 και τον ελεγκτή συστήµατος 8228. Ο ελεγκτής συστήµατος 8228 αποτελείται από ένα διπλής κατεύθυνσης οδηγό διαύλου (bus driver) και από ένα κύκλωµα παραγωγής των σηµάτων ελέγχου.
DMA REQUESTv
HOLDv
INT REQUESTv
INTv
INT ENABLE
INTE
XTAL TANKv
Φ1v
OSCv
Φ2v
Φ2(TTL)v RDYINv RESIN~
WAITv 8224
READYv RESET
8080
D0v D1v D2v D3v D4v D5v D6v D7
D0v D1v D2v D3v D4v D5v D6v D7 INTA~v MEMR~v MEMW~v I/OR~v I/OW~
8228
∆ίαυλοςU διευθύνσεων
∆ιασύνδεση των 8080, 8224 και 8228
A0v A1v A2v A3v A4v A5v A6v A7v A8v A9v A10v A11v A12v A13v A14v A15
∆ίαυλοςU δεδοµένων
™¯‹Ì· 3.15
A0v A1v A2v A3v A4v A5v A6v A7v A8v A9v A10v A11v A12v A13v A14v A15v WR~v DBINv HLDA
∆ίαυλοςU ελέγχου
Αρχικοποίηση του 8224
SYNC
STATUS STROBE~ BUSEN~
3.8 ™À™∫∂À∂™ À¶√™∆∏ƒπ•∏™
99
Ένας µεγάλος αριθµός µνηµών και συσκευών Ι/Ο µπορούν να συνδεθούν απευθείας µε το δίαυλο δεδοµένων του 8228, ενώ τέτοιες συνδέσεις µε το δίαυλο δεδοµένων του 8080 δεν είναι εφικτές, καθώς ο δίαυλος του 8080 έχει µικρή οδηγητική ικανότητα (fanout). O 8228 συνδυάζει τα τρία σήµατα ελέγχου του 8080 WR~, DBIN και HLDA µε τα σήµατα κατάστασης που υπάρχουν στο δίαυλο δεδοµένων κατά τη διάρκεια του κύκλου Τ2 προκειµένου να παράγει το δίαυλο των σηµάτων ελέγχου του συστήµατος ως εξής: MEMR~ : ανάγνωση από µνήµη. MEMW~ : εγγραφή σε µνήµη. I/OR~ : ανάγνωση από εξωτερική Ι/Ο συσκευή. I/OW~ : εγγραφή σε εξωτερική Ι/Ο συσκευή. INTA~ : αναγνώριση διακοπής. Το σήµα αναγνώρισης διακοπής INTA~ έχει δύο ειδικά χαρακτηριστικά, που θα πρέπει να εξηγήσουµε. Αυτό το σήµα µπορεί να συνδεθεί σε δυναµικό +12 V διαµέσου µιας αντίστασης 1kΩ, οπότε ο 8228 υποθέτει ότι υπάρχει µόνο µια πιθανή πηγή διακοπής µέσα στον µικροϋπολογιστή. Ο 8228 εισάγει αυτόµατα τον κώδικα λειτουργίας µιας εντολής RST σε ανταπόκριση της αναγνώρισης εντολής. Αυτό σηµαίνει ότι η εξωτερική συσκευή δεν χρειάζεται να παρέχει τον κώδικα λειτουργίας της πρώτης εντολής µετά τη διακοπή και ότι οι ρουτίνες εξυπηρέτησης της διακοπής ξεκινάνε µε την εκτέλεση της εντολής RST. Εάν η εξωτερική συσκευή ανταποκρίνεται στο χαµηλό παλµό INTA~ παρέχοντας το πρώτο byte του κώδικα λειτουργίας της εντολής CALL (110011012), τότε ο 8228 αυτόµατα παράγει δύο άλλα χαµηλού παλµού INTA~ για τους δύο επόµενους κύκλους µηχανής. Τα εξωτερικά κυκλώµατα µπορούν να χρησιµοποιήσουν τους παλµούς INTA~ σαν ένα σήµα απενεργοποίησης της µνήµης (memory deselect) και σαν σήµα επιλογής της εξωτερικής συσκευής που προκάλεσε τη διακοπή.
Περιγράψτε τη διασύνδεση του 8080 µε τη γεννήτρια ρολογιού 8224 και τον ελεγκτή συστήµατος 8228.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.11
100
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 3.12
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
Βρείτε τις λογικές σχέσεις, που συνδέουν το κάθε σήµα ελέγχου, που παράγει ο ελεγκτής συστήµατος 8228 µε τα σήµατα ελέγχου και κατάστασης, που παράγει ο 8080.
3.9 ¢È·ÊÔÚ¤˜ ÙÔ˘ 8080 Ì ÙÔÓ 8085
H βασική φιλοσοφία πίσω από τον 8085 είναι η ύπαρξη της εξέλιξης της τεχνολογίας, χωρίς όµως την απώλεια των ήδη υπαρχόντων επενδύσεων σε λογισµικό και σε υλικό. Για το λόγο αυτό ο 8085 παρέχει σε κάποιο χρήστη του 8080, που θα αποφασίσει ν' αλλάξει τον εξοπλισµό του, µια σαφή αύξηση της απόδοσης, µια µείωση του αριθµού των ολοκληρωµένων κυκλωµάτων του συστήµατος, καθώς και λειτουργία µε µια µόνο πηγή τροφοδοσίας (+5 V). Από την άλλη πλευρά, για κάποιον καινούριο χρήστη ο 8085 παρουσιάζεται ως η εκλέπτυνση του πιο δηµοφιλούς µικροεπεξεργαστή, του 8080. Τα ίδια εργαλεία, που η Intel παρουσίασε για τον 8080, µπορούν να χρησιµοποιηθούν και από τον 8085. Ο 8085 περιλαµβάνει ενσωµατωµένες τις λειτουργίες της γεννήτριας ρολογιού και του ελεγκτή συστήµατος, λειτουργίες που στον 8080 απαιτούσαν ξεχωριστά ολοκληρωµένα κυκλώµατα. Ο 8085 είναι 100% συµβατός σε ό,τι αφορά το λογισµικό µε τον 8080. H συµβατότητα αυτή είναι στο επίπεδο του κώδικα µηχανής, έτσι ώστε υπάρχοντα προγράµµατα του 8080 να µπορούν να εκτελεστούν στον 8085, χωρίς να απαιτούνται αλλαγές. Τα οφέλη από τη συµβατότητα είναι, αναµφισβήτητα, πολύ µεγάλα. Το σηµαντικότερο όµως από όλα είναι το ότι µε τον τρόπο αυτό αποφεύγεται ένα αρκετά µεγάλο κόστος: αυτό της "εκπαίδευσης" των προγραµµατιστών. Ένα καινούριο ή τροποποιηµένο σύνολο εντολών θα απαιτούσε από τους προγραµµατιστές να µάθουν το νέο σύνολο των εντολών, µε συνέπεια τη µείωση της παραγωγικότητάς τους. H συµβατότητα εξασφαλίζει ότι τέτοιες απώλειες δεν θα συµβούν ποτέ. H πρόσθεση δύο επιπλέον εντολών στο ρεπερτόριο του 8085 γίνεται χρησιµοποιώντας δύο από τους αχρησιµοποίητους κωδικούς λειτουργίας του 8080, και έτσι επιτυγχάνεται η επιθυµητή συµβατότητα χωρίς προβλήµατα. Στον τοµέα του υλικού, ο 8085 προσφέρει όλες τις λειτουργίες του 8080. Επιπλέον, το γεγονός ότι στον 8085 η τροφοδοσία παρέχεται από µια µόνο πηγή των +5 V µειώνει σηµαντικά τον αριθµό των απαιτούµενων εξαρτηµάτων για τα πιο πολλά συστήµατα και απλουστεύει την εξέλιξη και το σχεδιασµό του υλικού.
3.9 ¢π∞º√ƒ∂™ ∆√À 8080 ª∂ ∆√¡ 8085
101
Μία από τις σηµαντικότερες αλλαγές σε σχέση µε τον 8080 είναι η πολυπλεξία µέρους του διαύλου διευθύνσεων µε το δίαυλο δεδοµένων. Αυτό σηµαίνει ότι στους 8 ακροδέκτες διευθύνσεων/δεδοµένων εµφανίζονται τα 8 λιγότερο σηµαντικά δυαδικά ψηφία της διεύθυνσης κατά τη διάρκεια του πρώτου κύκλου ρολογιού του κάθε κύκλου µηχανής ενώ εµφανίζονται τα δυαδικά ψηφία των δεδοµένων κατά την διάρκεια του δεύτερου και τρίτου κύκλου ρολογιού. Με τον τρόπο αυτό καταφέρνουµε να µειώσουµε τον αριθµό των ακροδεκτών, που απαιτούνται για το δίαυλο δεδοµένων και το δίαυλο διευθύνσεων. Μια άλλη διαφοροποίηση εµφανίζεται στο θέµα της διαχείρισης διακοπών, στο οποίο ο 8080 υστερούσε σηµαντικά. Στον 8085 υπάρχουν πέντε ακροδέκτες για σήµατα διακοπής. Το ένα σήµα διακοπής (INTR) είναι συµβατό µε το αντίστοιχο του 8080 και πρέπει τα εξωτερικά κυκλώµατα να παράσχουν τη διεύθυνση της ρουτίνας εξυπηρέτησης της διακοπής µέσω µιας εντολής CALL, ενώ τα υπόλοιπα τέσσερα (RST 5.5, RST 6.5, RST 7.5 και TRAP) παρέχουν σταθερή διεύθυνση. Τέλος, ο 8085 διαθέτει δύο ακροδέκτες (SID, SOD), οι οποίοι µπορούν να χρησιµοποιηθούν για σειριακή µετάδοση δεδοµένων µε τη βοήθεια των επιπλέον εντολών RIM και SIM, που δεν υπάρχουν στο σύνολο εντολών του 8080. Σε ό,τι αφορά τα ολοκληρωµένα κυκλώµατα των 8080 και 8085, δεν έχουν την ίδια διάταξη στους ακροδέκτες τους. Αυτό συµβαίνει γιατί µε τον 8085 έχει επέλθει µείωση στις πηγές τροφοδοσίας και γιατί έχουν προστεθεί καινούριες λειτουργίες. O σχεδιασµός του 8085 έγινε έτσι ώστε να µειωθεί ο χώρος του, µε συνέπεια ένα πιο αποδοτικό και βολικό "σχήµα". H µείωση του χώρου της πλακέτας και η απαίτηση µικρού αριθµού εξαρτηµάτων ξεπερνούν κατά πολύ αυτή την ασυµβατότητα.
Ο Ζ80 είναι ένας µικροεπεξεργαστής των 8 δυαδικών ψηφίων. Παρουσιάστηκε το 1974 από την εταιρία Zilog. Η φιλοσοφία σχεδιασµού του είναι παρόµοια µε αυτή του Intel 8080/8085. Ανατρέχοντας στη βιβλιογραφία που υπάρχει στο τέλος του κεφαλαίου ή σε οποιοδήποτε άλλο βιβλίο γνωρίζετε, µελετήστε το µικροεπεξεργαστή Z80. Αφού συγκεντρώσετε αρκετά στοιχεία, κάνετε µια σύγκριση του µικροεπεξεργαστή αυτού µε τον 8080/8085 και παρουσιάστε τις διαφορές τους. Συγκεντρώστε το ενδιαφέρον σας στα παρακάτω σηµεία:
¢Ú·ÛÙËÚÈfiÙËÙ· 3.1
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
102
• ακροδέκτες του ολοκληρωµένου κυκλώµατος • πλήθος και είδος καταχωρητών • σηµαίες κατάστασης του καταχωρητή κατάστασης επεξεργαστή • σήµατα διακοπής • µέθοδοι διευθυνσιοδότησης • κατηγορίες εντολών Ο χρόνος απασχόλησής σας για την ολοκλήρωση αυτής της δραστηριότητας εκτιµάµε πως δεν θα ξεπεράσει τις τρεις ώρες.
™‡ÓÔ„Ë Ο 8080 της Intel είναι ένας από τους πρώτους µικροεπεξεργαστές που κατασκευάστηκαν. Απαιτεί τρία επίπεδα τάσης (–5 V, +5 V, +12 V) και αποτελείται από 40 ακροδέκτες. Ο δίαυλος διευθύνσεων µπορεί να προσπελάσει 64 KB µνήµης, ενώ ο δίαυλος δεδοµένων αποτελείται από 8 γραµµές. Ο δίαυλος ελέγχου αποτελείται από 10 γραµµές ελέγχου. Ο 8080 αποτελείται από έναν συσσωρευτή, τρεις 16–bit καταχωρητές γενικού σκοπού, οι οποίοι µπορούν να προσπελαστούν και σαν έξι 8–bit καταχωρητές, τον καταχωρητή κατάστασης επεξεργαστή, το µετρητή προγράµµατος και το δείκτη σωρού. Ο καταχωρητής κατάστασης περιέχει πέντε δείκτες κατάστασης (µηδενικού αποτελέσµατος, πρόσηµου, κρατουµένου, ισοτιµίας και βοηθητικού κρατουµένου). Ο κύκλος εντολής του 8080 χωρίζεται σε ένα έως πέντε κύκλους µηχανής, οι οποίοι διαρκούν από τρεις έως πέντε κύκλους ρολογιού. Το πλήθος των κύκλων µηχανής και ρολογιού εξαρτάται από το µήκος της κάθε εντολής και την πολυπλοκότητά της. Κατά τη διάρκεια του Τ1 κύκλου ρολογιού ενός κύκλου προσκόµισης εντολής, ο 8080 εξάγει στο δίαυλο δεδοµένων τα σήµατα κατάστασης, τα οποία υποδηλώνουν το είδος του κύκλου µηχανής που θα ακολουθήσει. Επίσης τα περιεχόµενα του µετρητή προγράµµατος µεταφέρονται στο δίαυλο διευθύνσεων για να προσδιορίσουν τη θέση µνήµης, από όπου θα µεταφερθεί ο κωδικός λειτουργίας της εντολής. Κατά τη διάρκεια του κύκλου Τ2, το σήµα DBIN γίνεται ενεργό και ο δίαυλος δεδοµένων µεταβαίνει σε κατάσταση υψηλής εµπέδησης ώστε να µπορεί η µνήµη να γράψει τα δεδοµένα. Στον κύκλο Τ3 ο
™YNOæH
µικροεπεξεργαστής διαβάζει τη λέξη, που βρίσκεται στο δίαυλο δεδοµένων, την τοποθετεί στον καταχωρητή εντολών και την αποκωδικοποιεί. Το σήµα DBIN γίνεται ανενεργό και ο δίαυλος δεδοµένων µεταβαίνει σε κατάσταση υψηλής εµπέδησης. Κατά τη διάρκεια του κύκλου Τ4, αυξάνεται το περιεχόµενο του µετρητή προγράµµατος και ο δίαυλος διευθύνσεων µεταβαίνει σε κατάσταση υψηλής εµπέδησης. Εάν η µνήµη δεν προλαβαίνει να µεταφέρει τα περιεχόµενα µιας θέσης µνήµης στο δίαυλο δεδοµένων, µπορεί χρησιµοποιώντας το σήµα READY να εισαγάγει µεταξύ του Τ2 και του Τ3 κύκλου ρολογιού κύκλους αναµονής (wait cycles). Επίσης µε τη βοήθεια του σήµατος HOLD µπορεί µια εξωτερική συσκευή να απαιτήσει από το µικροεπεξεργαστή να απελευθερώσει τους διαύλους δεδοµένων και διευθύνσεων ώστε να τους χρησιµοποιήσει για µεταφορά δεδοµένων. Τέλος η εντολή HALT θέτει τον επεξεργαστή σε κατάσταση αναµονής µέχρι να συµβεί µία αίτηση διακοπής. Το σήµα INT του 8080 δίνει τη δυνατότητα σε µια εξωτερική συσκευή να ζητήσει από τον 8080 να διακόψει την εκτέλεση του προγράµµατος για να την εξυπηρετήσει. Στην περίπτωση αυτή θα πρέπει η συσκευή αυτή να φροντίσει η επόµενη εντολή, που θα εκτελέσει ο µικροεπεξεργαστής, να είναι είτε η CALL είτε η RESTART για να αποθηκευτούν τα περιεχόµενα του µετρητή προγράµµατος στο σωρό, ώστε µετά την εκτέλεση της ρουτίνας εξυπηρέτησης της διακοπής ο µικροεπεξεργαστής να µπορεί να επανέλθει στην εκτέλεση του προγράµµατος από το σηµείο που σταµάτησε προηγούµενα. Ο 8080 περιέχει όλες τις γνωστές κατηγορίες εντολών. Οι εντολές του χρησιµοποιούν την άµεση, την έµµεση, την απόλυτη και την υπονοούµενη διευθυνσιοδότηση. Σε όλα σχεδόν τα µικροϋπολογιστικά συστήµατα, ο 8080 συνοδεύεται από τη γεννήτρια χρονισµού 8224, που είναι υπεύθυνη για την παραγωγή των σηµάτων χρονισµού του µικροεπεξεργαστή, και από τον ελεγκτή συστήµατος 8228, που είναι υπεύθυνος για την παραγωγή των σηµάτων χρονισµού του συστήµατος. Τα τρία αυτά ολοκληρωµένα κυκλώµατα πολλές φορές αναφέρονται ως µικροεπεξεργαστής τριών ολοκληρωµένων κυκλωµάτων. Η εξέλιξη του 8080 είναι ο µικροεπεξεργαστής 8085. Ο µικροεπεξεργαστής αυτός περιλαµβάνει στο σύνολο εντολών του όλες τις εντολές του 8080 και είναι απόλυτα συµβατός σε επίπεδο κώδικα λειτουργίας µε τον 8080, ώστε όλα τα προγράµµατα του 8080 να µπορούν να εκτελεστούν χωρίς αλλαγές.
103
K E º A § A I O 3 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 0 / 8 0 8 5
104
Σε επίπεδο υλικού, ο 8085 περιέχει τα ίδια κυκλώµατα χρονισµού και ελέγχου, πολυπλέκει το δίαυλο δεδοµένων µε τις 8 λιγότερο σηµαντικές γραµµές του διαύλου διευθύνσεων και διαθέτει τέσσερις νέους ακροδέκτες για αίτηση διακοπής. Τέλος διαθέτει δύο ακροδέκτες και τις αντίστοιχες εντολές για σειριακή µετάδοση δεδοµένων. Οι συσκευές υποστήριξης, που διαθέτουν οι 8080 και 8085, είναι πάρα πολλές και καλύπτουν πολλούς τοµείς εφαρµογών. Στους 8080 και 8085 βασίστηκαν και οι επόµενες γενιές των x86 επεξεργαστών της Intel, που αποτέλεσαν τον πυρήνα των IBM συµβατών προσωπικών υπολογιστών και εµφάνισαν µεγάλη επιτυχία. BÈ‚ÏÈÔÁÚ·Ê›·
Τώρα που τελειώσατε µε την ανάγνωση του τρίτου κεφαλαίου, καλό είναι να διαθέσετε κάποιον επιπλέον χρόνο για να µελετήσετε τα παρακάτω κείµενα: 1) Theory and Problems of Microprocessor Fundamentals, Schaum’s Outline Series, Roger L. Tokheim, Κεφάλαιο 8. Το κεφάλαιο αυτό αναφέρεται στους µικροεπεξεργαστές 8080/8085 δίνοντας έµφαση περισσότερο στον 8085, αναλύει την αρχιτεκτονική, τους τρόπους προσπέλασης και το σύνολο εντολών τους και διαθέτει πολλά παραδείγµατα και ασκήσεις, οι οποίες θα σας βοηθήσουν να κατανοήσετε καλύτερα την ύλη του τρίτου κεφαλαίου του βιβλίου αυτού και να εξασκηθείτε. 2) Microprocessor Technology and Microcomputers, McGraw Hill, Edward J. Pasahow, Κεφάλαιο 4. Στις σελίδες 54–61 θα βρείτε πληροφορίες για τον 8085, τα σήµατα που διαθέτει, τα διαγράµµατα χρονισµού του και τις διάφορες ειδικές καταστάσεις (WAIT, HOLD, HALT). Στις σελίδες 69–72 θα βρείτε παραδείγµατα εντολών και απλά προγράµµατα. Επίσης, στο παράρτηµα (σελίδες 382–393) θα βρείτε µια περιγραφή του 8080 και του Ζ80 που έχει παρόµοια φιλοσοφία σχεδιασµού µε τον 8085. 3) OSBORNE 4 & 8–Bit Microprocessor Handbook, A. Osborne, G. Kane, Osborne/McGraw Hill, Κεφάλαιο 4. Στο κεφάλαιο αυτό θα βρείτε περιγραφή του µικροεπεξεργαστή 8080, πίνακες µε το σύνολο εντολών του και διαγράµµατα χρονισµού για καθεµία από τις εντολές Εάν πάλι νοιώθετε ότι έχετε κατανοήσει αρκετά τον 8080 και τον 8085, µπορείτε να προχωρήσετε στο επόµενο κεφάλαιο για να ανακαλύψετε ένα νέο µικροεπεξεργαστή.
∫
O MÈÎÚÔÂÂÍÂÚÁ·ÛÙ‹˜ Motorola 6800 ™ÎÔfi˜ Μελετώντας το κεφάλαιο αυτό θα γνωρίσετε έναν ακόµα µικροεπεξεργαστή µε µήκος λέξης 8 δυαδικών ψηφίων, τον 6800 της Motorola. Ο µικροεπεξεργαστής αυτός ήταν η απάντηση της Motorola στον 8080 της Intel. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα ολοκληρώσετε τη µελέτη αυτού του κεφαλαίου, θα είστε σε θέση να: • εξηγήσετε τη λειτουργία του καθενός από τους σαράντα ακροδέκτες του µικροεπεξεργαστή 6800. • ορίσετε το πλήθος των γραµµών των τριών διαύλων επικοινωνίας που διαθέτει. • απαριθµήσετε το πλήθος των καταχωρητών του µικροεπεξεργαστή, καθώς και τη λειτουργία του καθενός. • χωρίσετε µία εντολή του 6800 σε κύκλους µηχανής και ρολογιού. • αναφέρετε τις λειτουργίες που επιτελούνται σε κάθε κύκλο µηχανής (κύκλο ρολογιού) µιας εντολής, καθώς και το χρονισµό των σηµάτων ελέγχου. • διακρίνετε τρεις ειδικές καταστάσεις λειτουργίας του 6800. • περιγράψετε τον τρόπο, µε τον οποίο ικανοποιούνται οι αιτήσεις διακοπής της λειτουργίας του µικροεπεξεργαστή. • ορίσετε τους πέντε τρόπους διευθυνσιοδότησης που υπάρχουν στο σύνολο εντολών του. • καταγράψετε τις διαφορές µεταξύ του 6800 και του 8080/8085. ŒÓÓÔȘ ÎÏÂȉȿ • Αρχικοποίηση
• Καταστάσεις WAIT/HOLD/HALT
• Γεννήτρια Ρολογιού
• Κύκλος προσκόµισης εντολής
• ∆ιαχείριση ∆ιακοπών
• Motorola 6800
4 ∂
º
∞
§
∞
π
√
106
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Στο κεφάλαιο αυτό εξετάζουµε έναν ακόµα µικροεπεξεργαστή, τον Motorola 6800. Ο επεξεργαστής αυτός ακολουθεί παρόµοια φιλοσοφία σχεδιασµού µε τον 8080/8085. Εάν έχετε κατανοήσει τον 8080/8085, τότε θα είναι εύκολο να κατανοήσετε και τον 6800. Εάν πάλι δεν είστε και τόσο σίγουροι, µελετώντας το κεφάλαιο αυτό και ανατρέχοντας, όπου χρειάζεται, στην αντίστοιχη παράγραφο του προηγούµενου κεφαλαίου, θα µπορέσετε να κατανοήσετε πλήρως και τους δύο µικροεπεξεργαστές. Κατά τη διάρκεια της µελέτης σας, θα πρέπει να έχετε υπόψη σας τα χαρακτηριστικά του 8080/8085, ώστε να µπορείτε να τα συγκρίνετε µε αυτά του 6800. Η ενότητα 4.1 έχει χωριστεί σε τρεις ανεξάρτητες υποενότητες ώστε να µπορείτε να τη µελετήσετε τµηµατικά.
4.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 6800
4.1 H aÚ¯ÈÙÂÎÙÔÓÈ΋ ÙÔ˘ 6800
O 6800 παρουσιάστηκε από την Motorola ως ανταγωνιστής του 8080 της Intel, του αντικαταστάτη δηλαδή του 8008. O σχεδιασµός του είναι φανερά εµπνευσµένος από τον 8008 και τη φιλοσοφία των mini υπολογιστών. Με µια πρώτη µατιά παρατηρούµε ότι το πιο σηµαντικό χαρακτηριστικό του 6800 είναι η σχετική απλότητά του. H Motorola παρουσίασε τον 6800 στα µέσα της δεκαετίας του '70 (1974). Από τότε ανέπτυξε την οικογένεια 6800 µε νεότερα µέλη, που γενικά είναι συµβατά από πλευράς λογισµικού – και λιγότερο από πλευράς υλικού – µε τον 6800. Οι 6800, 6802 (6800 µε εσωτερικό κύκλωµα χρονισµού και RAM) και ο πιο ισχυρός 6809 είναι µικροεπεξεργαστές µε µήκος λέξης 8 δυαδικών ψηφίων, που έχουν το χαρακτηριστικό της εύκολης χρήσης. Ειδικές εκδόσεις της οικογένειας 6800, όπως οι 6801, 6804, 68HC04, 6805, 68HC05, 68HC11, επειδή περιέχουν ενσωµατωµένη την κύρια µνήµη και άλλα κυκλώµατα µέσα στο ολοκληρωµένο κύκλωµα του µικροεπεξεργαστή, περιγράφονται συχνά ως Single–Chip Computers. 4.1.1 °ÂÓÈο ¯·Ú·ÎÙËÚÈÛÙÈο
Το διάγραµµα της εσωτερικής οργάνωσης του 6800 φαίνεται στο σχήµα 4.1. Οι αριθµοί που αναγράφονται δίπλα στις εισόδους ή εξόδους είναι οι αριθµοί των αντίστοιχων ακροδεκτών του 6800. Όπως είναι γνωστό, ο 6800 έχει δίαυλο δεδοµένων των 8 δυαδικών ψηφίων, ο οποίος µπορεί να βρίσκεται σε τρεις καταστάσεις (υψηλό δυναµικό, χαµηλό δυναµικό και κατάσταση υψηλής εµπέδησης). Ο δίαυλος διευθύνσεων αποτελείται από 16 γραµµές, γεγονός που οδηγεί στο συµπέρασµα ότι µπορεί να διευθυνσιοδοτήσει µέχρι 64 KB µνήµης. H κεντρική µονάδα επεξεργασίας περιέχει έναν 16–bit µετρητή προγράµµατος, έναν 16–bit δείκτη σωρού, έναν 16–bit καταχωρητή δείκτη, δύο 8–bit συσσωρευτές A, B και έναν 8–bit καταχωρητή κατάστασης επεξεργαστή. Τα εννέα σήµατα ελέγχου, που ο 6800 διαθέτει, είναι RESET~, NMI~, HALT~, IRQ~, TSC, DBE (είσοδοι) και BA, VMA, R/W~ (έξοδοι). Ο χρονισµός του µικροεπεξεργαστή επιτυγχάνεται µε τη βοήθεια των εισόδων ρολογιού Φ1 και Φ2. O 6800 αποτελείται από τα εξής κύρια δοµικά στοιχεία: την αριθµητική και λογική µονάδα, τη µονάδα ελέγχου µε τον αποκωδικοποιητή εντολών και τους καταχωρητές.
107
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
108
Clock, Φ1 Clock, Φ2 RESET~ NMI~ HALT~ IRQ~ TSC DBE BA VMA R/W~
3v 37v 40v 6v 2v 4v 9v 36v 7v 5v 34
A15v A14v A13v A12v A11v A10v A9v A8v 25 24 23 22 20 19 18 17
A7v A6v A5v A4v A3v A2v A1v A0v 16 15 14 13 12 11 10 9
Aποµονωτής διευθύνσεων
Aποµονωτής διευθύνσεων
Aποκωδικοποίησηv εντολών καιv έλεγχος
Mετρητήςv προγράµµατοςv H
Mετρητήςv προγράµµατοςv L
Kαταχωρητήςv σωρούv H
Kαταχωρητήςv σωρούv L
Kαταχωρητήςv δείκτηv H
Kαταχωρητήςv δείκτηv L
Συσσωρευτήςv A
Kαταχωρητήςv εντολών
Συσσωρευτήςv B
Kαταχωρητήςv κατάστασηςv επεξεργαστή
Vcc = Pin 8v Vss = Pins 1, 21
Aποµονωτής δεδοµένων
26v 27v 28v 29v 30v 31v 32v 33v D7 D6 D5 D4 D3 D2 D1 D0 ™¯‹Ì· 4.1Το λειτουργικό διάγραµµα του 6800
Aριθµητικήv λογικήv µονάδα
4.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 6800
H αριθµητική και λογική µονάδα εκτελεί όλες τις αριθµητικές και λογικές λειτουργίες. Τα αποτελέσµατα αποθηκεύονται συνήθως σ' έναν από τους δύο συσσωρευτές. O καταχωρητής εντολής τροφοδοτεί τον αποκωδικοποιητή εντολών στη µονάδα ελέγχου. O αποκωδικοποιητής εντολών καθορίζει τη διαδικασία που θα πρέπει να ακολουθηθεί για την εκτέλεση µίας εντολής και κατευθύνει τη µονάδα ελέγχου για τη δηµιουργία των κατάλληλων εσωτερικών και εξωτερικών σηµάτων για το σωστό χρονισµό της εντολής. O 6800 απαιτεί ένα ρολόι µε δύο µη επικαλυπτόµενες φάσεις. Το κύκλωµα του ρολογιού είναι τοποθετηµένο έξω από το ολοκληρωµένο κύκλωµα του 6800 και τροφοδοτεί τις εισόδους ρολογιού Φ1 και Φ2. Το ρολόι συγχρονίζει τις εσωτερικές λειτουργίες του µικροεπεξεργαστή και τις εξωτερικές συσκευές. H διάρκεια του κύκλου ρολογιού µπορεί να είναι από 1 έως 10 µs. O κύκλος ρολογιού δεν µπορεί να είναι µεγαλύτερος από 10 µs, καθώς σε µία τέτοια περίπτωση κάποιοι από τους εσωτερικούς καταχωρητές χάνουν τα δεδοµένα τους, επειδή ο 6800 αποτελείται από δυναµικά (dynamic) και όχι στατικά (static) κυκλώµατα. 4.1.2 OÈ Î·Ù·¯ˆÚËÙ¤˜ ÙÔ˘ 6800
Ο 6800 διαθέτει τους παρακάτω καταχωρητές: • ∆ύο 8–bit συσσωρευτές A, B, οι οποίοι χρησιµεύουν για εκτέλεση αριθµητικών και λογικών πράξεων, για προσωρινή αποθήκευση ή µεταφορά δεδοµένων ή σαν µετρητές. Και στους δύο συσσωρευτές εφαρµόζονται όλες οι εντολές µε µία και µόνη εξαίρεση: εντολές που µεταφέρουν καταστάσεις από τον συσσωρευτή στον καταχωρητή κατάστασης επεξεργαστή και εντολές προσαρµογής δεκαδικών αριθµών (DAA) εφαρµόζονται µόνο στον A και όχι στον Β. • Έναν 16–bit καταχωρητή δείκτη, ο οποίος χρησιµεύει είτε για να απλοποιεί την προσπέλαση σε διαδοχικές θέσεις µνήµης (π.χ. επεξεργασία στοιχείων πινάκων) είτε σαν µετρητής είτε για προσωρινή αποθήκευση ή µεταφορά δεδοµένων. • Έναν 16–bit µετρητή προγράµµατος, που χρησιµεύει για να ελέγχει τη ροή του προγράµµατος. Το περιεχόµενό του αυξάνεται έτσι ώστε, όταν εκτελεστεί µια εντολή, να δείχνει τη διεύθυνση της επόµενης εντολής, που πρέπει να ανακληθεί από τη µνήµη, για να εκτελεστεί. • Έναν 8–bit καταχωρητή κατάστασης επεξεργαστή, του οποίου το περιεχόµενο
109
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
110
παρέχει πληροφορίες σχετικές µε το αποτέλεσµα αριθµητικών ή λογικών πράξεων ή µε την ύπαρξη ή απουσία ειδικών σηµάτων (π.χ. αιτήσεις διακοπής). • Έναν 16–bit καταχωρητή σωρού, ο οποίος δείχνει κάθε φορά τη διεύθυνση της κορυφής του σωρού στη µνήµη. Λόγω της φύσης των εντολών του 6800 είναι πιο λογικό να θεωρούµε τον καταχωρητή αυτόν ως κάτι ανάµεσα σε καταχωρητή σωρού και µετρητή δεδοµένων. Είναι επίσης πολύ εύκολο, µε χρήση κατάλληλων εντολών, να αποθηκεύουµε το περιεχόµενο του δείκτη σωρού και του καταχωρητή δείκτη στην κύρια µνήµη και να τους χρησιµοποιούµε όπου χρειάζονται. O καταχωρητής κατάστασης επεξεργαστή του 6800 χρησιµοποιεί 6 δυαδικά ψηφία ως σηµαίες κατάστασης (flags). Τα δύο περισσότερο σηµαντικά δυαδικά ψηφία του καταχωρητή κατάστασης είναι µόνιµα στη λογική τιµή 1. Οι εντολές διακλάδωσης ελέγχουν τις σηµαίες κατάστασης για να αποφασίσουν αν ικανοποιούνται οι συνθήκες διακλάδωσης ή όχι. Οι σηµαίες κατάστασης πρόσηµου (Negative – N), κρατούµενου (Carry – C), βοηθητικού κρατούµενου (Half Carry – H) και µηδενικού αποτελέσµατος (Zero – Z) έχουν όµοια λειτουργία µε τους αντίστοιχους του 8080/8085. PSW
Kαταχωρητής κατάστασης επεξεργαστή
A
Συσσωρευτής
B
Συσσωρευτής
X
Kαταχωρητής δείκτη
SP
Kαταχωρητές σωρού
PC
Mετρητής προγράµµατος
Kαταχωρητής κατάστασης επεξεργαστή ™¯‹Ì· 4.2
Οι καταχωρητές του 6800
b7
b6
b5
b4
b3
b2
b1
b0
1
1
H
I
N
Z
V
C
Η σηµαία υπερχείλισης (Overflow – V) υποδηλώνει υπερχείλιση σε αριθµητική συµπληρώµατος ως προς 2. Όπως γνωρίζετε, στην αριθµητική συµπληρώµατος ως προς δύο, σε ένα byte µπορούµε να αποθηκεύσουµε τους προσηµασµένους αριθµούς από +128 έως –127. Εάν το αποτέλεσµα µιας αριθµητικής πράξης ξεπεράσει το διάστηµα αυτό (π.χ. όπως συµβαίνει στην περίπτωση µίας πρόσθεσης
4.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 6800
του δεκαδικού αριθµού +80 µε το δεκαδικό αριθµό +60), τότε η σηµαία υπερχείλισης (V) τίθεται στην τιµή 1, για να προειδοποιήσει ότι το αποτέλεσµα της πρόσθεσης δεν είναι σωστό, αφού δεν µπορεί να αποθηκευτεί σε ένα byte. Η σηµαία διακοπής (Interrupt – I) ελέγχει την ικανότητα του µικροεπεξεργαστή να δέχεται ή όχι αιτήσεις διακοπής. Όταν η τιµή της σηµαίας αυτής είναι 1, τότε καµία αίτηση διακοπής δεν γίνεται δεκτή. Όταν η σηµαία έχει την τιµή 0, τότε µπορεί να δεχτεί αιτήσεις διακοπής (για τη διαδικασία και τον τρόπο διαχείρισης των διακοπών θα µιλήσουµε αναλυτικότερα στην ενότητα 4.4). 4.1.3 AÎÚÔ‰¤ÎÙ˜ Î·È Û‹Ì·Ù·
O 6800 είναι ένας 8–bit επεξεργαστής σε DIP (Dual In–line Package) συσκευασία των 40 ακροδεκτών, όπως δείχνει το σχήµα 4.3. Ο 6800 πρωτοεµφανίστηκε µε συχνότητα ρολογιού 1,0 MHz, ενώ αργότερα εµφανίστηκαν και ταχύτερες εκδόσεις του. Οι ακροδέκτες του 6800 µπορούν να οµαδοποιηθούν ως δεχόµενοι σήµατα χρονισµού, σήµατα τροφοδοσίας, είσοδοι/έξοδοι διαύλου δεδοµένων, έξοδοι διαύλου διευθύνσεων και σήµατα ελέγχου. Τα βέλη στους ακροδέκτες του 6800 δείχνουν τη φορά ροής των σηµάτων. • Σήµατα χρονισµού (Φ1, Φ2): Οι ακροδέκτες αυτοί δέχονται τα σήµατα χρονισµού από το εξωτερικό κύκλωµα ρολογιού. • Tροφοδοσία (VCC, VSS): Οι ακροδέκτες τροφοδοσίας του ολοκληρωµένου κυκλώµατος. Παρατηρήστε ότι απαιτείται µία µόνο τάση τροφοδοσίας (+5 V) και όχι τρεις, όπως στην περίπτωση του 8080. • ∆ίαυλος δεδοµένων (D0–D7): Οι 8 γραµµές δεδοµένων D0–D7 του 6800 είναι τριών καταστάσεων και συνδέονται στο δίαυλο δεδοµένων του συστήµατος. Οι γραµµές αυτές χρησιµοποιούνται για τη µεταφορά δεδοµένων από και προς τη µνήµη και τις συσκευές εισόδου/εξόδου. • Read/Write Control (R/W~): H έξοδος R/W~ είναι µια γραµµή ελέγχου που δηλώνει ότι ο µικροεπεξεργαστής πρόκειται να κάνει ανάγνωση ή εγγραφή. Μία υψηλή κατάσταση της γραµµής αυτής (λογική τιµή “1”) σηµατοδοτεί ότι εκτελείται λειτουργία ανάγνωσης, ενώ αντίστοιχα µια χαµηλή κατάσταση (λογική τιµή “0”) σηµατοδοτεί ότι εκτελείται λειτουργία εγγραφής. • Data Bus Enable (DBE): H είσοδος αυτή ελέγχει τις γραµµές του διαύλου δεδοµένων του µικροεπεξεργαστή. Μία λογική τιµή “1” ενεργοποιεί
111
112
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
τις γραµµές δεδοµένων, ενώ µια λογική τιµή “0” τις απενεργοποιεί (δηλαδή τις πηγαίνει σε κατάσταση υψηλής εµπέδησης). Επειδή η µεταφορά δεδοµένων από ή προς τη µνήµη και τις συσκευές εισόδου/εξόδου γίνεται όταν το σήµα Φ2 είναι σε λογική τιµή “1”, το σήµα DBE εµφανίζεται πολλές φορές συνδεµένο µε το σήµα Φ2. • ∆ίαυλος διευθύνσεων (A0–A15): Οι 16 έξοδοι των γραµµών διευθύνσεων του µικροεπεξεργαστή συνδέονται στο δίαυλο διευθύνσεων του συστήµατος. Οι γραµµές αυτές χρησιµοποιούνται για τη διευθυνσιοδότηση των µνηµών και των συσκευών εισόδου/εξόδου. • Valid Memory Address (VMA): Όταν η έξοδος VMA τεθεί στη λογική τιµή “1”, πληροφορεί τις άλλες συσκευές του συστήµατος ότι η διεύθυνση που βρίσκεται στο δίαυλο διευθύνσεων είναι έγκυρη. • Three State Control (TSC): Όταν το σήµα TSC οδηγείται στη λογική τιµή “1” από µια εξωτερική συσκευή, όλες οι γραµµές διευθύνσεων και το σήµα ανάγνωσης/εγγραφής (R/W~) πηγαίνουν σε κατάσταση υψηλής εµπέδησης. H γραµµή TSC χρησιµοποιείται σε λειτουργίες µεταφοράς δεδοµένων χωρίς τη βοήθεια του µικροεπεξεργαστή (λειτουργίες απευθείας προσπέλασης της µνήµης, DMA). Όταν το µικροϋπολογιστικό σύστηµα δεν περιέχει τέτοιες λειτουργίες, το σήµα TSC οδηγείται σε λογική τιµή “0”. • Bus available (BA): Όταν η έξοδος BA βρίσκεται στη λογική τιµή “1” πληροφορεί τις εξωτερικές συσκευές ότι ο µικροεπεξεργαστής έχει σταµατήσει να εκτελεί εντολές. O µικροεπεξεργαστής σταµατά να εκτελεί εντολές είτε λόγω της εντολής αναµονής WAIT (WAI) είτε λόγω της ενεργοποίησης της εισόδου HALT. H γραµµή ελέγχου BA παρέχει µια µέθοδο "ειδοποίησης" των εξωτερικών συσκευών ότι ο δίαυλος δεδοµένων είναι σε κατάσταση υψηλής εµπέδησης και µπορεί να χρησιµοποιηθεί για λειτουργίες απευθείας προσπέλασης της µνήµης. • Halt (HALT~): Όταν η είσοδος αυτή βρίσκεται στη λογική τιµή “0”, ο µικροεπεξεργαστής µεταβαίνει σε κατάσταση στάσης επεξεργασίας. Οι γραµµές τριών καταστάσεων πηγαίνουν σε κατάσταση υψηλής εµπέδησης, ενώ ο µικροεπεξεργαστής σταµατά. Η είσοδος αυτή µπορεί να χρησιµοποιηθεί στη βήµα προς βήµα εκτέλεση ενός προγράµµατος κατά τη διαδικασία εύρεσης πιθανών λογικών λαθών (debugging). Πολλές φορές η είσοδος αυτή απενεργοποιείται οδηγώντας τη στη λογική τιµή “1”.
4.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 6800
Vssv HALT~v Φ1v IRQ~v VMAv NMI~v BAv Vccv A0v A1v A2v A3v A4v A5v A6v A7v A8v A9v A10v A11
113
1v 2v 3v 4v 5v 6v 7v 8v MC6800 9v 10v 11v 12v 13v 14v 15v 16v 17v 18v 19v 20
40v 39v 38v 37v 36v 35v 34v 33v 32v 31v 30v 29v 28v 27v 26v 25v 24v 23v 22v 21
RESET~v TSCv v Φ2v DBEv v R/W~v D0v D1v D2v D3v D4v D5v D6v D7v A15v A14v A13v A12v Vss
Ακροδέκτης
Περιγραφή
Τύπος
Α0–Α15
Γραµµές διευθύνσεων
Έξοδος, τριών καταστάσεων
D0–D7
Γραµµές δεδοµένων
∆ιπλής κατεύθυνσης, τριών καταστάσεων
HALT~
Σήµα στάσης επεξεργασίας
Είσοδος
TSC
Σήµα ελέγχου δίαυλου διευθύνσεων
Είσοδος
R/W~
Σήµα ανάγνωσης/εγγραφής
Έξοδος, τριών καταστάσεων
VMA
Σήµα έγκυρης διεύθυνσης
Έξοδος
DBE
Σήµα ελέγχου δίαυλου δεδοµένων
Είσοδος
BA
Σήµα κατάστασης διαύλων
Έξοδος
IRQ~
Σήµα ενεργοποίησης διακοπής IRQ
Είσοδος
RESET
Σήµα αρχικοποίησης
Είσοδος
NMI~
Ενεργοποίηση διακοπής ΝΜΙ
Είσοδος
Φ1, Φ2
Σήµατα χρονισµού
Είσοδος
VSS, VCC
Σήµατα τροφοδοσίας και γείωσης
™¯‹Ì· 4.3 Οι ακροδέκτες του 6800
114
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
• Interrupt request line (IRQ~): Η είσοδος αυτή αποτελεί την είσοδο διακοπής του µικροεπεξεργαστή. Όταν η είσοδος αυτή βρίσκεται στη λογική τιµή “0”, ο µικροεπεξεργαστής ολοκληρώνει την τρέχουσα εντολή, αποθηκεύει τους καταχωρητές στο σωρό, θέτει τη σηµαία I του καταχωρητή κατάστασης επεξεργασίας στην τιµή 1, ώστε να απορρίψει επόµενες αιτήσεις διακοπής, και µεταβαίνει στη ρουτίνα εξυπηρέτησης διακοπών, που βρίσκεται στη διεύθυνση της µνήµης, που περιέχεται στις θέσεις µνήµης FFF816 και FFF916. H διακοπή αυτή µπορεί να ενεργοποιηθεί και να απενεργοποιηθεί από τον προγραµµατιστή κατά βούληση. • Non maskable interrupt (NMI~): Η αίτηση αυτή διακοπής αντιµετωπίζεται όπως και στην προηγούµενη περίπτωση. Η µόνη διαφορά είναι ότι η διακοπή αυτή δεν ελέγχεται προγραµµατιστικά και εποµένως εκτελείται πάντα µετά το τέλος της τρέχουσας εντολής. Οι θέσεις µνήµης FFFC16 και FFFD16 περιέχουν τη διεύθυνση της µνήµης, όπου ξεκινά η ρουτίνα εξυπηρέτησης της διακοπής. H διακοπή NMI~ έχει µεγαλύτερη προτεραιότητα από την IRQ~. • Reset line (RESET~): Η µετάβαση του σήµατος αυτού από τη λογική τιµή “1” στη λογική τιµή “0” οδηγεί το µικροεπεξεργαστή στη ρουτίνα εξυπηρέτησης Reset ή Restart, η αρχή της οποίας βρίσκεται στη διεύθυνση που υποδεικνύεται από τις θέσεις µνήµης FFFE16 και FFFF16. H είσοδος αυτή χρησιµοποιείται για την αρχικοποίηση του µικροεπεξεργαστή.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.1 ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.2
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.3
Ποιους καταχωρητές διαθέτει ο µικροεπεξεργαστής 6800;
Έστω ότι ο συσσωρευτής Α περιέχει την τιµή 46 16 και το περιεχόµενο της θέσης µνήµης 0112 16 είναι 3C 16. Εάν εκτελέσουµε την εντολή ADDA $0112 του µικροεπεξεργαστή, η οποία προσθέτει τα περιεχόµενα του Α και της θέσης µνήµης 011216 και αποθηκεύει το αποτέλεσµα πίσω στον Α, ποιες θα είναι οι τιµές των σηµαιών κατάστασης του καταχωρητή κατάστασης επεξεργαστή;
Απαριθµήστε τα σήµατα ελέγχου που περιέχει ο 6800.
4.2 Xƒ√¡π™ª√™ ∆√À 6800 – Xƒ√¡π∫∏ ∞∫√§√À£π∞ ∂∫∆∂§∂™∏™ ∂¡∆√§ø¡
4.2 XÚÔÓÈÛÌfi˜ ÙÔ˘ 6800 – XÚÔÓÈ΋ ·ÎÔÏÔ˘ı›· ÂÎÙ¤ÏÂÛ˘ ÂÓÙÔÏÒÓ
™ÎÔfi˜ Ο 6800 χρησιµοποιεί µια εντελώς διαφορετική φιλοσοφία όσον αφορά στο χρονισµό των σηµάτων ελέγχου µε τους διαύλους διευθύνσεων και δεδοµένων, η οποία είναι πολύ πιο απλή. Σκοπός της ενότητας αυτής είναι να σας παρουσιάσει αυτές τις ακολουθίες χρονισµού. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα έχετε ολοκληρώσει τη µελέτη αυτής της ενότητας θα µπορείτε να περιγράψετε πώς µεταβάλλονται τα σήµατα χρονισµού κατά τη διάρκεια ενός κύκλου µηχανής του 6800. ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Εάν έχετε κατανοήσει τις αντίστοιχες ακολουθίες χρονισµού του 8080/8085, προχωρήστε άφοβα. Εάν σας έχουν δηµιουργηθεί κάποιες απορίες από το προηγούµενο κεφάλαιο, ίσως το κείµενο που ακολουθεί σας βοηθήσει να τις λύσετε.
O 6800 χρησιµοποιεί ένα συνδυασµό δύο σηµάτων ρολογιού για το χρονισµό των λειτουργιών µέσα στο µικροεπεξεργαστή και γενικότερα στο µικροϋπολογιστικό σύστηµα. Αυτά τα δύο σήµατα φαίνονται στο σχήµα 4.4. Παρατηρούµε ότι τα σήµατα Φ1 και Φ2 είναι συµπληρωµατικά, δηλαδή όταν το Φ1 είναι σε υψηλή κατάσταση (λογική τιµή “1”), τότε το Φ2 είναι σε χαµηλή (λογική τιµή “0”) και αντίστροφα. Τα σήµατα χρονισµού Φ1, Φ2 δηµιουργούνται από ξεχωριστά ολοκληρωµένα κυκλώµατα (γεννήτριες χρονισµού – σειρά 6870), ειδικά κατασκευασµένα για το µικροεπεξεργαστή 6800. Ένα επιπλέον σήµα χρονισµού, που έχει το σύµβολο E, χρησιµοποιείται για συγχρονισµό από τις διάφορες συσκευές υποστήριξης, που υπάρχουν µέσα στο µικροϋπολογιστικό σύστηµα. Κάθε κύκλος ρολογιού των Φ1 και Φ2 αποτελεί έναν κύκλο µηχανής, όπως φαίνεται και στο σχήµα 4.4. Οι εντολές του 6800 απαιτούν από δύο έως οκτώ κύκλους µηχανής για να εκτελεσθούν. Οι εντολές διακοπών αποτελούν εξαίρεση απαιτώντας µεγαλύτερο αριθµό κύκλων για την εκτέλεσή τους.
115
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
116
Kύκλοςv µηχανής
Kύκλοςv µηχανής
Φ1 ™¯‹Ì· 4.4
Φ2
Χρονισµός στον 6800
Υπάρχουν τρεις τύποι κύκλων µηχανής που µπορούν να λάβουν χώρα κατά την εκτέλεση µιας εντολής: Κύκλος ανάγνωσης: Kατά τη διάρκεια του κύκλου αυτού ένα byte δεδοµένων µεταφέρεται από τη µνήµη ή µία µονάδα εισόδου/εξόδου προς το µικροεπεξεργαστή. Κύκλος εγγραφής: Kατά τη διάρκεια του κύκλου αυτού ένα byte δεδοµένων µεταφέρεται από το µικροεπεξεργαστή προς τη µνήµη η µία µονάδα εισόδου/εξόδου. Κύκλος εσωτερικής λειτουργίας: Kατά τη διάρκεια του κύκλου αυτού γίνονται εσωτερικές λειτουργίες του µικροεπεξεργαστή και δεν έχουµε δραστηριότητα στους διαύλους του συστήµατος. Όλες οι εντολές του 6800 αποτελούν σύνθεση των τριών παραπάνω βασικών κύκλων µηχανής. Κύκλος ανάγνωσης Ένας τυπικός κύκλος ανάγνωσης από τη µνήµη παρουσιάζεται στο σχήµα 4.5. Κατά τη µετάβαση του σήµατος Φ1 στη λογική τιµή “1”, το σήµα R/W~ µεταβαίνει στη λογική τιµή “1” σηµατοδοτώντας ότι πρόκειται για λειτουργία ανάγνωσης δεδοµένων από τη µνήµη και το σήµα VMA µεταβαίνει στη λογική τιµή “1” δηλώνοντας ότι η διεύθυνση, στην οποία βρίσκονται τα δεδοµένα, έχει τοποθετηθεί στο δίαυλο δεδοµένων. Το σήµα αυτό, όπως και το σήµα R/W~, παραµένει στη λογική τιµή “1” µέχρι το τέλος του κύκλου µηχανής, δηλαδή µέχρι την αρνητική ακµή του σήµατος Φ2. Η µνήµη θα πρέπει να φροντίσει ώστε τα δεδοµένα να τοποθετηθούν στο δίαυλο δεδοµένων το συντοµότερο δυνατό και πριν το τέλος του κύκλου µηχανής. Ο µικροεπεξεργαστής µεταφέρει τα δεδοµένα στους εσωτερικούς καταχωρητές του µε την αρνητική ακµή του Φ2. Τα δεδοµένα θα πρέπει να είναι σταθερά για µια ελάχιστη περίοδο χρόνου στο τέλος του κύκλου µηχανής.
4.2 Xƒ√¡π™ª√™ ∆√À 6800 – Xƒ√¡π∫∏ ∞∫√§√À£π∞ ∂∫∆∂§∂™∏™ ∂¡∆√§ø¡
117
Φ1 Φ2
R/W VMA A0 – A15
∆ιεύθυνση ™¯‹Ì· 4.5
D0 – D7
∆εδοµένα
Κύκλος ανάγνωσης
Παρατηρούµε ότι κατά την παραπάνω διαδικασία η διεύθυνση είναι σταθερή κατά το µεγαλύτερο µέρος του κύκλου µηχανής και ότι ο δίαυλος διευθύνσεων δεν µεταβαίνει ούτε στιγµή σε κατάσταση υψηλής εµπέδησης. Έτσι λειτουργίες απευθείας προσπέλασης της µνήµης (λειτουργίες DMA) είναι δύσκολο να υλοποιηθούν. Κύκλος εγγραφής Το σχήµα 4.6 παρουσιάζει έναν τυπικό κύκλο εγγραφής. H διεύθυνση, στην οποία εγγράφονται τα δεδοµένα, είναι σταθερή στο δίαυλο διευθύνσεων καθ’ όλη τη διάρκεια του κύκλου και σηµατοδοτείται από το σήµα VMA. Τα δεδοµένα τοποθετούνται από το µικροεπεξεργαστή στο δίαυλο δεδοµένων µε τη θετική ακµή του σήµατος DBE κατά το πρώτο µισό του κύκλου µηχανής και παραµένουν σε αυτόν µέχρι το τέλος του κύκλου µηχανής. Στο χρόνο αυτό τα δεδοµένα θα πρέπει να αποθηκευθούν στη µνήµη ή στη µονάδα εισόδου/εξόδου. Φ1 Φ2 R/W VMA A0 – A15
∆ιεύθυνση
DBE D0 – D7
∆εδοµένα ∆ίαυλος δεδοµένωνv σε υψηλή εµπέδηση
™¯‹Ì· 4.6
Κύκλος εγγραφής
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
118
Στο χρονικό διάστηµα, στο οποίο το σήµα DBE είναι στη λογική τιµή “0”, ο δίαυλος δεδοµένων είναι σε κατάσταση υψηλής εµπέδησης. Σε πολλές περιπτώσεις µικροϋπολογιστικών συστηµάτων βασισµένων στον 6800, το σήµα DBE είναι ενωµένο µε το σήµα ρολογιού Φ2. Αν ο χρόνος, όπου το DBE είναι στη λογική τιµή “1” είναι πολύ µικρός και δεν προλαβαίνει η µνήµη (ή η µονάδα εισόδου/εξόδου) να ανταποκριθεί στην εγγραφή, τότε µπορούµε να τον αυξήσουµε µε δύο διαφορετικούς τρόπους: • Mεγαλώνοντας το διάστηµα του χρόνου, όπου το DBE είναι στη λογική τιµή “1”, και µειώνοντας το διάστηµα του χρόνου, όπου είναι στη λογική τιµή “0” (διατηρώντας κατά τα άλλα την ίδια περίοδο ρολογιού). Στην περίπτωση αυτή βέβαια τα σήµατα DBE και Φ2 δεν είναι πλέον τα ίδια, ενώ θα πρέπει να λάβουµε υπόψη µας ότι υπάρχει ένας ελάχιστος χρόνος, όπου το σήµα DBE θα πρέπει να βρίσκεται στη λογική τιµή “0”. Η περίπτωση αυτή φαίνεται στο σχήµα 4.7. Φ2 ™¯‹Ì· 4.7
Αλλάζοντας το DBE
DBE
• Eπιµηκύνοντας την περίοδο του ρολογιού κατά τον κύκλο εγγραφής (ή ανάγνωσης αντίστοιχα) της µνήµης. Η περίπτωση αυτή φαίνεται στο σχήµα 4.8. Η επιµήκυνση αυτή δεν µπορεί να είναι όσο µεγάλη θέλουµε, καθώς ο 6800 αποτελείται από δυναµικά κυκλώµατα και µεγάλα στατικά χρονικά διαστήµατα ρολογιού έχουν ως αποτέλεσµα την απώλεια των δεδοµένων των εσωτερικών καταχωρητών του. Τα σήµατα Φ1 και Φ2 δεν µπορούν να διατηρηθούν σταθερά για χρονικό διάστηµα µεγαλύτερο των 9,5 µs. Φ1 Φ2 ™¯‹Ì· 4.8
Eπιµήκυνσηv ρολογιού
Εκτείνοντας το χρονισµό
Κύκλος εσωτερικής λειτουργίας Κατά τη διάρκεια ενός κύκλου εσωτερικής λειτουργίας δεν υπάρχει καµία δραστηριότητα στους διαύλους του µικροεπεξεργαστή. Το σήµα R/W~ βρίσκεται σε υψηλό δυναµικό, ενώ το σήµα VMA σε χαµηλό δυναµικό.
4 . 3 O π ∫ ∞ ∆ ∞ ™ ∆ ∞ ™ ∂ π ™ WA I T, H O L D ∫ ∞ π H A L T
119
Περιγράψτε τη χρονική ακολουθία εκτέλεσης ενός κύκλου µηχανής εγγραφής στη µνήµη.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.4
Σε ποιες χρονικές περιόδους κατά τη διάρκεια ενός κύκλου εγγραφής ή ανάγνωσης είναι το σήµα VMA ενεργό (δηλαδή στη λογική τιµή “1”);
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.5
4.3 OÈ 4.3 OÈ Î·Ù·ÛÙ¿ÛÂȘ Wait, Hold Î·È Halt
Όπως στον 8080/8085, έτσι και στον 6800 µπορούµε να εισάγουµε το µικροεπεξεργαστή σε ειδικές καταστάσεις που χρησιµοποιούνται σε συγκεκριµένες περιπτώσεις. Με την εντολή WAIT ο 6800 τίθεται σε κατάσταση αναµονής διακοπής. H εντολή αυτή εκτελείται όταν ο µικροεπεξεργαστής δεν έχει καµία εργασία να εκτελέσει και εποµένως περιµένει κάποια διακοπή. Κατά την εκτέλεση της εντολής WAIT τα περιεχόµενα των καταχωρητών αποθηκεύονται στο σωρό και ο µικροεπεξεργαστής αναµένει µία διακοπή στους ακροδέκτες IRQ~, NMI~ ή RESET~, όπως φαίνεται στο σχήµα 4.9. Όταν τα περιεχόµενα όλων των καταχωρητών αποθηκευτούν στο σωρό, ο 6800 θέτει το δίαυλο διευθύνσεων και το δίαυλο δεδοµένων σε κατάσταση υψηλής εµπέδησης. Cyclev #1
v #2
v #3
v #4
v #5
v #6
v #7
v #8
v #9
v #10
v n
v v v v v n+1 n+2 n+3 n+4 n+5
Φ2 Addressv Bus
New PCv Address Instruction
SP(n)
SP(n-1) SP(n-2) SP(n-3) SP(n-4) SP(n-5) SP(n-6)
FFF8
FFF9
R/W VMA Interruptv Mask
Πρώτη εντολή v της ρουτίνας v εξυπηρέτησης διακοπής
IRQ orv NMI Data Bus Waitv Inst
PC 0-7 PC 8-15 IX0 - 7 IX8 - 15 Accumv Accumv A B
SR
New PC 8-15v New PC 0-7v Address Address
BA
∆ίαυλοι σεv υψηλήv εµπέδηση ™¯‹Ì· 4.9 Η εντολή WAI
120
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
Μια συχνή χρήση της εντολής WAIT είναι για τη µεταφορά δεδοµένων µε απευθείας προσπέλαση της µνήµης (λειτουργία DMA). Το γεγονός ότι οι δίαυλοι του µικροεπεξεργαστή είναι σε κατάσταση υψηλής εµπέδησης µας δίνει τη δυνατότητα να χρησιµοποιήσουµε τους δίαυλους του µικροϋπολογιστικού συστήµατος για να µεταφέρουµε δεδοµένα µεταξύ δύο περιφερειακών συσκευών. Επίσης, η αποθήκευση των καταχωρητών στο σωρό µας διευκολύνει, αφού το τέλος της µεταφοράς των δεδοµένων συνήθως γνωστοποιείται µε µία αίτηση διακοπής,. Εάν λοιπόν χρησιµοποιούµε τον 6800, το µόνο που χρειάζεται να κάνουµε είναι να ξεκινήσουµε τη µεταφορά δεδοµένων µε χρήση απευθείας προσπέλασης της µνήµης εκτελώντας µία εντολή WAIT. Με το τέλος της µεταφοράς των δεδοµένων, δηµιουργείται µία διακοπή και συνεχίζεται η εκτέλεση του προγράµµατος. Μια άλλη κατάσταση, την οποία θα πρέπει να αναφέρουµε, είναι η κατάσταση HOLD. Με βάση την κατάσταση αυτή, µπορούµε να θέσουµε το δίαυλο δεδοµένων και το δίαυλο διευθύνσεων του µικροεπεξεργαστή σε κατάσταση υψηλής εµπέδησης έτσι ώστε να µπορέσουν να τους χρησιµοποιήσουν κάποιες από τις υπόλοιπες συσκευές του µικροϋπολογιστή µας (π.χ. υλοποιώντας µεταφορά δεδοµένων από και προς τη µνήµη). Οι δίαυλοι διευθύνσεων και δεδοµένων µπορούν να τεθούν σε κατάσταση υψηλής εµπέδησης χρησιµοποιώντας τα σήµατα TSC και DBE. Το σήµα TSC ελέγχει το δίαυλο διευθύνσεων και τα σήµατα VMA και R/W~ του µικροεπεξεργαστή. Όταν το σήµα αυτό µεταβεί στη λογική τιµή “1”, θέτει σε κατάσταση υψηλής εµπέδησης τις γραµµές του διαύλου διευθύνσεων και το σήµα R/W~. Τότε τα σήµατα VMA και BA υποχρεωτικά µεταβαίνουν στη λογική τιµή “0”. Το τµήµα TSC έχει όµως το επιπλέον χαρακτηριστικό ότι, όταν µεταβεί στη λογική τιµή “1”, θα πρέπει ταυτόχρονα να σταµατήσει και το ρολόι κρατώντας το Φ1 στη λογική τιµή “1” και το Φ2 στη λογική τιµή “0”. O χρονισµός αυτός φαίνεται καθαρά στο σχήµα 4.10. Έχουµε όµως αναφέρει ήδη ότι δεν θα πρέπει το ρολόι του 6800 να µείνει σταθερό για περισσότερο από 9,5 µs, γιατί αλλιώς ο µικροεπεξεργαστής χάνει όλα τα δεδοµένα των εσωτερικών καταχωρητών του. Μπορούµε εποµένως να θέτουµε σε κατάσταση υψηλής εµπέδησης το δίαυλο διευθύνσεων για µικρό µόνο χρονικό διάστηµα. Μόλις η είσοδος TSC θέσει σε κατάσταση υψηλής εµπέδησης το δίαυλο διευ-
4 . 3 O π ∫ ∞ ∆ ∞ ™ ∆ ∞ ™ ∂ π ™ WA I T, H O L D ∫ ∞ π H A L T
121
Φ1 Φ2 TSC A0 – A15 ∆ίαυλος διευθύνσεων,v R/W και VMAv σε υψηλή εµπέδηση
DBE – Φ2 D0 – D7
™¯‹Ì· 4.10 ∆ίαυλος δεδοµένωνv σε υψηλή εµπέδηση
θύνσεων, η είσοδος DBE µπορεί να θέσει σε αντίστοιχη κατάσταση το δίαυλο δεδοµένων του µικροεπεξεργαστή. Όταν η είσοδος DBE είναι στη λογική τιµή “0”, ο δίαυλος δεδοµένων τίθεται σε κατάσταση υψηλής εµπέδησης. Υπάρχουν δύο σηµαντικά σηµεία που αφορούν στη χρήση των σηµάτων TSC και DBE. Το πρώτο είναι ότι το σήµα BA µεταβαίνει στη λογική τιµή “1”, όταν οι δίαυλοι του µικροεπεξεργαστή έχουν τεθεί σε κατάσταση υψηλής εµπέδησης από τα σήµατα TSC, DBE. Με τον τρόπο αυτό, το σήµα ΒΑ δείχνει ότι οι δίαυλοι είναι διαθέσιµοι κατά τη διάρκεια αναµονής (WAIT State) ή στάσης (HALT State), όπως θα περιγράψουµε παρακάτω. Το δεύτερο σηµείο είναι ότι τα σήµατα TSC και DBE θέτουν σε κατάσταση υψηλής εµπέδησης το δίαυλο του µικροεπεξεργαστή σε δύο ίσα µέρη. Επειδή, όµως, σε πολλά συστήµατα βασισµένα στον 6800 τα σήµατα Φ2 και DBE είναι όµοια, η µετάβαση σε κατάσταση υψηλής εµπέδησης του δίαυλου διευθύνσεων θέτει σε αντίστοιχη κατάσταση και το δίαυλο δεδοµένων. Η διαδικασία αυτή φαίνεται στο σχήµα 4.10. Η επόµενη κατάσταση, µε την οποία θα ασχοληθούµε, είναι η κατάσταση HALT. Η κατάσταση HALT του 6800 είναι ισοδύναµη µε την κατάσταση HOLD του 8080. Όταν η είσοδος HALT~ του 6800 µεταβεί στη λογική τιµή “0”, τότε µε την ολοκλήρωση της εκτέλεσης της τρέχουσας εντολής ο δίαυ-
Οι δίαυλοι σε κατάσταση υψηλής εµπέδησης
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
122
λος του µικροεπεξεργαστή τίθεται σε κατάσταση υψηλής εµπέδησης. Η κατάσταση αυτή φαίνεται στο σχήµα 4.11. Παρατηρούµε ότι το σήµα BA έχει λογική τιµή “1”, το VMA λογική τιµή “0”, ενώ το σήµα R/W~ και οι δίαυλοι διευθύνσεων και δεδοµένων τίθενται σε κατάσταση υψηλής εµπέδησης.
Tελευταίος κύκλος µηχανήςv της τρέχουσας εντολής
Προσκόµισηv επόµενης εντολής
Φ1 Φ2
HALT BA VMA R/W A0 – A15 D0 – D7 ™¯‹Ì· 4.11
Η κατάσταση HALT
Kατάσταση HALT όπου v οι δίαυλοι είναι σε v κατάσταση υψηλής εµπέδησης
Συνοψίζοντας, διαπιστώνουµε ότι ο 6800 παρέχει δύο τρόπους για να εκτελέσει απευθείας προσπέλαση της µνήµης (DMA). Είτε µπορούν να χρησιµοποιηθούν τα σήµατα TSC και DBE για να αποκτηθεί έλεγχος των διαύλων του συστήµατος για το χρόνο που απαιτείται για µια και µόνο µια προσπέλαση (DMA) είτε µπορεί να χρησιµοποιηθεί η είσοδος HALT~, ακολουθώντας την όποια εξωτερική λογική µπορεί να αποκτήσει έλεγχο του διαύλου δεδοµένων για όσο χρόνο θέλουµε. Επίσης επιµηκύνοντας τα σήµατα ρολογιού Φ1 και Φ2 µπορούµε να µεταφέρουµε και διευθύνσεις, που δηµιουργούνται στο µικροεπεξεργαστή, καθώς και διευθύνσεις DMA κατά τη διάρκεια ενός κύκλου µηχανής. Το σήµα VMA
4.4 √π ¢π∞∫√¶∂™ ™∆√¡ 6800
123
αναγνωρίζει τις διευθύνσεις που δηµιουργούνται από το µικροεπεξεργαστή. Ο τρόπος, µε τον οποίο µπορεί να γίνει αυτό, φαίνεται στο σχήµα 4.12. Φ1 Φ2
A0 – A15
DMA Address
Normal Address
VMA D0 – D7
DMA Data
Normal Data
™¯‹Ì· 4.12
DBE
Λειτουργία DMA
Παρατηρούµε βέβαια ότι εµφανίζονται κάποιες ιδιαίτερα πολύπλοκες απόψεις σχεδιασµού. Οι δυσκολίες όµως αυτές εξαφανίζονται, όταν χρησιµοποιούνται οι βασικές συσκευές υποστήριξης του 6800, για να επιτευχθεί λογική απευθείας προσπέλασης της µνήµης. Ειδικότερα µπορεί να χρησιµοποιηθεί το 6875 κύκλωµα χρονισµού σε συνδυασµό µε τον 6844 ελεγκτή λειτουργιών DMA.
Ποια η διαφορά ανάµεσα στις καταστάσεις WAIT, HOLD και HALT; Σε ποια περίπτωση θα χρησιµοποιούσατε την καθεµία από αυτές;
4.4 √È ‰È·ÎÔ¤˜ ÛÙÔÓ 6800
O 6800 διαθέτει τρία είδη διακοπών µε βάση το υλικό. Αυτές είναι oι εξής: 1. H αρχικοποίηση RESET~. 2. ∆ιακοπή χωρίς µάσκα (NMI~). 3. Αίτηση διακοπής (IRQ~). Επίσης διαθέτει και µια εντολή για διακοπή µε βάση το λογισµικό (SWI). Όταν το σήµα RESET~ διατηρείται στη λογική τιµή “0” για κάποιο χρονικό διάστηµα και µετά µεταβαίνει στη λογική τιµή “1”, ο επεξεργαστής αυτόµατα µεταπηδά σε µια διαδικασία εξυπηρέτησης της διακοπής αρχικοποίησης (Reset Interrupt service).
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.6
124
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
Η σηµαία I του καταχωρητή κατάστασης επεξεργαστή γίνεται 1 ώστε να απαγορεύσει νέες διακοπές και µετά ο µετρητής προγράµµατος φορτώνεται µε τη διεύθυνση που περιέχεται στις θέσεις µνήµης FFFE16 και FFFF16. Οι δύο αυτές θέσεις µνήµης είναι δεσµευµένες για το διάνυσµα αρχικοποίησης (reset vector). Το διάνυσµα αυτό περιέχει τη διεύθυνση της µνήµης, όπου ξεκινά η ρουτίνα εξυπηρέτησης της διακοπής αρχικοποίησης. H είσοδος διακοπής χωρίς µάσκα (NMI~) στον 6800 ενεργοποιείται, όταν το σήµα NMI~ µεταβεί στη λογική τιµή “0”. Στην περίπτωση αυτή ο µικροεπεξεργαστής µεταπηδά στη διαδικασία εξυπηρέτησης της διακοπής χωρίς µάσκα. H τρέχουσα εντολή ολοκληρώνεται, τα περιεχόµενα των καταχωρητών αποθηκεύονται στο σωρό, η σηµαία I του καταχωρητή κατάστασης επεξεργαστή γίνεται 1 και στο µετρητή προγράµµατος µεταφέρεται η διεύθυνση που περιέχει το διάνυσµα διακοπής, που βρίσκεται στις θέσεις µνήµης FFFC16 και FFFD16. O µικροεπεξεργαστής τότε ξεκινά την εκτέλεση της ρουτίνας εξυπηρέτησης της διακοπής χωρίς µάσκα. H είσοδος αίτησης διακοπής (IRQ~) ενεργοποιείται, όταν το σήµα IRQ~ µεταβεί σε χαµηλή κατάσταση. Τότε ο µικροεπεξεργαστής µεταπηδά στη διαδικασία εξυπηρέτησης της αίτησης διακοπής. H τρέχουσα εντολή ολοκληρώνεται και ελέγχεται η σηµαία I του καταχωρητή κατάστασης επεξεργαστή. Αν η σηµαία I έχει την τιµή 1, ο µικροεπεξεργαστής αγνοεί την αίτηση διακοπής και συνεχίζει µε την εκτέλεση της επόµενης εντολής του κανονικού προγράµµατος. Αν η σηµαία I έχει την τιµή 0, τότε ο µικροεπεξεργαστής αποθηκεύει το περιεχόµενο των καταχωρητών στο σωρό. Στη συνέχεια θέτει τη σηµαία I στην τιµή 1 και µεταφέρει στο µετρητή προγράµµατος τη διεύθυνση που περιέχει το διάνυσµα αίτησης διακοπής, που βρίσκεται αποθηκευµένο στις θέσεις µνήµης FFF816 και FFF916. O µικροεπεξεργαστής, τότε, ξεκινά την εκτέλεση της ρουτίνας εξυπηρέτησης της αίτησης διακοπής. Τα διανύσµατα διακοπών των συστηµάτων, που βασίζονται στον 6800, φαίνονται στο σχήµα 4.13. Οι διευθύνσεις που περιέχονται σε αυτές τις θέσεις µνήµης αναγκάζουν τον επεξεργαστή να µεταβεί στην κατάλληλη ρουτίνα εξυπηρέτησης διακοπής. H είσοδος αίτησης διακοπής έχει χαµηλότερη προτεραιότητα και από την είσοδο RESET~ και από την είσοδο NMI~. Η χρήση των διευθύνσεων FFF816 έως FFFF16 δεν είναι τυχαία. Συνήθως στα µικροϋπολογιστικά συστήµατα, τα οποία είναι βασισµένα στον 6800, η µνήµη ROM,
4.5 ™À¡√§√ ∂¡∆√§ø¡ – Tƒ√¶√π ¢π∂À£À¡™π√¢√∆∏™∏™
125
η οποία περιέχει το πρόγραµµα του συστήµατος, είναι τοποθετηµένη στις υψηλότερες θέσεις της µνήµης, ενώ η µνήµη RAM, η οποία περιέχει προσωρινά αποτελέσµατα, είναι τοποθετηµένη στις χαµηλότερες θέσεις της µνήµης.
FFF8 FFF9 FFFA FFFB FFFC FFFD FFFE FFFF
MSB LSB MSB LSB MSB LSB MSB LSB
∆ιάνυσµα αίτησης διακοπής ∆ιάνυσµα software διακοπής ™¯‹Ì· 4.13
∆ιάνυσµα Nonmaskable διακοπής ∆ιάνυσµα επανεκκίνησης
Αρχικοποίηση του 6800 Όταν συνδέεται µε την τροφοδοσία ο 6800, αυτόµατα πυροδοτείται η αρχικοποίηση του, µόλις η τάση ανέβει πάνω από τα +4.75 V. Το γεγονός ότι η αρχικοποίηση αναπαριστά αρχικές συνθήκες εξηγεί επίσης και το λόγο για τον οποίο δεν σώζονται τα περιεχόµενα των καταχωρητών του µικροεπεξεργαστή, όπως συµβαίνει µε κάθε άλλου είδους διακοπή. Είναι φανερό ότι όταν ξεκινάµε τη λειτουργία του συστήµατος δεν µπορεί να υπάρχουν χρήσιµα δεδοµένα στους καταχωρητές. 4.5 ™‡ÓÔÏÔ ÂÓÙÔÏÒÓ – TÚfiÔÈ ‰È¢ı˘ÓÛÈÔ‰fiÙËÛ˘
Οι εντολές του προγράµµατος αποθηκεύονται σε bytes στην κύρια µνήµη. Ο 6800 χρησιµοποιεί εντολές των 1, 2 ή 3 bytes. Το πρώτο byte της εντολής είναι πάντα ο κωδικός λειτουργίας και διακρίνει µια από τις 197 εντολές, που ο µικροεπεξεργαστής µπορεί να εκτελέσει. H Motorola οµαδοποιεί τις εντολές του 6800 στις ακόλουθες οµάδες: 1. Εντολές συσσωρευτή και µνήµης. 2. Εντολές καταχωρητή δείκτη και δείκτη σωρού.
∆ιανύσµατα διακοπών (τα MSB και LSB αποτελούν το σηµαντικότερο και το λιγότερο σηµαντικό byte αντίστοιχα της διεύθυνσης)
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
126
3. Εντολές αλµάτων και διακλαδώσεων. 4. Εντολές καταχωρητή κατάστασης επεξεργαστή. Η πρώτη οµάδα περιέχει αριθµητικές, λογικές, ελέγχου δεδοµένων και µεταφοράς δεδοµένων εντολές. Η δεύτερη οµάδα περιέχει εντολές αύξησης ή ελάττωσης, φόρτωσης ή αποθήκευσης και µεταφοράς, που χρησιµοποιούν τον καταχωρητή δείκτη και το δείκτη σωρού. Σ' αυτό το σηµείο θυµίζουµε ότι ο 16–bit καταχωρητής δείκτης του 6800 χρησιµοποιείται όταν εκτελούµε εντολές µε τη µέθοδο διευθυνσιοδότησης καταχωρητή δείκτη. Οι εντολές άλµατος και διακλάδωσης χρησιµοποιούνται για τον έλεγχο της µεταφοράς της εκτέλεσης του προγράµµατος από ένα σηµείο σε κάποιο άλλο. Όλες οι εντολές διακλάδωσης χρησιµοποιούν τη µέθοδο σχετικής διευθυνσιοδότησης. H εντολή "No OPeration" (NOP) (καµία λειτουργία) αυξάνει απλώς το µετρητή προγράµµατος κατά ένα και δεν έχει καµία επίπτωση ούτε στις σηµαίες κατάστασης του καταχωρητή κατάστασης επεξεργασίας ούτε στους καταχωρητές ούτε στις θέσεις µνήµης. Οι εντολές καταχωρητή κατάστασης επεξεργαστή είναι διαθέσιµες στο χρήστη για απευθείας διαχείριση των σηµαιών του καταχωρητή κατάστασης επεξεργαστή. Οι τρόποι διευθυνσιοδότησης που χρησιµοποιεί ο 6800 είναι οι παρακάτω: 1. Υπονοούµενη διευθυνσιοδότηση 2. Άµεση διευθυνσιοδότηση 3. Μηδενικής σελίδας & απόλυτη διευθυνσιοδότηση 4. ∆εικτοδοτηµένη διευθυνσιοδότηση 5. Σχετική διευθυνσιοδότηση Πολλές εντολές του 6800 χρησιµοποιούν την υπονοούµενη διευθυνσιοδότηση. Οι εντολές αυτές χρησιµοποιούνται όταν δεν χρειάζεται να µεταφερθούν έντελα εκτός του επεξεργαστή και είναι εντολές µεγέθους ενός byte. Μερικά παραδείγµατα τέτοιων εντολών είναι ο µηδενισµός και η αύξηση ή ελάττωση κατά 1 των συσσωρευτών. Μερικά βιβλία αναφερόµενα στον 6800 παρουσιάζουν ξεχωριστά και τη µέθοδο διευθυνσιοδότησης συσσωρευτή. Αυτή µπορεί να θεωρηθεί ως ειδική περίπτωση της υπονοούµενης διευθυνσιοδότησης.
4.5 ™À¡√§√ ∂¡∆√§ø¡ – Tƒ√¶√π ¢π∂À£À¡™π√¢√∆∏™∏™
127
Στις εντολές που χρησιµοποιούν άµεση διευθυνσιοδότηση, το έντελο βρίσκεται αµέσως µετά τον κωδικό λειτουργίας της εντολής στη µνήµη. Οι περισσότερες άµεσες εντολές του 6800 είναι µεγέθους δύο bytes, ενώ υπάρχουν και µερικές εντολές µεγέθους 3 bytes. Οι εντολές µηδενικής σελίδας έχουν µέγεθος δύο bytes. Το πρώτο περιέχει τον κωδικό λειτουργίας της εντολής, ενώ το δεύτερο περιέχει το λιγότερο σηµαντικό byte της 16–bit διεύθυνσης, που περιέχει τα δεδοµένα. Το περισσότερο σηµαντικό byte είναι πάντα το 00. Εκτός από τις εντολές αυτές, υπάρχουν και οι εντολές που χρησιµοποιούν απόλυτη διευθυνσιοδότηση. Οι εντολές αυτές έχουν µέγεθος τριών bytes, όπου το πρώτο περιέχει τον κωδικό λειτουργίας, ενώ τα υπόλοιπα δύο τη διεύθυνση όπου βρίσκονται τα δεδοµένα, που απαιτεί η εντολή. Το δεύτερο byte περιέχει το περισσότερο σηµαντικό byte της διεύθυνσης, ενώ το επόµενο το λιγότερο σηµαντικό byte της διεύθυνσης. Με τον τρόπο αυτό ο 6800 µπορεί να διευθυνσιοδοτήσει όλη την κύρια µνήµη (64 KB). O 6800, όπως έχει ήδη αναφερθεί, περιέχει έναν 16 bit καταχωρητή δείκτη. Οι εντολές που χρησιµοποιούν δεικτοδοτηµένη προσπέλαση έχουν µέγεθος δύο bytes. Το πρώτο byte περιέχει τον κωδικό λειτουργίας της εντολής. Το δεύτερο byte περιέχει µια τιµή, η οποία προστίθεται στα περιεχόµενα του καταχωρητή δείκτη για να καθορίσει τη διεύθυνση της µνήµης, όπου υπάρχουν τα δεδοµένα που απαιτεί η εντολή. H σχετική διευθυνσιοδότηση χρησιµοποιείται στις εντολές διακλάδωσης του 6800. Οι εντολές αυτές έχουν µέγεθος δύο bytes. Το πρώτο byte περιέχει τον κωδικό λειτουργίας της εντολής, ενώ το δεύτερο byte περιέχει την τιµή (προσηµασµένος αριθµός), η οποία προστίθεται στο περιεχόµενο του µετρητή προγράµµατος για να καθορίσει τη διεύθυνση, στην οποία θα συνεχιστεί η εκτέλεση του προγράµµατος, εάν ισχύει η συνθήκη της εντολής.
Σε ένα υποθετικό µικροϋπολογιστικό σύστηµα βασισµένο στον 6800, γνωρίζουµε ότι στη διεύθυνση 001216 της µνήµης είναι αποθηκευµένη η τιµή 5016, στη διεύθυνση 123316 η τιµή 2016, στη διεύθυνση 123416 η τιµή 1516, ενώ ο καταχωρητής δείκτη X περιέχει την τιµή 122316 και ο συσσωρευτής Α την τιµή 0516.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 4.7
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
128
Η εντολή ADDA προσθέτει τα περιεχόµενα του συσσωρευτή Α µε τα δεδοµένα που ορίζει το έντελο και αποθηκεύει τα αποτελέσµατα πίσω στο συσσωρευτή. Εάν η τιµή που περιέχει ο Α µετά την εκτέλεση των παρακάτω εντολών είναι αντίστοιχα (α) 0416, (β) 5516, (γ) 1Α16 και (δ) 2516, τι τρόπο διευθυνσιοδότησης χρησιµοποιεί η καθεµία από τις παρακάτω εντολές, (α) ADDA #FF (β) ADDA $12 (γ) ADDA $1234 (δ) ADDA $10,X
4.6 ™‡ÁÎÚÈÛË ÙÔ˘ 6800 Ì ÙÔÓ 8080/8085
Συγκρίνοντας τον 6800 µε τον 8080 µπορούµε να παρατηρούµε τα εξής: O 6800 έχει πολύ πιο απλό χρονισµό σε σχέση µε τον 8080. Ο κύκλος ρολογιού στην περίπτωση του 6800 ταυτίζεται µε τον κύκλο µηχανής, ενώ στον 8080 ο κάθε κύκλος µηχανής αποτελείται από τρεις έως πέντε κύκλους ρολογιού. Ο 8080 διαθέτει διαφορετικές εντολές για ανάγνωση ή εγγραφή σε συσκευές εισόδου/εξόδου και διαφορετικές για ανάγνωση ή εγγραφή της µνήµης. Στον 6800 όλες οι συσκευές εισόδου/εξόδου είναι προσπελάσιµες σαν θέσεις µνήµης µε αποτέλεσµα να µην χρειάζονται ειδικές εντολές για την προσπέλασή τους. O 6800 έχει πιο απλό σύνολο σηµάτων ελέγχου, δεν πολυπλέκει το δίαυλο δεδοµένων µε το δίαυλο διευθύνσεων ούτε χρησιµοποιεί το δίαυλο δεδοµένων για να εξάγει σήµατα κατάστασης, µε αποτέλεσµα να µην χρειάζεται κάποια συσκευή υποστήριξης αντίστοιχη του ελεγκτή συστήµατος 8228. O 8080 έχει τρεις τάσεις τροφοδοσίας (+5 V, –5 V, +12 V), ενώ ο 6800 µόνο µία (+5 V). Επίσης το σύνολο εντολών του 6800 είναι πιο κατανοητό από αυτό του 8080. O 6800 έχει λιγότερους βασικούς τύπους εντολών, ενώ έχει περισσότερες µεθόδους διευθυνσιοδότησης.
4.6 ™À°∫ƒπ™∏ ∆√À 6800 ª∂ ∆√¡ 8080/8085
129
Στη συνέχεια η Intel παρουσίασε τον 8085 προσπαθώντας να διορθώσει κάποια ελαττώµατα που υπήρχαν στον 8080 και τον έφεραν σε µειονεκτική θέση σε σχέση µε τον 6800. Από την άλλη µεριά οι βελτιώσεις που θα έπρεπε να κάνει η Motorola στις επόµενες εκδόσεις του 6800 είναι οι εξής: • Το κύκλωµα χρονισµού έπρεπε να ενσωµατωθεί στο ολοκληρωµένο κύκλωµα. • Έπρεπε να αναπτύξει πολλές συσκευές υποστήριξης του 6800, ώστε να είναι δυνατή η υλοποίηση µικροϋπολογιστικών συστηµάτων βασισµένων στον 6800 µε µικρό αριθµό από ολοκληρωµένα κυκλώµατα (low chip count). Επιπλέον αδυναµίες του 6800, που παρουσιάστηκαν µε το πέρασµα του χρόνου, είναι οι εξής: • Το σύνολο εντολών του απαιτεί εκτεταµένη χρήση της µνήµης ως αποτέλεσµα των λίγων καταχωρητών δείκτη και έλλειψη ικανότητας µετακίνησης δεδοµένων ανάµεσα στους καταχωρητές της κεντρικής µονάδας επεξεργασίας. • Το σήµα συγχρονισµού Ε, που απαιτείται από τις συσκευές υποστήριξης του 6800, τις καθιστά άχρηστες για οποιοδήποτε άλλο µικροϋπολογιστικό σύστηµα εκτός του 6800.
Ο 6502 είναι ένας µικροεπεξεργαστής των 8 δυαδικών ψηφίων, ο οποίος παρουσιάστηκε το 1975 από την εταιρία MOS Technology. Η φιλοσοφία σχεδιασµού του είναι παρόµοια µε αυτή του Motorola 6800. Ανατρέχοντας στη βιβλιογραφία που υπάρχει στο τέλος του κεφαλαίου ή σε οποιοδήποτε άλλο βιβλίο γνωρίζετε, µελετήστε το µικροεπεξεργαστή 6502. Αφού συγκεντρώσετε αρκετά στοιχεία, κάνετε µια σύγκριση του µικροεπεξεργαστή αυτού µε τον 6800 και παρουσιάστε τις διαφορές τους. Συγκεντρώστε το ενδιαφέρον σας στα παρακάτω σηµεία: • ακροδέκτες του ολοκληρωµένου κυκλώµατος • πλήθος και είδος καταχωρητών • σηµαίες κατάστασης του καταχωρητή κατάστασης επεξεργαστή • σήµατα διακοπής
¢Ú·ÛÙËÚÈfiÙËÙ· 4.1
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
130
• µέθοδοι διευθυνσιοδότησης • κατηγορίες εντολών Ο χρόνος απασχόλησής σας για την ολοκλήρωση αυτής της δραστηριότητας εκτιµάµε πως δεν θα ξεπεράσει τις τρεις ώρες.
¢Ú·ÛÙËÚÈfiÙËÙ· 4.2
Βρείτε για τις διάφορες ηλεκτρονικές συσκευές που έχετε στο σπίτι σας, όπως τηλεφωνικές συσκευές, συσκευές video, παλιοί µικροϋπολογιστές (home computers), κονσόλες ηλεκτρονικών παιχνιδιών (game consoles), τα εγχειρίδια του κατασκευαστή. Σε πολλές από αυτές υπάρχουν αναφορές στον τρόπο που είναι σχεδιασµένες και στα ολοκληρωµένα κυκλώµατα που χρησιµοποιούν. Προσπαθήστε να εντοπίσετε κάποια συσκευή, που να βασίζεται σε κάποιο µικροεπεξεργαστή όµοιο µε κάποιον από αυτούς που γνωρίσατε έως τώρα (Intel 8080/8085, Motorola 6800, Zilog Z80, MOS 6502). Ο χρόνος απασχόλησής σας για την ολοκλήρωση αυτής της δραστηριότητας εκτιµάµε πως δεν θα ξεπεράσει τις δύο ώρες.
™‡ÓÔ„Ë Ο µικροεπεξεργαστής 6800 ήταν η απάντηση της Motorola στον 8080 της Intel. Απαιτεί µία τάση τροφοδοσίας (+5 V) και το ολοκληρωµένο κύκλωµά του αποτελείται από 40 ακροδέκτες. Ο µήκους 16–bit δίαυλος διευθύνσεων µπορεί να προσπελάσει 64 KB µνήµης, ενώ ο δίαυλος δεδοµένων αποτελείται από 8 γραµµές. Ο δίαυλος ελέγχου περιλαµβάνει 9 γραµµές ελέγχου. Αποτελείται από δύο συσσωρευτές, τον καταχωρητή κατάστασης επεξεργαστή, έναν καταχωρητή δείκτη, το µετρητή προγράµµατος και το δείκτη σωρού. Ο καταχωρητής κατάστασης περιέχει έξι σηµαίες (µηδενικού αποτελέσµατος, πρόσηµου, υπερχείλισης, κρατούµενου, διακοπής και βοηθητικού κρατούµενου). Ο κύκλος εντολής του 6800 χωρίζεται σε δύο έως οκτώ κύκλους µηχανής, οι οποίοι διαρκούν έναν κύκλο ρολογιού. Το πλήθος των κύκλων µηχανής εξαρτάται από το µήκος της κάθε εντολής και την πολυπλοκότητά της. Ο χρονισµός των κύκλων µηχανής του 6800 είναι πολύ απλός. Καθ’ όλη τη
™YNOæH
διάρκεια ενός κύκλου ρολογιού το σήµα VMA είναι ενεργό και στο δίαυλο διευθύνσεων βρίσκεται η διεύθυνση της µνήµης, που θα πρέπει να προσπελαστεί. Κατά τη λειτουργία της εγγραφής δεδοµένων, τα δεδοµένα βρίσκονται στο δίαυλο δεδοµένων για το χρονικό διάστηµα που το σήµα DBE είναι ενεργό (συνήθως το DBE ταυτίζεται µε το Φ2). Κατά τη λειτουργία της ανάγνωσης δεδοµένων, ο µικροεπεξεργαστής µεταφέρει την τιµή του διαύλου δεδοµένων στους εσωτερικούς του καταχωρητές κατά την αρνητική ακµή του Φ2 στο τέλος του κύκλου µηχανής, ενώ η µνήµη θα πρέπει να έχει τοποθετήσει τα δεδοµένα στο δίαυλο πριν από την ακµή και να κρατήσει σταθερά τα δεδοµένα για κάποιο µικρό χρονικό διάστηµα µετά την ακµή αυτή. Στην περίπτωση που η µνήµη δεν προλαβαίνει να µεταφέρει τα περιεχόµενα µιας θέσης µνήµης στο δίαυλο δεδοµένων, τότε µπορούµε είτε να επεκτείνουµε το σήµα ρολογιού Φ1 και Φ2 είτε να µεγαλώσουµε τη διάρκεια του παλµού DBE. Η εντολή WAIT του 6800 θέτει το µικροεπεξεργαστή σε κατάσταση αναµονής διακοπής, αποθηκεύει τους καταχωρητές στο σωρό και θέτει τους διαύλους του µικροεπεξεργαστή σε κατάσταση υψηλής εµπέδησης. Επίσης, χρησιµοποιώντας τα σήµατα TSC και VMA ή το σήµα HALT~, µπορούµε να οδηγήσουµε τους δίαυλους δεδοµένων και διευθύνσεων σε κατάσταση υψηλής εµπέδησης, επιτρέποντας έτσι σε άλλες συσκευές να κάνουν µεταφορά δεδοµένων από και προς τη µνήµη χωρίς τη βοήθεια του µικροεπεξεργαστή. O 6800 διαθέτει, εκτός από τη διακοπή λογισµικού SWI, τριών ειδών σήµατα διακοπής. Η δυνατότητα διακοπής µέσω του σήµατος INT µπορεί να ενεργοποιηθεί και να απενεργοποιηθεί µε ειδικές εντολές. Η αίτηση διακοπής µέσω του σήµατος NMI~ εξυπηρετείται πάντα. Το ίδιο συµβαίνει και µε την αίτηση αρχικοποίησης RESET, µε τη µόνη διαφορά ότι δεν σώζονται στο σωρό τα περιεχόµενα των καταχωρητών, καθώς χρησιµοποιείται για την αρχικοποίηση του µικροεπεξεργαστή. Με την εµφάνιση µίας αίτησης διακοπής σταµατά η εκτέλεση του προγράµµατος από το µικροεπεξεργαστή, αποθηκεύονται τα περιεχόµενα των καταχωρητών στο σωρό (όταν χρειάζεται) και φορτώνεται στο µετρητή προγράµµατος η διεύθυνση της πρώτης εντολής της ρουτίνας εξυπηρέτησης της διακοπής µε τη βοήθεια του ανύσµατος διακοπής. Μετά την εκτέλεση της ρουτίνας εξυπηρέτησης της διακοπής, ο µικροεπεξεργαστής συνεχίζει µε την εκτέλεση του προγράµµατος από το σηµείο που σταµάτησε προηγούµενα.
131
K E º A § A I O 4 : O M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ M O T O R O L A 6 8 0 0
132
Ο 6800 περιέχει όλες τις γνωστές κατηγορίες εντολών. Οι εντολές του χρησιµοποιούν άµεση, υπονοούµενη, απόλυτη, δεικτοδοτηµένη, σχετική και διευθυνσιοδότηση µηδενικής σελίδας. Συγκρίνοντας τον 6800 µε τον 8080/8085 µπορούµε να παρατηρήσουµε ότι διαθέτει απλούστερα σήµατα ελέγχου και χρονισµό από τον 8080/8085, δεν διαχωρίζει την κύρια µνήµη από τις συσκευές εισόδου/εξόδου, δεν απαιτεί ξεχωριστά ολοκληρωµένα κυκλώµατα για τον έλεγχο του συστήµατος, ενώ διαθέτει λιγότερες εντολές µε περισσότερους τρόπους διευθυνσιοδότησης. BÈ‚ÏÈÔÁÚ·Ê›·
Τώρα που τελειώσατε την ανάγνωση του τετάρτου κεφαλαίου, καλό είναι να διαθέσετε κάποιον επιπλέον χρόνο για να µελετήσετε τα παρακάτω κείµενα: 1. Theory and Problems of Microprocessor Fundamentals, Schaum’s Outline Series, Roger L. Tokheim, Κεφάλαια 10 & 11. Τα κεφάλαια αυτά αναφέρονται στο µικροεπεξεργαστή 6800, αναλύουν την αρχιτεκτονική, τους τρόπους προσπέλασης και το σύνολο εντολών του και διαθέτουν πολλά παραδείγµατα και ασκήσεις, οι οποίες θα σας βοηθήσουν να κατανοήσετε καλύτερα την ύλη του τετάρτου κεφαλαίου και να εξασκηθείτε. 2. Microprocessor Technology and Microcomputers, McGraw Hill, Edward J. Pasahow, Κεφάλαιο 5. Στις σελίδες 74–79 θα βρείτε πληροφορίες για τον 6800, τα σήµατα και τους καταχωρητές που διαθέτει, τα διαγράµµατα χρονισµού του και τις διάφορες ειδικές καταστάσεις (WAIT, HOLD, HALT, RESET). Στις σελίδες 85–89 θα βρείτε παραδείγµατα εντολών και απλά προγράµµατα. 3. OSBORNE 4 & 8–Bit Microprocessor Handbook, A. Osborne, G. Kane, Osborne/McGraw Hill, Κεφάλαιο 9. Στο κεφάλαιο αυτό θα βρείτε περιγραφή του µικροεπεξεργαστή 6800 και πίνακες µε το σύνολο εντολών του. Το κεφάλαιο αυτό περιέχει και πολλές συσκευές υποστήριξης του 6800, κάποιες από τις οποίες θα αναλύσουµε στο κεφάλαιο 7. Εάν πάλι νοιώθετε ότι έχετε κατανοήσει τα χαρακτηριστικά του 6800, µπορείτε να προχωρήσετε στο επόµενο κεφάλαιο για να ανακαλύψετε ένα νέο µικροεπεξεργαστή.
∫
√ MÈÎÚÔÂÂÍÂÚÁ·ÛÙ‹˜ Intel 8086/8088 ™ÎÔfi˜ Μελετώντας το κεφάλαιο αυτό θα γνωρίσετε τον πιο δηµοφιλή ίσως από τους µικροεπεξεργαστές της Intel, τον 8086/8088. Ο µικροεπεξεργαστής αυτός υιοθετήθηκε από την ΙΒΜ στους προσωπικούς υπολογιστές PC, οι οποίοι γνώρισαν µεγάλη εµπορική επιτυχία, που συνεχίζεται µέχρι σήµερα. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα ολοκληρώσετε τη µελέτη αυτού του κεφαλαίου, θα είστε σε θέση να: • ορίσετε τα δύο ανεξάρτητα τµήµατα, από τα οποία αποτελείται ο 8086 καθώς και τη λειτουργία του καθενός από αυτά. • καθορίσετε τον τρόπο µε τον οποίο γίνεται η προσκόµιση των εντολών. • περιγράψετε την οργάνωση µνήµης που υποστηρίζει. • απαριθµήσετε το πλήθος των καταχωρητών του µικροεπεξεργαστή, καθώς και τη λειτουργία του καθενός. • συγκρίνετε τους καταχωρητές του 8086 µε τους αντίστοιχους του 8080/8085. • εξηγήσετε ποια είναι η χρησιµότητα του ελάχιστου και του µέγιστου τρόπου λειτουργίας του µικροεπεξεργαστή. • δώσετε τη βασική ακολουθία χρονισµού για έναν κύκλο ανάγνωσης και έναν κύκλο εγγραφής. • εξηγήσετε τον τρόπο µε τον οποίο ο 8086 διαχειρίζεται τις αιτήσεις διακοπής. • περιγράψετε τους διαφορετικούς τρόπους διευθυνσιοδότησης που υποστηρίζει. ŒÓÓÔȘ ÎÏÂȉȿ • Intel 8086/8088 • Καταχωρητές Τµήµατος • Μονάδα ∆ιασύνδεσης ∆ιαύλου
• Μονάδα Εκτέλεσης • Πίνακας ∆ιευθύνσεων ∆ιακοπών
5 ∂
º
∞
§
∞
π
√
134
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Στο κεφάλαιο αυτό εξετάζουµε τον Intel 8086. Ο µικροεπεξεργαστής αυτός ήταν ο πρώτος που εµφανίστηκε µε µήκος λέξης 16 bits. Για λόγους συµβατότητας ακολουθεί παρόµοια φιλοσοφία σχεδιασµού µε τον 8080/8085. Θα επικεντρώσουµε την προσοχή µας κυρίως στα νέα χαρακτηριστικά, που εισήγαγε ο µικροεπεξεργαστής αυτός. Ο 8086 διαφέρει από τον 8088 στο ότι ο τελευταίος, αν και µικροεπεξεργαστής των 16–bits, διαθέτει 8 γραµµές δεδοµένων και όχι 16.
5.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 8086
5.1 H aÚ¯ÈÙÂÎÙÔÓÈ΋ ÙÔ˘ 8086
™ÎÔfi˜ Η πρώτη ενότητα του κεφαλαίου αυτού παρουσιάζει τα αρχιτεκτονικά χαρακτηριστικά του 8086, δηλαδή τη γενική φιλοσοφία σχεδιασµού του για την εκτέλεση των εντολών και τον τρόπο οργάνωσης της µνήµης. Παρουσιάζει επίσης τους καταχωρητές και τους ακροδέκτες, που ο µικροεπεξεργαστής αυτός διαθέτει. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Ολοκληρώνοντας τη µελέτη αυτής της ενότητας, θα µπορείτε να περιγράψετε τα δύο βασικά τµήµατα που αποτελούν τον 8086, να καθορίσετε τον τρόπο µε τον οποίο γίνεται η προσκόµιση και εκτέλεση των εντολών, να ορίσετε την οργάνωση µνήµης, την οποία διαθέτει, και να απαριθµήσετε τους καταχωρητές και τους ακροδέκτες του µικροεπεξεργαστή. ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή είναι αρκετά µεγάλη σε µέγεθος. Για την καλύτερη ανάγνωσή της έχει χωριστεί σε µικρότερες υποενότητες. Μελετήστε καθεµία από τις υποενότητες αυτές µε τη σειρά και αφιερώστε αρκετό χρόνο ώστε να τις κατανοήσετε. Μπορείτε, ανά πάσα στιγµή, να κάνετε συγκρίσεις µε την αρχιτεκτονική του 8080, ανατρέχοντας στην Ενότητα 3.1, για να µπορέσετε να κατανοήσετε καλύτερα τα νέα στοιχεία που εισήγαγε ο 8086. O µικροεπεξεργαστής 8086 παρουσιάστηκε από την Intel το 1978 ως η εξέλιξη του ήδη πετυχηµένου 8080. Είναι ο πρώτος µικροεπεξεργαστής που εµφανίζεται µε µήκος λέξης 16 δυαδικών ψηφίων και διαθέτει αρκετά νέα χαρακτηριστικά. Ο σχεδιασµός του έχει γίνει µε τέτοιο τρόπο ώστε να διατηρείται η συµβατότητα σε επίπεδο κώδικα µηχανής µε τον 8080. Το 1980 η Intel παρουσίασε ως µια φυσική επέκταση του τον 8087, ένα µαθηµατικό συνεπεξεργαστή για πράξεις κινητής υποδιαστολής. 5.1.1 °ÂÓÈο ¯·Ú·ÎÙËÚÈÛÙÈο
Στους µικροεπεξεργαστές που είδαµε έως τώρα, η εκτέλεση ενός προγράµµατος γινόταν επαναλαµβάνοντας κάποια βασικά βήµατα: προσκόµιση µιας εντολής από τη µνήµη, αποκωδικοποίηση της εντολής, ανάγνωση των έντε-
135
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
136
λων της εντολής από τη µνήµη, εάν απαιτείται, εκτέλεση της εντολής και αποθήκευση των αποτελεσµάτων, όποτε χρειάζεται, στη µνήµη. Τα παραπάνω βήµατα εκτελούνται πάντοτε ακολουθιακά το ένα µετά το άλλο. Η εκτέλεση µίας εντολής θα πρέπει να ολοκληρωθεί πριν προχωρήσουµε στην επόµενη εντολή. Στον 8086 παρατηρούµε µια διαφορετική προσέγγιση. Mονάδα εκτέλεσης
Mονάδα διασύνδεσης διαύλου
Kαταχωρητέςv δεδοµένων &v δείκτη
Kαταχωρητέςv τµήµατος καιv µετρητήςv προγράµµατος
BHE~/S7v
Aριθµητική &v λογική µονάδα Σηµαίεςv κατάστασης
A19… A16v S6… S3v Mονάδαv διασύνδεσηςv διαύλου
AD15… AD0v INTA~v RD~, WR~v DT/R~v DEN~, ALE
Oυράv εντολών
TEST~ INT NMI RQ~/GT0~ RQ~/GT1~ HOLD HLDA
LOCK~v QS0v QS1v
Mονάδα ελέγχου και χρονισµού
S2~, S1~, S0~
™¯‹Ì· 5.1
Το λειτουργικό διάγραµµα του 8086
CLK RESET READY
MNv MX~
GND
Vcc
5.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 8086
Το σχηµατικό διάγραµµα της εσωτερικής οργάνωσης του 8086 φαίνεται στο σχήµα 5.1. Παρατηρούµε ότι αποτελείται από δύο ανεξάρτητα τµήµατα: τη µονάδα εκτέλεσης (execution unit – EU) και τη µονάδα διασύνδεσης διαύλου (bus interface unit – BIU). Η µονάδα εκτέλεσης είναι υπεύθυνη για την εκτέλεση των εντολών του προγράµµατος, ενώ η µονάδα διασύνδεσης διαύλου είναι υπεύθυνη για την προσκόµιση του κώδικα λειτουργίας και των εντέλων κάθε εντολής και την αποθήκευση των αποτελεσµάτων. Με το διαχωρισµό αυτό η προσκόµιση µιας εντολής µπορεί να γίνεται παράλληλα µε την εκτέλεση κάποιας προηγούµενης εντολής. H µονάδα διασύνδεσης διαύλου περιέχει µία ουρά εντολών (instruction queue) µήκους 6 bytes. Κάθε φορά που η ουρά εντολών έχει χώρο τουλάχιστον 2 bytes, η µονάδα διασύνδεσης διαύλου πραγµατοποιεί µία προσκόµιση λέξης από τη µνήµη. Με αυτό τον τρόπο η ουρά εντολών περιέχει κάθε φορά τις επόµενες εντολές του προγράµµατος. Σε περίπτωση που έχουµε εντολή διακλάδωσης, ο µικροεπεξεργαστής δεν µπορεί να γνωρίζει ποια θα είναι η επόµενη εντολή που θα εκτελέσει, καθώς αυτή εξαρτάται από το εάν ικανοποιείται ή όχι η συνθήκη διακλάδωσης. Είναι πιθανό εποµένως οι εντολές που περιέχει η ουρά εντολών να µην αντιστοιχούν στις επόµενες προς εκτέλεση εντολές. Στην περίπτωση αυτή (όταν εκτελείται δηλαδή µία εντολή διακλάδωσης), η ουρά εντολών αδειάζει και ξεκινά από την αρχή η προσκόµιση εντολών από τη µνήµη µε τις επόµενες εντολές και η αποθήκευσή τους στην ουρά εντολών. Κάθε φορά που η µονάδα εκτέλεσης απαιτεί µία εντολή, αυτή µπορεί να βρεθεί στη µονάδα διασύνδεσης διαύλου. Αντίστοιχα, κάθε φορά που η µονάδα εκτέλεσης απαιτεί την ανάγνωση κάποιου εντέλου ή δεδοµένου ή την αποθήκευση κάποιου αποτελέσµατος στη µνήµη, αναθέτει αυτή την εργασία στη µονάδα διασύνδεσης διαύλου. Με τον τρόπο αυτό ο 8086 προσπαθεί να εκµεταλλευτεί το χρόνο που απαιτείται για την εκτέλεση µίας εντολής, ώστε να προσκοµίσει την επόµενη εντολή από τη µνήµη, µειώνοντας έτσι το συνολικό χρόνο εκτέλεσης ενός προγράµµατος Στη µονάδα διασύνδεσης διαύλου µπορούµε να παρατηρήσουµε επίσης και κάποιους καταχωρητές που έχουν σχέση µε τη διαχείριση της µνήµης (όπως ο µετρητής προγράµµατος και κάποιοι άλλοι για τους οποίους θα µιλήσουµε στην υποενότητα 5.1.2), καθώς και µία µονάδα ελέγχου του διαύλου που παράγει τα απαραίτητα σήµατα χρονισµού.
137
138
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
Η µονάδα εκτέλεσης, από την άλλη µεριά, αποτελείται από µία αριθµητική και λογική µονάδα, τους καταχωρητές δεδοµένων (θα παρατηρήσετε ότι πολλοί από αυτούς είναι όµοιοι µε αυτούς του 8080) και τον καταχωρητή κατάστασης επεξεργαστή. Η µονάδα εκτέλεσης δεν έχει απευθείας πρόσβαση στην κύρια µνήµη, αλλά δέχεται τα δεδοµένα που χρειάζεται από την µονάδα διασύνδεσης διαύλου.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.1
Ποιο είναι το πλεονέκτηµα που οδήγησε τους σχεδιαστές του 8086 στην απόφαση να χωρίσουν το µικροεπεξεργαστή σε δύο ανεξάρτητα τµήµατα; Ποια είναι αυτά τα τµήµατα;
5.1.2 H ÔÚÁ¿ÓˆÛË Ù˘ ÌÓ‹Ì˘
Ο µετρητής προγράµµατος, που διαθέτει ο 8086, έχει µέγεθος 16 bits. Παρόλα αυτά ο µικροεπεξεργαστής διαθέτει 20 γραµµές στο δίαυλο διευθύνσεων, γεγονός που σηµαίνει ότι µπορεί να διευθυνσιοδοτήσει µέχρι 220 = 1 ΜΒ διακριτές θέσεις µνήµης. Ας δούµε µε ποιον τρόπο: Η µνήµη που µπορεί να διαχειριστεί ο µικροεπεξεργαστής χωρίζεται σε λογικά τµήµατα (segments), µεγέθους 64 KB το καθένα. Ο µετρητής προγράµµατος δείχνει τη διεύθυνση της µνήµης σε σχέση µε την αρχή του τµήµατος. Η αρχή του τµήµατος είναι αποθηκευµένη σ’ έναν από τους τέσσερις καταχωρητές τµήµατος (segment registers), που διαθέτει ο µικροεπεξεργαστής. Για να υπολογίσουµε τη φυσική διεύθυνση της µνήµης, αρκεί να προσθέσουµε την αρχή του τµήµατος, που βρίσκεται αποθηκευµένη (τα 16 περισσότερο σηµαντικά δυαδικά ψηφία αυτής) στον καταχωρητή τµήµατος, µε τα περιεχόµενα του µετρητή προγράµµατος. Προφανώς τα 4 λιγότερο σηµαντικά ψηφία της αρχής του τµήµατος είναι πάντοτε 0, δηλαδή η αρχή ενός τµήµατος είναι πάντοτε πολλαπλάσιο του 16. Σχηµατικά µπορείτε να παρατηρήσετε τον τρόπο µε τον οποίο σχηµατίζεται η φυσική διεύθυνση στο σχήµα 5.2.
5.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 8086
139
15 x
0 x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
Kαταχωρητής τµήµατος
+ 15 y
0 y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
Mετρητής προγραµµατος
= 19 z
0 z
z
z
z
z
z
z
z
z
z
z
z
z
z
z
z
z
z
z
Φυσική διεύθυνση ™¯‹Ì· 5.2
Με τον τρόπο αυτό ο 8086 µπορεί να προσπελαύνει απευθείας 64 Kbyte µνήµης, αλλά µπορεί να διαχειριστεί 1 MB µνήµης. Η λύση αυτή της οργάνωσης της µνήµης επιβλήθηκε για σχεδιαστικούς λόγους, αλλά αποτελεί ένα από τα αδύνατα σηµεία του συγκεκριµένου µικροεπεξεργαστή, καθώς είναι µάλλον πολύπλοκη.
(α)Με ποιον τρόπο σχηµατίζεται η διεύθυνση της µνήµης που πρέπει να προσπελάσει κάθε φορά ο 8086; (β) Ο µετρητής προγράµµατος περιέχει την τιµή 0012 16. Ο αντίστοιχος καταχωρητής τµήµατος (καταχωρητής τµήµατος κώδικα) περιέχει την τιµή FEDC16. Ποια είναι η φυσική διεύθυνση της µνήµης, στην οποία βρίσκεται η επόµενη προς εκτέλεση εντολή;
5.1.3 OÈ Î·Ù·¯ˆÚËÙ¤˜ ÙÔ˘ 8086
Οι καταχωρητές του 8086 αποτελούν ένα υπερσύνολο των καταχωρητών που είχαµε παρουσιάσει για τον 8080/8085. Παρατηρήστε στο σχήµα 5.3 τους καταχωρητές που διαθέτει ο 8086. Τα γραµµοσκιασµένα τµήµατα δείχνουν τους αντίστοιχους καταχωρητές του 8080/8085. Στον 8086 µπορούµε να βρούµε, εκτός από τους καταχωρητές του 8080/8085, τους παρακάτω καταχωρητές:
Η οργάνωση µνήµης του 8086
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.2
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
140
Kαταχωρητές δεδοµένων 15
0 AH
AL
AX
BH
BL
BX
CH
CL
CX
DH
DL
DX
Kαταχωρητές δείκτη 15
0 SP BP SI DI
Kαταχωρητές τµηµάτων 15
0 CS DS ES SS
Mετρητής προγράµµατος καιv Kαταχωρητής κατάστασης επεξεργαστή ™¯‹Ì· 5.3
Οι καταχωρητές του 8086 – Σύγκριση µε τον 8080/8085
15
0 Mετρητής προγράµµατος Σηµαίες κατάστασης
• Ο συσσωρευτής ΑΧ είναι πλέον ένας 16–bit καταχωρητής. Θεωρείται ο βασικότερος καταχωρητής του 8086. Μπορεί να χρησιµοποιηθεί είτε ως ένας καταχωρητής των 16–bits είτε ως δύο καταχωρητές των 8–bits (µε ονόµατα AH και AL). • O 16–bit καταχωρητής βάσης (Base Pointer – BP), ο 16–bit καταχωρητής
5.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 8086
141
δείκτη πηγής (Source Index Register – SI) και ο 16–bit καταχωρητής δείκτη προορισµού (Destination Index Register – DI) είναι τρεις καταχωρητές που χρησιµοποιούνται συνήθως σε εντολές επεξεργασίας πινάκων χαρακτήρων (strings) και αριθµητικές/λογικές πράξεις για να υποστηρίξουν νέους ευέλικτους τρόπους διευθυνσιοδότησης. • Στον 8086 µπορούµε να βρούµε επίσης και τους καταχωρητές τµηµάτων (segment registers). Οι καταχωρητές αυτοί σχετίζονται µε το σχήµα οργάνωσης µνήµης που διαθέτει ο µικροεπεξεργαστής και είναι ο καταχωρητής τµήµατος κώδικα (code segment register – CS), που ορίζει το τµήµα της µνήµης, όπου υπάρχουν οι εντολές του προγράµµατος, ο καταχωρητής τµήµατος δεδοµένων (data segment register – DS), που ορίζει το τµήµα εκείνο της µνήµης, όπου υπάρχουν τα δεδοµένα του προγράµµατος, ο καταχωρητής τµήµατος σωρού (stack segment register – SS), που ορίζει τη µνήµη του σωρού και ο καταχωρητής επιπλέον τµήµατος (extra segment register – ES), που χρησιµοποιείται ως επιπλέον χώρος αποθήκευσης. O καταχωρητής κατάστασης επεξεργαστή του 8086 περιέχει, εκτός από τις σηµαίες κατάστασης που βρίσκουµε στον 8080/8085, τις παρακάτω σηµαίες: • Σηµαία υπερχείλισης (overflow flag), η οποία δηλώνει κατά πόσο µία αριθµητική πράξη οδήγησε σε υπερχείλιση ή όχι. • Σηµαία διακοπής (interrupt flag), η οποία ενεργοποιεί ή απενεργοποιεί τις αιτήσεις διακοπής. • Σηµαία παγίδας (trap flag), η οποία επιτρέπει τη βηµατική εκτέλεση ενός προγράµµατος. • Σηµαία κατεύθυνσης (direction flag), η οποία χρησιµοποιείται για τις λειτουργίες των εντολών επεξεργασίας πινάκων χαρακτήρων (strings).
Συγκρίνετε τους καταχωρητές του 8086 µε τους αντίστοιχους του 8080/8085. Υπάρχουν οµοιότητες µεταξύ τους;
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.3
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
142
5.1.4 AÎÚÔ‰¤ÎÙ˜ Î·È Û‹Ì·Ù·
O 8086 είναι ένας 16–bit επεξεργαστής σε DIP (Dual In–line Package) συσκευασία των 40 ακροδεκτών, όπως δείχνει το σχήµα 5.4. Είναι διαθέσιµος µε τρεις διαφορετικές συχνότητες ρολογιού: 5, 8 και 10 MHz.
Mέγιστοςv τρόπος GNDv AD14v AD13v AD12v AD11v AD10v AD9v AD8v AD7v AD6v AD5v AD4v AD3v AD2v AD1v AD0v NMIv INTRv CLKv GND
1v 2v 3v 4v 5v 6v 7v 8v 8086 9v 10v 11v 12v 13v 14v 15v 16v 17v 18v 19v 20
40v 39v 38v 37v 36v 35v 34v 33v 32v 31v 30v 29v 28v 27v 26v 25v 24v 23v 22v 21
Vccv AD15v A16/S3v A17/S4v A18/S5v A19/S6v BHE~/S7v MN/MX~v RD~v RQ~/GT0~v RQ~/GT1~v LOCK~v S2~v S1~v S0~v QS0v QS1v TEST~v READYv RESET
Eλάχιστοςv τρόπος
(HOLD)v (HOLDA)v (WR~)v (M/IO~)v (DT/R~)v (DEN~)v (ALE)v (INTA~)
Ακροδέκτης
Περιγραφή
Τύπος
VCC, GND
Σήµατα τροφοδοσίας και γείωσης
ΑD0–ΑD15
Γραµµές διευθύνσεων/δεδοµένων
Είσοδοι/Έξοδοι
Α16–Α19/S3–S6
Γραµµές διευθύνσεων/κατάστασης
Έξοδοι
BHE~/S7
Γραµµή επίτρεψης διαύλου δεδοµένων/Γραµµή κατάστασης
Έξοδος
NMI
Γραµµή διακοπής (Non Maskable Interrupt)
Είσοδος
INTR
Γραµµή διακοπής
Είσοδος
CLK
Σήµα χρονισµού
Είσοδος
READY
Σήµα ολοκλήρωσης της µεταφοράς των δεδοµένων
Είσοδος
RESET
Σήµα αρχικοποίησης
Είσοδος
5.1 H AƒÃπ∆∂∫∆√¡π∫∏ ∆√À 8086
143
TEST~
Σήµα αναµονής κατά την WAIT εντολή
Είσοδος
RD~
Σήµα ανάγνωσης δεδοµένων
Έξοδος
MN/MX~
Σήµα επιλογής τρόπου λειτουργίας
Είσοδος
Ελάχιστος τρόπος λειτουργίας HOLD
Εισαγωγή σε κατάσταση HOLD
Είσοδος
HOLDA
Αναγνώριση κατάστασης HOLD
Έξοδος
WR~
Σήµα εγγραφής δεδοµένων
Έξοδος
M/IO~
Σήµα λειτουργίας µνήµης–συσκευής εισόδου/εξόδου
Έξοδος
DT/R~
Σήµα κατεύθυνσης του διαύλου δεδοµένων
Έξοδος
DEN~
Σήµα επίτρεψης δεδοµένων
Έξοδος
ALE
Σήµα έγκυρης διεύθυνσης
Έξοδος
INTA~
Σήµα αναγνώρισης διακοπής
Έξοδος
Μέγιστος τρόπος λειτουργίας RG~/GT0~,RG~/GT1~
Σήµατα αίτησης/απόκτησης των διαύλων
Είσοδος/Έξοδος
LOCK~
Σήµα απαγόρευσης απελευθέρωσης των διαύλων
Έξοδος
S0~–S2~
Σήµατα κατάστασης κύκλου µηχανής
Έξοδος
QS0,QS1
Σήµατα κατάστασης της ουράς εντολών
Έξοδος
™¯‹Ì· 5.4 Οι ακροδέκτες του 8086
O 8086 µπορεί να χρησιµοποιηθεί µε δύο διαφορετικούς τρόπους, οι οποίοι διαφοροποιούν τα σήµατα χρονισµού που παράγει ο µικροεπεξεργαστής: το µέγιστο τρόπο λειτουργίας (maximum mode) και τον ελάχιστο τρόπο λειτουργίας (minimum mode). Η επιλογή του ενός από αυτούς καθορίζεται από την τιµή του ακροδέκτη ΜΝ/ΜΧ~. Στον ελάχιστο τρόπο λειτουργίας, τα σήµατα χρονισµού είναι παρόµοια µε αυτά που συναντούµε στον 8085: ALE, M/IO~, WR~, DT/R~, DEN~, INTA~, HOLD, HOLDA. Στο µέγιστο τρόπο λειτουργίας οι παραπάνω ακροδέκτες περιέχουν τα σήµατα S2~, S1~, S0~, RG~/GT0~, RG~/GT1~, LOCK~, QS1, QS0, τα οποία χρησιµοποιούνται σε περιπτώσεις πολυεπεξεργαστικών συστηµάτων, όπου απαιτούνται πιο πολύπλοκα σήµατα ελέγχου. Ο σχεδιασµός δύο διαφορετικών τρόπων λειτουργίας στο ίδιο ολοκλη-
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
144
ρωµένο οφείλεται στην επιθυµία να µπορεί ο µικροεπεξεργαστής να ικανοποιεί πολλαπλές απαιτήσεις. Έτσι, σε απλά συστήµατα, στα οποία συνήθως απαιτείται ο µικρότερος δυνατός αριθµός από ολοκληρωµένα, ο 8086 µπορεί να λειτουργήσει σε ελάχιστο τρόπο λειτουργίας, παρέχοντας ο ίδιος τα σήµατα χρονισµού για το σύστηµα, ενώ σε πιο πολύπλοκα συστήµατα, όπου υπάρχει η δυνατότητα ο επεξεργαστής να πλαισιωθεί από άλλα ολοκληρωµένα, ο 8086 µπορεί να λειτουργήσει στο µέγιστο τρόπο λειτουργίας. Στον 8086 παρατηρούµε ότι ο δίαυλος διευθύνσεων (A 19–A0) είναι πολυπλεγµένος µε το δίαυλο δεδοµένων (D15–D0), καθώς και µε κάποια σήµατα κατάστασης (S3–S6). Έτσι, κατά τον πρώτο κύκλο ρολογιού ενός κύκλου µηχανής, στις γραµµές αυτές εµφανίζεται η διεύθυνση της µνήµης ή µιας µονάδας εισόδου/εξόδου, ενώ κατά τους υπόλοιπους κύκλους στις γραµµές αυτές εµφανίζονται τα δεδοµένα, καθώς και τα σήµατα κατάστασης. Ενδιαφέρον παρουσιάζει το γεγονός ότι, αν και ο δίαυλος δεδοµένων αποτελείται από 16 bits, µπορούν να γίνουν µεταφορές δεδοµένων από τη µνήµη µεγέθους είτε 1 είτε 2 bytes. Το πόσα bytes θα µεταφερθούν ορίζεται από τις τιµές των BHE~ και A0. Όταν BHE~=0 και Α0=0, τότε µεταφέρονται δύο bytes, όταν BHE~=0 και Α0=1 µεταφέρεται µόνο το περισσότερο σηµαντικό byte, ενώ, όταν BHE~=1 και Α0=1, τότε µεταφέρεται µόνο το λιγότερο σηµαντικό byte από τη µνήµη. Εκτός από τα παραπάνω σήµατα, συναντάµε, όπως και σε όλους τους µικροεπεξεργαστές άλλωστε, σήµατα τροφοδοσίας, σήµατα χρονισµού (CLK), σήµατα διακοπών (INTR, NMI, RESET) και σήµατα σχετικά µε τη µνήµη (RD~, που υποδηλώνει ανάγνωση δεδοµένων από τη µνήµη, και READY, που υποδηλώνει ότι η µνήµη είναι έτοιµη να ολοκληρώσει τη µεταφορά των δεδοµένων). ™‡ÓÔ„Ë Ο µικροεπεξεργαστής 8086 αποτελείται από τη µονάδα εκτέλεσης µε την αριθµητική και λογική µονάδα και τους καταχωρητές, που είναι υπεύθυνη για την εκτέλεση των εντολών, και από τη µονάδα διασύνδεσης διαύλου µε την ουρά εντολών, που είναι υπεύθυνη για την προσκόµιση των εντολών και των δεδοµένων από τη µνήµη.
5.2 O Ã√¡π™ª√™ ∆√À 8086
145
Ο 8086 µπορεί να διευθυνσιοδοτήσει µέχρι 1 ΜΒ διακριτών θέσεων µνήµης. Η µνήµη χωρίζεται σε λογικά τµήµατα µεγέθους 64 ΚΒ το καθένα και κάθε θέση µνήµης προσδιορίζεται από το λογικό τµήµα, στο οποίο βρίσκεται, και την απόσταση της θέσης αυτής από την αρχή του τµήµατος. Οι καταχωρητές του 8086 είναι το σύνολο των αντίστοιχων καταχωρητών που διαθέτει ο 8080 µαζί µε κάποιες νέες σηµαίες κατάστασης, κάποιους νέους καταχωρητές δείκτη και κάποιους καταχωρητές τµήµατος απαραίτητους για την οργάνωση της µνήµης. Ο µικροεπεξεργαστής µπορεί να χρησιµοποιηθεί µε δύο διαφορετικούς τρόπους λειτουργίας: τον ελάχιστο τρόπο λειτουργίας, στον οποίο τα σήµατα ελέγχου είναι παρόµοια µε τα αντίστοιχα του 8080/8085, και το µέγιστο τρόπο λειτουργίας, που διαθέτει πιο πολύπλοκα σήµατα ελέγχου.
Ποια είναι η χρησιµότητα των δύο διαφορετικών τρόπων λειτουργίας;
5.2 O ¯ÚÔÓÈÛÌfi˜ ÙÔ˘ 8086
Κάθε κύκλος µηχανής του 8086 αποτελείται από τουλάχιστον 4 κύκλους ρολογιού. Αυτοί ονοµάζονται T1, T2, T3, T4. Ο µικροεπεξεργαστής παρέχει τη διεύθυνση κατά τη διάρκεια του πρώτου κύκλου ρολογιού Τ1. Κατά τη διάρκεια του κύκλου αυτού τα σήµατα S0–S2 σηµατοδοτούν κατά πόσο ο κύκλος µηχανής είναι κύκλος προσκόµισης εντολής, κύκλος εγγραφής ή ανάγνωσης από τη µνήµη ή µία µονάδα εισόδου/εξόδου κ.λπ. Τα δεδοµένα µεταφέρονται κατά τη διάρκεια των κύκλων ρολογιού Τ3 και Τ4. Ο κύκλος ρολογιού Τ2 χρησιµοποιείται για τη µετάβαση του πολυπλεγµένου δίαυλου διευθύνσεων/δεδοµένων από τη µία κατάσταση (αυτή στην οποία συµπεριφέρεται ως δίαυλος διευθύνσεων) στην άλλη (αυτή όπου συµπεριφέρεται ως δίαυλος δεδοµένων). Εάν η µνήµη δεν µπορεί να παράσχει τα δεδοµένα στον απαιτούµενο χρόνο, τότε µέσω του σήµατος READY εισάγονται κύκλοι καθυστέρησης (Wait states – Tw). Κάθε τέτοιος κύκλος έχει διάρκεια ίση µε τη διάρκεια ενός κύκλου ρολογιού. Κατά τη διάρκεια των κύκλων Τ2 έως Τ4 εµφανίζονται και τα σήµατα κατάστασης S3–S7. Τα σήµατα S3 και S4 ορίζουν ποιος καταχωρητής τµήµατος θα χρησιµοποιηθεί για το σχηµατισµό της διεύθυνσης, το σήµα S5 δείχνει την
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.4
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
146
τιµή της σηµαίας διακοπής του καταχωρητή κατάστασης επεξεργαστή, ενώ το S6 έχει µόνιµα την τιµή 0. Το σήµα S7 δεν παρέχει χρήσιµη πληροφορία. Στο σχήµα 5.5 µπορείτε να δείτε το βασικό διάγραµµα χρονισµού για µία λειτουργία ανάγνωσης ή εγγραφής σε ένα 8086, που λειτουργεί στον ελάχιστο τρόπο λειτουργίας. (4 + NWAIT) = TCY T2 T3 TWAIT
T1
T4
(4 + NWAIT) = TCY T2 T3 TWAIT
T1
CLK
ALE S2 – S0 ADDR/v STATUS ADDR/v DATA
S7-S3
BHE,A19 -A16
A15-A0
Bus reservedv for Data in
S7-S3
BHE,A19-A16
D15-D0v Valid
A15-A0
Data out (D15-D0)
RD, INTA READY
READY
READY WAIT
DT/R
DEN
WP ™¯‹Ì· 5.5 Ο κύκλος ανάγνωσης και ο κύκλος εγγραφής στον 8086
WAIT
T4
5.3 ∏ ∞ƒÃπ∫√¶√π∏™∏ ∫∞π √π ¢π∞∫√¶∂™ ∆√À 8086
Από πόσους κύκλους ρολογιού αποτελείται ένας κύκλος ανάγνωσης του 8086; Πότε εµφανίζεται η διεύθυνση και πότε τα δεδοµένα στον πολυπλεγµένο δίαυλο;
5.3 ∏ ·Ú¯ÈÎÔÔ›ËÛË Î·È ÔÈ ‰È·ÎÔ¤˜ ÙÔ˘ 8086
Στην ενότητα αυτή θα αναφερθούµε στον τρόπο µε τον οποίο γίνεται η αρχικοποίηση του 8086, καθώς και στους διαφόρους τύπους διακοπών που υποστηρίζει. Η αρχικοποίηση του 8086 γίνεται µε τη βοήθεια του σήµατος RESET. Το σήµα αυτό συνήθως παράγεται µε τη βοήθεια της 8284 γεννήτριας χρονισµού. Η µετάβαση του σήµατος RESET σε υψηλό δυναµικό για διάστηµα µεγαλύτερο των 4 κύκλων ρολογιού (ή για χρόνο µεγαλύτερο των 50 µs κατά την εκκίνηση του συστήµατος) υποχρεώνει το µικροεπεξεργαστή να σταµατήσει τις λειτουργίες του για όσο διάστηµα διαρκεί το σήµα αυτό. Κατά τη µετάβαση του σήµατος RESET από το υψηλό στο χαµηλό δυναµικό, ξεκινά µια ακολουθία αρχικοποίησης, η οποία διαρκεί περίπου 10 κύκλους ρολογιού και αρχικοποιεί τους καταχωρητές του µικροεπεξεργαστή. Στη συνέχεια ξεκινά η λειτουργία του µικροεπεξεργαστή µε την εντολή που βρίσκεται αποθηκευµένη στη διεύθυνση FFFF016, όπως προκύπτει από τις τιµές αρχικοποίησης του µετρητή προγράµµατος (000016) και του καταχωρητή τµήµατος κώδικα (FFFF16). Οι διακοπές έχουν ως αποτέλεσµα την παύση της εκτέλεσης του κανονικού προγράµµατος και την εκτέλεση ενός άλλου, το οποίο ονοµάζεται ρουτίνα εξυπηρέτησης της διακοπής. Το πρώτο 1 ΚΒ µνήµης ενός συστήµατος βασισµένου στον 8086 χρησιµοποιείται για τις 256 διαφορετικές διακοπές που αυτός µπορεί να υποστηρίξει. Σε αυτές τις θέσεις µνήµης είναι αποθηκευµένος ο πίνακας των διευθύνσεων, όπου ξεκινάει η ρουτίνα εξυπηρέτησης διακοπής για καθεµία από τις διακοπές. Οι διευθύνσεις ορίζονται από την τιµή του µετρητή προγράµµατος και το περιεχόµενο του καταχωρητή τµήµατος κώδικα και γι’ αυτό καταλαµβάνουν χώρο 4 bytes. Όταν συµβεί µία διακοπή, τότε η συσκευή που την προκάλεσε είναι υποχρεωµένη να δώσει τον αριθµό της διακοπής (έναν αριθµό από το 0 εώς το 255), ο οποίος σηµατοδοτεί µονοσήµαντα µέσα στον πίνακα διευθύνσεων το σηµείο όπου βρίσκεται η ρουτίνα εξυπηρέτησης της διακοπής.
147
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.5
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
148
0000016
Mετρητής προγράµµατος ∆ιακοπή 0: διαίρεση µε το µ Kαταχωρητής τµήµατος κώδικα
0000416
Mετρητής προγράµµατος ∆ιακοπή 1: βηµατική εκτέλε Kαταχωρητής τµήµατος κώδικα
0000816
Mετρητής προγράµµατος ∆ιακοπή 2: NMI Kαταχωρητής τµήµατος κώδικα
0000C16
∆είκτης ρουτίνας εξυπηρέτησηςv διακοπής µε αριθµό 3 •v •v •
™¯‹Ì· 5.6
003F816
Η περιοχή µνήµης που δεσµεύεται για τις διακοπές
∆είκτης ρουτίνας εξυπηρέτησηςv διακοπής µε αριθµό 254
003FC16
∆είκτης ρουτίνας εξυπηρέτησηςv διακοπής µε αριθµό 255
Οι διακοπές αυτές χωρίζονται σε καθορισµένες διακοπές (predefined interrupts), όπως π.χ. η πρώτη διακοπή που γίνεται αυτόµατα σε περίπτωση διαίρεσης µε το µηδέν, σε διακοπές λογισµικού (software interrupts) και σε διακοπές υλικού (hardware interrupts), οι οποίες µπορεί να απενεργοποιούνται ή όχι (maskable or non–maskable interrupts). Έτσι για παράδειγµα, η διακοπή 0 αντιστοιχεί στην περίπτωση που έχουµε διαίρεση µε το µηδέν. Η διακοπή 1 αντιστοιχεί στην περίπτωση που θέλουµε να κάνουµε βηµατική εκτέλεση του προγράµµατος και έχουµε θέσει τη σηµαία κατάστασης trap στη λογική τιµή 1. Όταν τεθεί η σηµαία αυτή στην τιµή 1, τότε µετά την ολοκλήρωση της εκτέλεσης της τρέχουσας εντολής εκτελείται η διακοπή και ο µικροεπεξεργαστής συνεχίζει µε την εκτέλεση της ρουτίνας εξυπηρέτησης. Η διακοπή 2 προκαλείται από µια µετάβαση από χαµηλό σε υψηλό του σήµατος NMI και ικανοποιείται πάντα. Χρησιµοποιείται κυρίως για να ειδοποιήσει το µικροεπεξεργαστή για ένα γεγονός µεγάλης σηµασίας, π.χ. µία απώλεια τροφοδοσίας. Εκτός από την ΝΜΙ διακοπή, έχουµε και τις διακοπές, οι οποίες προκαλούνται από το σήµα INTR. Η εξυπηρέτηση τέτοιων διακοπών επιτρέπεται ή απαγορεύεται ανάλογα µε την τιµή της σηµαίας κατάστασης διακοπής, η οποία ορίζεται µε κάποιες εντο-
5.4 T√ ™À¡√§√ ∂¡∆√§ø¡ ∫∞π √π ∆ƒ√¶√π ¢π∂À£À¡™π√¢√∆∏™∏™
149
λές του µικροεπεξεργαστή. Για να γίνει µία τέτοια αίτηση διακοπής, θα πρέπει το σήµα INTR να τεθεί σε υψηλό δυναµικό στον τελευταίο κύκλο ρολογιού της τρέχουσας εντολής. Εάν η σηµαία κατάστασης διακοπής το επιτρέπει, τότε ο µικροεπεξεργαστής παρέχει δύο κύκλους µηχανής αναγνώρισης διακοπής. Η εξωτερική συσκευή που παρήγαγε τη διακοπή είναι υποχρεωµένη κατά το δεύτερο κύκλο να παρέχει στο µικροεπεξεργαστή τον αριθµό της διακοπής. Ο αριθµός αυτός πολλαπλασιάζεται µε το 4 για να διευθυνσιοδοτήσει τον πίνακα διευθύνσεων διακοπών, ώστε να ξεκινήσει η εκτέλεση της αντίστοιχης ρουτίνας εξυπηρέτησης. Σχετική επίσης µε τις διακοπές είναι και η εντολή HALT. Με την εκτέλεση µίας τέτοιας εντολής, ο µικροεπεξεργαστής µπαίνει σε κατάσταση αναµονής και, για να συνεχίσει την εκτέλεση του προγράµµατος, απαιτείται µία αίτηση διακοπής ή η επανεκκίνησή του.
Μετά από την εµφάνιση µίας αίτησης διακοπής, µε ποιον τρόπο ο µικροεπεξεργαστής βρίσκει τη διεύθυνση της µνήµης, στην οποία αρχίζει η ρουτίνα εξυπηρέτησης;
5.4 TÔ Û‡ÓÔÏÔ ÂÓÙÔÏÒÓ Î·È ÔÈ ÙÚfiÔÈ ‰È¢ı˘ÓÛÈÔ‰fiÙËÛ˘
™ÎÔfi˜ Η ενότητα αυτή έχει ως στόχο να παρουσιάσει το σύνολο εντολών και τους τρόπους διευθυνσιοδότησης που διαθέτει ο 8086. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Ολοκληρώνοντας τη µελέτη αυτής της ενότητας, θα µπορείτε να περιγράψετε τους βασικούς τρόπους διευθυνσιοδότησης του 8086 και τους καταχωρητές που χρησιµοποιεί ο καθένας από αυτούς. ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή περιέχει γνωστές έννοιες, καθώς έχετε γνωρίσει, στα προηγούµενα κεφάλαια, τους τρόπους διευθυνσιοδότησης αρκετών µικροεπεξεργαστών. Είναι ίσως σκόπιµο, πριν από τη µελέτη της, να επαναλάβετε την ανάγνωση της Ενότητας 2.5 ή να χρησιµοποιήσετε τα σχήµατα της Ενότητας 2.5, για να κατανοήσετε καλύτερα το κείµενο αυτής της ενότητας.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.6
150
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
Οι εντολές του 8086 έχουν µεταβλητό µήκος. Έτσι µία εντολή µπορεί να αποτελείται από 6 bytes έως 1 byte στην περίπτωση που δεν περιέχει έντελα. Ο 8086 έχει επίσης διάφορους τρόπους διευθυνσιοδότησης. Έτσι π.χ. µπορούµε να βρούµε εντολές που χρησιµοποιούν υπονοούµενη διευθυνσιοδότηση, δηλαδή εντολές που έχουν ως έντελα κάποιους από τους καταχωρητές του µικροεπεξεργαστή. Οι εντολές αυτές έχουν µικρό µέγεθος και µικρό χρόνο εκτέλεσης. Επίσης µπορούµε να βρούµε εντολές που χρησιµοποιούν άµεση διευθυνσιοδότηση. Σε αυτήν τα δεδοµένα της εντολής ακολουθούν τον κωδικό λειτουργίας της εντολής. Τα δεδοµένα αυτά µπορεί να έχουν µέγεθος 8 ή 16 bits. Ένας άλλος τρόπος διευθυνσιοδότησης είναι αυτός της άµεσης προσπέλασης. Σε αυτόν η ενεργή διεύθυνση, στην οποία βρίσκονται τα δεδοµένα, µήκους 16–bits, ακολουθεί τον κωδικό λειτουργίας της εντολής. Η ενεργή διεύθυνση περιέχει µόνο τη µετατόπιση από την αρχή του τµήµατος και ενώνεται µε τον καταχωρητή τµήµατος (συνήθως είναι ο καταχωρητής τµήµατος δεδοµένων) για να προσδιορίσει τη φυσική διεύθυνση των δεδοµένων. Υπάρχει επίσης η δυνατότητα το έντελο της εντολής να έχει µέγεθος 32–bits, δηλαδή να περιέχει και τη θέση στην οποία ξεκινάει το τµήµα αλλά και τη µετατόπιση µέσα σε αυτό. Προφανώς, οι εντολές αυτές έχουν µεγαλύτερο µήκος από τις προηγούµενες και εποµένως µεγαλύτερο χρόνο εκτέλεσης. Οι εντολές διακλάδωσης χρησιµοποιούν τη σχετική διευθυνσιοδότηση. Το έντελο µίας τέτοιας εντολής περιέχει το ποσό της µετατόπισης του µετρητή προγράµµατος. Οι εντολές έµµεσης διευθυνσιοδότησης βασίζονται στους καταχωρητές ΒΧ, SI και DI. Η ενεργή διεύθυνση σε αυτές τις εντολές ορίζεται ως η τιµή που περιέχουν οι παραπάνω καταχωρητές. Οι καταχωρητές αυτοί χρησιµοποιούνται µαζί µε τον καταχωρητή τµήµατος δεδοµένων για να σχηµατίσουν τη φυσική διεύθυνση. Μια παραλλαγή του παραπάνω τρόπου διευθυνσιοδότησης, που µπορούµε να την ονοµάσουµε δεικτοδοτηµένη διευθυνσιοδότηση, είναι αυτή που εκτός από τον καταχωρητή δείκτη (BX, BP, SI, DI) περιέχει και κάποιο έντελο, το οποίο προστίθεται στην τιµή του καταχωρητή για να σχηµατίσει την ενεργή διεύθυνση. Επίσης σε έναν άλλο τρόπο διευθυνσιοδότησης που διαθέτει ο 8086, η ενεργή διεύθυνση σχηµατίζεται αθροίζοντας την τιµή ενός καταχωρητή βάσης (BX ή BP) µε την τιµή ενός καταχωρητή δείκτη (SI ή DI) και ενδεχόµενα προσθέτο-
5.4 T√ ™À¡√§√ ∂¡∆√§ø¡ ∫∞π √π ∆ƒ√¶√π ¢π∂À£À¡™π√¢√∆∏™∏™
151
ντας και το έντελο που ακολουθεί τον κωδικό λειτουργίας της εντολής. Στην περίπτωση του BX χρησιµοποιείται ο καταχωρητής τµήµατος δεδοµένων, ενώ στην περίπτωση του BP χρησιµοποιείται ο καταχωρητής τµήµατος σωρού για το σχηµατισµό της φυσικής διεύθυνσης. Οι σχεδιαστές του 8086 έδωσαν µεγάλη σηµασία στη διαχείριση πινάκων χαρακτήρων (strings). Έτσι ο µικροεπεξεργαστής περιέχει εντολές φόρτωσης, αποθήκευσης και µεταφοράς πινάκων χαρακτήρων από κάποιο σηµείο της µνήµης σε κάποιο άλλο. Η λεγόµενη διευθυνσιόδοτηση πινάκων χαρακτήρων (string addressing) χρησιµοποιεί τους καταχωρητές SI και DI ως δείκτες της αρχής των strings. Κατά τη διάρκεια εκτέλεσης µίας εντολής πίνακα χαρακτήρων, οι τιµές των καταχωρητών SI και DI αυξάνονται ή µειώνονται ανάλογα µε την τιµή της σηµαίας κατεύθυνσης (Direction Flag). Ο 8086 µπορεί να διευθυνσιοδοτήσει 64 Κ θέσεις συσκευών εισόδου/εξόδου. Η διευθυνσιόδοτηση στις εντολές εισόδου/εξόδου γίνεται µε τη βοήθεια του καταχωρητή AX και DX. Έτσι, η διεύθυνση της συσκευής εισόδου/εξόδου µπορεί είτε να ακολουθεί τον κωδικό λειτουργίας της εντολής είτε να βρίσκεται αποθηκευµένη στον καταχωρητή DX. Παρατηρήστε ότι παρά το γεγονός ότι οι περισσότεροι από τους καταχωρητές του 8086 µπορούν να θεωρηθούν ως καταχωρητές γενικού σκοπού, καθένας από αυτούς χρησιµοποιείται σε κάποιες περιπτώσεις εντολών µε αρκετά συγκεκριµένο τρόπο. Οι παραπάνω τρόποι διευθυνσιοδότησης δίνουν αρκετά µεγάλη ευελιξία στον προγραµµατιστή κατά τη συγγραφή ενός προγράµµατος.
Κάποιοι τρόποι διευθυνσιοδότησης χρησιµοποιούν καταχωρητές του 8086 στον προσδιορισµό της ενεργής διεύθυνσης. Ποιους καταχωρητές χρησιµοποιούν συνήθως;
Στις προηγούµενες ενότητες µάθατε τα κύρια χαρακτηριστικά του µικροεπεξεργαστή 8086 της Intel. Στις σελίδες 2–60 έως 2–70 του βιβλίου 4 της βιβλιογραφίας µπορείτε να βρείτε µία αναλυτική περιγραφή του 8088. Αφού µελετήσετε τα κύρια χαρακτηριστικά του, αναφέρατε τις κυριότερες διαφορές που παρουσιάζει σε σύγκριση µε τον 8086. Ο χρόνος απασχόλησής σας για την ολοκλήρωση αυτής της δραστηριότητας εκτιµάµε πως δεν θα ξεπεράσει τις τρεις ώρες.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 5.7
¢Ú·ÛÙËÚÈfiÙËÙ· 5.1
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
152
™‡ÓÔ„Ë Ο 8086 παρουσιάστηκε το 1978 από την Intel και είναι ο πρώτος µικροεπεξεργαστής µε µήκος λέξης 16 bits. Είναι οργανωµένος σε δύο ανεξάρτητα τµήµατα: τη µονάδα εκτέλεσης, που είναι υπεύθυνη για την εκτέλεση όλων των εντολών του µικροεπεξεργαστή, και τη µονάδα διασύνδεσης διαύλου, που είναι υπεύθυνη για τη διασύνδεσή του µε τη µνήµη και τις άλλες συσκευές του µικροϋπολογιστικού συστήµατος, στο οποίο ανήκει. Η µονάδα διασύνδεσης διαύλου τροφοδοτεί τη µονάδα εκτέλεσης µε εντολές µέσα από µία ουρά εντολών µήκους 6 bytes. Ο 8086 µπορεί να διευθυνσιοδοτήσει 1 ΜΒ διακριτές θέσεις µνήµης και 64 ΚΒ θέσεις συσκευών εισόδου/εξόδου. Η µνήµη είναι οργανωµένη σε λογικά τµήµατα (segments) µεγέθους 64 ΚΒ το καθένα. Η φυσική διεύθυνση της µνήµης, στην οποία βρίσκεται η επόµενη εντολή, υπολογίζεται αθροίζοντας την αρχή του τµήµατος, που βρίσκεται αποθηκευµένη σε κάποιον καταχωρητή τµήµατος (µετατοπισµένη κατά 4 bits), µε την τιµή του µετρητή προγράµµατος. Οι καταχωρητές του 8086 αποτελούν υπερσύνολο των καταχωρητών του 8080/8085. Με τον τρόπο αυτό διατηρείται η συµβατότητα µε τον παλαιότερο µικροεπεξεργαστή και τα συστήµατα που έχουν αναπτυχθεί σε αυτόν. Εκτός από τους καταχωρητές του 8080/8085, στον 8086 µπορούµε να βρούµε τους καταχωρητές τµηµάτων, καθώς επίσης τον καταχωρητή βάσης (BP) και τους καταχωρητές δείκτη πηγής και προορισµού (SI και DI), που χρησιµοποιούνται για να υποστηρίξουν νέους ευέλικτους τρόπους διευθυνσιοδότησης. Τέλος, εµφανίζονται και κάποιες νέες σηµαίες στον καταχωρητή κατάστασης επεξεργαστή (σηµαία υπερχείλισης, σηµαία διακοπής, σηµαία παγίδας και σηµαία κατεύθυνσης). Ο 8086 διαθέτει 40 ακροδέκτες. Ο δίαυλος διευθύνσεων είναι πολυπλεγµένος µε το δίαυλο δεδοµένων και µε κάποια σήµατα κατάστασης. Ο δίαυλος δεδοµένων, αν και µεγέθους 16 bits, µπορεί να υποστηρίξει µεταφορές δεδοµένων µεγέθους 8 και 16 bits. Ο ακροδέκτης ΜΝ/ΜΧ~ επιλέγει τον τρόπο λειτουργίας του 8086. Στον ελάχιστο τρόπο λειτουργίας, που συνήθως χρησιµοποιείται σε απλά µονοεπεξεργαστικά συστήµατα βασισµένα στον 8086, τα σήµατα χρονισµού συµπεριφέρονται παρόµοια µε αυτά του 8085. Στο µέγιστο τρόπο λειτουργίας, τα σήµατα χρονισµού συµπεριφέρονται µε διαφορετικό τρόπο ώστε να διευκολύνουν την ανάπτυξη πολυεπεξεργαστικών συστηµάτων. Κάθε κύκλος µηχανής ανάγνωσης ή εγγραφής στον 8086 αποτελείται από του-
™YNOæH
λάχιστον τέσσερις κύκλους ρολογιού. Στον πρώτο κύκλο ρολογιού εµφανίζεται η διεύθυνση, ενώ στον τρίτο και τέταρτο κύκλο ρολογιού γίνεται η µεταφορά των δεδοµένων. Ο δεύτερος κύκλος ρολογιού χρησιµοποιείται για να αλλάξει κατεύθυνση ο πολυπλεγµένος δίαυλος διευθύνσεων/δεδοµένων. Κατά τη διάρκεια του πρώτου κύκλου εµφανίζονται επίσης τα σήµατα κατάστασης S0–S2, που καθορίζουν το είδος του κύκλου µηχανής, ενώ κατά τους επόµενους κύκλους εµφανίζονται τα σήµατα κατάστασης S3–S7, που περιέχουν επιπλέον πληροφορίες. Στην περίπτωση που η µνήµη δεν µπορεί να ανταποκριθεί στις απαιτήσεις του µικροεπεξεργαστή στον επιθυµητό χρόνο, τότε εισάγει κύκλους αναµονής (wait states). Η αρχικοποίηση του 8086 γίνεται µε τη βοήθεια του σήµατος RESET. Όταν αυτό µεταβεί σε υψηλό δυναµικό για τουλάχιστον τέσσερις κύκλους ρολογιού, ξεκινά η διαδικασία αρχικοποίησης του µικροεπεξεργαστή, η οποία διαρκεί περίπου 10 κύκλους ρολογιού. Με το τέλος της αρχικοποίησης ξεκινά η εκτέλεση του προγράµµατος από την εντολή που βρίσκεται αποθηκευµένη στη θέση µνήµης µε διεύθυνση FFFF016. Ο 8086 χρησιµοποιεί το πρώτο 1 ΚΒ της µνήµης ως πίνακα διευθύνσεων διακοπών. Κάθε στοιχείο του πίνακα περιέχει την τιµή του καταχωρητή τµήµατος και του µετρητή προγράµµατος και διευθυνσιοδοτεί τη θέση της µνήµης, στην οποία ξεκινά η ρουτίνα εξυπηρέτησης της συγκεκριµένης διακοπής. Ο 8086 µπορεί να υποστηρίξει 256 διακοπές. Κάποιες από αυτές είναι καθορισµένες, όπως π.χ η διακοπή 0 που αντιστοιχεί στην περίπτωση που γίνεται διαίρεση µε το 0 ή η διακοπή 2 που αντιστοιχεί στην αίτηση διακοπής NMI. Η διακοπή NMI είναι µια διακοπή που ικανοποιείται πάντα σε αντίθεση µε αυτές που δηµιουργούνται µε το σήµα INTR, οι οποίες µπορούν να επιτρέπονται ή να απαγορεύονται µε τη βοήθεια της σηµαίας διακοπής του καταχωρητή κατάστασης επεξεργαστή. Ο 8086 διαθέτει, πέρα από τους κλασικούς τρόπους διευθυνσιοδότησης που συναντάµε και σε άλλους επεξεργαστές, αρκετούς τρόπους διευθυνσιοδότησης που χρησιµοποιούν τους καταχωρητές βάσης και δείκτη για τον καθορισµό της ενεργής διεύθυνσης και παρέχουν ευελιξία στον προγραµµατιστή κατά την ανάπτυξη προγραµµάτων.
153
K E º A § A I O 5 : √ M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∏ ™ I N T E L 8 0 8 6 / 8 0 8 8
154
BÈ‚ÏÈÔÁÚ·Ê›·
Τώρα που τελειώσατε την ανάγνωση του πέµπτου κεφαλαίου, καλό είναι να διαθέσετε κάποιον επιπλέον χρόνο για να µελετήσετε τα παρακάτω κείµενα, τα οποία περιέχουν µία πιο αναλυτική παρουσίαση των χαρακτηριστικών του 8086: 1. 16–Bit Microprocessors, Collins Professional and Technical Books, Ian R. Whitworth, Ενότητα 4.2. Η ενότητα αυτή περιέχει µια συνοπτική περιγραφή του µικροεπεξεργαστή 8086. 2. 16–Bit Microprocessors, Collins Professional and Technical Books, Ian R. Whitworth, Ενότητα 6.2.1. Η υποενότητα αυτή περιέχει µία περιγραφή των τρόπων διευθυνσιοδότησης του 8086. Αρκετά ενδεικτικό είναι το σχήµα της σελίδας 189. 3. Mastering the 8088 microprocessor, Tab Books Inc., Lanny V. Dao, Κεφάλαιο 2. Στο κεφάλαιο αυτό θα βρείτε µια αναλυτική περιγραφή του 8088. ∆ώστε ιδιαίτερη προσοχή στην ενότητα µε τους τρόπους διευθυνσιοδότησης. 4. Microprocessors, Intel, Κεφάλαιο 2. Στο κεφάλαιο αυτό θα βρείτε την περιγραφή του 8086, όπως δίνεται από την κατασκευάστρια εταιρία Intel.
OÏÔÎÏËڈ̤ӷ MÈÎÚÔ¸ÔÏÔÁÈÛÙÈο ™˘ÛÙ‹Ì·Ù· ™ÎÔfi˜ Μελετώντας το κεφάλαιο αυτό, θα γνωρίσετε τις βασικές αρχές και µεθοδολογίες σχεδιασµού συστηµάτων, που βασίζονται σε µικροεπεξεργαστές, και τις περιφερειακές τους συσκευές. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα ολοκληρώσετε τη µελέτη αυτού του κεφαλαίου, θα είστε σε θέση να: • ορίσετε την έννοια της διασύνδεσης ενός µικροεπεξεργαστή µε µία ή περισσότερες περιφερειακές συσκευές. • καθορίσετε τον τρόπο µε τον οποίο ο µικροεπεξεργαστής επιλέγει καθεµία από τις συσκευές που βρίσκονται σε ένα σύστηµα είτε πρόκειται για µνήµες είτε για συσκευές εισόδου/εξόδου. • καθορίσετε τα τέσσερα βασικά σήµατα ελέγχου του µικροεπεξεργαστή, που χρησιµοποιούνται στη µεταφορά δεδοµένων µεταξύ αυτού και των µνηµών ή των περιφερειακών συσκευών. • διασυνδέσετε µία µνήµη ROM ή µία µνήµη RAM στους διαύλους ενός µικροϋπολογιστικού συστήµατος. • ορίσετε τους δύο διαφορετικούς τρόπους µε τους οποίους µπορούµε να συνδέσουµε µία συσκευή εισόδου ή µία συσκευή εξόδου στους διαύλους ενός µικροεπεξεργαστή. • διασυνδέσετε απλές συσκευές εισόδου, όπως διακόπτες, και απλές συσκευές εξόδου, όπως µονάδες απεικόνισης, σε ένα µικροϋπολογιστικό σύστηµα. ŒÓÓÔȘ ÎÏÂȉȿ • ∆ιασύνδεση
• Μνήµες ROM/RAM
• Ελεγκτές
• Συσκευές ∆ιασύνδεσης
• I/O–mapped I/O
• Συσκευές Εισόδου/Εξόδου
• Κύκλωµα αποκωδικοποίησης • Memory–mapped I/O • Μικροϋπολογιστικά συστήµατα
∫
6 ∂
º
∞
§
∞
π
√
156
K E º A § A I O 6 : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆ ∞
∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Στο κεφάλαιο αυτό παρέχουµε τους τρόπους, µε τους οποίους µπορείτε να διασυνδέσετε µικροεπεξεργαστές, όπως αυτούς που µάθατε στα προηγούµενα κεφάλαια, µε διάφορες συσκευές, όπως µνήµες ή συσκευές εισόδου/εξόδου, ώστε να κατασκευάσετε ένα ολοκληρωµένο µικροϋπολογιστικό σύστηµα. Χρησιµοποιώντας επιπλέον τις γνώσεις που αποκτήσατε στα προηγούµενα κεφάλαια, θα µπορείτε πλέον να σχεδιάσετε µόνοι σας κάποιο µικροϋπολογιστικό σύστηµα, διασυνδέοντας µεταξύ τους τα βασικά κοµµάτια, από τα οποία αποτελείται. Κατά τη µελέτη αυτού του κεφαλαίου, είναι πιθανό να χρειαστεί να ανατρέξετε σε προηγούµενα κεφάλαια, για να θυµηθείτε κάποια από τα χαρακτηριστικά των µικροεπεξεργαστών, οι οποίοι παρουσιάστηκαν.
6.1 B∞™π∫∂™ ∞ƒÃ∂™ – ™À™∫∂À∂™ ¢π∞™À¡¢∂™∏™
6.1 B·ÛÈΤ˜ ·Ú¯¤˜ – ™˘Û΢¤˜ ‰È·Û‡Ó‰ÂÛ˘
Θυµηθείτε τον ορισµό του µικροϋπολογιστικού συστήµατος που δώσαµε στο κεφάλαιο 1: είναι ένα σύστηµα που δέχεται κάποια είσοδο και µετά από κάποιας µορφής επεξεργασία παρέχει κάποια έξοδο. Στο ευρύτερο περιβάλλον µας µπορούµε να ανακαλύψουµε πολλά παραδείγµατα συσκευών, οι οποίες ανήκουν στο παραπάνω µοντέλο. Πολλές από αυτές τις συσκευές βασίζονται στη χρήση µικροεπεξεργαστών. Εποµένως, οι µικροεπεξεργαστές αποτελούν τµήµατα ευρύτερων συστηµάτων, ενώ από µόνοι τους συνήθως δεν έχουν καµία χρησιµότητα. Η ανάπτυξη των µικροεπεξεργαστών δεν ήταν αυτοσκοπός. Ήταν το αποτέλεσµα της ανάγκης για την ανάπτυξη ολοκληρωµένων συστηµάτων, που θα έκαναν τη ζωή µας ευκολότερη. Η γνώση των βασικών χαρακτηριστικών κάποιου ή κάποιων µικροεπεξεργαστών δεν είναι χρήσιµη, εάν δεν συνοδεύεται από επιπλέον γνώση για τον τρόπο µε τον οποίο µπορούν αυτοί οι µικροεπεξεργαστές να χρησιµοποιηθούν για το σχεδιασµό ολοκληρωµένων µικροϋπολογιστικών συστηµάτων. Συχνά στο σχεδιασµό τέτοιων συστηµάτων εµφανίζεται η έννοια της διασύνδεσης. Γενικότερα, όταν λέµε διασύνδεση (interface) µεταξύ δύο αντικειµένων, εννοούµε τον τρόπο µε τον οποίο πρέπει να συνδεθούν αυτά τα αντικείµενα, ώστε να είναι εφικτή η µεταξύ τους επικοινωνία. Η διασύνδεση, στις περιπτώσεις µικροϋπολογιστικών συστηµάτων, µπορεί είτε να αναφέρεται σε φυσικό επίπεδο (hardware interfacing) και να αφορά στον τρόπο, µε τον οποίο πρέπει να συνδέσουµε τους διαύλους των δύο συσκευών, όπως π.χ. στην περίπτωση της διασύνδεσης µίας συσκευής εισόδου/εξόδου ή ενός ελεγκτή συστήµατος µε κάποιον µικροεπεξεργαστή, είτε να αναφέρεται σε λογικό επίπεδο (software interfacing) και να αφορά στον ορισµό του τρόπου, µε τον οποίο µπορούν να επικοινωνήσουν δύο προγράµµατα, όπως π.χ. στην περίπτωση ορισµού του πρωτόκολλου επικοινωνίας µεταξύ µίας εφαρµογής βάσης δεδοµένων µε τον αντίστοιχο οδηγό δίσκου (hard disk driver) για την εγγραφή ή ανάγνωση των δεδοµένων της βάσης στο δίσκο. Ένας µικροϋπολογιστής τυπικά αποτελείται από κάποιο µικροεπεξεργαστή, µνήµη ROM, στην οποία είναι αποθηκευµένο το πρόγραµµα, το οποίο εκτελείται στο µικροεπεξεργαστή, µνήµη RAM για την αποθήκευση προσωρινών δεδοµένων και κάποιες περιφερειακές συσκευές (συσκευές εισόδου/εξόδου), όπως πληκτρολόγια, µονάδες απεικόνισης δεδοµένων, µονάδες δίσκων ή δισκε-
157
158
K E º A § A I O 6 : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆ ∞
τών κ.λπ. Οι κατασκευαστές µικροεπεξεργαστών παρέχουν συνήθως ολοκληρωµένα κυκλώµατα ειδικού σκοπού, τα οποία διευκολύνουν τη διασύνδεση τέτοιων περιφερειακών συσκευών. Τέτοια ολοκληρωµένα κυκλώµατα ονοµάζονται συνήθως συσκευές διασύνδεσης (interface circuits) ή ελεγκτές (controllers) και σχεδιάζονται συνήθως για συγκεκριµένο µικροεπεξεργαστή. Τα τµήµατα ενός µικροϋπολογιστικού συστήµατος διασυνδέονται µεταξύ τους µε τη βοήθεια των τριών βασικών διαύλων: (α)του διαύλου διευθύνσεων, που χρησιµοποιείται για την παραγωγή των διευθύνσεων της µνήµης ή των συσκευών εισόδου/εξόδου, (β) του διαύλου δεδοµένων, που χρησιµοποιείται για τη µεταφορά των δεδοµένων από και προς το µικροεπεξεργαστή, και (γ) του διαύλου ελέγχου, που χρησιµοποιείται για την παραγωγή των κατάλληλων σηµάτων χρονισµού του όλου συστήµατος. Οι µεταφορές δεδοµένων συνήθως έχουν τη µορφή κύκλων ανάγνωσης ή εγγραφής µνήµης στην περίπτωση της µνήµης του συστήµατος ή την µορφή κύκλων ανάγνωσης ή εγγραφής συσκευής εισόδου/εξόδου ή εξυπηρέτησης διακοπών στην περίπτωση των περιφερειακών συσκευών. Στις επόµενες ενότητες θα µελετήσουµε διάφορες τεχνικές διασύνδεσης των διαφόρων τµηµάτων ενός µικροϋπολογιστικού συστήµατος.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 6.1
Ποια είναι τα βασικά τµήµατα που συναντάµε συνήθως σ’ ένα µικροϋπολογιστή;
6.2 ¢È·Û‡Ó‰ÂÛË ÌÓËÌÒÓ ROM
Οι µνήµες ROM (Read Only Memories) είναι οι µνήµες που τα περιεχόµενά τους είναι µόνιµα γραµµένα και δεν µπορούν να σβηστούν ή να αλλαχτούν. Χρησιµοποιούνται συνήθως για την αποθήκευση των προγραµµάτων που εκτελούν οι µικροϋπολογιστές. Οι µνήµες ROM είναι ολοκληρωµένα κυκλώµατα µε διάφορες χωρητικότητες. Στους ακροδέκτες κάθε τέτοιου ολοκληρωµένου κυκλώµατος µπορούµε να βρούµε:
6.2 ¢π∞™À¡¢∂™∏ ª¡∏ªø¡ ROM
• τα σήµατα διευθύνσεων, το πλήθος των οποίων ορίζει το πλήθος των θέσεων της µνήµης, • τα σήµατα δεδοµένων, το πλήθος των οποίων ορίζει το µέγεθος της λέξης της µνήµης, • ένα σήµα ενεργοποίησης της µνήµης CS~ (Chip Select). Όταν το σήµα αυτό είναι ενεργό (δηλαδή σε χαµηλό δυναµικό), τότε η µνήµη ενεργοποιείται, • ένα σήµα επίτρεψης εξόδου OE~ (output enable). Για να τοποθετηθούν τα δεδοµένα στο δίαυλο δεδοµένων, το σήµα αυτό θα πρέπει να είναι ενεργό. Στην περίπτωση που το σήµα αυτό είναι ανενεργό, τότε οι γραµµές δεδοµένων της µνήµης βρίσκονται σε κατάσταση υψηλής εµπέδησης. Η διασύνδεση µίας µνήµης ROM µε κάποιο µικροεπεξεργαστή γίνεται µε βάση τα παρακάτω: Τα λιγότερο σηµαντικά σήµατα του δίαυλου διευθύνσεων του µικροεπεξεργαστή συνδέονται απευθείας µε τα αντίστοιχα σήµατα διευθύνσεων της µνήµης. Επίσης, τα σήµατα δεδοµένων της µνήµης συνδέονται αντίστοιχα στο δίαυλο δεδοµένων του συστήµατος. Το σήµα OE~ συνδέεται συνήθως στο σήµα ανάγνωσης δεδοµένων µνήµης του µικροεπεξεργαστή (ονοµάζεται RD~ ή MEMR), ώστε, όταν αυτός επιθυµεί ανάγνωση δεδοµένων, να επιτρέπει την τοποθέτηση των δεδοµένων της µνήµης στα σήµατα δεδοµένων. Ένα τυπικό µικροϋπολογιστικό σύστηµα αποτελείται από αρκετά ολοκληρωµένα κυκλώµατα µνηµών ή συσκευών εισόδου/εξόδου, τα οποία συνδέονται στο δίαυλο δεδοµένων. Είναι προφανές ότι ο µικροεπεξεργαστής θα πρέπει µε κάποιο τρόπο να µπορεί να υποδείξει τη µνήµη ή τη συσκευή εισόδου/εξόδου, από την οποία θέλει να διαβάσει ή να γράψει δεδοµένα. Για το λόγο αυτό µοιράζει τα διάφορα ολοκληρωµένα κυκλώµατα στο χώρο διευθύνσεων που µπορεί να διαχειριστεί. Αυτό γίνεται µε τη βοήθεια του σήµατος CS~. Το σήµα αυτό δηµιουργείται από τα περισσότερο σηµαντικά σήµατα του δίαυλου διευθύνσεων, τα οποία δεν συνδέονται στα σήµατα διευθύνσεων της µνήµης µε τη βοήθεια ενός κυκλώµατος αποκωδικοποίησης διευθύνσεων. Στο σχήµα 6.1 δίνεται για παράδειγµα η διασύνδεση µίας µνήµης 8Κx8 µε έναν υποθετικό µικροεπεξεργαστή µε µήκος λέξης 8 bit, που διαθέτει 16 γραµµές διευθύνσεων. Η µνήµη διαθέτει 13 γραµµές διευθύνσεων (αφού 8K=213), οι οποίες συνδέονται στις 13 λιγότερο σηµαντικές γραµµές του διαύλου διευθύνσεων. Οι 8 γραµµές δεδοµένων της µνήµης συνδέονται αντί-
159
K E º A § A I O 6 : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆ ∞
160
στοιχα στις 8 γραµµές δεδοµένων του συστήµατος. Το σήµα ανάγνωσης µνήµης του µικροεπεξεργαστή (RD~) συνδέεται στο σήµα OE~, ώστε η µνήµη να καταλαµβάνει το δίαυλο δεδοµένων µόνο όταν ο µικροεπεξεργαστής επιθυµεί την ανάγνωση δεδοµένων.
∆ίαυλοςv διευθύνσεων
A15v
D7v
•v
•v
•v
KME
•v
•v •v D0
A0
∆ίαυλοςv δεδοµένων
RD~ 8
13 OE~ A0v •v •v •v
™¯‹Ì· 6.1
Η διασύνδεση µίας µνήµης ROM
A12 Kύκλωµαv αποκωδικοποίησης
D0v ROMU 8Kx8
•v •v •v D7
CS~
Ο µικροεπεξεργαστής επιλέγει τη µνήµη ROM µε τη βοήθεια ενός συνδυαστικού κυκλώµατος αποκωδικοποίησης, η έξοδος του οποίου συνδέεται στο σήµα CS~ της µνήµης. Εάν υποθέσουµε ότι το κύκλωµα αυτό αποτελείται από µία NAND πύλη τριών εισόδων και παίρνει σαν είσοδο τα τρία πιο σηµαντικά σήµατα του δίαυλου διευθύνσεων (A13–A15), τότε το σήµα CS~ γίνεται ενεργό, όταν ο µικροεπεξεργαστής επιθυµεί την ανάγνωση κάποιας θέσης µνήµης µε διεύθυνση E00016–FFFF16. Παρατηρήστε ότι, όταν ο µικροεπεξεργαστής επιθυµεί την ανάγνωση µίας θέσης µνήµης µε διεύθυνση 000016–DFFF16, τότε η µνήµη ROM είναι ανενεργή (τότε µε κάποιο αντίστοιχο κύκλωµα αποκωδικοποίησης έχει ενεργοποιηθεί κάποιο άλλο ολοκληρωµένο κύκλώµα), καθώς επίσης και ότι ακόµα και όταν το σήµα CS~ είναι ενεργό, η µνήµη θα τοποθετήσει τα δεδοµένα στο δίαυλο δεδοµένων µόνο κατά το χρονικό διάστηµα στο οποίο το σήµα RD~ του µικροεπεξεργαστή είναι ενεργό.
6.3 ¢π∞™À¡¢∂™∏ ª¡∏ªø¡ RAM
161
Οι µνήµες PROM (Programmable ROM), EPROM (Erasable PROM), E2PROM (Electrically EPROM) έχουν τα ίδια ακριβώς χαρακτηριστικά µε τις µνήµες ROM, µε τη µόνη διαφορά ότι µπορούν µε τη βοήθεια υπεριώδους ακτινοβολίας και ηλεκτρικού φορτίου να σβηστούν και να ξαναγραφτούν. Η τοποθέτηση τέτοιων µνηµών σε κάποιο µικροϋπολογιστικό σύστηµα γίνεται µε τους ίδιους κανόνες διασύνδεσης που περιγράψαµε προηγούµενα.
Έχουµε ένα µικροεπεξεργαστή µε 16 γραµµές διευθύνσεων και θέλουµε να συνδέσουµε σε αυτόν µία µνήµη ROM 4Kx8. (α)Πόσες γραµµές διευθύνσεων χρειαζόµαστε για να διευθυνσιοδοτήσουµε όλες τις θέσεις της µνήµης; (β) Πόσες γραµµές χρησιµοποιούµε για το κύκλωµα αποκωδικοποίησης; (γ) Εάν θέλουµε η µνήµη να αποκωδικοποιείται στις διευθύνσεις 000016–0FFF16, ποιο θα πρέπει να είναι το κύκλωµα αποκωδικοποίησης;
6.3 ¢È·Û‡Ó‰ÂÛË ÌÓËÌÒÓ RAM
Σε αντίθεση µε τις µνήµες ROM, στις οποίες η µόνη λειτουργία που έχουµε είναι η ανάγνωση των δεδοµένων, στις µνήµες RAM (Random Access Memories), εκτός από ανάγνωση, µπορούµε να κάνουµε και εγγραφή δεδοµένων. Οι µνήµες αυτές χρησιµοποιούνται από τα προγράµµατα για την αποθήκευση των δεδοµένων. Τα ολοκληρωµένα κυκλώµατα των µνηµών RAM περιέχουν παρόµοια σήµατα µε αυτά που είδαµε στις µνήµες ROM: Έτσι, θα βρούµε τα σήµατα δεδοµένων και διευθύνσεων, καθώς και τα σήµατα CS~ και OE~. Εκτός από αυτά όµως υπάρχει και το σήµα ανάγνωσης/εγγραφής (R/W~), το οποίο καθορίζει εάν η λειτουργία που θα επιτελέσει η µνήµη θα είναι ανάγνωση ή εγγραφή. Η διασύνδεση µίας τέτοιας µνήµης γίνεται µε τους ίδιους κανόνες που είδαµε στις µνήµες ROM. Το σήµα εγγραφής µνήµης του µικροεπεξεργαστή (συνήθως ονοµάζεται WR~ ή MEMW) οδηγεί το σήµα R/W~. Όταν ο µικροεπεξεργαστής επιθυµεί την ανάγνωση ή εγγραφή δεδοµένων στη µνήµη αυτή, η διεύθυνση που παράγει αποκωδικοποιείται από το κύκλωµα αποκωδικοποίησης και ενεργοποιεί µέσω του σήµατος CS~ τη µνήµη. Τα λιγότερο σηµαντικά ψηφία της διεύθυνσης καθορίζουν τη θέση της µνήµης, όπου θα
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 6.2
K E º A § A I O 6 : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆ ∞
162
γίνει η εγγραφή ή η ανάγνωση. Σε περίπτωση εγγραφής το σήµα WR~ του µικροεπεξεργαστή επιλέγει τη λειτουργία εγγραφής στη µνήµη. Σε περίπτωση ανάγνωσης το σήµα R/W~ της µνήµης είναι στη λογική κατάσταση 1, ενώ το σήµα OE~ είναι στη λογική κατάσταση 0, επιτρέποντας έτσι την εµφάνιση των δεδοµένων της µνήµης στο δίαυλο δεδοµένων.
∆ίαυλοςv διευθύνσεων 2
D7v
A15v •v
KME
•v
•v
•v
•v
•v D0
A0 WR~
∆ίαυλοςv δεδοµένων
RD~ 8
14 OE~ R/W~ A0v •v •v •v
™¯‹Ì· 6.2
Η διασύνδεση µίας µνήµης RΑM
A13 Kύκλωµαv αποκωδικοποίησης
D0v RAMU 16Kx8
•v •v •v D7
CS~
Στο σχήµα 6.2 δίνεται για παράδειγµα η διασύνδεση µίας µνήµης RAM 16Kx8 στον υποθετικό µικροεπεξεργαστή που είδαµε προηγούµενα. Για να µπορούµε να διευθυνσιοδοτήσουµε όλες τις θέσεις µνήµης της RAM συνδέουµε τις γραµµές διευθύνσεων που έχει µε τις 14 λιγότερο σηµαντικές γραµµές του διαύλου διευθύνσεων του συστήµατος. Οι 8 γραµµές δεδοµένων συνδέονται αντίστοιχα στο δίαυλο δεδοµένων. Το σήµα RD~ επιτρέπει τη µεταφορά των δεδοµένων στο δίαυλο δεδοµένων µόνο στην περίπτωση που έχουµε ανάγνωση της µνήµης, ενώ το σήµα WR~ χρησιµοποιείται για να επιλέξει µια λειτουργία ανάγνωσης ή εγγραφής. Η µνήµη ενεργοποιείται, όταν το κύκλωµα αποκωδικοποίησης διευθύνσεων, που χρησιµοποιεί τις 2 πιο σηµαντικές γραµµές του δίαυλου διευθύνσεων, παράγει ένα ενεργό σήµα CS~. Εάν π.χ. το κύκλωµα απο-
6.4 ¢π∞™À¡¢∂™∏ ™À™∫∂Àø¡ ∂π™√¢√À/∂•√¢√À
163
κωδικοποίησης αποτελείται από µια OR δύο εισόδων, τότε η µνήµη αντιστοιχεί στις διευθύνσεις 000016–3FFF16, αφού για να επιλεγεί η µνήµη θα πρέπει τα δύο σηµαντικότερα ψηφία της διεύθυνσης να είναι στην τιµή 0.
Σχεδιάστε το κύκλωµα αποκωδικοποίησης στην περίπτωση της διασύνδεσης µίας µνήµης RAM 16Κx8 µε τον 8086. Η µνήµη καλύπτει τις θέσεις FC00016–FFFFF16 του χώρου διευθύνσεων του µικροεπεξεργαστή. Πώς θα συνδέσουµε τα σήµατα OE~ και R/W~ της µνήµης; Θεωρήστε ότι ο 8086 λειτουργεί στον ελάχιστο τρόπο λειτουργίας.
6.4 ¢È·Û‡Ó‰ÂÛË Û˘Û΢ÒÓ ÂÈÛfi‰Ô˘/ÂÍfi‰Ô˘
™ÎÔfi˜ Στις προηγούµενες ενότητες γνωρίσατε τον τρόπο µε τον οποίο µπορείτε να διασυνδέσετε µία µνήµη σ’ ένα µικροεπεξεργαστή. Στην ενότητα αυτή θα γνωρίσετε τον τρόπο µε τον οποίο µπορούµε να συνδέσουµε συσκευές εισόδου ή εξόδου στους διαύλους ενός µικροϋπολογιστικού συστήµατος. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Ολοκληρώνοντας τη µελέτη αυτής της ενότητας, θα είστε σε θέση να περιγράψετε τους δύο τρόπους διασύνδεσης µίας συσκευή εισόδου ή εξόδου σε ένα σύστηµα, καθώς και να σχεδιάσετε κυκλώµατα διασύνδεσης απλών περιφερειακών συσκευών. ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Η ενότητα αυτή έχει αρκετά µεγάλο µέγεθος. Αφιερώστε αρκετό χρόνο ώστε να κατανοήσετε τα παραδείγµατα, τα οποία παρουσιάζονται σε αυτή. Τελειώνοντας, θα πρέπει να µελετήσετε προσεκτικά το Παράδειγµα 1, το οποίο παρουσιάζει έναν ολοκληρωµένο µικροϋπολογιστή και συνοψίζει τα όσα έχετε µάθει στις προηγούµενες ενότητες. Εάν έχετε δυσκολίες στην κατανόηση του παραδείγµατος αυτού, θα πρέπει να επαναλάβετε τη µελέτη του κεφαλαίου µε µεγαλύτερη προσοχή.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 6.3
164
K E º A § A I O 6 : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆ ∞
Όπως γνωρίσαµε σε προηγούµενα κεφάλαια, υπάρχουν µικροεπεξεργαστές, οι οποίοι έχουν διαφορετικό χώρο διευθύνσεων για τη µνήµη και διαφορετικό χώρο διευθύνσεων για τις συσκευές εισόδου/εξόδου. Έτσι, για παράδειγµα µάθαµε ότι ο 8086 µπορεί να διευθυνσιοδοτήσει 1 ΜΒ θέσεις κύριας µνήµης και 64 ΚΒ θέσεις συσκευών εισόδου/εξόδου. Οι εντολές που χρησιµοποιούνται για την ανάγνωση και εγγραφή δεδοµένων στις συσκευές εισόδου/εξόδου ονοµάζονται συνήθως IN και OUT. Κάθε φορά που το σύστηµα επιθυµεί τη µεταφορά δεδοµένων από και προς αυτές τις συσκευές, εκτελεί την αντίστοιχη εντολή. Κατά την εκτέλεση των εντολών αυτών, ο µικροεπεξεργαστής παράγει αντίστοιχα τα σήµατα ανάγνωσης συσκευής εισόδου/εξόδου (I/OR~) και εγγραφής συσκευής εισόδου/εξόδου (I/OW~), τα οποία χρησιµοποιούνται για να επιλέγουν την αντίστοιχη λειτουργία. Όταν θέλουµε να διασυνδέσουµε κάποια περιφερειακή συσκευή µε κάποιο µικροεπεξεργαστή, έχουµε δύο εναλλακτικές λύσεις: Η πρώτη ονοµάζεται I/O–mapped Ι/Ο και χρησιµοποιεί το χώρο διευθύνσεων των συσκευών εισόδου/εξόδου που διαθέτει ο µικροεπεξεργαστής. Η µεταφορά δεδοµένων γίνεται µε τις εντολές IN και OUT, ενώ η διασύνδεση µε τη βοήθεια των σηµάτων I/OR~ και I/OW~ του µικροεπεξεργαστή. Η δεύτερη εναλλακτική λύση ονοµάζεται memory–mapped I/O. Στην περίπτωση αυτή χρησιµοποιούµε τις συσκευές εισόδου/εξόδου, όπως τις µνήµες. Μπορούµε να χρησιµοποιήσουµε όλες τις εντολές και τους τρόπους διευθυνσιοδότησης που χρησιµοποιούµε για τη µνήµη, ενώ η διασύνδεση γίνεται µε τη βοήθεια των σηµάτων MEMR~ και MEMW~ του µικροεπεξεργαστή. Σε κάθε περίπτωση θα πρέπει να αντιστοιχήσουµε κάθε περιφερειακή συσκευή (η οποία µπορεί να απαιτεί µία ή περισσότερες διευθύνσεις) σε συγκεκριµένο σηµείο του χώρου διευθύνσεων του µικροεπεξεργαστή µε τη βοήθεια κάποιου κυκλώµατος αποκωδικοποίησης διευθύνσεων παρόµοιου µε αυτά που είδαµε στις προηγούµενες ενότητες. Έστω ότι έχουµε ένα µικροϋπολογιστικό σύστηµα, στο οποίο θέλουµε να έχουµε τη δυνατότητα να οδηγούµε κάποια LEDs (Light Emitting Diodes), όπως για παράδειγµα συµβαίνει σε ένα σύστηµα προβολής ανακοινώσεων. Στο σχήµα 6.3 µπορείτε να δείτε τον τρόπο µε τον οποίο µπορούµε να συνδέσουµε τα LEDs στους διαύλους του µικροεπεξεργαστή. Τα LEDs συνδέονται σε µανταλωτές (latch), οι οποίοι, όταν λάβουν παλµό στην είσοδο χρονισµού τους, αποθηκεύουν τα δεδοµένα που βρίσκονται στο δίαυλο δεδοµένων σε αυτά. Ο παλµός χρονισµού του µανταλωτή δηµιουργείται από το
6.4 ¢π∞™À¡¢∂™∏ ™À™∫∂Àø¡ ∂π™√¢√À/∂•√¢√À
165
κύκλωµα αποκωδικοποίησης και το σήµα I/OW~ που παράγει ο µικροεπεξεργαστής (έστω ότι χρησιµοποιούµε I/O–mapped I/O τρόπο διασύνδεσης). ∆ίαυλοςv διευθύνσεων
A15v •v •v •v
A0
D7v KME
•v •v •v
D0
∆ίαυλοςv δεδοµένων
D0
I/OW~
D
Q
CLK
Kύκλωµαv αποκωδικοποίησης D1
D
Q
CLK •v •v •
D7
D CLK
™¯‹Ì· 6.3 Η διασύνδεση µιας συστοιχίας από LEDs σε ένα µικροεπεξεργαστή
Όταν το µικροϋπολογιστικό σύστηµα επιθυµεί να αλλάξει την κατάσταση κάποιων LEDs, εκτελείται µία εντολή OUT µε διεύθυνση τη διεύθυνση, στην οποία αποκωδικοποιούνται οι µανταλωτές, και µε αυτά τα δεδοµένα που θα προκαλέσουν τις επιθυµητές αλλαγές καταστάσεων. Κατά την εκτέλεση της εντολής OUT στο δίαυλο διευθύνσεων εµφανίζεται η διεύθυνση των µανταλωτών και ο µικροεπεξεργαστής παράγει, τη στιγµή που τοποθετεί τα δεδοµένα στο δίαυλο δεδοµένων, ένα σήµα I/OW~, το οποίο µαζί µε τη διεύθυνση δηµιουργεί έναν παλµό χρονισµού στους µανταλωτές, µε αποτέλεσµα να αποθηκεύονται τα νέα δεδοµένα σε αυτούς και να αλλάζουν οι καταστάσεις των LEDs. Έστω τώρα ότι έχουµε ένα µικροϋπολογιστικό σύστηµα, το οποίο χρησιµοποιείται σ’ ένα εργοστάσιο παρασκευής χηµικών, και θέλουµε να ελέγχουµε την κατάσταση, στην οποία βρίσκεται ένας διακόπτης που ελέγχει τη ροή κάποιου χηµικού στοιχείου. Ο διακόπτης έχει τη δυνατότητα να µας δίνει µία λογική τιµή 0 ή 1, ανάλογα µε το αν είναι ανοικτός ή κλειστός. Στο σχήµα 6.4 µπορούµε να δούµε τον τρόπο µε τον οποίο µπορούµε να διασυνδέσουµε το διακόπτη µε κάποιο µικροεπεξεργαστή έτσι ώστε να µπορούµε ανά
Q
K E º A § A I O 6 : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆ ∞
166
πάσα στιγµή να γνωρίζουµε την κατάσταση του διακόπτη. Το πρόγραµµα του µικροεπεξεργαστή εκτελεί σε τακτά χρονικά διαστήµατα µία εντολή IN µε διεύθυνση τη διεύθυνση στην οποία έχει αντιστοιχιστεί ο διακόπτης (στην πραγµατικότητα το D flip–flop, στο οποίο έχει συνδεθεί). Κατά την εκτέλεση της εντολής στο δίαυλο διευθύνσεων εµφανίζεται η διεύθυνση του διακόπτη και το σήµα I/OR~ γίνεται ενεργό, µε αποτέλεσµα να παράγεται ένας παλµός χρονισµού στο D flip–flop. Η τιµή του διακόπτη µεταφέρεται διαµέσου του D flip–flop και του tri–state buffer στο δίαυλο δεδοµένων και καταλήγει τελικά στο µικροεπεξεργαστή. Ο tri–state buffer χρησιµοποιείται ώστε τα δεδοµένα του D flip–flop να βρίσκονται στο δίαυλο δεδοµένων µόνο κατά το χρονικό διάστηµα όπου ο µικροεπεξεργαστής ζητάει την ανάγνωση των δεδοµένων της συσκευής µε τη διεύθυνση του διακόπτη. Σε οποιαδήποτε άλλη χρονική στιγµή η έξοδος του tri–state buffer βρίσκεται σε κατάσταση υψηλής εµπέδησης για να µην παρενοχλεί τις µεταφορές δεδοµένων µε τις άλλες συσκευές ή µε τη µνήµη. ∆ίαυλοςv διευθύνσεων
A15v
D7v
•v •v •v
•v •v •v
A0
KME
D0
∆ίαυλοςv δεδοµένων +5V D0
I/OW~
Q
D
CLK +5V
Kύκλωµαv αποκωδικοποίησης D1
Q
D
CLK •v •v •
+5V
™¯‹Ì· 6.4
Η διασύνδεση µίας συστοιχίας από διακόπτες σε ένα µικροεπεξεργαστή
D7
Q
D
CLK
Μέχρι τώρα είδαµε ένα παράδειγµα διασύνδεσης µίας απλής συσκευής εισόδου (µίας συσκευής που συµπεριφερόταν ως απλός διακόπτης) και ένα παράδειγµα διασύνδεσης µίας απλής συσκευής εξόδου (κάποιων LEDs) σε ένα µικροεπεξεργαστή. Φυσικά σε µικροϋπολογιστικά συστήµατα µπορούµε να
6.4 ¢π∞™À¡¢∂™∏ ™À™∫∂Àø¡ ∂π™√¢√À/∂•√¢√À
βρούµε πιο πολύπλοκες συσκευές από αυτές που αναφέραµε προηγούµενα. Όλες οι συσκευές όµως ακολουθούν παρόµοιους κανόνες διασύνδεσης µε αυτούς που είδαµε προηγούµενα. Σε περιπτώσεις πιο πολύπλοκων συστηµάτων η διασύνδεση των περιφερειακών συσκευών γίνεται µε τη βοήθεια ελεγκτών, ολοκληρωµένων κυκλωµάτων ειδικά κατασκευασµένων ώστε να διευκολύνουν τη διασύνδεση των συσκευών µε τους διαύλους κάποιου µικροεπεξεργαστή. ¶·Ú¿‰ÂÈÁÌ· 6.1 Μελέτη ενός ολοκληρωµένου µικροϋπολογιστικού συστήµατος.
∞¿ÓÙËÛË ¶·Ú·‰Â›ÁÌ·ÙÔ˜ 6.1 Ας υποθέσουµε ότι έχουµε το µικροϋπολογιστικό σύστηµα που βλέπετε στο σχήµα 6.5. Αποτελείται από ένα µικροεπεξεργαστή, µνήµη ROM 8Κx8, στην οποία είναι αποθηκευµένο το πρόγραµµα που εκτελεί τις λειτουργίες του συστήµατος, και µνήµη RAM 16Kx8 για την αποθήκευση δεδοµένων. Περιέχει επίσης µία µονάδα εισόδου, που είναι ένα απλό πληκτρολόγιο (keypad), µία µονάδα εξόδου, που είναι µία µονάδα απεικόνισης (seven segment display), και συσκευές διασύνδεσης (8212) για να συνδέονται οι συσκευές αυτές στους διαύλους του συστήµατος. Ο 8212 είναι µία απλή συσκευή διασύνδεσης για περιφερειακές συσκευές. Μπορεί να χρησιµοποιηθεί είτε µε συσκευές εισόδου είτε µε συσκευές εξόδου. Το σήµα MD καθορίζει τον τρόπο λειτουργίας της συσκευής. Όταν το MD είναι στη λογική κατάσταση 0, τότε ο 8212 διασυνδέει κάποια συσκευή εισόδου, ενώ όταν το MD είναι στη λογική κατάσταση 1, τότε ο 8212 διασυνδέει κάποια συσκευή εξόδου. Τα σήµατα DI7–DI0 αποτελούν το δίαυλο δεδοµένων εισόδου, ενώ τα σήµατα DO7–DO0 αποτελούν το δίαυλο δεδοµένων εξόδου. Τα σήµατα DS1~ και DS2 είναι τα σήµατα επιλογής της συσκευής (αντιστοιχούν στα σήµατα CS~ που είχαµε δει στις µνήµες). Επίσης υπάρχει το σήµα STB, που χρησιµοποιείται για να ειδοποιεί η συσκευή εισόδου τον 8212, όταν έχει έτοιµα τα δεδοµένα, και µία γραµµή ΙΝΤ~, µε την οποία ο 8212 µπορεί να προκαλέσει κάποια αίτηση διακοπής στον µικροεπεξεργαστή. Το σύστηµά µας χρησιµοποιεί ένα κύκλωµα αποκωδικοποίησης διευθύνσεων, το οποίο αποτελείται από έναν αποκωδικοποιητή 2–σε–4 (2–4 decoder), ο οποίος παράγει τα κατάλληλα σήµατα επιλογής DS, στην περίπτωση του πληκτρολογίου και της µονάδας απεικόνισης, και CS στην περίπτωση των
167
K E º A § A I O 6 : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆ ∞
168
Πληκτρολόγιο
STB DS1~ DS2
Λογικό 0
DO0v 8212U I/O port
•v •v •v
DO7
MD
INT~
A15v
INTR D7v
•v •v •v
Kύκλωµαv αποκωδικοποίησης
DI0••• DI7
KME
A0
∆ίαυλοςv δεδοµένων
•v •v •v
D0
WR~ RD~
∆ίαυλοςv διευθύνσεων
OE~ R/W~ A0v •v •v •v
D0v RAMU 16Kx8
A13
•v •v •v
D7
CS~ OE~ A0v •v •v •v
A12
D0v ROMU 8Kx8
•v •v •v
D7
CS~ DS1~ DS~
DI0v •v
8212U I/O port
Λογικό 1
MD
•v •v DI7
DI0••• DI7
™¯‹Ì· 6.5
Ένα ολοκληρωµένο µικροϋπολογιστικό σύστηµα
Mονάδαv απεικόνισης
6.4 ¢π∞™À¡¢∂™∏ ™À™∫∂Àø¡ ∂π™√¢√À/∂•√¢√À
169
µνηµών ROM και RAM. Με τη βοήθεια του κυκλώµατος αποκωδικοποίησης, οι µνήµες, το πληκτρολόγιο και η µονάδα απεικόνισης απεικονίζονται σε διαφορετικά σηµεία του χώρου διευθύνσεων του µικροεπεξεργαστή. Τα σήµατα ανάγνωσης και εγγραφής δεδοµένων (MEMR~, MEMW~) συνδέονται στη µνήµη και στους 8212 µε τον τρόπο που είδαµε στις προηγούµενες ενότητες. Όταν ο µικροεπεξεργαστής επιθυµεί να απεικονίσει κάποια πληροφορία στη µονάδα απεικόνισης, εκτελεί µία εντολή αποθήκευσης δεδοµένων στη διεύθυνση που βρίσκεται ο 8212, στον οποίο είναι συνδεµένη. Με τον τρόπο αυτό επιλέγεται ο 8212 και τα δεδοµένα µεταφέρονται, µέσω του διαύλου δεδοµένων του συστήµατος, στον 8212 και από εκεί στη µονάδα απεικόνισης. Η είσοδος δεδοµένων από το πληκτρολόγιο διαφέρει λίγο από τον τρόπο που είδαµε προηγούµενα. Όταν πατηθεί κάποιο πλήκτρο, το σήµα STB ειδοποιεί τον 8212 για τα νέα δεδοµένα. Ο 8212 µεταφέρει τα δεδοµένα σε αυτόν και ταυτόχρονα δηµιουργεί µία αίτηση διακοπής προς το µικροεπεξεργαστή µέσω του σήµατος INT~. Ο µικροεπεξεργαστής, αναγνωρίζοντας την αίτηση διακοπής, θα πρέπει να ελέγξει ποια ήταν η συσκευή που προκάλεσε τη διακοπή και να εκτελέσει την αντίστοιχη ρουτίνα εξυπηρέτησης (στη συγκεκριµένη περίπτωση βέβαια η µόνη συσκευή που υπάρχει είναι το πληκτρολόγιο). Παρατηρήστε ότι στο συγκεκριµένο παράδειγµα στη διασύνδεση του πληκτρολογίου και της µονάδας απεικόνισης µε το σύστηµα χρησιµοποιούµε memory–mapped I/O και γι' αυτό χρησιµοποιούµε τα σήµατα ΜΕMR~ και MEMW~ για να οδηγήσουµε τα 8212 αντί για τα σήµατα I/OR~ και I/OW~ που χρησιµοποιούµε στην περίπτωση του I/O–mapped Ι/Ο. Εποµένως, οι συσκευές αυτές αποκωδικοποιούνται στο χώρο διευθύνσεων της µνήµης και όχι στον I/O χώρο διευθύνσεων του µικροεπεξεργαστή.
Θεωρήστε το σχεδιασµό του παραδείγµατος 1. Έστω ότι θέλουµε η µνήµη ROM να αποκωδικοποιείται στις διευθύνσεις 000016–1FFF16, η µνήµη RAM να αποκωδικοποιείται στις διευθύνσεις 800016–AFFF16, το πληκτρολόγιο στη θέση 400016, ενώ η µονάδα απεικόνισης στη θέση C00016. Σχεδιάστε το κύκλωµα αποκωδικοποίησης.
ÕÛÎËÛË ∞˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 6.4
K E º A § A I O 6 : O § √ ∫ § ∏ ƒ ø ª ∂ ¡ ∞ M π ∫ ƒ √ À ¶ √ § √ ° π ™ ∆ π ∫ ∞ ™ À ™ ∆ ∏ ª ∞∆ ∞
170
6.5 ™˘ÛÙ‹Ì·Ù· ·Ó¿Ù˘Í˘ ÌÈÎÚÔ¸ÔÏÔÁÈÛÙÈÎÒÓ Û˘ÛÙËÌ¿ÙˆÓ
Η κατασκευή ενός µικροϋπολογιστικού συστήµατος περνάει από διάφορα στάδια: στην αρχή έχουµε την καταγραφή των προδιαγραφών που θα πρέπει να πληρεί το σύστηµα. Στη συνέχεια γίνεται ο σχεδιασµός του συστήµατος. Ακολουθεί η κατασκευή του πρωτότυπου και ο έλεγχος του κατά πόσο πληρεί τις προδιαγραφές που έχουν τεθεί. Τα βήµατα αυτά επαναλαµβάνονται ξανά από την αρχή για να διορθωθούν τυχόν ατέλειες µέχρι να προκύψει το τελικό σύστηµα. Είναι προφανές ότι ο χρόνος που περνάει από τη στιγµή της σύλληψης µιας ιδέας µέχρι την υλοποίησή της και την κατασκευή του επιθυµητού συστήµατος είναι κρίσιµος για την εµπορική επιτυχία του συστήµατος και θα πρέπει να διατηρείται όσο το δυνατό µικρότερος. Οι κατασκευαστές, για να βοηθήσουν την ανάπτυξη µικροϋπολογιστικών συστηµάτων, παρέχουν µαζί µε τους µικροεπεξεργαστές και συστήµατα ανάπτυξης µικροϋπολογιστικών συστηµάτων (development kits), τα οποία έχουν ως σκοπό να διευκολύνουν τη διαδικασία ανάπτυξης τέτοιων συστηµάτων. Τα συστήµατα ανάπτυξης µικροϋπολογιστικών συστηµάτων µπορούν να περιέχουν είτε υλικό (όπως ειδικές συσκευές εξοµοίωσης της λειτουργίας του µικροεπεξεργαστή) είτε λογισµικό (συµβολοµεταφραστές, λογισµικό για εκσφαλµάτωση του προγράµµατος του συστήµατος κ.λπ.) και διευκολύνουν σηµαντικά τη δουλειά του σχεδιαστή. ™‡ÓÔ„Ë Τα µικροϋπολογιστικά συστήµατα αποτελούνται συνήθως από ένα µικροεπεξεργαστή, ολοκληρωµένα κυκλώµατα µνήµης ROM ή/και RAM και περιφερειακές συσκευές συνδεµένα στους διαύλους του συστήµατος. Η διασύνδεση ορίζει τους κανόνες, µε τους οποίους µπορούν να συνδεθούν δυο συσκευές µεταξύ τους. Ένα από τα πρώτα βήµατα στο σχεδιασµό του συστήµατος είναι η αντιστοίχηση των συσκευών του συστήµατος στο χώρο διευθύνσεων, που µπορεί να διαχειριστεί ο µικροεπεξεργαστής. Η αντιστοίχηση αυτή γίνεται µε τη βοήθεια κάποιων κυκλωµάτων αποκωδικοποίησης, τα οποία αποκωδικοποιούν τη διεύθυνση, την οποία ορίζει ο µικροεπεξεργαστής και, εάν αυτή συµφωνεί µε τη διεύθυνση της συσκευής, ενεργοποιούν τη συσκευή αυτή. Τα κυκλώµατα αποκωδικοποίησης είναι συνήθως απλά συνδυαστικά κυκλώµατα και απο-
™YNOæH
τελούνται από απλά στοιχεία, όπως πύλες και αποκωδικοποιητές. Οι µνήµες ROM και RAM έχουν ένα συγκεκριµένο πλήθος θέσεων µνήµης και διευθυνσιοδοτούνται από ένα υποσύνολο των γραµµών διευθύνσεων. Οι υπόλοιπες γραµµές διευθύνσεων οδηγούνται στο κύκλωµα αποκωδικοποίησης για να παράγουν το αντίστοιχο σήµα επιλογής της µνήµης. Όλα τα µικροϋπολογιστικά συστήµατα παράγουν κάποιο σήµα ανάγνωσης µνήµης (MEMR~) και κάποιο σήµα εγγραφής στη µνήµη (π.χ. MEMW~). Στην περίπτωση µίας µνήµης ROM, το σήµα ανάγνωσης οδηγείται στην είσοδο OE~ της µνήµης, ώστε η µνήµη να τοποθετεί τα δεδοµένα στο δίαυλο δεδοµένων, όταν πρόκειται για κύκλο ανάγνωσης. Στην περίπτωση µίας µνήµης RAM, εκτός από το σήµα MEMR~, χρησιµοποιείται και το σήµα MEMW~, που οδηγείται στην είσοδο R/W~ και καθορίζει τη λειτουργία της µνήµης. Η διασύνδεση περιφερειακών συσκευών µπορεί να γίνει είτε µε τη βοήθεια των σηµάτων ανάγνωσης και εγγραφής στη µνήµη, οπότε στην περίπτωση αυτή οι περιφερειακές συσκευές αντιστοιχίζονται στο χώρο διευθύνσεων µνήµης του µικροεπεξεργαστή (memory–mapped Ι/Ο), είτε µε τη βοήθεια των σηµάτων ανάγνωσης και εγγραφής σε συσκευή εισόδου/εξόδου, που περιέχουν συνήθως οι µικροεπεξεργαστές, οπότε οι περιφερειακές συσκευές αντιστοιχίζονται στο χώρο διευθύνσεων συσκευών εισόδου/εξόδου του µικροεπεξεργαστή (I/O–mapped I/O). Στην πρώτη περίπτωση µπορούν να χρησιµοποιηθούν όλοι οι τρόποι προσπέλασης της µνήµης και όλες οι εντολές για να προσπελαστεί κάποια περιφερειακή συσκευή, ενώ στη δεύτερη περίπτωση χρησιµοποιούνται οι εντολές IN και OUT. Η διασύνδεση απλών συσκευών, όπως µονάδων απεικόνισης (LEDs, seven–segment displays) και διακοπτών, µπορεί να γίνει µε τρόπο παρόµοιο µε αυτό των µνηµών. Η διασύνδεση πιο πολύπλοκων συσκευών γίνεται µε τη βοήθεια ειδικών ολοκληρωµένων κυκλωµάτων, που έχουν σχεδιαστεί γι’ αυτό το σκοπό και ονοµάζονται συνήθως ελεγκτές. Πολλές φορές επίσης στη διασύνδεση περιφερειακών συσκευών χρησιµοποιούνται οι αιτήσεις διακοπής. Όταν µια περιφερειακή συσκευή επιθυµεί τη µεταφορά δεδοµένων από ή προς το µικροεπεξεργαστή, δηµιουργεί µία αίτηση διακοπής. Ο µικροεπεξεργαστής εξυπηρετεί αυτή την αίτηση και µεταφέρει τα δεδοµένα. Σε κάθε περίπτωση ο σχεδιασµός των συστηµάτων θα πρέπει να γίνεται µε προσοχή, ώστε κάθε φορά µόνο µία συσκευή να µεταφέρει δεδοµένα από και
171
B I B § I O ° PA º I A
172
προς το µικροεπεξεργαστή µέσω του διαύλου δεδοµένων, ενώ όλες οι άλλες συσκευές θα πρέπει να είναι απενεργοποιηµένες. Η ανάπτυξη ολοκληρωµένων συστηµάτων βασισµένων σε µικροεπεξεργαστές είναι µία αρκετά σύνθετη και επίπονη διαδικασία και βασίζεται συνήθως στην εµπειρία και εφευρετικότητα του σχεδιαστή. Παρά το γεγονός αυτό όµως, οι κατασκευαστές µικροεπεξεργαστών παρέχουν διάφορα εργαλεία ανάπτυξης µικροϋπολογιστικών συστηµάτων για να διευκολύνουν τη διαδικασία σχεδιασµού. BÈÏÈÔÁÚ·Ê›·
Τώρα που τελειώσατε την ανάγνωση του έκτου κεφαλαίου, καλό είναι να διαθέσετε κάποιον επιπλέον χρόνο για να µελετήσετε τα παρακάτω κείµενα, τα οποία περιέχουν πληροφορίες για τον τρόπο µε τον οποίο κατασκευάζουµε ολοκληρωµένα µικροϋπολογιστικά συστήµατα: 1. Theory and Problems of Microprocessor Fundamentals, Schaum’s Outline Series, Roger L. Tokheim, Κεφάλαιο 7. Στο κεφάλαιο αυτό θα βρείτε παραδείγµατα και ασκήσεις, που αφορούν στη διασύνδεση µνηµών και περιφερειακών σε κάποιο γενικό µικροεπεξεργαστή. 2. Handbook of Software & Hardware Interfacing for IBM PCs, Jeffrey P. Royer, Prentice–Hall, Inc, Κεφάλαια 14–15. Στα κεφάλαια αυτά θα βρείτε την περιγραφή του τρόπου, µε τον οποίο είναι φτιαγµένοι οι IBM PC συµβατοί προσωπικοί υπολογιστές, και κάποια παραδείγµατα διασύνδεσης συσκευών εισόδου/εξόδου.
E›ÏÔÁÔ˜: ™‡Á¯ÚÔÓ˜ T¿ÛÂȘ ™¯Â‰È·ÛÌÔ‡ MÈÎÚÔÂÂÍÂÚÁ·ÛÙÒÓ Στα προηγούµενα κεφάλαια του βιβλίου αυτού γνωρίσατε: (α) τα βασικά σηµεία, τα οποία απαρτίζουν κάθε µικροεπεξεργαστή (ή τουλάχιστον ήταν τα βασικά στοιχεία κάθε µικροεπεξεργαστή για πολλά χρόνια στο παρελθόν), (β) τη δοµή και φιλοσοφία σχεδιασµού κάποιων από τους πρώτους µικροεπεξεργαστές, όπως οι Intel 8080/8085 και 8086/8088 και ο Motorola 6800, και (γ) τον τρόπο µε τον οποίο µπορούµε να διασυνδέσουµε κάποιο µικροεπεξεργαστή µε κυκλώµατα µνηµών ή περιφερειακών συσκευών για να κατασκευάσουµε ολοκληρωµένα µικροϋπολογιστικά συστήµατα. ™ÎÔfi˜ Τελειώνοντας το βιβλίο µε το κεφάλαιο αυτό, θα περιγράψουµε σε συντοµία κάποια βασικά στοιχεία της εξέλιξης των µικροεπεξεργαστών µέχρι σήµερα, καθώς και τα χαρακτηριστικά που διακρίνουν τους σύγχρονους µικροεπεξεργαστές. ¶ÚÔÛ‰ÔÎÒÌÂÓ· ·ÔÙÂϤÛÌ·Ù· Όταν θα ολοκληρώσετε τη µελέτη αυτού του κεφαλαίου, θα είστε σε θέση να: • ορίσετε τις βασικές κατευθύνσεις πάνω στις οποίες κινήθηκε η εξέλιξη των µικροεπεξεργαστών. • καθορίσετε τις αιτίες, οι οποίες οδήγησαν σε αυτή την εξέλιξη. ŒÓÓÔȘ ÎÏÂȉȿ • ∆ιοχέτευση
• Σύγχρονοι Μικροεπεξεργαστές
• Ιεραρχία Μνήµης
• Ταχύτητα Χρονισµού
• Μήκος λέξης ∂ÈÛ·ÁˆÁÈΤ˜ ·Ú·ÙËÚ‹ÛÂȘ Το 7ο κεφάλαιο αποτελεί τον επίλογο του βιβλίου αυτού. Στις επόµενες σελίδες θα βρείτε σε συντοµία ποια ήταν τα κύρια σηµεία εξέλιξης των µικροεπεξεργαστών µέχρι σήµερα, καθώς και τις αιτίες που προκάλεσαν αυτή την εξέλιξη. Πριν προχωρήσετε, όµως, στη µελέτη του κεφαλαίου αυτού, θα ήταν καλό να επαναλάβετε την ανάγνωση της Ενότητας 1.5, η οποία περιέχει µία ιστορική αναδροµή στους κυριότερους µικροεπεξεργαστές.
∫
7 ∂
º
∞
§
∞
π
√
174
K E º A § A I O 7 : E ¶ π § √ ° √ ™ / ™ À ° Ã ƒ √ ¡ ∂ ™ T∞ ™ ∂ π ™ ™ Ã ∂ ¢ π ∞ ™ ª √ À M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ø ¡
7.1 H ÂͤÏÈÍË ÙˆÓ ÌÈÎÚÔÂÂÍÂÚÁ·ÛÙÒÓ – ™‡Á¯ÚÔÓ· ΢ÎÏÒÌ·Ù·
Οι µικροεπεξεργαστές, στα περίπου 30 χρόνια εξέλιξής τους, πέρασαν από πολλά στάδια. Ο σχεδιασµός των πρώτων µικροεπεξεργαστών ήταν προσανατολισµένος στο σκοπό για τον οποίο είχαν αυτοί κατασκευαστεί: τη δηµιουργία απλών συστηµάτων αυτοµάτου ελέγχου και τη χρήση τους σε συσκευές, όπως εκτυπωτές, τερµατικές συσκευές, αριθµοµηχανές κ.ά. Στη συνέχεια οι σχεδιαστές µικροεπεξεργαστών στράφηκαν στην ανάπτυξη ολοκληρωµένων κυκλωµάτων, τα οποία θα ήταν γενικού σκοπού και θα µπορούσαν να χρησιµοποιηθούν σε πολλές εφαρµογές µε τη βοήθεια συµπληρωµατικών ολοκληρωµένων κυκλωµάτων, που κατασκευάζονταν ειδικά για κάθε εφαρµογή. Η εξέλιξη στο σχεδιασµό των µικροεπεξεργαστών δεν θα µπορούσε να είναι ανεξάρτητη από τις ανάγκες των χρηστών. Έτσι, οι αυξανόµενες απαιτήσεις για σύγχρονες εφαρµογές, όπως π.χ. φορητές συσκευές, ή για δικτυακές εφαρµογές µε µετάδοση εικόνας και video οδηγούσαν την εξέλιξη των µικροεπεξεργαστών, ενώ οι νέοι µικροεπεξεργαστές έδιναν τη δυνατότητα για την ανάπτυξη ακόµα πιο πολύπλοκων και "έξυπνων" συσκευών. Το παραπάνω γεγονός σε συνδυασµό µε την εξέλιξη της τεχνολογίας των ολοκληρωµένων κυκλωµάτων, που έδωσε τη δυνατότητα για την ενσωµάτωση εκατοµµυρίων τρανσίστορς µέσα σ’ ένα ολοκληρωµένο κύκλωµα, οδήγησαν στην ανάπτυξη νέων και ισχυρών µικροεπεξεργαστών. Όλες οι προσπάθειες των σχεδιαστών µικροεπεξεργαστών από τους πρώτους 16–bit µέχρι τους σύγχρονους µικροεπεξεργαστές των 64–bits κινήθηκαν πάνω στους ίδιους άξονες: οι νέοι µικροεπεξεργαστές θα πρέπει να είναι πιο γρήγοροι σε ταχύτητα, να έχουν µεγαλύτερες δυνατότητες επεξεργασίας, να έχουν µικρότερη κατανάλωση από τους προγενέστερούς τους και να µπορούν να καλύψουν τις απαιτήσεις των σύγχρονων εφαρµογών. Αν παρατηρήσουµε την εξέλιξη των µικροεπεξεργαστών από την εµφάνιση του 8086 µέχρι τους σηµερινούς µικροεπεξεργαστές, µπορούµε να παραθέσουµε κάποια στοιχεία, τα οποία είναι ενδεικτικά της εξέλιξής τους. Το µήκος λέξης του µικροεπεξεργαστή µεγάλωσε από 16 δυαδικά ψηφία σε 32 και σήµερα στα 64 δυαδικά ψηφία. Έτσι, οι σηµερινοί µικροεπεξεργαστές µπορούν να υλοποιούν άµεσα και γρήγορα µεγάλους αριθµητικούς υπολογισµούς. Ταυτόχρονα µε το µήκος λέξης, αυξήθηκε και το πλήθος των θέσεων µνήµης, που µπορεί να προσπελάσει ο µικροεπεξεργαστής. Έτσι σήµερα συνα-
7 . 1 H ∂ • ∂ § π • ∏ ∆ ø ¡ ª π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ø ¡ – ™ À ° Ã ƒ √ ¡ ∞ ∫ À ∫ § ø ª ∞ ∆ ∞
ντάµε µικροεπεξεργαστές µε δίαυλο διευθύνσεων µεγέθους 64 δυαδικών ψηφίων µε δυνατότητα διευθυνσιοδότησης πολλών GB θέσεων µνήµης. Εκτός αυτού, όλοι οι σύγχρονοι µικροεπεξεργαστές υποστηρίζουν συστήµατα ιεραρχίας µνήµης µε κρυφές µνήµες, ενώ πολλοί από αυτούς ενσωµατώνουν κάποια από τα επίπεδα αυτά (συνήθως το πρώτο επίπεδο κρυφής µνήµης) στο ολοκληρωµένο κύκλωµα του µικροεπεξεργαστή. Για παράδειγµα, ο µικροεπεξεργαστής Intel Pentium III διαθέτει ενσωµατωµένη την κρυφή µνήµη πρώτου επιπέδου µεγέθους 32ΚΒ και την κρυφή µνήµη δευτέρου επιπέδου µεγέθους 512ΚΒ. Ταυτόχρονα η εξέλιξη της τεχνολογίας έδωσε τη δυνατότητα για µεγαλύτερες ταχύτητες χρονισµού των ολοκληρωµένων κυκλωµάτων µε αποτέλεσµα την αύξηση της ταχύτητας της εκτέλεσης των προγραµµάτων του µικροεπεξεργαστή. Από την ταχύτητα χρονισµού του 1 MHz του 8080, των 10 ΜΗz που γνωρίσαµε στον Intel 8086, βρισκόµαστε σήµερα σε ταχύτητες χρονισµού της τάξης των 500 MHz, όπως για παράδειγµα ο Intel Pentium III. Η αύξηση στην ταχύτητα εκτέλεσης δεν ήταν αποτέλεσµα µόνο της αύξησης της ταχύτητας χρονισµού. Σήµερα όλοι οι µικροεπεξεργαστές διαθέτουν στο εσωτερικό τους πολύπλοκα κυκλώµατα που διευκολύνουν τις λειτουργίες τους, όπως π.χ. µονάδες αριθµητικής κινητής υποδιαστολής για πράξεις κινητής υποδιαστολής ή µονάδες διαχείρισης της µνήµης για τη γρήγορη προσπέλαση σε αυτήν. Ταυτόχρονα ανακαλύψεις στην αρχιτεκτονική υπολογιστών βρίσκουν πεδίο εφαρµογής στους µικροεπεξεργαστές. Έτσι, οι σύγχρονοι µικροεπεξεργαστές προσπαθούν να παραλληλίσουν την εκτέλεση των εντολών των προγραµµάτων (Instruction Level Parallelism) µε σκοπό να πετύχουν την πιο γρήγορη εκτέλεσή τους. Για το σκοπό αυτό π.χ. πολλοί µικροεπεξεργαστές εφαρµόζουν διοχέτευση (pipeline) ή διαθέτουν πολλαπλούς καταχωρητές και αριθµητικές και λογικές µονάδες (multiple execution units) και εποµένως µπορούν να εκτελέσουν περισσότερες από µία εντολές ταυτόχρονα (πολλές από αυτές τις έννοιες θα πρέπει να έχετε ήδη γνωρίσει στο µάθηµα "Αρχιτεκτονική Υπολογιστών"). Επίσης πολλές αλλαγές έχουν γίνει στα σύνολα εντολών και στους τρόπους διευθυνσιοδότησης. Οι σύγχρονες εφαρµογές, όπως π.χ. οι εφαρµογές πολυµέσων, έχουν µεγάλες απαιτήσεις σε υπολογιστική ισχύ, καθώς ασχολούνται µε ήχο, εικόνα και video. Αυτό είχε σαν αποτέλεσµα τον εµπλουτισµό των
175
176
K E º A § A I O 7 : E ¶ π § √ ° √ ™ / ™ À ° Ã ƒ √ ¡ ∂ ™ T∞ ™ ∂ π ™ ™ Ã ∂ ¢ π ∞ ™ ª √ À M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ø ¡
συνόλων εντολών µε εντολές που να µπορούν να διαχειριστούν αποτελεσµατικά τη νέα µορφή αυτή πληροφορίας (οι απαιτήσεις των γλωσσών προγραµµατισµού της δεκαετίας του 1980 ήταν η αιτία για την οποία αντίστοιχα είχαν εισαχθεί εντολές διαχείρισης πινάκων χαρακτήρων στον 8086). Από τα παραπάνω στοιχεία γίνεται φανερό πως οι σύγχρονοι µικροεπεξεργαστές απέχουν πολύ από τους προγενέστερούς τους του 1970 και 1980. Εάν θελήσουµε να κάνουµε µία σύγκριση, µπορούµε να πούµε πως οι σηµερινοί µικροεπεξεργαστές είναι 100.000 φορές γρηγορότεροι από τους πρώτους µικροεπεξεργαστές, ενώ κοστίζουν περίπου 1.000 φορές λιγότερο. Οι µικροεπεξεργαστές συνεχίζουν να εξελίσσονται µε αµείωτους ρυθµούς. Έτσι στα επόµενα χρόνια περιµένουµε να δούµε νέες τεχνολογικές ανακαλύψεις να ενσωµατώνονται σε αυτούς και να αποκτούν ακόµα µεγαλύτερες δυνατότητες επεξεργασίας. Ταυτόχρονα η χρήση τους θα επεκτείνεται σε όλο και περισσότερες εφαρµογές, κάνοντας τη ζωή µας πιο εύκολη. ™‡ÓÔ„Ë Οι ανάγκες των χρηστών για εύκολες και έξυπνες λύσεις και η ολοένα και µεγαλύτερη εµφάνιση των υπολογιστών στην καθηµερινή µας ζωή δηµιούργησε την ανάγκη για τη συνεχή εξέλιξη των µικροεπεξεργαστών. Η εξέλιξη αυτή βασίστηκε σε τρεις κατευθύνσεις: (α) στην εξέλιξη της τεχνολογίας των ολοκληρωµένων κυκλωµάτων, η οποία οδήγησε σε µικροεπεξεργαστές µε µεγαλύτερες ταχύτητες χρονισµού, µε περισσότερα και πιο πολύπλοκα κυκλώµατα επεξεργασίας, όπως µονάδες αριθµητικής κινητής υποδιαστολής, και µε περισσότερους ακροδέκτες µε αποτέλεσµα µεγαλύτερες ικανότητες στη διαχείριση της µνήµης ή στο µήκος της λέξης µνήµης, (β) στις εξελίξεις σε επίπεδο αρχιτεκτονικής, που οδήγησαν σε µικροεπεξεργαστές µε συστήµατα ιεραρχίας µνήµης, που χρησιµοποιούν διοχέτευση ή παραλληλισµό των εντολών, διαθέτοντας πολλαπλές µονάδες εκτέλεσης και (γ) στις ανάγκες των σύγχρονων πολυµεσικών εφαρµογών, που οδήγησαν σε µικροεπεξεργαστές µε νέα σύνολα εντολών και τρόπους διευθυνσιοδότησης για την πιο αποτελεσµατική διαχείριση των νέων µορφών πληροφορίας, όπως είναι ο ήχος και η εικόνα. Οι µικροεπεξεργαστές θα συνεχίσουν να εξελίσσονται µε τους ίδιους ρυθµούς και στα επόµενα χρόνια, παρέχοντας έτσι ένα εργαλείο για την ανάπτυξη σύγχρονων και ευέλικτων συστηµάτων.
A·ÓÙ‹ÛÂȘ AÛ΋ÛÂˆÓ A˘ÙÔ·ÍÈÔÏfiÁËÛ˘ 1.1 Τα ολοκληρωµένα κυκλώµατα αποτελούν τον τρόπο, µε τον οποίο κατασκευάζουµε σήµερα τα λογικά κυκλώµατα. Αποτελούνται από ένα κοµµάτι πυριτίου, το οποίο περιβάλλεται από πλαστικό ή κεραµικό περίβληµα για προστασία, ενώ οι είσοδοι και έξοδοι του λογικού κυκλώµατος βρίσκονται σε µορφή µεταλλικών επαφών και ονοµάζονται ακροδέκτες. Το κοµµάτι του πυριτίου είναι αυτό που περιέχει τα τρανσίστορς, που υλοποιούν τη λογική του κυκλώµατος. 1.2 Όπως µάθατε και στην αντίστοιχη παράγραφο, ο κύριος παράγοντας για το διαχωρισµό των ολοκληρωµένων κυκλωµάτων σε κατηγορίες είναι ο αριθµός των τρανσίστορς, τα οποία αυτά περιέχουν στο κοµµάτι πυριτίου. Ο διαχωρισµός αυτός δεν είναι πάντα εύκολος, π.χ. εάν έχουµε δύο κυκλώµατα µε 100 τρανσίστορς, µπορεί το ένα να θεωρείται ότι ανήκει στα ΜSI, ενώ το άλλο να θεωρείται ότι ανήκει στα LSI. Ένας εύκολος τρόπος για να θυµάστε τις κατηγορίες είναι από τα ονόµατά τους (πρώτα είναι τα Small, µετά τα Medium, µετά τα Large, Very Large και Ultra Large). Η σωστή απάντηση είναι η παρακάτω:
SSI
µεταξύ 10 και 100
MSI
λιγότερα από 10
LSI
µεταξύ 10.000 και 1.000.000
VLSI
πάνω από 1.000.000
ULSI
µεταξύ 100 και 10.000
1.3 Τα βασικότερα πλεονεκτήµατα, που προκύπτουν από τη χρήση ενός ολοκληρωµένου κυκλώµατος, είναι: • µικρό µέγεθος
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
178
• µικρή κατανάλωση ισχύος • µικρό κόστος • µεγάλη αξιοπιστία Ο 8086, ένας πολύ διαδεδοµένος µικροεπεξεργαστής των 16–bits, ο οποίος έφερε την επανάσταση στο χώρο των προσωπικών IBM συµβατών υπολογιστών, έχει διαστάσεις περίπου 6 cm µήκος επί 2 cm πλάτος επί 0,5 cm ύψος, απαιτεί ρεύµα περίπου 350 mA, το κόστος αγοράς του είναι πολύ µικρό, ενώ µπορεί να λειτουργήσει χωρίς πρόβληµα για χρόνια. 1.4 Η κατασκευή ενός ολοκληρωµένου κυκλώµατος απαιτεί (α) το σχεδιασµό του κυκλώµατος µε τη βοήθεια υπολογιστή, (β) την κατασκευή του δίσκου πυριτίου (wafer), (γ) τον έλεγχο των πλακιδίων (dies), (δ) την κοπή των πλακιδίων από το δίσκο πυριτίου, (ε) την τοποθέτηση των πλακιδίων σε πλαστικό ή κεραµικό περίβληµα (packaging) και (στ) τον τελικό έλεγχο των ολοκληρωµένων κυκλωµάτων, που προκύπτουν για την εύρεση και αποµάκρυνση των ελαττωµατικών. Εάν δώσατε τη σωστή απάντηση, µπράβο σας! Αλλιώς θα πρέπει να επαναλάβετε τη µελέτη της ενότητας 1.2. 1.5 Όπως µπορείτε να παρατηρήσετε στο σχήµα 1.4, ένας µικροϋπολογιστής αποτελείται: (α)από τις µονάδες εισόδου/εξόδου για να επικοινωνεί µε τον εξωτερικό κόσµο, (β) από το µικροεπεξεργαστή, ο οποίος αναλαµβάνει την επεξεργασία της πληροφορίας και το συντονισµό του όλου συστήµατος, και (γ) την κύρια µνήµη, όπου αποθηκεύεται το πρόγραµµα, τα δεδοµένα και τα ενδιάµεσα αποτελέσµατα. Το µοντέλο αυτό (είσοδος, επεξεργασία, έξοδος) αποτελεί το βασικό µοντέλο αναπαράστασης των υπολογιστικών συστηµάτων από τα πρώτα χρόνια εµφάνισης των υπολογιστών µέχρι και σήµερα.
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
179
1.6 Σ’ αυτό το σηµείο πρέπει να ξεκαθαρίσουµε ότι µέσα από το δίαυλο διευθύνσεων δεν περνούν δεδοµένα. Στο δίαυλο αυτό µεταφέρονται µόνο οι διευθύνσεις, δηλαδή το σηµείο από το οποίο θα µεταφερθούν τα δεδοµένα προς ή από τον µικροεπεξεργαστή. Αν, ωστόσο, µέχρι τώρα θεωρούσατε πως ο δίαυλος διευθύνσεων χρησιµοποιείται και για µεταφορά δεδοµένων, µην ανησυχείτε, στο επόµενο κεφάλαιο θα αναφερθούµε αναλυτικά στους διαύλους επικοινωνίας των µικροεπεξεργαστών και θα διακρίνετε καλύτερα τον τρόπο µε τον οποίο χρησιµοποιούνται. Η σωστή απάντηση είναι η παρακάτω: ∆ίαυλος ∆εδοµένων
Mεταφέρει τη διεύθυνση της θέσης µνήµης ή της συσκευής Ι/Ο, µε την οποία ανταλλάσσονται δεδοµένα.
∆ίαυλος ∆ιευθύνσεων
Mεταφέρει τη χρήσιµη πληροφορία, δηλαδή τα δεδοµένα.
∆ίαυλος Ελέγχου
Eνεργοποιεί ή απενεργοποιεί τη µνήµη και τις συσκευές Ι/Ο, επιλέγει εάν θα γίνει ανάγνωση ή εγγραφή στη µνήµη.
1.7 Οι εντολές των µικροεπεξεργαστών συνήθως αποτελούνται από: (α) τον κωδικό λειτουργίας, (β) το έντελο πηγής και (γ) το έντελο προορισµού. Υπάρχουν επίσης εντολές, οι οποίες αποτελούνται από περισσότερα από ένα έντελα πηγής ή εντολές, όπου το έντελο προορισµού αποτελεί ταυτόχρονα και έντελο πηγής, ή τέλος εντολές, όπου δεν υπάρχουν καθόλου έντελα. Στην περίπτωση αυτή η λειτουργία της εντολής καθορίζεται αποκλειστικά από τον κωδικό λειτουργίας.
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
180
Στο επόµενο κεφάλαιο (κεφάλαιο 2) θα µάθουµε πολύ περισσότερα για τη µορφή και το είδος των εντολών, που διαθέτει ο κάθε µικροεπεξεργαστής. Εποµένως, ακόµα κι αν δεν καταφέρατε να απαντήσετε επακριβώς στην άσκηση αυτή, µην απογοητεύεστε. Θα σας δοθεί η ευκαιρία στο επόµενο κεφάλαιο να επεκτείνετε τις γνώσεις σας πάνω στο συγκεκριµένο θέµα και να αναπληρώσετε σηµεία, που τυχόν δεν έχετε καταλάβει. 1.8 Η σχέση µεταξύ του αριθµού των τρανσίστορς σε ένα ολοκληρωµένο κύκλωµα και της χρονολογίας εµφάνισής του εκφράζεται από το νόµο του Moore, ο οποίος διατυπώθηκε το 1965 (πολύ πριν εµφανιστούν οι πρώτοι µικροεπεξεργαστές) και ισχυρίζεται ότι: «ο αριθµός των τρανσίστορς, που περικλείονται σε ένα ολοκληρωµένο κύκλωµα, θα διπλασιάζεται κάθε 18 µήνες». Είναι γεγονός ότι ο νόµος αυτός αποδείχτηκε προφητικός και δεν έχει ξεπεραστεί ακόµα, όπως µπορείτε να παρατηρήσετε και από τη γραφική παράσταση, που ακολουθεί:
Aριθµός τρανσίστορς
8.000.000 7.000.000 6.000.000 5.000.000 4.000.000 3.000.000 2.000.000 1.000.000
Nόµος Moore
1998
1995
1992
1989
1986
1983
1980
1977
1974
Mικροεπεξεργαστές
1971
0
Xρονιά εµφάνισης
Η άσκηση αυτή ήταν όντως από τις πιο δύσκολες έως τώρα, εποµένως µην ανησυχείτε, εάν δεν κατορθώσατε να φτάσετε σε σωστό αποτέλεσµα. Αυτό που θα πρέπει να κρατήσετε σαν συµπέρασµα είναι ότι ο ρυθµός, µε τον οποίο µεγαλώνει ο αριθµός των τρανσίστορς, που περικλείονται σε ένα ολοκληρωµένο κύκλωµα, γίνεται όλο και µεγαλύτερος.
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
2.1 Όπως µπορείτε να παρατηρήσετε και στο σχήµα 2.1, τα τρία τµήµατα ενός µικροεπεξεργαστή είναι (α) η αριθµητική και λογική µονάδα, (β) η µονάδα ελέγχου και (γ) οι διάφοροι καταχωρητές. 2.2 Όλες οι πράξεις γίνονται στην αριθµητική και λογική µονάδα. Τα κυκλώµατα, που περιέχει αυτή συνήθως (αθροιστής, συγκριτής, ολισθητής, µονάδα λογικής επεξεργασίας, καταχωρητές) επιτρέπουν να εκτελεστούν οι πράξεις είτε σε µία είτε σε περισσότερες εντολές. Οι σύγχρονοι επεξεργαστές πάντως, στους οποίους η ταχύτητα παίζει σηµαντικό ρόλο, διαθέτουν περισσότερα και πιο πολύπλοκα κυκλώµατα (όπως πολλαπλασιαστές, διαιρέτες, κυκλώµατα πράξεων αριθµητικής κινητής υποδιαστολής), ώστε να µπορούν να εκτελούν πολύπλοκες πράξεις σε πολύ µικρό χρόνο. Ο λόγος, για τον οποίο δεν υπήρχαν αυτά τα κυκλώµατα στους παλαιότερους µικροεπεξεργαστές, είναι ότι η υλοποίησή τους απαιτούσε πολλά τρανσίστορς και η τεχνολογία των ολοκληρωµένων κυκλωµάτων δεν είχε αναπτυχθεί τόσο. 2.3 Στην αριθµητική και λογική µονάδα συναντάµε συνήθως (α) το συσσωρευτή, (β) καταχωρητές γενικού σκοπού, οι οποίοι περιέχουν τα δεδοµένα που συµµετέχουν στις αριθµητικές και λογικές πράξεις και (γ) τον καταχωρητή κατάστασης επεξεργαστή, που περιέχει τους δείκτες, που υποδεικνύουν το αποτέλεσµα της προηγούµενης πράξης. Στη µονάδα ελέγχου συναντάµε (α) τον καταχωρητή εντολών, που περιέχει τον κώδικα λειτουργίας της εντολής, που εκτελείται εκείνη τη στιγµή και (β) το µετρητή προγράµµατος, που περιέχει τη διεύθυνση της επόµενης προς εκτέλεση εντολής. 2.4 Ο δίαυλος δεδοµένων, όπως έχουµε πει, µεταφέρει τα δεδοµένα από το µικροεπεξεργαστή προς τις συσκευές εισόδου/εξόδου και τη µνήµη. Εποµένως, αφού ο µικροεπεξεργαστής µας διαχειρίζεται δεδοµένα µε µήκος λέξης 4 bytes = 32 bits (κάθε byte ισούται µε 8 bits), ο δίαυλος δεδοµένων αποτελείται από 32 γραµµές.
181
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
182
Ο δίαυλος διευθύνσεων θα πρέπει να περιέχει τόσες γραµµές διευθύνσεων ώστε να µπορεί να διευθυνσιοδοτήσει όλες τις θέσεις µνήµης ή τις θέσεις εισόδου/εξόδου. Εποµένως, ο δίαυλος διευθύνσεων θα πρέπει να αποτελείται από τουλάχιστον 16 γραµµές για να διαχειριστεί τις συσκευές εισόδου/εξόδου, αφού 216 = 65.536 και τουλάχιστον από 24 γραµµές, αφού 224 = 16.777.216 για να µπορέσει να διαχειριστεί όλες τις θέσεις µνήµης. Προφανώς, επειδή ο δίαυλος διευθύνσεων είναι ένας και µοναδικός, ο µεγαλύτερος από τους δύο αριθµούς ορίζει και το πλήθος των γραµµών διευθύνσεων. Εάν βρήκατε το σωστό αποτέλεσµα, µπράβο σας! Έχετε κατανοήσει τον τρόπο, µε τον οποίο υπολογίζουµε το πλήθος των γραµµών δεδοµένων και διευθύνσεων. Εάν πάλι δεν βρήκατε το σωστό αποτέλεσµα, µην απελπίζεστε. Μελετήστε ξανά µε προσοχή την ενότητα 2.2., στην οποία αναλύονται οι δίαυλοι επικοινωνίας ενός µικροεπεξεργαστή. 2.5 Με 16 γραµµές διευθύνσεων, ο επεξεργαστής µπορεί να διευθυνσιοδοτήσει µέχρι 216 δηλαδή 65.536 θέσεις µνήµης, εποµένως µπορούµε να συνδέσουµε σε αυτόν µνήµη µε µέγιστη χωρητικότητα 64 KB. Ο τύπος της µνήµης αυτής µπορεί να είναι οποιοσδήποτε από τους γνωστούς τύπους µνηµών που γνωρίζετε, όπως µνήµες RAM, ROM, PROM, EPROM κ.ά. Εάν δώσατε τη σωστή απάντηση, συγχαρητήρια! Εάν όµως αντιµετωπίσατε δυσκολίες, µελετήστε πάλι την ενότητα 2.2 και µην ξεχνάτε ότι το πλήθος των γραµµών του δίαυλου δεδοµένων ορίζει το µήκος της κάθε λέξης στη µνήµη, ενώ το πλήθος των γραµµών του δίαυλου διευθύνσεων ορίζει το πλήθος των λέξεων στη µνήµη, δηλαδή το µέγεθος της µνήµης. 2.6 Ο χρόνος, που απαιτείται για την εκτέλεση µιας εντολής σε ένα µικροεπεξεργαστή, χωρίζεται σε µικρότερες χρονικές περιόδους. Έτσι προκύπτουν οι κύκλοι εντολής, µηχανής και ρολογιού. Ο κύκλος εντολής εκφράζει το χρόνο που απαιτείται για την εκτέλεση µιας εντολής. Ο κύκλος µηχανής εκφράζει το χρόνο που απαιτείται για την εκτέλεση µιας βασικής λειτουργίας, όπως π.χ. µιας λειτουργίας εγγραφής/ανάγνωσης της µνήµης.
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
183
Ο κύκλος ρολογιού εκφράζει την περίοδο του ρολογιού και αποτελεί τη µονάδα χρόνου του µικροεπεξεργαστή. 1. Κύκλος ρολογιού, 2. Κύκλος µηχανής, 3. Κύκλος εντολής 2.7 Στην ενότητα 2.4 είδαµε ότι µπορούµε να χωρίσουµε το σύνολο εντολών ενός µικροεπεξεργαστή σε κατηγορίες µε βάση τη λειτουργία, που επιτελεί η κάθε εντολή. Με βάση το κριτήριο αυτό έχουµε (α) αριθµητικές εντολές, (β) λογικές εντολές, (γ) εντολές µετακίνησης δεδοµένων, (δ) εντολές διακλάδωσης, (ε) εντολές κλήσης και επιστροφής από υπορουτίνα και (στ) γενικές εντολές. 2.8 (α) Με βάση τα στοιχεία του µικροεπεξεργαστή, που διαθέτουµε από το παράδειγµα 3 του κεφαλαίου αυτού, τα περιεχόµενα της µνήµης θα είναι αυτά που δίνονται στο σχήµα 2.20.
3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 300A 300B 300C 300D
B1 0A 8C 75 05 8C 99 64 8C D7 F8 E7 F2 DF
LDB 8C, #0A
ADDB 8C, #05
CMPB 8C, #64
JNE A
BRK
™¯‹Ì· 2.20
Τα περιεχόµενα της µνήµης
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
184
Το µέγεθος του προγράµµατος είναι 14 bytes, αφού αποτελείται από πέντε εντολές, από τις οποίες τέσσερις έχουν µήκος τρία bytes και µία έχει µήκος δύο bytes. (β) Από τις εντολές του προγράµµατος παρατηρούµε ότι o καταχωρητής 8C16 αρχικοποιείται στην τιµή 1010 (0A16 στο δεκαεξαδικό σύστηµα αρίθµησης), στη συνέχεια προστίθεται η τιµή 05 κάθε φορά µέχρι το περιεχόµενο του 8C16 να γίνει ίσο µε 10010, οπότε ικανοποιείται η συνθήκη της ισότητας στην εντολή σύγκρισης και τερµατίζεται η λειτουργία του προγράµµατος. Εποµένως, το πρόγραµµα αυτό µετράει από το 10 µέχρι το 100 µε βήµα 5 κάθε φορά, δηλαδή µετράει τους αριθµούς 10, 15, 20, …, 100. (γ) Εάν ακολουθήσουµε την πορεία εκτέλεσης του προγράµµατος, παρατηρούµε ότι στην αρχή εκτελείται η εντολή φόρτωσης LDB. Στη συνέχεια εκτελούνται οι εντολές πρόσθεσης ADDB, της σύγκρισης CMPB και της διακλάδωσης JNE µέχρι το περιεχόµενο του καταχωρητή 8C16 να γίνει ίσο µε τον αριθµό 10010 και τέλος εκτελείται η εντολή τερµατισµού BRK. Εποµένως, οι εντολές LDB και BRK εκτελούνται µία φορά, ενώ οι υπόλοιπες εντολές ADDB, CMPB και JNE εκτελούνται δεκαοκτώ φορές (αφού ξεκινάµε από τον αριθµό 10 και αυξάνουµε κάθε φορά κατά 5 για να φτάσουµε στον αριθµό 100 χρειαζόµαστε (100–10)/5 = 18 επαναλήψεις). Εάν καταλήξατε στα σωστά αποτελέσµατα, συγχαρητήρια! Εάν όµως αντιµετωπίσατε δυσκολίες, µην προχωρήσετε παρακάτω. Μελετήστε πάλι το παράδειγµα 2.3. Το πρόγραµµα, το οποίο αναφέρεται στο παράδειγµα αυτό, είναι παρόµοιο µε το ζητούµενο στην άσκηση. Μην ξεχνάτε ότι οι αριθµοί που χρησιµοποιούµε στα προγράµµατα ενός µικροεπεξεργαστή δίνονται συνήθως στο δεκαεξαδικό σύστηµα αρίθµησης (κάτι που δεν είναι τόσο εµφανές στο παράδειγµα, καθώς οι αριθµοί είναι µικροί και ταυτίζονται στο δεκαδικό και στο δεκαεξαδικό σύστηµα αρίθµησης). 2.9 Η εντολή LDB µεταφέρει µια τιµή σε έναν καταχωρητή, εποµένως πρόκειται για εντολή µετακίνησης δεδοµένων. Η εντολή ADDB ανήκει στις αριθµητικές εντολές, αφού προσθέτει µια τιµή σε έναν καταχωρητή. Η εντολή CMPB είναι µια εντολή σύγκρισης και γι’ αυτό ανήκει στις λογικές εντολές. Η εντολή JNE αλλάζει τη ροή εκτέλεσης του προγράµµατος ανάλογα µε το αν ικανοποιείται η συνθήκη ισότητας ή όχι. Εποµένως, πρόκειται για µία εντολή διακλάδωσης υπό συνθήκη. Τέλος η εντολή τερµατισµού BRK ανήκει στις γενικές εντολές.
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
185
Εάν δώσατε τη σωστή απάντηση, είστε άξιοι συγχαρητηρίων. Έχετε καταλάβει τις κατηγορίες, στις οποίες χωρίζουµε ένα σύνολο εντολών. Εάν πάλι η απάντησή σας δεν ήταν ολοκληρωτικά σωστή, τότε θα πρέπει να µελετήσετε ακόµη µία φορά την ενότητα 2.4.
3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 300A 300B 300C
B1 00 80 17 80 99 05 80 D7 F9 E7 F2 DF
LDB 80, #00
INCB 80
CMPB 80, #05
JNE C
BRK ™¯‹Ì· 2.21
Τα περιεχόµενα της µνήµης µε την προσθήκη της INCB
2.10 (α)Είναι προφανές ότι µια εντολή πρόσθεσης του περιεχόµενου ενός καταχωρητή µε την τιµή 1 είναι ισοδύναµη µε µια εντολή αύξησης του περιεχόµενου του καταχωρητή κατά ένα. Έτσι, η εντολή ADDB 80, #01 είναι ισοδύναµη µε την εντολή INCB 80. Εποµένως, µε τη χρήση της εντολής INCB, το πρόγραµµα γίνεται όπως παρακάτω: LDB 80, #00 C: INCB 80 CMPB 80, #05 JNE C BRK
186
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
(β) Η εντολή INCB αποθηκεύεται σε δύο bytes και όχι σε τρία, όπως στην περίπτωση της εντολής ADDB. Έτσι, αποθηκεύεται στις θέσεις µνήµης 500316 και 500416, ενώ στις θέσεις µνήµης 500516 έως και 500716 αποθηκεύεται η εντολή CMPB, στις 500816 και 500916 η εντολή JNE και στις 500Α16 έως και 500C16 αποθηκεύεται η εντολή BRK. Το πρόγραµµα, που προκύπτει, έχει ένα byte λιγότερο από το αρχικό πρόγραµµα και το συνολικό του µέγεθος είναι 13 bytes. Τα περιεχόµενα της κύριας µνήµης είναι αυτά που φαίνονται στο σχήµα 2.21. Συγκρίνοντας τον παραπάνω πίνακα µε τον αντίστοιχο πίνακα του παραδείγµατος 2.3 παρατηρούµε ότι στη θέση µνήµης 500316 έχει αποθηκευτεί ο κωδικός λειτουργίας της INCB. Παρατηρούµε όµως ότι έχει αλλάξει και το δεύτερο byte της εντολής JNE, το οποίο τώρα βρίσκεται αποθηκευµένο στη θέση µνήµης 500916 και περιέχει την τιµή F916. Αυτό εξηγείται ως εξής: Ο αριθµός που βρίσκεται στη θέση αυτή, όπως είπαµε, προστίθεται στο µετρητή προγράµµατος για να δείξει τη θέση µνήµης, όπου θα µας οδηγήσει η εντολή διακλάδωσης. Στο παράδειγµα 3 µεταξύ της θέσης αυτής και της θέσης, που έδειχνε ο µετρητής προγράµµατος, υπήρχαν 8 bytes. Στο πρόγραµµά µας όµως και επειδή η εντολή INCB έχει ένα byte λιγότερο από την εντολή ADDB, µεταξύ της θέσης µνήµης 500A16, όπου δείχνει ο µετρητής προγράµµατος, και της θέσης µνήµης 500316, όπου δείχνει ο δείκτης C, υπάρχουν 7 bytes. Για το λόγο αυτό η τιµή, που θα πρέπει να έχει το δεύτερο byte, είναι η τιµή –710, η οποία αναπαρίσταται µε το δεκαεξαδικό αριθµό F916 σε µορφή συµπληρώµατος ως προς 2. Εάν δεν τα καταφέρατε να απαντήσετε σωστά, µην απογοητεύεστε. Η άσκηση αυτή οµολογουµένως είχε κάποια δύσκολα σηµεία, τα οποία είναι εύκολο να µην τα προσέξει κανείς. Μην ξεχνάτε δύο βασικά πράγµατα: (α)Oι εντολές ενός προγράµµατος αποθηκεύονται στην κύρια µνήµη σειριακά, δηλαδή η µία µετά την άλλη, εποµένως εάν αντικαταστήσουµε µια εντολή µε µία άλλη, που αποθηκεύεται σε λιγότερα bytes, οι εντολές που την ακολουθούν θα αλλάξουν θέση στην κύρια µνήµη. (β) Tο έντελο µιας εντολής διακλάδωσης περιέχει τη σχετική απόσταση µεταξύ της εντολής, που βρισκόµαστε, και της διεύθυνσης στόχος, στην οποία πρέπει να µεταφερθεί η ροή του προγράµµατος, εάν ικανοποιείται η συνθήκη (στην περίπτωση των εντολών διακλάδωσης υπό συνθήκη). Επο-
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
µένως, η αντικατάσταση µίας εντολής µε µία άλλη µπορεί να µεταβάλει την απόσταση αυτή και εποµένως την τιµή του εντέλου της εντολής. Εάν πάλι δώσατε ολοκληρωµένη και σωστή απάντηση, µπράβο σας! 2.11 Όπως µπορείτε να διαβάσετε στην ενότητα 2.5, οι κυριότεροι τρόποι διευθυνσιοδότησης, που διαθέτει συνήθως ένας µικροεπεξεργαστής, είναι οι εξής: (α) υπονοούµενη διευθυνσιοδότηση (β) άµεση διευθυνσιοδότηση (γ) απευθείας ή απόλυτη διευθυνσιοδότηση (δ) σχετική διευθυνσιοδότηση (ε) έµµεση διευθυνσιοδότηση (στ) δεικτοδοτηµένη διευθυνσιοδότηση (ζ) διευθυνσιοδότηση µηδενικής σελίδας Οι τρόποι αυτοί καθορίζουν πώς θα βρεθεί η ενεργή διεύθυνση, δηλαδή η διεύθυνση εκείνη της κύριας µνήµης ή του συνόλου των καταχωρητών στην οποία είναι αποθηκευµένα τα δεδοµένα, που απαιτούνται για την εκτέλεση της εντολής. 2.12 Οι εντολές διακλάδωσης, όπως γνωρίζετε ήδη, µπορούν να µεταφέρουν την εκτέλεση ενός προγράµµατος από ένα σηµείο του σε ένα άλλο. Εποµένως, εξαρτώνται άµεσα από το περιεχόµενο του µετρητή προγράµµατος. Για το λόγο αυτό χρησιµοποιούν τη σχετική διευθυνσιοδότηση. Με βάση αυτή, ένας προσηµασµένος αριθµός προστίθεται στο περιεχόµενο του µετρητή προγράµµατος και προκύπτει έτσι η διεύθυνση, στην οποία µεταφέρεται η εκτέλεση του προγράµµατος. 2.13 Το ζητούµενο είναι να ορίσουµε την ενεργή διεύθυνση σε καθεµία από τις εντολές (α) Η πρώτη εντολή χρησιµοποιεί απόλυτη διευθυνσιοδότηση, εποµένως το έντελό της αποτελεί και την ενεργή διεύθυνση, η οποία, όπως φαίνεται στο σχήµα 2.22, είναι η διεύθυνση 123416 της κύριας µνήµης.
187
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
188
1234
XX •v •v •
3000 ™¯‹Ì· 2.22
3001 3002
STA $1234
8D 34 12
Τα περιεχόµενα της µνήµης στην πρώτη εντολή
(β) Στη δεύτερη εντολή χρησιµοποιούµε διευθυνσιοδότηση µηδενικής σελίδας, εποµένως το έντελο αποτελεί το λιγότερο σηµαντικό byte της ενεργής διεύθυνσης, ενώ το περισσότερο σηµαντικό byte είναι το 00. Εποµένως, η διεύθυνση της µνήµης, στην οποία θα αποθηκευτεί το περιεχόµενο του Α, όπως µπορείτε να δείτε στο σχήµα 2.23, είναι η 003416.
0034
XX •v •v •
3000 3001
STA $34
8D 34
™¯‹Ì· 2.23
Τα περιεχόµενα της µνήµης στη δεύτερη εντολή)
(γ) Η τρίτη εντολή χρησιµοποιεί έµµεση διευθυνσιοδότηση. Με βάση αυτή το έντελο περιέχει τη διεύθυνση της µνήµης ή τον καταχωρητή, στον οποίο βρίσκεται η ενεργή διεύθυνση της εντολής µας. Έτσι, η ενεργή διεύθυνση είναι το περιεχόµενο της θέσης µνήµης 323216 και η διεύθυνση της µνήµης, στην οποία θα αποθηκευτεί το περιεχόµενο του Α, όπως φαίνεται στο σχήµα 2.24, είναι η 121216.
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
189
Η απάντηση στην άσκηση αυτή προκύπτει εύκολα, εάν έχετε κατανοήσει τους τρόπους διευθυνσιοδότησης. Πολύ κατατοπιστικό είναι επίσης το παράδειγµα 4 του κεφαλαίου αυτού. Εάν πάλι δεν καταφέρατε να δώσετε τη σωστή απάντηση, µια πιο προσεκτική ανάγνωση της ενότητας 2.5 και του παραδείγµατος 2.4 θα σας βοηθήσει να ξεκαθαρίσετε πλήρως τις έννοιες αυτές.
1234
XX •v •v •
3000 3001 3002
92 32 32 •v •v •
3232 3233
STA $3232
12 12
™¯‹Ì· 2.24
Τα περιεχόµενα της µνήµης στην τρίτη εντολή
3.1 Όπως µπορείτε να διαβάσετε και στην υποενότητα 3.1.2, ο 8080 διαθέτει (α) έναν 8–bit συσσωρευτή (Α), (β) τρεις 16–bit καταχωρητές (BC, DE, HL), οι οποίοι µπορούν να χρησιµοποιηθούν και σαν έξι καταχωρητές των 8–bit (B, C, D, E, H, L), (γ) τον 8–bit καταχωρητή κατάστασης επεξεργαστή (PSW), (δ) τον 16–bit µετρητή προγράµµατος (PC) και (ε) τον 16–bit καταχωρητή σωρού (SP). 3.2 Το αποτέλεσµα της εκτέλεσης της εντολής είναι ο διπλασιασµός του περιεχόµενου του συσσωρευτή, δηλαδή η τιµή C016 (6016+6016=C016). Οι σηµαίες κατάστασης παίρνουν τις παρακάτω τιµές (α) Ζ = 0, αφού το αποτέλεσµα
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
190
είναι διάφορο του µηδενός, (β) S = 1, αφού το περισσότερο σηµαντικό δυαδικό ψηφίο του αποτελέσµατος είναι ίσο µε 1, (γ) AC = 0, αφού δεν προέκυψε κρατούµενο από την πρόσθεση των πρώτων 4 bits των αριθµών, (δ) C = 0, αφού δεν προέκυψε κρατούµενο κατά την πρόσθεση των δύο αριθµών και (ε) P = 1 ώστε το αποτέλεσµα µαζί µε τη σηµαία κατάστασης να έχει περιττό αριθµό από άσους, δηλαδή περιττή ισοτιµία. Εάν απαντήσατε σωστά στην άσκηση αυτή, σας αξίζουν συγχαρητήρια! Εάν όχι, προσπαθήστε πάλι. Μην ξεχνάτε ότι οι σηµαίες κατάστασης παίρνουν τις τιµές τους ανάλογα µε το αποτέλεσµα της τελευταίας πράξης, που γίνεται στην αριθµητική και λογική µονάδα. 3.3 Στον 8080 µπορούµε να διακρίνουµε 10 σήµατα ελέγχου (1) READY, (2) WAIT, (3) HOLD, (4) HOLDA, (5) RESET, (6) DBIN, (7) WR~, (8) INT, (9) INTE και (10) SYNC. Η λειτουργία του κάθε σήµατος περιγράφεται στην υποενότητα 3.1.3 και η γνώση τους είναι απαραίτητη, όταν σχεδιάζουµε ένα µικροϋπολογιστικό σύστηµα βασισµένο στον 8080. 3.4 Ένας κύκλος εντολής αποτελείται από έναν έως πέντε κύκλους µηχανής. Ο αριθµός αυτός εξαρτάται (α) από το πλήθος των bytes της εντολής, καθώς κάθε byte απαιτεί έναν κύκλο ανάγνωσης από τη µνήµη και (β) από το πόσους κύκλους µηχανής χρειάζεται η εντολή µετά την ανάγνωση των bytes της εντολής για να εκτελεστεί. Εάν υποθέσουµε ότι η λειτουργία της λογικής πράξης και της αποθήκευσης του αποτελέσµατος µπορούν να γίνουν στον ίδιο κύκλο µηχανής µε τη λειτουργία ανάγνωσης από τη µνήµη, τότε η κάθε εντολή απαιτεί τους παρακάτω κύκλους µηχανής: (α) Έναν κύκλο µηχανής για την προσκόµιση της εντολής. Επειδή δεν απαιτείται άλλη λειτουργία αναφοράς στη µνήµη, η λειτουργία της πράξης και της αποθήκευσης του αποτελέσµατος γίνεται µαζί µε την προσκόµιση της εντολής. Εποµένως, συνολικά χρειάζεται ένας κύκλος µηχανής για την εκτέλεση της εντολής. (β) Έναν κύκλο µηχανής για την προσκόµιση της εντολής και έναν κύκλο µηχανής για την προσκόµιση της τιµής από τη θέση µνήµης, τη διεύ-
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
θυνση της οποίας περιέχει ο HL καταχωρητής. Η εκτέλεση της πράξης και η αποθήκευση του αποτελέσµατος γίνεται στο δεύτερο κύκλο µηχανής. Εποµένως, συνολικά χρειάζονται δύο κύκλοι µηχανής για την εκτέλεση της εντολής. (γ) Έναν κύκλο µηχανής για την προσκόµιση της εντολής και έναν κύκλο µηχανής για την προσκόµιση του εντέλου της εντολής, δηλαδή της τιµής που θα συµµετάσχει στη λογική πράξη. Εποµένως, αφού η εκτέλεση της πράξης και η αποθήκευση του αποτελέσµατος γίνονται µαζί µε την ανάγνωση του εντέλου στο δεύτερο κύκλο µηχανής, απαιτούνται συνολικά δύο κύκλοι µηχανής για την εκτέλεση της εντολής. 3.5 Τα σήµατα κατάστασης εξάγονται από τον 8080 στο δίαυλο δεδοµένων κατά τη χρονική περίοδο όπου το σήµα SYNC είναι ενεργό (κύκλος ρολογιού T1 και T2) και ειδοποιούν τις υπόλοιπες συσκευές του συστήµατος για τον τύπο του κύκλου µηχανής, που ξεκινά εκείνη τη στιγµή. 3.6 Κατά τη διάρκεια του T1 και µε τη θετική ακµή του Φ2 ενεργοποιείται το σήµα SYNC και στο δίαυλο δεδοµένων εξάγονται τα σήµατα κατάστασης. Ταυτόχρονα στο δίαυλο διευθύνσεων εµφανίζεται η διεύθυνση της µνήµης, στην οποία θα πρέπει να αποθηκευτούν τα δεδοµένα. Στο Φ2 του κύκλου Τ2 το σήµα SYNC γίνεται ανενεργό και στο δίαυλο δεδοµένων εµφανίζονται τα δεδοµένα προς εγγραφή. Στον κύκλο Τ3, και µε δεδοµένο ότι το σήµα READY είναι σε λογική τιµή “1”, το σήµα WR~ µεταβαίνει σε λογική τιµή “0” και ειδοποιεί τη µνήµη ότι τα δεδοµένα είναι έτοιµα προς εγγραφή. Η µνήµη έχει χρονικό περιθώριο ενός κύκλου ρολογιού (όσο το σήµα WR~ είναι ενεργό) για να αποθηκεύσει τα δεδοµένα στη διεύθυνση, που προσδιορίζει ο δίαυλος διευθύνσεων. Με την έναρξη του Τ4 το σήµα WR~ µεταβαίνει ξανά σε λογική τιµή “1” και µε τη θετική ακµή του Φ2 ο δίαυλος διευθύνσεων και ο δίαυλος δεδοµένων µεταβαίνουν σε κατάσταση υψηλής εµπέδησης. Το διάγραµµα χρονισµού φαίνεται στο σχήµα 3.8. Εάν δώσατε τη σωστή απάντηση, µπράβο! Έχετε καταλάβει τον τρόπο, µε τον οποίο λειτουργεί ο 8080. Εάν πάλι δεν καταφέρατε να απαντήσετε σωστά, µια πιο προσεκτική ανάγνωση της ενότητας 3.3 και των σχηµάτων που περιέχει θα σας βοηθήσει να λύσετε όποιες απορίες έχετε.
191
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
192
3.7 Το σήµα DBIΝ γίνεται ενεργό (δηλαδή µεταβαίνει στη λογική τιµή “1”) µε τη θετική ακµή του Φ2 κατά τη διάρκεια του κύκλου ρολογιού T2 και παραµένει στην κατάσταση αυτή για χρόνο ίσο µε τη διάρκεια ενός κύκλου ρολογιού (εκτός εάν παρεµβληθούν καταστάσεις WAIT µεταξύ του Τ2 και του Τ3, οπότε παραµένει ενεργό για µεγαλύτερο αριθµό κύκλων ρολογιού). Το σήµα αυτό ενηµερώνει τη µνήµη ή τις συσκευές εισόδου/εξόδου ότι ο µικροεπεξεργαστής είναι έτοιµος και περιµένει στο δίαυλο δεδοµένων τα δεδοµένα και γι’ αυτό ενεργοποιείται, όταν ο δίαυλος διευθύνσεων περιέχει τη διεύθυνση και ο δίαυλος δεδοµένων βρίσκεται σε κατάσταση υψηλής εµπέδησης (δηλαδή µετά την απενεργοποίηση του σήµατος SYNC). 3.8 Η κατάσταση WAIT παρεµβάλλει ακέραιο αριθµό από κύκλους ρολογιού µεταξύ του Τ2 και του Τ3 ώστε η µνήµη να προλάβει να ανταποκριθεί στην αίτηση ανάγνωσης ή εγγραφής των δεδοµένων σε αυτή. Η κατάσταση WAIT ενεργοποιείται και απενεργοποιείται µε το σήµα READY. Χρησιµοποιείται συνήθως όταν θέλουµε σε ένα µικροϋπολογιστικό σύστηµα να διασυνδέσουµε µνήµες, οι οποίες είναι πιο αργές από το µικροεπεξεργαστή. Η κατάσταση HOLD οδηγεί τους διαύλους του µικροεπεξεργαστή σε κατάσταση υψηλής εµπέδησης ώστε εξωτερικές συσκευές να χρησιµοποιήσουν τους διαύλους του συστήµατος για µεταφορά δεδοµένων. Ενεργοποιείται και απενεργοποιείται µε τη χρήση του σήµατος HOLD και παρεµβάλλει ακέραιο αριθµό κύκλων ρολογιού µεταξύ του τέλους εκτέλεσης µιας εντολής και της αρχής εκτέλεσης της επόµενης. Η κατάσταση HALT σηµατοδοτεί περιόδους χρόνου, όπου ο µικροεπεξεργαστής δεν εκτελεί εντολές. Ενεργοποιείται µε τη χρήση της εντολής HALT και τελειώνει µε µία αίτηση διακοπής από µια εξωτερική συσκευή. Χρησιµοποιείται κυρίως σε περιπτώσεις µικροϋπολογιστών, όπου πρέπει να ανασταλεί η λειτουργία του µικροεπεξεργαστή µέχρι να συµβεί ένα εξωτερικό γεγονός (π.χ. µία αίτηση εξυπηρέτησης διακοπής). Οι καταστάσεις HALT και HOLD µπορούν να συµβούν και παράλληλα. ∆ηλαδή ενόσω είµαστε σε κατάσταση HALT µπορούµε να µπαίνουµε και να βγαίνουµε σε καταστάσεις HOLD.
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
3.9 Μια διακοπή ρεύµατος και η επαναφορά της τροφοδοσίας στον 8080 έχει ως αποτέλεσµα οι καταχωρητές να πάρουν τυχαίες και µη προβλέψιµες τιµές. Για το λόγο αυτό απαιτείται η ύπαρξη ενός κυκλώµατος αρχικοποίησης, το οποίο να ενεργοποιεί, σε κάθε περίπτωση επαναφοράς της τροφοδοσίας, το σήµα RESET του µικροεπεξεργαστή ώστε να µηδενίζεται ο µετρητής προγράµµατος και να ξεκινά η εκτέλεση των εντολών από τη θέση µνήµης µε διεύθυνση 000016. 3.10 Η πρώτη εντολή χρησιµοποιεί τον υπονοούµενο τρόπο προσπέλασης, καθώς ο κωδικός λειτουργίας της περιέχει το όνοµα του καταχωρητή (Α), στον οποίο βρίσκονται τα δεδοµένα. Η δεύτερη εντολή χρησιµοποιεί τον έµµεσο τρόπο προσπέλασης. Ο κώδικας λειτουργίας της εντολής περιέχει τον καταχωρητή (HL), στον οποίο βρίσκεται η διεύθυνση της µνήµης, στην οποία βρίσκονται αποθηκευµένα τα δεδοµένα. Η τρίτη εντολή χρησιµοποιεί την άµεση διευθυνσιοδότηση, καθώς τα δεδοµένα ακολουθούν τον κωδικό λειτουργίας της εντολής. Τα παραπάνω προκύπτουν άµεσα από τους ορισµούς των τρόπων διευθυνσιοδότησης που δώσαµε στο προηγούµενο κεφάλαιο. Εάν δεν καταφέρατε να φτάσετε στη σωστή απάντηση, θα πρέπει να επαναλάβετε την ενότητα 2.5. Εάν πάλι δώσατε σωστή απάντηση, σας αξίζουν συγχαρητήρια! 3.11 Η γεννήτρια χρονισµού 8224 παίρνει σαν είσοδο έναν κρυσταλλικό ταλαντωτή και τα σήµατα RDYIN και RESIN~ και παράγει στην έξοδο τα σήµατα χρονισµού του 8080 (Φ1 και Φ2), και τα σήµατα READY και RESET συγχρονισµένα µε το ρολόι. Επίσης, από το σήµα SYNC του 8080 παράγει το σήµα STSTB~, το οποίο χρησιµοποιείται από τον 8228 για την ανάκτηση των σηµάτων κατάστασης του µικροεπεξεργαστή. Ο ελεγκτής συστήµατος 8228 παίρνει ως είσοδο τα σήµατα WR~, DBIN και HLDA, καθώς και τα σήµατα κατάστασης από το δίαυλο δεδοµένων και παράγει στην έξοδο τα σήµατα ελέγχου του συστήµατος INTA~, MEMR~, MEMW~, I/OR~ και I/OW~ και το δίαυλο δεδοµένων µε µεγαλύτερη οδηγητική ικανότητα. Αρκετά παραστατικό είναι το σχήµα 3.15.
193
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
194
3.12 Συνδυάζοντας τους διάφορους τύπους κύκλων µηχανής, τα σήµατα κατάστασης και τα σήµατα ελέγχου του µικροεπεξεργαστή, µπορούµε να παρατηρήσουµε τα εξής: (α)Tο σήµα MEMR~ γίνεται αληθές, όταν έχουµε κύκλο ανάγνωσης από τη µνήµη (είτε κύκλο προσκόµισης εντολής είτε κύκλο ανάγνωσης δεδοµένων είτε κύκλο ανάγνωσης από το σωρό), δηλαδή όταν το DBIN είναι αληθές και το MEMR (D7) είναι αληθές. (β) Tο σήµα MEMW~ γίνεται αληθές, όταν έχουµε κύκλο εγγραφής στη µνήµη, δηλαδή όταν το WR~ είναι αληθές και το OUT (D4) είναι ψευδές. (γ) Tο σήµα I/OR~ γίνεται αληθές, όταν έχουµε κύκλο ανάγνωσης από συσκευή εισόδου/εξόδου, δηλαδή όταν το DBIN είναι αληθές και το INP (D6) είναι αληθές. (δ) Tο σήµα I/OW~ γίνεται αληθές, όταν έχουµε κύκλο εγγραφής σε συσκευή εισόδου/εξόδου, δηλαδή όταν το WR~ είναι αληθές και το OUT είναι αληθές. (ε) Tο σήµα INTA~ γίνεται αληθές, όταν το INTA (D0) γίνεται αληθές. 4.1 Όπως µπορείτε να διαβάσετε και στην υποενότητα 4.1.2, ο 8080 διαθέτει (α) δύο 8–bit συσσωρευτές (Α, Β), (β) έναν 16–bit καταχωρητή δείκτη (Χ), (γ) τον 8–bit καταχωρητή κατάστασης επεξεργαστή (PSW), (δ) τον 16–bit µετρητή προγράµµατος (PC) και (ε) τον 16–bit καταχωρητή σωρού (SP). 4.2 Το αποτέλεσµα της εκτέλεσης της εντολής είναι το άθροισµα του περιεχοµένου του συσσωρευτή Α µε το περιεχόµενο της θέσης µνήµης, δηλαδή η τιµή 8216 (4616+3C16=8216). Οι σηµαίες κατάστασης (δείκτες κατάστασης) παίρνουν τις παρακάτω τιµές: (α) Ζ = 0, αφού το αποτέλεσµα είναι διάφορο του µηδενός, (β) Ν =1, αφού το περισσότερο σηµαντικό bit του αποτελέσµατος είναι ίσο µε 1, (γ) Η = 1, αφού προέκυψε κρατούµενο από την πρόσθεση των πρώτων λιγότερο σηµαντικών 4 bits των αριθµών, (δ) C = 0, αφού δεν προέκυψε κρατούµενο κατά την πρόσθεση των δύο αριθµών και (ε) V = 1, αφού, εάν θεωρήσουµε τους αριθµούς ως προσηµασµένους σε µορφή συµπληρώ-
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
µατος ως προς δύο, τότε αναπαριστούν τους αριθµούς +7010 και +6010. Το αποτέλεσµα της άθροισης θα πρέπει να είναι ο θετικός αριθµός +13010, ο οποίος όµως δεν µπορεί να αποθηκευτεί σε ένα byte. Εποµένως έχουµε υπερχείλιση. Το αποτέλεσµα που προέκυψε όµως από την πρόσθεση των δύο αριθµών (8216) στο µικροεπεξεργαστή αναπαριστά σε µορφή συµπληρώµατος ως προς δύο τον αρνητικό αριθµό –12610. Η υπερχείλιση χρησιµοποιείται από το µικροεπεξεργαστή για να δείξει ότι το αποτέλεσµα µίας πράξης δεν είναι σωστό, καθώς δεν µπορεί να αναπαρασταθεί σε ένα byte. Η τιµή της σηµαίας I δεν αλλάζει µετά την εκτέλεση της εντολής ADDA. Όπως µάθαµε, η σηµαία αυτή χρησιµοποιείται για να απαγορεύει ή να επιτρέπει αιτήσεις διακοπής µέσω του σήµατος IRQ~ και εποµένως διατηρεί την τιµή που είχε πριν από την εκτέλεση της εντολής ADDA. Εάν απαντήσατε σωστά στην άσκηση αυτή, σας αξίζουν συγχαρητήρια! Εάν όχι, προσπαθήστε πάλι. H έννοια της υπερχείλισης είναι πράγµατι µια δύσκολη έννοια. Θα πρέπει να έχετε πάντα υπόψη σας ότι δεν είναι απαραίτητο µία εντολή να επηρεάζει όλες τις σηµαίες κατάστασης. Στο βιβλίο του κατασκευαστή µπορούµε να βρίσκουµε για κάθε εντολή ποιες σηµαίες κατάστασης επηρεάζει και ποιες όχι. 4.3 Στον 8080 µπορούµε να διακρίνουµε εννέα σήµατα ελέγχου: (1) R/W~, (2) DBE, (3) VMA, (4) TSC, (5) BA, (6) HALT~, (7) IRQ~, (8) NMI~ και (9) RESET~. Η λειτουργία του κάθε σήµατος περιγράφεται αναλυτικότερα στην υποενότητα 4.1.3. Η γνώση τους είναι απαραίτητη στο σχεδιασµό ενός µικροϋπολογιστικού συστήµατος. 4.4 Η θετική ακµή του σήµατος Φ1 οδηγεί το σήµα VMA στη λογική τιµή “1” και στο δίαυλο διευθύνσεων εξάγεται η διεύθυνση της θέσης µνήµης, στην οποία θα γίνει η εγγραφή. Η διεύθυνση παραµένει στις γραµµές του διαύλου µέχρι την επόµενη θετική ακµή του Φ 1, που σηµατοδοτεί το τέλος του κύκλου µηχανής εγγραφής και την αρχή του επόµενου κύκλου µηχανής. Το σήµα R/W~ παραµένει στη λογική τιµή “0” για όλη τη διάρκεια του κύκλου µηχανής δείχνοντας ότι πρόκειται για λειτουργία εγγραφής. Για όσο διάστηµα το σήµα DBE βρίσκεται στη λογική τιµή “0”, ο δίαυλος δεδοµένων βρίσκεται σε κατάσταση υψηλής εµπέδησης. Μόλις το σήµα DBE
195
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
196
µεταβεί στη λογική τιµή “1”, ο µικροεπεξεργαστής τοποθετεί στις γραµµές δεδοµένων τα προς εγγραφή δεδοµένα. Τα δεδοµένα θα παραµείνουν εκεί µέχρι την αρνητική ακµή του Φ2, οπότε το σήµα DBE µεταβαίνει στη λογική τιµή “0” και ο δίαυλος δεδοµένων σε κατάσταση υψηλής εµπέδησης. Η µνήµη θα πρέπει να έχει προλάβει να αποθηκεύσει τα δεδοµένα µέχρι αυτά να εξαφανιστούν από το δίαυλο δεδοµένων. Εάν δώσατε τη σωστή απάντηση, µπράβο! Εάν πάλι δεν καταφέρατε να απαντήσετε σωστά, µια πιο προσεκτική ανάγνωση της ενότητας 4.2 και των σχηµάτων που περιέχει θα σας βοηθήσει να λύσετε όποιες απορίες έχετε. 4.5 Το σήµα VMA γίνεται ενεργό µε τη θετική ακµή του Φ1 κατά τη διάρκεια ενός κύκλου µηχανής και παραµένει ενεργό µέχρι το τέλος του κύκλου αυτού. Το σήµα αυτό ενηµερώνει τη µνήµη ή τις συσκευές εισόδου/εξόδου ότι ο µικροεπεξεργαστής έχει τοποθετήσει στο δίαυλο διευθύνσεων τη διεύθυνση της µνήµης που θα λάβει µέρος στη λειτουργία ανάγνωσης ή εγγραφής. 4.6 Η κατάσταση WAIT προκύπτει από την εκτέλεση της εντολής WAI και θέτει το µικροεπεξεργαστή σε κατάσταση αναµονής διακοπής. Κατά την κατάσταση αυτή αποθηκεύονται οι καταχωρητές στο σωρό και οι δίαυλοι του µικροεπεξεργαστή µεταβαίνουν σε κατάσταση υψηλής εµπέδησης. Η έξοδος από την κατάσταση αυτή γίνεται όταν εµφανιστεί µία αίτηση διακοπής. Η κατάσταση HOLD, που προκύπτει µε τα σήµατα TSC και DBE, οδηγεί τους διαύλους διευθύνσεων και δεδοµένων του µικροεπεξεργαστή σε κατάσταση υψηλής εµπέδησης ώστε εξωτερικές συσκευές να µπορούν να πάρουν τον έλεγχο των διαύλων αυτών και να υλοποιήσουν λειτουργίες απευθείας προσπέλασης της µνήµης. Η κατάσταση HALT προκύπτει µε εφαρµογή της λογικής τιµή “0” στον ακροδέκτη HALT~ και οδηγεί το µικροεπεξεργαστή µετά την εκτέλεση της τρέχουσας εντολής σε κατάσταση αναστολής επεξεργασίας. Κατά την κατάσταση αυτή οι δίαυλοι του µικροεπεξεργαστή µεταβαίνουν σε κατάσταση υψηλής εµπέδησης. Και οι τρεις αυτές ειδικές καταστάσεις χρησιµοποιούνται κυρίως σε περι-
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
πτώσεις όπου θέλουµε να κάνουµε λειτουργίες απευθείας προσπέλασης της µνήµης (λειτουργίες DMA). Μία χρήση της κατάστασης HALT είναι επίσης για τη βηµατική εκτέλεση των εντολών του προγράµµατος κατά τη φάση εκσφαλµάτωσής του. 4.7 (α)Το αποτέλεσµα 0416 προκύπτει από την πρόσθεση του 0516, που περιέχεται στον συσσωρευτή Α, µε την τιµή FF16. Παρατηρούµε ότι η τιµή FF16 βρίσκεται αµέσως µετά από τον κωδικό λειτουργίας της εντολής, εποµένως η εντολή αυτή χρησιµοποιεί την άµεση διευθυνσιοδότηση. (β) Το αποτέλεσµα 5516 προκύπτει από την πρόσθεση του 0516 µε την τιµή 5016. Η τιµή αυτή υπάρχει στη θέση µνήµης 001216. Παρατηρούµε ότι το έντελο της εντολής περιέχει µόνο το 1216, δηλαδή το λιγότερο σηµαντικό byte της διεύθυνσης, ενώ το περισσότερο σηµαντικό byte είναι το 0016. Η διευθυνσιοδότηση που χρησιµοποιεί η εντολή είναι µηδενικής σελίδας. (γ) Το αποτέλεσµα 1A16 προκύπτει από την πρόσθεση του 0516 µε την τιµή 1516. Η τιµή αυτή υπάρχει στη θέση µνήµης 123416. Το έντελο της εντολής περιέχει τη διεύθυνση της µνήµης, στην οποία βρίσκονται τα δεδοµένα, εποµένως η εντολή αυτή χρησιµοποιεί την απευθείας ή απόλυτη διευθυνσιοδότηση. (δ) Το αποτέλεσµα 2516 προκύπτει από την πρόσθεση του 0516 µε την τιµή 2016. Η τιµή αυτή υπάρχει στη θέση µνήµης 123316. Το έντελο της εντολής περιέχει την τιµή 1016 και τον καταχωρητή δείκτη Χ. Εάν προσθέσουµε την τιµή 1016 µε το περιεχόµενο του Χ (122316), προκύπτει η διεύθυνση της µνήµης που θέλουµε, εποµένως η εντολή αυτή χρησιµοποιεί δεικτοδοτηµένη διευθυνσιοδότηση. 5.1 Στους µικροεπεξεργαστές που γνωρίσαµε µέχρι τώρα, η εκτέλεση µίας εντολής χωριζόταν σε τρία στάδια: (α) το στάδιο της προσκόµισης της εντολής και των εντέλων, (β) το στάδιο της εκτέλεσης της εντολής και (γ) το στάδιο της αποθήκευσης των αποτελεσµάτων, όποτε χρειαζόταν. Τα στάδια αυτά εκτελούνταν σειριακά το ένα µετά το άλλο. Ο 8086 προσπαθεί να παραλληλίσει την εκτέλεση µίας εντολής και την προσκόµιση/αποθήκευση των δεδοµένων από τη µνήµη. Στην ιδανική περίπτωση, τόσο η µονάδα εκτέλεσης όσο και η µονάδα διασύνδεσης διαύλου θα βρίσκονται συνεχώς σε λειτουρ-
197
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
198
γία, χωρίς να περιµένει η µία να ολοκληρώσει η άλλη τις εργασίες της. Με τον τρόπο αυτό ο 8086 επιτυγχάνει µεγαλύτερες ταχύτητες επεξεργασίας. Εάν απαντήσατε σωστά, σας αξίζουν συγχαρητήρια. Εάν πάλι όχι, µάλλον θα πρέπει να επαναλάβετε τη µελέτη της υποενότητας 5.1.1. Στη σελίδα 43 του δεύτερου βιβλίου, που αναφέρεται στη βιβλιογραφία, µπορείτε να βρείτε ένα παράδειγµα που δείχνει την αποτελεσµατικότητα του παραλληλισµού του 8086. 5.2 (α)Λόγω της τµηµατοποίησης της µνήµης (segmentation), που υποστηρίζει ο 8086, η φυσική διεύθυνση της µνήµης, που πρόκειται να προσπελαστεί κάθε φορά, υπολογίζεται ως το άθροισµα του καταχωρητή τµήµατος, που έχει µήκος 16 bits, µετατοπισµένο κατά 4 bits προς τα αριστερά ώστε να αποκτήσει µέγεθος 20 bits, µε το µετρητή προγράµµατος. Ανάλογα µε το εάν πρόκειται για λειτουργία που αφορά εντολές, δεδοµένα ή το σωρό χρησιµοποιείται και ο αντίστοιχος καταχωρητής τµήµατος (καταχωρητής τµήµατος κώδικα, δεδοµένων, σωρού και καταχωρητής επιπλέον τµήµατος). (β) Με βάση το (α) µπορείτε εύκολα να υπολογίσετε ότι η διεύθυνση της µνήµης, στην οποία βρίσκεται η εντολή, είναι η FEDC016 + 001216 = FEDD216. Η τµηµατοποίηση της µνήµης, που βρίσκουµε στον 8086, µάλλον περισσότερα προβλήµατα δηµιούργησε, λόγω της πολυπλοκότητάς της, παρά αποτελέσµατα. Μην ξεχνάτε, όµως, το γεγονός ότι οι σχεδιαστές του 8086 έπρεπε να διατηρήσουν τη συµβατότητα µε τον 8085 και ότι την εποχή που σχεδιαζόταν ο 8086 δεν υπήρχε κάποιος αντίστοιχος 16–bit επεξεργαστής. 5.3 Οι καταχωρητές του 8086 αποτελούν υπερσύνολο των καταχωρητών του 8080/8085. Ο 8080/8085 είχε το συσσωρευτή Α, τους 16–bit καταχωρητές BX, CX, DX, τον καταχωρητή σωρού (SP), το µετρητή προγράµµατος (IP) και ένα 8–bit καταχωρητή κατάστασης επεξεργαστή. Ο 8086 εκτός από τους παραπάνω: • επεκτείνει το συσσωρευτή Α σε 16–bit καταχωρητή,
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
• διαθέτει τέσσερις καταχωρητές τµήµατος (CS, DS, SS, ES), • διαθέτει έναν 16–bit καταχωρητή βάσης (BP), • διαθέτει δύο 16–bit καταχωρητές δείκτη (SI και DI), • επεκτείνει τον καταχωρητή κατάστασης επεξεργαστή σε 16–bit, προσθέτοντας επιπλέον σηµαίες κατάστασης. Οι επιπλέον καταχωρητές χρησιµοποιούνται στην οργάνωση της µνήµης και στους διάφορους τρόπους διευθυνσιοδότησης, που περιέχει ο 8086. 5.4 Οι δηµιουργοί του 8086 θέλησαν να σχεδιάσουν ένα µικροεπεξεργαστή, ο οποίος να έχει ευρύ φάσµα εφαρµογών. Έτσι, ανάλογα µε την τιµή ενός ακροδέκτη του ολοκληρωµένου κυκλώµατος, ο µικροεπεξεργαστής µπορεί να λειτουργήσει είτε στον ελάχιστο είτε στο µέγιστο τρόπο λειτουργίας. Στον ελάχιστο τρόπο λειτουργίας, ο µικροεπεξεργαστής παρέχει όλα εκείνα τα σήµατα χρονισµού, τα οποία χρειάζονται για την ανάπτυξη ενός απλού µικροϋπολογιστικού συστήµατος µ’ ένα µικροεπεξεργαστή. Στα συστήµατα αυτά είναι σηµαντικό, για λόγους κόστους, ο συνολικός αριθµός των ολοκληρωµένων να είναι ο ελάχιστος δυνατός. Στο µέγιστο τρόπο λειτουργίας, ο µικροεπεξεργαστής παρέχει πιο πολύπλοκα σήµατα χρονισµού, τα οποία όµως είναι απαραίτητα για την ανάπτυξη πολυεπεξεργαστικών συστηµάτων. Στην περίπτωση τέτοιων συστηµάτων απαιτείται η ύπαρξη επιπλέον ολοκληρωµένων κυκλωµάτων, όπως π.χ. ο 8288 ελεγκτής διαύλου για την αποτελεσµατική διαχείριση των διαύλων του συστήµατος. 5.5 Ένας κύκλος ανάγνωσης στον 8086 αποτελείται από τουλάχιστον τέσσερις κύκλους ρολογιού. Στον πρώτο κύκλο ρολογιού στον πολυπλεγµένο δίαυλο διευθύνσεων/δεδοµένων εµφανίζεται η διεύθυνση της µνήµης, από όπου θα γίνει η ανάγνωση των δεδοµένων. Τα δεδοµένα µεταφέρονται στο δίαυλο κατά τη διάρκεια του τρίτου και τέταρτου κύκλου ρολογιού. Στην περίπτωση που ο χρόνος δεν είναι αρκετός και η µνήµη δεν προλαβαίνει να παράσχει να δεδοµένα, τότε εισάγει επιπλέον κύκλους αναµονής. Εάν δώσατε τη σωστή απάντηση, µπράβο! Εάν πάλι δεν καταφέρατε να απα-
199
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
200
ντήσετε σωστά, µια πιο προσεκτική ανάγνωση της ενότητας 5.2 και των σχηµάτων που περιέχει θα σας βοηθήσει να λύσετε όποιες απορίες έχετε. 5.6 Με την εµφάνιση µιας αίτησης διακοπής, ο µικροεπεξεργαστής εξετάζει κατά πόσο πρέπει να την ικανοποιήσει ή όχι. Στην περίπτωση που η διακοπή πρέπει να εξυπηρετηθεί, τότε ο µικροεπεξεργαστής απαντά µε δύο κύκλους αναγνώρισης διακοπής. Η συσκευή που προκάλεσε τη διακοπή είναι υποχρεωµένη κατά τη διάρκεια του δεύτερου κύκλου να τοποθετήσει στο δίαυλο δεδοµένων τον αριθµό της διακοπής. Με βάση τον αριθµό αυτό, ο 8086 ανατρέχει στον πίνακα διευθύνσεων διακοπών για να βρει την αρχή της ρουτίνας εξυπηρέτησης διακοπής. Φορτώνει το µετρητή προγράµµατος και τον καταχωρητή τµήµατος κώδικα µε τις νέες τιµές και ξεκινά την εκτέλεση της ρουτίνας εξυπηρέτησης. 5.7 Στον 8086 συναντάµε τρόπους διευθυνσιοδότησης, οι οποίοι χρησιµοποιούν κάποιους από τους καταχωρητές του µικροεπεξεργαστή για να καθορίσουν την ενεργή διεύθυνση. Έτσι π.χ. στην περίπτωση εντολών έµµεσης διευθυνσιοδότησης, οι καταχωρητές BX, SI και DI περιέχουν την ενεργή διεύθυνση. Στην περίπτωση της δεικτοδοτηµένης προσπέλασης, το έντελο που ακολουθεί την εντολή προστίθεται στην τιµή ενός από τους καταχωρητές BX, BP, SI, DI για να καθορίσει την ενεργή διεύθυνση. Τέλος υπάρχουν και εντολές, στις οποίες προστίθενται τα περιεχόµενα των BX ή BP µε τα περιεχόµενα των SI ή DI και ενδεχόµενα µε την τιµή του εντέλου, που ακολουθεί η εντολή. Το αποτέλεσµα καθορίζει την ενεργή διεύθυνση, η οποία συνδυάζεται µε τον αντίστοιχο καταχωρητή τµήµατος για το σχηµατισµό της φυσικής διεύθυνσης, όπου βρίσκονται τα δεδοµένα. 6.1 Κάθε µικροϋπολογιστικό σύστηµα είναι σχεδιασµένο µε τέτοιο τρόπο ώστε να δέχεται κάποια είσοδο από συσκευές, όπως πληκτρολόγια, αισθητήρες, κ.λπ, να την επεξεργάζεται µε τη βοήθεια κάποιου µικροεπεξεργαστή και να παρέχει κάποια έξοδο, η οποία µπορεί να είναι είτε η απεικόνιση κάποιων πληροφοριών είτε ο έλεγχος κάποιων µηχανικών συστηµάτων (διακοπτών, αντλιών, κ.λπ.).
A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ A ™ ∫ ∏ ™ ∂ ø ¡ AÀ ∆ √ ∞ • π √ § √ ° ∏ ™ ∏ ™
Έτσι, σε κάθε τέτοιο σύστηµα αναµένουµε να βρούµε ένα µικροεπεξεργαστή, κάποια µνήµη ROM, που περιέχει το πρόγραµµα επεξεργασίας, κάποια µνήµη RAM για την αποθήκευση προσωρινών δεδοµένων και κάποιες περιφερειακές συσκευές, που χρησιµοποιούνται τόσο για την είσοδο όσο και για την έξοδο δεδοµένων από και προς το µικροεπεξεργαστή. 6.2 (α)Aφού η µνήµη έχει µέγεθος 4 Κ (=212), απαιτούνται οι 12 λιγότερο σηµαντικές γραµµές διευθύνσεων του µικροεπεξεργαστή για να έχουµε τη δυνατότητα να προσπελάσουµε όλες τις θέσεις της µνήµης. (β) Oι υπόλοιπες τέσσερις (4) γραµµές διευθύνσεων, οι οποίες είναι και οι περισσότερο σηµαντικές, θα χρησιµοποιηθούν από το κύκλωµα αποκωδικοποίησης για να παράγουν το σήµα επίτρεψης CS~ της µνήµης. (γ) Για να αποκωδικοποιείται η µνήµη στις θέσεις 000016–0FFF16, θα πρέπει, όταν οι τέσσερις περισσότερο σηµαντικές γραµµές του διαύλου διευθύνσεων έχουν τη λογική τιµή 0000, το σήµα CS~ της µνήµης να παίρνει τη λογική τιµή 0, ενώ, όταν οι τέσσερις περισσότερο σηµαντικές γραµµές του διαύλου διευθύνσεων έχουν οποιαδήποτε άλλη τιµή, το σήµα CS~ να παίρνει τη τιµή 1. Η λογική πύλη που δίνει το ζητούµενο αποτέλεσµα είναι µία πύλη OR τεσσάρων εισόδων. Οι είσοδοι της πύλης αυτής είναι οι τέσσερις περισσότερο σηµαντικές γραµµές του διαύλου διευθύνσεων, ενώ η έξοδος της πύλης οδηγείται στο σήµα CS~ της µνήµης. Εάν δώσατε τη σωστή απάντηση, µπράβο! Εάν πάλι δεν καταφέρατε να απαντήσετε σωστά, µια πιο προσεκτική ανάγνωση της ενότητας 6.2 θα σας βοηθήσει να λύσετε όποιες απορίες έχετε. 6.3 Οι 14 λιγότερο σηµαντικές γραµµές του διαύλου διευθύνσεων οδηγούνται στις γραµµές διευθύνσεων της µνήµης, ενώ οι υπόλοιπες 6 γραµµές οδηγούν το κύκλωµα αποκωδικοποίησης και οδηγούν το σήµα CS~ της µνήµης. Για να επιλέγεται η µνήµη RAM κάθε φορά που ο µικροεπεξεργαστής επιθυµεί την ανάγνωση/εγγραφή κάποιας θέσης µεταξύ FC00016 και FFFFF16, θα πρέπει το κύκλωµα αποκωδικοποίησης να αποτελείται από µία πύλη NAND έξι εισόδων. Όταν ο 8086 λειτουργεί στον ελάχιστο τρόπο λειτουργίας, µας παρέχει τα σήµατα RD~ και WR~, που γίνονται ενεργά, όταν έχουµε λειτουργία ανά-
201
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
202
γνωσης ή εγγραφής αντίστοιχα, και το σήµα M/IO~, το οποίο σε περιπτώσεις προσπέλασης της µνήµης έχει τη λογική τιµή 1, ενώ σε περιπτώσεις προσπέλασης συσκευής εισόδου/εξόδου έχει την τιµή 0. Το σήµα R/W~ της RAM θα πρέπει να είναι στη λογική τιµή 0, όταν έχουµε λειτουργία εγγραφής δεδοµένων στη µνήµη, δηλαδή όταν το σήµα WR~ του 8086 έχει τη λογική τιµή 0 και το σήµα M/IO~ έχει τη λογική τιµή 1. Αντίστοιχα το σήµα OE~ της µνήµης θα πρέπει να έχει την τιµή 0, όταν έχουµε λειτουργία ανάγνωσης δεδοµένων από τη µνήµη, δηλαδή στην περίπτωση που το σήµα RD~ του 8086 έχει τη λογική τιµή 0 και το σήµα M/IO~ έχει τη λογική τιµή 1. Εάν δηµιουργήσετε τους αντίστοιχους πίνακες αλήθειας, θα διαπιστώσετε ότι η υλοποίηση των σηµάτων R/W~ και OE~ της µνήµης µπορεί να γίνει µε τη βοήθεια αντιστροφέων και πυλών NAND. 6.4 Το κύκλωµα αποκωδικοποίησης χρησιµοποιεί τις 2 περισσότερο σηµαντικές γραµµές του διαύλου διευθύνσεων και παράγει τέσσερα σήµατα επιλογής των τεσσάρων συσκευών που συστήµατός µας. Ένας απλός τρόπος κατασκευής του είναι µε τη βοήθεια ενός αποκωδικοποιητή 2–σε–4. Ο αποκωδικοποιητής παίρνει σαν είσοδο τις δύο γραµµές διευθύνσεων και ανάλογα µε την τιµή που έχουν αυτές παράγει µία λογική τιµή 0 σε µία από τις τέσσερις εξόδους και τη λογική τιµή 1 στις υπόλοιπες εξόδους. Παρατηρήστε ότι µε αυτή την υλοποίηση η µνήµη ROM αντιστοιχεί όχι µόνο στις διευθύνσεις που θέλαµε (000016–1FFF16), αλλά και στις 200016–3FFF16, αφού και σε αυτή την περίπτωση οι δύο σηµαντικότερες γραµµές διευθύνσεων θα έχουν τη λογική τιµή 00. Στην περίπτωση που δεν έχουµε πολλές συσκευές στο σύστηµά µας, ώστε να έχουµε περιορισµένο χώρο διευθύνσεων, αυτό δεν αποτελεί πρόβληµα. Εάν όµως αυτό δεν είναι επιθυµητό, τότε θα πρέπει να διορθώσουµε το κύκλωµα αποκωδικοποίησης, ώστε στην περίπτωση της ROM να λαµβάνει υπόψη της τις 3 περισσότερες σηµαντικές γραµµές διευθύνσεων. Το ίδιο συµβαίνει και µε τις συσκευές εισόδου/εξόδου. Παρά το γεγονός ότι απαιτούν µόνο µία διεύθυνση, µε τον αποκωδικοποιητή 2–σε–4 καταλαµβάνουν όλες τις διευθύνσεις 400016–7FFF16 και C00016–FFFF16. Προκειµένου να επιλέγονται οι συσκευές εισόδου/εξόδου µόνο µε µια διεύθυνση, θα πρέπει να κατασκευάσουµε ένα κύκλωµα αποκωδικοποίησης που θα παίρνει ως εισόδους όλες τις γραµµές διευθύνσεων.
EÓ‰ÂÈÎÙÈΤ˜ A·ÓÙ‹ÛÂȘ ¢Ú·ÛÙËÚÈÔÙ‹ÙˆÓ 1.1 Οι µικροεπεξεργαστές εµφανίστηκαν κάτω από την ανάγκη να κάνουµε τη ζωή µας πιο εύκολη. Την ανάγκη αυτή φρόντισαν να µας ικανοποιήσουν οι κατασκευαστές συστηµάτων προσφέροντάς µας έξυπνες συσκευές µε πολλές δυνατότητες και µε µικρό µέγεθος. Οι κατασκευαστές επιθυµούν να φτιάχνουν όλο και περισσότερο έξυπνα συστήµατα. Κλασικό παράδειγµα είναι οι κατασκευαστές αυτοκινήτων. Θέλοντας να κάνουν όλο και πιο ξεκούραστη και πιο ασφαλή την οδήγηση, ανέπτυξαν διάφορα συστήµατα ελέγχου της οδικής συµπεριφοράς. Οι µικροεπεξεργαστές τους έδωσαν τα µέσα για να το πετύχουν χωρίς επιβάρυνση σε όγκο ή βάρος. Ένα παράδειγµα είναι το σύστηµα ABS. Τα σύγχρονα αυτοκίνητα µπορούν να ελέγχουν τη συµπεριφορά τους στο δρόµο και να απελευθερώνουν τους τροχούς, όταν αυτοί µπλοκάρουν. Πώς γίνεται αυτό; Χρησιµοποιώντας αισθητήρες στους τροχούς (αποτελεί την είσοδό µας προς το µικροεπεξεργαστή), ο µικροεπεξεργαστής γνωρίζει (αυτή είναι η επεξεργασία που γίνεται) πότε αυτοί περιστρέφονται και πότε όχι. Στη δεύτερη περίπτωση οι διατάξεις ελέγχου των τροχών απελευθερώνουν τα φρένα (αυτό είναι και η έξοδος του µικροεπεξεργαστή). 1.2 Ακολουθεί ο συγκεντρωτικός πίνακας µε τα κυριότερα χαρακτηριστικά των επεξεργαστών της Intel: Έτος
Μικρο– επεξεργαστής
Μήκος λέξης (σε bits)
Συχνότητα λειτουργίας
Αριθµός τρανσίστορς
1971
4004
4
108 kHz
2.300
1974
8080
8
2 MHz
6.000
1978
8086/8088
16
10 MHz
29.000
1982
80286
16
12,5 MHz
134.000
1985
80386
32
33 MHz
275.000
1989
80486
32
50 MHz
1.200.000
1993
Pentium
32
166 MHz
3.100.000
1997
Pentium II
64
300 MHz
7.700.000
1999
Pentium III
64
450 MHz
9.500.000
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
204
3.1 Συνδυάζοντας τη σύντοµη περιγραφή του Ζ80, που ακολουθεί, µε τα όσα διαβάσατε στο κεφάλαιο αυτό, µπορείτε να παρουσιάσετε τις διαφορές µεταξύ του Ζ80 και του 8080/8085. Ο Ζ80 κατασκευάζεται σε ολοκληρωµένο κύκλωµα των 40 ακροδεκτών. Η συχνότητα χρονισµού του είναι συνήθως 2,5MHz. Στο ολοκληρωµένο κύκλωµά του βρίσκουµε τους ακροδέκτες τροφοδοσίας (απαιτεί µία µόνο τάση τροφοδοσίας +5 V), τις 8 γραµµές του διαύλου δεδοµένων και τις 16 γραµµές του διαύλου διευθύνσεων. Επίσης υπάρχει ο ακροδέκτης χρονισµού (Φ), στον οποίο συνδέουµε το σήµα χρονισµού του µικροεπεξεργαστή. Η γραµµή RESΕΤ~ χρησιµοποιείται για την αρχικοποίηση του µικροεπεξεργαστή, ενώ τα σήµατα IΝΤ~ και NMI~ αποτελούν τις γραµµές (σήµατα) διακοπής. Η γραµµή Μ1~ σηµατοδοτεί τους κύκλους, στους οποίους ο µικροεπεξεργαστής βρίσκεται σε φάση προσκόµισης του κώδικα λειτουργίας µίας εντολής. Τα σήµατα RD~ και WD~ χρησιµοποιούνται για τις λειτουργίες ανάγνωσης και εγγραφής στη µνήµη, ενώ το σήµα WAIT~ χρησιµοποιείται για να διευκολύνει τη σύνδεση αργών µνηµών σε Ζ80, ενώ τα σήµατα MREQ~ και IORQ~ δηλώνουν ότι η διεύθυνση, που υπάρχει στο δίαυλο διευθύνσεων, µπορεί να χρησιµοποιηθεί για την προσπέλαση της µνήµης ή µίας συσκευής εισόδου/εξόδου. Το σήµα BUSRQ~ αποτελεί µία αίτηση προς το µικροεπεξεργαστή ώστε να απελευθερώσει τους διαύλους του συστήµατος. Όταν η αίτηση γίνει δεκτή, τότε ενεργοποιείται το σήµα BUSAK~. Το σήµα RFSH~ χρησιµοποιείται για την ανανέωση των κυκλωµάτων των δυναµικών µνηµών (οι δυναµικές µνήµες έχουν το χαρακτηριστικό ότι πρέπει να ανανεώνονται τα περιεχόµενά τους κατά τακτά χρονικά διαστήµατα), ενώ το σήµα HALT~ εισάγει το µικροεπεξεργαστή σε κατάσταση αναστολής λειτουργίας µέχρι να συµβεί κάποια αίτηση διακοπής. Ο Ζ80 διαθέτει τους καταχωρητές που έχει και ο 8080/8085, αλλά διαθέτει άλλους τόσους συσσωρευτές και καταχωρητές γενικού σκοπού. Έτσι περιέχει τους A, BC, DE, HL, αλλά και τους Α', B'C', D'Ε', Η'L'. Περιέχει επίσης και δύο καταχωρητές δείκτη (X,Y), έναν καταχωρητή για το άνυσµα εξυπηρέτησης διακοπής και έναν καταχωρητή για την ανανέωση της δυναµικής µνήµης. Ο Ζ80 διαθέτει τέσσερα είδη διακοπών: µία διακοπή, που ενεργοποιείται από
E ¡ ¢ ∂ π ∫ ∆ π ∫ ∂ ™ A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ø ¡
το λογισµικό, µία διακοπή αρχικοποίησης (RESΕΤ~), µία διακοπή ελεγχόµενη (IRQ~) και µία διακοπή µη ελεγχόµενη (NMI~). Οι εντολές του Ζ80 αποτελούν ένα υπερσύνολο των εντολών του 8080/8085. Για το λόγο αυτό προγράµµατα γραµµένα για τον 8080/8085 µπορούν να εκτελεστούν από τον Ζ80, χωρίς να απαιτούνται αλλαγές. Ανάµεσα στους τρόπους διευθυνσιοδότησης, που διαθέτει, µπορούµε να βρούµε αυτούς του 8080/8085, αλλά και τη σχετική και τη δεικτοδοτηµένη διευθυνσιοδότηση. 4.1 Συνδυάζοντας τη σύντοµη περιγραφή του 6502, που ακολουθεί, µε τα όσα διαβάσατε στο κεφάλαιο αυτό, µπορείτε να δηµιουργήσετε µία ολοκληρωµένη απάντηση. Ο 6502, όπως και ο 6800, κατασκευάζεται σε ολοκληρωµένο κύκλωµα των 40 ακροδεκτών. Η συχνότητα χρονισµού του είναι από 1 έως 2 MHz, ενώ το κύκλωµα χρονισµού συµπεριλαµβάνεται στο ολοκληρωµένο κύκλωµα του µικροεπεξεργαστή. Σε αυτό βρίσκουµε τους ακροδέκτες τροφοδοσίας (απαιτεί µία µόνο τάση τροφοδοσίας +5 V), τις 8 γραµµές του διαύλου δεδοµένων και τις 16 γραµµές του διαύλου διευθύνσεων. Επίσης υπάρχουν δύο σήµατα χρονισµού (φ0,φ2), στα οποία συνδέουµε τον κρυσταλλικό ταλαντωτή, ενώ το σήµα φ1 εξάγει το σήµα χρονισµού του µικροεπεξεργαστή ώστε να µπορούν να το χρησιµοποιήσουν οι εξωτερικές συσκευές. Η γραµµή RES~ χρησιµοποιείται για την αρχικοποίηση του µικροεπεξεργαστή, ενώ τα σήµατα IRQ~ και NMI~ αποτελούν τις γραµµές (σήµατα) διακοπής. Η γραµµή SYNC σηµατοδοτεί τους κύκλους, στους οποίους ο µικροεπεξεργαστής βρίσκεται σε φάση προσκόµισης του κώδικα λειτουργίας µίας εντολής. Το σήµα R/W~ διαχωρίζει κατά πόσο ο 6502 βρίσκεται σε λειτουργία ανάγνωσης ή εγγραφής στη µνήµη, ενώ το σήµα RDY χρησιµοποιείται για να διευκολύνει τη σύνδεση αργών µνηµών σε αυτόν. Το σήµα SO~, τέλος , θέτει στη λογική τιµή “1” τη σηµαία υπερχείλισης στον καταχωρητή κατάστασης επεξεργαστή. Ο 6502 διαθέτει έναν 8–bit συσσωρευτή (Α), δύο 8–bit καταχωρητές δείκτη (X,Y), έναν 16–bit µετρητή προγράµµατος και έναν 16–bit καταχωρη-
205
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
206
τή σωρού (µόνο που το λιγότερο σηµαντικό byte έχει πάντα την τιµή 0116, εποµένως ο σωρός θα βρίσκεται µεταξύ των θέσεων µνήµης µε διεύθυνση 010016 και 01FF16). Επίσης, υπάρχει ο καταχωρητής κατάστασης επεξεργαστή, που περιέχει 7 σηµαίες κατάστασης. Οι τέσσερις από αυτές µας είναι ήδη γνωστές (σηµαία κρατούµενου, µηδενικού αποτελέσµατος, αρνητικού αποτελέσµατος και υπερχείλισης). Η σηµαία Ι ενεργοποιεί ή απενεργοποιεί τις αιτήσεις διακοπής IRQ. Η σηµαία B (Break) είναι στη λογική τιµή “1”, όταν η τελευταία διακοπή που σηµειώθηκε ήταν διακοπή προερχόµενη από το λογισµικό (δηλαδή από την εντολή BRK). Η σηµαία δεκαδικού (D) ορίζει κατά πόσο τα δεδοµένα είναι δυαδικοί αριθµοί ή δεκαδικοί σε παράσταση BCD. Ο 6502 διαθέτει τέσσερα είδη διακοπών: µία διακοπή που ενεργοποιείται από το λογισµικό (εντολή BRK), µία διακοπή αρχικοποίησης (RES~), µία διακοπή ελεγχόµενη από την σηµαία Ι (IRQ~) και µία διακοπή µη ελεγχόµενη (NMI~). Ο 6502 διαθέτει 151 διαφορετικούς κωδικούς λειτουργίας στις εντολές του. Αυτοί χωρίζουν τις εντολές σε αριθµητικές, λογικές, εντολές διακλάδωσης, κ.λπ. Επίσης διαθέτει 14 διαφορετικούς τρόπους διευθυνσιοδότησης. Εκτός από τους ήδη γνωστούς (υπονοούµενη, άµεση, απόλυτη, σχετική, µηδενικής σελίδας διευθυνσιοδότηση), διαθέτει και κάποιους άλλους που κάνουν χρήση των καταχωρητών δείκτη και είναι συνδυασµοί των προηγούµενων µεθόδων µε την έµµεση και δεικτοδοτηµένη διευθυνσιοδότηση. 4.2 Μπορούµε να βρούµε πάρα πολλά παραδείγµατα µικροϋπολογιστικών συστηµάτων που να βασίζονται σε µικροεπεξεργαστές των 8 δυαδικών ψηφίων. Πολλοί από εσάς θα πρέπει να ήρθατε σε επαφή µε κάποιον από τους πρώτους προσωπικούς υπολογιστές στα µέσα της δεκαετίας του 80, όταν έκαναν την εµφάνισή τους στην ελληνική αγορά (ZX Spectrum, Commodore, Amstrad, Apple II). Οι υπολογιστές αυτοί είχαν σχεδιαστεί είτε µε τη βοήθεια του Z80 (Spectrum και Amstrad) είτε µε τη βοήθεια µικροεπεξεργαστών της οικογένειας του 6502 (Commodore και Apple II). Οι σύγχρονες συσκευές πιθανότατα χρησιµοποιούν κάποιον πιο καινούριο µικροεπεξεργαστή (π.χ. των 16 ή 32 δυαδικών ψηφίων). Σε εφαρµογές, όµως, όπου απαιτείται µικρό κόστος κατασκευής και δεν υπάρχουν µεγάλες απαιτήσεις σε επεξεργαστική ισχύ, η χρήση ενός µικροεπεξεργαστή των 8–bits (ο οποίος µπο-
E ¡ ¢ ∂ π ∫ ∆ π ∫ ∂ ™ A ¶ ∞ ¡ ∆ ∏ ™ ∂ π ™ ¢ ƒ∞ ™ ∆ ∏ ƒ π √ ∆ ∏ ∆ ø ¡
ρεί να είναι πιο σύγχρονος, αλλά ανήκει στην ίδια οικογένεια µε κάποιον από τους µικροεπεξεργαστές που γνωρίσαµε µέχρι τώρα) αποτελεί ιδανική λύση. 5.1 Από τη µελέτη του 8088 προκύπτει ότι έχει πάρα πολλές οµοιότητες µε τον 8086. Οι δύο µικροεπεξεργαστές είναι 100% συµβατοί σε επίπεδο συνόλου εντολών και τρόπων διευθυνσιοδότησης. Για το λόγο αυτό προγράµµατα του πρώτου µπορούν να εκτελεστούν στο δεύτερο, χωρίς να απαιτούνται µετατροπές. Είναι γεγονός άλλωστε ότι η συµβατότητα στους µικροεπεξεργαστές της Intel, που χρησιµοποιούνται για τους προσωπικούς υπολογιστές IBM PC συµβατούς, έχει διατηρηθεί από τον 8086 έως και τους σύγχρονους Pentium. Οι δύο µικροεπεξεργαστές παρουσιάζουν πολλές οµοιότητες και σε επίπεδο αρχιτεκτονικής και λειτουργιών. ∆ιαθέτουν σε µεγάλο βαθµό τα ίδια σήµατα χρονισµού, ενώ διαθέτουν ακόµα την ίδια οργάνωση µνήµης και το ίδιο σύνολο καταχωρητών. Μπορούν να λειτουργήσουν µε δύο τρόπους: τον ελάχιστο και το µέγιστο τρόπο λειτουργίας. Οι κυριότερες διαφορές τους, οι οποίες επηρεάζουν περισσότερο την ταχύτητα εκτέλεσης ενός προγράµµατος και όχι τη λειτουργία τους, εστιάζονται στα παρακάτω σηµεία. Ο 8088 διαθέτει 8 µόνο γραµµές δεδοµένων. Παρά το γεγονός αυτό είναι οργανωµένος εσωτερικά µε µήκος λέξης 16–bits. Έτσι, η µεταφορά µίας λέξης γίνεται µε δύο συνεχόµενους κύκλους µηχανής (8–bits κάθε φορά). Επίσης, η ουρά εντολών του 8088 έχει µέγεθος 4 bytes σε αντίθεση µε τον 8086, ο οποίος διαθέτει ουρά εντολών µήκους 6 bytes. Η µονάδα διασύνδεσης διαύλου ανακτά µία εντολή από τη µνήµη κάθε φορά που στην ουρά εντολών του 8088 υπάρχει ένα byte διαθέσιµο (αντίστοιχα στον 8086 έπρεπε να υπάρχουν 2 bytes διαθέσιµα). Επίσης υπάρχουν διαφορές σε κάποια σήµατα ελέγχου των δύο µικροεπεξεργαστών. Για παράδειγµα στον 8088 απουσιάζει το σήµα BHE, αφού η ύπαρξή του δεν έχει κανένα νόηµα. Μία πιο αναλυτική σύγκριση µεταξύ του 8086 και του 8088 µπορείτε να βρείτε στη σελίδα 2–73 του βιβλίου 4 της βιβλιογραφίας.
207
°ÏˆÛÛ¿ÚÈ Αίτηση ∆ιακοπής (interrupt request) Aίτηση των περιφερειακών συσκευών προς το µικροεπεξεργαστή για να αποκτήσουν την προσοχή του. Άµεση διευθυνσιοδότηση (immediate addressing) Tρόπος προσπέλασης, στον οποίο τα δεδοµένα βρίσκονται στο έντελο που ακολουθεί τον κωδικό λειτουργίας της εντολής. Απευθείας ή απόλυτη διευθυνσιοδότηση (direct or absolute addressing) Tρόπος προσπέλασης, στον οποίο τα δεδοµένα, που χρειάζεται η εντολή, βρίσκονται σε κάποια θέση της κύριας µνήµης, η οποία προσδιορίζεται από το έντελο της εντολής. Απευθείας προσπέλαση µνήµης από περιφερειακό (direct memory access – DMA) Tεχνική για τη µεταφορά δεδοµένων στην κύρια µνήµη χωρίς την παρεµβολή του µικροεπεξεργαστή. Αριθµητική & Λογική Μονάδα (arithmetic & logic unit – ALU) Tµήµα του µικροεπεξεργαστή, στο οποίο εκτελούνται οι διάφορες λογικές και αριθµητικές πράξεις. Γραµµή δεδοµένων (data line) Mία γραµµή του διαύλου δεδοµένων. Γραµµή διευθύνσεων (address line) Mία γραµµή του διαύλου διευθύνσεων. Γραµµή ελέγχου (control line) Mία γραµµή του διαύλου ελέγχου ∆είκτης κατάστασης ∆υαδικό ψηφίο του καταχωρητή κατάστασης που υποδηλώνει την ύπαρξη ή όχι κάποιας κατάστασης (π.χ. µηδενικού αποτελέσµατος σε περίπτωση µιας αριθµητικής πράξης). ∆είκτης σωρού (stack pointer) Kαταχωρητής που περιέχει την κορυφή του σωρού.
°§ø™™∞ƒπ
∆εικτοδοτηµένη διευθυνσιοδότηση (indexed addressing) Tρόπος προσπέλασης, στον οποίο η ενεργή διεύθυνση είναι το αποτέλεσµα, που προκύπτει από το άθροισµα της τιµής, που περιέχει το έντελο, και του περιεχόµενου ενός καταχωρητή. ∆ιακοπή (interrupt) H προσωρινή διακοπή της εκτέλεσης των εντολών του προγράµµατος του µικροεπεξεργαστή για την εξυπηρέτηση των αναγκών των περιφερειακών συσκευών. ∆ίαυλος (bus) Mία ή περισσότερες γραµµές, οι οποίες χρησιµοποιούνται για την επικοινωνία των διαφόρων τµηµάτων ενός υπολογιστή. ∆ίαυλος δεδοµένων (data bus) Ένα σύνολο γραµµών, που χρησιµοποιούνται για τη µεταφορά των δεδοµένων ανάµεσα στις διάφορες µονάδες ενός υπολογιστή. ∆ίαυλος διευθύνσεων (address bus) Ένα σύνολο γραµµών, που χρησιµοποιούνται για τη µεταφορά διευθύνσεων ανάµεσα στις διάφορες µονάδες ενός υπολογιστή (συνήθως από το µικροεπεξεργαστή προς τις υπόλοιπες µονάδες). ∆ίαυλος ελέγχου (control bus) Ένα σύνολο γραµµών, που χρησιµοποιούνται για την ενεργοποίηση των λειτουργιών του µικροεπεξεργαστή, της µνήµης και των περιφερειακών συσκευών, που αποτελούν ένα µικροϋπολογιστή. ∆ιευθυνσιοδότηση µηδενικής σελίδας (zero page addressing) Tρόπος προσπέλασης των πρώτων 256 θέσεων της κύριας µνήµης. Έµµεση διευθυνσιοδότηση (indirect addressing) Tρόπος προσπέλασης, στον οποίο η ενεργή διεύθυνση σχηµατίζεται από το περιεχόµενο του καταχωρητή ή της θέσης µνήµης, την οποία περιέχει η εντολή στο έντελό της. Ενεργή διεύθυνση (effective address) H φυσική διεύθυνση της µνήµης, που προκύπτει από την εφαρµογή του τρόπου διευθυνσιοδότησης σε µία εντολή.
209
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
210
Έντελο (operand) Tο δεύτερο µέρος της κάθε εντολής. Περιέχει τα δεδοµένα ή τη διεύθυνση, στην οποία αυτά βρίσκονται, τα οποία θα χρειαστεί η κεντρική µονάδα επεξεργασίας κατά την εκτέλεση της εντολής. Εντολή (instruction) Ένα σύνολο από δυαδικά ψηφία, που ορίζουν τη λειτουργία που θα πρέπει να εκτελέσει ο µικροεπεξεργαστής. Η κάθε εντολή περιέχει τον κωδικό λειτουργίας και ένα ή περισσότερα έντελα. Καταχωρητής (register) Tµήµατα του µικροεπεξεργαστή που χρησιµοποιούνται για την αποθήκευση δεδοµένων. Καταχωρητής γενικού σκοπού (general purpose register) Kαταχωρητής που µπορεί να χρησιµοποιηθεί είτε ως συσσωρευτής είτε ως καταχωρητής δείκτη ανάλογα µε τις εκάστοτε ανάγκες. Καταχωρητής δείκτη (index register) Kαταχωρητής, τα περιεχόµενα του οποίου µπορούν να προστεθούν σε µία διεύθυνση και να δηµιουργήσουν µια νέα ενεργή διεύθυνση. Καταχωρητής εντολών (instruction register) Kαταχωρητής της µονάδας ελέγχου, στον οποίο αποθηκεύεται ο κωδικός λειτουργίας της εντολής, που πρόκειται να εκτελεστεί. Καταχωρητής κατάστασης (status register) Ένα σύνολο από δυαδικά ψηφία, που ονοµάζονται δείκτες ή σηµαίες κατάστασης, που υποδηλώνουν τα χαρακτηριστικά των αποτελεσµάτων της προηγούµενης πράξης της αριθµητικής και λογικής µονάδας. Καταχωρητής τµήµατος (segment register) Περιέχει την αρχική διεύθυνση ενός τµήµατος µνήµης. Χρησιµοποιείται στον 8086/8088 της Intel. Κεντρική µονάδα επεξεργασίας (central Processing Unit – CPU) Aποτελεί την καρδιά του κάθε υπολογιστικού συστήµατος. Εκτελεί τις αριθµητικές και λογικές λειτουργίες και ελέγχει και συντονίζει τη λειτουργία του συστήµατος.
°§ø™™∞ƒπ
Κύκλος ανάκλησης εντολής (instruction fetch cycle) Aποτελεί τον πρώτο κύκλο µηχανής κάθε εντολής. Κατά τη διάρκεια του κύκλου αυτού, µεταφέρεται η εντολή από τη µνήµη στην CPU. Κύκλος εντολής (instruction cycle) O χρόνος που απαιτείται για το συνδυασµό των λειτουργιών, που χρειάζονται κατά την εκτέλεση µιας εντολής. Κύκλος µηχανής (machine cycle) O χρόνος που απαιτείται για την εκτέλεση µιας βασικής λειτουργίας, όπως π.χ. µια λειτουργία ανάγνωσης/εγγραφής στη µνήµη. Κύκλος προσκόµισης εντολής (instruction fetch cycle) Bλέπε κύκλο προσκόµισης εντολής. Κύκλος ρολογιού (clock cycle) Aποτελεί τη µονάδα χρόνου του µικροεπεξεργαστή και εκφράζει την περίοδο του σήµατος χρονισµού. Κυκλώµατα εξαιρετικά υψηλής κλίµακας ολοκλήρωσης (ultra large scale of integration – ULSI) Oλοκληρωµένα κυκλώµατα που αποτελούνται από εκατοµµύρια τρανσίστορς. Κυκλώµατα µεγάλης κλίµακας ολοκλήρωσης (large scale of integration – LSI) Oλοκληρωµένα κυκλώµατα που αποτελούνται από µερικές εκατοντάδες έως µερικές χιλιάδες τρανσίστορς. Κυκλώµατα µεσαίας κλίµακας ολοκλήρωσης (medium scale of integration – MSI) Oλοκληρωµένα κυκλώµατα µε µερικές δεκάδες έως εκατοντάδες τρανσίστορς. Κυκλώµατα µικρής κλίµακας ολοκληρωσης (small scale of integration – SSI) Oλοκληρωµένα κυκλώµατα που περιέχουν µερικά µόνο τρανσίστορς. Κυκλώµατα πολύ µεγάλης κλίµακας ολοκλήρωσης (very large scale of integration – VLSI) Oλοκληρωµένα κυκλώµατα που αποτελούνται από µερικές χιλιάδες έως εκατοντάδες χιλιάδες τρανσίστορς.
211
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
212
Κύρια µνήµη (main memory) Ένα σύνολο από ολοκληρωµένα κυκλώµατα, που χρησιµοποιούνται για την αποθήκευση των εντολών του προγράµµατος, των αρχικών δεδοµένων και των ενδιάµεσων αποτελεσµάτων. Κωδικός λειτουργίας (operation code – opcode) Mέρος της εντολής. Περιέχει τον κωδικό της εντολής και υπαγορεύει στην κεντρική µονάδα επεξεργασίας την εκτέλεση της συγκεκριµένης λειτουργίας. Μέθοδοι διευθυνσιοδότησης (addressing modes) Bλέπε τρόπους προσπέλασης Μετρητής προγράµµατος (program counter) Aποθηκεύει τη διεύθυνση της θέσης µνήµης, στην οποία βρίσκεται η επόµενη προς εκτέλεση εντολή. Μικροεπεξεργαστής (microprocessor) H κεντρική µονάδα επεξεργασίας ενσωµατωµένη σε ένα ολοκληρωµένο κύκλωµα. Μικροϋπολογιστής (microcomputer) Yπολογιστικό σύστηµα που χρησιµοποιεί µικροεπεξεργαστή ως κεντρική µονάδα επεξεργασίας. Μικροϋπολογιστικό σύστηµα Bλέπε µικροϋπολογιστής. Μνήµη µόνο ανάγνωσης (Read Only Memory – ROM) Mνήµη, τα περιεχόµενα της οποίας δεν µπορούν να διαγραφούν ή να αλλαχθούν. Μνήµη τυχαίας προσπέλασης (Random Access Memory – RAM) Mνήµη, στην οποία µπορούµε να κάνουµε τόσο ανάγνωση όσο και εγγραφή δεδοµένων. Μονάδα ελέγχου (control unit) Tµήµα του µικροεπεξεργαστή, το οποίο παρέχει λειτουργίες χρονισµού, αποκωδικοποίησης εντολών και ενεργοποίησης/απενεργοποίησης των µονάδων του µικροεπεξεργαστή.
°§ø™™∞ƒπ
Ολοκληρωµένο κύκλωµα (integrated circuit – IC) Ένα κοµµάτι ηµιαγωγού (π.χ. πυριτίου), τοποθετηµένο σε πλαστικό ή κεραµικό περίβληµα, στο οποίο έχει δηµιουργηθεί, µε τρανσίστορς, διόδους, αντιστάσεις και πυκνωτές, το επιθυµητό κύκλωµα. Πρόγραµµα (program) Ένα σύνολο από εντολές που υλοποιούν µια επιθυµητή λειτουργία. Σήµα χρονισµού (clock signal) Σήµα που χρησιµοποιείται για το χρονισµό των διαφόρων λειτουργιών του υπολογιστικού συστήµατος. Συνήθως, παράγεται µε τη βοήθεια κρυσταλλικών ταλαντωτών. Σηµαία ισοτιµίας (parity flag) Σηµαία κατάστασης που ορίζει άρτια ή περιττή ισοτιµία των δυαδικών ψηφίων που βρίσκονται αποθηκευµένα στο συσσωρευτή. Σηµαία κατάστασης (status flag) Bλέπε διακόπτης κατάστασης Σηµαία κρατούµενου (carry flag) Σηµαία κατάστασης, που υποδηλώνει τη δηµιουργία κρατούµενου κατά την εκτέλεση της τελευταίας πράξης. Σηµαία µηδενικού αποτελέσµατος (zero flag) Σηµαία κατάστασης, που δείχνει εάν το αποτέλεσµα της τελευταίας πράξης ήταν µηδενικό ή όχι. Σηµαία προσήµου (sign flag) Σηµαία κατάστασης, που υποδηλώνει το πρόσηµο του αποτελέσµατος της τελευταίας πράξης. Σηµαία υπερχείλισης (overflow flag) Σηµαία κατάστασης, που υποδηλώνει τη δηµιουργία υπερχείλισης κατά την εκτέλεση της τελευταίας πράξης. Συνεπεξεργαστής (coprocessor) Kεντρική µονάδα επεξεργασίας, η οποία έχει δηµιουργηθεί για να εκτελεί ειδικές λειτουργίες, όπως π.χ. πράξεις αριθµητικής κινητής υποδιαστολής.
213
M π ∫ ƒ √ ∂ ¶ ∂ • ∂ ƒ °∞ ™ ∆ ∂ ™
214
Ο ρόλος του είναι να βοηθά την κεντρική µονάδα επεξεργασίας. Ο 8087 είναι ο πιο δηµοφιλής συνεπεξεργαστής και συνεργάζεται µε τον 8086. Συσσωρευτής (accumulator) Kαταχωρητής της αριθµητικής και λογικής µονάδας, στον οποίο αποθηκεύεται είτε ένας από τους αριθµούς που απαιτείται για την πράξη είτε το αποτέλεσµα της πράξης. Σχετική διευθυνσιοδότηση (relative addressing) Tρόπος προσπέλασης, στον οποίο η ενεργή διεύθυνση προκύπτει από την πρόσθεση της τιµής του εντέλου της εντολής στο περιεχόµενο του µετρητή προγράµµατος. Χρησιµοποιείται στις εντολές διακλάδωσης. Τρόποι προσπέλασης (addressing modes) Oι διαφορετικοί τρόποι, που χρησιµοποιεί ο µικροεπεξεργαστής, για να δηλώσει τη θέση των δεδοµένων που απαιτούνται για την εκτέλεση µίας εντολής. Υπονοούµενη διευθυνσιοδότηση (implied or register addressing) Tρόπος προσπέλασης, στον οποίο η θέση των δεδοµένων προσδιορίζεται από τον κωδικό λειτουργίας της εντολής.