Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy) 1
Συστήματα Μνήμης Η οργάνωση του συστήματος μνήμης επηρεάζει τη λειτουργία και απόδοση ενός μικροεπεξεργαστή: Διαχείριση μνήμης και περιφερειακών (Ι/Ο) απότολειτουργικόσύστημα Παραγωγή κώδικα από μεταγλωττιστές Χρήση μνήμης από εφαρμογές ΣΗΜΑΝΤΙΚΟΣ παράγοντας στον καθορισμότηςαπόδοσης Πρόσφατα, υπάρχει μετάβαση στον τρόπο οργάνωσης της μνήμης από επίπεδη μνήμη τυχαίας προσπέλαση σε ιεραρχίες μνήμης, για βελτίωση της απόδοσης Ιεραρχία Μνήμης (Memory hierarchy): χρήση πολλαπλών επιπέδων μνήμης. Το μέγεθος και ο χρόνος προσπέλασης της μνήμης που είναι «κοντινότερα» στον επεξεργαστή (CPU) είναι μικρότερο και μεγαλώνουν όσο η μνήμη απομακρύνεται από το CPU. Δημιουργεί την ψευδαίσθηση ότι υπάρχει απεριόριστο μέγεθος γρήγορης μνήμης 2
Θεμελιώδης αρχές Αρχή Τοπικότητας (Principle of locality) Σε τυπικά προγράμματα, ένα μικρό μέρος της μνήμης χρειάζεται να προσπελαστεί σε μια δεδομένη στιγμή Χρονική Τοπικότητα (Temporal locality) Εάν μια θέση μνήμης έχει προσπελαστεί πρόσφατα, τότε τείνει να προσπελαστεί ξανά σε σύντομο χρονικό διάστημα Χωρική Τοπικότητα (Spatial locality) Εάν μια θέση μνήμης έχει προσπελαστεί πρόσφατα, τότε κοντινές θέσεις μνήμης (οι γείτονες), τείνουν να προσπελαστούν ξανά σε σύντομο χρονικό διάστημα Θεωρήστε ένα βρόγχο σε ένα πρόγραμμα. Οι εντολές μέσα στο βρόγχο θα επιδεικνύουν την αρχή της χρονικής τοπικότητας; Τι γίνεται με την αρχή της χωρικής τοπικότητας; 3
Τεχνολογίες Μνήμης: Επανάληψη SRAM (Static Random Access Memory): Η τιμή φυλάγεται στατικά, με ένα ζεύγος αντιστροφέων (μοντελοποιείται με μανδαλωτές -- latches) Πολύ γρήγορη αλλά απαιτεί πολύ περισσότερο χώρο από την DRAM (4 με 6 τρανζίστορ) R S Q Q DRAM (Dynamic Random Access Memory): Η τιμή φυλάγεται ως φορτίο σε πυκνωτές (χρειάζεται be ανανέωση) Απαιτεί μικρότερο χώρο αλλά είναι πιο αργή από την SRAM (περίπου κατά 5 με 10 φορές) Word line Pass transistor Capacitor Μαγνητικός Δίσκος Απαιτεί το μικρότερο χώρο, και άρα έχει το μικρότερο κόστος, αλλά έχει και τη μικρότερη ταχύτητα Bit line 4
Αξιοποίηση Ιεραρχίας Οι χρήστες ζητούν διαρκών μεγαλύτερες (σε χωρητικότητα) και γρηγορότερες μνήμες! Χρόνος προσπέλασης SRAM μεταξύ 0.5 5ns στις $4000 μέχρι $10,000 για κάθε GB Χρόνος προσπέλασης DRAM μεταξύ 50 70ns στις $100 μέχρι $200 για κάθε GB Χρόνος προσπέλασης Δίσκου μεταξύ 5 20,000,000 ns στις $0.50 μέχρι $2 για κάθε GB (2004) Η βιομηχανία προσπαθεί να ανταπεξέλθει στις απαιτήσεις Κατασκευή μνήμης βάση ιεραρχίας CPU 1 ο Επίπεδο 2 ο Επίπεδο... n ο Επίπεδο Απόσταση Μνήμης από το CPU, σε χρόνο προσπέλασης Μέγεθος Μνήμης σε κάθε Επίπεδο 5
Η βασική δομή ιεραρχίας μνήμης Κρυφή Μνήμη (cache) Κυρίως Μνήμη (main memory) Δευτερεύουσα Μνήμη (secondary memory) Ιεραρχία 3 ων επιπέδων. Μπορούμε να έχουμε επιπρόσθετα επίπεδα (ειδικά για κρυφή μνήμη) 6
Η βασική δομή ιεραρχίας μνήμης (συν.) Το επίπεδο που είναι πιο κοντά στο μικροεπεξεργαστή είναι υποσύνολο οποιουδήποτε μεταγενέστερου επιπέδου Τα δεδομένα αντιγράφονται μεταξύ δυο γειτονικών επιπέδων Μπλοκ: μικρότερη μονάδα πληροφορίας που μπορεί να υπάρχειήόχιμεταξύδύο γειτονικών επιπέδων 2 ο επίπεδο Μνήμης Επεξεργαστής 1 ο επίπεδο Μνήμης Μεταφορά δεδομένων (μπλοκ) Μπλοκ 7
Βασική Ορολογία Ηit! Επιτυχής Προσπέλαση (Hit): τα δεδομένα που απαιτούνται από τον CPU υπάρχουν στο υψηλότερο επίπεδο της ιεραρχίας της μνήμης Ρυθμός Επιτυχούς Προσπέλασης (Hit rate): ποσοστό προσπελάσεων όπου τα απαιτούμενα δεδομένα βρίσκονται στο υψηλότερο επίπεδο (μετρά την απόδοση της ιεραρχίας) Χρόνος Επιτυχούς Προσπέλασης (Hit time): χρόνος που απαιτείται για την προσπέλαση ενός μπλοκ στο υψηλότερο επίπεδο της ιεραρχίας συν ο χρόνος που απαιτείται για τον καθορισμό επιτυχούς ή όχι προσπέλασης 8
Βασική Ορολογία Miss! Ανεπιτυχής Προσπέλαση (Miss): τα δεδομένα που απαιτούνται από τον CPU ΔΕΝ υπάρχουν στο υψηλότερο επίπεδο μνήμης Ρυθμός Ανεπιτυχούς Προσπέλασης (Miss rate): ποσοστό προσπελάσεων όπου τα απαιτούμενα δεδομένα ΔΕΝ βρίσκονται στο υψηλότερο επίπεδο (= 1 hit rate) Ποινή Ανεπιτυχούς Προσπέλασης (Miss penalty): χρόνος που απαιτείται για την μεταφορά ενός μπλοκ από χαμηλότερο σε ψηλότερο επίπεδο της ιεραρχίας, συν ο χρόνος που απαιτείται για τον καθορισμό επιτυχούς ή όχι προσπέλασης 9
Κρυφή Μνήμη (Cache memory) Cache (κρύπτη, κρυψώνα): ασφαλές χώρος για απόκρυψη ή αποθήκευση -- Webster s New World Dictionary Σε σχέση με το θέμα μας: μνήμη που εκμεταλλεύεται την αρχή της τοπικότητας (συνήθως, το(α) επίπεδο(α) μνήμης μεταξύ του επεξεργαστή και της κυρίως μνήμη) Παράδειγμα απλής κρυφής μνήμης: Θεωρήστε ότι έχουμε αίτημαγιαταδεδομέναx n (a) πριν (b) μετά 10
Κρυφή Μνήμη (συν.) Δύο θέματα: Πως μπορούμε να γνωρίζουμε αν τα δεδομένα που χρειαζόμαστε είναι μέσα στην κρυφή μνήμη; Εάν είναι, πως τα βρίσκουμε (σε πια διεύθυνση); Πρώτο παράδειγμα: Το μέγεθος του μπλοκ είναι μια λέξη (single word block) Τρόπος οργάνωσης: «direct mapped» (άμεση απεικόνιση) Κάθε μπλοκ σε ένα χαμηλότερο επίπεδο της ιεραρχίας αντιστοιχεί ακριβώς σε μια τοποθεσία στην κρυφή μνήμη, δηλ. πολλά μπλοκ σε χαμηλότερα επίπεδα μοιράζονται μια τοποθεσία στο ψηλότερο επίπεδο μνήμης 11
Κρυφή Μνήμη Άμεσης Απεικόνισης (Direct Map Cache) Μέγεθος μπλοκ = 1 word Θεωρήστε μια κρυφή μνήμη με 8 μπλοκ (000,, 111) και μια κυρίως μνήμη με 32 μπλοκ (00000,, 11111) Η διεύθυνση της κρυφή μνήμη που αντιστοιχεί σε μια διεύθυνση στην κυρίως μνήμη: (διεύθυνση στην κυρίως μνήμη) mod ( # μπλοκ στη κρυφή μνήμη) Αν ο αρ. των μπλοκ στην κρυφή μνήμη είναι δύναμη του 2, τότε: log 2 (μέγεθος κρυφής μνήμης σε μπλοκ) = log 2 (8) = 3 3 LSBs της διεύθυνσης τηςκυρίωςμνήμηςδίνουν την αντίστοιχη διεύθυνση στην κρυφή μνήμη Κυρίως Μνήμη 000 Cache 001 010 011 100 101 110 111 0 1 2 3 4 5 6 7 Κρυφή Μνήμη 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 00001 00101 01001 01101 10001 10101 11001 11101 Πως γνωρίζουμε αν τα δεδομένα στην κρυφή μνήμη αντιστοιχούν στην λέξη που ζητείται; Για παράδειγμα, αν ζητώ την λέξη 10001, πως ξέρω αν η κρυφή μνήμη έχει την 10001 και όχι την 00001 ήτην01001, ήτην11001; Memory 12
Κρυφή Μνήμη Άμεσης Απεικόνισης (συν.) Προσθέτουμε ένα σύνολο ετικετών (tags) στην κρυφή μνήμη Κάθε μπλοκ στην κρυφή μνήμη έχει ένα επιπρόσθετο πεδίο για την ετικέτα, που χρησιμοποιείται για να καθορίζει ΕΝΑ μπλοκ στην κυρίως μνήμη Τέλος, πρέπει να γνωρίζουμε αντομπλοκστηνκρυφή μνήμη περιέχει κάποια δεδομένα ή όχι προσθέτουμε ένα bit εγκυρότητας (valid bit) ανά μπλοκ 000 Cache 001 010 011 100 101 110 111 0 1 2 3 4 5 6 7 Θεωρήστε n = # bits διεύθυνσης κυρίως μνήμης Τότε, n - log 2 (μέγεθος κρυφής μνήμης σε μπλοκ) = 5 - log 2 (8) = 2 δίνει τον αρ. των bits για το πεδίο ετικέτας, το οποίο είναι τα 2 MSBs της διεύθυνσης στην κυρίως μνήμη Επομένως, η ετικέτα μπορεί να έχει μία από τις πιο κάτω τιμές {00, 01, 10, 11} 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Tag = 00 Tag = 01 Tag = 10 Tag = 11 00001 00101 01001 01101 10001 10101 11001 11101 Memory 13
Παράδειγμα Δείξετε τα περιεχόμενα μιας κρυφής μνήμης με 8 μπλοκ της 1 λέξης και με οργάνωση άμεσης απεικόνισης (8 single-word blocks, direct mapped cache) για την πιο κάτω ακολουθία αιτημάτων από τον επεξεργαστή: Αιτούμενη Διευθ. (Δεκαδικό) Αιτούμενη Διευθ. (Δυαδικό) Hit ή Miss στη Cache Αντίστοιχο μπλοκ στη cache 22 10110 Miss 10110 mod 8 = 110 26 11010 Miss 11010 mod 8 = 010 22 10110 Hit 10110 mod 8 = 110 26 11010 Hit 11010 mod 8 = 010 16 10000 Miss 10000 mod 8 = 000 3 00011 Miss 00011 mod 8 = 011 16 10000 Hit 10000 mod 8 = 000 18 10010 miss 10010 mod 8 = 010 Ξεκινήστε με άδεια κρυφή μνήμη 14
Κρυφή Μνήμη Άμεσης Απεικόνισης (συν.) Για MIPS: Hit Index 0 1 2 Tag Address (showing bit positions) 31 30 13 12 11 2 1 0 Byte offset 20 10 Valid Tag Index Data Καθορίζει ποιο byte της λέξης είναι, αγνοείται Data Θυμηθείτε ότι ο MIPS χρησιμοποιεί διευθυνσιοδότηση ανά byte (όχι word ή block) Έγκυρες διευθ.: 0, 4, 8, 12, 16, (πολλαπλάσια του 4) log 2 (1024) = 10 1021 1022 1023 20 32 = 15
Μέγεθος Κρυφής Μνήμης Για μπλοκ 1 λέξης: Θεωρήστε ότι 2 n είναι ο αρ. των διευθύνσεων της cache και k οαρ. των bits σε 1 λέξη # bits στη cache = k x 2 n + (bits για δεδομένα) 1 x 2 n + (bits για εγκυρότητα) (k - n - 2) x 2 n (bits για ετικέτες) Από το προηγούμενο παράδειγμα, k=32 και n=10 1024 x (32+1+20) = 53KBytes Το μέγεθος της κυρίως μνήμης είναι 4 GB. Γιατί; Για μπλοκ πολλαπλών λέξεων: Θεωρήστε ότι 2 n είναι ο αρ. των διευθύνσεων της cache, k οαρ. των bits σε 1 λέξη και 2 m οαρ. των λέξεων ανά μπλοκ # bits στη cache = 2 m k x 2 n + (bits για δεδομένα) 1 x 2 n + (bits για εγκυρότητα) (k - n - m - 2) x 2 n (bits για ετικέτες) Αν k=32, m=2 και n=10 1024 x (128+1+18) = 147KBytes Ποιο είναι το μέγεθος της κυρίως μνήμης; 16
Μέγεθος Κρυφής Μνήμης (συν.) Ας αναλύσουμε τα προηγούμενα παραδείγματα: Μπλοκ 1 λέξης, 1024 διευθύνσεις στη cache, 4GB κυρίως μνήμη: απαιτεί 53KB για την cache Μπλοκ 4 ων λέξεων, 1024 διευθύνσεις στη cache, 4GB κυρίως μνήμη: απαιτεί 147KB για την cache Ποια cache είναι η καλύτερη (με τη χαμηλότερη επιβάρυνση); Μπλοκ 1 λέξης : 32KB από τα 53KB είναι για δεδομένα 60.4% δεδομένα και 39.6% επιβάρυνση Μπλοκ 4 ων λέξεων: 128KB από τα147kb είναι για δεδομένα 87% δεδομένα και 13% επιβάρυνση Άλλο σημαντικό προτέρημα για μπλοκ πολλαπλών λέξεων: Μεγαλύτερη χωρική τοπικότητα μειώνει τον αρ. των ανεπιτυχών προσπελάσεων ( miss rate) Μειονεκτήματα: Μπλοκ με πολύ μεγάλο μέγεθος αυξάνουν το miss rate Μπλοκ με πολύ μεγάλο μέγεθος αυξάνουν το miss penalty (απαιτεί περισσότερο χρόνο να μεταφερθούν νέα δεδομένα στη cache) 17
Miss rate vs Block size 10% 4K Miss rate 5% 16K 0% 16 32 64 128 256 Block size 64K 256K Μεγαλύτερες cache έχουν μικρότερο miss rate (το αναμενόμενο!) Υπάρχει κορεσμός στον αρ. των μπλοκ, όταν το μέγεθος του μπλοκ αποτελεί σημαντικό μέρος της cache 18
Ανεπιτυχής ανάγνωση/γραφή κρυφής μνήμης (cache miss) Cache Miss (read/write): Ανεπιτυχής προσπέλαση στη cache αφού τα αιτούμενα δεδομένα δεν είναι στη cache Η μονάδα ελέγχου ανιχνεύει miss ή hit (για ανάγνωση ή γραφή): Όταν υπάρχει hit, το CPU συνεχίζει χωρίς καθυστέρηση Όταν υπάρχει miss, η μονάδα ελέγχου καθυστερεί το CPU (με stalls), προσκομίζει το απαραίτητο μπλοκ από την κυρίως μνήμη και το φορτώνει στη cache, και τέλος επιστρέφει στο CPU H γραφή απαιτεί επιπρόσθετο κόπο: Write-through: πάντα ενημερώνει την μνήμη όταν υπάρχει αλλαγή στα περιεχόμενα της cache, για να υπάρχει συνέπεια δεδομένων (απαιτεί πολύ χρόνο) Χρήση απομονωτή γραφής (write buffer): τα δεδομένα της cache που πρέπει να γραφτούν στη μνήμη διατηρούνται σε μια ουρά Write-back: ανανεώνει μόνο τα δεδομένα στη cache και ενημερώνει τη χαμηλότερη μνήμη στην ιεραρχία μόνο όταν τα δεδομένα στη cache πρέπει να αντικαταστηθούν 19
Μικροεπεξεργαστής FastMATH Γρήγορος ενσωματωμένος μικροεπεξεργαστής Χρησιμοποιεί την αρχιτεκτονική του MIPS με διασωλήνωση 12 σταδίων Μπορεί να διαβάσει δεδομένα και εντολές στον ίδιο κύκλο του ρολογιού Χρησιμοποιεί διαφορετικές κρυφές μνήμες για εντολές και δεδομένα Υλοποίηση Κρυφής Μνήμης 16KB (δεδομένα) 16 λέξεις ανά μπλοκ (= 32x16 = 512 bits) (m=4) 256 μπλοκ (256 x 512 = 16KB) (n=8) Μέγεθος ετικέτας = 32 (n + m + 2) = 18 20
Μικροεπεξεργαστής FastMATH 16 KB cache για 256 μπλοκ των 16 λέξεων Address (showing bit positions) 31 14 13 6 5 2 1 0 Hit Tag Index 18 8 4 Byte offset Block offset Data 18 bits 512 bits V Tag Data 256 entries 16 32 32 32 = Mux 32 21
Σχεδιασμός Συστήματος Μνήμης Το miss penalty εξαρτάται από το bandwidth (μέγεθος δίαυλου) από την κυρίως μνήμη στην κρυφή μνήμη Μεγαλύτερο bandwidth δίνει μικρότερο miss penalty (επιτρέπει για μεγαλύτερα μπλοκ στην κρυφή μνήμη) Το ρολόι του δίαυλου (bus clock) είναι συνήθως γύρω στις 10 φορές πιο αργό από το ρολόι του CPU 22
Σχεδιασμός Συστήματος Μνήμης CPU CPU CPU Cache Multiplexor Cache Cache Bus Bus Bus Memory Memory bank 0 Memory bank 1 Memory bank 2 Memo bank Memory a. O ne-word-wide memory organization b. Wide memory organization Εύρος Δίαυλου (Bus bandwidth) = μέγεθος λέξης Αύξηση στο εύρος δίαυλου. Επιτρέπει παράλληλη πρόσβαση σε όλες τις λέξεις του μπλοκ. Επίσης, παράλληλη μεταφορά. c. Interleaved memory organization Αύξηση στο εύρος μνήμης. Η μεταφορά εξακολουθεί να γίνεται ανά λέξη, αλλά η πρόσβαση είναι παράλληλη για όλες τις λέξεις σε ένα μπλοκ. 23