Application Operating System. Datapath & Control/Memory. Digital Design Circuit Design. Layout

Σχετικά έγγραφα
Επανάληψη Σύστημα Διασωλήνωσης (Pipelining) Κεφάλαιο 4 - Σύστημα ιασωλήνωσης

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός Κεφ. 4: O επεξεργαστής Σύστημα Διασωλήνωσης (Pipelining)

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

Εισαγωγή. Σύνοψη βασικών εννοιών, 5-stage pipeline, επεκτάσεις για λειτουργίες πολλαπλών κύκλων

Chapter 6 Αύξηση της απόδοσης με διοχέτευση (pipeline)

Διάλεξη 12 Καθυστερήσεις (Stalls)

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Ενότητα 6 - Σύστημα Διασωλήνωσης. Π. Ευριπίδου (2007)

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

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

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

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

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

30 min κάθε «φάση» Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 1. Πλυντήριο. 2. Στεγνωτήριο. 3. ίπλωµα. 4. αποθήκευση. προσέγγιση για 4.

Διάλεξη 11 Προώθηση (Forwarding)

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

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

Pipeline: Ένα παράδειγμα από.τη καθημερινή ζωή. 30 min κάθε «φάση»

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Προχωρημένες Τεχνικές Pipelining. Ιάκωβος Μαυροειδής

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Διοχέτευση

CS425 Computer Systems Architecture

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

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

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Κεφάλαιο 4. Ο επεξεργαστής. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση

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

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

Pipeline: Ένα παράδειγµα από.τη καθηµερινή ζωή. 30 min κάθε «φάση»

Δυναμική Δρομολόγηση Εντολών (Dynamic Scheduling)

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

Παραλληλισμός σε επίπεδο εντολών

Pipelined Datapath, Hazards and Forwarding

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

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

Διοχέτευση (Pipeline)

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

Κεφάλαιο 6 Βελτίωση Απόδοσης με Διασωλήνωση (Enhancing Performance with Pipelining)

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

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

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

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

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

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

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

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

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

Κεφάλαιο 4. Ο επεξεργαστής

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Κεφ. 4: Ο επεξεργαστής 1. Διάδρομος δεδομένων και μονάδα ελέγχου 2.

Κεφάλαιο 4: Pipelining 75

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

Οι τέσσερις αρχές για τον σχεδιασμό του συνόλου εντολών μιας μηχανής είναι:

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

Διασωλήνωση - Pipelining

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ

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

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

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

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

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπερβαθμωτοι επεξεργαστές

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

Υλοποίηση Mικροεπεξεργαστή MIPS -16

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

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

(Branch Prediction Mechanisms)

Υπερβαθμωτή (superscalar) Οργάνωση Υπολογιστών

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

Εντολές Διακλάδωσης. #bubbles ~= pipeline depth X loop length. Next fetch started. Fetch. I-cache. Fetch Buffer. Decode. Issue Buffer.

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

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

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

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

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

Μέθοδοι Πρόβλεψης Διακλαδώσεων (Branch Prediction Mechanisms)

Instruction Execution Times

Περιορισμοί των βαθμωτών αρχιτεκτονικών

1.1 ΑΣΚΗΣΗ ΛΥΣΗ 2.1 ΑΣΚΗΣΗ ΛΥΣΗ 3.1 ΑΣΚΗΣΗ

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Static Scheduling. Ιάκωβος Μαυροειδής

Βιοµηχανία Αυτοκινήτων

ΗΥ425 Αρχιτεκτονική Υπολογιστών. Static Scheduling. Βασίλης Παπαευσταθίου Ιάκωβος Μαυροειδής

CS-425 Mid-term exam

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

Κάθε functional unit χρησιµοποιείται µια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

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

Υπερβαθµωτή Οργάνωση Υπολογιστών

ΔΙΑΛΕΞΗ 16: ΠΑΡΑΛΛΗΛΙΣΜΟΣ ΣΤΗΝ ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΩΝ

Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης

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

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

Σχεδίαση μονάδας ελέγχου επεξεργαστή

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

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

Instruction-Level Parallelism and its Dynamic Exploitation. Μάθηµα 3ο Computer Architecture-A Quantitative Approach

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

Μικροαρχιτεκτονική του LC3

Υποθετική Εκτέλεση Εντολών

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

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

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

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 4. Ο επεξεργαστής

Transcript:

