Vorlesung Rechnerarchitektur Speicher V 1.2 Speicheranbindung früher und heute Bei der MU0 wurde der Speicher in einem Taktzyklus gelesen und geschrieben Dieses Verhalten war für ältere Rechner charakteristisch und stimmt auch noch heute für zahlreiche (kleine) Mikrocontroller Aus der Vorlesung TGI wissen wir: Es gibt SRAM (speichert mit FFs) und DRAM (speichert mit Kapazität), DRAM wird z.B. mit einem Speichertakt von 133 MHz ausgelesen (bei DDR3-1333 wie er für PCs üblich ist) Aktuelle Prozessoren arbeiten aber z.B. mit einer Taktrate von 3 GHz, selbst Prozessoren in Mobiltelefonen erreichen heutzutage mehr als 1 GHz – Wie passt das zusammen? SRAM ist zwar schneller als DRAM, aber eben auch sehr viel teurer – mehrere Gbyte mit SRAM zu realisieren wäre unerschwinglich Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 2 Prinzip der Lokalität Programme greifen auf einen “kleinen Adressbereich” zu Temporäre Lokalität (temporal locality) Tendenz zur Wiederverwendung zuvor bereits genutzter Datenelemente (DE) z.B. Instruktionen in einer Schleife, Schleifenvariablen Räumliche Lokalität (spatial locality) Tendenz auf DE's zuzugreifen, die in der Nähe von bereits zugegriffenen DE liegen. z.B. sequenzielle Instruktionen, Felder Es wäre vorteilhaft, wenn wir die Lokalität ausnutzen könnten, um schneller auf den Speicher zuzugreifen / Daten verarbeiten zu können Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 3 Der Cache Cache-Speicher sind Pufferspeicher, die diese Lokalität ausnutzen Zeitlich / räumlich lokale Daten werden bei Caches im schnellen SRAM vorgehalten, damit die CPU schnell zugreifen kann, der Cache ist jedoch sehr viel kleiner als der gesamte Speicher, der weiterhin aus DRAM besteht Insgesamt ergibt sich (je nach Anwendung) eine deutlich höhere Leistung bei nur geringfügig höheren Kosten Caches bilden nach den Registern die nächste Stufe der Speicherhierarchie Wir schauen uns zunächst die Speicherhierarchie genauer an, dann betrachten wir genauer, wie Caches funktionieren und was es für Arten von Caches gibt Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 4 Speicherhierarchie In Rechnern werden sehr unterschiedliche Arten von Speichern eingesetzt, die sich stark in Preis und Leistung unterscheiden. Speicherhierarchie teuer schnell billig langsam groß klein Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 5 Speicherhierarchie Register Register 32 32 Register Register 128 128 Byte Byte << 1ns 1ns Level Level 11 Cache Cache 8-32 8-32 KByte KByte wenige wenige ns ns Level Level 22 Cache Cache einige einige 100 100 KByte KByte einige einige 10 10 ns ns Hauptspeicher Hauptspeicher MByte MByte bis bis GByte GByte 60 60 ns ns Flash Flash Speicher Speicher (z.B. (z.B. USB USB Sticks) Sticks) einige einige GByte GByte 250 250 µs µs Festplatte Festplatte einige einige 100 100 GByte GByte 10 10 ms ms Static RAM (SRAM) 0.5ns – 2.5ns $2000 – $5000 per GB Dynamic RAM (DRAM) 50ns – 70ns $20 – $75 per GB Festplatte 5ms – 20ms $0.20 – $2 per GB Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 6 Speicherhierarchie und das Ausnutzen der Lokalität Alles wird auf der Festplatte / FlashRAM gespeichert Kopiere (zugegriffenen) Speicher und benachbarte Elemente von der Festplatte zu (kleinerem) Dynamic RAM (DRAM) Speicher Benötigt periodisches Auffrischen (Millisekunden) aufgrund von Leckströmen (kl. Energiebedarf auch bei Ruhestrom) sehr hohe Datendichte auf einer kleinen Chipfläche Vergleichsweise billig Hauptspeicher Kopiere (gerade zugegriffenen) Speicher und benachbarte Elemente von DRAM zu (noch kleinerem) Static RAM Speicher (SRAM) Kein Auffrischen notwendig Cache Speicher angeschlossen an die CPU Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 7 Agenda Cache-Speicher, Grundprinzipien Cache-Organisation Kenngrößen von Caches Schreiben von Daten Lesen von Daten Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 8 Cache-Speicher, Grundprinzipien 1. Zugriff auf Cache deutlich schneller als auf Hauptspeicher 2. CPU kann auf Daten im Cache sehr schnell zugreifen 3. Cache viel kleiner als Hauptspeicher Cacheblock (Cachezeile, cache line): Einheit für Kopie Umfasst i.d.R. mehrere Worte Woher ist bekannt, ob ein Datum im Cache liegt ? Wo wird nachgeschaut ? Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 9 Cache-Speicher, Grundprinzipien Anzahl Zeilen eine Potenz von 2 Untere Adressbits als Speicherort Speicherort wird durch Adresse bestimmt Direkte Adressierung: nur eine Wahl (Speicheraddresse) modulo (#Zeilen im Cache) Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 10 Cache-Speicher, Grundprinzipien Woher ist bekannt, welcher Block im Cachespeicher abgelegt ist ? Speichern der Blockadresse und der Daten Nur die oberen Adressbits werden für Blockadresse benötigt Wird als TAG bezeichnet Was ist, wenn am Speicherort keine Daten sind ? Valid bit: 1 = vorhanden, 0 = nicht vorhanden Anfangs 0 Beispiel: Index V 000 N 001 N 010 N direkt abgebildet 011 N Anfangszustand -> 100 N 101 N 110 N 111 N 8 Zeilen, 1 Wort/Zeile Tag Data Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 11 Cache-Beispiel: Wortadresse Binäre Adresse Treffer Cache Block 22 10 110 Miss 110 Index V 000 N 001 N 010 N 011 N 100 N 101 N 110 Y 111 N Tag Data 10 Mem[10110] Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 12 Cache-Beispiel: Wortadresse Binäre Adresse Treffer Cache Block 26 11 010 Miss 010 Index V 000 N 001 N 010 Y 011 N 100 N 101 N 110 Y 111 N Tag Daten 11 Mem[11010] 10 Mem[10110] Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 13 Cache-Beispiel: Wortadresse Binäre Adresse Treffer Cache Block 22 10 110 Hit 110 26 11 010 Hit 010 Index V 000 N 001 N 010 Y 011 N 100 N 101 N 110 Y 111 N Tag Daten 11 Mem[11010] 10 Mem[10110] Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 14 Cache-Beispiel: Wortadresse Binäre Adresse Treffer Cache Block 16 10 000 Miss 000 3 00 011 Miss 011 16 10 000 Hit 000 Index V Tag Daten 000 Y 10 Mem[10000] 001 N 010 Y 11 Mem[11010] 011 Y 00 Mem[00011] 100 N 101 N 110 Y 10 Mem[10110] 111 N Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 15 Cache-Beispiel: Wortadresse Binäre Adresse Treffer Cache Block 18 10 010 Miss 010 Index V Tag Daten 000 Y 10 Mem[10000] 001 N 010 Y 10 Mem[10010] 011 Y 00 Mem[00011] 100 N 101 N 110 Y 10 Mem[10110] 111 N Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 16 Aufteilung der Adresse (1 Wort pro Block) Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 17 Cache-Beispiel mit grösserem Cacheblock Cache mit 64 Blöcken und 16 Bytes pro Block Auf welchen Block die Speicheradresse 1200 abgebildet ? Blockadresse im Speicher: floor(1200/16) = 75 floor: Abrundungsfunktion floor(x): Die größte ganze Zahl, die kleiner oder gleich x ist: Blocknummer im Cache: 75 modulo 64 = 11 31 10 9 4 3 0 Tag Index Offset 22 bits 6 bits 4 bits Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 18 Aufteilung der Adresse (16 Worte pro Block), 256 Cacheblöcke Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 19 Cache-Speicher, Speicheradressierung Speicheradressierung: 32 Bit Speicheradresse (232=4 294 967 296 Adressen) Speicheradressierung: Speicherwort: 4 Byte (2w) Speicherzeile: 16 Worte (2n) Speicherzeilen: 232-n-w = 67 108 864 Zeilen Anz. Blöcke im Cache: 1024 (2m) Adress-Tag: 32-(n+m+w) Bits Cache speichert: Adress-Tag Kopie der Speicherzeile Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 20 Cache-Speicher, Speicheradressierung Wenn Wort aus Hauptspeicher gelesen werden soll, prüft Cache-Logik, ob Wort bereits im Cache ist cache hit: Trefferrate = Treffer/Zugriffe (hit rate) Wenn nicht cache miss, dann muss Wort aus dem HS gelesen werden. Wird gleichzeitig im Cache gespeichert: Fehlzugriffsrate = 1- Trefferrate, Fehlerzugriffszeit (miss rate/penalty) Soll ein (verändertes) Wort geschrieben werden, muss dies sowohl im Cache als auch im HS geschehen write through. Andere Strategien schreiben nur in Cache und markieren Eintrag (dirty-bit) Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 21 Cache-Organisation: Lesen Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 22 Cache-Organisation: Direkt abgebildet (Direct mapped): Ein Datenwort kann genau in einem Eintrag abgelegt sein. Voll assoziativ (Fully associative ): Ein Datenwort kann in einem beliebigen Cache-Eintrag abgelegt sein. Satz-assoziativ (Set associative): Ein Datenwort kann in wenigen Cache-Einträgen (typischerweise 2 bis 8) abgelegt sein. Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 23 Assoziativer Cache im Vergleich Adresse 12: 12 mod 8 = 4 Adresse 12: 12 mod 4 = 0 Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 24 Direkt abbildender Cache Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 25 Voll assoziativer Cache Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 26 N-fach satzassoziativer Cache Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 27 Assoziativer Cache: Ein Cache mit 8 Daten Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 28 Beispiel: Kleiner Cache aus vier 1-Wort Blöcken Direkt abgebildet Cacheindex = Blockadresse modulo 4 5 Fehlzugriffe Blockadresse Cache Index Treffer Cache Inhalt nach Zugriff Index 0 Index 1 Index 2 0 0 nein Mem[0] 8 0 nein Mem[8] 0 0 nein Mem[0] 6 2 nein Mem[0] Mem[6] 8 0 nein Mem[8] Mem[6] Index 3 Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 29 Beispiel: Kleiner Cache aus vier 1-Wort Blöcken 2-fach satzassoziativ Cacheindex = Blockadresse modulo 2 4 Fehlzugriffe Blockadresse Cache Index Treffer Cache Inhalt nach Zugriff Satz 0 Satz 0 0 0 nein Mem[0] 8 0 nein Mem[0] Mem[8] 0 0 ja Mem[0] Mem[8] 6 0 nein Mem[0] Mem[6] 8 0 nein Mem[8] Mem[6] Satz 1 Satz 1 Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 30 Beispiel: Kleiner Cache aus vier 1-Wort Blöcken vollassoziativ Cacheindex = Blockadresse 3 Fehlzugriffe Blockadresse Treffer Cache Inhalt nach Zugriff Satz 0 Satz 1 Satz 2 0 nein Mem[0] 8 nein Mem[0] Mem[8] 0 ja Mem[0] Mem[8] 6 nein Mem[0] Mem[8] Mem[6] 8 ja Mem[0] Mem[8] Mem[6] Satz 3 Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 31 Grad der Assoziativität ? Höhere Assoziativität verringert die Fehlzugriffsrate Simulation eines Datencaches mith 64kB, 16-Worte pro Block, SPEC2000 1-fach: 10.3% 2-fach: 8.6% 4-fach: 8.3% 8-fach: 8.1% Gesamtgrösse des Caches ist abhängig von der gewählten Organisation bei gleicher Grösse für die Daten (Beispiel) Simulation http://www.ecs.umass.edu/ece/koren/architecture/ Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 32 Betrachtung der Blockgrösse Grössere Blöcke reduzieren die Fehlzugriffsrate aufgrund räumlicher Lokalität Fehlzugriffsrate steigt, falls Blockgrosse zu einem wesentlichen Teil der Cachegrösse wird Wenige Blöcke im Cache, grösserer Wettbewerb um Blöcke Fehlzugriffsaufwand steigt i.d.R. mit grösseren Blöcken Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 33 Cache Kenngrößen Liegt ein gesuchtes Wort im Cache, erhält man Treffer (hit). Trefferrate a in Prozent (hit rate). Liegt gesuchtes Wort nicht im Cache (Fehlzugriff, miss), muss es aus dem Speicher gelesen werden: Fehlzugriffsrate (1-a) in Prozent (miss rate). Zugriffszeit bei Treffer (hit time) ist die Zeit für den Zugriff auf das Element plus die Zeit um festzustellen, ob der Zugriff ein Treffer (oder ein Fehlzugriff) ist. Mit Zugriffszeit (hit time) tc eines Wortes im Cache und der Zugriffszeit tm eines Wortes im Hauptspeicher ist die mittlere Zugriffszeit ta auf ein Wort: ta = a ∙ tc + (1-a) ∙ tm Fehlzugriffsaufwand (miss penalty) ist die Zeit, die benötigt wird, um einen Block von einer unteren Ebene in eine höhere Ebene der Speicherhierarchie zu laden. Diese beinhaltet die Zeit für die Übertragung des Blocks in die höhere Ebene, auf der der Fehlzugriff stattgefunden hat, sowie die Zeit für den Zugriff auf Vorlesung Rechnerarchitektur den Block durch den Prozessor © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 34 Messen der Cache-Leistung Komponenten der CPU Zeit CPU-Ausführungstaktzyklen Beinhalten Kosten für Cachetreffer Speicherstillstandszyklen Hauptsächlich aufrund von Cache-Fehlzugriffen Mit vereinfachenden Annahmen: (weiteres Beispiel) CPU-Zeit = (CPU-Ausführungszyklen + Speicherstillstandszyklen) x Taktzykluszeit Speicherstillstandszyklen = Lesestillstandszyklen + Schreibstillstandszyklen Lesestillstandszyklen = Leseoperationen / Programm x Lesefehlzugriffsrate x Lesefehlzugriffsaufwand Schreibstillstandszyklen = Schreiboperationen / Programm x Schreibfehlzugriffsrate x Schreibfehlzugriffsaufwand + Schreibpufferstillstände Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 35 Cache – Eigenschaften und Ersetzungsstrategien Ist ein Wort nicht im Cache vorhanden, muss aus Speicher in den Cache geladen werden. Bei Direkt abgebildetem Cache ist Zuordnung der Adresse des Wortes zu einer Cache-Zeile eindeutig. Beim Assoziativen Cache sind mehrere Strategien möglich: Wähle Zeile, auf die am längsten nicht mehr zugegriffen wurde (LRU) − Einfach für 2-fach, vertretbar für 4-fach, zu aufwändig für höhere Assoziativität Wähle zufällig eine Zeile aus − Ähnliche Trefferraten wie LRU bei hoher Assoziativität Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 36 Schreiben von Daten Beim Schreiben von Daten muss sichergestellt sein, dass Daten in Cache und Hauptspeicher konsistent bleiben. Mehrere Strategien: No-Write: Wort nur in Hauptspeicher (HS) schreiben, nicht in Cache. Zugehörige Zeile im Cache als ungültig markieren. ➔ langsam, Schreiben in HS, ggf. Lesen aus HS Write-Through: Cache- und Hauptspeicher beide schreiben. Cache-Zeile bleibt gültig. Übliches Verfahren. ➔ langsame Schreibzugriffe. Write-Back: Nur Cache-Speicher schreiben, aber Cache-Zeile als modifiziert („Dirty“) markieren. Vor Überschreiben der Zeile muss der Inhalt in Hauptspeicher gesichert werden. Dirty-Bit ist der Cache-Zeile angefügt, wird beim Laden einer Zeile aus dem HS gelöscht, beim Schreiben eines Wortes in der Cache-Zeile Vorlesung Rechnerarchitektur gesetzt. © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 37 Lesen von Daten Zwei prinzipielle Lese- und Füllstrategien on demand, demand fetching Beim ersten Lesen einer Information aus dem Hauptspeicher wird die gesamte Zeile auch in den Cache übertragen. Benötigte Blöcke, die noch nicht im Cache liegen, werden nachgeladen. Diese Strategie wird von jedem Cache verwendet Prädiktiv, prefetch Es wird versucht, vorherzusagen, welche Speicherzeilen zukünftig gebraucht werden und diese während Leerlaufphasen schon in den Cache vorgeladen. Ein zweiter Programmzähler (remote PC) im Cache wird dazu verwendet, den künftigen Programmverlauf vorherzubestimmen und entsprechende Blöcke vorzuladen. Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 38 Cache Speicher in der Harvard Architektur Kopien von Befehlen Cache Adresse Befehle Befehle Adresse Befehle Register Daten Prozessor Adresse Daten Kopien von Daten Adresse Daten Cache Speicher Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 39 Cache-Organisation Level-1: 16 … 64 kB Level-2: 512 kB … 1 MB Level-3: ~ MB SRAM Um Rechner weiter zu optimieren werden mehrere Cache Ebenen eingefügt. kleiner, schneller, teurer ↔ größer, langsamer, billiger Split-Cache, verbessert Bandbreite und Latenz: Level-1: Cache für Instruktionen und Daten Level-2: vereint (unified) für Instruktionen und Daten Level-3: auf Karten-Ebene (Static RAM) Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 40 Multilevel Cache Auslegung – Beispiel (1): Gegeben CPU Verarbeitung Clocks per Instruktion (CPI) = 1, Taktrate = 4GHz Fehlzugriffsrate für Instruktionen = 2% Zugriffszeit auf Hauptspeicher = 100ns Mit nur einem (Primär-)Cache: Fehlerzugriffsaufwand = 100ns/0.25ns = 400 Takte Effektive CPI = 1 + 0.02 × 400 = 9 Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 41 Multilevel Cache Auslegung – Beispiel (2): L-1 und L-2 Cache (L1: Primärcache, L2: Sekundärcache) L-2 Cache: Zugriffszeit 5ns Globale Fehlzugriffsrate zum Hauptspeicher = 0.5% Fehlzugriff auf L-1 Cache mit L-2 Treffer Fehlerzugriffsaufwand = 5ns/0.25ns = 20 Takte Fehlzugriff auf L-1 Cache und L-2 Cache Zusätzl. Fehlerzugriffsaufwand = 400 Takte CPI = 1 + 0.02 × 20 + 0.005 × 400 = 3.4 Performanzverhältnis = 9/3.4 = 2.6 Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 42 Speichermanagement Kopplung von CPU- und Speicheradresse Virtuelle und physikalische Adressen Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 43 Speichermanagement Virtuelle und physikalische Adressen Benutzung der Hauptspeichers als Cache für die Festplatte Kopplung von CPU- und Speicheradresse Bisher sind wir davon ausgegangen, dass die intern vom Prozessor verwendete Adresse identisch mit der externen Speicheradresse ist. Das aber hat Nachteile: Anpassung der Speicherbelegung eines Programms an die Rechnerkonfiguration notwendig. Bei Multitasking Zuweisung eines speziellen Speicherbereichs für jeden Task nötig. Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 44 Stack-, Heap-, Daten- und Code-Bereich Größe von Daten- und Code-Bereich wird beim Übersetzen vom Compiler ermittelt (feste Größe für ein Programm). Stack und Heap besitzen dynamische Größen, die vom Programmablauf abhängen. Stack: z.B. Lokale Variable, Heap: dynamische Objekte Der freie Bereich zwischen Stack und Heap sollte immer möglichst groß gewählt werden um Speicherunterlauf zu vermeiden. Mögliche Größe hängt aber vom Rechner (Ressourcen) ab. Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 45 Speicherzuweisung bei Multitasking Bei Multitasking muss beim Start einer Task ein freier Speicherbereich gesucht und die Task an diesen Speicherbereich durch Linken angepasst werden. Jede Task benötigt einen eigenen Ausschnitt aus dem gesamten Adressraum, der nicht von anderen Tasks verwendet werden darf. Wenn ein Task terminiert, entsteht eine Lücke im Speicher. Passt ein neuer Task nicht genau in diese Lücke, entstehen nach und nach ungenutzte Speicherfragmente. Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 46 Kopplung CPU- und Speicheradresse Eine feste Kopplung von CPU-interner Adresse und externer Speicheradresse verhindert flexible und dynamische Nutzung des Hauptspeichers. Dies ist nur bei Embedded Systemen akzeptabel. In allen anderen Systemen, welche Flexibilität erfordern, ist die Entkopplung interner und externer Adressen notwendig, z.B. Großrechner, Workstations, PC‘s etc. Entkopplung der CPU-internen (virtuellen) Adresse und der Speicheradresse (physikalische Adresse) schafft die notwendige Flexibilität. Die Umsetzung erfolgt durch eine Hardwareeinheit, diese nennt man Vorlesung Rechnerarchitektur Memory Management Unit (MMU) oder Paging Unit © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 47 virtuelle und physikalische Adresse Der virtuelle und der physikalische Speicherbereich wird in Speicherseiten fester Größe aufgeteilt ➔ pages (Kacheln) Übliche Seitengrößen sind 4 kBytes oder 8 kBytes (2er Potenzen), aber auch deutlich größere Seiten werden verwendet. Virtuelle Speicherseiten werden durch die MMU physikalischen Seiten zugeordnet. Ist bei Zugriff auf eine virtuelle Seite keine physikalische zugeordnet, liegt ein Seitenfehler (page fault) vor. Die MMU erzeugt dann in der CPU einen Interrupt, die Ausnahmebehandlung lädt die fehlende Seite. Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 48 virtuelle Adressierung durch MMU Physikalischer Adressraum: 15 Bit Beispiel: eine 32 Bit-Adresse wird zerlegt in 20 Bit Seiten-Nummer und 12 Bit Offset. Der Offset ist die Adresse des gesuchten Byte in der 4096 Byte (212 Bit) großen Seite. Mit der Seitennummer wird in der Tabelle die physikalische Speicherseite gesucht. Physik. Speicherseite + Offset = Adresse des Operanden im Speicher. Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 49 virtuelle Adressierung durch MMU (2) Die Seitentabelle liegt im physikalischen Speicher, ihre Anfangsadresse ist im Register Tabellenbasis abgelegt. Index auf Seitentabelle = Tabellenbasis + Tabellenindex Adresse Operand = physik. Adresse der Seite + Offset Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 50 Beschleunigung der Adressumsetzung Sehr grosse Seitentabellen im Hauptspeicher (Beispiel) Zugriff auf Seitentabelle im physikalischen Speicher und anschließender Zugriff auf die physikalische Speicherzelle: Zweifacher Zugriff auf Speicher langsam! Lösung: Hardware-Erweiterung Assoziativspeicher, in dem Paare aus Tabellenindex und zugehöriger Basisadresse der physikalischen Speicherseite aus vorangegangenen Zugriffen gespeichert sind. Translation Lookaside Buffer (TLB) Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 51 Translation-Lookaside-Buffer (TLB) Virtuelle Adresse wird an TLB angelegt: Für Tabellenindex ist Eintrag vorhanden ➔ Hit. Kein Eintrag: Basisadresse für physik. Speicherseite wird aus Seitentabelle beschafft und im TLB eingetragen. In beiden Fällen: Physik. Adresse = Basisadresse + Offset Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 52 Translation-Lookaside-Buffer (TLB) (2) TLB enthält aktuellen Tabellenindex und Seitenbasis. Fehlt der Eintrag, erfolgt Zugriff auf Seitentabelle über Hauptspeicher. Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 53 Seitentabelle ohne Translation-Lookaside-Buffer (TLB) Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 54 Seitentabelle mit Translation-Lookaside-Buffer (TLB) Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 55 Virtuelle Adressierung (Zusammenf.) Virtuelle Adressierung erlaubt, einen großen Adressraum mit kleinerem physikalischem Speicher flexibel zu realisieren. Nur ein Teil der virtuellen Seiten wird im physikalischen Speicher gehalten. Nicht benötigte Seiten werden auf Festplatte ausgelagert (Page-, Swap-Datei). Ersetzung erfolgt nach Least Recently Used, FiFo oder anderen Mechanismen. Benötigte aber nicht vorhandene Seiten werden von der Festplatte nachgeladen (Paging) und ersetzen „ältere“ Seiten. Vorlesung Rechnerarchitektur © Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik 56
© Copyright 2025 ExpyDoc