Επίλυση προβλημάτων μέσω Η/Υ

Σχετικά έγγραφα
Μικροαρχιτεκτονική του LC3

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

Σύνοψη των εντολών του LC3

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

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

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

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

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

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

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

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

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

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

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

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

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

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

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

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

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

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

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

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

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

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

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

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

Αρχιτεκτονικη υπολογιστων

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

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

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

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

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

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

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

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

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

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

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

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

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

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

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

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

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

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

ΟΜΑΔΕΣ ΕΝΤΟΛΩΝ: ΙΔΙΟΤΗΤΕΣ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

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

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

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

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

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

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

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

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

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

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

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

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

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

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Παραλληλισµός Εντολών (Pipelining)

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

Λιβανός Γιώργος Εξάμηνο 2017Β

Τεχνολογίες ημιαγωγών. Chapter 2 Instructions: Language of the Computer 1

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

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

Οργάνωση Η/Υ. Ο Επεξεργαστής TRN. Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 1 ο

(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να

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

Τελική Εξέταση, Απαντήσεις/Λύσεις

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

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

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

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

Θέµατα Φεβρουαρίου

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

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

Εισαγωγή στην Πληροφορική

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

ΗΜΥ 213. Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών week 5. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

Απλός επεξεργαστής (Επανάληψη)

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

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

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

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

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

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

Transcript:

Επίλυση προβλημάτων μέσω Η/Υ Πρόβλημα Αλγόριθμοι Γλώσσα Αρχιτεκτονική Συνόλου Εντολών Μικροαρχιτεκτονική Κυκλώματα Στοιχεία 2

Ας σχεδιάσουμε μια πραγματική υπολογιστική μηχανή Ιδέα: Να βασιστούμε σε κάποιο από τα υπολογιστικά μοντέλα της θεωρίας. Γιατί; Συνέπεια θεωρητικής ανάλυσης πράξης Turing machine ή κάποια από τις παραλλαγές της (π.χ. πολλές ταινίες, πολλές κεφαλές) Ταινία που περιλαμβάνει δεδομένα εισόδου και εξόδου Κεφαλή που διαβάζει, γράφει και μετακινείται Καταχωρητής κατάστασης Χώρος για αποθήκευση του προγράμματος https://www.youtube.com/watch?v=e3kelemwfhy 3

Ας σχεδιάσουμε μια πραγματική υπολογιστική μηχανή Register Machine ή κάποια από τις παραλλαγές της (π.χ. RAM, RASP) που είναι υπολογιστικά ισοδύναμες με τις μηχανές Turing Σύνολο καταχωρητών Εντολές Αριθμητικές, ελέγχου, άλματος Καταχωρητής κατάστασης Λίστα εντολών (πρόγραμμα) Οι σύγχρονοι υπολογιστές αποτελούν υλοποιήσεις των register machines RAM model Αρχιτεκτονική Harvard (μικροελεγκτές και επεξεργαστές DSP) RASP model Αρχιτεκτονική Von Neumann (CPUs προσωπικών υπολογιστών, εξυπηρετητών, υπερυπολογιστών, κινητών τηλεφώνων) 4

Υπολογιστικές μηχανές: Σημαντικά ζητήματα Αφαίρεση (abstraction): Μας βοηθά να είμαστε παραγωγικοί Δεν χρειάζεται να γνωρίζω μηχανές εσωτερικής καύσης για να οδηγήσω ένα αυτοκίνητο Δεν χρειάζεται να γνωρίζω πως είναι οργανωμένο το υλικό και το λογισμικό συστήματος για να υλοποιήσω ένα πρόγραμμα που εκτελείται σωστά Μέχρι κάτι να πάει στραβά : Γιατί δεν παίρνει μπροστά το αυτοκίνητο; Πώς ελέγχω τα λάδια; Πού είναι το μπουζί; Γιατί δεν εκτελείται το πρόγραμμά μου για μεγαλύτερη είσοδο; Είναι σημαντικό να κατανοούμε όλα τα μέρη ενός συστήματος και τον τρόπο με τον οποίο αλληλεπιδρούν 5

Υπολογιστικές μηχανές: Σημαντικά ζητήματα Υλικό vs. Λογισμικό Δεν τίθεται ζήτημα επιλογής ανάμεσα στα δύο Και τα δύο είναι συστατικά μέρη ενός υπολογιστικού συστήματος Ακόμα και αν κάποιος επικεντρωθεί στο ένα πρέπει να έχει καλή κατανόηση του άλλου 6

Αρχιτεκτονική Von Neumann Υλοποιεί την έννοια του αποθηκευμένου προγράμματος (stored program) Το πρόγραμμα είναι μια αλληλουχία εντολών που αποθηκεύεται σε μία μονάδα μνήμης Στην ίδια μνήμη αποθηκεύονται και τα δεδομένα του προγράμματος Η κεντρική μονάδα επεξεργασίας και η αριθμητική και λογική μονάδα διαβάζουν εντολές και δεδομένα από τη μνήμη και εκτελούν πράξεις Οι εντολές του προγράμματος μπορούν να αλλάξουν δυναμικά (μία εντολή είναι δυνατόν να αντικατασταθεί κατά την εκτέλεση από μία άλλη) Βασικοί καταχωρητές: PC: Program Counter (δείχνει την εντολή που εκτελείται) IR: Instruction register (αποθηκεύει την εντολή που εκτελείται) MAR: Memory Address Register (δείχνει τη θέση μνήμη που προσπελαύνεται) MDR: Memory Data Register (αποθηκεύει τα δεδομένα που θα εγγραφούν ή θα διαβαστούν από τη μνήμη) 7

Αρχιτεκτονική Von Neumann Διεύθυνση Μνήμη Δεδομένα 200 PC CPU 200 ADD r5,r1,r3 ADD IR r5,r1,r3 8

Αρχιτεκτονική Harvard Διαφοροποίηση από von Neumann: Οι εντολές και τα δεδομένα αποθηκεύονται σε διαφορετικές μονάδες μνήμης Μνήμη δεδομένων (τυπικά read-write) Μνήμη προγράμματος (τυπικά read-only) Το πρόγραμμα δεν μπορεί να αλλάξει κατά την εκτέλεση 9

Αρχιτεκτονική Harvard διεύθυνση Μνήμη δεδομένων δεδομένα διεύθυνση PC CPU Μνήμη προγράμματος δεδομένα 10

Οργάνωση ενός τυπικού υπολογιστικού συστήματος 11

Αρχιτεκτονική Συνόλου Εντολών Instruction Set Architecture - ISA Εντολές (instructions): Το βασικό στοιχείο μιας αρχιτεκτονικής Διεπαφή υλικού λογισμικού «Γλώσσα» του επεξεργαστή Περιλαμβάνουν: Αναγνωριστικό κωδικό (opcode) Τελεστές (operands) Το σύνολο των εντολών χαρακτηρίζει την αρχιτεκτονική του επεξεργαστή: x86 Power, PowerPC RISC: Alpha, MIPS, SPARC, ARM SIMD: CRAY1 VLIW: IA64 12

MIPS ISA 13

ARM ISA 14

LC3 ISA 15

Επιλογές μιας αρχιτεκτονικής συνόλου εντολών Ρεπερτόριο εντολών Μέγεθος λέξης (π.χ. 16 bit, 32bit, 64bit) Εντολές με σταθερό ή μεταβλητό μήκος λέξης x86: μεταβλητό μήκος ARM 32-bit: όλες οι εντολές έχουν μήκος 32 bit Αριθμός τελεστών (διευθύνσεων) στις εντολές: 0: αρχιτεκτονική στοίβας (push, pop, op) 1: αρχιτεκτονική συσσωρευτή (LD X, ST X, ADD X) 2: 2-τελεστές (A = A op B) 3: 3-τελεστές (Α = Β op C) Memory/memory vs. Load/Store x86: 2 διευθύνσεις, memory/memory MIPS: 3 διευθύνσεις, load / store Αριθμός/μέγεθος καταχωρητών που είναι «ορατοί» στον προγραμματιστή 16

Επιλογές μιας αρχιτεκτονικής συνόλου εντολών (συν.) Οργάνωση μνήμης Εύρος φυσικών διευθύνσεων Διευθυνσιοδότηση (byte, 2-byte, 4-byte, 8-byte) Υποστήριξη εικονικής μνήμης Τρόποι διευθυνσιοδότησης (addressing modes) και πρόσβασης στη μνήμη: Άμεση (immediate) Απόλυτη (absolute ή direct) Σχετικά με τον PC (PC relative) Άμεση μέσω καταχωρητή (register direct) Βάση και offset (base + offset) Τύποι δεδομένων που υποστηρίζονται Ακέραιοι Πραγματικοί (κινητής υποδιαστολής) Χαρακτήρες Συμβολοσειρές 17

Μικροαρχιτεκτονική Περιλαμβάνει σχεδιαστικές επιλογές που δεν είναι ορατές στον προγραμματιστή και υλοποιούν εσωτερικά την αρχιτεκτονική συνόλου εντολών, π.χ.: Εσωτερικοί (κρυφοί επεξεργαστές) Οργάνωση της κρυφής μνήμης (cache) Υλοποίηση της μονάδας ελέγχου και των διάφορων αριθμητικών και λογικών μονάδων Π.χ. Δύο επεξεργαστές Α, Β, με την ίδια ISA που υποστηρίζει διαίρεση. Ο Α έχει μονάδα διαίρεσης στο υλικό, ο Β δεν έχει (και την πραγματοποιεί μέσω πολλαπλασιασμών, αθροίσεων, αφαιρέσεων, κλπ) Υποστήριξη σωλήνωσης (pipeline) και υλοποίηση του pipeline (πόσα στάδια;). Βλ. Αρχιτεκτονική Υπολογιστών 5 ο Εξάμηνο 18

Little Computer 3 - LC3 Εκπαιδευτικός υπολογιστής Δεν έχει υλοποιηθεί σε πραγματικό σύστημα Υπάρχουν εξομοιωτής (simulator) και εργαλεία προγραμματισμού (assembler, debugger) http://highered.mheducation.com/sites/0072467509/student_view0/lc-3_simulator.html http://highered.mheducation.com/sites/0072467509/student_view0/lc- 3_simulator_lab_manual.html Σχεδιάστηκε από τους Yale N. Patt (University of Texas at Austin) και Sanjay J. Patel (University of Illinois at Urbana Champaign) Yale Patt: http://users.ece.utexas.edu/~patt/ 19

LC3 ISA 16 bit Σταθερό μήκος εντολών Οργάνωση μνήμης: 2 16 θέσεις Διευθυνσιοδότηση 16 bit (2 byte) Καταχωρητές: 8 16-bit γενικού σκοπού (R0 R7) (για φόρτωση δεδομένων και πραγματοποίηση πράξεων) 3 1-bit για έλεγχο συνθηκών: N = negative, Z = zero, P = positive Ρεπερτόριο εντολών: 15 εντολές (+1 απροσδιόριστη για μελλοντικές επεκτάσεις) Αριθμητικές και λογικές εντολές: ADD, AND, NOT Εντολές φόρτωσης δεδομένων: LD, LDI, LDR, LEA, ST, STR, STI Εντολές ελέγχου ροής (άλματος): BR, JSR/JSRR, JMP, RTI, TRAP Load / Store 3 τελεστές (3 operands): A = B op C 20

LC3 ISA (συν.) Τύποι δεδομένων: 16 bit ακέραιος, συμπλήρωμα ως προς 2 Τρόποι αναφοράς σε δεδομένα (διευθυνσιοδότηση - addressing modes): Σε δεδομένα που δεν είναι στη μνήμη: Άμεση: Η εντολή περιλαμβάνει την τιμή που θέλουμε να χειριστούμε, π.χ. πρόσθεσε στο περιεχόμενο του καταχωρητή R0 το «5» Mέσω καταχωρητή: π.χ. πρόσθεσε στο περιεχόμενο του καταχωρητή R0 το περιεχόμενο του καταχωρητή R1 Σε δεδομένα που βρίσκονται στη μνήμη: Σχετικά με τον Program Counter (PC): Π.χ. φόρτωσε το περιεχόμενο της θέσης μνήμης που βρίσκεται 5 θέσεις μπροστά από τον PC, R0 = [PC + 5] Έμμεση: Π.χ. Βρες τη θέση μνήμης από το περιεχόμενο της θέσης μνήμης Χ. Φόρτωσε το περιεχόμενη της θέσης μνήμης που βρήκες, R0 = [[X]] Βάση και offset: Π.χ. υπολόγισε τη θέση μνήμης προσθέτοντας στο περιεχόμενο του καταχωρητή R0 ένα offset, R1 = [R0 + offset] 21

Flashback: αναπαράσταση ακέραιων αριθμών Πρόσημο μέτρο 1 bit για πρόσημο, τα υπόλοιπα bits μέτρο Συμπλήρωμα ως προς 1 (1 s complement) 1 bit πρόσημο, ο αντίθετος προκύπτει με αντιστροφή (ΝΟΤ) όλων των bit Άθροιση: πλήρης αθροιστής, αν προκύψει κρατούμενο, προστίθεται στο αποτέλεσμα Συμπλήρωμα ως προς 2 (2 s complement) 1 bit πρόσημο, ο αντίθετος προκύπτει με αντιστροφή (ΝΟΤ) όλων των bit και στη συνέχεια πρόσθεση της μονάδας Άθροιση: πλήρης αθροιστής, στην πράξη συμμετέχει και στο πρόσημο Η υπεροχή της αναπαράστασης του συμπληρώματος ως προς 2 στην ταχύτητα της πρόσθεσης την καθιστά ως τη δημοφιλέστερη αναπαράσταση ακέραιων αριθμών στους επεξεργαστές 22

LC3 datapath 23

Εντολές LC3 Αποτελούν τη «γλώσσα» του επεξεργαστή Μπορούν να χρησιμοποιηθούν για απευθείας προγραμματισμό (assembly programming): [LABEL] <OP> <OPERANDS> π.χ. ; this is a comment VALUE.BLKW 1 ; variable definition LOOP ADD R2, R3, R4 ADD R2, R3, #10 BRn LOOP JMP R2 LD R4, VALUE Μπορεί να είναι ο τελικός ή ο ενδιάμεσος κώδικας μιας γλώσσας υψηλότερου επιπέδου (π.χ. C to LC3) 24

Κωδικοί εντολών (opcodes) 4 bits 25

SR = Source Register, DR = Destination Register (3 bits) 26

Άμεση διευθυνσιοδότηση (immediate) αν το bit5 = 1 27

Πρόσβαση (άλμα ή ανάγνωση/εγγραφή) σχετική με τον PC 28

Πρόσβαση (άλμα ή ανάγνωση/εγγραφή) ανάλογα με το περιεχόμενο καταχωρητή βάσης (BaseR) και πρόσθεση offset 29

Αριθμητικές και λογικές εντολές: ADD, AND, NOT Μόνο 3 εντολές Οι τελεσταίοι είναι καταχωρητές Δεν πραγματοποιούν πρόσβαση στη μνήμη Οι εντολές ADD και AND έχουν και άμεση λειτουργία (ο τελεσταίος είναι «καλωδιωμένος» στην εντολή) Ο καταχωρητής προορισμού και πηγής μπορεί να είναι ο ίδιος 30

ADD Σύνταξη εντολής: ADD Dst, Src1, Src2 ADD Dst, Src1, imm5 π.χ. ADD R2, R3, R4 ; R2 R3 + R4 ADD R2, R3, #7 ; R2 R3 + 7 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0001 Dst Src1 0 00 Src2 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0001 Dst Src1 1 imm5 Λειτουργία: if (bit[5] == 0) Dst = Src1 + Src2; else Dst = Src1 + SEXT(imm5); setcc(); Ενημερώνει τους καταχωρητές Ν, Ζ, P 31

Flashback: επέκταση προσήμου (SEXT) short x = -112; (16 bits) int y; (32 bits) y = (int)x; Πρόσημο-μέτρο 1 s complement 2 s complement Στο παράδειγμα της προηγούμενης διαφάνειας: ADD R2, R3, #7 ; R2 R3 + 7 imm5 = 00111, SEXT(imm5) = 0000000000000111 1000000001110000 10000000000000000000000001110000 1111111110001111 11111111111111111111111110001111 1111111110010000 11111111111111111111111110010000 32

AND Ομοίως με ADD αντί για άθροιση, γίνεται λογικό AND 33

ΝΟΤ Σύνταξη εντολής: NOT Dst, SR π.χ. NOT R4, R2 ;R4 NOT(R2) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1001 Dst Src 1 11111 Λειτουργία: Dst = NOT(Src); setcc(); 34

Εντολές πρόσβασης στη μνήμη Ανάγνωσης / φόρτωσης (read / load) LD: Φόρτωση σχετική με τον PC LDR: Φόρτωση με βάση και offset LDI: Έμμεση φόρτωση Εγγραφής / αποθήκευσης (write / store) ST: Αποθήκευση σχετική με τον PC STR: Αποθήκευση με βάση και offset STI: Έμμεση αποθήκευση Υπολογισμού διεύθυνσης LEA: Υπολογισμός διεύθυνσης και αποθήκευση σε καταχωρητή 35

Προσδιορισμός διεύθυνσης σχετικής με τον PC Αφορά τις εντολές LD και ST Σκοπός είναι να περιγράψουμε μια διεύθυνση μέσα σε μία εντολή. Όμως τόσο οι διευθύνσεις όσο και οι εντολές είναι 16bit Αφού αφαιρέσουμε 4 bit για κωδικό εντολής και 3 bit για να περιγράψουμε τον καταχωρητή που συμμετέχει (Src ή Dst) απομένουν 9 bits για τον καθορισμό διεύθυνσης Χρησιμοποιούμε αυτά τα 9 bit για να περιγράψουμε ένα offset από την τρέχουσα τιμή του PC Με αυτές τις δύο εντολές μπορούμε να έχουμε πρόσβαση σε θέσεις μνήμης «κοντά» στην εντολή που εκτελείται. 9 bits: -256 offset 255 Πρόσβαση σε διεύθυνση Χ: PC - 256 offset PC + 255 Για πρόσβαση οπουδήποτε στη μνήμη χρησιμοποιούνται οι LDR, LDI, STR, STI 36

Προσδιορισμός διεύθυνσης σχετικής με τον PC (συν.) Στο προγραμματιστικό επίπεδο χρησιμοποιούνται κανονικά με τη βοήθεια ετικετών. Αν η πρόσβαση παραβιάζει τον παραπάνω κανόνα, o assembler θα επισημάνει λάθος. Π.χ. VALUE.BLKW 1 ; variable definition LD R4, VALUE Αν οι θέσεις μνήμης που μεσολαβούν (εντολές ή δεδομένα) από τον ορισμό της μεταβλητής VALUE ως την ανάγνωση της μέσω της LD είναι 255, τότε μεταγλωττίζεται το πρόγραμμα. Αλλιώς, ο assembler εντοπίζει λάθος. 37

LD 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Σύνταξη εντολής: LD Dst, LABEL π.χ. LD R4, VALUE ; R4 mem[value] 0010 Dst PCoffset9 Λειτουργία: Dst = mem[pc + SEXT(PCoffset9)]; setcc(); : Η τιμή του PC έχει αυξηθεί αμέσως μετά τη φόρτωση της εντολής 38

LD 39

ST 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Σύνταξη εντολής: ST Src, LABEL π.χ. ST R4, VALUE ; mem[value] R4 0011 Src PCoffset9 Λειτουργία: mem[pc + SEXT(PCoffset9)] = Src; : Η τιμή του PC έχει αυξηθεί αμέσως μετά τη φόρτωση της εντολής 40

ST 41

Πρόσβαση σε ολόκληρη τη μνήμη Οι LD και ST μπορούν να προσπελάσουν θέσεις μνήμης «κοντά» στον PC: +: Με μία εντολή έχω άμεση πρόσβαση στη μνήμη χωρίς να χάνω κύκλους σε υπολογισμό διευθύνσεων -: Περιορίζομαι στο εύρος [PC 256, PC + 255] Για να προσπελάσουμε οποιαδήποτε θέση μνήμης χρειαζόμαστε διεύθυνση που να μπορεί να λάβει τιμή από 0 έως 2 16, άρα χρειάζoνται 16 bit. Μπορούμε να χρησιμοποιήσουμε για τη διεύθυνση: Κάποιον από τους 16 bit καταχωρητές (εντολές LDR, STR) Οποιαδήποτε θέση μνήμης (LDI, STI) 42

LDR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Σύνταξη εντολής: LDR Dst, BaseR, offset6 π.χ. LDR R4, R2, # 5 ; R4 mem[r2 5] 0110 Dst BaseR offset6 Λειτουργία: Dst = mem[baser + SEXT(offset6)]; setcc(); 43

LDR Η LDR κατά κύριο λόγο χρησιμοποιείται με μηδενικό offset 4 bit κωδικός, 3 bit Dst, 3 bit καταχωρητής βάσης, μένουν 6 bit που μπορούν να αξιοποιηθούν για offset Μπορεί να υποστηρίξει σύνθετους τύπους δομών COORDS.BLKW 3 ; X, Y, Z coordinates ; a lot of code / data here ; > 256 memory locations ADDR.BLKW COORDS ; initialized to the address ; (memory location) of COORDS ; LD COORDS does not work! ; (memory distance > 256) LD R0, ADDR LDR R1, R0, #0 ; R1 stores X coordinate LDR R2, R0, #1 ; R2 stores Y coordinate LDR R3, R0, #2 ; R3 stores Z coordinate 44

LDR 45

STR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Σύνταξη εντολής: STR Src, BaseR, offset6 π.χ. STR R4, R2, #5 ; mem[r2 + 5] R4 0111 Src BaseR offset6 Λειτουργία: mem[baser + SEXT(offset6)] = Src; 46

STR 47

LDΙ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Σύνταξη εντολής: LDI Dst, LABEL π.χ. 1010 Dst PCoffset9 LDI R4, ONEMORE ; R4 mem[mem[onemore]] Λειτουργία: Dst = mem[mem[pc + SEXT(PCoffset9)]]; setcc(); Λογική: Αποθηκεύω «κοντά» τη διεύθυνση μιας θέσης μνήμης που είναι «μακρυά» και χρησιμοποιώ την κοντινή διεύθυνση για τη μακρυνή προσπέλαση. Διαβάζει απευθείας το περιεχόμενο της θέσης μνήμης στην οποία δείχνει ένας δείκτης (εδώ ο ONEMORE) 48

LDΙ 49

STΙ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Σύνταξη εντολής: STI Src, LABEL π.χ. 1011 Src PCoffset9 STI R4, NOT_HERE ; mem[mem[not_here]] R4 Λειτουργία: mem[mem[pc + SEXT(PCoffset9)]] = Src; 50

STΙ 51

LEA 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Σύνταξη εντολής: LEA Dst, LABEL π.χ. LEA R4, TARGET ; R4 address of TARGET. 1110 Dst PCoffset9 Λειτουργία: Dst = PC + SEXT(PCoffset9); setcc(); Λογική: Χρησιμοποιείται για την πρόσβαση δεδομένων σε πίνακα που βρίσκεται «κοντά» στην εντολή εκτέλεσης 52

Εντολές ελέγχου ροής: JMP, BR JMP: Άλμα (JuMP) χωρίς συνθήκη (συμβαίνει πάντα) BR: Άλμα (BRanch) υπό συνθήκη (συμβαίνει αν ικανοποιείται η συνθήκη) Καταχωρητές συνθήκης Condition Codes (CC - 1bit) N, Negative Z, Zero P, Positive Λαμβάνουν τιμή από τις εντολές που γράφουν σε καταχωρητές (ADD, AND, NOT, LD, LDR, LDI, LEA) Θυμηθείτε setcc() στην περιγραφή λειτουργίας των εντολών Μόνο ένας από τους καταχωρητές μπορεί να έχει την τιμή «1», ανάλογα με το τι συνέβη στην τελευταία από τις παραπάνω εντολές που εκτελέστηκε 53

JMP Σύνταξη εντολής: JMP BaseR π.χ. JMP R2 ; PC R2 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1100 000 BaseR 000000 Λειτουργία: PC = BaseR; 54

BR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Σύνταξη εντολής: BRn LABEL BRzp LABEL BRz LABEL BRnp LABEL BRp LABEL BRnz LABEL BRnzp LABEL BR LABEL π.χ. 0000 n z p PCoffset9 BRzp LOOP ; Branch to LOOP if the last result was zero or positive. BR NEXT ; Unconditionally branch to NEXT. Λειτουργία: if ((n AND N) OR (z AND Z) OR (p AND P)) PC = PC + SEXT(PCoffset9); 55

Εντολές υπορουτινών: Εντολές για την υποστήριξη υπορουτινών: Άλμα σε υπορουτίνα (JSR, JSRR) Επιστροφή από υπορουτίνα (RET) Παρέχουν: Προγραμματιστική ευκολία Επίδοση Βοήθεια για αποφυγή σφαλμάτων Κλασσικό παράδειγμα υποστήριξης του υλικού στις προγραμματιστικές πρακτικές 56

JSR, JSRR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0100 1 PCoffset11 Σύνταξη εντολής: JSR LABEL JSRR BaseR π.χ. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0100 0 00 BaseR 000000 JSR QUEUE ; Jump to memory location with label QUEUE ; Save current memory location (PC) in R7 JSRR R3 ; Jump to memory location contained in R3 ; Save current memory location (PC) in R7 Λειτουργία: R7 = PC ; JSR: Άλμα σε ρουτίνα «κοντά» if (bit[11] == 0) JSRR: Άλμα σε ρουτίνα «μακριά» PC = BaseR; else PC = PC + SEXT(PCoffset11); 57

RET Σύνταξη εντολής: RET π.χ. RET 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1100 000 111 000000 Λειτουργία: PC = R7; Πρόκειται για την JMP με BaseR = 111 (7) 58

Αλληλεπίδραση με το Λειτουργικό Σύστημα (ΛΣ) Τι είναι το ΛΣ; Λογισμικό που αναλαμβάνει να διεκπεραιώσει συγκεκριμένες λειτουργίες διαχείρισης Ρόλος ΛΣ γενικά: Έλεγχος πρόσβασης στο υλικό (μνήμη, περιφερειακές συσκευές Ε/Ε) Υποστήριξη εκτέλεσης πολλών προγραμμάτων (multitasking) Διαχείριση μνήμης εικονική μνήμη Προστασία / ασφάλεια Πολιτικές διαχείρισης πόρων 59

Επίλυση προβλημάτων μέσω Η/Υ Πρόβλημα Λειτουργικό Σύστημα Αλγόριθμοι Γλώσσα Αρχιτεκτονική Συνόλου Εντολών Μικροαρχιτεκτονική Κυκλώματα Στοιχεία 60

Πού βρίσκεται το ΛΣ; Πρόγραμμα και δεδομένα φορτωμένα στη μνήμη τους συστήματος 61

Πώς εμπλέκεται το ΛΣ; A: TRAP Ζητά τη συνδρομή του ένα πρόγραμμα. Γίνεται ρητά με εντολή στον κώδικα του προγράμματος (trap) που αντιστοιχεί σε άλμα σε προκαθορισμένη θέση μνήμης (trap vector table) Π.χ. «Δώσε μου ένα χαρακτήρα από το πληκτρολόγιο» 2 3 1 62

Πώς εμπλέκεται το ΛΣ; Β: Exception Ανταποκρινόμενο σε σφάλμα του υπό εκτέλεση προγράμματος (exception). Π.χ. Διαίρεση με το «0» (x86), λάθος κωδικός εντολής (LC3) Γίνεται άλμα σε προκαθορισμένη θέση μνήμης (ανάλογα με το είδος του σφάλματος) όταν εντοπιστεί το σφάλμα από το υλικό του επεξεργαστή 2 3 1 63

Πώς εμπλέκεται το ΛΣ; Γ: Interrupt Ανταποκρινόμενο σε αίτημα διακοπής από κάποια περιφερειακή συσκευή Π.χ. ο χρήστης πάτησε ένα πλήκτρο, η κάρτα δικτύου έχει λάβει δεδομένα Γίνεται άλμα σε προκαθορισμένη θέση μνήμης ανάλογα με τη συσκευή που ζητά τη διακοπή όταν αυτή αναγνωριστεί από το υλικό 2 3 1 64

TRAP Σύνταξη εντολής: TRAP trapvector8 π.χ. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1111 0000 trapvect8 TRAP x23 ; Directs the operating system to execute the IN system ; call. The starting address of this system call is contained ; in memory location x0023. Λειτουργία: R7 = PC ; PC = mem[zext(trapvect8)]; 65

Είσοδος/Έξοδος (Ε/Ε) Input/Output (I/O) Γενικά υπάρχουν 2 στρατηγικές: Memory-mapped I/O: Ο επεξεργαστής επικοινωνεί με τις περιφερειακές συσκευές μέσω εντολών προσπέλασης στη μνήμη (δεν χρειάζονται ειδικές εντολές για Ι/Ο) Ένα μέρος των διευθύνσεων της μνήμης απεικονίζεται στις περιφερειακές συσκευές I/O (port) mapped I/O: Ο επεξεργαστής διαθέτει ρητές εντολές για είσοδο / έξοδο (π.χ. IN, OUT στον x86) Οι διευθύνσεις για τη μνήμη και τις συσκευές είναι διακριτές Ο LC3 υποστηρίζει memory-mapped I/O 66

Είσοδος/Έξοδος (Ε/Ε) Input/Output (I/O) Image taken from: http://me-lrt.de/memory-map-port-isolated-input 67

E/E στον LC3 Διαθέτει 2 περιφερειακές συσκευές: Πληκτρολόγιο Κονσόλα (οθόνη) Trap vector Assembler name Description x20 GETC Διαβάζει ένα χαρακτήρα από το πληκτρολόγιο και τον γράφει στον καταχωρητή R0 x21 OUT Γράφει το χαρακτήρα που βρίσκεται στον R0 στην οθόνη x22 PUTS Γράφει ένα string στην οθόνη (ξεκινώντας από τη διεύθυνση που δείχνει ο R0 και μέχρι να βρει x0000) x23 IN Διαβάζει ένα χαρακτήρα από το πληκτρολόγιο και τον γράφει στον καταχωρητή R0. Τυπώνει μήνυμα στην οθόνη (π.χ. Give a character) και γράφει το χαρακτήρα που πάτησε ο χρήστης στην οθόνη. x24 PUTSP Παραλλαγή της PUTS (2 χαρακτήρες ανά θέση μνήμης) x25 HALT Σταματά την εκτέλεση και τυπώνει ένα μήνυμα στην οθόνη 68

E/E στον LC3 Η επικοινωνία με κάθε περιφερειακή συσκευή αναλαμβάνεται από το ΛΣ μέσω κάποιου οδηγού (driver) Ο οδηγός γνωρίζει τις λεπτομέρειες υλοποίησης κάθε συσκευής (π.χ. πόσους καταχωρητές διαθέτει η συσκευή, που είναι απεικονισμένοι, με ποιες εντολές/πρωτόκολλο πρέπει να επικοινωνήσει Διεύθυνση Όνομα καταχωρητή Ε/Ε Λειτουργία xfe00 Keyboard status register Το bit15 δείχνει αν υπάρχει νέος χαρακτήρας στο πληκτρολόγιο xfe02 Keyboard data register Περιλαμβάνει τον τελευταίο χαρακτήρα που πατήθηκε xfe04 Display status register Το bit15 δείχνει αν η οθόνη είναι έτοιμη να δεχτεί νέο χαρακτήρα xfe06 Display data register Ο χαρακτήρας που γράφεται σε αυτό τον καταχωρητή εμφανίζεται στην οθόνη xfffe Machine control register Αν το bit15 γίνει 0, το επεξεργαστής σταματά 69

E/E στον LC3 70

Παράδειγμα: ανάγνωση χαρακτήρα GETC JMP OS_GETC ; at memory location x0020 OS_KBSR.FILL xfe00 ; OS_KBDR.FILL xfe02 ; OS_GETC LDI R0, OS_KBSR BRZP OS_GETC LDI R0, OS_KBDR RET TRAP GETC ; user code ; memory location > x3000 71

Παράδειγμα: ανάγνωση χαρακτήρα GETC JMP OS_GETC ; at memory location x0020 OS_KBSR.FILL xfe00 ; OS_KBDR.FILL xfe02 ; OS_GETC LDI R0, OS_KBSR BRZP OS_GETC Κώδικας χρήστη (user code) LDI R0, OS_KBDR RET TRAP GETC ; user code ; memory location > x3000 72

Παράδειγμα: ανάγνωση χαρακτήρα GETC JMP OS_GETC ; at memory location x0020 OS_KBSR.FILL xfe00 ; OS_KBDR.FILL xfe02 ; OS_GETC LDI R0, OS_KBSR BRZP OS_GETC Κώδικας ΛΣ (OS/ kernel code) LDI R0, OS_KBDR RET TRAP GETC ; user code ; memory location > x3000 73

Exceptions και Interrupts Όταν συμβεί διακοπή (interrupt) ή σφάλμα (exception) τότε ο επεξεργαστής αυτόματα προχωρά στις παρακάτω ενέργειες: Εισέρχεται σε Supervisor mode θέτοντας το bit15 του PSR καταχωρητή Σώζεται η τρέχουσα τιμή του PC και του PSR Γίνεται άλμα στην κατάλληλη θέση του Interrupt Vector Table Εκτελείται η ρουτίνα εξυπηρέτησης διακοπής Τελευταία εντολή της ρουτίνας εξυπηρέτησης διακοπής είναι η RTI (βλ. συνέχεια) 74

RTI Σύνταξη εντολής: RTI 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1000 000000000000 Λειτουργία: if (PSR[15] == 0) PC = mem[r6] ; R6 is the SSP R6 = R6+1; TEMP = mem[r6]; R6 = R6+1; PSR = TEMP ; the privilege mode and condition codes of ; the interrupted process are restored else Initiate a privilege mode exception; 75

Επιπλέον διάβασμα: Introduction to Computing Systems: From Bits and Gates to C and Beyond, 2/e, Yale N. Patt, University of Texas at Austin, Sanjay J. Patel, University, of Illinois at Urbana/Champaign, Appendix A: The LC3 ISA: http://highered.mheducation.com/sites/dl/free/0072467509/104653/p attpatelappa.pdf 76