Advanced Data Indexing

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

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

Τεχνολογίες Κύριας Μνήμης

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

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

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

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

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

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 8. Χειμερινό Εξάμηνο

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

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Η ιεραρχία της μνήμης

Αποθήκευση εδομένων. ομή ενός Σ Β. Εισαγωγή Το «εσωτερικό» ενός ΜΕΡΟΣ Β : Η (εσωτερική) αρχιτεκτονική ενός Σ Β είναι σε επίπεδα

Ασκήσεις Caches

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή

Ασκήσεις Caches

Άσκηση 1η. Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ,

Τεχνολογία μνημών Ημιαγωγικές μνήμες Μνήμες που προσπελαύνονται με διευθύνσεις:

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

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

Με τον όρο μνήμη αναφερόμαστε στα μέσα που χρησιμοποιούνται για την αποθήκευση προγραμμάτων και δεδομένων σε έναν υπολογιστή ή άλλη ψηφιακή

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

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

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

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Επανάληψη

Ζητήµατα Απόδοσης. Ιεραρχία Μνήµης. Αναγκαιότητα για Ιεραρχία Μνήµης. Processor-DRAM Gap (latency) Ε-85: Ειδικά Θέµατα Λογισµικού

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

ΦΥΛΛΟ ΠΛΗΡΟΦΟΡΙΩΝ. Μονάδες μέτρησης χωρητικότητας μνήμης - Η περιφερειακή μνήμη

ΚΕΦΑΛΑΙΟ 1 ΥΛΙΚΟ ΥΠΟΛΟΓΙΣΤΩΝ

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Επανάληψη

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

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

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

Διάλεξη 15 Απόδοση της Ιεραρχίας Μνήμης Βελτιστοποίηση της απόδοσης

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ B.2.M3 Κύρια και Βοηθητική Μνήμη

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 5 ο Οργάνωση Υπολογιστών. Δρ.

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Λειτουργικά Συστήματα (Λ/Σ)

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

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

Κύρια & Περιφερειακή Μνήµη

Προγραμματισμός συστημάτων UNIX/POSIX. Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις

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

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

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

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

Κεφ. 10: Δομές Αποθήκευσης

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

Θέμα: Σκληρός Δίσκος

Λειτουργικά Συστήματα Η/Υ

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος Πληροφορική Ι

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της

Processor-Memory (DRAM) ιαφορά επίδοσης

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

Λειτουργικά Συστήματα (ΗΥ321)

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

Αρχιτεκτονική Υπολογιστών II Ενδεικτικές απαντήσεις στα θέματα των εξετάσεων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Βασική δοµή και Λειτουργία Υπολογιστή

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 5ο Οργάνωση υπολογιστών

Αποθήκευση και Οργάνωση αρχείων. Βάσεις Δεδομένων Μάθημα 2ο Διδάσκων: Μαρία Χαλκίδη

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Κεφάλαιο 1 Εισαγωγή στην Δομή, Οργάνωση, Λειτουργία και Αξιολόγηση Υπολογιστών

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

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

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

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

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Ασκήσεις Επανάληψης

MULTIPLE CHOICE REVISION: ΜΑΘΗΜΑ 1-2

Εικονική Μνήμη (virtual memory)

Εισαγωγή στον Προγραμματισμό

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

Πανεπιστήµιο Θεσσαλίας

Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης

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

Εισαγωγή στην Δομή, Οργάνωση, Λειτουργία και Αξιολόγηση Υπολογιστών

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

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

Επαρκή χωρητικότητα αποθήκευσης Αποδεκτό επίπεδο μέσης απόδοσης Χαμηλό μέσο κόστος ανά δυαδικό δ ψηφίο

Μνήμη. Μνήμη. Κύρια μνήμη Δευτερεύουσα ή βοηθητική

Ψηφιακά Κυκλώματα (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

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

Εισαγωγή στους Η/Υ και Εφαρμογές

Λειτουργικά Συστήματα (ΗΥ321)

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

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης.

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

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

Transcript:

Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων) Ιεραρχίες Μνήμης Δευτερεύουσα Μνήμη

