D - CA - XIV - MH - 1 HUMBOLDT-UNIVERSITÄT ZU BERLIN INSTITUT FÜR INFORMATIK Vorlesung 14 Speichersysteme (2) Sommersemester 2003 Leitung: Prof. Dr. Miroslaw Malek
D - CA - XIV - MH - 2 SPEICHERSYSTEME (2) - CACHE-GRÖßE - DER GETEILTE CACHE - HAUPTSPEICHER - TECHNOLOGIEN - ORGANISATION DES HAUPTSPEICHERS - INTERLEAVING - VIRTUELLER SPEICHER (Erweiterungsbrücke) - PAGING contra SEGMENTATION - ADRESSÜBERSETZUNG
D - CA - XIV - MH - 3 CACHE PARAMETER - CACHE-GRÖßE klein groß -geringer Hardwareaufwand -viele kapazitäts- und konfliktbedingte Nicht-Treffer -sehr kleine Caches arbeiten unabhängig von ihrer Organisation sehr schlecht -hoher Hardwareaufwand -Leistung hängt von der Größe und der Ersetzungsstrategie ab -sehr große Caches arbeiten auch unabhängig von ihrer Organisation gut Für Caches mittlerer Größe gilt: -2- oder 4-Wege-Set, assoziative Caches liegen dicht an der Leistung von voll assoziativen Caches (obwohl die set-assoziativen Caches sehr viel weniger Hardware erfordern und schneller sind)
TEILUNG DES CACHES Einige Implementierungen teilen den Cache auf in: - Datencache - Befehlscache Vorteile der Aufteilung des Caches: - "verdoppelt" die Bandbreite der CPU - Gelegenheit, jeden Cache unter Berücksichtigung der unterschiedlichen Charakteristiken des Daten- und Befehlsflusses zu optimieren * Befehle müssen nur gelesen werden * Befehle haben eine bessere örtliche und zeitliche Lokalität als Daten Nachteil der Cache-Aufteilung - Aufrechterhaltung der Konsistenz zwischen den beiden Caches (bei selbstmodifizierendem Code) D - CA - XIV - MH - 4
D - CA - XIV - MH - 5 RISC 6000 CACHE Aufgeteilter nicht-transparenter Cache: Im Befehlssatz sind Befehle zur Manipulation des Caches enthalten. Diese werden hauptsächlich dazu genutzt, die Cache-Konsistenz zu erhalten. Befehlscache: -2-Wege Set assoziativ (Set-Größe = 2 Blöcke) -Block-Größe = 64 Bytes -Cache-Größe = 128 Frames = 8 Kbytes Daten-Cache: -4-Wege Set assoziativ (Set-Größe = 4 Blöcke) -Block-Größe = 128 Bytes -Cache-Größe = 64 Kbytes -write back - Strategie -Hardware-optimiert, um lange Verzögerung beim erneuten Laden von Frames zu verhindern
HAUPTSPEICHER D - CA - XIV - MH - 6 Die zweite Ebene der Speicher-Hierarchie ist normalerweise der Hauptspeicher (einige Systeme haben zwei Ebenen von Caches) - Hauptspeicher: Implementierung des Speichers, der durch den Befehlssatz definiert wird - Hauptspeicher ist sichtbar: es gibt Befehle, um den Hauptspeicher zu manipulieren Leistungsmessung - Bandbreite: übertragene Bytes pro Takt * diese Messung ist für I/O wichtig * sie ist auch wichtig, wenn die Cache-Blöcke groß sind (16 Bytes oder mehr) - Latenz-Zeit: die Zeit, die vergeht, bis die Daten verfügbar sind * Zugriffszeit: die Zeit zwischen einer Lese-Anforderung und dem Eintreffen der Daten * Takt-Zeit: Zeit zwischen zwei nacheinander durchgeführten Lese-Anforderungen * die Zugriffszeit kann kürzer als die Takt-Zeit sein
D - CA - XIV - MH - 7 SPEICHER-CHARAKTERISTIKEN Speicher-Charakteristiken eines typischen Mainframe-Computer von 2003 Speicherebenen Charakteristiken Ebene 4 Bandspeicher Gerätetechnologie Ebene 0 CPU Register ECL Ebene 1 Cache 256K-bit SRAM Ebene 2 Hauptspeicher 1GBit DDR-RAM Ebene 3 Plattenspeicher 250 Gbyte Festplatte 1-Tbyte Magnetband Zugriffszeit, t i 10 ns 25-40 ns 60-100 ns 8,9 ms Kapazität, s i (in bytes) Kosten, ci (in cents/kb) Bandbreite, b i (in MB/s) Transfereinheit, x i Speicher zuordnung 512 bytes 1 Mbyte 8 GBytes 60-250 Gbytes 2-20 min (Such-Zeit) 512 Gbytes- 2 Tbytes 180 0,19 0,0018 0.00000013 0.0000000001 bis zu 1.000.000 250-400 133-800 30-50 18-23 4-8 bytes pro Wort Compiler 32 bytes Pro Block 0.5-1 Kbytes pro Seite 5-512 Kbytes Pro File Backupspeicher Betriebssystem/User Hardwarekontrolle Betriebssystem Betriebssystem/User
Charakteristiken von RAM-Technologien D - CA - XIV - MH - 8 Statisches RAM (SRAM) - schnell - teuer - benötigt kein Auffrischen Dynamisches RAM (DRAM) - nicht so schnell wie statisches RAM - billiger als statisches RAM - dichter (pro Chip) als statisches RAM - benötigt Auffrischen - Adressleitungen werden normalerweise "multiplexed" Gegenwärtig nutzen Caches typischerweise SRAM und Hauptspeicher DRAM.
D - CA - XIV - MH - 9 DYNAMISCHES RAM sel 0 Zeile 0 Zellenselektor sel 1. sel n-1.. Zeile 1 Zeile n-1 write read Adress-Bits Spaltenselektor Daten-Bit
D - CA - XIV - MH - 10 STATISCHES RAM Bit-Leitung Selekt-Leitung write read
VERBESSERUNG DER LEISTUNG DES HAUPTSPEICHERS D - CA - XIV - MH - 11 Vergrößern des Hauptspeichers Interleaved-Speicher DRAM spezifisches Interleaving (a) Ein-Wort-breite Speicherorganisation (b) Breite Speicherorganisation CPU CPU CPU (c) Interleaved Speicherorganisation Cache Multiplexer Cache Bus Bus Bus Memory Memory SpB 0 SpB x: Speicherbank mit x = 0.. 3 SpB 1 SpB 2 SpB 3
VERBESSERUNG DER LEISTUNG DES HAUPTSPEICHERS D - CA - XIV - MH - 12 Zur Veranschaulichung sei angenommen man benötige: - 1 Takt, um eine Adresse an den Adress-Bus anzulegen, - 6 Takte für eine Speicheranforderung, - 1 Takt, um die Daten vom Bus zu erhalten - angenommene Bandbreite: 1-Wort-Bus: 1/8 Wort pro Takt Duch Benutzung einer viermal breiteren Bus und Speicherorganisation können wir die Speicherbandbreite auf ein halbes Wort pro Takt erhöhen. Zusätzliche Hardwarekosten: - Multiplexer zwischen Cache und CPU - Kosten des breiteren Busses
D - CA - XIV - MH - 13 BENUTZUNG VON INTERLEAVED SPEICHER Aufteilung des Speichers in mehrere Bänke, wobei aufeinanderfolgende Adressen in aufeinanderfolgenden Bänken liegen Beispiel: Aufteilung in vier Bänke (jede 1 Wort breit) - Eine Speicheradresse liefert jetzt vier Worte - Speicher-Bus bleibt 1 Wort breit - Kosten eines 4-Wort-Transfers: * 1 Takt, um die Adresse an den Bus zu legen * 6 Takte für Speicherzugriff * 4 Takte Antwortzeit der 4 Bänke * Bandbreite = 4/11 Worte pro Takt
DRAM CHIP-ORGANISATION Ein DRAM Chip wird typischerweise als "quadratisches" Bitfeld organisiert. (Beispiel : ein 1 Mega-Bit Chip besteht aus 1024 Zeilen mit 1024 Bits) Wenn die Adressbits gemultiplexed werden, benötigt man zwei Phasen um ein Bit zu spezifizieren: erste Phase: durch die Adressbits wird eine Zeile in einen internen Puffer gelesen; zweite Phase: ein Bit aus dem internen Puffer wird selektiert - während das ausgewählte Bit zur CPU transportiert wird, wird der interne Puffer zurück in die Zeile, aus der er kam, geschrieben (weil das Lesen zerstörend ist) - durch die Wiederherstellung der Zeile ist die Zugriffszeit kürzer als die Takt- Zeit Normalerweise werden bei jedem Speicherzugriff 4 (oder mehr) aufeinanderfolgende Worte zwischen Hauptspeicher und Cache verschoben. Dies läßt optimierte "Betriebsarten" zu. D - CA - XIV - MH - 14
DRAM SPEZIFISCHE OPTIMIERUNGEN Chip Größe Zeilenzugriff Langsam schnell DRAM DRAM D - CA - XIV - MH - 15 - Nibble mode: jeder DRAM Chip liefert (akzeptiert) 4 aufeinanderfolgende Bits pro Adresse - Page mode oder Static column (SCRAM) mode: wenn eine Zeile ausgewählt ist, können verschiedene Bits aus der gleichen Zeile durch Änderung der Spalten- Adresse ausgewählt werden DRAM Takt-Zeit für optimierten Zugriff Spaltenzugriff Taktzeit Optimierte Zeit: nibble, page, static column 64 Kbits 180 ns 150 ns 75 ns 250 ns 150 ns 256 Kbits 150 ns 120 ns 50 ns 220 ns 100 ns 1 Mbits 120 ns 100 ns 25 ns 190 ns 50 ns 4 Mbits 100 ns 80 ns 20 ns 165 ns 40 ns 16 Mbits 85 ns 65 ns 15 ns 140 ns 30 ns Ausgehend vom 1-Mbit DRAM, ist die optimierte Takt-Zeit ungefähr viermal schneller als die nicht-optimerte. Sie ist so viel schneller, daß der "page mode" in "fast page mode" umbenannt wurde. Die optimerte Takt-Zeit bleibt gleich, unabhängig welche der Optimierungsmethoden ausgewählt wird.
D - CA - XIV - MH - 16 VIRTUELLER SPEICHER Übersicht - Motivation - Virtueller Seitenspeicher - Seitentabellen - Ersetzungsstrategien - Seitenregister - Speicherschutz - Weitere Optimierung
MOTIVATION D - CA - XIV - MH - 17 Wir haben einen Rechner mit 16 Mbyte Hauptspeicher. -Wir haben ein Problem, das 20 Mbytes Speicher benötigt *Lösung: benutze Plattenspeicher als Back-up and jongliere mit Speicherstücken zwischen Hauptspeicher und Platte hin und her (Kontrolle durch den Benutzer) -Diese Technik heißt "Speicher-Overlay" (ein Speicherstück wird mit verschiedenen Stücken auf der Platte (oder Band) "überlagert"). Sie ist *schwer zu programmieren *Fehleranfällig *Nicht portierbar (wenn wir weiteren Speicher kaufen, müssen wir das Programm neu schreiben!)
D - CA - XIV - MH - 18 VIRTUELLER SPEICHER Virtueller Speicher ist ein Hardware/Software Mechanismus (unter Kontrolle des Betriebssystems), der dem Nutzer die Illusion eines Speichersystems, das viel größer als der physische (primäre) Speicher der Maschine ist, vermittelt: - Die Illusion eines großen Speichers wird durch die Benutzung eines großen sekundären Speichers (Disk/Paging Device/Swap Space) als Backup für den primären Speicher erreicht Virtueller Speicher erscheint als Speicher, der so groß wie der Swappingspace (sehr groß) und so schnell wie der physische Speicher (viel schneller als das Swapping- device) ist. Er erlaubt: - Dynamische Anpassung der Größe eines Prozesses - Bessere Ausnutzung des primären Speichers - Bequeme Aufteilung des Prozeß-Raums - Ein großer Speicher ist für Multiprogrammierung entscheidend
VIRTUELLER SPEICHER (VM) D - CA - XIV - MH - 19 Was ist die "swap" Einheit in VM? - Segmente (variable Größe) - Seiten (Pages) - Paged Segmented Virtual Memory Wort pro Adresse Seite Eine Segment Zwei (Segment und Offset) dem Programmierer sichtbar? Block-ersetzung Ineffektivität bei der Speichernutzung Effizienter Plattenzugriff? Unsichtbar für den Anwendungsprogrammierer Trivial (alle Blöcke haben die gleiche Größe) Interne Fragmentierung (ungenutzer Teil einer Seite) Ja (bestimme die Seitengröße so, daß Zugriffs- und Transferzeit klein werden) Kann für den Anwendungsprogrammierer sichtbar sein Schwer (man muß ein zusammen-hängendes, variabel großes, ungenutztes Stück Hauptspeicher finden) Externe Fragmentierung (ungenutzte Teile des Hauptspeichers) Nicht immer (kleine Segmente könnten nur ein paar Bytes transferieren)
D - CA - XIV - MH - 20 PAGING CONTRA SEGMENTIERUNG Beides kann Speicher verschwenden, abhängig von der Blockgröße und davon, wie gut die Segmente zusammen in den Hauptspeicher passen. Programmiersprachen mit unbeschränkten Zeigern erfordern das Segment und die Adresse. Ein zusammenführender Ansatz, "paged segmented virtual memory" versucht von beidem das Beste zu erreichen: die Segmente werden aus Seiten zusammengesetzt, so daß das Ersetzen eines Blockes einfach ist, aber ein Segment als eine logische Einheit betrachtet werden kann.
D - CA - XIV - MH - 21 PAGED VIRTUAL MEMORIY Die Einheit, die zwischen dem primären und sekundären Speicher verschoben wird, heißt Page (Seite) (entsprechend den Blöcken beim Cache) Der primäre Speicher ist logisch in "page frames" eingeteilt Der Sekundärspeicher ist logisch in Seiten unterteilt (page frame size = page size) Ein Hauptspeicher-Page-Frame ist entweder - frei oder -enthält eine Kopie einer Sekundärspeicherseite
D - CA - XIV - MH - 22 PAGED VIRTUAL MEMORIES - TYPISCHE PARAMETER - Seitengröße = 1 bis 16 Kbytes - Hauptspeicher Hit time: 1 bis 10 Takte - Hauptspeicher Miss Penalty: 100,000 bis 600,000 Takte (wenn es keine Überschneidung mit der Ausführung anderer Prozesse gibt) - Hauptspeicher Miss rate: 0.0001 % bis 0.001 % - Hauptspeichergröße: 4 Mbytes bis 2 Gbytes - Sekudärspeichergröße: 16 Mbytes bis 2 Gbytes (pro Prozeß)
ADRESSUMSETZUNG -die CPU generiert virtuelle Adressen -Eine virtuelle Adresse besteht aus: - einer Seitennummer - einem Offset in dieser Seite -die Umsetzung einer virtuellen Seite zur physischen Seite erfolgt über: - Seitentabellen oder - Seitenregister (invertierte Seitentabellen) - Wenn eine physische Seite nicht im Hauptspeicher ist, gibt es einen Seitenfehler - die Nummer der Seite wird zum Sekundärspeicher gesendet - ein Frame wird ausgewählt um die gesuchte Seite aufzunehmen - die gesuchte Seite wird in den Frame verschoben D - CA - XIV - MH - 23
D - CA - XIV - MH - 24 ADDRESSUMSETZUNG MIT SEITENTABELLEN -das Bestriebssystem verwaltet eine Tabelle mit einem Eintrag pro VM-Seite - die virtuelle Seitennummer wird benutzt, um die Seitentabelle zu indizieren, und den dazugehörenden Tabelleneintrag zu erhalten - jeder Eintrag enthält *residence bit: gibt an, ob eine Kopie dieser Seite momentan im Hauptspeicher ist oder nicht *Framenummer: der Frame, der die Kopie der Seite hält (wenn vorhanden) *andere Informationen (Schutz-Bits - darüber später mehr) - der Eintrag wird entweder einen Fehler erzeugen, oder die Adresse der physischen Seite liefern, mit der (verbunden mit dem Offset) auf den Hauptspeicher zugegriffen werden kann
D - CA - XIV - MH - 25 SEITENTABELLEN - ADDRESSUMSETZUNG Virtuelle Adresse Virtuelle Seitennummer Offset Seitentabelle Hauptspeicher Seitentabelleneintrag Frame- Nummer belegt Physische Seitennummer
D - CA - XIV - MH - 26 SEITENTABELLEN-ERSETZUNGSSTRATEGIE Es wird eine komplexe Ersetzungsstrategie für die Seiten im Hauptspeicher angewandt, da das Miss penalty, verbunden mit dem Sekundärspeicher, gravierender ist - Um die Miss ratio zu verringern, wird LRU (oder eine einfachere Variante) benutzt. "Trace driven"-simulationen zeigen, daß LRU ziemlich dicht an der optimalen "Orakel-" Lösung ist, die immer den Frame der zukünftig am längsten nicht benutzt werden wird ersetzt. Schreibstrategie: immer zurückschreiben wenn das korrespondierende dirty bit gesetzt ist, wird eine Seite zurückgeschrieben, bevor sie ausgeworfen wird
BESCHLEUNIGEN DES SUCHENS IN DER SEITENTABELLE D - CA - XIV - MH - 27 es scheinen immer (mindestens) zwei Speichertransaktionen pro Speicherreferenzierung nötig - einen Zugriff, um den Seitentabelleneintrag zu erhalten - einen Zugriff, um auf die Daten zuzugreifen (vorausgesetzt es gab keinen Seitenfehler) - die Seitentabelle ist groß; ein Teil von ihr könnte auf der Platte liegen! Lösung: Halten der zuletzt genutzten Seitentabelleneinträge in einem Cache Dieser Cache heißt Translation Lookaside Buffer (TLB) -8 bis 64 Einträge -voll oder set-assoziativ -hat eine Hit Ratio von mehr als 99 Prozent (wegen der Lokalität)