Κύρια Μνήμη (Main Memory)

Σχετικά έγγραφα
Κύρια Μνήμη (Main Memory)

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

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

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

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

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

CMOS Technology for Computer Architects

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

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

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

ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ

.Λιούπης. Ψηφιακά Ηλεκτρονικά - Ηµιαγωγικές Μνήµες 1

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

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

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

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

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

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

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων. Χειμερινό Εξάμηνο

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

Είδη των Cache Misses: 3C s

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17

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

Μελλοντικές Κατευθύνσεις

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

Διαφορές single-processor αρχιτεκτονικών και SoCs

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

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

Ηλεκτρονικοί Υπολογιστές Δ Εξάμηνο

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

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

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

Αρχιτεκτονική-ΙI Ενότητα 4 :

Σχεδίαση και Υλοποίηση Μηχανισμού Μεταφοράς Δεδομένων από Συσκευές Αποθήκευσης σε Δίκτυο Myrinet, Χωρίς τη Μεσολάβηση της Ιεραρχίας Μνήμης

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Paging & Segmentation

Ψηφιακή Λογική Σχεδίαση

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

Cach O p i timisati tions

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

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

Ψηφιακή Σχεδίαση Ενότητα 11:

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Ενότητα 7(α) - Ιεραρχία Μνήμης

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

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

Μάθημα 8: Διαχείριση Μνήμης

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

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

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Προχωρηµένα Θέµατα Αρχιτεκτονικής

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

Προχωρηµένα Θέµατα Αρχιτεκτονικής Η/Υ. Storage Systems.. Λιούπης

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

ΠΛΕ- 027 Μικροεπεξεργαστές

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

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Chapter 9 Memory Basics

Συστήματα Μικροϋπολογιστών

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

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

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

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

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

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

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

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

Οργάνωση Ιεραρχίας Μνήμης - Caches

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

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

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

HY330 Ψηφιακά Κυκλώματα - Εισαγωγή στα Συστήματα VLSI. Σταθερές Μνήμες Αρχιτεκτονικές Μνήμης RAM

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

ΔΙΑΛΕΞΗ 8: ΕΙΚΟΝΙΚΗ (Virtual) ΜΝΗΜΗ

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

Δομή Ηλεκτρονικού υπολογιστή

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

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

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

Λογικά σύμβολα των CPU, RAM, ROM και I/O module

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

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

Το υλικό του υπολογιστή

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

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

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

Υλικό Υπολογιστών (Hardware) ΜΥΥ-106 Εισαγωγή στους Η/Υ και Πληροφορική

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

ΔΙΑΛΕΞΗ 8: ΕΙΚΟΝΙΚΗ (Virtual) ΜΝΗΜΗ

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

Transcript:

Κύρια Μνήμη (Main Memory) 1

Πηγές/Βιβλιογραφία Memory Systems: Cache, DRAM, Disk, Bruce Jacob, Spencer W. Ng, David T. Wang, Morgan Kaufmann Publishers, 2008 Onur Mutlu, Main Memory & DRAM Fundamentals, Computer Architecture - Lecture 4 ETH, 2017 (slides & video) https://safari.ethz.ch/architecture/fall2017/lib/exe/fetch.php?media=onur-comparchfall2017-lecture4-mainmemoryanddramfundamentals-afterlecture.pdf https://www.youtube.com/watch?v=szjsbfcev_o 2

Η μνήμη για τον προγραμματιστή LOAD MEMORY STORE 3

Ιδανική Μνήμη Μηδενικό κόστος προσπέλασης (zero latency) Άπειρη χωριτικότητα (infinite capacity) Άπειρο εύρος ζώνης (infinite bandwidth) Μηδενικό κόστος ($) (zero cost) Πρόβλημα Οι απαιτήσεις της ιδανικής μνήμης είναι αντικρουόμενες Μεγάλη χωρητικότητα αυξημένος χρόνος προσπέλασης Μικρός χρόνος προσπέλασης αυξημένο κόστος ($) Μεγάλο εύρος ζώνης αυξημένο κόστος ($) 4

_bitline Τεχνολογίες Μνήμης: DRAM Dynamic random access memory (DRAM) Η λογική τιμή == φορτίο πυκνωτή» 1 ο πυκνωτής ειναι φορτισμένος» 0 ο πυκνωτής είναι εκφορτισμένος Μικρό δομικό στοιχείο Μεγάλη πυκνότητα (higher density) Πυκνωτής Αργή προσπέλαση (slower access) Χρειάζεται αναζωογόνηση (refresh)» ρεύματα διαρροής ο πυκνωτής μπορεί να αποφορτιστεί σε μερικά ms row enable 5

bitline _bitline Τεχνολογίες Μνήμης: SRAM Static random access memory (SRAM) Η λογική τιμή αποθηκεύεται σε διάταξη 2 αντιστροφέων διασταυρωμένης σύζευξης Μεγάλο δομικό στοιχείο (6Τ) Μικρή πυκνότητα (lower density) Όχι πυκνωτής Γρήγορη προσπέλαση (faster access) Δε χρειάζεται αναζωογόνηση (no refresh) row select 6