Το Κενό Μεταξύ CPU και Μνήμης 1.000.000.000 100.000.000 10.000.000 0,1 x ns 1.000.000 100.000 10.000 1.000 100 Χρόνος Προσπέλασης Δίσκου Χρόνος Προσπάλασης DRAM Χρόνος Προσπέλασης SRAM Χρόνος CPU 10 1 1990 1995 2000 2005 2010 έτος

Τοπικότητα Υπάρχουν εντολές σε προγράμματα που κάνουν κακό χειρισμό της τοπικότητας; Η Αρχή της Τοπικότητας: Τα προγράμματα τείνουν να χρησιμοποιούν δεδομένα και εντολές που βρίσκονται «κοντά» χωρικά ή χρονικά σε αυτά που χρησιμοποιήσαμε πρόσφατα. Χρονική Τοπικότητα: Στοιχεία που προσπελάσθηκαν πρόσφατα είναι πιθανό να προσπελασθούν πάλι στο κοντινό μέλλον. Χωρική τοπικότητα: Τα στοιχεία που βρίσκονται σε κοντινές διευθύνσεις μνήμης τείνουν να προσπελαύνονται κοντά σε σχέση με το χρόνο. Παράδειγμα Τοπικότητας: Δεδομένα Προσπέλαση στοιχείων πίνακα στη σειρά: Χωρική Αναφορά στο sum σε κάθε επανάληψη: Χρονική Εντολές Προσπέλαση εντολών στη σειρά: Χωρική Προσπέλαση εντολών σε επανάληψη: Χρονική sum = 0; for (i = 0; i < n; i++) sum += a[i]; return sum;

Παράδειγμα Τοπικότητας Ισχυρισμός: Αν κοιτώντας ένα κομμάτι κώδικα μπορείτε να πάρετε μία άποψη σχετικά με την τοπικότητα του τότε είστε καλοί προγραμματιστές! Ερώτηση: Έχει η παρακάτω συνάρτηση καλή τοπικότητα; int sumarrayrows(int a[m][n]) { int i, j, sum = 0; } for (i = 0; i < M; i++) for (j = 0; j < N; j++) sum += a[i][j]; return sum

Παράδειγμα Τοπικότητας Ερώτηση: Έχει η παρακάτω συνάρτηση καλή τοπικότητα; int sumarraycols(int a[m][n]) { int i, j, sum = 0; } for (j = 0; j < N; j++) for (i = 0; i < M; i++) sum += a[i][j]; return sum

Τοπικότητα Εξαρτάται φυσικά από το πώς αποθηκεύεται ο πίνακας στην κύρια μνήμη (κατά γραμμές ή κατά στήλες, ή αν συμπιέζεται [Sparse Matrices], κλπ. ) 0 1 2..... Ν-1 1 2... Μ-1 In row-major storage, a multidimensional array in linear memory is organized such that rows are stored one after the other. It is the approach used by the C programming language, among others. Also used in the scientific programming languages Fortran and Julia, the matrix-oriented languages MATLAB, etc.

Ιεραρχία Μνήμης Μερικές θεμελιώδεις και διηνεκείς ιδιότητες του υλικού και του λογισμικού: Οι μνήμες υψηλής ταχύτητας κοστίζουν περισσότερο ανά byte και έχουν μικρότερη χωρητικότητα. Το κενό απόδοσης μεταξύ CPU και κύριας μνήμης μεγαλώνει ολοένα και περισσότερο. Τα καλώς γραμμένα προγράμματα τείνουν να έχουν καλή τοπικότητα. Αυτές οι θεμελιώδεις ιδιότητες συμπληρώνουν η μία την άλλη. Υπονοούν ότι η καλύτερη οργάνωση του συστήματος μνήμης είναι ιεραρχική.