Application Operating System Λογισμικό Oργάνωση Μικρο- Αρχιτεκτονική Compiler Firmware Instr. Set Proc. I/O system Datapath & Control/Memory Digital Design Circuit Design Layout Instruction Set Architecture (ΙSΑ) Υλικό Η ΑΣΕ (ΙSA) διασύνδεση μεταξύ λογισμικού και υλικού Η οργάνωση περιγραφή ροής και αποθήκευσης πληροφοριών και έλεγχου ξεχωριστά από την τεχνολογία υλοποίησης

Instruction Set Architecture (ISA) design i.e. decisions regarding: registers, memory addressing, addressing modes, instruction operands, available operations, control flow instructions, instruction encoding example ISAs: x86, ARM, MIPS, IBM 32 bit and 64 bit CISC, RISC Extending an ISA: new operations, e.g. bit manipulation to facilitate security, new data types e.g. 256-bit operands Defining Computer Architecture

MIPS ISA C: program counter points to next instruction to execute perations, operands (registers+memory), encoding of operations, syscalls

Computer organization: microarchitecture and hardware implementation of the ISA Number of pipe stages, size of caches, number of functional units, prediction, prefetching Design to maximize performance within constraints: cost, power, and availability Many options for implementing the ISA (huge and challenging design space) Critical making right choices Hardware configurable and dynamic: challenging how to configure it and use it efficiently Defining Computer Architecture

Implementation Technology Type of transistors mosfet, finfet, number of fins Size of transistors, wires, Metal Layers Placement and routing

AΣΕ (ISA) Οργάνωση Υλικό/Hardware

Επανάληψη Σύστημα Διασωλήνωσης (Pipelining) How to organize a processor 7

Διασωλήνωση 8

Pipelining Παραλληλισμός + Pipelining 9

Χρόνος Εκτέλεσης = I x CPI x Cycle Time I dynamic instructions Cycles Per Instruction Cycle Time Με ή χωρις pipeline το Ι είναι το ίδιο όπως και τo CPI = 1 (CPI=1 ιδεατά). Το Cycle Time; Tο ρολόι πρέπει να δουλεύει με την ταχύτητα του πιο αργού τμήματος 10

MIPS IF ID EX MEM WB Instruction Fetch I-Decode Execute Memory Access Write Back Χωρίς pipeline Cycle Time = κρίσιμο μονοπάτι του διαδρόμου δεδομένων (ίδιο για όλες τις εντολές) Με pipeline Cycle Time = Maximum (κρίσιμο μονοπάτι κάθε σταδίου) Στην καλύτερη περίπτωση pipeline Cycle Time = Cycle Time χωρίς pipeline / αριθμός σταδίων 11

MIPS Datapath Instruction Fetch Figure A.2, Page A-8 Instr. Decode. Fetch Execute Addr. Calc Memory Access Write Back Next PC 4 Adder Next SEQ PC RS1 Zero? MUX Address Instr. Memory Inst RS2 RD File MUX MUX Data Memory L M D MUX Imm Sign Extend WB Data

PIPELINE REGISTERS Καταχωρητές Διασωλήνωσης Pipelined MIPS Datapath Instruction Fetch Instr. Decode. Fetch Execute Addr. Calc Figure A.3, Page A-9 Memory Access Write Back Next PC 4 Adder Next SEQ PC RS1 Next SEQ PC Zero? MUX Address Memory IF/ID RS2 File ID/EX MUX MUX EX/MEM Data Memory MEM/WB MUX Imm Sign Extend RD RD RD WB Data

(Datapath) του Pipeline με control Instruction Fetch Instr. Decode. Fetch Execute Addr. Calc Memory Access Write Back Next PC 4 Adder Next SEQ PC RS1 Next SEQ PC Zero? MUX Address Memory IF/ID RS2 File ID/EX MUX MUX EX/MEM Memory MEM/WB MUX Datapath Imm Sign Extend RD RD RD WB Data Control Path

Καταχωρητές Διασωλήνωσης F/D: PC, instruction D/E: Src1,Src2, instruction, PC, imm(sign ext) control for other stages (muxes, op, Mem signals) E/W. W/M.

Εκτέλεση με διασωλήνωση Κάθε εντολή (ανεξάρτητα τύπου) πρέπει να περάσει από όλα τα στάδια Χρειάζεται 5 κύκλους για να ολοκληρωθεί μια εντολή Δυνατότητα να ολοκληρώνεται μια εντολή κάθε κύκλο 16