low cost fast access large capacity fast access Τεχνολογίες μνήμης Aπαιτήσεις μνήμης Tradeoffs Μεγαλύτερη χωρητικότητα αργή προσπέλαση SRAM, 512 Bytes, sub-nanosec SRAM, KByte~Mbyte, ~nanosec DRAM, Gigabyte, ~50 nanosec Hard Disk, Terabyte, ~10 millisec Γρηγορότερη προσπέλαση αυξημένο κόστος ($) SRAM, < 10$ per Megabyte DRAM, < 1$ per Megabyte Hard Disk < 1$ per Gigabyte Οι τιμές αλλάζουν με τον χρόνο, αλλά η τάση είναι η ίδια 7

faster per byte cheaper per byte Ιεραρχία μνήμης CPU Καλό locality των δεδομένων η μνήμη φαίνεται γρήγορη μεγάλη Μεταφορά δεδομένων που χρησιμοποιούνται εδώ fast and small Mem Backup large but slow Mem 8

Ιεραρχία μνήμης On CPU Chip Register File 32 words, sub-nsec L1 cache ~32 KB, ~nsec L2 cache ~256 KB, many nsec manual/compiler Register spilling Automatic HW management L3 cache, ~8MB, many nsec Intel RDT HW/SW management Off Chip Main memory (DRAM), GB, ~100 nsec Swap Disk 100 GB, ~10 msec Automatic (OS) demand paging 9

H μνήμη σε ένα σύγχρονο σύστημα Intel Broadwell-E Core i7 [2016] 10

On CPU Chip Ιεραρχία μνήμης Register File 32 words, sub-nsec L1 cache ~32 KB, ~nsec L2 cache ~256 KB, many nsec manual/compiler Register spilling Automatic HW management L3 cache, ~8MB, many nsec Main memory (DRAM), GB, ~100 nsec Swap Disk 100 GB, ~10 msec Automatic (OS) demand paging 11

Γιατί η κύρια μνήμη είναι σημαντική? 12

Το σύστημα κύριας μνήμης Processors and caches Main Memory Storage (SSD/HDD) Η κύρια μνήμη είναι κρίσιμο δομικό στοιχείο κάθε υπολογιστικού συτήματος: server, mobile, embedded etc. Το σύστημα της κύριας μνήμης πρέπει να κλιμακώνει (σε μέγεθος, τεχνολογία, απόδοση, κόστος, διαχείριση) για να διατηρούνται τα οφέλη της αυξημένης επίδοσης. 13

Η μνήμη ως διαμοιραζόμενος πόρος Η πλειοψηφία των πόρων χρησιμοποιείται για την αποθήκευση και μετάδοση data 14

Επίδοση 15

It s the Memory, Stupid! It s the Memory, Stupid! (Richard Sites, MPR, 1996) 16

Ενέργεια 17

Ενεργειακό Κόστος Επικοινωνίας Dally, HiPEAC 2015 Dally, HiPEAC 2015 A memory access consumes ~1000X the energy of a complex addition 18 18 18

Σύγχρονες Ανάγκες/Προκλήσεις Ανάγκη για μεγαλύτερη χωρητικότητα (capacity), μεγαλύτερο εύρος διαύλου (bandwidth) και καλύτερη ποιότητα υπηρεσίας (QoS) Multicore systems: cores Data-intensive applications: data (size, throughput) Consolidation: ετερογένεια 19

Χωρητικότητα Κύριας Μνήμης Ο αριθμός πυρήνων διπλασιάζεται ~ κάθε 2 χρόνια Η χωρητικότητα της DRAM διπλασιάζεται ~ κάθε 3 χρόνια Lim et al., ISCA 2009 Η χωρητικότητα μνήμης/πυρήνα αναμένεται να μειώνεται κατά 30% κάθε δύο χρόνια. Για το εύρος ζώνης τα πράγματα είναι χειρότερα... 20

DRAM Improvement (log) Bandwidth & latency 100 Capacity Bandwidth Latency 128x 20x 10 1.3x 1 1999 2003 2006 2008 2011 2013 2014 2015 2016 2017 O χρόνος προσπέλασης παραμένει σχεδόν σταθερός 21

Γιατί ο χρόνος απόκρισης του συστήματος μνήμης ειναι κρίσιμός? In-memory Databases Graph/Tree Processing Εφαρμογές έντασης δεδομένων το σύστημα μνήμης γίνεται το σημείο συμφόρησης In-Memory Data Analytics Datacenter Workloads 22

Η μνήμη ως διαμοιραζόμενος πόρος σε σύγχρονα συστήματα FPGAs Αυξανόμενη πολυπλοκότητα και ετερογένεια! Hybrid Main Memory Heterogeneous Processors and Accelerators Persistent Memory/Storage (General Purpose) GPUs 23

Σύγχρονες Ανάγκες/Προκλήσεις Ανάγκη για μεγαλύτερη χωρητικότητα (capacity), μεγαλύτερο εύρος διαύλου (bandwidth) και καλύτερη ποιότητα υπηρεσίας (QoS) Multicore systems: cores Data-intensive applications: data (size, throughput) Consolidation: ετερογένεια Η κατανάλωση ενέργειας της κύριας μνήμης ~40-50% energy in off-chip (IBM, 2003) 24

DRAM Power consumption Υψηλή κατανάλωση ισχύος σε σύγχρονα συστήματα >40% in POWER7 (Ware+, HPCA 10) >40% in GPU (Paul+, ISCA 15) 25

Ενεργειακό Κόστος DRAM Refresh H DRAM καταναλώνει ενέργεια και όταν δε προσπελαύνεται Liu et al., RAIDR: Retention-Aware Intelligent DRAM Refresh, ISCA 2012. 26