Ιεραρχία Μνήμης (2-Level Cache) Μικρότερες, γρηγορότερες, και πιο ακριβές (ανά byte) συσκευές μνήμης L 2 : L 1 : L 0 : Καταχω -ρητές L 1 cache στο chip (SRAM) L 2 cache εκτός chip(sram) Οι καταχωρητές αποθηκεύουν λέξεις της L 1 κρυφής μνήμης (L 1 cache). H L 1 αποθηκεύει γραμμές μνήμης από την L 2 μνήμη. H L 2 αποθηκεύει γραμμές μνήμης από την κύρια μνήμη. Μεγαλύτερες, Αργότερες, και φθηνότερες (ανά byte) συσκευές μνήμης L 4 : L 3 : Κύρια μνήμη (DRAM) Τοπική δευτερεύουσα μνήμη (τοπικός δίσκος) Η κύρια μνήμη αποθηκεύει μπλοκ από τους τοπικούς δίσκους Οι τοπικοί δίσκοι αποθηκεύουν αρχεία από δίσκους σε δικτυακούς εξυπηρετητές. L 5 : Απομακρυσμένη δευτερεύουσα μνήμη (κατανεμημένα συστήματα αρχείων, Web servers)

Ιεραρχία Μνήμης (3-Level Cache)

Ιεραρχία Μνήμης σε Τυπικούς Η/Υ CPU καταχωρητές C a c h e Memory Bus Κύρια Μνήμη Ι/Ο Bus Ι/Ο συσκευές Μέγεθος: 1-8ΚΒ 512ΚΒ-8ΜΒ 1GB-16GB 100GB-1TB Ταχύτητα: 0.25ns 1ns 30ns 8ms

Ιεραρχία Μνήμης Το μπλοκ μεταξύ Κύριας Μνήμης και Cache λέγεται γραμμή Cache (cache line) Επίπεδο k: 48 9 10 14 3 Μικρότερη, γρηγορότερη, πιο ακριβή, συσκευή μνήμης στο επίπεδο k περιέχει ένα υποσύνολο μπλοκ του επιπέδου k+1 10 4 Τα δεδομένα αντιγράφονται μεταξύ επιπέδων σε μπλοκ Επίπεδο k+1: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Μεγαλύτερη, αργότερη, φθηνότερη συσκευή μνήμης στο επίπεδο k+1, τα δεδομένα διαιρούνται σε μπλοκ.

Μερικές Γενικές Έννοιες Επίπεδο k: Επίπεδο k+1: 4* 12 14 12 Αίτηση για 12 14 0 1 2 3 9 14 3 12 4* Αίτηση για 12 0 1 2 3 4* 5 6 7 8 9 10 11 12 13 14 15 1. Πλήρως συσχετίσιμη 2. Μερικώς συσχετίσιμη 3. Ευθέως συσχετίσιμη Το πρόγραμμα χρειάζεται το αντικείμενο d, που αποθηκεύεται σε κάποιο μπλοκ b. Cache Επιτυχία Το πρόγραμμα βρίσκει το b στην μνήμη επιπέδου k. (π.χ. μπλοκ 14) Cache Αποτυχία Το b δεν είναι στο επίπεδο k, και άρα πρέπει να το φέρουμε από το k+1. (π.χ. μπλοκ 12) Αν η μνήμη επιπέδου k είναι γεμάτη, τότε κάποιο μπλοκ πρέπει να αντικατασταθεί. Ποιο είναι το «θύμα»; Πολιτική Τοποθέτησης: που θα πάει το νέο μπλοκ; (π.χ. με b mod 4 θύμα το 4 στη θέση 0) Πολιτική Αντικατάστασης: ποιο μπλοκ πρέπει να αντικατασταθεί; (π.χ. LRU)

Πολιτική Τοποθέτησης Πολιτική τοποθέτησης: Πλήρως συσχετίσιμη: Το νέο μπλοκ μπορεί να πάει οπουδήποτε στην cache Μερικώς συσχετίσιμη: Το νέο μπλοκ μπορεί να πάει μόνο σε συγκεκριμένες θέσεις στην cache, N-way associative (σε N θέσεις). Ευθέως συσχετίσιμη: Το νέο μπλοκ μπορεί να πάει μόνο σε μία συγκεκριμένη θέση στην cache.

