Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 2 Addressing

Σχετικά έγγραφα
Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 1 Hello World

Σημειώσεις για τον 80x86

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Προηγμένοι Μικροεπεξεργαστές. Protected Mode & Multitasking

Καταχωρητές & τμήματα μνήμης του Ματθές Δημήτριος Καθηγητής Πληροφορικής

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Αρχιτεκτονική Υπολογιστών

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Αρχιτεκτονική Υπολογιστών

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

Στοιχεία από Assembly Γιώργος Μανής

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 4: Το Προγραμματιστικό Μοντέλο του 8086

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

Ο 8086 µπορεί να θεωρηθεί ότι αποτελείται από δύο τµήµατα επεξεργαστές, όπως φαίνεται και στο σχήµα 1, οι οποίοι είναι:

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

0100: MAR ADR; wait;mdr DB; SCR L DH+MDR+CY

Προηγμένοι Μικροεπεξεργαστές. Paging & Segmentation

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Εντολές γλώσσας μηχανής

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 2 Οργάνωση μνήμης Καταχωρητές του MIPS Εντολές του MIPS 1

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86

Επιμέλεια: ρ. Ν. Σγούρος ρ. Ι. Κονταξάκης

Ποια πρόταση είναι αληθής για τον Μ/Ε 8088: Είναι Μ/Ε 16bit, LSI, 40 pins, 20 γραμμές διευθύνσεων, 8 γραμμές δεδομένων

Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Αρχιτεκτονική Υπολογιστών

ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ

Αρχιτεκτονική Υπολογιστών

Εικονική Μνήμη (Virtual Μemory)

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Εισαγωγή στην πληροφορική -4

Αρχιτεκτονική υπολογιστών

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος

Αρχιτεκτονική Υπολογιστών

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Αρχιτεκτονική Υπολογιστών

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 3: Προσπελάσεις Μνήμης στον MIPS. Μανόλης Γ.Η. Κατεβαίνης

Αρχιτεκτονική Υπολογιστών

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Αρχιτεκτονική Υπολογιστών

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

Οργάνωση Υπολογιστών (Ι)

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή

Αρχιτεκτονική-Ι Ενότητα 5:

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Αναπαράσταση Μη Αριθμητικών Δεδομένων

! Δεδομένα: ανεξάρτητα από τύπο και προέλευση, στον υπολογιστή υπάρχουν σε μία μορφή: 0 και 1

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Intel x86 ISA. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ)

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονικές Συνόλου Εντολών

Συστήματα Μικροϋπολογιστών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

«ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

Λειτουργικά Συστήματα (ΗΥ222)

Τέτοιες λειτουργίες γίνονται διαμέσου του

Εικονική Μνήμη (Virtual Μemory)

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

-Επεξεργαστής: datapath (δίοδος δεδοµένων) (1) και control (2) -Μνήµη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 6 ο και 7 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Αρχιτεκτονική-ΙI Ενότητα 6 :

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Αρχιτεκτονική Υπολογιστών

Εντολές του MIPS (2)

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Αρχιτεκτονική υπολογιστών

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Πρόχειρες Σημειώσεις. Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

Αρχιτεκτονική Υπολογιστών

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 2. Εντολές : Η γλώσσα του υπολογιστή

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Αρχιτεκτονική Υπολογιστών

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Κεντρική Μονάδα Επεξεργασίας

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ

1. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ Μ/Ε ΕΣΩΤΕΡΙΚΟΙ ΚΑΤΑΧΩΡΗΤΕΣ

Transcript:

Προηγμένοι Μικροεπεξεργαστές Φροντιστήριο 2 Addressing

Roadmap Το μοντέλο μνήμης των x86 Γιατί τόσο περίπλοκο; Δομή Εξέλιξη Μέθοδοι διευθυνσιοδότησης Εντολές προσπέλασης μνήμης

Μοντέλο Μνήμης Πριν τους 80386 η x86 αρχιτεκτονική ήταν 16 bit υπεραρκετά για τα PCs της εποχής Εκτός από την διευθυνσιοδότηση 16 bit διευθυνσιοδοτούν άμεσα μόνο 64ΚΒ μνήμης Πολύ λίγο για desktop συστήματα

Μοντέλο Μνήμης Στόχος της intel: Διαθέσιμη μνήμη 1MB Διευθύνσεις των 20 bit Προφανείς επιλογές: Καθαρή 32 bit αρχιτεκτονική Το 1978 αυτή η κίνηση θα ήταν ασύμφορη 8085-like διευθυνσιοδότηση: 2 16-bit registers σχηματίζουν μία 32 bit διεύθυνση 32-bit διεύθυνσης ήταν υπερβολικά πολλά Ο τρόπος διευθυνσιοδότησης του 8085 είναι δύστροπος Λύση(?): πιο περίπλοκο μοντέλο μνήμης

Μοντέλο Μνήμης Η διεύθυνση είναι 20 bits Μνήμη 00000h fffffh