Σύγχρονες Ανάγκες/Προκλήσεις Ανάγκη για μεγαλύτερη χωρητικότητα (capacity), μεγαλύτερο εύρος διαύλου (bandwidth) και καλύτερη ποιότητα υπηρεσίας (QoS) Multicore systems: cores Data-intensive applications: data (size, throughput) Consolidation: ετερογένεια Η κατανάλωση ενέργειας της κύριας μνήμης ~40-50% energy in off-chip (IBM, 2003) >40% power in DRAM Καταναλώνει ενέργεια και όταν δε χρησιμοποιείται Η κλιμάκωση (λόγω τεχνολογίας) «τελειώνει» 27

Κλιμακωσιμότητα DRAM O πυκνωτής πρέπει να είναι αρκετά μεγάλος για αξιόπιστη ανίχνευση φορτίου Το τρανζίστορ προσπέλασης πρέπει να είναι αρκετά μεγάλο για περιορισμένα ρεύματα διαρροής Η κλιμακωσιμότητα πέρα απο τα 40-35nm (2013) θα είναι πρόκληση [ITRS 09] (18nm, 2017) Emerging Memory Technologies 3D-Stacked DRAM higher bandwidth smaller capacity Reduced-Latency DRAM (e.g., RL/TL-DRAM, FLY-RAM) Low-Power DRAM (e.g., LPDDR3, LPDDR4, Voltron) Non-Volatile Memory (NVM) (e.g., PCM, STTRAM, ReRAM, 3D Xpoint) lower latency lower power larger capacity higher cost higher latency higher cost higher latency higher dynamic power lower endurance 28

Υβριδικά Συστήματα Σχεδίαση συστημάτων Χρήση πολλαπλών τεχνολογιών και HW/SW ενορχηστρωμένη διαχείριση τους CPU DRAM PCM DRAM Ctrl Ctrl Phase Change Memory (or Tech. X) Fast, durable Small, leaky, volatile, high-cost Large, non-volatile, low-cost Slow, wears out, high active energy 29

Near Data Processing Η μεταφορά δεδομένων καθοριστικό σημείο συμφόρησης επίδοσης και κατανάλωσης ενέργειας Ιδέα: Μείωση της μεταφοράς δεδομένων κάνοντας υπολογισμούς απευθείας εκεί οπου βρίσκονται τα δεδομένα Processor Core Cache Query Results Memory Interconnect Database Graphs Media 30

3D-Stacked memory Near Memory Computing Ευκαιρία: Logic + Memory Memory Logic 31

Αξιοπιστία/Ασφάλεια 32

Αξιοπιστία/Ασφάλεια Όσο η τεχνολογία κατεβαίνει σε nm μειώνεται η αξιoπιστία της Μια ιδιαίτερη ανακάλυψη (2014): Πολλές επαναλαμβανόμενες προσπελάσεις μιας γραμμής της κύριας μνήμης (DRAM row), πριν η μνήμη αναζωογονηθεί (refresh), προκαλούν σφάλματα διαταραχής σε ακολουθητικές γραμμές εμφανίζεται σε πολλά σύγχρονα πραγματικά DRAM chips (RowHammer problem) Download from: https://github.com/cmu-safari/rowhammer 33

RowHammer CPU Dally, HiPEAC 2015 Dally, HiPEAC 2015 DRAM Module loop: mov (X), %eax mov (Y), %ebx clflush (X) clflush (Y) mfence jmp loop X Y Download from: https://github.com/cmu-safari/rowhammer 34

RowHammer CPU DRAM Module loop: mov (X), %eax mov (Y), %ebx clflush (X) clflush (Y) mfence jmp loop X Y Download from: https://github.com/cmu-safari/rowhammer 35

RowHammer CPU DRAM Module loop: mov (X), %eax mov (Y), %ebx clflush (X) clflush (Y) mfence jmp loop X Y Download from: https://github.com/cmu-safari/rowhammer 36

RowHammer: Security Attack Κανείς μπορεί με προβλέψιμο τρόπο να εισάγει σφάλματα σε σύγχρονα DRAM chips Ένας απλός μηχανισμός αποτυχίας του HW μπορεί να δημιουργήσει ένα ευρύ κενό ασφαλείας στο σύστημα 37

RowHammer: Security Attack Κανείς μπορεί με προβλέψιμο τρόπο να εισάγει σφάλματα σε σύγχρονα DRAM chips Ένας απλός μηχανισμός αποτυχίας του HW μπορεί να δημιουργήσει ένα ευρύ κενό ασφαλείας στο σύστημα Induce bit flips in page table entries gain write access to the page table from user space gain read/write access to entire memory https://googleprojectzero.blogspot.gr/2015/03/expl oiting-dram-rowhammer-bug-to-gain.html 38

Apple Patch for RowHammer https://support.apple.com/en-gb/ht204934 HP, Lenovo, and other vendors released similar patches 39

Οργάνωση DRAM 40

Memory chip abstraction Address n 2 n x k bits CE (chip enable) WE (write enable) k 41

Address Register Row Decoder Memory Bank 222D storage array Address MSB LSB Column Decoder Data Out 42

Οργάνωση DRAM Channel DIMM Rank Chip Bank Row, Col Cell 43

Οργάνωση DRAM Bottom Up 44

_bitline Δομικό στοιχείο DRAM row enable Κυψελίδα (cell) 1 Πυκνωτής Λογική τιμή αποθηκεύεται με τη μορφή φορτίου πυκνωτή 1 Τρανζίστορ προσπέλασης On/Off συνδέει/αποσυνδέει τον πυκνωτή σε καλώδιο που ονομάζεται bitline 45

