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

154
Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0 Αρχιτεκτονική Υπολογιστών Αρχιτεκτονική Συνόλου Εντολών Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Organization, W. Robinson, CS-231, Vanderbildt Univesrity. Computer Systems: a Programmers Perspective, R. Bryant, D. O' Hallaron, Carnegie-Mellon University. Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός, Π. Ευριπίδου, Πανεπιστήμιο Κύπρου Αρχιτεκτονική Υπολογιστών, Ν. Στεφανιδάκης, Ιόνιο Πανεπιστήμιο. Λειτουργικά Συστήματα, Κ. Διαμαντάρας, ΤΕΙΘ Σύνθεση: Κ.Γ. Μαργαρίτης, Πανεπιστήμιο Μακεδονίας, Τμήμα Εφαρμοσμένης Πληροφορικής.

description

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

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

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

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

Βασικές Πηγές:

Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam.

Computer Organization, W. Robinson, CS-231, Vanderbildt Univesrity.

Computer Systems: a Programmers Perspective, R. Bryant, D. O' Hallaron, Carnegie-Mellon University.

Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός, Π. Ευριπίδου, Πανεπιστήμιο Κύπρου

Αρχιτεκτονική Υπολογιστών, Ν. Στεφανιδάκης, Ιόνιο Πανεπιστήμιο.

Λειτουργικά Συστήματα, Κ. Διαμαντάρας, ΤΕΙΘ

Σύνθεση: Κ.Γ. Μαργαρίτης, Πανεπιστήμιο Μακεδονίας, Τμήμα Εφαρμοσμένης Πληροφορικής.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

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

Επισκόπηση

Μνήμη, Καταχωρητές, Δεδομένα

Λειτουργίες και Μορφές Εντολών

Διευθυνσιοδότηση

Ενδεικτικά Σύνολα Εντολών

Ρουτίνες και Διακοπές

Βελτιστοποιήσεις Pentium 4

Ενδεικτικά Προγράμματα

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Σύγχρονες Πολυεπίπεδες Μηχανές

Υπολογιστής έξι επιπέδων. Η μέθοδος υποστήριξης και η γλώσσα υλοποίησης σημειώνεται κάτω (δίπλα) από κάθε επίπεδο.

Αρχιτεκτονική

Συστήματα

Οργάνωση

Εφαρμογές

Πρόγραμμα γλώσσας υψηλού επιπέδου

Πρόγραμμα γλώσσαςassembly

Σενάριο ή κλήσησυστήματος (μικτή γλώσσα)

Πρόγραμμα σε γλώσσα μηχανής

Μικροπρόγραμμα ή γλώσσαπεριγραφής υλικού

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

cslab@ntua 2007-2008

4

Μορφή προγράμματος σε κάθε επίπεδο

Πρόγραμμα Γλώσσας Υψηλού Επιπέδου

Πρόγραμμα Γλώσσας Assembly

Πρόγραμμα Γλώσσας Μηχανής

Control Signal Specification

Μεταγλώττιση

Assembly, Συμβολομετάφραση

Διερμηνεία, Υλοποίηση

temp = v[k];

v[k] = v[k+1];

v[k+1] = temp;

load $15, 0($2)load $16, 4($2)store $16, 0($2)store $15, 4($2)

0000 1001 1100 0110 1010 1111 0101 10001010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111

°°

ALUOP[0:3] <= InstReg[9:11] & MASK

Register Transfer Notation (RTN)

ISA

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Αρχιτεκτονική Συνόλου ΕντολώνInstruction Set Architecture (ISA)

Το επίπεδο ISA είναι η διεπαφή μεταξύ των μεταγλωττιστών και του υλικού. Το χαμηλότερο επίπεδο συμβατικού προγραμματισμού. Εκεί όλες οι γλώσσες είναι ίδιες (dis-assembly). Η Java αποτελεί μια ειδική περίπτωση.

