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

Post on 20-Jan-2016

36 views 3 download

description

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

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

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.

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

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

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

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

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

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

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

Επισκόπηση

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

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

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

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

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

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

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

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

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

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

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

Συστήματα

Οργάνωση

Εφαρμογές

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

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

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

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

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

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

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(μικροκώδικας ή ευθεία υλοποίηση)

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..

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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 κώδικα.

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..

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

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

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

Επισκόπηση

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

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

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

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

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

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

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 (μικρό ή μεγάλο άκρο);

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

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) Χωρίς στοίχιση.

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.

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 “ανεβαίνει”

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: Τυπική λειτουργία χρήστη και διεργασιών.

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EFLAGS ~ Processor Status Word

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

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

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

Trace bit (για debugging)

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

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).

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

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

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

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

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

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)

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 εξαρτάται από τα συμφραζόμενά μας, δηλαδή απότη δική μας αντίληψη για τα δεδομένα.

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

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

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

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

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

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

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

Επισκόπηση

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

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

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

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

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

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

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

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

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

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

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

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

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..

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%

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 καταχωρητές.

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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 για να συνδιάσουν πυκνότητα και απόδοση.

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 ή πλήρης διεύθυνση

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

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

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

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

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.

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.

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), κώδικας μέσου μεγέθους.

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

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.

Ασκήσεις

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

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

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

Επισκόπηση

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

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

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

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

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

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

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

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)

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

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

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

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

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 στοιχείων.

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).

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

Ασκήσεις

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

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

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

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

Επισκόπηση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εντολές JVM (1)

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

Εντολές JVM (2)

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.

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

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. Διεθυνσιοδότηση: Απόλυτη και Μετατόπιση.

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 καταχωρητής γενικής χρήσης.

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.

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.

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.

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

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

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

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

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

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

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).

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). Μείωση ορίου τερματισμού κατά ένα.

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 για δεικτοδοτημένη προσπέλαση.

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 είναι συνάρτηση.

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

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.

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.

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)

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)

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.

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

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

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

Επισκόπηση

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

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

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

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

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

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

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

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

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

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

Ρουτίνες

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

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

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

Συ-Ρουτίνες

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

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

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

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

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

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

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

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

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

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

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

105

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

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

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

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

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

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

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

106

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

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

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

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

107

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

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

Fetch

108

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

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

Execute

109

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

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

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

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

110

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

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

Processor Context

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

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

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

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

111

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

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

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

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

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

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

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

PC

112

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

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

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

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

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

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

113

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

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

Processor Context

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

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

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

114

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

115

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

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

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

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

Maskable – NonMaskable Interrupts.

117

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

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

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

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

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

118

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

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

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

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

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

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

119

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

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

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

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

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

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

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

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

122

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

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

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

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

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

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

123

Intel Pentium Processor Event-Vector Table

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

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

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

Επισκόπηση

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

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

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

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

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

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

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

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

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

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

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

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

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

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) Εντολή Υπό Συνθήκη.

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) Εντολές υπο συνθήκη.

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) Εντολές με κατηγόρημα.

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

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

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

Επισκόπηση

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

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

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

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

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

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

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

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

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. Διαγραφή Στοίβα, Είσοδος

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

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).

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)

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).

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)

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.

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.

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)

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)

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

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

Αναδρομικές Διαδικασίες (4)

Πύργοι του Ανόι με 5 δίσκους : towers (5, 1, 3)

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

Αναδρομικές Διαδικασίες (5)

Αναδρομική επίλυσης του προβλήματος των Πύργων του Ανόι.

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

Αναδρομικές Διαδικασίες (6)

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

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)

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

Πύργοι του Ανόι σε Γλώσσα Assembly Pentium 4 (1)

. . .

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

Πύργοι του Ανόι σε Γλώσσα Assembly Pentium 4 (2)

. . .

. . .

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

Πύργοι του Ανόι σε Γλώσσα Assembly Pentium 4 (3)

. . .

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

Πύργοι του Ανόι σε Γλώσσα Assembly JVM (1)

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

Πύργοι του Ανόι σε Γλώσσα Assembly JVM (2)

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

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

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.

Μελετήστε τις αναδρομικές κλήσεις και τη στοίβα.