wordlines DRAM πίνακας (array) bitlines Cell Row 2D πίνακας κυψελίδων (cell) DRAM row ή DRAM page Κοινό καλώδιο (wordline) ελέγχει τα τρανζίστορ προσπέλασης. Sense Amp Sense Amp Sense Amp Sense Amp Row Buffer Row Buffer Κάθε bitline συνδέεται σε αισθητήραενισχυτή για την αξιόπιστη ανίχνευση του μικρού φορτίου πυκνωτή ενός cell. Προσπέλαση θέσης μνήμης: Ενεργοποίηση ολόκληρης γραμμής cells συνδέονται σε bitlines Ανοιγμα /τοποθέτηση γραμμής σε Row Buffer Read/Write εντολές διαβάζουν/γράφουν στο row buffer Μόνο μια γραμμή μπορεί να είναι ανοιχτή τη φορά! 46

Column Addr Latch Row MUX 2 14 rows DRAM πίνακας (array) -- αφαίρεση 2 10 columns 14 DRAM (2 24 bytes) 10 Column MUX 2 10 x 8 bits Row Buffer (sense amplifiers) 8 bits DRAM διεύθυνση από το memory controller Δεδομένα προς το memory controller Εντολή από τον memory controller 47

Column Addr Latch Row MUX 2 14 rows DRAM πίνακας (array) -- αφαίρεση 2 10 columns 14 DRAM (2 24 bytes) 10 Column MUX 2 10 x 8 bits 8 bits Row Buffer (sense amplifiers) Το μέγεθος του column είναι το width αυτου του interface Κάθε διεύθυνση είναι ένα ζεύγος <row, column> Δεδομένα προς το memory controller Εντολή από τον memory controller 48

Column Addr Latch Row MUX 2 14 rows Προσπέλαση DRAM array 0 14 2 10 columns DRAM (2 24 bytes) 2 10 Row 0 Column MUX 2 10 x 8 bits Row Buffer (sense amplifiers) 8 bits Access Address (Row 0, Column 2) Δεδομένα προς το memory controller Εντολή από τον memory controller 49

Πρόβλημα Διαστρωμάτωση (interleaving/banking) Ένας μεγάλος μονολιθικός πίνακας μνήμης Έχει μεγάλο χρόνο απόκρισης (latency) Δεν επιτρέπει πολλαπλές παράλληλες προσπελάσεις (memory level parallelism MLP) Ιδέα Διαίρεση πίνακα σε N επιμέρους banks που μπορούν να προσπελαστούν στον ίδιο ή σε ακολουθητικό κύκλο (cycle) Κάθε bank έχει μέγεθος συνολική μνήμη/n Προσπέλασεις σε διαφορετικά banks επικαλύπτονται Bits της διεύθυνσης καθορίζουν σε ποιο bank θα αντιστοιχηθεί 50

1K rows DRAM Bank DRAM bank : ένα memory array H μικρότερη δομή μνήμης η οποία μπορεί να προσπελαστεί παράλληλα (bank level parallelism) Αφαιρετική λογική αναπαράσταση bank Address Bank 0 CE (chip enable) WE (write enable) 32 bits 51

DRAM chip DRAM chip: διάταξη μνήμης που αποτελείται από πολλαπλά banks (8 συνήθως) Τα banks διαμοιράζονται κοινούς διαύλους εντολών/διευθύνσεων/δεδομένων (common command/address/data buses) pipelined accesses 52

Row Address Decoder Column 0 Column C-1 DRAM CHIP Bank 0 Row 0 DRAM chip Bank 7 Row Address... Row R-1 ROW BUFFER Column Address DRAM address bus Column Decoder DRAM command bus DRAM MEMORY CONTROLLER 32 DRAM data bus 32 53

1K rows Πρόβλημα: DRAM chip Η κατασκευή ενός DRAM chip με ευρύ interface (π.χ 32-bit/pin chip) είναι ακριβή ($). DRAM CHIP Bank 7 Bank 1 Bank 0 Address Bank 1 32 32 32 32 bits 54

Κατάτμηση: DRAM Rank Ιδέα: Συλλογική χρήση σύνολου chip, το καθένα με μικρό interface, για τη δημιουργία μιας ευρείας διεπαφής (wide interface). Rank: Σύνολο από chip που αποκρίνονται στην ίδια εντολή και στην ίδια διεύθυνση ταυτόχρονα αποθηκεύοντας διαφορετικό μέρος των ζητούμενων δεδομένων Μια δομική μονάδα DRAM (DRAM module) αποτελείται από 1 ή περισσοτερα ranks π.χ DIMM (dual inline memory module) αυτό συνδέουμε στη μητρική μας κάρτα! 55

1K rows 64-bit Wide DIMM (one rank) Παράδειγμα: δημιουργία 64-bit interface με το memory controller, με ένα rank από 8 chip με 8-bit interfaces. Η σωρευτική έξοδος δίνει τα 64-bit. DIMM DRAM CHIP 7 DRAM CHIP 1 DRAM CHIP 0 Address Bank 1 Bank 0 Bank 7 Bank 1 8 8 8 8 bits 8 bits 8 bits 64 bits 56

