Υ- 01 Αρχιτεκτονική Υπολογιστών Προσομοιωτής SimpleScalar



Σχετικά έγγραφα
ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

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

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

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

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

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Front- end: Προσκόμιση, αποκωδικοποίηση, μετονομασία καταχωρητών

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

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

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

ΘΕΜΑ PROJECT COMPILER FLAGS ΤΡΑΧΑΝΗΣ ΔΗΜΗΤΡΗΣ 6108 ΤΡΑΧΑΝΗΣ ΓΕΩΡΓΙΟΣ 5789

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Πρόβλεψη διακλάδωσης

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

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

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

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

(Branch Prediction Mechanisms)

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

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

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

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

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

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

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

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

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

CS425 Computer Systems Architecture

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

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

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

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

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Εργαστήριο Αρ. 2

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

Συστήματα Διαχείρισης Βάσεων Δεδομένων

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

Instruction Execution Times

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

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

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

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

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

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

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

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

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

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

ΔΙΑΛΕΞΗ 17: Δυναμικός Παραλληλισμός Εντολών -- Superscalar Επεξεργαστές --

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

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

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

ΕΠΛ 605: ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2018 ΕΡΓΑΣΙΑ 3 (13/10/2018) Ηµεροµηνία Παράδοσης δεύτερου µέρους: 18/10/2018

ProcSim οδηγίες χρήσης.

ΔΙΑΛΕΞΗ 17: Δυναμικός Παραλληλισμός Εντολών -- Superscalar Επεξεργαστές --

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

ProcSim οδηγίες χρήσης.

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

Pipelined Datapath, Hazards and Forwarding

ΔΙΑΛΕΞΗ 17: Δυναμικός Παραλληλισμός Εντολών -- Superscalar Επεξεργαστές --

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

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

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

Modbus basic setup notes for IO-Link AL1xxx Master Block

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

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

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

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

PortSip Softphone. Ελληνικά Ι English 1/20

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

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

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

