Αρχιτεκτονική Ιeclass.teipir.gr/openeclass/modules/document/file.php... ·...
Transcript of Αρχιτεκτονική Ιeclass.teipir.gr/openeclass/modules/document/file.php... ·...
Αρχιτεκτονική-Ι
Ενότητα 4: Το Προγραμματιστικό Μοντέλο του 8086
Ιωάννης Έλληνας
Τμήμα Η/ΥΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα
Άδειες Χρήσης
• Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
• Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
2
Χρηματοδότηση • Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια
του εκπαιδευτικού έργου του διδάσκοντα.
• Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού.
• Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
3
Σκοποί ενότητας
• Στην ενότητα αυτή εξετάζεται το
προγραμματιστικό μοντέλο του
μικροεπεξεργαστή 8086 της Intel, η
εσωτερική του αρχιτεκτονική και οι βασικές
λειτουργίες του επεξεργαστή.
4
Περιεχόμενα ενότητας
• Επεξεργαστής 8086 • Οργάνωση συστήματος • Τι είναι η διεύθυνση • Πρόσβαση στη μνήμη • Οργάνωση μνήμης • Διαχείριση μνήμης • Κατάτμηση μνήμης • Διευθυνσιοδότηση • Τι είναι ο σωρός • Λογική και Φυσική Διεύθυνση • Υπολογισμός Φυσικής
Διεύθυνσης • Παραδείγματα
• Εσωτερική οργάνωση • Εσωτερική οργάνωση του
8086 • Λειτουργία καταχωρητών
τμημάτων • Μονάδα εκτέλεσης • Καταχωρητής σημαιών • Λειτουργίες CPU • Παράδειγμα • Ερωτήσεις & Απαντήσεις
5
Ο Επεξεργαστής 8086
6
8086 Επεξεργαστής των 16 bits/ 2 bytes (Ρ1) (1)
Χαρακτηριστικά
• Εμφάνιση το 1978.
• Τροφοδοσία 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).
7
8086
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).
8
8086
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 για οδήγηση του
προγράμματος στην κατάλληλη ΥΕΔ.
9
8086
GND
AD14
AD13
AD12
AD11
AD10
AD9
AD8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
8086 Ακροδέκτες (2)
• Κατά τη διάρκεια του Τ1 είναι διευθύνσεις, ενώ κατά τη διάρκεια των Τ2, Τ3, Τ4 είναι δείκτες κατάστασης (status indicators).
• Το BHE (Bus High Enable) γίνεται latch με το σήμα ALE και χρησιμοποιείται με το Α0 για να καθορίσουν τον τρόπο πρόσβασης στη μνήμη.
• min mode: ο 8086 χρειάζεται ένα latch και ένα κύκλωμα ρολογιού για να γίνει cpu με δίαυλο ελέγχου όμοιο με τον 8085.
• max mode: ο 8086 συνεργάζεται με το μαθηματικό συνεπεξεργαστή 8087 και τον περιφερειακό επεξεργαστή Ι/Ο 8089 καθώς επίσης και με το 8288 (bus controller), το οποίο δημιουργεί τα σήματα ελέγχου για μνήμες και πόρτες.
10
8086 Ακροδέκτες (3)
11
Εισάγεται περίοδος αναμονής εάν η είσοδος αυτή είναι high κατά την εκτέλεση της εντολής WAIT.
Επανεκκίνηση και μετάβαση του προγράμματος στη διεύθυνση FFFF0 H.
Συγχρονίζει τον 8086 με αργά περιφερειακά. Εισάγει περίοδο αναμονής εάν κατά την Τ2 ευρεθεί low.
8086
Vcc
AD15
A16/S3
A17/S4
A18/S5
A19/S6
BHE/S7
MN/MX
RD
MN/MX=1 MN/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)
Διάδρομος διευθύνσεων: Ομάδα γραμμών μέσω των οποίων ο μΕ δίνει τη διεύθυνση των γραμμών που θα μετακινηθεί στην μνήμη ή στην πόρτα.
• 8086 : 20 bit – εύρος διαδρόμου διευθύνσεων 220=1048576 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 μνήμης (220bytes)
Πρόβλημα
Ο καταχωρητής διεύθυνσης επόμενης εντολής (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 h 34 h
AH AL
0000 h SP
SP-2=FFFE h SP-1=FFFF h
34 h 12 h
Λογική σε Φυσική διεύθυνση
22
Υπολογισμός φυσικής διεύθυνσης
23
IP=5678h
CS=1234h
05678h 12340h
179B8h
5678h 1234h
Παραδείγματα
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)
4
16
3
3
2 2
3
REGISTER FILE RELOCATION
REGISTER FILE
/TEST
INTR NMI
/RG-/GT0,1
HOLD HLDA
CLK RESET READY MN-/MX GND, GND, VCC
/LOCK
QS0, QS1
/S2, /S1, /S0
/BHE or S7
A16-A19 or S3-S6
AD0-AD15
/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
DH DL CH CL BH BL
AH 8 AL 8
6 5 4 3 2 1
ΣΥΣΤΗΜΑ ΕΛΕΓΧΟΥ
ΟΡΙΣΜΑΤΑ (OPERANDS)
ΣΗΜΑΙΕΣ (FLAGS)
Σ
EU
BIU
A-BUS
C-BUS
B-BUS
6-BYTES
ΟΥΡΑ ΡΟΗΣ
ΕΝΤΟΛΩΝ
ALU
Εσωτερική οργάνωση του 8086
27
Λειτουργία καταχωρητών τμημάτων
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=0000 0010+1111 1101=1111 1111 (-1) CF=1, SF=1
32
Σημασία του καταχωρητή σημαιών (3)
Sign Flag – Γίνεται 1 ή 0 όταν το σημαντικότερο bit του αποτελέσματος είναι 1 ή 0 mov al,7fh add al,01h ; al=80h (1000 0000), SF=1, OF=1 Overflow Flag – Γίνεται 1 όταν υπάρχει υπερχείλιση των 7 λιγότερο σημαντικών bits και προκύπτει αριθμός με αντίθετο πρόσημο (π.χ. από την πρόσθεση 2 θετικών προκύπτει αρνητικός ή από την πρόσθεση 2 αρνητικών προκύπτει θετικός) mov al,7fh mov bl,3
add al,bl ;al=0111 1111+0000 0011=1000 0010 CF=0, SF=1, OF=1 mov al,0ffh mov bl,80h
add al,bl ;al=1111 1111+1000 0000=0111 1111 CF=1, SF=0, OF=1
33
Σημασία του καταχωρητή σημαιών (4)
Parity Flag – Γίνεται 1 όταν στο αποτέλεσμα υπάρχει άρτιος αριθμός μονάδων (άρτια ισοτιμία) και 0 όταν υπάρχει περιττός αριθμός μονάδων (περιττή ισοτιμία)
mov al,7fh
add al,01h ; al=80h (1000 0000), PF=0
Auxiliary Flag – Γίνεται 1 όταν υπάρχει κρατούμενο στα 4 λιγότερο σημαντικά bits
mov al,7fh
mov bl,01
add al,bl ;al=0111 1111+0000 0001=1000 0000 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
4T
4T
4T
4T
Παράδειγμα
37
A3 MOV [1000h],AX 00 10
Ερωτήσεις και Απαντήσεις
38
Βιβλιογραφία
1. “ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ-Ο επεξεργαστής 8086”, Ι. Ν. Έλληνας, Π. Δ. Κεντερλής, ISBN: 978-960-930663-8, Αθήνα 2008.
2. Γ. Δ. Κόγιας, “Αρχιτεκτονική, Οργάνωση και Προγραμματισμός μικροϋπολογιστών”, Σύγχρονη Εκδοτική.
3. Κ. Ζ. Πεκμεστζή, “Συστήματα μικροϋπολογιστών”, Εκδόσεις Συμμετρία.
39
Τέλος Ενότητας