<0:7> <8:15> <56:63> 64-bit Wide DIMM (one rank) Ένας άλλος τρόπος να το σκεφτούμε/απεικονίσουμε είναι η κατάτμηση (partitioning) του κάθε bank στα διαφορετικά chips του ίδιου rank. Chip 0 Chip 1 Chip 7 Bank 7 Bank 0 Bank 7 Bank 0... Bank 7 Bank 0 Rank 0 ROW BUFFER ROW BUFFER ROW BUFFER Data <0:63> 57

64-bit Wide DIMM (one rank) Τα chip του ίδιου rank έχουν κοινό command και address bus (ανταποκρίνονται στην ίδια εντολή) αλλά έχουν διαφορετικό data bus (παρέχουν διαφορετικό τμήμα των δεδομένων) DRAM Chip DRAM Chip DRAM Chip DRAM Chip DRAM Chip DRAM Chip DRAM Chip DRAM Chip Command Data 58

<0:7> <8:15> <56:63> 64-bit Wide DIMM (one rank) To bank εξακολουθεί να είναι η μικρότερη δομή μνήμης που μπορεί να προσπελαστεί παράλληλα, απλώς είναι κατανεμημένο. Open Bank 0, Row 0 Chip 0 Chip 1 Chip 7 Bank 7 Bank 0 Bank 7 Bank 0... Bank 7 Bank 0 Rank 0 ROW BUFFER ROW BUFFER ROW BUFFER Data <0:63> 59

<0:7> <8:15> <56:63> 64-bit Wide DIMM (one rank) To bank εξακολουθεί να είναι η μικρότερη δομή μνήμης που μπορεί να προσπελαστεί παράλληλα, απλώς είναι κατανεμημένο. Access data: Row0, Col 0 (8 bytes dictated by interfaces) Chip 0 Chip 1 Chip 7 Bank 7 Bank 0 Bank 7 Bank 0... Bank 7 Bank 0 Rank 0 8b 8b 8b 8Bytes Data <0:63> 60

<0:7> <8:15> <56:63> 64-bit Wide DIMM (one rank) Πλεονεκτήματα: Λειτουργεί ως ένα chip μεγάλης χωρητικότητας και διευρυμένης διεπαφής (wide interface) έχοντας χαμηλότερο κόστος. Ο memory controller δε χρειάζεται να διαχειριστεί τα chip Διαχειρίζεται τα banks (η μικρότερη δομή που μπορεί να προσπελαστεί παράλληλα bank level parallelism) αγνοώντας οτι ειναι κατανεμημένα. Chip 0 Chip 1 Chip 7 Bank 7 Bank 0 Bank 7 Bank 0... Bank 7 Bank 0 Rank 0 ROW BUFFER ROW BUFFER ROW BUFFER Data <0:63> 61

<0:7> <8:15> <56:63> 64-bit Wide DIMM (one rank) Μειονεκτήματα: Granularity: δε μπορούν να γίνουν προσπελάσεις μικρότερες από το εύρος της διεπαφής (8 bytes) Chip 0 Chip 1 Chip 7 Bank 7 Bank 0 Bank 7 Bank 0... Bank 7 Bank 0 Rank 0 ROW BUFFER ROW BUFFER ROW BUFFER Data <0:63> 62

Δίαυλοι DRAM (DRAM channels) Channel: Το σύνολο των banks (οργανωμένα σε ranks και DIMMs) τα οποία διαμοιράζονται κοινό link (εντολών, διευθύνσεων, δεδομένων) προς τον επεξεργαστή. 2 ανεξάρτητα Channels: 2 memory controllers 63

Η γενική εικόνα 64

Οργάνωση DRAM Top Down 65

Memory Channels Channel DIMM (Dual in-line memory module) Processor Memory channel Memory channel 66

DIMM DIMM (Dual in-line memory module) Side view Front of DIMM Back of DIMM 67

DIMM DIMM (Dual in-line memory module) Side view Rank 0 Rank1 68

Breaking Down a DIMM Ranks Rank 0 (Back) Rank 1 (Back) <0:63> MUX <0:63> Addr/Cmd CS <0:1> Data <0:63> Memory channel 69

<0:7> <8:15> <56:63> Chip 0 Chip 1 Chip 7 Breaking down a Rank Chip Rank 0... <0:63> Data <0:63> 70

<0:7> <0:7> Chip 0 Breaking down a chip Banks Bank 0 <0:7> <0:7>... MUX <0:7> 71

<0:7> Breaking Down a Bank 1B (column) 2kB row 16k-1 Bank 0... row 0 ROW BUFFER 1B 1B... 1B 1B 72

... Παράδειγμα: Μεταφορά ενός cache block Physical memory space 0xFFFF F Channel 0 DIMM 0 0x40 0x00 64B cache block Rank 0 73

<0:7> <8:15> <56:63>... Παράδειγμα: Μεταφορά ενός cache block Physical memory space 0xFFFF F Chip 0 Chip 1 Chip 7 Rank 0... 0x40 0x00 64B cache block Data <0:63> 74

<0:7> <8:15> <56:63>... Παράδειγμα: Μεταφορά ενός cache block Physical memory space 0xFFFF F Row 0 Col 0 Chip 0 Chip 1 Chip 7 Rank 0... 0x40 0x00 64B cache block Data <0:63> 75

<0:7> <8:15> <56:63>... Παράδειγμα: Μεταφορά ενός cache block Physical memory space 0xFFFF F Row 0 Col 0 Chip 0 Chip 1 Chip 7 Rank 0... 0x40 0x00 8B 64B cache block 8B Data <0:63> 76