`

Java program...

JVM

bytecodecompilerinterpreter

bytecode hardware(μικροκώδικας ή ευθεία υλοποίηση)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Παραδείγματα ISAΙΑ-32 και Ιntel 64: ISA της Intelhttp://www.intel.com/products/processor/manuals/index.htm

Εισαγωγικό εγχειρίδιο: Software Developers Manual: Basic Architecture

Πολύ πληροφοριακό υλικό αλλά όχι πλήρεις προδιαγραφές.

Kλειστή αρχιτεκτονική

JVM: εικονικό ISA της Sun JAVAhttp://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html

Υπερσύνολο της IJVM.

Πλήρεις προδιαγραφές γιά τη κατασκευή μεταγλωττιστή ή διερμηνευτή ή επεξεργαστή.

Aνοικτή αρχιτεκτονική

Άλλες ανοικτές αρχιτεκτονικές: SPARC, MIPS..

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Chapter 1 — About This Manual. Chapter 2 — Intel® 64 and IA-32 Architectures. Chapter 3 — Basic Execution Environment.Chapter 5 — Instruction Set Summary. Chapter 6 — Procedure Calls, Interrupts, and Exceptions. Chapter 7 — Programming with General-Purpose Instructions. Chapter 8 — Programming with the x87 FPU. Chapter 9 — Programming with Intel® MMXTM Technology. Chapter 10 -12 — Programming with Streaming SIMD Extensions (SSE).Chapter 13 — Input/Output. Chapter 14 — Processor Identification and Feature Determination.

Περιεχόμενα βασικού εγχειριδίου Intel® 64, IA-32

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

1 Introduction2 Java Programming Language Concepts3 The Structure of the Java Virtual Machine4 The class File Format5 Loading, Linking, and Initializing6 The Java Virtual Machine Instruction Set7 Compiling for the Java Virtual Machine8 Threads and Locks9 Opcode Mnemonics by Opcode

Περιεχόμενα εγχειριδίου JVM

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Γιατί είναι σημαντικό το Σύνολο Εντολών

* Πρέπει να είναι αρκετά απλό/λεπτομερές ώστε να υλοποιείται αποτελεσματικά από το υλικό και αρκετά αφαιρετικό/κανονικό ώστε να αποτελεί το 'στόχο' των μεταγλωττιστών.

* Πρέπει να έχει χρονική διάρκεια/προοπτική, να μην μεταβάλλεται συχνά (επαύξηση μόνο).

* Πρέπει να λαμβάνει υπ' όψη του θέματα υλοποίησης, δηλαδή να συμβάλλει στην αποδοτική υλοποίηση του

* Δεν μπορεί να κάνει τα πάντα: ειδικές αρχιτεκτονικές και σύνολα εντολών για ειδικές εφαρμογές (λαμβάνεται υπ' όψη το κόστος / απόδοση / εύρος εφαρμογής). πχ ενσωματωμένα και κινητά συστήματα, μικροελεγκτές, επεξεργαστές γραφικών.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Αρχιτεκτονική Συνόλου Εντολών - Γλώσσα Μηχανής: τι ορίζει; (1)

* Πού βρίσκονται οι εντολές και τα δεδομένα; Ποιό είναι το μοντέλο μνήμης; Πώς “βλέπει” το Σύνολο Εντολών τη κύρια μνήμη;

* Που κρατά ο επεξεργαστής τα εσωτερικά του δεδομένα; Ποιοί είναι ο καταχωρητές που “βλέπει” το Σύνολο Εντολών; Ποιές είναι οι λειτουργίες τους (ειδικοί - γενικοί).

* Ποιούς βασικούς τύπους δεδομένων αναγνωρίζει το Σύνολο Εντολών;

* Ποιές βασικές πράξεις και λειτουργίες υποστηρίζει - ποιό είναι το “ρεπερτόριο” του Συνόλου Εντολών; Ορισμός πράξεων μόνο σε λειτουργικό επίπεδο (τι κάνουν όχι πώς το κάνουν).

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

* Πώς κωδικοποιείται μια εντολή; Πως ορίζονται τα opcodes;

* Πώς ορίζονται οι τελεστέοι (operads); Πόσοι μπορεί να είναι οι τελεστέοι ανά τύπο εντολής; Πού βρίσκονται (μνήμη ή καταχωρητές) και πώς προσκομίζονται οι τελεστέοι (διευθυνσιοδότηση, addressing modes);

* Πώς γίνεται η επικοινωνία με τις βασικές περιφερειακές συσκευές;

* Πώς ελέγχεται η ροή του προγράμματος (διακλαδώσεις, υπο-ρουτίνες κλπ);

* Πώς ελέγχεται η επικοινωνία μεταξύ προγράμματος και υλικού ή άλλων προγραμμάτων; (διακοπές, παγίδες).

Αρχιτεκτονική Συνόλου Εντολών - Γλώσσα Μηχανής: τι ορίζει; (2)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μεταγλωττιστές και Σύνολο Εντολών (1)

Ορθογωνιότητα Όσο το δυνατό λιγότεροι 'ειδικοί' καταχωρητές, περιορισμένη 'ειδική' σύνταξη εντολών, οι ίδια μορφή σύνταξης και διευθυνσιοδότησης για όλες σχεδόν τις εντολές.

Πληρότητα Κάλυψη όλων των βασικών πράξεων, λειτουργιών, μεθόδων διευθυνσιοδότησης και τύπων δεδομένων.

Κανονικότητα Κανονικοί, πλήρεις ορισμοί της σημασίας (semantics) των εντολών.

Λειτουργικότητα Λιτή χρήση πόρων του συστήματος (μνήμη, καταχωρητές ..)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μεταγλωττιστές και Σύνολο Εντολών (2)

Καταχωρητές Γενικού Σκοπού (Register Files)

Οι σύγχρονες αρχιτεκτονικές προσφέρουν ένα μεγάλο αριθμό καταχωρητών γενικού σκοπού (πχ 64, 128, 256..), ανεξάρτητα από το αν οι καταχωρητές αυτοί είναι “ορατοί” στο Σύνολο Εντολών με ένα ή περισσότερα ονόματα.

Ο μεταγλωττιστής “γνωρίζει” οτι η μικροαρχιτεκτονική κάνει χρήση τεχνικών όπως το Scoreboarding και αλγορίθμων όπως Graph Coloring ώστε να βελτιστοποιεί τη χρήση του Register File.

Οι πολλοί γενικοί καταχωρητές προσφέρουν ταχύτητα, γενικότητα στη μεταγλώττιση, υποκαθιστούν το stack και το local variable frame.

Όμως .. τα ανώτερα επίπεδα μπορούν να “κάνουν οτι δεν ξέρουν”..

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

Όλες οι βασικές εντολές εκτελούνται απ' ευθείας στο υλικό (οι σύνθετες εντολές ίσως υλοποιούνται με μικροκώδικα).

Μεγιστοποίηση του ρυθμού υποβολής εντολών στη CPU (τεχνικές Παραλληλίας Επιπέδου Εντολής, ILP).

Εύκολη αποκωδικοποίηση εντολών (μικρό σχετικά σύνολο από σχετικά απλές εντολές).

Ελαχιστοποίηση προσπέλασης στη μνήμη, με ειδικές εντολές Load, Store μιας διεύθυνσης.

Αφθονία όμοιων καταχωρητών (μεγάλο register file).

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Τελικά ποιά εντολή εκτελείται; (1)

Αυτό που τελικά “συμβαίνει” στη πραγματικότητα είναι μόνο το φυσικό επίπεδο (ψηφιακή λογική).

Το επίπεδο Συνόλου Εντολών ή Γλώσσα Μηχανής είναι το τελευταίο “καθαρά λογισμικό” επίπεδο. Προσφέρει τη πλησιέστερη δυνατή προσέγγιση προς την πραγματική μηχανή, αλλά ...

Δεν είναι η πραγματική μηχανή: μεσολαβεί η Μικροαρχιτεκτονική που διερμηνεύει διαφανώς τις εντολές Γλώσσας Μηχανής στο υλικό.

Έτσι το υλικό και η Μικροαρχιτεκτονική αλλάζουν, όμως το Σύνόλο Εντολών παραμένει ίδιο ή επαυξάνεται (backward compatiblity).

Έτσι εντελώς διαφορετικά φυσικά επίπεδα εκτελούν τα ίδια προγράμματα Γλώσσας Μηχανής.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Τελικά ποιά εντολή εκτελείται; (2)

Ο Pentium σε επίπεδο Συνόλου Εντολών παρέχει εντολές SISC

ADD mem, reg // mem = mem + reg

Η Mικροαρχιτεκτονική τις διερμηνεύει σε εντολές RISC

LOAD tempreg1, memADD tempreg2, tempreg1, regSTORE mem, tempreg2

για να εκτελεστούν στο σύγχρονο υλικό τύπου RISC.

Ο SPARC ή ο MIPS έχουν Σύνολο Εντολών RISC και το εκτελούν απ´ ευθείας σε υλικό τύπου RISC.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Τελικά ποιά εντολή εκτελείται; (3)

Η JVM σε επίπεδο Συνόλου Εντολών παρέχει εντολές bytecode τύπου Stack

LOAD mem1LOAD mem2 ADDSTORE mem2

O Java compiler ή το JRE αναλαμβάνει να μεταγλωττίσει ή να διερμηνεύσει το bytecode στο Σύνολο Εντολών του συστήματος που θα εκτελέση το bytecode. Αυτός στη συνέχεια μεταγλωττίζει σε CISC

LOAD tempreg1, mem1ADD mem2, tempreg1

και η μικροαρχιτεκτονική διερμηνεύει σε RISC κώδικα.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Τελικά ποιά εντολή εκτελείται; (4)

Η Mικροαρχιτεκτονική PicoJava διερμηνεύει τον κώδικα bytecode απ' ευθείας σε εντολές RISC

LOAD tempreg1, mem1 LOAD tempreg2, mem2 ADD tempreg2, tempreg1, tempreg2STORE temreg2, mem2

και εφαρμόζει σύμπτυξη εντολών, αφού η στοίβα βρίσκεται σε register file.

ADD tempreg2, tempreg1, tempreg2.

'Ισοδυναμία' hardware-firmware-software..

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

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

Επισκόπηση

Μνήμη, Καταχωρητές, Δεδομένα

Λειτουργίες και Μορφές Εντολών

Διευθυνσιοδότηση

Ενδεικτικά Σύνολα Εντολών

Ρουτίνες και Διακοπές

Βελτιστοποιήσεις Pentium 4

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μοντέλο Μνήμης (1)

byte/word addressableΠόσα bytes μεταφέρονται;

aligned ή non-aligned Όταν μεταφέρουμε λέξη (word = 4 bytes) ξεκινούμε από συγκεκριμένο offset (0, 4, 8, 12, ...) στη διεύθυνση μνήμης ή όχι (στοίχιση ή όχι);

little endian – big endianΓια τα δεδομένα που καταλαμβάνουν πολλά bytes ή αντιμετωπίζονται ως ομάδες, με ποιά σειρά είναι αποθηκευμένα τα δεδομένα στα bytes (μικρό ή μεγάλο άκρο);

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Λογική Οργάνωση Bytes

(a) Big endian (b) Little endian

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Στοίχιση bytes

Μια λέξη των 8 bytes αποθηκευμένη σε μνήμη little-endian.(a) Με στοίχιση. (b) Χωρίς στοίχιση.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μοντέλο Μνήμης (2)

Pentium: Aποθήκευση μικρού άκρου (little-endian)

JVM: Αποθήκευση μεγάλου άκρου (big-endian)

Pentium: Λέξεις των 8 bytes (64 bits), αλλά και επεξεργασία στα 32 ή και 8 bits λόγω backward compatibility (x86). Μη-στοιχισμένη (non-aligned) προσπέλαση. Διαχωρισμός Instruction / Data στη L1 Cache.

JVM: Byte/Word Addressable μνήμη (Πρόγραμμα 8 bits / Δεδομένα 32 bits). Στοιχισμένη (aligned) προσπέλαση.

Pentium: Αντιμετώπιση Κινδύνων Δεδομένων σχετικών με την προσπέλαση Μνήμης λόγω πιθανής αλλαγής της σειράς εκτέλεσης από τη Retirement Unit.

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

Kernel virtual memory

Memory mapped region forshared libraries

Run-time heap(created at runtime by malloc)

User stack(created at runtime)

Unused0

Memoryinvisible touser code0xc0000000

0x08048000

0x40000000

Read/write data

Read-only code and data

Loaded from the hello executable file

printf() function

0xffffffff Χώρος μνήμης προγράμματος

σε Pentium

O stack “κατεβαίνει”Ο heap “ανεβαίνει”

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Καταστάσεις (Modes) PentiumReal mode:Ο Pentium φέρεται σαν 8086 (16 bit, απλές εντολές).

Virtual 8086 mode:Tο λειτουργικό σύστημα ελέγχει ένα sandbox για εικονική λειτουργία 8086 (παράθυρο MS-DOS στα Windows)

Protected mode: Η κανονική λειτουργία 32 bit (IA-32).

Ιntel-64 mode: Επεκταμένη λειτουργία 64 bit.

Kernel mode: Πλήρης πρόσβαση σε ειδικές εντολές (signal handling) χρήση από το πυρήνα (kernel) του λειτουργικού συστήματος.

User mode: Τυπική λειτουργία χρήστη και διεργασιών.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Το μοντέλο μνήμης της JVM

Δεξαμενή Σταθερών Πλαίσιο Τοπικών Μεταβλητών Περιοχή Μεθόδων

Στοίβα Τρεχόντων Τελεστέων

Τα διάφορα μέρη του μοντέλου μνήμης της JVM. Heap με garbage collection.

Heap

newarray int

Σωρός Δυναμικών Δεδομένων

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Ονομασίες Βασικών Καταχωρητών

Μετρητής Προγράμματος (Program Counter, PC)

Καταχωρητής Εντολών (Instruction Register, IR ή MBR)

Καταχωρητής Διευθύνσεων Μνήμης (Memory Address Register, MAR)

Καταχωρητής Δεδομένων Μνήμης (Memory Data Register, MDR)

Γενικοί Καταχωρητές (R0, R1, R2, ..., R7)

Συσσωρευτής (Accumulator, AC)

Δείκτης Στοίβας (Stack Pointer, SP)

Index, Base, Offset Registers και άλλοι δείκτες (Πλαισίου LV, Σταθερών CPP..)

Καταχωρητής Κατάστασης (Status Register, SR – Process Status Word PSW)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Γνωστοί Καταχωρητές

Προσοχή στη διαφορά Μικροαρχιτεκτονικής και Αρχιτεκτονικής Συνόλου Εντολών:

Ξέρουμε την ύπαρξη των καταχωρητών λόγω της γνώσης μας της Μικροαρχιτεκτονικής (δηλαδή του ΠΩΣ εκτελούνται οι εντολές) αλλά ποιούς καταχωρητές “βλέπει” το Σύνολο Εντολών;

Πχ είναι “γνωστοί” οι PC, IR, MAR, MDR;

Το Σύνολο Εντολών “γνωρίζει” μόνον τους καταχωρητές που χρησιμοποιεί ρητά στις εντολές Γλώσσας Μηχανής ή έμμεσα, μέσω των semantics των εντολών Γλώσσας Μηχανής.

Οι υπόλοιπες λεπτομέρειες αναγνωρίζονται μέσω της απόδοσης του συστήματος.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Καταχωρητές Pentium (1)

Γενικοί καταχωρητές, αλλά με κατά περίπτωση ειδικές χρήσεις (mul, div, strings)

Δείκτες Τοπικών Μεταβλητών, Στοίβας, κλπ

Παλιοί Δείκτες Τμημάτων (Segments)

Μετρητής Προγράμματος

Καταχωρητής Κατάστασης

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

EFLAGS ~ Processor Status Word

N – Negative Z – ZeroV – OverflowC- CarryA – Auxiliary CarryP – Parity

Interrupt Mask (βλ. Διακοπές)

Mode of Opeation (βλ. Καταστάσεις Λειτουργίας)

Trace bit (για debugging)

Καταχωρητές Pentium (2)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Καταχωρητές JVM

Μόνον δείκτες σε περιοχές μνήμης (έμμεση χρήση)

PC Μετρητής Προγράμματος

SP Δείκτης Στοίβας

LV Δείκτης Πλαισίου Τοπικών Μεταβλητών

CPP Δείκτης Σταθερών και Μεθόδων

Ο Σωρός επιστρέφει δείκτες για χρήση με Δυναμική Διαχείριση Μνήμης μέσω ειδικής εντολής (newarray). Διαχείριση μέσω ειδικών εντολών (aload, astore).

Αυτόματη Συλλογή Απορριμάτων (Garbage Collection).

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

Καταχωρητές PicoJava

Εκτός από τους καταχωρητές της JVM

OPLIM Μέγιστο μέγεθος στοίβαςFRAME Μέγιστο μέγεθος Πλαισίου Τοπικών ΜεταβλητώνPSW

64 Γενικοί καταχωρητές

4 Καταχωρητές για διαχείριση νημάτων4 Καταχωρητές για εκσφαλμάτωση

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Βασικοί Τύποι Δεδομένων (1)bit, byte (8 bits), word (4 bytes)

charASCII (7 ή 8 bits)

Unicode (16 bits)συνήθως αντιμετωπίζονται σε ομάδες (πχ μια λέξη)

intUnsigned ή Signed (συπλήρωμα του 2) – 2 ή 4 bytes

Short και Long

float (4 bytes), double (8 bytes)IEEE Floating Point Standard 754

Υποστήριξη του Συνόλου Εντολών για διαφορετικούς τύπους δεδομένων (πχ integer add, integer long add, float add)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

0000100 51e5 ec83 c704 2404 0000 0000 fce8 ffff0000120 83ff 04c4 5d59 618d c3fc 0000 6568 6c6c0000140 2c6f 7720 726f 646c 0000 4347 3a43 28200000160 4e47 2955 3420 322e 342e 2820 6255 6e750000200 7574 3420 322e 342e 312d 6275 6e75 75740000220 2933 0000 732e 6d79 6174 0062 732e 72740000240 6174 0062 732e 7368 7274 6174 0062 722e0000260 6c65 742e 7865 0074 642e 7461 0061 622e0000300 7373 2e00 6f72 6164 6174 2e00 6f63 6d6d0000320 6e65 0074 6e2e 746f 2e65 4e47 2d55 7473

Aπόσπασμα από μια περιοχή μνήμης (ή ένα αρχείο) σε hex.

Τι μπορεί να είναι: εντολές γλώσσας μηχανής, ASCII χαρακτήρες προγράμματος, ακέραιοι, πραγματικοί, τιμές pixel από εικόνα;

Βασικοί Τύποι Δεδομένων (2)

Οτιδήποτε από αυτά!

Το νόημα των bits εξαρτάται από τα συμφραζόμενά μας, δηλαδή απότη δική μας αντίληψη για τα δεδομένα.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Τύποι Δεδομένων Pentium

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Τύποι Δεδομένων JVM

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

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

Επισκόπηση

Μνήμη, Καταχωρητές, Δεδομένα

Λειτουργίες και Μορφές Εντολών

Διευθυνσιοδότηση

Ενδεικτικά Σύνολα Εντολών

Ρουτίνες και Διακοπές

Βελτιστοποιήσεις Pentium 4

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Βασικές Πράξεις και Λειτουργίες (1)

Μετακινήσεις ΔεδομένωνLoad (Καταχωρητής = Μνήμη)Store (Μνήμη = Καταχωρητής)

Καταχωρητής – Καταχωρητής Μνήμη – Μνήμη Λειτουργίες Στοίβας (ως αδιαίρετη πράξη μετακίνησης) Λειτουργίες Εισόδου / Εξόδου (ως μετακίνηση σε ειδική θέση)

Αριθμητικές ΠράξειςΠρόσθεση, Αφαίρεση, Αντίθετο, Σύγκριση, Πολ/σμός, ΔιαίρεσηΑκέραιοι και Πραγματικοί (Κινητή Υποδιαστολή)

ΟλίσθησηΑριθμητική / Λογική, Δεξιά / Αριστερά

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Βασικές Πράξεις και Λειτουργίες (2)

Λογικές ΠράξειςAND, OR, XOR, NOT, Set, Clear

Έλεγχος Ροής ΠρογράμματοςΔιακλάδωση χωρίς / με συνθήκη

Κλήση / Επιστροφή υπορουτίνας

Είσοδος / Έξοδος (ως ξεχωριστές λειτουργίες)Ανάγνωση, Εγγραφή

Διακοπές και ΠαγίδεςΈλεγχος, Εξυπηρέτηση, Επιστροφή

Επιπλέον: Συγχρονισμός και ΝήματαStrings, Γραφικά, Streaming..

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

cslab@ntua 2007-2008

40

Παράδειγμα Χρήσης Εντολών: Top 10 Intel X86 Instructions

Κατηγορία Μέσο ποσοστό συνολικής εκτέλεσης12345678910

Εντολήloadconditional branchcomparestoreaddandsubmove register-registercallreturnTotal

Παρατήρηση: Οι απλές εντολές έχουν τις μεγαλύτερες συχνότητες χρησιμοποίησης.

22%20%16%12%8%6%5%4%1%1%96%

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Ορισμός Operands

Μοντέλο Συσσωρευτή (1-address/-operand)

Μ

Μόνο ένας καταχωρητής γενικού σκοπού. Απλό μοντέλο αλλά πολλές μεταφορές από-προς μνήμη και πολλές εντολές. Πρώτοι υπολογιστές (ο διερμηνέας που είδαμε).

Μοντέλο Στοίβας (0-address/-operand) Οι καταχωρητές (ή η μνήμη) προσπελαύνονται μόνο μέσω εντολών

διαχείρισης μιας στοίβας (Push, Pop). Απλή στη σύλληψη αλλά δύσκολη στη προσπέλαση, πολλές μετακινήσεις δεδομένων στη στοίβα. JVM.

Μοντέλο Καταχωρητών (2,3-address/-opernad)Σύγχρονοι υπολογιστές. Πολλοί όμοιοι (όχι πάντα) καταχωρητές.

Δύο υποκατηγορίες: Με προσπέλαση στη μνήμη (CISC) ή χωρίς (RISC). Στη κατηγορία RISC μπορεί να έχουμε μοντέλο με 2 ή 3 καταχωρητές.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Παράδειγμα Συσσωρευτή

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Παράδειγμα Στοίβας

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Παράδειγμα Καταχωρητών CISC

καταχωρητές

R1 = R1 + Χ

Οι περισσότερες εντολές περιλαμβάνουν και μιαπροσπέλαση στη μνήμη

2CISC Γλώσσα assembly Pentium

Διαφέρει από το μοντέλο Συσσωρευτή λόγω πολλών καταχωρητών. Σε παλαιότερα συστήματα υπήρχαν και πολλαπλές προσπελάσεις στη μνήμη.

add R1, X

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Παράδειγμα Καταχωρητών RISC

Μπορεί να οριστεί και με 2-address/- operands: add R1, R2 δηλαδή R1 = R1+R2

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Ενδεικτικά αποσπάσματα κώδικαint x, y, z; Γλώσσα C/Java #cmd #mem refsx = y + z;

load 0xA2 // AC = mem(0xA2) 3 3add 0xA4 // AC = AC + mem(0xA4)store 0xA0 // mem(0xA0) = AC

load 0xA2 // push mem(0xA2) 4 9load 0xA4 // push mem(0xA4)add // pop, pop, add, pushstore 0xA0 // pop mem(0xA0)

load A, 0xA2 // A = mem(0xA2) 3 3add A, 0xA4 // A = A + mem(0xA4)store A, 0xA0 // mem(0xA0) = A

load A, 0xA2 // A = mem(0xA2) 4 3load B, 0xA4 // B = mem(0xA4)add C, A, B // C = A + Bstore C, 0xA0 // mem(0xA0) = C

load A, 0xA2 // A = mem(0xA2) 4 3load B, 0xA4 // B = mem(0xA4)add B, A, B // B = A + Bstore B, 0xA0 // mem(0xA0) = B

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μορφές Εντολών (1)

Τέσσερις συνηθισμένεςς μορφές εντολών:(a) Zero-address/-operand (b) One-address/-operand

(c) Two-address/-opernad (d) Three-address/-operand

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μορφές Εντολών (2)

Σταθερού μήκους

Μεταβλητού μήκουςαριθμός words

Υβριδικού μήκουςαριθμός bytesΕφαρμογή σεbyte/word -addressablememory (JVM)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μορφές Εντολών (3)

Μερικές πιθανές διευθετήσεις εντολών ανάλογα με το μήκος τους και τι μέγεθος λέξης.

(a) Σταθερού μήκους, ίσου με μια λέξη.

(b) Σταθερού μήκους, ίσου με μισή λέξη.

(c) Μεταβλητού μήκους, ίσου με ακέραιο πολλαπλάσιο λέξης.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Κριτήρια Σχεδιασμού Εντολών (1)Σταθερό μήκος: ταχεία αποκωδικοποίηση, μικρή πυκνότητα.

Μεταβλητό μήκος: μεγάλη πυκνότητα, σύνθετη αποκωδικοποίηση.

* Αν η πυκνότητα του κώδικα είναι σημαντικό: μεταβλητό ή υβριδικό μήκος εντολής.

* Αν η απόδοση είναι πιο σημαντική: σταθερό μήκος.

* Ορισμένες αρχιτεκτονικές (ARM, MIPS) διαθέτουν ειδικό υποσύνολο εντολών σταθερού μήκους 16-bit για καλύτερη απόδοση. Η χρήση του κατάλληλου συνόλου αποφασίζεται από το μεταγλωττιστή σε επίπεδο ρουτίνας, ανάλογα με το αν απαιτείται απόδοση ή πυκνότητα.

* Μερικές αρχιτεκτονικές εφαρμόζουν και αποσυμπίεσηon-the-fly για να συνδιάσουν πυκνότητα και απόδοση.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Κριτήρια Σχεδιασμού Εντολών (2)

* Οι μικρές (σύντομες) εντολές είναι καλύτερες από τις μεγάλες (σύνθετες) εντολές.

* Απαιτείται αρκετός χώρος για τη κωδικοποίηση όλων των πράξεων και λειτουργιών καθώς και πρόβλεψη για μελλοντικές επεκτάσεις (μήκος και κωδικοποίηση opcodes).

* Απαιτείται αρκετός χώρος για τη τη κωδικοποίηση των operands και των συνδυασμών τους ανάλογα με τις μεθόδους διευθυνσιοδότησης που επιλέγονται

0, 1, 2 ή 3 operandsονόματα καταχωρητώνδιεθύνσεις μνήμης offset ή πλήρης διεύθυνση

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μορφή Εντολών Pentium 4

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μορφή Εντολών JVM

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Επεκτεινόμενοι Κωδικοί Εντολών (1)

Εντολή με 4-bit opcode και τρείς διευθύνσεις 4-bit .

Σε συγκεκριμένο αριθμό bits πρέπει να οργανώσουμε εντολές με διαφορετικό αριθμό/τύπο operands.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Επεκτεινόμενοι Κωδικοί Εντολών (2)

Σύνολο εντολών με 15 εντολές τριών διευθύνσεων, 14 εντολές δύο διευθύνσεων, 31 εντολές μιας διεύθυνσης και 16 εντολές μηδενικής διεύθνσης. Τα πεδία xxxx, yyyy, και zzzz aείναι πεδία διευθύνσεων των 4 bit.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Εντολές Pentium: Πολύ μεγάλες, πολύ σύνθετες, διάχυτες προσπελάσεις στη μνήμη (σε πολλές εντολές), μικρός κώδικας.

Εντολές JVM: πολύ μικρές, πολύ απλές, πολλές προσπελάσεις στη μνήμη, μεγάλος κώδικας.

Εντολές RISC (πχ SPARC, MIPS ή και Mic-4): κανονικές, ορθογώνιες, συγκεντρωμένες προσπελάσεις στη μνήμη (load, store), κώδικας μέσου μεγέθους.

Μορφή Εντολών: Σύνοψη

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μελετήστε το Σύνολο Εντολών IJVM και κατατάξτε τις εντολές ανάλογα με το μήκος και τη μορφή τους, με βάση το σχήμα της JVM.

Προτείνετε ένα δικό σας σχήμα κωδικοποίησης των εντολών για την “'έκδοση” της IJVM για το Mic-4. Αυτό που αλλάζει είναι η χρήση 8 καταχωρητών (R0-R7) στη θέση του stack.

Έστω οτι όλες οι εντολές της IJVM έχουν το μέγιστο μήκος. Εφαρμόστε τη λογική των Επεκτεινόμενων Κωδικών.

Το ίδιο για το Σύνολο Εντολών IJVM Mic-4.

Ασκήσεις

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

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

Επισκόπηση

Μνήμη, Καταχωρητές, Δεδομένα

Λειτουργίες και Μορφές Εντολών

Διευθυνσιοδότηση

Ενδεικτικά Σύνολα Εντολών

Ρουτίνες και Διακοπές

Βελτιστοποιήσεις Pentium 4

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Διευθυνσιοδότηση: παράδειγμα

Λειτουργία πχ ADD

Opcode

opernad1 operand1

Addressing Modes

ΧΧ Προορισμός Πηγή

00 Καταχωρητής Καταχωρητής

01 Καταχωρητής Αριθμός

10 Καταχωρητής Διεύθυνση που βρίσκεται σε Καταχωρητή

11 Διεύθυνση που βρίσκεται Καταχωρητήςσε Καταχωρητή

ΧΧ

Data Type

XX

00 char 01 int 10 flotat 11 double

XX

6 2 2 3 3bits

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μέθοδοι ΔιευθυνσιοδότησηςΌνομα Παράδειγμα Σημασία

Καταχωρητή ADD R1, R2 R1=R1+R2

Άμεση (Immediate) ADD R1, #3 R1=R1+3

Έμμεση Καταχωρητή (Register Indirect) ADD R1, (R2) R1=R1+mem(R2)

Μετατόπιση (Offset) ήΔεικτοδότηση (Indexed) ADD R1, 4(R2) R1=R1+mem(R2+4)

Βάση-Δείκτης (Base-Index) ADD R1, (R2,R3) R1=R1+mem(R2+R3)

Απόλυτη (Absolute) ADD R1, 1000 R1=R1+mem(1000)

Έμμεση Μνήμης (Memory Indirect) ADD R1, (@R2) R1=R1+mem(mem(R2))

Post-increment ADD R1, R2+ R1=R1+mem(R2);R2++

Pre-decrement ADD R1, R2- ` R2--; R1=R1+mem(R2)