Κίνδυνοι Διασωλήνωσης (Pipeline Hazards ) ΙΔΕΑΤΑ: Το σύστημα διασωλήνωσης εργάζεται χωρίς διακοπές εάν η κάθε εντολή που εκτελείται στη διασωλήνωση είναι ανεξάρτητη από κάθε άλλη εντολή που εκτελείται στη Διασωλήνωση Στην πράξη υπάρχουν αλληλεξαρτήσεις μεταξύ των εντολών που εκτελούνται στην διασωλήνωσης Κίνδυνοι Διασωλήνωσης: Εμποδίζουν την επόμενη ακολουθία εντολών από του να εκτελεστεί κατά τη διάρκεια του προκαθορισμένου κύκλου μηχανής. (στάση διασωλήνωσης ή φυσαλίδες διασωλήνωσης) Stalls και Bubbles: μείωση της βελτίωσης από την χρήση του pipeline Ύπαρξη κινδύνου προαπαιτεί εξάρτηση αλλά όχι το αντίστροφο Δομικοί Κίνδυνοι (Structural Hazards) Κίνδυνοι Δεδομένων (Data Hazards) Κίνδυνοι Ροής (Control Hazards) 17

Speed Up Equation for Pipelining CPI pipelined = Ideal CPI + Average Stall cycles per Inst Ideal CPI 1Pipeline depth Speedup = Ideal CPI + Pipeline stall CPI Cycle Cycle Time Time unpipelined pipelined Ideal CPI = 1 Pipeline1 depth Speedup = 1 + Pipeline stall CPI Cycle Cycle Time Time unpipelined pipelined