<0:7> <8:15> <56:63>... Παράδειγμα: Μεταφορά ενός cache block Physical memory space 0xFFFF F Row 0 Col 1 Chip 0 Chip 1 Chip 7 Rank 0... 0x40 0x00 8B 64B cache block Data <0:63> 77

<0:7> <8:15> <56:63>... Παράδειγμα: Μεταφορά ενός cache block Physical memory space 0xFFFF F Row 0 Col 1 Chip 0 Chip 1 Chip 7 Rank 0... 0x40 0x00 8B 8B 64B cache block 8B Data <0:63> 8 κύκλοι I/O χρειάζονται για τη μεταφορά ενος block 64B Διαβάζονται 8 στήλες του κατανεμημένου bank ακολουθητικά 78

Γιατί τα πολλαπλά banks (interleaving) είναι σημαντικά? Επιτρέπουν πολλαπλές ταυτόχρονες προσβάσεις μνήμης Addr Bus A 0 A 1 A 2 DRAM Wait for DRAM access Wait for DRAM access Wait for DRAM Data Bus D 0 D 1 No interleaving Addr Bus A 0 A 1 A 2 A 3 DRAM Wait for DRAM bank 0 Wait for DRAM bank 1 Wait for DRAM bank 2 Wait for DRAM bank 3 Interleaving No bank conflicts Data Bus D 0 D 1 D 2 D 3 79

Αντιστοίχιση (mapping) σε banks (interleaving) Bits της διεύθυνσης χρησιμοποιούνται για την αντιστοίχιση Παράδειγμα: Row interleaving Row (14 bits) 2GB μνήμη, 8 banks, 16Κ rows & 2K columns per bank, memory bus 8 bytes Bank (3 bits) Column (11 bits) Byte in bus (3 bits) Ακολουθητικά rows σε ακολουθητικά banks Προσπελάσεις ακολουθητικών cache blocks εξυπηρετούνται με pipelined τρόπο Cache Block interleaving (cache block 64Β) Row (14 bits) High Col (8 bits) Bank (3 bits) Low Col (3 bits) Byte in bus (3 bits) Ακολουθητικά cache blocks σε ακολουθητικά banks Προσπελάσεις ακολουθητικών cache blocks εξυπηρετούνται παράλληλα 80

Πολλαπλά banks Επιτρέπουν ταυτόχρονες προσβάσεις μνήμης (concurrency) Bits της διεύθυνσης χρησιμοποιούνται για την αντιστοίχιση Στόχος: Μείωση των bank conflicts Πως επιλέγω τα bits-δείκτες για διασπορά στα banks? Τα LSB έχουν μεγαλύτερη εντροπία Χρήση συναρτίσεων κατακερματισμού (hash) (π.χ XOR διαφόρων bits της διεύθυνσης) 81

OS interference Virtual Memory: το λειτουργικό σύστημα μπορεί να παρέμβει στη διαδικασία αντιστοίχισης χωρίς έλεγχο (uncontrolled) VA Virtual Page Number (52bits) Page Offset (12 bits) PA Physical Page Frame (19 bits) Page Offset (12 bits) Row (14 bits) Bank (3 bits) Column (11 bits) Byte in bus (3 bits) 82

Πολλαπλά channels Όμοια οφέλη με πολλαπλά banks (concurrency) Ακόμα καλύτερα διότι έχουν διαφορετικά buses Αυξημένο εύρος ζώνης (bus bandwidth) Μειονεκτήματα: Αυξημένο κόστος σε $ και σε area 83

Αντιστοίχιση σε multiple channels C Row (14 bits) Bank (3 bits) Column (11 bits) Byte in bus (3 bits) Row (14 bits) C Bank (3 bits) Column (11 bits) Byte in bus (3 bits) Row (14 bits) Bank (3 bits) C Column (11 bits) Byte in bus (3 bits) Row (14 bits) Bank (3 bits) Column (11 bits) C Byte in bus (3 bits) 84

Χρόνος απόκρισης DRAM 85

wordlines Επισκόπηση DRAM Bank bitlines Cell Row Sense Amp Sense Amp Sense Amp Sense Amp Row Buffer 86

Λειρουργία DRAM 3 Βασικές Eντολές Προσπέλασης: Activate Open row (place it into Row Buffer) Read/Write Read/Write column in the Row Buffer Precharge Close the row and prepare the bank for a next access 87

Προσπέλαση / Περιορισμοί Χρονισμού 88

ACT READ PRE Προσπέλαση / Περιορισμοί χρονισμού trc Memory array tras 1. Activation trp 3. Prech. Periph. & I/O circuitry trcd 2. I/O time Bus tcl data tbl The three phases of a DRAM access Διαφορετικές ακολουθίες προσπελάσεων με διαφορετικές τοπικότητες (i.e bank, row, rank etc hit/conflict) έχουν διαφορετικούς χρόνους απόκρισης 89

ACT READ PRE ACT READ Προσπέλαση / Περιορισμοί χρονισμού trc Memory array tras 1. Activation trp 3. Prech. 1. Activation Periph. & I/O circuitry trcd 2. I/O trcd 2. I/O time Bus tcl data tcl data tbl tbl Consecutive accesses same bank Row Closed or Row Conflict First access trcd+tcl+tbl Second access trp+trcd+tcl+tbl 90

ACT READ READ READ Προσπέλαση / Περιορισμοί χρονισμού Memory array tras 1. Activation Periph. & I/O circuitry Bus trcd 2. I/O tcl 2. I/O data 2. I/O data data time tbl Consecutive accesses same bank Row Opened and Row Buffer Hit (only column access) First access trcd+tcl+tbl Second access tcl+tbl Third Acess tcl+tbl 91