Κλιμακούμενη (Scaled) ADD R1, 4(R2)(R3) R1=R1+mem(4+R2+R3*d)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Άμεση και Έμμεση Διευθυνσιοδότηση

Άμεση διευθυνσιοδότηση: φόρτωσε το 4 στο καταχωρητή 1.

Έμμεση Καταχωρητή (Register Indirect): άθροιση στοιχείων ενός πίανακα.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Δεικτοδότηση - Indexed Addressing (1)

Ενδιεκτικό πρόγραμμα assembly για τον υπολογισμό του

OR των Ai AND Bi για δύο πίνακες 1024 στοιχείων.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Δεικτοδότηση - Indexed Addressing (2)

Πιθανή διευθέτηση της εντολής MOV R4,A(R2).

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Ορθογωνιότητα Opcodes και Addressing Modes (1)

Απλή σχεδίαση μορφών εντολής σε μια μηχανή τριών διευθύνσεων.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Ορθογωνιότητα Opcodes και Addressing Modes (2)

Απλή σχεδίαση μορφών εντολής σε μια μηχανή δύο διευθύνσεων.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μέθοδοι Διευθυνσιοδότησης Pentium (1)

Οι μέθοδοι διευθυνσιοδότησης σε κατάσταση ΙΑ-32. M[x] σημαίνει λέξη μνήμης στη διεύθυνση x.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μέθοδοι Διευθυνσιοδότησης Pentium (2)