k= Cycle Non-pipelined/Cycle Time Pipelined (ideally equal to # of stages) 19

Δομικοί Κίνδυνοι (Structural Hazards) Ορισμένοι συνδυασμοί εντολών δεν μπορούν να ικανοποιηθούν διότι χρειάζονται περισσότερους πόρους από αυτούς που διαθέτει η μηχανή 1. Ορισμένες λειτουργικές μονάδες δεν είναι διασωληνωμένες 2. Ορισμένες μονάδες δεν αναπαράγονται αρκετά για να ικανοποιήσουν όλους τους πιθανούς συνδυασμούς από εντολές. Αρχείο καταχωρητών που επιτρέπει μόνο μια πρόσβαση (Only one register-file port) Μια πόρτα μνήμης 20

Memory Instruction Fetch Instr. Decode. Fetch Execute Addr. Calc Memory Access Write Back Next PC 4 Adder Next SEQ PC RS1 Next SEQ PC Zero? MUX Address IF/ID RS2 File ID/EX MUX MUX EX/MEM MEM/WB MUX Imm Sign Extend RD RD RD WB Data Παράδειγμα: μια πόρτα μνήμης

Για ευκολία (show 2 memory boxes) Instruction Fetch Instr. Decode. Fetch Execute Addr. Calc Memory Access Write Back Next PC 4 Adder Next SEQ PC RS1 Next SEQ PC Zero? MUX Address Memory IF/ID RS2 File ID/EX MUX MUX EX/MEM Memory MEM/WB MUX Imm Sign Extend RD RD RD WB Data

Παράδειγμα: μια πόρτα μνήμης Time (clock cycles) Ποια είναι η εξάρτηση (dependence); Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 I n s t r. O r d e r Load Instr 1 Instr 2 Instr 3 Instr 4 Structural Hazard

Time (clock cycles) Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 I n s t r. O r d e r Load Instr 1 Instr 2 Stall Instr 3 Bubble Bubble Bubble Bubble Bubble Πως προκάλεις bubble στο pipeline?

Bubble στο FETCH Στο στάδιο fetch ελέγχει το πιο κάτω: if (Optype[E/M]==memory) PC = PC // stall Instruction[F/D]=nop // bubble else normal

Bubble/Stall Γενικά Εάν υπάρχει σε στάδιο εντολή που έχει hazzard, τότε ΠΡΟΗΓΟΥΜΕΝΑ ΣΤΑΔΙΑ STALL (διατηρούν κατάσταση) ΣΤΟ ΕΠΟΜΕΝΟ ΣΤΑΔΙΟ NOP (Bubble) TA ΑΛΛΑ ΣΤΑΔΙΑ ΠΡΟΧΩΡΟΥΝ KANONIKA

Μηχανισμός Εξασφάλισης της Διασωλήνωσης [Pipeline Interlocks] Επισημαίνει κινδύνους και Σταματά την τροφοδότηση στη διασωλήνωση της εντολής που θα χρησιμοποιήσει ένα δεδομένο μέχρι αυτό να παραχθεί από την παραγωγό εντολή Μονάδα ελέγχου κινδύνων για κάθε στάδιο. 27

Λύσεις για κίνδυνους δομής Λύση 1: Wait must detect the hazard must have mechanism to stall Χάνεις επίδοση Εάν οι εντολές πρόσβασης στη μνήμη είναι το 30% του ολικού αριθμού των εντολών. Πόσο πιο γρήγορη είναι η ιδανική μηχανή σε σύγκριση με την πραγματική μηχανή; Λύση 2: Throw more hardware at the problem Επίδοση με δύο πόρτες σε σχέση με ιδεατή;

Λύση των Κίνδυνων Δομών στο σχεδιασμό Next PC Next SEQ PC Next SEQ PC 4 Adder RS1 Zero? MUX Address Instr Cache IF/ID RS2 File ID/EX MUX MUX EX/MEM Data Cache MEM/WB MUX Datapath Imm Sign Extend RD RD RD WB Data Control Path

Εξάρτηση Δεδομένων: RAW Εξάρτηση Read After Write (RAW) I: add r1,r2,r3 J: sub r4,r1,r3 Αυτό μπορεί να προκαλέσει κίνδυνο σε ένα pipeline. Πότε;

Κίνδυνοι-Δεδομένων (Data Hazards) Κίνδυνοι-Δεδομένων δημιουργούνται όταν η διασωλήνωση διαφοροποιεί τη σειρά πρόσβασης σε τελεστές σε σύγκριση με τη σειρά πρόσβασης χωρίς διασωλήνωση Time (clock cycles) add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 IF ID/RF EX MEM WB I m Re g Im A L U Re g I m D m A L U Re g Im Re g D m A L U Re g Im Re g D m A L U Re g Re g D m A L U Re g D m Re g Ποιες είναι οι εξαρτήσεις (dependences) και ποιοι oi κίνδυνοι (hazards); 31

Μεταβίβαση (Forwarding) για αποφυγή Κινδύνου Δεδομένων Time (clock cycles) I n s t r. add r1,r2,r3 sub r4,r1,r3 O r d e r and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 32

Αλλαγές στο υλικό για Forwarding NextPC isters ID/EX mux mux EX/MEM Data Memory MEM/WR Immediate mux 33

Τι σημαίνει μεταβίβαση (forwarding); Μεταχείριση πεδίων των pipeline registers σαν πιθανά inputs στις εντολές Πχ: στο στάδιο ΕΧΕC εκτελούμε το πιο κάτω: if (Src1[D/E]!= NULL) if (Dest[Ε/Μ]==Src1[D/Ε]) Src1= DestValue[Ε/Μ] else if (Dest[M/W]==Src1[D/Ε]) Src1= DestValue[M/W] else Src1= SrcValue1[D/E] 34

Κίνδυνοι Δεδομένων και με Time (clock cycles) Forwarding I n s t r. lw r1,0(r2) sub r4,r1,r6 O r d e r and r6,r1,r7 or r8,r1,r9 35

Λύσεις του κινδύνου της εντολής φόρτωσης Time (clock cycles) I n s t r. O r d e r lw r1, 0(r2) sub r4,r1,r6 and r6,r1,r7 Bubble Bubble or r8,r1,r9 Bubble 36

Παράδειγμα: Το 20% των εντολών είναι φόρτωσης (loads) Στο 50% των περιπτώσεων η επόμενη εντολή χρησιμοποιεί το αποτέλεσμα της εντολής φόρτωσης Ο κίνδυνος αυτός δημιουργεί μια στάση στη διασωλήνωση Ερώτηση: Πόσο πιο γρήγορη είναι η διασωλήνωση χωρίς τον κίνδυνο αυτό σε σύγκριση με την πραγματική μηχανή 37

Παράδειγμα: Το 20% των εντολών είναι φόρτωσης Στο 50% των περιπτώσεων η επόμενη εντολή χρησιμοποιεί το αποτέλεσμα της εντολής φόρτωσης. Ο κίνδυνος αυτός δημιουργεί μια στάση στη διασωλήνωση Ερώτηση: Πόσο πιο γρήγορη είναι η διασωλήνωση χωρίς τον κίνδυνο αυτό σε σύγκριση με την πραγματική μηχανή Το CPI της εντολής που ακολουθεί την εντολή φόρτωσης και χρησιμοποιεί το αποτέλεσμα της φόρτωσης είναι 1.5 CPI= 1 + 0.2 * 0.5 *1 = 1.1 Performance ratio = 1.1 / 1 i.e. 10% faster 38

Forwarding to Avoid LW-SW Data Hazard Figure A.8, Page A-20 Time (clock cycles) I n s t r. add r1,r2,r3 lw r4, 0(r1) O r d e r sw r4,12(r1) or r8,r6,r9 xor r10,r9,r11

Διαβίβαση Δεδομένων (Data Forwarding) Το σύστημα διασωλήνωσης πρέπει να διαβιβάζει δεδομένα μεταξύ διαφόρων σταδίων Κίνδυνοι Δεδομένων με εντολές μνήμης #Ποτέ υπάρχει εξάρτηση; sw r4,0(r5).... lw r3,4(r6) Τι είναι το πιθανό είδος εξάρτησης; Memory Dependences Ο κίνδυνος αυτός δεν παρουσιάζεται διότι οι προσπελάσεις στη μνήμη γίνονται πάντοτε στη σωστή σειρά. (Μόνο το τμήμα MEM διαβάζει ή γράφει στη μνήμη) 40

Data Dependences: WAR Write After Read (WAR) Instr J writes operand before Instr I reads it I: sub r4,r1,r3 J: add r1,r2,r3 K: mul r6,r1,r7 Called an anti-dependence. This results from reuse of the name r1. Can t cause a hazard in simple pipeline because: Reads are always in stage 2, and Writes are always in stage 5

Data Dependences: WAW Write After Write (WAW) Instr J writes operand before Instr I writes it. I: sub r1,r4,r3 J: add r1,r2,r3 K: mul r6,r1,r7 Called an output dependence This also results from the reuse of name r1. Can t cause a hazard in simple pipeline because: Writes are always in stage 5 Will see WAR and WAW in more complicated pipes

Κίνδυνοι Διακλαδώσεων 10: beq r1,r3,36 14: and r2,r3,r5 18: or r6,r1,r7 22: add r8,r1,r9 36: xor r10,r1,r11

Κίνδυνοι Διακλαδώσεων 10: beq r1,r3,36 Three Stage Stall Τι θα γίνει όταν διαβάσουμε εντολή διακλάδωσης?

Κίνδυνοι Διακλαδώσεων 10: beq r1,r3,36 Three Stage Stall stall Bubble Bubble Bubble Bubble Bubble stall Bubble Bubble Bubble Bubble Bubble stall Bubble Bubble Bubble Bubble Bubble 36: xor r10,r1,r11 (taken) ή 14: and r2,r3,r5 (not taken)

Κίνδυνοι Διακλαδώσεων (Κίνδυνοι Ροής Ελέγχου) Οι Κίνδυνοι Διακλαδώσεων δημιουργούνται όταν έχουμε μια διακλάδωση (η οποία μπορεί και να βασίζεται σε αποτέλεσμα άλλης εντολής) στην διασωλήνωση που ακολουθείτε από άλλες εντολές. Παράδειγμα: Υπολογίστε την επιτάχυνση του pipeline εάν το 30% των εντολών είναι διακλαδώσεις Οι διακλαδώσεις στο MIPS χρειάζονται 3 τμήματα (IF, ID,EXE) 3 stalls (στάσεις, φυσσαλίδες) Ideal CPI = 1. CPIreal= 1 + 0.3 x 3 = 1.9 Μόνο 50% της ιδανικής επιτάχυνσης είναι εφικτή. 46

Η μείωση του κόστους της επιτάχυνσης είναι εξαιρετικά σημαντική Ειδικά για μηχανές υψηλής απόδοσης Πολλαπλά στάδια μεταξύ fetch και execution) Τρόποι για μείωση κινδύνων λόγο διακλαδώσεων: #1: Stall until branch direction is known #2: Determine target and direction early #3: Predict Branch Not Taken #4: Predict Branch Taken #5 #6 47

