Αρχιτεκτονική-Ι Ενότητα 4: Το Προγραμματιστικό Μοντέλο του 8086 Ιωάννης Έλληνας Τμήμα Η/ΥΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοποί ενότητας Στην ενότητα αυτή εξετάζεται το προγραμματιστικό μοντέλο του μικροεπεξεργαστή 8086 της Intel, η εσωτερική του αρχιτεκτονική και οι βασικές λειτουργίες του επεξεργαστή. 4
Περιεχόμενα ενότητας Επεξεργαστής 8086 Οργάνωση συστήματος Τι είναι η διεύθυνση Πρόσβαση στη μνήμη Οργάνωση μνήμης Διαχείριση μνήμης Κατάτμηση μνήμης Διευθυνσιοδότηση Τι είναι ο σωρός Λογική και Φυσική Διεύθυνση Υπολογισμός Φυσικής Διεύθυνσης Παραδείγματα Εσωτερική οργάνωση Εσωτερική οργάνωση του 8086 Λειτουργία καταχωρητών τμημάτων Μονάδα εκτέλεσης Καταχωρητής σημαιών Λειτουργίες CPU Παράδειγμα Ερωτήσεις & Απαντήσεις 5
Ο Επεξεργαστής
8086 Επεξεργαστής των 16 bits/ 2 bytes (Ρ1) (1) Χαρακτηριστικά Εμφάνιση το Τροφοδοσία 5V. Ρολόϊ έως 4÷10 MHz. Data bus 16 bits/2 bytes. Address bus 20 bits. Μνήμη μέχρι 1 ΜΒ. Μνήμη άρτιων και περιττών διευθύνσεων (2 Χ 512 ΚΒ). Χρόνος προσπέλασης λέξης (2 bytes) σε ένα κύκλο μνήμης (μηχανής) εφ’ όσον η λέξη είναι σε άρτια διεύθυνση ή σε δυο κύκλους εφ’ όσον είναι σε περιττή διεύθυνση (ελάττωση της ταχύτητας). Κύκλος διαδρόμου (bus cycle) ίσος με 4 περιόδους ρολογιού. Ταχύτητα διαμεταγωγής (10ΜΗz/4)X2=5MB/s (40 Mbps) DIP-40 pins
Χαρακτηριστικά Μέσος χρόνος εκτέλεσης εντολής 12 Τ. Κατάτμηση μνήμης. Χρήση 640 ΚΒ για προγράμματα. Δέσμευση των 384 ΚΒ για το BIOS. 6-byte ουρά εντολών (instruction queue), που γεμίζει όταν ο επεξεργαστής εκτελεί άεργους κύκλους (idle) και υπάρχει χώρος 2 bytes στην ουρά. Τεχνική σωλήνωσης (pipelining-επικάλυψη χρόνου ανάκλησης και εκτέλεσης των εντολών). Binary/Decimal arithmetic με 8-bit ή 16-bit signed/unsigned αριθμούς (πολλ/σμός και διαίρεση). Ολοκληρωμένο 40 pins σε συσκευασία DIP (Dual In Package) DIP-40 pins 8086 Επεξεργαστής των 16 bits/ 2 bytes (Ρ1) (1)
8086 Ακροδέκτες (1) Πολυπλεγμένες γραμμές διεύθυνσης/δεδομένων (Time multiplexed address/data lines) Αποπλέκονται με τη βοήθεια του σήματος ελέγχου ALE στην πρώτη περίοδο Τ1. Κατά την Τ1 φέρουν διεύθυνση. Κατά τις Τ2, Τ3, Τ4 φέρουν δεδομένα. Non Maskable Interrupt (ΙΝΤ 2) : Οδηγεί το πρόγραμμα στις θέσεις 00008÷0000Β Η, όπου πρέπει να ευρίσκονται οι τιμές του CS και του IP για οδήγηση του προγράμματος στην κατάλληλη ΥΕΔ. Maskable Interrupt (σημαία ΙΕ=1) : Δίδεται ένα byte n κατά τη διάρκεια του σήματος /INTA και οδηγεί το πρόγραμμα στις θέσεις 4×n÷4×n+3 Η, όπου πρέπει να ευρίσκονται οι τιμές του CS και του IP για οδήγηση του προγράμματος στην κατάλληλη ΥΕΔ GND AD 14 AD 13 AD 12 AD 11 AD 10 AD 9 AD 8 AD 7 AD 6 AD 5 AD 4 AD 3 AD 2 AD 1 AD 0 NMI INTR CLK GND
8086 Ακροδέκτες (2) Κατά τη διάρκεια του Τ 1 είναι διευθύνσεις, ενώ κατά τη διάρκεια των Τ 2, Τ 3, Τ 4 είναι δείκτες κατάστασης (status indicators). Το BHE (Bus High Enable) γίνεται latch με το σήμα ALE και χρησιμοποιείται με το Α 0 για να καθορίσουν τον τρόπο πρόσβασης στη μνήμη. min mode: ο 8086 χρειάζεται ένα latch και ένα κύκλωμα ρολογιού για να γίνει cpu με δίαυλο ελέγχου όμοιο με τον max mode: ο 8086 συνεργάζεται με το μαθηματικό συνεπεξεργαστή 8087 και τον περιφερειακό επεξεργαστή Ι/Ο 8089 καθώς επίσης και με το 8288 (bus controller), το οποίο δημιουργεί τα σήματα ελέγχου για μνήμες και πόρτες. 10
8086 Ακροδέκτες (3) 11 Εισάγεται περίοδος αναμονής εάν η είσοδος αυτή είναι high κατά την εκτέλεση της εντολής WAIT. Επανεκκίνηση και μετάβαση του προγράμματος στη διεύθυνση FFFF0 H. Συγχρονίζει τον 8086 με αργά περιφερειακά. Εισάγει περίοδο αναμονής εάν κατά την Τ 2 ευρεθεί low V cc AD 15 A 16 /S 3 A 17 /S 4 A 18 /S 5 A 19 /S 6 BHE/S 7 MN/MX RD MN/MX=1MN/MX=0 HOLD RQ/GT0 HLDA RQ/GT1 WR LOCK M/IO S2 DT/R S1 DEN S0 ALE QS0 INTA QS1 TEST READY RESET
Οργάνωση συστήματος Διάδρομοι (Buses ) Διάδρομος διευθύνσεων: Ομάδα γραμμών μέσω των οποίων ο μΕ δίνει τη διεύθυνση των γραμμών που θα μετακινηθεί στην μνήμη ή στην πόρτα : 20 bit – εύρος διαδρόμου διευθύνσεων 2 20 = bytes ή 1 ΜΒ Διάδρομος δεδομένων: Ομάδα γραμμών μέσω των οποίων διακινούνται τα δεδομένα μεταξύ του μΕ και των περιφερειακών συσκευών 8086 : 16 bit – εύρος διαδρόμου δεδομένων Διάδρομος ελέγχου: Ομάδα γραμμών μέσω των οποίων εξασφαλίζεται ο συγχρονισμός των διαφόρων λειτουργιών του μικροϋπολογιστικού συστήματος 12
Τι είναι η διεύθυνση; 13 Η μνήμη ενός μικροϋπολογιστικού συστήματος χωρίζεται σε μικρά τμήματα του ενός byte Κάθε byte έχει μια ξεχωριστή ταυτότητα που ονομάζεται διεύθυνση Οι διευθύνσεις είναι αριθμητικές τιμές μήκους σε bit όσο το address bus (δίαυλος διευθύνσεων)
Πρόσβαση στη μνήμη 14 Για να έχουμε πρόσβαση σε ένα ή περισσότερα bytes, πρέπει να γνωρίζουμε τις διευθύνσεις τους στο χάρτη μνήμης Στον 80x86 τηρείται η Little Endian μορφή αποθήκευσης δεδομένων. Τα χαμηλά bytes αποθηκεύονται σε χαμηλές (αριθμητικά) διευθύνσεις.
Οργάνωση μνήμης (1) 15
Οργάνωση μνήμης (2) 8086: Ο πρώτος επεξεργαστής που δεν θεωρεί τη μνήμη σαν ένα ενιαίο σύνολο! (γραμμική διευθυνσιοδότηση) γιατί? Κατάτμηση μνήμης: Κάθε στιγμή υπάρχουν 4 ενεργά τμήματα μνήμης, τα τμήματα: κώδικα (CS), σωρού (SS), 2 τμήματα δεδομένων (DS – ES) Μέγιστη χωρητικότητα τμήματος: 64 Kbytes Καταχωρητές τμημάτων (16-bit): Ένας καταχωρητής ορίζει την αρχή κάθε τμήματος και δίνει την αρχική φυσική διεύθυνση κάθε τμήματος (CS, DS, ES, SS) 16
Οργάνωση μνήμης (3) Γενικοί καταχωρητές (16-bit): Καταχωρητές γενικής χρήσης (AX, BX, CX, DX, BP, IP, SP, SI, DI) Λογική διεύθυνση (16-bit): Η διεύθυνση μέσα στον επεξεργαστή. Ορίζεται: από έναν καταχωρητή τμήματος και ένα γενικό καταχωρητή π.χ. (τμήμα κώδικα : καταχωρητή προγράμματος) ή (CS:IP) 17
Διαχείριση μνήμης στον 8086 Ο 80x86 είναι επεξεργαστής των 16bits με address bus μήκους 20bits – Διευθυνσιοδοτεί 1Mbyte μνήμης (2 20 bytes) Πρόβλημα Ο καταχωρητής διεύθυνσης επόμενης εντολής (IP) έχει μήκος 16bits και δεν μπορεί να δει ολόκληρη τη μνήμη που προσφέρει το address bus Λύση – Η μνήμη διασπάται σε πολλαπλά λογικά τμήματα (segments) των 64kBytes – Κάθε τμήμα μπορεί να ξεκινά (βάση τμήματος) ανά 16 θέσεις στη φυσική διεύθυνση της μνήμης (20bit) και να επιτρέπει στον επεξεργαστή να δει τις επόμενες 64k θέσεις που ακολουθούν 18
Κατάτμηση μνήμης Μετατοπίσεις μέσα στο τμήμα ή offset CS=A308 h – DS=2000 h – ES= C10A h – SS=C90A h 19
Διευθυνσιοδότηση μνήμης – μετατόπιση Σωστό MOV AX,[BX] ή [SI] ή [BP] ή [DI] Σωστό MOV AX, [BX+SI] ή [BP+DI] ή [BX+DI] ή [BP+SI] Σωστό MOV AX, [BX+SI+128] ή [BP+DI-3] ή [BX+DI+7] Λάθος MOV [BX+BP],AX ή MOV AX,[SI+DI] ή MOV AX, [DX] ή [CX] 20 BX BP SI DI disp 8 ή 16 bit
Τι είναι ο σωρός Περιοχή μνήμης για προσωρινή αποθήκευση δεδομένων. Το τμήμα σωρού δημιουργείται με τη βοήθεια του SS και έχει σαν δείκτη τον SP Λειτουργεί προς μικρότερες διευθύνσεις γι’ αυτό συνήθως θέτουμε SP=0000h Λειτουργεί με τις εντολές: PUSH, POP, CALL, RET, INT, IRET Δείκτης στο σωρό μπορεί να είναι ο καταχωρητής BP π.χ. AX=1234 h, SP=0000 h και εκτελείται η: PUSH AX 21 CS SP-1 Offset FFFF h 12 h34 h AHAL 0000 h SP SP-2=FFFE h SP-1=FFFF h 34 h 12 h
Λογική σε Φυσική διεύθυνση 22
Υπολογισμός φυσικής διεύθυνσης 23 IP=5678h CS=1234h 05678h12340h 179B8h 5678h1234h
Παραδείγματα 24 MOV AX,[1A5E0h];
8086 Εσωτερική οργάνωση (1) 25 DATA POINTER & INDEX REGS (8 WORDS) SEGMENT REGS & INSTRUCTION POINTER (5 WORDS) 16 BIT ALU FLAGS BUS INTERFASCE UNIT 6-BYTE INSTRUCTION QUEUE CONTROL & TIMING EXECUTION UNIT (EU)BUS INTERFACE UNIT (BIU) REGISTER FILE RELOCATION REGISTER FILE /TEST INTR NMI /RG-/GT 0,1 HOLD HLDA CLK RESET READY MN-/MX GND, GND, V CC /LOCK QS 0, QS 1 /S 2, /S 1, /S 0 /BHE or S 7 A 16 -A 19 or S 3 -S 6 AD 0 -AD 15 /INTA, /RD, /WR DT-/R, /DEN, ALE Διάδρομοι και εσωτερικοί καταχωρητές των 16 bits Address Bus=20 bits Data Bus=16 bits Ουρά εντολών βάθους 6 bytes
8086 Εσωτερική οργάνωση (2) Προσαρμογή Μνήμης 26 ES 16 CS 16 SS 16 DS 16 IP 16 SP 16 BP SI DI DHDL CHCL BHBL AH 8 AL ΣΥΣΤΗΜΑ ΕΛΕΓΧΟΥ ΟΡΙΣΜΑΤΑ ( OPERANDS ) ΣΗΜΑΙΕΣ (FLAGS) Σ EU BIU A-BUS C-BUS B-BUS 6-BYTES ΟΥΡΑ ΡΟΗΣ ΕΝΤΟΛΩΝ ALU
Εσωτερική οργάνωση του
Λειτουργία καταχωρητών τμημάτων 28
Μονάδα εκτέλεσης (EU) 29
Καταχωρητής σημαιών 30
Σημασία του καταχωρητή σημαιών (1) Zero Flag – Γίνεται 1 όταν το αποτέλεσμα μιας αριθμητικής ή λογικής πράξης είναι μηδέν. mov al,01h dec al; al=0, ZF=1 mov al,0h; al=00h or al,0ffh; al=FFh, ZF=0 xor al,0ffh; al=00h, ZF= 31
Σημασία του καταχωρητή σημαιών (2) Carry Flag – Γίνεται 1 όταν υπάρχει κρατούμενο από πρόσθεση ή δανεικό από αφαίρεση (υπερχείλιση του καταχωρητή) mov ax,0ffffh;al=FFFFh add ax,1;ax=ax+1 ax=0000h, CF=1 clc;CF=0 – clear carry flag mov al,2 mov bl,3 sub al,bl;al=2-3= = (-1) CF=1, SF=1 32
Σημασία του καταχωρητή σημαιών (3) Sign Flag – Γίνεται 1 ή 0 όταν το σημαντικότερο bit του αποτελέσματος είναι 1 ή 0 mov al,7fh add al,01h; al=80h ( ), SF=1, OF=1 Overflow Flag – Γίνεται 1 όταν υπάρχει υπερχείλιση των 7 λιγότερο σημαντικών bits και προκύπτει αριθμός με αντίθετο πρόσημο (π.χ. από την πρόσθεση 2 θετικών προκύπτει αρνητικός ή από την πρόσθεση 2 αρνητικών προκύπτει θετικός) mov al,7fh mov bl,3 add al,bl;al= = CF=0, SF=1, OF=1 mov al,0ffh mov bl,80h add al,bl;al= = CF=1, SF=0, OF=1 33
Σημασία του καταχωρητή σημαιών (4) Parity Flag – Γίνεται 1 όταν στο αποτέλεσμα υπάρχει άρτιος αριθμός μονάδων (άρτια ισοτιμία) και 0 όταν υπάρχει περιττός αριθμός μονάδων (περιττή ισοτιμία) mov al,7fh add al,01h; al=80h ( ), PF=0 Auxiliary Flag – Γίνεται 1 όταν υπάρχει κρατούμενο στα 4 λιγότερο σημαντικά bits mov al,7fh mov bl,01 add al,bl;al= = CF=0, SF=1, OF=1, AF=1 Direction Flag – Χρησιμοποιείται με τις εντολής διαχείρισης συμβολοσειρών (movsb/movsw, κλπ) Γίνεται 0 με την εντολή CLD και σημαίνει αύξουσες διευθύνσεις ή γίνεται 1 με την εντολή STD και σημαίνει φθίνουσες διευθύνσεις. 34
Να θυμόμαστε το εσωτερικό του 8086 ! 35
Λειτουργίες CPU ΣΗΜΕΙΩΣΗ: Κύκλος μηχανής είναι ο χρόνος που παίρνει την CPU για να εκτελέσει μια από τις προαναφερθείσες λειτουργίες, οι οποίες αφορούν την επικοινωνία της με ένα εξωτερικό περιφερειακό (μνήμη ή πόρτα). Η εσωτερική λειτουργία της CPU (π.χ. η τοποθέτηση ενός δεδομένου σε κάποιον καταχωρητή, η πρόσθεση κλπ) δεν συνιστά κύκλο μηχανής. 36 Κύκλος εντολής = Χρόνος εκτέλεσης μιας εντολής Κύκλος μηχανής = Χρόνος εκτέλεσης μιας λειτουργίας της CPU Κατάσταση (State) = Μια περίοδος ρολογιού Κύκλος μηχανής Ανάκληση εντολής (Fetch) Ανάγνωση δεδομένων από μνήμη (Read Memory) Εγγραφή δεδομένων σε μνήμη (Write Memory) Ανάγνωση δεδομένων από πόρτα (Read I/O) Εγγραφή δεδομένων σε πόρτα (Write I/O) 4T
Παράδειγμα 37 A3 MOV [1000h],AX 00 10
Ερωτήσεις και Απαντήσεις 38
Βιβλιογραφία 1.“ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ-Ο επεξεργαστής 8086”, Ι. Ν. Έλληνας, Π. Δ. Κεντερλής, ISBN: , Αθήνα Γ. Δ. Κόγιας, “Αρχιτεκτονική, Οργάνωση και Προγραμματισμός μικροϋπολογιστών”, Σύγχρονη Εκδοτική. 3.Κ. Ζ. Πεκμεστζή, “Συστήματα μικροϋπολογιστών”, Εκδόσεις Συμμετρία. 39
Τέλος Ενότητας