Παράδειγμα προσπέλασης του στοιχείου a[i] με τη μέθοδο διευθυνσιοδότησης Scaled Index Base.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Σύγκριση Μεθόδων Διευθυνσιοδότησης (1)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Σύγκριση Μεθόδων Διευθυνσιοδότησης (2)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Ασκήσεις

Μελετήστε τις μεθόδους διεθυνσιοδότησης της IJVΜ στις εκδόσεις για Mic-1/3 και για Mic-4 και κατατάξτε τις με βάση τον πίνακα τωνμεθόδων διευθυνσιοδότησης.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

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

Επισκόπηση

Μνήμη, Καταχωρητές, Δεδομένα

Λειτουργίες και Μορφές Εντολών

Διευθυνσιοδότηση

Ενδεικτικά Σύνολα Εντολών

Ρουτίνες και Διακοπές

Βελτιστοποιήσεις Pentium 4

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Εντολές Pentium 4 (1)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Εντολές Pentium 4 (2)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Εντολές Pentium 4 (3)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Εντολές Pentium 4 (4)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Εντολές JVM (1)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Εντολές JVM (2)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

$gedit test.c &

main () {  int x;    x=10;}

$gcc ­S test.c > test.s$cat test.c 

...

...movl $10, ­8(%ebp)

   ......