Μοντέλο Μνήμης Η διεύθυνση είναι 20 bits 00000h Μνήμη Seg X 0000h Σχηματίζεται από δύο 16 bit κομμάτια 16*X Seg X 1. Το segment επιλέγει 64KB της μνήμης από το συνολικό 1MB ffffh fffffh

Μοντέλο Μνήμης Η διεύθυνση είναι 20 bits 00000h Μνήμη Seg X 0000h Σχηματίζεται από δύο 16 bit κομμάτια 16*X Seg X offset 1. Το segment επιλέγει 64KB της μνήμης από το συνολικό 1MB 2. To offset επιλέγει μία διεύθυνση μέσα στον χώρο του segment ffffh fffffh

Μοντέλο Μνήμης Η διεύθυνση είναι 20 bits 00000h Μνήμη Seg X 0000h Σχηματίζεται από δύο 16 bit κομμάτια 16*X Seg X offset 1. Το segment επιλέγει 64KB της μνήμης από το συνολικό 1MB 2. To offset επιλέγει μία διεύθυνση μέσα στον χώρο του segment ffffh Η πλήρης διεύθυνση συμβολίζεται segment : offset fffffh

Segment Registers Πως δίνουμε τους δύο 16 bit αριθμούς με μία εντολή; Το offset δίνεται κανονικά από την ίδια την εντολή Tο segment βρίσκεται οπωσδήποτε σε έναν segment register 8086 80286: Code Segment (CS) Data Segment (DS) Extra Segment (ES) Stack Segment (SS) 80386 Pentium4: Δύο επιπλέον registers, οι GS και FS

Segment Registers Δεν είναι όλοι οι segment registers ισοδύναμοι Κάθε ένας χρησιμοποιείται εξ' ορισμού για κάποιους τύπους προσπελάσεων Οι default χρήσεις τους: CS: IP/EIP (Ανάγνωση εντολών) SS: SP/ESP και BP/EBP (χρήση στοίβας) ES: string εντολές DS: Όλες οι άλλες προσπελάσεις μνήμης

Segment Registers Στους πρώτους x86 επιτρεπόταν μόνο η default χρήση των segment registers Όχι πια: Κάθε συνδυασμός segment και offset επιτρέπεται Αν χρησιμοποιούμε έναν segment register για την default χρήση του, τότε μπορούμε να τον παραλήψουμε στην εντολή Πχ mov ax, [1000h] αντί για mov ax, ds:[1000h] Διαφορετικά επιβάλλεται να τον αναφέρουμε

Μοντέλο μνήμης - Πλεονεκτήματα Μεγάλο address space με μικρό overhead Οι διευθύνσεις στον κώδικα είναι μόνο offset (16-bit) Οι μονάδες του επεξεργαστή έχουν πλάτος 16-bit Μόνο τα τελευταία στάδια του address calculation έχουν πλάτος 20-bit

Μοντέλο μνήμης - Πλεονεκτήματα Multiprogramming Jumps και moves μπορούν να αναφέρονται μόνο στο offset Το πρόγραμμα δεν χρειάζεται να ξέρει που θα τοποθετηθεί στην μνήμη Segment = επιλογή του OS στο runtime Μπορούμε να φορτώσουμε πολλαπλά προγράμματα στην μνήμη και να τα εκτελέσουμε

Μοντέλο μνήμης - Μειονεκτήματα Τα προγράμματα μπορούν να προσπελάσουν άμεσα μόνο 4 segments των 64KB 256KB Δύσκολο να το διαχειριστεί αποδοτικά μία γλώσσα υψηλού επιπέδου Τα 20 bits πολύ γρήγορα αποδείχθηκαν λίγα

Εξέλιξη 80386 Pentium 4: 32 bit καταχωρητές Μόνο με το offset μπορούμε να προσπελάσουμε όλη την μνήμη Δεν χρειαζόμαστε πραγματικά τα segments Μόνο για συμβατότητα προς τα πίσω

Εξέλιξη Core 2 Μέλλον Οι segment registers υπάρχουν ακόμη Αλλά είναι γειωμένοι στο μηδέν Τα segments ξεκινούν από το 0x000 και καλύπτουν όλη την μνήμη Πρακτικά το segmentation της μνήμης δεν υπάρχει πια

Μέθοδοι Διευθυνσιοδότησης Γενικό format μίας προσπέλασης μνήμης: INSTRUCTION destination,source 4 διαφορετικοί τρόποι να ορίσουμε destination & source (addressing modes) Register Addressing Immediate Addressing Direct Addressing Indirect Addressing

Register Addressing Το όρισμα δείχνει σε κάποιον καταχωρητή (8, 16 ή 32 bit) Όρισμα bx Καταχωρητής bx data Διευθυνσιοδότηση Δεδομένα

Register Addressing Παραδείγματα mov ah,bl 8bit μεταφορά mov ds,ax Φόρτωση seg register mov edx,ebp 32bit μεταφορά

Register Addressing Απαγορεύονται: Μίξη καταχωρητών διαφορετικών μεγεθών Για τους segment registers Source και destination με segment registers Destination ο CS Άμεση μεταφορά μεταξύ segment register και μνήμης