Παραδείγματα Assembly (Μέρος

ProcSim οδηγίες χρήσης.

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version ΗΜΙΤΕΛΗΣ!!!!

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

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

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXANIKO MHXANIK I O I Η/ Η Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Γ. Τσιατούχας ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ

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

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

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

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

Advanced Subsidiary Unit 1: Understanding and Written Response

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

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

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

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

ProcSim οδηγίες χρήσης.

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

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ Α. Διαβάστε τις ειδήσεις και εν συνεχεία σημειώστε. Οπτική γωνία είδησης 1:.

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

derivation of the Laplacian from rectangular to spherical coordinates

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

Transcript:

Υ- 01 Αρχιτεκτονική Υπολογιστών Προσομοιωτής SimpleScalar Αρης Ευθυμίου

Το σημερινό μάθημα Ο προσομοιωτής simplescalar 2

Simplescalar Σύνολο προσομοιωτών διάφορα επίπεδα αφαίρεσης/λεπτομέρειας θα χρησιμοποιήσουμε μόνο τον sim- outorder Αναπτύχθηκε από τον Todd AusUn SimpleScalar LLC hzp://www.simplescalar.com/ δωρεάν για ακαδημαϊκή χρήση Κάπως παρωχημένος πλέον για έρευνα, αλλά σχετικά μικρός χρόνος εκμάθησης αρκεί για τους σκοπούς του μαθήματος 3

Εγκατάσταση Download από το simplescalar.com (έκδοση 3.0e) Χρειάστηκε μικροαλλαγές, οπότε χρησιμοποιείστε το τοπικό αντίγραφο στον κατάλογο: ~eihym/simplescalar/ Δεν θα χρειαστούμε simpleuuls, simpletools, δεν θα μεταγλωτίσουμε προγράμματα, υπάρχουν έτοιμα Κρατήστε δικό σας αντίγραφο του πηγαίου κώδικα θα κάνετε αλλαγές στο κώδικα αποσυμπιέστε το αρχείο, δημιουργεί κατάλογο simplesim- 3.0 Στο κατάλογο του αντιγράφου σας: make clean make config-alpha make 4

Μετροπρογράμματα Από το SPEC Integer bzip, gcc, gobmk, mcf, hmmer, sjeng, FloaUng point bwaves, gromacs, lbm, milc, zeusmp Σε μορφή συμπιεσμένου eio (eio.gz) ένα αρχείο ανά μετροπρόγραμμα περιλαμβάνει την είσοδο το μεγαλύτερο είναι 1.7Μ Θα τα βρείτε: ~eihym/simplescalar 5

Οδηγίες χρήσης Σκεφτείτε πως θα οργανώσετε καταλόγους κώδικα, μετροπρογραμμάτων, αποτελεσμάτων,... Δημιουργία αρχείου ρυθμίσεων (configurauon): path_to/sim-outorder -dumpconfig config_file Διαβάστε το αρχείο και τα σχόλια Λεπτομέρειες στο documentauon (επόμενη διαφάνεια) Εκτέλεση ενός προγράμματος: sim-outorder -config config_file benchname.eio.gz 6

DocumentaUon users guide, hackers guide download from website Διαφάνειες, Ανδρέα Μόσχοβου (U. of Toronto) www.eecg.toronto.edu/~moshovos/aca06/lecturenotes/ simplescalar.ppt θα δούμε μια σύνοψη αυτών στη συνέχεια 7

Αποτελέσματα Η έξοδος εμφανίζεται στο τερματικό (stdout) Η εντολή με την οποία εκτελέστηκε Οι ρυθμίσεις Τα αποτελέσματα προσομοίωσης ( simulauon stausucs ) Αν χρειάζεστε τα αποτελέσματα ανακατεύθυνση εξόδου στο Unix: command > file ή για να κρατάτε και τα μηνύματα λάθους: command >& file ή, καλύτερα, δείτε τις επιλογές redir::sim, redir::prog 8

Συμβουλές Οταν προσθέτετε κάποιο δικό σας στοιχείο, προσθέστε μια επιλογή ρύθμισης ώστε να μπορεί να γίνει προσομοίωση και με την αλλαγή σας απενεργοποιημένη (με τον ίδιο κώδικα) για να μπορείτε να κάνετε σύγκριση εύκολα Οργανώστε το κώδικα με ένα revision control system, π.χ. git μπορείτε να δοκιμάσετε παραλλαγές και να επιστρέψετε σε παλιότερη έκδοση, αν δεν δουλέψουν καλά. Σκεφτείτε αυτοματοποίηση προσομοιώσεων και δημιουργία γραφημάτων με scripts παίρνουν πολύ ώρα 9

10

Simplescalar architecture

Ο Simplescalar είναι προσομοιωτής Δεν είναι ακριβές μοντέλο του υλικού κάνει απλοποιήσεις για να τρέχει γρήγορα Στη πραγματικότητα οι εντολές εκτελούνται νωρίς με τη σειρά προγράμματος και στο στάδιο dispatch (decode) Λανθασμένα εικαζόμενες (misspeculated) εντολές χρησιμοποιούν ένα ψεύτικο αρχείο καταχωρητών (και μνήμη) Οι κρυφές μνήμες κρατούν μόνο τα tags και πληροφορίες κατάστασης τα δεδομένα είναι στη μνήμη

Mapping into Simplescalar Reorder buffer (incl. physical registers), reservauon stauons έχουν συγχωνευτεί σε Register Update Unit (RUU) Οι Load/store δημιουργούν 2 micro- ops υπολογισμός διεύθυνσης (effecuve address calculauon) στο RUU πραγματικό load/store στο Load- Store Queue (LSQ)

RUU Circular buffer, each entry contains The instrucuon opcode, PC Ready bits for source registers A linked list of consumers per desunauon register Info for recovering from branch mispredicuon Status flags, e.g., what state is this in, is it an address op An instrucuon can execute when all source registers are available: readyq in ruu_issue() On write- back: walk target list, set ready bits of consumers

Understanding simplescalar Start with sim_main() at end of sim- outorder.c Don t get bogged down to minor details. Grasp the basics Then read the main funcuons: ruu_fetch(), ruu_dispatch(), ruu_issue(), lsq_refresh(), ruu_writeback (), ruu_commit() Could take a full day s work, prob. more Do this; it will save muluple debugging Ume later

sim_main() perform the fast- forward phase forever do ruu_commit () ruu_release_fu() ruu_writeback() lsq_refresh() ruu_issue() ruu_dispatch() ruu_fetch() Every iterauon is a single cycle MulUple instrucuons are handled inside most funcuons in a loop superscalar machine: many instrucuons per cycle

ruu_fetch() Fetch and predict a number of instrucuons It stalls on I$ misses, branch mispredicuon Using variable ruu_fetch_issue_delay in sim_main()! InstrucUons placed in fetch_data[] circular buffer I$, itlb accesses for updaung their status and provide latency determines hit/miss InstrucUon actually fetched from memory Branch predictor can cheat instrucuon opcode is passed to it

ruu_dispatch() Pick from fetchq and decode instrucuon (in order) in reality it also executes them uses a C switch statement and lots of macros Breaks loads/stores into effecuve address calculauon (into RUU) and load/store (into LSQ) Register renaming and dependency checking Using ruu_link_idep, ruu_install_odep! Checks if operands ready and places into readyq Checks for mispredicuon, sets spec_mode keeps recovery info.

ruu_issue() Get next ready instrucuon from readyq Stores complete immediately Loads check LSQ, access D$, dtlb All instrucuons (exc stores) try to get appropriate funcuonal unit fu = res_get (fu_pool, MD_OP_class (rs op) Schedule future event for compleuon eventq_queue_event(rs, sim_cycle + latency)

lsq_refresh() Scheduling for loads/stores Scan LSQ in order Store with unknown address, stop scanning Store with unknown data, remember address in std_unknowns! Ready load matching std_unknowns, don t issue Other ready loads move to readyq

ruu_writeback() Gets events from eventq, if Ume is right If recover instrucuon, squash pipe, correct PC, set ruu_fetch_issue_delay Update rename table Broadcast result to consuming instrucuons They may become ready; place in readyq

ruu_commit() Scan RUU in order If instrucuon not complete (writeback), finish If store, get mem- port, access D$, dtlb Release LSQ entry for loads/stores Release RUU entry

Εργασία 0: Δοκιμάστε το Τρέξτε τα μετροπρογράμματα με fast- forward 20 εκατομύρια εντολές και εκτέλεση 50 εκατομύρια - max:inst 50000000 - fasœwd 20000000 Αρχικό μηχάνημα (Baseline): Bimodal predictor αλλά με διαφορετικές τιμές από το default configurauon - bpred bimod - bpred:bimod 256 - bpred:ras 8 - bpred:btb 64 2 2- level predictor: - bpred 2lev - bpred:2lev 1 256 4 0 - bpred:ras 8 - bpred:btb 64 2 combining predictor (hybrid) - bpred comb - bpred:comb 256 - bpred:bimod 256 - bpred:2lev 1 256 4 0 - bpred:ras 8 - bpred:btb 64 2 23

Εργασία 0 Μετρήστε: branch predicuon rate IPC ή CPI Αναπαραστήστε τα αποτελέσματα σε γραφήματα χωριστές μπάρες για κάθε config για να έχετε μια μπάρα λιγότερη, κανονικοποιείστε τα αποτελέσματα ως προς το baseline (Res_conf1/Res_conf2) το baseline θα είναι το «1» Κάθε μετροπρόγραμμα θα έχει 2 μπάρες δίπλα- δίπλα με διαφορετικό χρώμα Για να χωρέσουν, βάλτε ξεχωριστά τα integer, και τα fp Υπολογίστε και έναν μεσο όρο ανά κατηγορία 24