Οι στάσεις που οφείλονται σε κινδύνους διακλαδώσεων μπορούν να ελαττωθούν εάν: 1. Προσδιορίσουμε πιο νωρίς στην διασωλήνωση εάν η διακλάδωση θα είναι taken, και 2. Υπολογίσουμε το νέο PC πιο νωρίς 48

Μείωση stalls λόγο διακλαδώσεων Instruction Fetch Instr. Decode. Fetch Execute Addr. Calc Memory Access Write Back Next PC 4 Adder Next SEQ PC RS1 Adder MUX Zero? Address Memory IF/ID RS2 File ID/EX MUX EX/MEM Data Memory MEM/WB MUX Imm Sign Extend RD RD RD WB Data

Η μείωση επιτυγχάνεται με: Την προσθήκη ειδικού κυκλώματος για να ελέγχει τη συνθήκη διακλάδωσης (test-for-zero) στο τμήμα ID Την προσθήκη ειδικού αθροιστή στο τμήμα ID για τον υπολογισμό της Διεύθυνσης του Προορισμού της Διακλάδωσης(BTA: branch target address). Γιατί όχι στο στάδιο fetch; Το κόστος της διακλάδωσης τώρα ένας κύκλος Μειονεκτήματα; 50

Μείωση του κόστους των διακλαδώσεων σε διασωληνωμένες μηχανές Στατικές Προβλέψεις Πρόβλεψη ότι η διακλάδωση θα είναι επιτυχής (taken) Πρόβλεψη ότι η διακλάδωσης δεν θα είναι επιτυχής (not taken) 51