Ανάθεση Pentium

Χρήση ebp ως Local Variable Frame Pointer (LV)

Ανάπτυξη User Stack από High Address προςLow Address.

Κράτηση πρώτων 8 bytes θέσεων του User Stack.

Διεθυνσιοδότηση: Απόλυτη και Μετατόπιση

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

$gedit j1.java

class j1{

public static void main (){

int x;      x=10;

}}

$javac j1.java$javap ­c j1 > j1.s$cat j1.s

...

...0: bipush 10

   2: istore_0   3: return

...

...

Ανάθεση JVM

Η istore_0 συντόμευση της istore 0. Διεθυνσιοδότηση: Απόλυτη και Μετατόπιση.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

main () {  int i, j, n;    i=3;  j=4;  n=i+j;}

...movl $3, ­8(%ebp)movl $4, ­12(%ebp)movl ­12(%ebp), %eax

   addl ­8(%ebp), %eaxmovl %eax, ­16(%ebp)...

Πράξη Pentium

2-address/-opernad code, η μια διεύθυνση προπέλαση στη μνήμη.Διευθυνσιοδοτήσεις : Απόλυτη, Άμεση, Μετατόπιση (Βάση-Δείκτης).4 bytes ανα ακέραιο, ο eax καταχωρητής γενικής χρήσης.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

class j2{

public static void main (){

int i, j, n;     i=3;   j=4;   n=i+j;

}}

   ...0: iconst_3

   1: istore_0   2: iconst_4   3: istore_1   4: iload_0   5: iload_1   6: iadd   7: istore_2   8: return

...

Πράξη JVM

iconst_X = σύντομο bipush X, iload_X, istore_X = σύντομα iload X, istore XΔιευθυνσιοδοτήσεις: Απόλυτη, Μετατόπιση, Stack.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

main () {  int i, k;    i=3;  if (i != 3)    k=0;}

...movl $3, ­8(%ebp)cmpl $3, ­8(%ebp)je .L5movl $0, ­12(%ebp)

.L5:...

If then Pentium

Αντιστροφή Συνθήκης: αντί != θέτουμε == για αποφυγή goto.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

class j3{

public static void main (){

int i, k;        i=3;      if (i != 3)        k=0;

}}

  ...0: iconst_3

   1: istore_0   2: iload_0   3: iconst_3   4: if_icmpeq 9   7: iconst_0   8: istore_1   9: return   ...

If then JVM

Αντιστροφή Συνθήκης: αντί != θέτουμε == για αποφυγή goto.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

main () {  int i, k;    i=3;  if (i == 3)    k=0;  else    k=1;}

...movl $3, ­8(%ebp)cmpl $3, ­8(%ebp)jne .L2movl $0, ­12(%ebp)jmp .L6

.L2:movl $1, ­12(%ebp)

.L6:...

If then else Pentium

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

class j4{

public static void main (){

int i, k;        i=3;      if (i == 3)       k=0;   else       k=1;

}}

  ...0: iconst_3

   1: istore_0   2: iload_0   3: iconst_3   4: if_icmpne 12   7: iconst_0   8: istore_1   9: goto 14   12: iconst_1   13: istore_1   14: return   ...

If then else JVM

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

main () {  int x, n;    n=10;  x=0;  while (x < n)    x=x+1;}

...movl $10, ­12(%ebp)movl $0, ­8(%ebp)jmp .L2

.L3:addl $1, ­8(%ebp)

.L2:movl ­8(%ebp), %eaxcmpl ­12(%ebp), %eaxjl .L3...

while Pentium

Σύγκριση < στο τέλος του κώδικα επανάληψης.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

{public static void main (){

int x, n;

      n=10;      x=0;      while (x < n)        x=x+1;

}}

...0: bipush 10

   2: istore_1   3: iconst_0   4: istore_0   5: iload_0   6: iload_1   7: if_icmpge 17   10: iload_0   11: iconst_1   12: iadd   13: istore_0   14: goto 5   17: return

...

while JVM

Σύγκριση >= στη αρχή του κώδικα επανάληψης.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Έλεγχος Βρόχων

(a) Σύγκριση στο Τέλος (Test-at-the-end loop). (b) Σύγκριση στην Αρχή (Test-at-the-beginning loop).

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

main () {  int x[5], i;    for (i=0; i<5; i++)    x[i]=i+3;} ...

movl $0, ­8(%ebp)jmp .L2

.L3:movl ­8(%ebp), %edxmovl ­8(%ebp), %eaxaddl $3, %eaxmovl %eax, ­28(%ebp,%edx,4)addl $1, ­8(%ebp)

.L2:cmpl $4, ­8(%ebp)jle .L3.

   ...

Πίνακας, for Pentium

Χρήση ebp – 28 ως βάση και edx * 4 σαν index (οffset). Scaled Base Index (SIB). Μείωση ορίου τερματισμού κατά ένα.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

class j6{

public static void main (){

int[] x=new int[5];int i;

        for (i=0; i<5; i++)      x[i]=i+3;

}}

  ...0: iconst_5

   1: newarray int   3: astore_0   4: iconst_0   5: istore_1   6: iload_1   7: iconst_5   8: if_icmpge 23   11: aload_0   12: iload_1   13: iload_1   14: iconst_3   15: iadd   16: iastore   17: iinc 1, 1   20: goto 6   23: return   ...

Πίνακας, for JVM

Χρήση newarray για λήψη δείκτη απόheap και αποθήκευση, φόρτωση με astore, aload.

Χρήση iastore + iload για δεικτοδοτημένη προσπέλαση.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

int f(int x) {  int temp;   temp = x+3;  return temp;}  

main () {  int y;    y = 7;  y = f(y)­4;}

...f:

pushl %ebpmovl %esp, %ebpsubl $16, %espmovl 8(%ebp), %eaxaddl $3, %eaxmovl %eax, ­4(%ebp)movl ­4(%ebp), %eaxleaveret

   ...main:

leal 4(%esp), %ecxandl $­16, %esppushl ­4(%ecx)pushl %ebpmovl %esp, %ebppushl %ecxsubl $20, %espmovl $7, ­8(%ebp)movl ­8(%ebp), %eaxmovl %eax, (%esp)call fsubl $4, %eaxmovl %eax, ­8(%ebp)addl $20, %esppopl %ecxpopl %ebpleal ­4(%ecx), %espret

function Pentium

Κλήση συνάρτησης και επιστροφή απόσυνάρτηση.Χρήση leave πριν απο ret.Το main είναι συνάρτηση.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

class j7 {  public static int f(int x) {   int temp;

temp = x;   return temp;  }

  public static void main () {   int y;

   y = 7;   y = f(y)­4;   }

j7();  Code:   0: aload_0   1: invokespecial #1;    4: return

public static int f(int);  Code:   0: iload_0   1: istore_1   2: iload_1   3: ireturn

public static void main();  Code:   0: bipush 7   2: istore_0   3: iload_0   4: invokestatic #2;    7: iconst_4   8: isub   9: istore_0   10: return

}

Static method JVM

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

#include <stdlib.h>main () {  int* x;  int* y;

  x = malloc(sizeof(int));  y = malloc(sizeof(int));

  *x = 1;  *y = 2;

  x = y;}

...movl $4, (%esp)call mallocmovl %eax, ­8(%ebp)movl $4, (%esp)call mallocmovl %eax, ­12(%ebp)movl ­8(%ebp), %eaxmovl $1, (%eax)movl ­12(%ebp), %eaxmovl $2, (%eax)movl ­12(%ebp), %eaxmovl %eax, ­8(%ebp)

   ...

PointersPentium

Register Indirect: o eax περιέχειτη πλήρη διεύθυνση των x, y.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

class IntObj {    public int value;  }

class j7 {  public static void main () {    

IntObj x;IntObj y;

x = new IntObj();y = new IntObj();

x.value = 1;y.value = 2;

x = y;  }

}      

  ...0: new#2; 

   3: dup   4: invokespecial#3;    7: astore_0   8: new#2;    11:dup   12:invokespecial#3;    15:astore_1   16:aload_0   17:iconst_1   18:putfield #4;    21:aload_1   22:iconst_2   23:putfield #4;    26:aload_1   27:astore_0   28:return   ...

Pointers JVM

Χρήση aload και putfield.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

void swap (int *x, int *y) {  int temp;

  temp = *x;  *x = *y;  *y = temp;}   

main () {  int x;  int y;

  x = 5;  y = 6;

  swap (&x, &y);}

Pointer arguments Pentium (1)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

swap:pushl %ebpmovl %esp, %ebpsubl $16, %espmovl 8(%ebp), %eaxmovl (%eax), %eaxmovl %eax, ­4(%ebp)movl 12(%ebp), %eaxmovl (%eax), %edxmovl 8(%ebp), %eaxmovl %edx, (%eax)movl 12(%ebp), %edxmovl ­4(%ebp), %eaxmovl %eax, (%edx)leaveret

main:leal 4(%esp), %ecxandl $­16, %esppushl ­4(%ecx)pushl %ebpmovl %esp, %ebppushl %ecxsubl $24, %espmovl $5, ­8(%ebp)movl $6, ­12(%ebp)leal ­12(%ebp), %eaxmovl %eax, 4(%esp)leal ­8(%ebp), %eaxmovl %eax, (%esp)call swapaddl $24, %esppopl %ecxpopl %ebpleal ­4(%ecx), %espret

Pointer arguments Pentium (2)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

ΑσκήσειςΣυγκρίνετε τους παραπάνω κώδικες με τους αντίστοιχους της IJVM (JAS) του Mic-1 καθώς και της IJVM του Mic-4.

Ποιές είναι οι σημαντικές είναι οι διαφορές του bytecode της JVM από τη JAS της IJVM;

Μελετήστε τη διαχείριση της στοίβας και του πλαισίου τοπικώνμεταβλητών από τo Pentium και τη JVM.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

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

Επισκόπηση

Μνήμη, Καταχωρητές, Δεδομένα

Λειτουργίες και Μορφές Εντολών

Διευθυνσιοδότηση

Ενδεικτικά Σύνολα Εντολών

Ρουτίνες και Διακοπές

Βελτιστοποιήσεις Pentium 4

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Ακολουθιακή Ροή Ελέγχου και Διακλαδώσεις

Ο Μετρητής Προγράμματος ως συνάρτηση του χρόνου.(a) Χωρίς διακλαδώσεις. (b) Με διακλαδώσεις.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Ρουτίνες

Όταν καλείται μια ρουτίνα η εκτέλεσή της ξεικνά από την πρώτη της εντολή.

Η επιστροφή γίνεται στην εντολή που ακολουθεί τη κλήση.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Συ-Ρουτίνες

Όταν μια συ-ρουτίνα συνεχίζεται (resume) τότε η εκτέλεση συνεχίζει από εκεί που είχε σταματήσει, όχι από την αρχή.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Είσοδος/Έξοδος (1)

Ενταμιευτές (Buffers) ελέχου απλών συσκευών.

Συνήθωςmemory-mapped (χαρτογραφημένοι στη μνήμη).

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Εόσοδος/Έξοδος (2)

Παράδειγμα προγραμματιζόμενης Ε/Ε.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Είσοδος/Έξοδος (3)

Σύστημα με ελεγκτή DMA (Direct Memory Access).

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

105

Είσοδος/Έξοδος (4)

Οι λειτουργίες I/O και οι λειτουργίες της CPU μπορούν να εκτελούνται ταυτόχρονα (σύγχρονη αρχιτεκτονική).

Κάθε ελεγκτής συσκευής (device controller) επιφορτίζεται με τον έλεγχο ενός τύπου συσκευής.

Κάθε ελεγκτής συσκευής διαθέτει ένα τοπικό buffer (ενταμιευτή μνήμης) συνήθως memory mapped.

Η CPU μετακινεί δεδομένα από / προς την κύρια μνήμη προς /από τα τοπικά buffers.

Οι λειτουργίες I/O γίνονται από τη συσκευή προς το τοπικό buffer του ελεγκτή.

Ο ελεγκτής συσκευής πληροφορεί την CPU ότι έχει ολοκληρώσει τη λειτουργία του προκαλώντας μια διακοπή (interrupt).

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

106

Διακοπές (Interrupts) - 1

CPU ΜνήμηΔίαυλος

• Ενώ ένα πρόγραμμα εκτελείται, μια άλλη ρουτίνα θέλει να εκτελεστεί (π.χ. Είσοδος / Έξοδος, Clock, πρόβλημα υλικού, επικοινωνία με το Λειτουργικό Σύστημα, κλπ).

• Προσθέτουμε ένα έλεγχο διακοπών στον κύκλο Ανάκλησης- Εκτέλεσης (fetch-execute).

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

107

Διακοπές (Interrupts) - 2

CPU ΜνήμηΔίαυλος

Fetch

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

108

Διακοπές (Interrupts) - 3

CPU ΜνήμηΔίαυλος

Execute

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

109

Διακοπές (Interrupts) - 4

CPU ΜνήμηΔίαυλος

Έλεγξε για Διακοπές

Ο επεξεργαστής έχει ειδικές γραμμές υποδοχής για συγκεκριμένες διακοπές π.χ. RESET. Επίσης έχει γραμμές υποδοχής γενικών διακοπών. Αυτές ελέγχονται είτε με polling ήαπό ειδικό υλικό, τον Ελεγκτή Διακοπών που ενημερώνει τόσοοτι υπάρχει αίτηση διακοπή όσο και για το τύπο της (βλέπεΆνυσμα Διακοπής).

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

110

Διακοπές (Interrupts) - 5

CPU ΜνήμηΔίαυλος

Processor Context

• Αν υπάρχει έγκυρη αίτηση διακοπής (1):

• Προσωρινή ακύρωση όλων των διακοπών, όσο διαρκεί το Context Switching.

• Σώσε το processor context (program counter + ολοι οι καταχωρητές) στη μνήμη (stack).

• Context Switching ~ αυτόματη κλήση ρουτίνας και αντίστοιχη επιστροφή, ελεγχόμενη από το σύστημα.

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

111

Διακοπές (Interrupts) - 6

CPU ΜνήμηΔίαυλος

Διεύθυνση του ISR

• Αν υπάρχει έγκυρη αίτηση διακοπής (2):

• Φόρτωσε τον Program Counter με τη διεύθυνση της Ρουτίνας Εξυπηρέτησης Διακοπής (Interrupt Service routine – ISR). Αυτή δίνεται από το Άνυσμα Διακοπής (Interrupt Vector).