Immediate Addressing Το όρισμα (πάντα στο source) είναι σταθερή τιμή που δίνεται από την εντολή 0xf250 Όρισμα 0xf250 Διευθυνσιοδότηση Δεδομένα

Immediate Addressing Παραδείγματα mov cx,0ah Immediate word 10 -> CX mov dl,10 Immediate byte 10 -> DL mov ebx,1010b Immediate dword 10 ->EBX mov bh,color σταθερά color στον bh

Direct Addressing Το όρισμα είναι το σταθερό offset της θέσης μνήμης που προσπελαύνουμε To όρισμα βρίσκεται πάντα σε αγκύλες [] [a0h] Όρισμα a0h Μνήμη ff0a0 DS ff00h Segment ff00 * 10h Διευθυνσιοδότηση Δεδομένα

Direct Addressing Παραδείγματα mov cx,[1000h] DS:1000H -> CX mov dl,[data_1] DS:data_1 -> DL mov [data_1],bh BH -> DS:data_1

Indirect Addressing Το όρισμα είναι ένας συνδυασμός καταχωρητών ή/και σταθερών οι τιμές των οποίων δίνουν το offset της θέσης μνήμης

Indirect Addressing si Όρισμα bx 0x000a 0x1234 Μνήμη 0x000a 0x0022 0x0022 Segment 0x1000 * 0x10 0x11260 Διευθυνσιοδότηση Δεδομένα Καταχωρητές

Indirect Addressing Παραδείγματα mov ax,[bx] Register Indexed mov ah,[bx+si] Base Plus Indexed mov cx,[bp+4] Register Relative mov [bx+si+2],dl Base Relative Plus Indexed

Βασικές εντολές μεταφοράς δεδομένων mov: Η τυπική εντολή μεταφοράς String εντολές: movsb, movsw, movsd: String move lodsb, lodsw, lodsd: String load stosb, stosw, stosd: String store ins: read string from input port outs: write string to output port

String Εντολές String εντολές Μακροεντολές Συμπιέζουν πολλαπλές εντολές σε μία Μικρότερο μέγεθος εκτελέσιμου Πιο συμπαγής κώδικας

movs move string movsb, movsw, movsd Δεν παίρνουν όρισμα Μεταφέρουν αυτόματα την θέση μνήμης [DS:SI] στην [ES:DI] Παράλληλα αυξάνουν τους SI, DI movsb mov [es:di],[ds:si] inc si inc di

movs Παραδείγματα χρήσης Αντιγραφή Πίνακα/String mov si,my_array mov di,new_array mov cx,my_array_length main_loop: mov [es:di],[ds:si] inc si inc di loop main_loop ; main_loop: 8 bytes

movs Παραδείγματα χρήσης Αντιγραφή Πίνακα/String mov si,my_array mov di,new_array mov cx,my_array_length main_loop: rep movsb ;main_loop: 2 bytes mov si,my_array mov di,new_array mov cx,my_array_length main_loop: mov [es:di],[ds:si] inc si inc di loop main_loop ; main_loop: 8 bytes

lods load string lodsb, lodsw, lodsd Φορτώνουν αυτόματα στον ΑL(/ΑΧ/ΕΑΧ) την θέση μνήμης DS:SI και αυξάνουν τον SI lodsb mov ah,[ds:si] inc si

lods Παραδείγματα χρήσης Άθροιση στοιχείων Πίνακα mov si,my_array mov cx,my_array_length main_loop: mov al,[ds:si] inc si add dh,al loop main_loop ; 8 bytes

lods Παραδείγματα χρήσης Άθροιση στοιχείων Πίνακα mov si,my_array mov cx,my_array_length main_loop: lodsb add dh,al loop main_loop ;main_loop: 5 bytes mov si,my_array mov cx,my_array_length main_loop: mov al,[ds:si] inc si add dh,al loop main_loop ; 8 bytes

stos store string stosb, stosw, stosd Αποθηκεύουν αυτόματα τον AL(/AX/EAX) στην θέση μνήμης ES:DΙ και αυξάνουν τον DI stosb mov [es:di],ah inc di

stos Παραδείγματα χρήσης Καθαρισμός Πίνακα mov di,new_array mov cx,new_array_length mov al,0 main_loop: mov [es:di],al inc di loop main_loop ; main_loop: 6 bytes

stos Παραδείγματα χρήσης Καθαρισμός Πίνακα mov di,new_array mov cx,new_array_length mov al,0 mov di,new_array mov cx,new_array_length mov al,0 main_loop: rep stosb ;main_loop: 2 bytes main_loop: mov [es:di],al inc di loop main_loop ; main_loop: 6 bytes

Άλλες εντολές XCHG: exchange source and destination LAHF : load ah from flag register SAHF : store ah to flag register XLAT : translate -> mov ah,[bx+ah] IN, OUT : I/O access MOVSX : Copy source to destination, sign extended MOVZX : Copy source to destination, zero extended BSWAP : Change 32bit register data from big-endian to littleendian Και άλλες