Ποιός ελέγχει τη λειτουργία της μνήμης? Eλεγκτές μνήμης (Memory Controller) 92

Η DRAM ως παράδειγμα Οι μνήμες με μεγάλους χρόνους απόκρισης έχουν παρόμοια χαρακτηριστικά που απαιτούν διαχείριση/έλεγχο. Θα χρησιμοποιήσουμε την DRAM ως παράδειγμα Όμως τα βασικά ζητήματα και αρχές χρονολόγησης αιτήσεων μνήμης και ελέγχου μνήμης που θα συζητήσουμε, είναι συναφή για ελεγκτές διαφόρων τύπων μνήμης 93

Λειτουργίες Memory Controller Διασφαλίζει την ορθή λειτουργία της DRAM (refresh/timing) Εξυπηρετεί τις αιτήσεις μνήμης προς την DRAM σεβόμενος τους περιορισμούς χρονισμού του DRAM chip Μεταφράζει τις αιτήσεις μνήμης σε ακολουθίες εντολών DRAM (activate, read/write, precharge etc.) Περιορισμοί: resource conflicts (bank, bus, channel etc) Αποθηκεύει τις αιτήσεις σε ενδιάμεση μνήμη (buffering) και τις χρονοδρομολογεί με στόχο την υψηλή επίδοση + QoS Reordering row-buffer/bank/rank/bus etc. management Διαχειρίζεται την κατανάλωση ισχύος της DRAM Turn on/off DRAM chips 94

Τοποθέτηση DRAM controller Στον επεξεργαστή (on CPU chip) Μικρότερος χρόνος απόκρισης για ένα memory access Μεγαλύτερο εύρος ζώνης ανάμεσα στους πυρήνες και τον memory controller Πιο εύκολη επικοινωνία πληροφορίας μεταξύ τους (π.χ πόσο σημαντικό είναι ένα request?) Στο DRAM chipset Eυκολία πρόσδεσης (plug-in) διαφόρων τύπων μνήμης στο σύστημα Μειωμένο power budget του CPU chip 95

Ενας σύγχρονος memory controller Buffering/queueing requests per bank. Scheduling per bank & across banks 96

Ενας σύγχρονος memory controller 97

Διαχείριση του Row Buffer Πολιτικές: Open Row: Close Row: Hybrid: Κρατάω τη γραμμή ανοιχτή στο Row Buffer (δεν κάνω precharge αμέσως). Ακολουθητικές προσπελάσεις σε στήλες ανοιχτής γραμμής έχουν πολύ μικρότερο κόστος. Ευνοεί αιτήσεις μνήμης με locality. (commodity systems, small agent number) Κλείνω τη γραμμή στο Row Buffer (precharge αμέσως). Ακολουθητικές προσπελάσεις σε διαφορετικά rows έχουν μικρότερο κόστος. Ευνοεί irregular αιτήσεις μνήμης. (systems with large agent number) Δυναμική προσαρμοστική (adaptive) τεχνική 98

Row decoder Row Hit / Row Conflict Columns Rows Empty Row Buffer 99

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) Columns Rows Empty Row Buffer 100

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) Columns Row address 0 Rows Empty Row Buffer 101

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) Columns Row address 0 Rows Empty Row Buffer 102

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) Columns Row address 0 Rows Row 0 Row Buffer 103

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) Columns Row address 0 Rows Row 0 Row Buffer Column address 0 Column mux 104

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) Columns Row address 0 Rows Row 0 Row Buffer Column address 0 Column mux 105

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) Columns Row address 0 Rows Row 0 Row Buffer Column address 0 Column mux Data 106

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) Columns Row address 0 Rows Row 0 Row Buffer Column address 0 Column mux Data 107

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) Columns Row address 0 Rows Row 0 Row Buffer Column mux Data 108

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) Columns Row address 0 Rows Row 0 Row Buffer Column mux Data 109

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) Columns Row address 0 Rows Row 0 Row Buffer HIT Column mux Data 110

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) Columns Row address 0 Rows Row 0 Row Buffer HIT Column address 1 Column mux Data 111

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) Columns Row address 0 Rows Row 0 Row Buffer HIT Column address 1 Column mux Data 112

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) Columns Row address 0 Rows Row 0 Row Buffer HIT Column address 1 Column mux Data 113

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) Columns Row address 0 Rows Row 0 Row Buffer Column mux Data 114

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) Columns Row address 0 Rows Row 0 Row Buffer Column mux Data 115

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) Columns Row address 0 Rows Row 0 Row Buffer HIT Column mux Data 116

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) Columns Row address 0 Rows Row 0 Row Buffer HIT Column address 85 Column mux Data 117

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) Columns Row address 0 Rows Row 0 Row Buffer HIT Column address 85 Column mux Data 118

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) Columns Row address 0 Rows Row 0 Row Buffer HIT Column address 85 Column mux Data 119

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) Columns Row address 0 Rows Row 0 Row Buffer Column mux Data 120

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) (Row 1, Column 0) Columns Rows Row 0 Row Buffer Column mux Data 121

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) (Row 1, Column 0) Columns Rows Row 0 Row Buffer CONFLICT! Column mux Data 122

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) (Row 1, Column 0) Columns Rows Row Buffer CONFLICT! Column mux Data 123

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) (Row 1, Column 0) Columns Row address 1 Rows Row Buffer CONFLICT! Column mux Data 124

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) (Row 1, Column 0) Columns Row address 1 Rows Row Buffer CONFLICT! Column mux Data 125

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) (Row 1, Column 0) Columns Row address 1 Rows Row 1 Row Buffer CONFLICT! Column mux Data 126

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) (Row 1, Column 0) Columns Row address 1 Rows Row 1 Row Buffer CONFLICT! Column address 0 Column mux Data 127

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) (Row 1, Column 0) Columns Row address 1 Rows Row 1 Row Buffer CONFLICT! Column address 0 Column mux Data 128