• Κάθε ομάδα διακοπών έχει δικό της, προκαθορισμένο Άνυσμα Διακοπής (δείκτη στη πρώτη εντολή της Ρουτίνας Εξυπηρέτησης). Δεν απαιτείται να σταλεί με τη κλήση της ISR.

• Επανενεργοποίηση διακοπών.

PC

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

112

Διακοπές (Interrupts) - 7

CPU ΜνήμηΔίαυλος

• Η ISR εκτελείται όπως μια κανονική ρουτίνα

• Ανάκληση (Fetch)

• Εκτέλεση (Execute)

• Έλεγχος για ΝΕΕΣ διακοπές: η ISR πριν ξεκινήσει καθορίζει τη Μάσκα Διακοπών (Interrupt Mask), δηλαδή από ποιές διακοπές δέχεται να διακοπεί. Επίσης καθορίζονται η προτεραιότητες μεταξύ των διακοπών που μπορεί να εκτελεστούν.

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

113

Διακοπές (Interrupts) - 8

CPU ΜνήμηΔιασύνδεση

Processor Context

• Μόλις η ISR τελειώσει την εκτέλεση εκτελεί ειδικού τύπου return: Return from Interrupt

• Αποκατάσταση τού παλιού processor context.

• Συνέχιση της εκτέλεσης του αρχικού προγράμματος ή άλλης διακοπής που έχει προκύψει.

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

114

Ανάκληση - Εκτέλεση

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

115

Ανάκληση - Εκτέλεση με Διακοπές

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Προτεραιότητα Διακοπών (1)

Προτεραιότητες Διακοπών.

Maskable – NonMaskable Interrupts.

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

117

Προτεραιότητα Διακοπών (2)Ένα σύστημα με προτεραιότητα διακοπών εγκαθιστά

προτεραιότητες μεταξύ των διαφόρων πηγών διακοπών για να αποφασίζει ποια θα εξυπηρετεί πρώτη όταν δύο ή περισσότερες απαιτήσεις φθάσουν ταυτόχρονα.

Το σύστημα πρέπει επίσης να αποφασίσει ποιες καταστάσεις θα μπορούν να διακόπτουν τον υπολογιστή καθώς αυτός θα εξυπηρετεί μια άλλη διακοπή.

Στο υψηλότερο επίπεδο προτεραιοτήτων βρίσκονται εκείνες οι απαιτήσεις για τις οποίες οποιαδήποτε καθυστέρηση ή διακοπή μπορεί να επιφέρει σημαντικές συνέπειες.

Οι συσκευές με υψηλές ταχύτητες μεταφοράς, όπως οι δίσκοι έχουν υψηλή προτεραιότητα, ενώ αργές συσκευές, όπως το πληκτρολόγιο λαμβάνουν χαμηλή προτεραιότητα.

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

118

Περιόδευση (Polling)Η επιβολή προτεραιοτήτων για τις ταυτόχρονες διακοπές μπορεί να γίνει

μέσω λογισμικού (σε μικρά συστήματα). Η διαδικασία της περιόδευσης είναι μια τεχνική που διαπιστώνει την

κατάσταση του υλικού μέσω, επαναλαμβανόμενου σε τακτά διαστήματα, ελέγχου κάθε συσκευής. Χρησιμοποιείται για να προσδιορίσει την πηγή της διακοπής με την υψηλότερη προτεραιότητα.

Η περιόδευση χρησιμοποιεί μια κοινή διεύθυνση εκκίνησης για όλες τις διακοπές. Το πρόγραμμα που διαχειρίζεται τις διακοπές περιοδεύει με τη σειρά κάθε προέλευση διακοπής. Η σειρά με την οποία αυτές ελέγχονται καθορίζει την προτεραιότητα κάθε διακοπής.

Η προέλευση της διακοπής με την υψηλότερη προτεραιότητα ελέγχεται πρώτη και αν υπάρχει σήμα διακοπής ο έλεγχος διακλαδίζεται αντίστοιχη ρουτίνα εξυπηρέτησης. Διαφορετικά ελέγχεται η επόμενη κ.ο.κ.

Το ίδιο συμβαίνει και κατά την εκτέλεση της ISR.Αργή μέθοδος, ειδικά αν έχουμε πολλές ταυτόχρονες διακοπές.

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

119

Ελεγκτής Διακοπών - Hardware Priority

Δέχεται αιτήσεις διακοπών από διάφορες πηγές, αποφασίζει ποια έχει τη μεγαλύτερη προτεραιότητα και τελικά παρέχει μια απαίτηση διακοπής στο σύστημα.

Για την επιτάχυνση της διαδικασίας, κάθε πηγή διακοπής διαθέτει το δικό της διάνυσμα διακοπής για την απευθείας πρόσβαση στη δική της ρουτίνα εξυπηρέτησης.

Έτσι δεν απαιτείται περιόδευση μια και όλες οι αποφάσεις λαμβάνονται από τη μονάδα.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Διακοπές:Σύνοψη (1)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Διακοπές:Σύνοψη (2)

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

122

Κατηγορίες Διακοπών

Σήματα (Signals): H τυπική μέθοδος επικοινωνίας του Λειτουργικού Συστήματος με τις διεργασίες, καθώς και των διεργασιών μεταξύ τους.

Προγράμματος (Traps): παράγονται από κάποια συνθήκη η οποία προκύπτει ως αποτέλεσμα της εκτέλεσης μιας εντολής, όπως η αριθμητική υπερχείλιση, η διαίρεση με το μηδέν, η απόπειρα εκτέλεσης εσφαλμένης εντολής ή η αναφορά σε τμήμα της μνήμης που βρίσκεται εκτός των ορίων του χρήστη.

Χρονισμού (Clock): παράγονται από ένα χρονιστή εσωτερικά στον επεξεργαστή. Αυτό επιτρέπει στο Λ.Σ. να εκτελεί συγκεκριμένες λειτουργίες σε τακτική βάση.

Εισόδου Εξόδου (Ι/Ο): παράγονται από έναν ελεγκτή Ι/Ο, για να σηματοδοτήσουν την κανονική ολοκλήρωση μιας πράξης ή μια ποικιλία καταστάσεων σφάλματος

Βλάβης υλικού (Η/W Faults): παράγονται από βλάβη, όπως η διακοπή τροφοδοσίας ή το σφάλμα ισοτιμίας (parity) της μνήμης.

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

123

Intel Pentium Processor Event-Vector Table

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

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

Επισκόπηση

Μνήμη, Καταχωρητές, Δεδομένα

Λειτουργίες και Μορφές Εντολών

Διευθυνσιοδότηση

Ενδεικτικά Σύνολα Εντολών

Ρουτίνες και Διακοπές

Βελτιστοποιήσεις Pentium 4

Ενδεικτικά Προγράμματα

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Intel-64: Μείωση Αναφορών στη Μνήμη

Επιπλέον καταχωρητές στο Itanium 2.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Ομαδοποίηση Εντολών

Μια δέσμη εντολών Intel-64 bundle περιέχει τρείς εντολές.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μείωση Διακλαδώσεων Υπό Συνθήκη (1)

(a) Δήλωση if .

(b) Assembly template του if.

(c) Εντολή Υπό Συνθήκη.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μείωση Διακλαδώσεων Υπό Συνθήκη (2)

(a) Δήλωση if-else.

(b) Αssembly template του if-else.

(c) Εντολές υπο συνθήκη.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Μείωση Διακλαδώσεων Υπό Συνθήκη (3)

(a) Δήλωση if-else.

(b) Αssembly template του if-else.

(c) Εντολές με κατηγόρημα.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

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

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

Επισκόπηση

Μνήμη, Καταχωρητές, Δεδομένα

Λειτουργίες και Μορφές Εντολών

Διευθυνσιοδότηση

Ενδεικτικά Σύνολα Εντολών

Ρουτίνες και Διακοπές

Βελτιστοποιήσεις Pentium 4

Ενδεικτικά Προγράμματα

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Reverse Polish Notation (1)* Μέθοδος υπολογισμού αριθμητικών εκφράσεων με χρήση στοίβας και χωρίς τη χρήση παρενθέσεων για καθορισμό προτεραιότητας των πράξεων. * Προτάθηκε από τον Jan Lucasiewicz, Πολωνό φιλόσοφο και μαθηματικό σε μορφή Preorder Notation (πρώτα οι τελεστές). Το αντίστροφο (Reverse) λέγεται και Postorder Nοtation, ενώ το συνηθισμένο λέγεται Inorder Notation,

(3 + 5) – (7 + 2) Inorder- + 3 5 + 7 2 Preorder ή Polish3 5 + 7 2 + - Postorder ή Reverse Polish

* Πληροφορίες – http://www-stone.ch.cam.ac.uk/documentation/rrf/rpn.html – http://en.wikipedia.org/wiki/Reverse_Polish_Notation

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Reverse Polish Notation (2)