#3: Predict Branch Not Taken Execute successor instructions in sequence Flush/Squash instructions in pipeline if branch actually taken Τι σημαίνει squash? 47% branches not taken on average PC+4 already calculated, so use it to get next instruction 52

Control Hazard on Branches 10: beq r1,r3,36 Three Stage Stall 14: and r2,r3,r5 Bubble Bubble 18: or r6,r1,r7 Bubble Bubble Bubble 22: add r8,r1,r9 Bubble Bubble Bubble Bubble 36: xor r10,r1,r11

Squash Pipeline Σε όλα τα στάδια πριν το branch εισαγωγή bubble. 54

#4: Predict Branch Taken 53% branches taken on average But haven t calculated branch target address Still incur 1 cycle branch penalty Other machines: branch target known before outcome 55

Διακλαδώσεις με καθυστέρηση [Delayed branch] Διακλαδώσεις με καθυστέρηση n κύκλων Η Διακλάδωση με καθυστέρηση δεν λαμβάνει χώρα μέχρις ότου ένας αριθμός εντολών (n) που ακολουθούν τη διακλάδωση εκτελεστούν Branch Instruction Sequential Successor 1 Sequential Successor 2 Sequential Successor n branch target if taken Ο MIPS έχει μια στάση για κάθε διακλάδωση. Δηλαδή η Διακλάδωση με καθυστέρηση δεν λαμβάνει χώρα μέχρι να εκτελεστεί η εντολή που ακολουθεί την διακλάδωση. Σχισμή Καθυστέρησης Διακλάδωσης: Η σχισμή που ακολουθεί τη σχισμή της Διακλάδωσης με καθυστέρηση [Branch Delay Slots] Μέρος της αρχιτεκτονικής συνόλου εντολών MIPS 56

add $1,$2,$3 if $2=0 then delay slot Scheduling Branch Delay Slots A. From before branch B. From branch target C. From fall through sub $4,$5,$6 add $1,$2,$3 if $1=0 then delay slot In B and C, must be okay to execute sub when branch fails Αλλιώς πρέπει να ακυρώσεις την εντολή στο delay slot Ποτε ok not to cancel? add $1,$2,$3 if $1=0 then delay slot sub $4,$5,$6 becomes becomes becomes add $1,$2,$3 if $2=0 then if $1=0 then add $1,$2,$3 add $1,$2,$3 if $1=0 then sub $4,$5,$6 sub $4,$5,$6

Precise Exceptions

Πως χειριζόμαστε τις εξαιρέσεις και διακοπές (exceptions και interrupts) Η εντολή που προκαλεί την εξαίρεση την σημειώνουμε (flag) στον καταχωρητή διασωλήνωσης στο τέλος του σταδίου που βρίσκεται η εντολή Οι διακοπές σημειώνονται στο προτελευταίο στάδιο Όταν η εντολή φτάσει στο τελευταίο στάδιο εξυπηρετούμαι το exception/interrupt Διασφαλίζεται πως εξυπηρετείτε το exception της πιο παλιάς εντολής Όλες οι προηγούμενες εντολές έχουν τελειώσει και καμία πιο μετά δεν έχει ξεκινήσει 59