Row decoder Row Hit / Row Conflict Access Address: (Row 0, Column 0) (Row 0, Column 1) (Row 0, Column 85) (Row 1, Column 0) Columns Row address 1 Rows Row 1 Row Buffer Column address 0 Column mux Data 129

Row Buffer Management Policies Policy First access Next access Commands needed for next access Open row Row 0 Row 0 (row hit) Read Open row Row 0 Row 1 (row conflict) Closed row Row 0 Row 0 access in request buffer (row hit) Closed row Row 0 Row 0 access not in request buffer (row closed) Precharge + Activate Row 1 + Read Read Activate Row 0 + Read + Precharge Closed row Row 0 Row 1 (row closed) Activate Row 1 + Read + Precharge 130

Αντιστοίχιση (mapping) διευθύνσεων channel 0 bank 5 rank 0 row 0x19C col 0x60 channel 0 bank 2 rank 0 row 0x7E2 col 0x8E 131

Πολιτικές χρονοδρομολόγησης DRAM Πολιτική χρονοδρομολόγησης == μηχανισμός απόδοσης προτεραιοτήτων σε διαφορετικά requests Η απόδοση προτεραιότητας μπορεί να βασίζεται Στην ηλικία του request Στον χρόνο που απαιτείται για να εξυπηρετηθεί Στον τύπο του Στην κρισιμότητα του 132

Πολιτικές χρονοδρομολόγησης DRAM FCFS (first come first served) - Η γηραιότερη αίτηση πρώτη FR-FCFS (first ready, first come first served) 1. Αιτήσεις που οδηγούν σε Row-Hit πρώτες 2. Η γηραιότερη αίτηση πρώτη Στόχος: Μεγιστοποίηση του row hit rate μεγιστοποίηση του DRAM throughput Η χρονοδρομολόγηση γίνεται στο επίπεδο εντολών - Εντολές στήλης (read/write) παίρνουν προτεραιότητα από τις εντολές γραμμής (activate/precharge) - Σε κάθε group οι εντολές παίρνουν προτεραιότητα με βάση το χρόνο αναμονής στην ουρά (γηραιότητα). 133

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 134

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 135

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 136

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 137

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 138

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 139

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 140

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 141

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 142

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 143

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 144

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 145

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 146

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 147

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 148

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 149

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 150

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 151

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 152

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 153

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 154

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 155

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 156

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 157

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 158

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 159

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 160

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T0: Row 0 T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 161

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM T0: Row 0 Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 162

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 163

Row decoder Memory Interference σε πολυπύρηνες αρχιτεκτονικές Open Row Buffer FR-FCFS T1: Row 5 T1: Row 111 T1: Row 16 Memory Request Buffer Row 0 Row Buffer T0: STREAM T1: RANDOM Column mux Row size: 8KB, cache block size: 64B 128 (8KB/64B) requests of T0 serviced before T1 Data Moscibroda and Mutlu, Memory Performance Attacks, USENIX Security 2007. 164

Διαχείριση του Memory Interference Ο memory controller πρέπει να λαμβάνει υπόψη του και: Fairness Predictability Quality of Service (QoS) Μείωση/έλεγχος της παρεμβολής στο σύστημα μνήμης Έξυπνες τεχνικές χρονοδρομολόγησης σε ετερογενή πολύπλοκα συστήματα: π.χ εφαρμογή τεχνικών εκμάθησης Data/application partitiotining/mapping στα banks/ranks/channels Μεταφορά πληροφορίας μικροαρχιτεκτονική controller π.χ κρισιμότητα των requests, thread awareness κ.α 165

DRAM Refresh 166

O πυκνωτής της κυψελίδας DRAM μπορεί να αποφορτιστεί ρεύματα διαρροής Ο memory controller πρέπει να διαβάζει περιοδικά κάθε row για να αποκαθιστά το φορτίο (refresh) Activate + Precharge κάθε row άνα Ν ms (συνήθως Ν=64) Επιπτώσεις στην επίδοση: DRAM Refresh To DRAM bank δεν είναι διαθέσιμο όσο αναζωογονείται Μεγάλοι χρόνοι αναμονής: Αν όλα τα rows αναζωογονηθούν μαζί (in burst), η DRAM δεν είναι διαθέσιμη κάθε 64ms μέχρι να ολοκληρωθεί το refresh 167

DRAM Refresh Burst Refresh: όλα τα rows αναζωογονούνται κατευθείαν το ένα μετά το άλλο Distributed Refresh: κάθε row αναζωογονείται σε διαφορετική χρονική στιγμή ανά τακτά χρονικά διαστήματα To distributed refresh εξαλείφει τους μεγάλους χρόνους αναμονής 168

Refresh: Κόστος σε επίδοση Liu et al., RAIDR: Retention-Aware Intelligent DRAM Refresh, ISCA 2012. 169