Πολιτική Τοποθέτησης (παράδειγμα) 32-Block Χώρος Μνήμης: Επίπεδο k+1: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Ευθέως συσχ.: Το 12 μπορεί να πάει στο μπλοκ 4 (12 mod 8) 0 1 2 3 4 5 6 7 Μερικώς συσχ.: Το 12 πάει οπουδήποτε στο σύνολο 0 (12 mod 4) 0 1 2 3 4 5 6 7 Πλήρως συσχ. : Το 12 μπορεί να πάει οπουδήποτε 0 1 2 3 4 5 6 7 Επίπεδο k: 0 1 2 3

Μερικές Γενικές Έννοιες Τύποι αποτυχιών: Αναγκαστική αποτυχία: Συμβαίνει επειδή η μνήμη είναι άδεια. Αποτυχία Σύγκρουσης Συμβαίνει όταν έχουμε περιορισμένη συσχέτιση. Π.χ. το μπλοκ i στο επίπεδο k+1 πρέπει να τοποθετηθεί στο μπλοκ (i mod 4) στο επίπεδο k. Αναφορά στα μπλοκ 0, 8, 4, 8, 0, 4,... θα έδινε αποτυχία κάθε φορά. Αποτυχία Χωρητικότητας Συμβαίνει όταν το σύνολο των ενεργών μπλοκ (σύνολο εργασίας working set) είναι μεγαλύτερο από την μνήμη επιπέδου k.

Πολιτική Αντικατάστασης Μερικοί Αλγόριθμοι αντικατάστασης: LRU (Least Recently Used): Αντικατάσταση του παλαιότερα χρησιμοποιημένου στοιχείου. MRU (Most Recently Used): Αντικατάσταση του πιο πρόσφατα χρησιμοποιημένου στοιχείου. LFU (Least Frequently Used): Αντικατάσταση του πιο σπάνια χρησιμοποιημένου στοιχείου. RR (Random Replacement): Τυχαία Αντικατάσταση. http://en.wikipedia.org/wiki/cache_algorithms

Χαρακτηριστικά ενός Η/Υ Dell 650 www.dell.com Ταχύτητα CPU L3 cache μέγεθος Μνήμη Δίσκος CD/DVD 2.4 3.2 GHz 0.5 2 MB 1/4 4 GB 36 GB 146 GB 7.200 15.000 RPM 8 48x www.intel.com L2 cache μέγεθος 256 512 KB L2 cache line μέγεθος 128 Bytes L1 cache line μέγεθος 64 Bytes L1 cache μέγεθος 16 KB Dell s homepage July 2004

Οι Αλγοριθμικές Προκλήσεις Το υλικό δεν είναι ομοιόμορφο πολλές παράμετροι Πλήθος επιπέδων μνήμης Μέγεθος cache Cache γραμμή/μέγεθος μπλοκ δίσκου Συσχέτιση Cache Cache πολιτική αντικατάστασης Ταχύτητα CPU/BUS/μνήμης Τα προγράμματα θα πρέπει ιδεατά να τρέχουν για διαφορετικές τιμές παραμέτρων Γνωρίζοντας τις παραμέτρους κατά το χρόνο εκτέλεσης ή Γνωρίζοντας εξαρχής μερικές βασικές παραμέτρους ή Αγνοώντας την μνήμη ιεραρχίας Πράξη Τα προγράμματα εκτελούνται σε απρόβλεπτες συνθήκες Γενικές βιβλιοθήκες λογισμικού Κώδικας που κατεβαίνει από το διαδίκτυο, Java applets Δυναμικά περιβάλλοντα, π.χ. πολλαπλές διεργασίες

Κάποια Βασικά για τις Ιεραρχικές Μνήμες The difference in speed between modern CPU and disk technologies is analogous to the difference in speed in sharpening a pencil using a sharpener on one s desk or by taking an airplane to the other side of the world and using a sharpener on someone else s desk. (D. Comer) 32B 64B R CPU L1 L2 L3 A M Δίσκος Χρόνος Προσπέλασης Σε σχέση με CPU Register 0.5 ns 1 L1 cache 0.5 ns 1-2 64B Πρόβλημα 8KB L2 cache 3 ns 2-7 DRAM 50 ns 80-200 Αυξανόμενος χρόνος προσπέλασης και μέγεθος Δίσκος 10 ms 10 7 Αυξημένο