Πιθανές κινήσεις

1. Είσοδος - Έξοδος2. Είσοδος - Στοίβα3. Στοίβα - Έξοδος4. Διαγραφή Στοίβα, Είσοδος

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Reverse Polish Notation (3)

Πίνακας καταστάσεων για τη μετατροπή inorder σε posorder.

o2o2

o1

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Reverse Polish Notation (4)Shunting Yard Algorithm (Dijkstra): Μετατροπή Inorder σε Postorder (RPN)

* While there are tokens to be read: * Read a token. * If the token is a number, then add it to the output queue. * If the token is an operator, o1, then: * while there is an operator, o2, at the top of the stack, and o1 has lower precedence or equal to that of o2, pop o2 off the stack, onto the output queue (2); * push o1 onto the stack (1). * If the token is a left parenthesis, then push it onto the stack (1). * If the token is a right parenthesis: * Until the token at the top of the stack is a left parenthesis, pop operators off the stack onto the output queue (2). * Pop the left parenthesis from the stack, but not onto the output queue (3). * If the stack runs out without a left parenthesis, then there are mismatched parentheses (5). * When there are no more tokens to read: * While there are still operator tokens in the stack: * If the operator token on the top of the stack is a parenthesis, then there are mismatched parenthesis (5). * Pop the operator onto the output queue (2). * Exit (4).

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Reverse Polish Notation (5)

Παραδείγματα εκφράσεων infix και οι ισοδύναμες εκφράσεις σε Reverse Polish Notation (postfix)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Reverse Polish Notation (6)

Χρήση στοίβας για την εκτίμηση μιάς έκφρασης σε μορφή

Reverse Polish Notation (postorder).

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

// 3 5 + 7 2 + - (read from left to right) // 3 5 + 7 2 + - (read from left to right)

• Push 3 onto stack • BIPUSH 3• Push 5 onto the stack • BIPUSH 5 – The stack now contains (3, 5) – The stack now contains (3, 5)• Use “+” operator • IADD – Pop two numbers from stack and – Pop two numbers from stack and push result (8) push result (8)• Push 7 onto the stack • BIPUSH 7• Push 2 onto the stack • BIPUSH 2 – The stack now contains (8, 7, 2) – The stack now contains (8, 7, 2)• Use “+” operator • IADD – Pop two numbers from stack and – Pop two numbers from stack and push result (9) push result (9)• Use “-” operator • ISUB – Pop two numbers from stack and – Pop two numbers from stack and push result (-1) push result (-1)

Reverse Polish Notation (7)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Reverse Polish Notation (8)

...movl $1, -12(%ebp)movl $2, -16(%ebp)movl $3, -20(%ebp)movl $4, -24(%ebp)movl -16(%ebp), %eaxmovl -12(%ebp), %ecxaddl %eax, %ecxmovl -24(%ebp), %edxmovl -20(%ebp), %eaxsubl %edx, %eaximull %ecx, %eaxmovl %eax, -8(%ebp)...

main () { int x, a, b, c, d;

a = 1; b = 2; c = 3; d = 4; x = (a + b) * (c - d);}

Παράδειγμα υπολογισμού έκφρασης σε πρόγραμμα C και το αντίστοιχοαπόσπασμα μεταγλώττισης σε Pentium assembly με GCC compiler.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Reverse Polish Notation (9)

0: iconst_1 1: istore_1 2: iconst_2 3: istore_2 4: iconst_3 5: istore_3 6: iconst_4 7: istore 4 9: iload_1 10: iload_2 11: iadd 12: iload_3 13: iload 4 15: isub 16: imul 17: istore_0 18: return

class rev{ public static void main () { int x, a, b, c, d;

a = 1; b = 2; c = 3; d = 4; x = (a + b) * (c - d); }}

Παράδειγμα υπολογισμού έκφρασης σε πρόγραμμα Javs και το αντίστοιχο απόσπασμα μεταγλώττισης σε JVM bytecode με Sun Java compiler.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Αναδρομικές Διαδικασίες (1)

Πύργοι του Ανόι με 3 δίσκους:

towers (3, 1, 3) = towers (2, 1, 2); towers (1, 1, 3); towers (2, 2, 3)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Αναδρομικές Διαδικασίες (2)

Πύργοι του Ανόι με 3 δίσκους:

towers (3, 1, 3) = towers (2, 1, 2); towers (1, 1, 3); towers (2, 2, 3)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Αναδρομικές Διαδικασίες (3)

Πύργοι του Ανόι με 3 δίσκους:

towers (3, 1, 3) = 3 δίσκοι από το 1 στο 3

towers (2, 1, 2) = 2 δίσκοι από το 1 στο 2

towers (1, 1, 3) 1 δίσκος από το 1 στο 3

towers (1, 1, 2) 1 δίσκος από το 1 στο 2

towers (1, 3, 2) 1 δίσκος από το 3 στο 2

towers (1, 1, 3) 1 δίσκος από το 1 στο 3

towers (2, 2, 3) = 2 δίσκοι από το 2 στο 3

towers (1, 2, 1) 1 δίσκος από το 2 στο 1

towers (1, 2, 3) 1 δίσκος από το 2 στο 3

towers (1, 1, 3) 1 δίσκος από το 1 στο 3

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Αναδρομικές Διαδικασίες (4)

Πύργοι του Ανόι με 5 δίσκους : towers (5, 1, 3)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Αναδρομικές Διαδικασίες (5)

Αναδρομική επίλυσης του προβλήματος των Πύργων του Ανόι.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Αναδρομικές Διαδικασίες (6)

Η στοίβα σε διάφορα στιγμιότυπα εκτέλεσης.

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Αναδρομικές Διαδικασίες (7)Άλλες γνωστές αναδρομικές διαδικασίες:

Παραγοντικό fact(n) = if (n == 1) return 1;

else return n * fact(n-1);

Αριθμοί Fibbonacci f(n) = if (n == 0)return 0;

else if (n == 1) return 1;

elsereturn f(n-1) + f(n-2);

Δυαδική Αναζήτηση (Binary Search)

Quick Sort, Bitonic Merge / Sort

Διάσχιση Δυαδικού Δένδρου (Prefix, Infix, Postfix Traversal)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Πύργοι του Ανόι σε Γλώσσα Assembly Pentium 4 (1)

. . .

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Πύργοι του Ανόι σε Γλώσσα Assembly Pentium 4 (2)

. . .

. . .

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Πύργοι του Ανόι σε Γλώσσα Assembly Pentium 4 (3)

. . .

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Πύργοι του Ανόι σε Γλώσσα Assembly JVM (1)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Πύργοι του Ανόι σε Γλώσσα Assembly JVM (2)

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Παραγοντικό σε Γλώσσα Assembly Pentium 4 (1)

int fact(int n) {

if (n == 1) return 1; else return n * fact(n-1); }

main () { int x;

x=fact(6);}

fact:pushl%ebpmovl %esp, %ebpsubl $8, %espcmpl $1, 8(%ebp)jne .L2movl $1, -4(%ebp)jmp .L4

.L2:movl 8(%ebp), %eaxsubl $1, %eaxmovl %eax, (%esp)call factmovl %eax, %edximull 8(%ebp), %edxmovl %edx, -4(%ebp)

.L4:movl -4(%ebp), %eaxleaveret.size fact, .-fact

.globl main.type main, @function

main:leal 4(%esp), %ecxandl $-16, %esppushl -4(%ecx)pushl%ebpmovl %esp, %ebppushl%ecxsubl $20, %espmovl $6, (%esp)call factmovl %eax, -8(%ebp)addl $20, %esppopl %ecxpopl %ebpleal -4(%ecx), %espret

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

Παραγοντικό σε Γλώσσα JVM (1)

class fact {

public static int myfact (int n) { if (n == 1) return 1; else return n * myfact(n-1); }

public static void main () { int x;

x = myfact(6); }}

public static int myfact(int); Code: 0: iload_0 1: iconst_1 2: if_icmpne 7 5: iconst_1 6: ireturn 7: iload_0 8: iload_0 9: iconst_1 10: isub 11: invokestatic #2 14: imul 15: ireturn

public static void main(); Code: 0: bipush 6 2: invokestatic #2 5: istore_0 6: return

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

Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc. All rights reserved. 0-13-148521-0

ΑσκήσειςΠροσπαθήστε να προγραμματίσετε τον υπολογισμό εκφράσεων RPN στο προσομοιωτή Mic-1.

Προσπαθήστε να προγραμματίσετε απλές αναδρομικές διαδικασίες στο προσομοιωτή Mic-1.

Παράδειγμα Σi = i + Σ(i-1), i=1,2,..n.

Μελετήστε τις αναδρομικές κλήσεις και τη στοίβα.