🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

CompArch - ΘΕΩΡΙΑ.pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

stall: Εμποδίζουμε το PC και τον IF/ID να αλλάξουνάρα διαβάζεται σε δύο διαδοχικούς κύκλους η ίδια εντολή και αποκωδικοποιείται η ίδια επόμενή της δύο φορές συνεχόμενα RAW: (Read-After-Write) (true-dependence) Η ανάγνωση ενός καταχωρητή πρέπει να ακολουθεί την εγγραφή στον ίδιο καταχωρητή από προ...

stall: Εμποδίζουμε το PC και τον IF/ID να αλλάξουνάρα διαβάζεται σε δύο διαδοχικούς κύκλους η ίδια εντολή και αποκωδικοποιείται η ίδια επόμενή της δύο φορές συνεχόμενα RAW: (Read-After-Write) (true-dependence) Η ανάγνωση ενός καταχωρητή πρέπει να ακολουθεί την εγγραφή στον ίδιο καταχωρητή από προηγούμενη εντολή WAR: (Write-After-Read) (anti-dependence) Η εγγραφή σε ένα καταχωρητή πρέπει να ακολουθεί την ανάγνωσή του από προηγούμενη εντολή WAW: (Write-After-Write) (output-dependence) Η εγγραφή σε ένα καταχωρητή πρέπει να ακολουθεί όλες τις εγγραφές στον ίδιο καταχωρητή από προηγούμενες εντολές Το υλικό για τις Λύση multicycle υλοποιήση Multicycle υλοποιήση: Μικρότεροι κύκλοι ρολογιού, από τις καθυστερήσεις των επιμέρους functional units Διαιρούμε την εκτέλεση της κάθε εντολής σε βήματα ανάλογα με τον αριθμό των functional units που χρειάζεται. Κάθε βήμα και ένας ξεχωριστός παλμός ρολογιού Όταν έχουμε multicycle υλοποίηση, μπορούμε το ίδιο functional unit να το χρησιμοποιήσουμε πολλές φορές στην ίδια εντολή, σε διαφορετικούς όμως κύκλους (οικονομία hardware) Οι εντολές διαρκούν μεταβλητό αριθμό κύκλων, άρα μπορούμε να κάνουμε την συνηθισμένη περίπτωση πιο γρήγορη. «Σε κάθε κύκλο ρολογιού μπορεί να γίνει ένα από τα παρακάτω» Memory access Register file access (read or write) ALU op -->Οτιδήποτε παράγεται από αυτές τις μονάδες,σώζεται σε temporary registers Διαφορετικές εκδόσεις compiler -> διαφορετικοί χρόνοι εκτέλεσεις --> διαφορετικά optimazations σε κάθε έκδοση: Compiler Optimizations: Βελτιστοποίηση του κώδικα επιτυγχάνοντας τοπικότητα κατά την προσπέλαση δεδοµένων: *Αναδιοργάνωση των procedures στη µνήµη για τη µείωση των conflict misses. *Merging Arrays: Βελτίωση της spatial locality µε έναν πίνακα δεδοµένων αντί 2 πίνακες. *Loop Interchange: Αλλαγή της σειράς φωλιάσµατος των βρόχων για να προσπελαύνουµε τα δεδοµένα µε την ίδια σειρά όπως αποθηκεύονται στη µνήµη. *Loop Fusion: Συνδυασµός 2 ή περισσοτέρων ανεξάρτητων βρόχων που περιέχουν τους ίδιους βρόχους και κάποιες κοινές µεταβλητές. *Blocking: Βελτίωση της temporal locality προσπελαύνοντας ένα τµήµα µόνο των δεδοµένων επαναληπτικά αντί να διατρέχουµε ολόκληρες τις γραµµές ή τις στήλες CPI: cycles per instruction --Περισσότερα στάδια pipeline => CPI +35%: μπορεί να οφείλεται σε stalls που αντιστοιχούν πλέον σε περισσότερους cc οπότε το CPI αυξάνεται (όχι και ο χρόνος εκτέλεσης ωστόσο) Translation Lookaside Buffer (i.e. TLB) is required only if Virtual Memory is used by a processor. In short, TLB speeds up translation of virtual address to physical address by storing page-table in a faster memory. In fact, TLB also sits between CPU and Main memory. Precisely speaking, TLB is used by MMU when virtual address needs to be translated to physical address. By keeping this mapping of virtual- physical addresses in a fast memory, access to page-table improves. It should be noted that page-table (which itself is stored in RAM) keeps track of where virtual pages are stored in the physical memory. In that sense, TLB also can be considered as a cache of the page- table. Οι δίσκοι περιέχουν όλα τα δεδομένα Όταν ο επεξεργαστής χρειάζεται κάποιο στοιχείο, αυτό ανεβαίνει σε ανώτερα επίπεδα μνήμης Η cache περιέχει αντίγραφα των στοιχείων της μνήμης που έχουν χρησιμοποιηθεί Η μνήμη περιέχει αντίγραφα των στοιχείων του δίσκου που έχουν χρησιμοποιηθεί RAID: Redundant Array of Independent Disks, αναφέρεται σε σκληρουν δίσκους συνδεδομένους και ρυθμισμένους ώστε να βοηθούν στην επιτάχυνση και την προστασία της λειτουργίας του δίσκου ενός υπολογιστή, συνήθως χρησιμοποιούνται σε servers --> αυξάνουν το disk storage capacity. Redundant Array of Inexpensive Disks – Χρήση συστοιχίας “μικρών” και “φτηνών” δίσκων Χρήση πολλών μικρότερων δίσκων (αντί ένα μεγάλο) Αύξηση απόδοσης - Πολλαπλά read “heads” – Αξιοπιστία; Χρειάζεται πλεονασμός (redundancy) γιατί οι “μικροί” & “φθηνοί” δίσκοι δεν είναι αξιόπιστοι Δημιουργία συστήματος αποθήκευσης με ανοχή σε ελαττώματα (fault tolerant) Ειδικά αν οι δίσκοι που αστοχούν δεν μπορούν να αντικατασταθούν «εν θερμώ» DMA: Direct Memory Access ένα feature ενός υπολογιστικού συστήματος το οποίο επιτρέπει σε συσκευές εισόδου/εξόδου να λαμβάνουν και να στέλνουν δεδομένα απευθείας από το δίσκο χωρίς να παρεμβάλλεται η CPU --> boost συστήματος. MIPS: register-register ISA! (load- store). Γιατί?? 1. Οι καταχωρητές είναι γρηγορότεροι από τη μνήμη 2. Μειώνεται η κίνηση με μνήμη 3. Δυνατότητα να υποστηριχθεί σταθερό μήκος εντολών 4. (τα ορίσματα είναι καταχωρητές, άρα ό αριθμός τους (πχ. 1-32 καταχωρητές) όχι δ/νσεις μνήμης Write Through - the information is written to both the block in the cache and to the block in the lower-level memory. Write Back - the information is written only to the block in the cache. The modified cache block is written to main memory only when it is replaced. To reduce the frequency of writing back blocks on replacement, a dirty bit is commonly used. This status bit indicates whether the block is dirty (modified while in the cache) or clean (not modified). A clean block is not written on a miss. Write-allocate: το block ενημερώνεται στη μνήμη και μετά μεταφέρεται από τη μνήμη στη cache Write-no-allocate: το block ενημερώνεται στη μνήμη και δεν μεταφέρεται στη cache ________________________________ Σε μεγάλα cache blocks επωφελούμαστε από την spatial locality. Λιγότερος χώρος απαιτείται για tag (με δεδομένη χωρητικότητα της cache) Υπερβολικά μεγάλο μέγεθος block σπαταλάει το χώρο της cache Τα μεγάλα blocks απαιτούν μεγαλύτερο χρόνο μεταφοράς (transfer time). _________________________________ Stalls/memory access = [miss rate L1] x [ Hit rate L2x Hit time L2 + Miss rate L2 x Memory access penalty) ] = (1-H1) x H2 x T2 + (1-H1)(1-H2) x M _________________________________ Type of misses: 1 Compulsory: Συμβαίνουν κατά την πρώτη πρόσβαση σε ένα block. Το block πρέπει να κληθεί από χαμηλότερα επίπεδα μνήμης και να τοποθετηθεί στην cache (αποκαλούνται και cold start misses ή first reference misses). 2 Capacity: Τα blocks απομακρύνονται από την cache επειδή δεν χωράνε σε αυτήν όλα όσα απαιτούνται κατά την εκτέλεση ενός προγράμματος (το σύνολο των δεδομένων που χειρίζεται ένα πρόγραμμα είναι πολύ μεγαλύτερο από την χωρητικότητα της cache). 3 Conflict: Στην περίπτωση των set associative ή direct mapped caches, conflict misses έχουμε όταν πολλά blocks απεικονίζονται στο ίδιο set (αποκαλούνται και collision misses ή interference misses). Τεχνικές μείωσης του Miss Rate: * Μεγαλύτερο μέγεθος block * Αύξηση της χωρητικότητας της cache * Μεγαλύτερου βαθμού associativity * Pseudo-associative Caches * Victim caches * Hardware/Software prefetching εντολών- δεδομένων * Compiler-controlled prefetching * Bελτιστοποιήσεις στον Compiler Τεχνικές μείωσης του Cache Miss Penalty: * Cache 2ου επιπέδου (L2) * merging write buffers * Early restart and critical word first * Non-blocking caches * Προτεραιότητα στα read misses έναντι των writes Τεχνικές μείωσης του Cache Hit Time: * Μικρές και απλές caches * Αποφυγή της μετάφρασης των διευθύνσεων κατά τη διάρκεια του indexing * Pipelining writes για γρήγορα write hits memory hierarchy: input sources(περιφερειακά)

Use Quizgecko on...
Browser
Browser