Γεωμετρία Δίσκου (με κινητά μέρη) Οι σκληροί δίσκοι αποτελούνται από έναν δίσκο, με δύο επιφάνειες. Κάθε επιφάνεια αποτελείται από ομόκεντρους κύκλους, που ονομάζονται τροχιές (tracks) ή αυλάκια. Κάθε τροχιά αποτελείται από τομείς (sectors) που χωρίζονται με κενά. τροχιά επιφάνεια τροχιά k κενά Άξονας περιστροφής τομείς

Γεωμετρία Δίσκου (Πολλαπλοί Δίσκοι) Οι ευθυγραμμισμένες τροχιές δημιουργούν κυλίνδρους. Κύλινδρος k Επιφάνεια 0 Επιφάνεια 1 Επιφάνεια 2 Επιφάνεια 3 Επιφάνεια 4 Επιφάνεια 5 Δίσκος 0 Δίσκος 1 Δίσκος 2 άξονας

Χωρητικότητα Σκληρού Δίσκου Χωρητικότητα: μέγιστο πλήθος bytes που μπορούν να αποθηκευτούν. Σε Gigabytes (GB 10 9 bytes) ή Terabytes (TB 10 12 bytes). Η χωρητικότητα καθορίζεται από τις εξής τεχνολογικές παραμέτρους: Πυκνότητα αποθήκευσης (bits/in): πλήθος bits που αποθηκεύονται σε 1 ίντσα μίας τροχιάς. Πυκνότητα τροχιών (tracks/in): πλήθος τροχιών που υπάρχουν σε 1 ίντσα πάνω στην ακτίνα του δίσκου. Πυκνότητα Επιφάνειας (bits/in 2 ): γινόμενο των δύο παραπάνω. Οι μοντέρνοι δίσκοι χωρίζουν τις τροχιές σε ξένα υποσύνολα που ονομάζονται ζώνες εγγραφής. Κάθε τροχιά σε μία ζώνη έχει το ίδιο πλήθος τομέων, που καθορίζεται από την διάμετρο της πιο εσωτερικής τροχιάς. Κάθε ζώνη έχει διαφορετικό πλήθος τομέων ανά τροχιά.