Διασωλήνωσης Μονάδων (imbalanced stages μη ισοζυγισμένα στάδια) Υποθέστε αρχικτενική [mem]= [mem] op [mem] το pipeline με 7 στάδια Σε κάθε κύκλο μηχανής τελείωνει η επεξεργασία μιας εντολής Instr. Fetch Ιδεάτα: Επιτάχυνση της τάξης του 7 σε σύγκριση με μη-διασωληνωμένη μηχανή. Υποθέστε ότι η μνήμη χρειάζεται 4 φορές πιο αργή σε σχέση με τα στάδια χωρίς μνήμη. Το ρολόι του pipeline έχει περίοδο 4 φορές το χρόνο που χρειάζονται τα γρήγορα στάδια (κ) => 4κ Με αυτό το ρυθμό παράγεται ένα αποτέλεσμα σε κάθε κύκλο. Η μη-διασωληνωμένη μηχανή χρειάζεται ρολόι με περίοδο 3 x 4 + 4 x 1 = 16κ Επιτάχυνση της τάξης του 4 Ερώτηση: Πως μπορούμε να βελτιώσουμε αυτή την διασωλήνωση Instr. Decode Address Gen Oper. Fetch Execute Oper. Store Update PC 60

Διασωλήνωσης Μονάδων Προσθέτουμε 3 τμήματα καθυστέρησης μετά από κάθε τμήμα μνήμης Η νέα διασωλήνωση έχει 16 τμήματα Ένα αποτέλεσμα παράγεται σε κάθε κύκλο. Επιτάχυνση της τάξης του 16 Ερώτηση: Είναι αυτό εφικτό/πρακτικό; Τι γίνεται με τις διακλαδώσεις; Η καινούργια διασωλήνωση χρειάζεται ταυτόχρονα 12 προσπελάσεις μνήμης Σε αυτή την περίπτωση έχουμε λύση ένα πρόβλημα και δημιουργήσαμε άλλο Instr. Fetch IF2 IF3 IF4 Instr. Decode Address Gen Oper. Fetch OF2 OF3 OF4 Execute Oper. Store OS2 OS3 OS4 61 Update PC

Χρονοπρογραμματισμός Εντολών [Instruction Scheduling] Οι Μεταγλωττιστές επιδιώκουν να αποφεύγουν την παραγωγή κώδικα στον οποίο μια εντολή φόρτωσης ακολουθείται από μια ή περισσότερες εντολές που θα χρησιμοποιήσουν το αποτέλεσμα της φόρτωσης Παράδειγμα: Γράψετε κώδικα που αποφεύγει στάσεις στη διασωλήνωση του MIPS (υποθέστε a,b,c,d,e διευθύνσεις μνήμης) a = b + c d = e - f Unoptimized Code lw Rb, b lw Rc, c add Ra, Rb, Rc sw a, Ra lw Re, e lw Rf, f sub Rd, Re, Rf sw d, Rd Optimized Code lw Rb, b lw Rc, c lw Re, e add Ra, Rb, Rc lw Rf, f sw a, Ra sub Rd, Re, Rf sw d, Rd 62

Χρονοπρογραμματισμός Εντολών [Instruction Scheduling] Οι Μεταγλωττιστές επιδιώκουν να αποφεύγουν την παραγωγή κώδικα στον οποίο μια εντολή φόρτωσης ακολουθείται από μια ή περισσότερες εντολές που θα χρησιμοποιήσουν το αποτέλεσμα της φόρτωσης Παράδειγμα: Γράψετε κώδικα που αποφεύγει στάσεις στη διασωλήνωση του MIPS (υποθέστε a,b,c,d,e διευθύνσεις μνήμης) a = b + c d = e - f 5 6 8 9 10 11 13 14 Unoptimized Code lw Rb, b lw Rc, c add Ra, Rb, Rc sw a, Ra lw Re, e lw Rf, f sub Rd, Re, Rf sw d, Rd 5 6 7 8 9 10 11 12 Optimized Code lw Rb, b lw Rc, c lw Re, e add Ra, Rb, Rc lw Rf, f sw a, Ra sub Rd, Re, Rf sw d, Rd 63