Παράδειγμα Χωρητικότητα = (# bytes/τομέα) x (μέσο # τομέων/τροχιά) x (# τροχιές/επιφάνεια) x (# επιφάνεια/δίσκο) x (# δίσκοι/σκληρό δίσκο) Παράδειγμα: 512 bytes/τομέα 300 τομείς/τροχιά (κατά μέσο όρο) 20,000 τροχιές/επιφάνεια 2 επιφάνειες/δίσκο 5 δίσκοι/σκληρό δίσκο Χωρητικότητα = 512 x 300 x 20000 x 2 x 5 bytes = 30,720,000,000 bytes 28.61 GB

Λειτουργία Δίσκου Η επιφάνεια του δίσκου κινείται με σταθερή ταχύτητα. Η κεφαλή εγγραφής/ανάγνωσης στηρίζεται σε έναν βραχίονα. Η κεφαλή κινείται πάνω σε ένα λεπτό στρώμα αέρα. Άξονας Άξονας Άξονας Άξονας Η κεφαλή μπορεί να πάει σε όποια θέση θέλει πάνω στο δίσκο.

Λειτουργία Δίσκου (Πολλαπλοί Δίσκοι) Οι κεφαλές μετακινούνται μαζί από κύλινδρο σε κύλινδρο βραχίονας άξονας

Χρόνος Προσπέλασης Δίσκου Μέσος χρόνος προσπέλασης ενός τομέα προσεγγίζεται από: T προσπέλασης = T μέσης-αναζήτησης + T μέσης-περιστροφής + T μέσης-μεταφοράς Χρόνος Αναζήτησης (T μέσης-αναζήτησης ) Χρόνος για τοποθέτηση κεφαλών πάνω από τον κατάλληλο κύλινδρο που περιέχει τον τομέα που θέλουμε. Τυπική τιμή T μέσης-αναζήτησης = 9 ms Καθυστέρηση Περιστροφής (T μέσης-περιστροφής ) Ο χρόνος αναμονής ώστε το πρώτο bit του τομέα να περάσει κάτω από την κεφαλή. T μέσης-περιστροφής = 1/2 x 1/RPMs x 60 sec Ταχύτητα Μεταφοράς (T μέσης-μεταφοράς ) Χρόνος για να διαβαστούν τα bits από τον τομέα. T μέσης-μεταφοράς = 1/RPM x 1/(μέσο πλήθος sectors/track) x 60 secs

Παράδειγμα Μας δίνονται: Ταχύτητα Περιστροφής = 10,000 RPM Μέσος χρόνος αναζήτησης = 9 ms Μέσο πλήθος τομέων/τροχιά = 400 Υπολογίζουμε: T μέσης-περιστροφής = 1/2 x (60 secs/10000 RPM) x 1000 ms/sec = 3 ms T μέσης-μεταφοράς = 60/10000 RPM x 1/400 sec/τροχιά x 1000 ms/sec = 0.015 ms T προσπέλασης = 9 ms + 3 ms + 0.015 ms Σημαντικά σημεία: Ο χρόνος προσπέλασης κυριαρχείται από το χρόνο αναζήτησης και τον χρόνο περιστροφής. Το πρώτο bit του τομέα είναι το πιο ακριβό, τα άλλα είναι σχετικά δωρεάν.

Λογικά Μπλοκ Δίσκου Οι μοντέρνοι δίσκοι δίνουν μία αφαιρετική άποψη αυτής της πολύπλοκης γεωμετρίας: Το πλήθος των τομέων μοντελοποιείται σαν μία ακολουθία από λογικά μπλοκ μεγέθους b. Αντιστοίχηση μεταξύ λογικών μπλοκ και πραγματικών τομέων Αυτή η αντιστοίχηση πραγματοποιείται στον ελεγκτή δίσκου. Μετατρέπει αιτήσεις σε μορφή λογικών μπλοκ σε τριάδες της μορφής (επιφάνεια, τροχιά, τομέας). Επιτρέπει στον ελεγκτή να βάλει στην άκρη μερικούς κυλίνδρους για κάθε ζώνη Έτσι προκύπτει η διαφορά μεταξύ «διαμορφωμένης χωρητικότητας» και «μέγιστης χωρητικότητας».

Παράδειγμα μέγιστη χωρητικότητα διαμορφωμένη χωρητικότητα

Δίσκοι Στερεάς Κατάστασης (SSD) Δεν έχουν μηχανικά μέρη. Χαμηλότεροι χρόνοι προσπέλασης (0.035-0.1 ms) Αθόρυβοι Πιο ακριβοί (νέα τεχνολογία) NAND-based Flash μνήμη: περιορισμοί ως προς εγγραφή RAM-based: απαιτούν μπαταρία

Αποδοτικότητα SSD SSD benchmark, showing about 230 MB/s reading speed (blue), 210 MB/s writing speed (red) and about 0.1 ms seek time (green), all independent from the accessed disk location. Μία σύγκριση στο: http://www.storagesearch.com/bitmicro-art3.html

Ιδεατή Μνήμη Virtual Memory

Χρήσιμες Πληροφορίες Σχετικά με μηχανικούς Σκληρούς Δίσκους: http://en.wikipedia.org/wiki/hard_disk_drive Σχετικά με Δίσκους Στερεάς Κατάστασης (SSD): http://en.wikipedia.org/wiki/solid-state_drive Σχετικά με τις Ιεραρχίες Μνήμης: http://en.wikipedia.org/wiki/memory_hierarchy Σχετικά με την επίδραση των Cache: http://igoro.com/archive/gallery-of-processor-cacheeffects/

Παράδειγμα για την Ιεραρχία Μνήμης Πόσο πιο γρήγορα θα τρέξει το Loop-1 σε σχέση με το Loop-2; int[] arr = new int[64 * 1024 * 1024]; // Loop 1 for (int i = 0; i < arr.length; i++) arr[i] *= 3; // Loop 2 for (int i = 0; i < arr.length; i += 16) arr[i] *= 3;

Παράδειγμα για την Ιεραρχία Μνήμης Το Loop-1 κάνει προσπέλαση σε κάθε στοιχείο του πίνακα, ενώ το Loop-2 σε κάθε 16 ο στοιχείο. Εφόσον λοιπόν το Loop-2 κάνει μόνο το 6.25% της δουλειάς που κάνει το Loop-1 θα έπρεπε να κάνει και το 6.25% του αντίστοιχου χρόνου.

Παράδειγμα για την Ιεραρχία Μνήμης for (int i = 0; i < arr.length; i += K) arr[i] *= 3; Όμως η Ιεραρχία Μνήμης προκαλεί απρόβλεπτα αποτελέσματα

Παράδειγμα για την Ιεραρχία Μνήμης Παρατηρούμε ότι όταν το βήμα μεταβάλλεται από 1 μέχρι 16 ο χρόνος εκτέλεσης σχεδόν δεν αλλάζει. Μετά από 16 μειώνεται σχεδόν στο μισό κάθε φορά. Η αιτία είναι ότι η CPU δεν επεξεργάζεται την μνήμη byte προς byte, αλλά σε τμήματα των 64 bytes (συνήθως) που λέγονται cache lines. Οι 16 ακέραιοι (int) είναι 64 bytes (μία cache line). Άρα με βήμα ως 16 γίνεται προσπέλαση στο ίδιο πλήθος cache lines, ενώ με βήμα 32 στο μισό πλήθος, με βήμα 64 στο ¼, κλπ.

Ένα απλό Πρόγραμμα Διασχίζουμε πίνακα ακεραίων μεγέθους n κυκλικά προσπελάζοντας τις θέσεις του διαδοχικά ανά d (pointer chasing) for (i=0; i+d<n; i+=d) A[i]=i+d; A[i]=0; for (i=0, j=0; j<8*1024*1024; j++) i = A[i]; d A n

Παράδειγμα εκτίμησης μεγέθους RAM d=1 RAM : n 2 25 = 32 MB

Παράδειγμα εκτίμησης μεγέθους L1,L2-Cache d=1 L2 : n 2 16 = 64 KB L1 : n 2 12 = 4 KB

Παράδειγμα εκτίμησης μεγέθους cache-line n=2 26 Page size 2 12 = 4KB Cache line size 2 6 = 64 bytes

Γενική Μεθοδολογία Μέγεθος cache: Όσον αφορά το μέγεθος της cache απλά σαρώνουμε πίνακες σταδιακά μεγαλύτερων μεγεθών (το ίδιο πλήθος προσπελάσεων) και όταν δούμε μία αλλαγή (μικρή) στους χρόνους τότε σημαίνει ότι περάσαμε από τη cache στη κύρια μνήμη. Προσοχή η μεταβολή είναι μικρή και πάντα να έχουμε υπόψη λογικές τιμές cache καθώς και άλλα φαινόμενα που επηρεάζουν τη διαδικασία. L1 and L2 sizes: Εδώ απλά φτιάχνουμε διαδοχικά μεγέθη πίνακα όπου το κάθε κελί δεικτοδοτεί το επόμενό του (με το τελευταίο να δεικτοδοτεί το πρώτο) και σαρώνουμε τον πίνακα υπολογίζοντας μέσο χρόνο προσπέλασης. Προσοχή και πάλι είναι δυσδιάκριτο που ακριβώς μεταβάλλεται η cache. Line Size: Εδώ κάνουμε ότι και ακριβώς παραπάνω μόνο που τώρα δεν δεικτοδοτεί το αμέσως επόμενο αλλά d θέσεις μακριά με στόχο να εντοπίσουμε τη πρώτη φορά που θα γίνονται πολλά cache misses. Το d είναι μικρό (~64bytes) Cache speed: Φτιάχνουμε διαδοχικά μεγαλύτερους πίνακες και τους προσπελαύνουμε πολλές φορές (το ίδιο όλους) προσπαθώντας να ελαχιστοποιήσουμε την επιρροή του cache line. Βέβαια, υποτίθεται ότι γνωρίζουμε τα σχετικά μεγέθη της cache.

ΤΕΛΟΣ