e e I TeI rgs =1 D C D C = 9.1 Speicher übersicht T 9 Speicherarchitektur I TeI rgs =1 D C D C = Inhalt T Inhalt Anforderungen an Speicher Punkt 9 9.1 9.2 9.3 9.4 9.5 9.6 Persistente Speicherung: Die Speicherzustände sind zeitlich stabil und reproduzierbar. Die Speicherzustände bleiben auch ohne Energieversorgung erhalten. Veränderbarkeit und Lesbarkeit: Der Speicherzustand ist zu jedem beliebigen Zeitpunkt lesbar und je nach Anwendung ein- oder mehrmalig oder beliebig oft ver änderbar. Auswählbarkeit: Die Speicherzustände sind einzeln auswählbar, ansprechbar und eindeutig unterscheidbar. Inhalt Speicherarchitektur Speicherübersicht Speicherhierarchie Registersatz Cache-Speicher Hauptspeicher Virtueller Speicher Folie 2 2 8 15 25 ?? ?? Bündelung: Mehrere Speicherzustände sind zu einer Einheit, einem Block zusammengefasst und nur gemeinsam ansprechbar, lesbar oder änderbar. RA I e Rechnerarchitektur I 3/ 97 D C D C = Rechnerarchitektur I 1/ 97 I TeI rgs =1 RA I 9.1 Speicher übersicht T 9 Speicherarchitektur 9 Speicherarchitektur =1 D C I 2/ 97 e Rechnerarchitektur I C RA I D Unterteilung nach physikalischer Haupteigenschaft (speichern, lesen, schreiben) T - elektrostatisch - elektrodynamisch - ferromagnetisch - ferroelektrisch = Halbleiter Speicherprinzip: TeI Ferritkern Magnetblasen Magnettrommel Magnetband Magnetplatte Magnetkarte Rechnerarchitektur I Speicherarchitektur elektronisch R.G. Spallek Mikrofilm CD-ROM DVD MO-Disk Holographie magnetisch Rechnerarchitektur I Nockenwalze Lochkarte Lochstreifen optisch Dresden, 2004 RA I mechanisch Technische Universität Dresden Institut für Technische Informatik Speicher [email protected] 9.1 Speicherübersicht e e I TeI rgs =1 D C D C = 9.1 Speicher übersicht T I TeI rgs =1 D C D C = 9 Speicherarchitektur T Halbleiterspeicher Zugriffsart sequentiell wahlfrei (RAM) inhaltsbezogen SAM (FIFO - LIFO) Änderbarkeit CAM (Cache) beliebig oft lesbar programmierbar beliebig oft lesbar nicht änderbar beliebig oft lesbar und schreibbar PROM (RMM) ROM MROM RAM (RWM) Löschbarkeit Strahlung EPROM elektrisch EEPROM Flash EEPROM Speicherzelle: Zusammenfassung von Speicherelementen, kleinste ansprechbare Einheit. Zugriffsbreite: paralleler Zugriff auf mehrere Speicherzellen gleichzeitig (Bit, Byte, Wort, ...). Speicherwort: Feste Anzahl von Speicherzellen, die gleichzeitig als Block aus dem Speicher gelesen bzw. in ihn geschrieben werden kann (typisch 1 Wort). non-volatile statisch dynamisch NVRAM SRAM DRAM Speicherkapazität: Anzahl der effektiv nutzbaren Speicherzellen. Ansteuerung: taktsynchrone oder asynchrone Ansteuerung des Speichers. Alle ROM-Typen sind nonvolatile RA I e Rechnerarchitektur I =1 D C D C = 7/ 97 T RA I e I TeI rgs 9.1 Speicher übersicht 9 Speicherarchitektur Rechnerarchitektur I =1 D C D C = T 9.1 Speicher übersicht 9 Speicherarchitektur Eigenschaften von Speichern Refreshzeit(Refresh Time): Zeit zum Auffrischen des Speichers (nach einem Zugriff bzw. zyklisch) Zugriffszeit (Access Time): minimale Zeit (Latenz) für einen Lese-/Schreibzugriff (Adresse → Datum) Zykluszeit (Cycle Time): minimale Zeit zwischen zwei aufeinanderfolgenden Lese-/Schreibzugriffen (einschließlich Auffrischen) Auffrischen (Refresh): Bei Speichern mit destruktivem Lesen bzw. bei dynamischen Speichern muss der Speicherinhalt nach dem Lesen bzw. zyklisch wieder aufgefrischt werden. Speicherbandbreite: maximale Datenmenge pro Zeiteinheit bzgl. der Lese-/Schreibzugriffe Rechnerarchitektur I 5/ 97 I TeI rgs Zeitverhalten von Speichern RA I 9 Speicherarchitektur Speicherelement: realisiert (physikalisch) die Speicherzustände (meist binär). Permanenz blockweise 9.1 Speicher übersicht Komponenten von Speichern 6/ 97 Zugriffsart: sequentiell, strukturiert SAM (Serial Adressable Memory) inhaltsbezogen, assoziativ CAM (Content Adressable Memory) wahlfrei adressierbar RAM (Random Access Memory) Änderbarkeit: fester Inhalt, nur lesbar ROM (Read Only Memory) einmalig programmierbar, nur lesbar PROM (Programmable ROM) meist lesbar, mehrmalig schreibbar RMM (Read Mostly Memory) mehrmalig programmierbar, löschbar, nur lesbar EPROM (Erasable PROM) beliebig oft les- und schreibbar RWM (Read Write Memory) Persistenz, Zeitverhalten: statisch, flüchtig SRAM (Static RAM) dynamisch, flüchtig DRAM (Dynamic RAM) auch bei Spannungswegfall nicht flüchtig NVRAM (Non-volatile RAM) RA I Rechnerarchitektur I 4/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Speicherorganisation T Konfliktlösung: Speicherkapazität ⇔ Zugriffszeit Technisch/Technologisches Problem Speicherkapazität ⇔ Speicherzugriffszeit Lösung unter Ausnutzung des Lokalitätsprinzips: • Häufig benötigte Daten werden im nahen kleinen und schnellen Speicher Speicher mit kurzen Zugriffszeiten lassen sich nur mit relativ geringer Kapazit ät und mit hohem Kostenaufwand realisieren. gehalten (als Kopien der Originaldaten). • Seltener benötigte Daten werden im fernen großen, jedoch langsamen Dagegen lassen sich Speicher mit großer Kapazit ät nur mit relativ langen Zugriffszeiten kostengünstig realisieren. Speicher gehalten. • Reicht die Kapazität des kleinen schnellen Speichers nicht mehr aus, so Mit der Entfernung von der CPU wachsen die Zugriffszeit und die Kapazit ät der Speicher gleichermaßen, die Realisierungskosten pro Byte sinken dagegen. werden nicht mehr benötigte Daten in den großen langsamen Speicher ausgelagert und die neu benötigten Daten aus diesem nachgeladen. Zielstellung: ⇒ Aufbau einer Speicherhierarchie, Bildung von Hierarchieebenen • Erhöhung der Speicherbandbreite und Verringerung der Zugriffszeiten bei Blockprinzip: Der Austausch der Daten zwischen den einzelnen Hierachieebenen erfolgt nicht einzeln, sondern zusammengefaßt zu Blöcken (effektiverer Datentransfer). RA I e Rechnerarchitektur I 11/ 97 =1 D C D C = gleichgroßer oder größerer Speicherkapazität (Realisierungsfrage). • Minimierung der Speicherkosten/Byte Speicherkapazit ät (Kostenfrage). RA I e I TeI rgs Speicherorganisation T Speicherorganisation T Rechnerarchitektur I 9/ 97 I TeI rgs =1 D C D C = 9.2 Speicherhierarchie T Lokalitätsprinzip des Speichers 9 Speicherarchitektur 9.2 Speicherhierarchie Zeitliche Lokalität: Nach einem Speicherzugriff ist die Wahrscheinlichkeit hoch, daß in einem der nächsten Befehle ein erneuter Zugriff den selben Speicherplatz erfolgt. Örtliche Lokalität: Nach einem Speicherzugriff ist die Wahrscheinlichkeit hoch, daß in einem der nächsten Befehle ein Zugriff auf einen benachbarten Speicherplatz erfolgt. Kapazität (Bytes) Zugriffszeit CPU Ursachen zum Lokalitätsprinzip: Befehle: Sequentieller Befehlsstrom, Programmschleifen, Unterprogrammen, Abspeicherung in Bibliotheken . . . Daten: Zusammenhängende Datenstrukturen, Speicherzuteilung, Variablenanordnung durch Compiler . . . Register 256 . . . 4K 0.3ns . . . 1ns Caches 128K . . . 4M 1ns . . . 5ns Primärspeicher (Hauptspeicher) 128M . . . 4G 50ns . . . 70ns Sekundärspeicher (Plattenspeicher) 10G . . . 500G 5ns . . . 12ms 50G . . . 60s . . . Archivspeicher (CD, MO, DVD, Platten, Bänder) 90/10 Regel beim Speicher 90% aller Speicherzugriffe erfolgen auf nur 10% der Speicherplätze. RA I Rechnerarchitektur I 10/ 97 RA I Rechnerarchitektur I 8/ 97 e =1 D C D C = e I TeI rgs T 9.3 Registersatz I TeI rgs =1 D C D C = 9 Speicherarchitektur 9.3 Registersatz Grundbegriffe der Speicherhierarchie Register: Block: Kleinster zusammenhängender Bereich, der zwischen den Hierarchieebenen transferiert, ausgetauscht wird (nicht notwendig gleich groß). Blockrahmen (Frame): Bereich der höheren Hierarchieebene in den ein Block eingelagert, transferiert werden kann. Blocktransfer: Blockaustausch zwischen zwei Hierarchieebenen (Burst, . . . ). Treffer (Hit): Die gesuchten Daten befinden sich in einem Blockrahmen der höheren Hierarchieebene und sind aktuell. Trefferrate (Hit Rate): Relative Trefferanzahl bezogen auf die Gesamtzugriffe. Fehlzugriff (Miss): Die gesuchten Daten wurden nicht in einem Blockrahmen der höheren Hierarchieebene gefunden bzw. sind nicht aktuell, kein Treffer. Fehlerrate (Miss Rate): Relative Fehleranzahl (= 1 - Trefferrate). Fehlerzuschlag (Miss Penalty): Zeit, die bei einem Fehlzugriff zus ätzlich bis zur Erlangung der Daten benötigt wird. SRAM-Speicher (Flipflop-Kette) innerhalb der CPU (mit CPU-Takt getaktet), Nutzung als Universalregister oder als Spezialregister (Registertypen, . . . ), Sondrefunktionen, auch verteilt innerhalb der CPU (Hilfsregister, . . . ), Realisierung in verschiedenen Datenformaten (Halbwort, Word, . . . ), Nutzung zur Rechnersteuerung (Befehlszähler, Statusregister, . . . ). • • • • • Registersatz: fest organisierter Satz von Registern innerhalb der CPU (8, 16, 32, . . . ), Operandenspeicherung, Registerspeicher der ALU (Daten, Adressen, . . . ), Register werden nicht adressiert, sondern direkt ausgew ählt (Multiplexer), werden als Multiport-RAM ausgeführt (z.B. 2 Leseprots + 1 Schreibport, . . . ), aufwendige Hardware-Realisierung (Registerfenster, Schattenregister, . . . ). • • • • • RA I e Rechnerarchitektur I 15/ 97 =1 D C D C = RA I e I TeI rgs Speicherorganisation T Speicherorganisation T Rechnerarchitektur I 13/ 97 I TeI rgs =1 D C D C = Speicherorganisation T Probleme der Speicherhierarchie Speicherhierarchie – Blockprinzip Abbildungsproblem: Wie erfolgt die Abbildung der Blöcke einer Ebene auf die der nächst höheren? Identifikationsproblem: Wie werden die gesuchten Daten (Blöcke) lokalisiert und identifiziert? Ersetzungsproblem: Welcher Block wird beim Nachladen eines neuen ersetzt und wie? Aktualisierungsproblem: Wann und wie erfolgt die Aktualisierung der Blöcke in den einzelnen Ebenen bei der Veränderung von Daten in einem Block? Konsistenzproblem (Kohärenzproblem): Die Daten der Blöcke einer Hierarchieebene sind konsistent in den Bl öcken aller niederen Ebenen enthalten (Datenkonsistenz über alle Ebenen – mit Ausnahme des Registersatzes) ⇒ Aktualisierungsproblem. Hierarchieebenen RA I Rechnerarchitektur I 14/ 97 CPU Cache HS HD Registersatz Pufferspeicher Primärspeicher Sekundärspeicher Block Blockrahmen Blocktransfer Kapazität / Zugriffszeit Speicherbandbreite Unterschiedliche Blockgrößen zwischen den Hierarchieebenen sind möglich. RA I Rechnerarchitektur I 12/ 97 e e I TeI rgs =1 D C D C = 9.3 Registersatz T I TeI rgs =1 D C D C = 9 Speicherarchitektur 9.3 Registersatz T Registerfenster – Fenster fester Grösse 9 Speicherarchitektur Die primären Register des Pentium II allgemeine Datenregister Fenster 3 Fenster 2 Fenster 0 Fenster 1 Fenster 0 globale Register Fenster überlappend RA I e D C T EAX Kodesegment CS Basisregister BH BL EBX Stapelsegment SS Zählregister CH CL ECX Datensegment DS Datenregister DH DL EDX Extrasegment ES freie Verf ¨ugung FS freie Verf ¨ugung GS 16 15 ESI Zielindex EDI Basiszeiger EBP 31 19/ 97 D C 0 Befehlszeiger EIP Statusregister 31 EFLAGS 0 17/ 97 I D C = 15 Rechnerarchitektur I TeI rgs =1 ESP 0 RA I e 9 Speicherarchitektur T 9.3 Registersatz 9 Speicherarchitektur Übersicht Registersatz Globale, lokale Register (global, local register): Unterteilung des Registersatzes in globale und lokale Register (z.B. Variablenübergabe bei Unterprogrammtechnik). Registerfenster (register window): Unterteilung eines großen Registersatzes durch Registerfenster (kostante, variable Fenstergröße, überlappende, disjunkte Fenster). Lokalisierung des aktuellen Fensters durch Fensterzeiger (Current Window Pointer, CW P), der im Statusregister gespeichert wird (Reduktion des Registeradreßraumes). Schattenregister (shadow register): Nutzung eines weiteren Registersatzes im Hintergrund (z.B. für spekulative Befehlsabarbeitung von Programmverzweigungen). Registerumbenennung (register renaming): Umbenennen von Registern ohne den Inhalt zu transportieren (z.B. bei Ausführungs- oder Datenkonflikten in der Verarbeitungseinheit). Rechnerarchitektur I 0 Quellindex Erweiterungen des Registersatzes RA I 8 7 Stapelzeiger Fenster disjunkt 9.3 Registersatz AL Zeiger- und Indexregister I D C = AH 31 globale Register Rechnerarchitektur I TeI rgs =1 lokale Register Fenster 1 lokale Register Fenster 2 Segmentregister Akkumulator 18/ 97 Registersatz Datenregister (data register) Ganzzahlenregister (integer register) Gleitkommaregister (floating point register) Adreßregister (address register) Basisregister (pointer register) Indexregister (displacement register) Segmentregister (segment register) Spezialregister (special purpose register) Programmzähler (programm counter, PC) Folgebefehl (instruction pointer, IP) Statusregister (status register) Basisregister (vector base register) Stackregister (stack pointer) Hilfsregister (auxiliary register) RA I Rechnerarchitektur I Bei RISC zusammengefaßt zum Universal-Registersatz (general purpose register) ⇒ GPR-Architektur 16/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Registerspeicher T Stapelspeicher, Stack, Kellerspeicher Die allgemeinen Register der UltraSPARC II V9 • SAM-Speicher (Serial Addressable Memory) nach dem LIFO-Prinzip (Last In First Out). Als Hardware-Stack innerhalb der CPU oder als Software-Stack im Hauptspeicher realisierbar. Des Stack, Stapel, w ächst immer nach unten. Der Stapelzeiger (Stack Pointer, SP) zeigt immer auf das Stapelende, letzte aktuelle Daten. Die Daten im Stack können nicht direkt adressiert werden. PUSH – Dekrementieren (erniedrigen) des Stack Pointers und Speichern der Daten auf den Stack (pre decrement). POP – Lesen der Daten vom Stack und anschließendes Inkrementieren (erhöhen) des Stack Pointers (post increment). Nutzung des Stack zur effektiven Abspeicherung bzw. Zwischenspeicherung von Daten: Prozessorstatus, Unterprogrammparameter, rekursive Programme, Unterbrechungsroutinen, . . . Stack-Typen: system stack, data stack, user stack, programm stack, . . . • • • • • RA I e Rechnerarchitektur I 23/ 97 =1 D C D C = RA I e I TeI rgs Registerspeicher T Registerspeicher T Register Andere Bezeichnung Funktion R0 G0 Fest auf 0 verdrahtet; Speicheroperationen darauf werden ignoriert. R1 - R7 G1 - G7 Hält globale Variablen R8 - R13 O0 - O5 Hält Parameter f ¨ur die aufzurufende Prozedur R14 SP Stapelzeiger R15 O7 Arbeitsregister R16 - R23 L0 - L7 Hält lokale Variablen f ¨ur die laufende Prozedur R24 - R29 I0 - I5 Hält ankommende Parameter R30 FP Zeiger auf die Basis des laufenden Stapelrahmens R31 I7 Hält die R ¨uckgabeadresse f ¨ur die laufende Prozedur Rechnerarchitektur I 21/ 97 I TeI rgs =1 D C D C = 9.3 Registersatz T Registerfenster mit konstanter Größe (UltraSPARC II V9) 9 Speicherarchitektur Registerfenster – Fenster variabler Grösse R31 in lokale Register R24 R23 local Fenster 2 R31 out R24 R23 local R16 R15 Current Window Pointer (CW P) R8 aktuelles in global Fenster 0 local out globale Register Registerfenster RA I R24 R23 R16 R15 R7 R0 Fenster 1 R31 out Rechnerarchitektur I i-2 i folgendes i+1 Fenster 0 globale Register R8 i-1 Fenster 1 Fenster überlappend i+2 22/ 97 RA I Rechnerarchitektur I lokale Register R8 letztes Fenster 2 in lokale Register R16 R15 globale Register Fenster disjunkt 20/ 97 e =1 D C D C = e I TeI rgs T 9.4 Cache-Speicher I TeI rgs =1 D C D C = 9 Speicherarchitektur 9.4 Cache-Speicher T Cache-Eigenschaften • CAM-Speicher (Content Addressable Memory) als Pufferspeicher zur Struktur: Ein Cache-Eintrag besteht aus dem Datenblock (Cache-Line, ⇒ Blockprinzip) und dessen Adresse, Adressteil als Tag (Etikett) sowie Statusinformationen. Sichtbarkeit: Transparent (nicht sichtbar im Befehlssatz) oder nicht transparent (sichtbar, wird durch den Befehlssatz gesteuert, z.B. Laden, Invalidieren, . . . ). Adressraum: Realer Adressraum (realer Cache) oder virtueller (virtueller Cache). Architektur: Befehle und Daten gemeinsam (Unified Cache) oder getrennt (Split Cache). Organisation: Lösung der Probleme der Speicherhierarchie: Abbildung, Identifikation, Ersetzung, Aktualisierung, Konsistenz, Kohärenz. RA I e Rechnerarchitektur I =1 D C D C = 27/ 97 T 9.4 Cache-Speicher 9 Speicherarchitektur Überbrückung bzw. Anpassung stark unterschiedlicher Zugriffszeiten (z.B. Prozessorregister – Hauptspeicher – Festplatte). Der Cache arbeitet inhaltsorientiert, ist nicht direkt adressierbar. Der Vergleich mit dem Inhalt kann auch maskiert erfolgen (Ausblenden einzelner Bits). Ein Cache-Zugriff ist nicht immer eindeutig. Im Cache werden nur Kopien der aktuellen Speicherinhalte der darunter liegenden Hierarchieebene abgebildet. Die aktuellen Daten einer Hierarchieebene befinden sich auch immer in allen darunter liegenden. Zur Überbrückung sehr großer Differenzen in der Zugriffszeit bzw. im Datendurchsatz können auch mehrere Caches hintereinander geschaltet werden (Primary Cache, Secondary Cache, . . . ). Der Cache-Speicher kann sich mit auf dem CPU-Chip befinden (On-Chip Cache) oder extern (Off-Chip Cache). • • • • RA I e I TeI rgs Rechnerarchitektur I =1 D C I D C = Registerspeicher T Verwaltung des Stapelspeichers Adreßspeicher (Tag-RAM): Hauptspeicheradresse bzw. Adreßteil des Datenblockes (Cache-Line). Valid-Bit: Cache-Inhalt bzgl. der Adresse ist aktuell, gültig. Dirty-Bit: Cache- und Hauptspeicherinhalt der Adresse sind nicht konsistent. Datenspeicher (Data-RAM): Datenblöcke (Cache-Line): Blöcke des Cache-Speichers, ⇒ Blockprinzip. Datenblockgröße (Cache-Line-Size): Blockgröße in Worten (Byte). Cache-Treffer (Cache-Hit): Daten / Befehle aktuell im Cache gefunden. Trefferrate (Hit-Rate): Maß für die Effizienz des Caches. Stapel, Stack Bottom of Stack (BOS) Daten (Hauptspeicheradressen) (post increment) lesen (POP) Stack Pointer (SP) (Stapelzeiger) aktuell Stapelrichtung schreiben (PUSH) (pre decrement) Cache-Fehlzugriff (Cache-Miss): Daten / Befehle nicht im Cache gefunden bzw. nicht aktuell. Fehlerrate (Miss-Rate): 1 - Trefferrate. Fehlerzuschlag (Miss-Penalty): Zugriffszeit nach Cache-Fehlzugriff. Rechnerarchitektur I 25/ 97 TeI rgs Cache-Begriffe RA I 9 Speicherarchitektur 9.4 Cache-Speicher Top of Stack (T OS) 26/ 97 RA I Rechnerarchitektur I 24/ 97 e I TeI rgs =1 D C D C = 9.4 Cache-Speicher T I TeI rgs =1 D C D C = 9 Speicherarchitektur 9.4 Cache-Speicher T (Daten) D-Cache CPU Befehle (separate Lokalitäten) Adressen e Cache I+D D C Tag-Vergleich Tag für Daten und Befehle (überlagerte Lokalitäten) Rechnerarchitektur I 31/ 97 9.4 Cache-Speicher T 9 Speicherarchitektur V D Tag-RAM RA I e I D C = B Unified Cache, gemeinsam HS TeI rgs =1 W Princeton - Architektur Daten / Befehle RA I Cache-Tag Split Cache, getrennt für Daten und Befehle Daten CPU Hauptspeicheradresse Byte-Adresse (Befehle) I-Cache Harvard - Architektur D C 9.4 Cache-Speicher Struktur des Cache-Speichers (Übersicht) Adreß-Bus reale Adressen virtueller Cache Cache-Speicher Adresse realer Cache Komparator HS Daten-Speicher CPU Realer Cache - schnell, Cache und MMU nebenläufig - langsam, Adressen durch MMU - direkter I/O-Cache-Transfer - Invalidierung bei Prozeßwechsel, möglich, da reale Adressen notwendig, da gleiche Adressen möglich - besondere Eignung als Befehls-Cache, - für Snooping geeignet, da 1:1 Adreß-Daten-Abbildung da Rückschreiben entfällt 30/ 97 Data-RAM 9 Speicherarchitektur Adreßumsetzung Maske Rechnerarchitektur I Cache-Line Wort 0 I Daten RA I Wort 1 29/ 97 T MMU Virtueller Cache Wort 2 Cache-Adreßraum virtuelle Adressen CPU Wort 3 Rechnerarchitektur I D C = Data-Frame Hit ∧ Valid TeI rgs =1 1. Adreßzerlegung: Tag, Wort, Byte 2. Tag-Vergleich und Valid-Auswertung 3. Bei Hit und Valid Cache-Line-Auswahl 4. Wort-Auswahl aus Cache-Line 5. Byte-Auswahl aus Wort (außerhalb) Dirty-Bit Daten-Adressen Valid-Bit Befehls-Adressen 9 Speicherarchitektur Cache-Struktur Wort-Adresse Cache-Architektur Adresse (Tag) Daten (Cache-Line) Hauptspeicher e Adreß-Speicher Daten-Bus RA I Rechnerarchitektur I 28/ 97 e I TeI rgs =1 D C D C = 9.4 Cache-Speicher T I TeI rgs =1 D C D C = 9 Speicherarchitektur 9.4 Cache-Speicher T Beispiel – Voll Assoziativer Cache (8-fach assoziativ) Hauptspeicheradresse Tag 31 HS W B 4 28 2 0 Byte-Adresse (im Wort) Abbildung: Wort-Adresse (in Cache-Line) f beliebig 2 2 V D Cache-Line Data-Frame 7 6 Line-Auswahl 5 4 3 2 1 0 Rahmenzahl r Block b 32 32 32 Rahmen f Cache-Hit 8 parallele 28-bit Komparatoren = Tag 32 Valid-Hit 32 & Cache 3 2 1 0 Wort-Auswahl voll assoziativ Tag-Hit RA I e Rechnerarchitektur I D C D C = 35/ 97 T RA I e I TeI rgs =1 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (8 x 4 x 4 byte) Satz 9.4 Cache-Speicher 9 Speicherarchitektur =1 D C Abbildung identisch Abbildung Cache 3 2 1 0 Abbildung: in einem Satz f := b mod r Wegauswahl w beliebig Weg w Cache 1 0 direkt abgebildet 3 3 2 1 0 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 n-Wege Satz-assoziativ 33/ 97 9.4 Cache-Speicher T 9 Speicherarchitektur Cache-Architektur mit drei Ebenen Voll Assoziativer Cache (Fully-Associative Cache) Ein Speicherblock kann sich in einem beliebigen Cache-Frame befinden (k Cache-Frame (Cache-Line) ⇒ k-fach assoziativ). ⇒ sehr gute Trefferrate, komplizierte Hardware-Realisierung, langsam (k voll-parallele Komparatoren für die gesamte Tag-Breite). L1 I-Cache Adreß-Bus Direkt Abgebildeter Cache (Direct-Mapped Cache) Ein Speicherblock kann sich nur in einem bestimmten Cache-Frame befinden, durch den Index-Teil der Adresse festgelegt (⇒ einfach assoziativ). ⇒ schlechte Trefferrate, einfache Hardware-Realisierung, schnell (Ping Pong Effekt (Cache Trashing) - ständiges Daten-Ein- und -Auslagern). CPU 34/ 97 L2 Cache L3 Cache HS Daten-Bus L1 D-Cache k-Wege Satz-Assoziativer Cache (k-Way Set-Associative) Kann als parallele Anordnung von k direkt abgebildeten Caches verstanden werden, Sätze durch Index-Teil der Adresse festgelegt (⇒ k-fach assoziativ). ⇒ Kompromis aus direkt abgebildeten und voll assoziativen Cache. Rechnerarchitektur I f := b mod r 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 I D C = HS HS Abbildung: Rechnerarchitektur I TeI rgs Cache-Assoziativität RA I 9 Speicherarchitektur Cache-Organisation – Abbildungsproblem Satz s e Level 1 (L1) Split Cache RA I Rechnerarchitektur I On-Chip Caches Level 2 (L2) Unified Cache Off-Chip Cache Level 3 (L3) Unified Cache 32/ 97 e e I TeI rgs =1 D C D C = 9.4 Cache-Speicher T =1 D C D C 9.4 Cache-Speicher T Cache-Organisation – Identifikationsproblem Hauptspeicheradresse I Tag 31 Offset 7 25 W B 4 2 Byte-Adresse (im Wort) 0 Index-Adresse HS-Adresse : n bit n − i bit o b 0 3 Index : i − o bit Byte : b bit Wort : o − b bit Offset : o bit e =1 D C RA I 9 Speicherarchitektur =1 i o 2 0 i − o Offsetgröße: o Indexgröße: Cache-Line-Size: 2o byte (2o−2 Worte zu 4 byte) Cache Index Tag .. . 0 Rechnerarchitektur I 9.4 Cache-Speicher 7 25 .. . 0 t i−o 2 . −1 .. m .. . Data-RAM 3 Satz Rechnerarchitektur I W B 4 2 Byte-Adresse (im Wort) 0 Wort-Adresse (in Cache-Line) Tag V D .. Cache-Line m 3 2 1 0 2 Data-Frame 32 .. . Cache-Frame 2 7 6 Line-Auswahl 5 4 3 2 1 0 7 6 5 4 3 2 1 0 0 i−o 2 . −1 Cache-Line 0 9 Speicherarchitektur (8 x 4 x 4 byte) 25-bit Komparator 0 Wort-Adresse RA I 37/ 97 m m .. . Tag-Hit Index-Adresse .. . 1 Tag t 32 Wort-Auswahl I 2i−o−1 Abbildung 2i−o−1 3 2 1 0 & D C 31 t +1 Datenblöcke mit gleicher Cache-Frame Position Datenblock mit Tag-Übereinstimmung Data-Frame Valid-Hit = Hauptspeicheradresse Tag I 2n−i−1 W B Cache-Line Line-Auswahl T Index-Adresse n-1 I D C = 1 2 Beispiel – Direkt Abgebildeter Cache (einfach assoziativ) Hauptspeicher (gefaltet) Tag-Adresse Tag 2 (8 x 4 x 4 byte) 7 TeI rgs Beispiel – Abbildung: Cache - Speicher Hauptspeicheradresse V D 2x e 9.4 Cache-Speicher T Tag 25-bit Komparator I D C = 0 7 6 5 4 3 2 1 0 39/ 97 TeI rgs 1 Satz Tag: Adreßteil zum assoziativen Vergleich im Cache-Tag-RAM. Index: Satzauswahl (Set) im Cache (Vollassoziativer Cache ⇒ kein Index). Offset: Bestimmt die Blockgröße im Cache-Data-RAM (Cache-Line-Size). Wort: Wort-Adresse innerhalb eines Datenblockes (Cache-Line). Byte: Byte-Adresse innerhalb eines Wortes. Rechnerarchitektur I 0 Weg Cache-Hit i Weg Cache-Hit n−1 RA I Wort-Adresse (in Cache-Line) Index Wort Byte Tag Tag : 9 Speicherarchitektur Beispiel – 2-Wege Satz-Assoziativer Cache (2-fach assoziativ) Aufteilung des Hauptspeicheradresse in Tag, Index und Offset (Wort und Byte): Hauptspeicheradresse I TeI rgs = 9 Speicherarchitektur 38/ 97 RA I Rechnerarchitektur I 32 32 Valid-Hit = 32 32 & Wort-Auswahl Tag-Hit 36/ 97 e e I TeI rgs =1 D C D C = 9.4 Cache-Speicher T I TeI rgs =1 D C D C = 9 Speicherarchitektur Cache Lese-Strategie (Read Strategy) Treffer (Read-Hit) 1. Adressen hit Cache CPU 3. Cache CPU Daten 4. Daten Welche Cache-Line wird beim Nachladen eines mehrfach assoziativen Caches verdrängt, ersetzt (beim direkt abgebildeten Cache kein Ersetzungsproblem)? LRU (Least Recently Used): Ersetze am längsten nicht mehr benutzte Cache-Line . Für die Entscheidung ist eine Referenzstatistik erforderlich (UC - Utilization Counter). HS Zufallsprinzip (RANDOM): Ersetze eine Cache-Line nach dem Zufallsprinzip (Pseudo-Zufallszahlen). 3. 1. Cache und HS adressieren 1. Cache und HS adressieren 2. Cache-Hit, HS-Zugriff abbrechen 2. Cache-Miss, HS-Zugriff fortsetzen 3. Lesen der Daten aus dem Cache 3. Verdrängen einer Cache-Line FIFO (First In First Out): Ersetze älteste geladene Cache-Line (erfordert Ladestatistik). LFU (Least Frequently Used): Ersetze am wenigsten benutzte Cache-Line (erfordert Benutzungsstatistik). (Ersetzungsproblem, Castoff) 4. Cache-Line aus HS in Cache laden Round Robbin : Ersetze Cache-Line in vorher festgelegter Reihenfolge. 5. Lesen der Daten aus dem Cache RA I e Rechnerarchitektur I =1 D C Optimal (Perfect): Ersetze in Zukunft nicht mehr ben ötigte Cache-Line. RA I e D C = 43/ 97 I TeI rgs 9.4 Cache-Speicher T 9 Speicherarchitektur 41/ 97 =1 D C I D C = 9.4 Cache-Speicher T 9 Speicherarchitektur Größe der Cache-Line und des Cache-Data-RAM Datenkonsistenz und Datenkohärenz Cache-Line-Size (clz): clz = 2o byte Wann werden welche Daten im Cache oder und im Hauptspeicher aktualisiert? Konsistenz: Sowohl der Cache als auch der Hauptspeicher enthalten stets die identischen aktuellen Daten. Alle untergeordneten Hierarchieebenen enthalten stets auch die Daten aller übergeordneten Ebenen in identischer Form. Kohärenz: Der CPU werden immer die aktuellen Daten bereitgestellt, unabh ängig davon, ob sie im Cache oder im Hauptspeicher stehen. Auf veraltete Daten (Stale Data) darf nicht zugegriffen werden (⇒ Konsistenzabschw ächung). Problemfälle: - Auslagern, Rückschreiben in untergeordnete Hierarchieebenen (Castoff). - Mehrere Master im System (CPU und DMAC, Direct Memory Access). Rechnerarchitektur I Rechnerarchitektur I TeI rgs Cache-Organisation – Aktualisierungsproblem RA I 9 Speicherarchitektur Cache-Organisation – Ersetzungsploblem Fehlzugriff (Read-Miss) 1. Adressen miss HS 9.4 Cache-Speicher T 42/ 97 oder clz = 2o−b Worte mit 2b byte Cache-Data-RAM (cdr): Voll assoziativer Cache (k-fach assoziativ): cdr = k · clz (k - Assoziativität) Direkt abgebildeter Cache (einfach assoziativ): cdr = 2i−o · clz (i − o - Index) k-Wege Satz-assoziativer Cache (k direkt abgebildete Caches parallel): cdr = k · 2i−o · clz (k - Assoziativität, i − o - Index) ⇒ Optimierung der Größe der Cache-Line und des Cache-Data-RAM RA I Rechnerarchitektur I 40/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T 9.4 Cache-Speicher T Überlagerungsstrukturen (Overlays) Write-Allocate 1. Adressen miss • das Programm ist grösser als der physikalische Speicher • Zerlegung des Programms in Teile, Überlagerungen (Overlays) Cache CPU • Abspeicherung der Überlagerungen auf dem Sekundärspeicher (Festplatte) • Laden und Ausführen der ersten Überlagerung, des Hauptprogramms Daten • Nachladen der weiter benötigten Überlagerungen (Überschreiben alter Überlagerungen) entsprechend Überlagerungstabelle → Der gesammte Überlagerungsprozess wird durch den Programmierer, das Write-Around (No-Write-Allocate) 1. Adressen miss HS 4. 3. 2. Cache-Miss, HS-Zugriff fortsetzen 3. Verdrängen einer Cache-Line 3. Schreiben der Daten in den HS (Cache wird nicht geladen) Write-Allocate mit Write-Back Write-Around mit Write-Through Weiter analog Treffer (Write-Hit), typisch: e =1 D C D C = RA I e I TeI rgs Virtueller Speicher T Einprogrammbetrieb Daten 1. Cache und HS adressieren 4. Cache-Line aus HS in Cache laden 47/ 97 HS 2. Cache-Miss, HS-Zugriff fortsetzen (Ersetzungsproblem, Castoff) Rechnerarchitektur I Cache CPU 1. Cache und HS adressieren Nutzerprogramm gesteuert und verwaltet RA I 9 Speicherarchitektur Fehler (Write-Miss) Cache Schreib-Strategie (Write Strategy) Rechnerarchitektur I 45/ 97 I TeI rgs =1 D C D C = 9.4 Cache-Speicher T 9 Speicherarchitektur Treffer (Write-Hit) Cache Schreib-Strategie (Write Strategy) • die maximale Programmgrösse wird durch den verfügbaren physikalischen Speicher begrenzt Write-Back, Copy-Back (WB) 1. Adressen hit Write-Through (WT) 1. Adressen hit • nur ein Programm, Nutzer möglich (single user mode) Cache CPU HS Cache CPU HS • Laden und Ausführen des Programms auf eine bestimmte definierte Adresse 3. → Organisation des Ladens und Abarbeitens durch den Programmierer/Operator 5. 1. Cache und HS adressieren 2. Cache-Hit 2. Cache-Hit 3. Schreiben der Daten in den Cache 3. Schreiben der Daten in den Cache (Schreibpuffer, Write-Buffer) Gerätetreiber (BIOS) ⇒ Zeitaufwendig aber konsistent Benutzerprogramm Daten 1. Cache und HS adressieren 4. HS unverzüglich aktualisieren RAM 0 3. 0 RAM 4. ROM FF... Rechnerarchitektur I RA I Betriebsystem ROM 0 FF... RAM FF... Daten 46/ 97 RA I Rechnerarchitektur I 4. Setzen des Dirty-Bit 5. HS bei Verdrängung aktualisieren ⇒ Probleme mit Daten-Konsistenz 44/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T Virtueller Speicher T Mehrprogrammbetrieb mit variabler Partitionierung Swapping Unter Swapping (Ein-/Auslagerung) wird bei Timesharing-Systemen das Verschieben ganzer Prozesse (Programme) zwischen prim ären und sekundären Speicher (Hauptspeicher-Festplatte) verstanden. (IBM-OS/MVT Multiprogramming with a Variable number of Tasks, 1971) Anzahl und Grösse der Prozesse innerhalb des Hauptspeichers variieren ständig. • Definition eines Swap-Bereiches auf der Festplatte • Allokation von Swap-Partitionen im Swap-Bereich (analog → Nutzung variabler Partitionen (feste Partitionen sind uneffektiv bzgl. Hauptspeicherpartitionierung) Speicherplatzausnutzung) • Ein- und Auslagerung von Prozessen als Transfer zwischen Hauptspeicherund Swap-Partitionen • dynamisch variierende Anzahl, Anordnung und Gr össe der Partitionen • dynamisch Speicherallokation durch Prozesse gesteuert • Berücksichtigung von wachsenden bzw. schrumpfenden Speicherbereichen, Partitionen → Speicherallokation der Prozesse ändert sich ständig RA I e Rechnerarchitektur I 51/ 97 D C D C = RA I e I TeI rgs =1 Ursachen, Notwendigkeit für Swapping: • es gibt mehr Prozesse als mögliche Speicherpartitionen (zu kleiner Hauptspeicher) • Prozesse mit langen Wartezeiten (z.B. auf E/A-Geräte) • inaktive Prozesse Virtueller Speicher T =1 D C D C = Realisierung von Mehrprogrammsystemen • Unterteilung der Abarbeitungszeit in Zeitscheiben (timesharing-Systeme) Relokation: 512 K 256 K 128 K Parition 2 Programm 1 Parition 1 Programm 3 Parition 0 Betriebssystem 0 Hauptspeicher RA I Rechnerarchitektur I Virtueller Speicher T Mehrprogrammbetrieb (multiprogramming) (IBM-360-OS/MFT Multiprogramming with a Fixed number of Tasks, 1966) Programm 2 49/ 97 I TeI rgs Mehrprogrammbetrieb mit fester Speicherpartitionierung Parition 3 Rechnerarchitektur I • Unterteilung des Hauptspeichers in Bereiche (Partitionierung) Adresstransformation (Verschiebung entsprechend Partitionsanfang) beim Laden der Programme oder in Hardware (Basisregister) → Abarbeitung mehrerer Programme (Prozesse) gleichzeitig, parallel (innerhalb einer Zeitscheibe nur je ein Prozess) • Einbenutzersysteme (single user mode) ein Nutzer mit mehreren Programmen Schutz: • Mehrbenutzersysteme (multi user mode) mehrere Nutzer mit vielen Adressüberprüfung während der Laufzeit (Hardware) • zu den Nutzerprozessen parallele Abarbeitung von Programmen Betriebssystemprozessen, Treibern, E/A ... 50/ 97 RA I Rechnerarchitektur I 48/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T Virtueller Speicher T Virtueller Speicher Virtueller Speicher Zielstellung: • Vergrösserung des nutzbaren Adressraumes weit über den des technisch Seite Seite Seite Seite Seite Seite Seite Paging Segmentierung Blöcke (Seiten) gleicher Größe Blöcke (Segmente) unterschiedliche Größe verfügbaren Hauptspeichers hinaus Segment Unterstützung mehrerer getrennter Adressr äume • • • • • Segment Segmente Seite Seite Seite Seite Seite Realisierung ”beliebig“ teilbarer und nutzbarer Adressr äume Trennung von einzelnen Prozessen bzgl. Zugriffsrechte, Schutzmechanismen gemeinsame Nutzung von Prozessen bzw. Speicherbereichen Effektive Einbeziehung des Sekundärspeichers (Festplatte), kurze Lade- und Speicherzeiten • Entlastung des Programmieren von aufwendiger Adressrechnung, Segmentierung mit Paging Overlayprozess, Partitionierung, Verwaltungsaufgaben zusätzliche Unterteilung der Segmente in Seiten RA I e Rechnerarchitektur I D C D C = RA I e I TeI rgs =1 55/ 97 Virtueller Speicher T Rechnerarchitektur I 53/ 97 I TeI rgs =1 D C D C = Virtueller Speicher T Fragmentation Grundkonzept des Virtuellen Speicher Interne Fragmentation: Programmgrösse und Partitionsgrösse stimmen nicht überein → Partitionen fester Grösse enthalten Freiräume, Löcher • Trennung von Adressraum (address space) und Speicheradressen (physikalischer Speicher) • Einführung eines oder mehrerer beliebig grosser virtueller Adressr äume • Unterteilung des virtuellen und des physikalischen Adressraumes in Bl öcke gleicher oder variabler Grösse • Adressumsetzung (address translation) zwischen virtuellen und physikalischen Adressen durch Tabellen Externe Fragmentation: Prozessgrösse ändert sich während der Abarbeitung (wachsen, schrumpfen), Prozesse werden ein- und ausgelagert → zwischen Partitionen variabler Grösse entstehen Freiräume, Löcher • Nutzung des Sekundärspeichers für Ein- und Auslagerungen Defragmentierung (Speicherverdichtung): Verschiebung aller Prozesse im Speicher zur Vermeidung von externer Fragmentation (zeitaufwendig) • Automatische Realisierung der gesamten Prozessaufteilung, Speicherzuordnung, Adresstransformation, Umlagerungen, durch die Hardware und das Betriebssystem, für den Nutzer völlig transparent RA I Rechnerarchitektur I 54/ 97 RA I Rechnerarchitektur I 52/ 97 e I TeI rgs D C Seite 4 Seite 3 12 k Seite 2 8k Adress-Abbildung virtuell (logisch) 59/ 97 Virtueller Speicher Segmentierung (Blockorientiert) Basisadresse log.-Adressen virtuell (logisch) Rechnerarchitektur I 0 I D C Virtueller Speicher T virt. Adresse phy. Adresse Adressimpuls Adressimpuls MMU Speicher HOLD ABORT Daten 768 767 Adress-Abbildung D C = Blockgrenzen 1535 1 0 57/ 97 TeI rgs =1 Segment n physikalisch Rechnerarchitektur I CPU 2303 1792 2 1 0 Adress-Abbildung Zusammenwirken von CPU und MMU zur Berechnung der physikalischer Adressen Blockgrenzen 0 Block-Nr. RA I e I D C T 0 virtuell (logisch) physikalisch TeI rgs 170 0 Rechnerarchitektur I 2 1 0 Segment 1 170 Seitenrahmen 0 0k Segment 0 200 Seitenrahmen 1 4k Seite 0 0 525 356 355 Seitenrahmen 2 8k Seite 1 4k Seitenrahmen 3 Basisadresse Seite 5 12 k RA I Segmentgrösse variabel phy.-Adressen Seite 6 16 k D C Virtueller Speicher Segmentierung Segment n log.-Adressen Seite 7 20 k = D C Seite 8 24 k =1 D C T 4k Byte Seitengrösse: Seitenrahmenanzahl: l 212 · l Byte phys. Speicher: Seite 9 28 k e =1 Paging 32 k RA I I TeI rgs = Virtueller Speicher T Segment 1 D C = Segment 0 =1 log.-Adressen e Block-Nr. 8 7 6 5 4 3 2 1 0 physikalisch 58/ 97 RA I Rechnerarchitektur I 56/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Fragmentierung T Virtueller Speicher T Fragmentierung bei Paging Seitenadressierung, Paging (1) • Zuordnung eines für jeden Prozess gesonderten virtuellen Adressraumes Seite 3 Seite 2 frei Seite 1 Seite 0 extern (virtual address space) mit der Adresse 0 beginnend Seite (vergrössert) Seite 4 Seite 2 • Unterteilung des virtuellen Adressraumes in Blöcke gleicher Grösse (Seiten, Pages) Seite 1 • Die Seitengrösse entspricht immer einer Potenz von 2 Seite 0 (z.B. 4 Kbyte, 4 Mbyte) intern • Unterteilung des physikalischen Adressraumes in Bl öcke der gleichen Grösse wie beim virtuellen Adressraum (Seitenrähmen, Page Frames) • Die Seitemrähmen des physikalischen Adressraumes können jeweils genau eine Seite des virtuellen aufnehmen RA I e Rechnerarchitektur I 63/ 97 e I TeI rgs =1 D C D C = RA I Virtueller Speicher T Seitenadressierung, Paging (2) Rechnerarchitektur I 61/ 97 I TeI rgs =1 D C D C = Virtueller Speicher T Virtueller Speicher log. Adressen 2m − 1 • Unterteilung der virtuellen und physikalischen Adressen in Seitennummer (Pagenumber) bzw. Seitenrahmennummer und Seitenoffset (Page Offset) • Realisierung der Abbildung virtuelle → physikalische Adresse Adressraum m-bit virtuell (logisch): physikalisch (real): n-bit (Address Translation) durch eine Seitentabelle (Page Table) Sekundärspeicher die Memory Managemant Unit (MMU) und wird durch das Betriebssystem unterstützt Zuordnungstabelle virt. phy. • Die Seitenadressierung erfolgt automatisch, für den Nutzer transparent. Programmierung ohne Berücksichtigung von Paging mit ”virtuellen“ Adressen RA I Rechnerarchitektur I 0 RA I Primärspeicher HS 0 virtuell (logisch) 62/ 97 2n − 1 phy. Adressen • Die Adressabbildung virtuell → physikalisch erfolgt hardwarem ässig durch Rechnerarchitektur I Adress-Abbildung physikalisch (real) 60/ 97 e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T Virtueller Speicher T Typische Seitentabelleneinträge Beispiel für Seitentabelle Mögliche Abbildung von einen Virtuellen Speicher mit 16 Seiten auf einen Arbeitsspeicher mit 8 Seitenrahmen. • Seitenrahmennummer (physikalischer Speicher) Seite • Verfügbarkeit (Present/Absent-Bit) Seite 15 Seite 14 Seite 13 Seite 12 Seite 11 Seite 10 Seite 9 Seite 8 Seite 7 Seite 6 Seite 5 Seite 4 Seite 3 Seite 2 Seite 1 Seite 0 64 k • Schutz (Privileg) ... • Verändert (Dirty-Bit) • Referenziert (Accessed) 4k 0 virt. Speicher • Caching RA I e Rechnerarchitektur I 67/ 97 D C D C = RA I e I TeI rgs =1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Virtueller Speicher T Seite 20 Seitenrahmen 7 6 5 4 3 2 1 0 Seitentabelle 32 k Virtuelle Seite 14 Virtuelle Seite 3 Virtuelle Seite 8 Virtuelle Seite 6 =1 D C phys. Speicher Rechnerarchitektur I 65/ 97 I D C = 4k 0 Virtueller Speicher T Adressabbildung mit Seitentabelle reale Adresse Offset Seitenrahmen 0 6 0 7 0 0 5 3 0 1 0 0 4 0 2 0 TeI rgs Adressabbildung bei Paging virtuelle Adresse P 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 ... e Seitenrahmen 1. Suchen der virtuellen Seite in der Seitentabelle → Adressierung der Seitentabelle mit der Seitennummer Offset 12 2. Herauslesen der Seitenrahmennummer aus der Seitentabelle 3. Zusammenfügen von Seitenrahmennummer und Seitenoffset ergibt die physikalische Adresse im Speicher Seitentabelle P Seitenrahmen 20 Befindet sich die gesuchte Seite nicht in einem Seitenrahmen des physikalischen Speichers (Present/Absent-Bit ist 0), so ist diese Seite durch das Betriebssystem nachzuladen und die Seitentabelle zu aktualisieren. 220 − 1 Basisadresse 0 Seitentabelle enthält die Seitenrähmen der Seiten die sich im phys. Speicher befinden (Seite → Seitenrahmen). P: Present/Absent-Bit (1 = Vorhanden im Hauptspeicher / 0 = Fehlt im Hauptspeicher) RA I Rechnerarchitektur I 66/ 97 virtuell Seitennummer + Offset Seitentabelle −→ physikalisch Seiterahmennummer + Offset → Ersetzen der Seitenummer duch die Seitenrahmennummer RA I Rechnerarchitektur I 64/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T Virtueller Speicher T Privater Adressraum pro Prozess (Nutzer) Optimierung der Seitengrösse grössere Seiten Prozess 3 • höhere interne Fragmentation (ungenutzte Speicherbereiche innerhalb der Seiten) Prozess 2 • höherer Aufwand beim Nachladen von Seiten (Seitenfehler) Prozess 1 kleinere Seiten Seitentabellen virtuell physikalisch • grössere Seitentabellen (mehr Seitentabelleneinträge) • grösserer Adressabbildungsaufwnd (aufwendigere MMU) → Implementierung von verschiedenen Seitengrössen RA I e Rechnerarchitektur I D C D C = T RA I e I TeI rgs =1 71/ 97 Virtueller Speicher Rechnerarchitektur I I TeI rgs =1 D C D C = 69/ 97 T Virtueller Speicher → Enthält keine Information über die Lage der Seite im Sekund ärspeicher Forderungen und Grösse linearer Seitentabellen (Festplatte), wird durch das Betriebssystem organisiert Forderungen • Realisierung grosser umfangreicher Seitentabellen für jeden Prozess getrennt, mit Schutzfunktionen, ... • sehr schneller Adressabbildung (kleine Latenzzeiten) • Realisierung von gemeinsamen Speicher (Shared Memory) Grösse m-bit virt. Adressraum, s-bit Seitengrösse, k-byte Seitentabelleneintrag → (2m−s · k)-byte Grösse einer Seitentabelle Beispiel • 32-bit virt. Adressraum, 12-bit Seitengrösse, 4-byte Seitentabelleneintrag → 4-Mbyte Seitentabellengrösse für jeden Prozess • 64-bit virt. Adressraum, 20-bit Seitengrösse, 8-byte Seitentabelleneintrag RA I Rechnerarchitektur I 70/ 97 RA I Rechnerarchitektur I 68/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T Virtueller Speicher T Adressabbildung mit Invertierter Seitentabelle virtuelle Adresse Zweistufige Seitenadressierung reale Adresse Seite Offset 20 virtuelle Adresse (lineare) Seitenrahmen Offset Directory 12 Seite 10 10 reale Adresse Offset Seitenrahmen Offset 12 Invertierte Seitentabelle Seite Seitenrahmen Seitentabellen Verzeichnis 20 l Seitensuche Hashtabelle e 0 D C Rechnerarchitektur I 75/ 97 2 −1 2 −1 0 0 RA I e I D C = Virtueller Speicher T Rechnerarchitektur I =1 D C D C = 31 22 21 viele und grosse virtuelle Adressräume → viele und grosse Seitentabellen (hoher Speicherbedarf und grosse Latenzzeiten). Aber, nur eine kleine Menge an virtuellen Seiten werden wiklich genutzt. Offset 12 11 Virtueller Speicher T Effektivierung der Adressabbildung virtuelle Adresse (lineare) Seite 73/ 97 I TeI rgs Darstellung bei der Zweistufigen Steitenadressierung Directory 20 Seitenrahmen 10 l : Seitenrahmenanzahl TeI rgs =1 P 10 Invertierte Seitentabelle enthält nur Seiten die sich in Seitenrähmen des phys. Speicher befinden (Seitenrahmen → Seite). RA I Seitentabelle Seitentabelle 0 Auswege • effiziente Abspeicherung der Seitentabellen, nur genutzter Bereich • Vergrösserung der Seiten (Verringerung der Seitenanzahl) SeitentabellenVerzeichnis phys. Speicher • mehrstufige Seitentabellen • invertierte Seitentabellen (Mashing Methode) Seitentabellen • caching der Tabelleneinträge (Translation Lookaside Buffers, TLB) RA I Rechnerarchitektur I 74/ 97 RA I Rechnerarchitektur I 72/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T Virtueller Speicher T Translation Lookaside Buffers (TLB) Virtuelle Speicheradressierung beim UltraSPARC-II V9 virtuelle Adresse 8K-byte Virtuelle Seite 8K-byte Physikalische Seite reale Adresse Seite Page Offset Offset Seitenrahmen Offset Page Offset 64K-byte Virtuelle Seite Page Offset 64K-byte Phys. Seite TLB Page Offset V R W D 512K-byte Virtuelle Seite Tag (Seite) Seitenrahmen Page Offset 512K-byte Phys. Seite Page Offset 4M-byte Virtuelle Seite Page Offset 4M-byte PS Page Offset Hit ? RA I e 40 22 19 16 13 Rechnerarchitektur I D C RA I e I D C = V = Valid R = Read W = Write D = Dirty 79/ 97 TeI rgs =1 0 Virtueller Speicher T Rechnerarchitektur I I TeI rgs =1 D C D C = Virtueller Speicher T Virtuelle Speicheradressierung beim SPARC V8 virtuelle Adresse Beispiel für Invertierte Seitentabelle reale Adresse Index 1 Index 2 Index 3 Offset Seitenrahmen Mögliche Abbildung von einen Arbeitsspeicher mit 8 Seitenrahmen auf einen Virtuellen Speicher mit 16 Seiten. Offset 64 k Tabellenverzeichnis Tabellenverzeichnis Seitentabelle Contexttabelle ... Root Pointer Level-1 Level-2 Level-3 4k 0 Seite 15 Seite 14 Seite 13 Seite 12 Seite 11 Seite 10 Seite 9 Seite 8 Seite 7 Seite 6 Seite 5 Seite 4 Seite 3 Seite 2 Seite 1 Seite 0 virt. Speicher RA I Rechnerarchitektur I 77/ 97 78/ 97 RA I Rechnerarchitektur I Seite 6 8 3 10 - Seitenrahmen 7 6 5 4 3 2 1 0 Inv. Seitentabelle Seitenrahmen 7 6 5 4 3 2 1 0 32 k Virtuelle Seite 6 Virtuelle Seite 8 Virtuelle Seite 3 Virtuelle Seite 10 ... 63 4k 0 phys. Speicher 76/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T Virtueller Speicher T Darstellung der Segmentadressierung Segmentierung virtuelle Adresse Segment 31 1. unterschiedliche Inhalte 2. dynamische Segmentlängenänderung 3. verschiedene Segmentlängen Offset 16 15 0 16k 8k 12k Segment reale Adresse Segmenttabelle variabler Bereich 4k Segmentanfang 0 phys. Speicher RA I e Rechnerarchitektur I 83/ 97 e I TeI rgs =1 D C D C = RA I Virtueller Speicher T Segment =1 D C Stack Segment 0 Segment 1 Segment 2 Rechnerarchitektur I 81/ 97 I D C = Virtueller Speicher T Virtuelle Speicheradressierung beim UltraSPARC-II V9 reale Adresse Virtuelle Adresse Offset Physikalische Adresse Seite 63 32 24 8 Daten TeI rgs Adressabbildung bei Segmentierung virtuelle Adresse Code Segmenttabelle Segmentlänge ITLB Offset n n-1 4 Seitengrößen: 8 KB : n = 13 0 64 KB : n = 16 512 KB : n = 19 4 MB : n = 22 Seitenrahmen 40 Offset n n-1 0 32 Basisadresse 28 − 1 TLB-Hit DTLB TLB-Miss Basisadresse TLB-Miss: Software f ¨ullt die TLB mit Inhalt vom TSB cache auf (Hardware unterst ¨utzt Adressrechnung) 0 Segmenttabelle enthält Segmentlänge und Basisadresse der Segmente die sich im phys. Speicher befinden (Segment → Basisadresse). RA I Rechnerarchitektur I TSB TSB = Translation Storage Buffer 82/ 97 RA I Rechnerarchitektur I 80/ 97 e e I TeI rgs =1 D C D C = =1 D C D C Virtueller Speicher T Adressabbildung bei Segmentierung mit Segmentnummerregister virtuelle Adresse I TeI rgs = Virtueller Speicher T Adressabbildung bei Segmentierung (Blockorientiert) virtuelle Adresse Segment reale Adresse 8 Offset reale Adresse Block Offset 16 Offset 8 24 32 32 Zugriffsart Segmenttabelle Segmenttabelle Segmentnummerregister Segmentlänge Basisadresse 32 Segmentlänge 24 Basisadresse 28 − 1 2n − 1 n 0 0 RA I e Rechnerarchitektur I 87/ 97 e I TeI rgs =1 D C D C = RA I Virtueller Speicher T Rechnerarchitektur I 85/ 97 I TeI rgs =1 D C D C = Virtueller Speicher T Darstellung der Segmentadressierung (Blockorientiert) Fragmentierung bei Segmentierung virtuelle Adresse Offset Block 24 23 8 7 0 Blockgrenzen Segment 2 frei Segment 1 Segmenttabelle reale Adresse Segment Segment Segment 31 frei Segment 0 extern intern Segmentanfang phys. Speicher RA I Rechnerarchitektur I 86/ 97 RA I Rechnerarchitektur I 84/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T Virtueller Speicher T Speicherverwaltungsformate beim Pentium II RPL base D/B bit DPL G Limit S bit P RA I e Requested Priviledge Level (RPL, Bits 0,1: 0 = highest , 3 = lowest) Definiert die Startadresse des Segments innerhalb des linearen Adressraums. Gibt an, ob die Adressierung 16 oder 32 bit betr ägt. Gibt die Zugriffsrechte der Segmente an. Granularität,gibt die kleinste Einheit bzgl. der Segmentgr össe an. (1 byte oder 4 KByte). Definiert die Grösse des Segments. Gibt an, ob das Segment ein Data oder ein Code oder ein Stack Segment ist. Zeigt an, ob ein Segment im Hauptspeicher present ist. Rechnerarchitektur I 91/ 97 e I TeI rgs =1 D C D C = Virtueller Speicher T Segment Selektor (Segment Selector) 2-Byte 15 3 21 D C I D C = Virtueller Speicher T Zweistufige Adressabbildung durch Kombination von Segmentierung und Paging Segment Base Address 23 ... 16 Segment reale Adresse Seite 10 Offset 10 Seitenrahmen 31 Limit 0 ... 15 0 Page Frame Address 31 ... 12 31 P P P U R P 0 A C W S D T S W AVL 12 11 A = Accessed RW = Read/Write Offset 12 Seitentabelle Segmenttabelle Page Frame Address 31 ... 12 PS = Page Size US = User/Supervisor Rechnerarchitektur I =1 0 A Segment Segment V P DPL S Limit Type L 19 ... 16 Base 0 ... 15 RA I 89/ 97 virtuelle Adresse Segment Base Address 31 ... 24 D G / B 31 24 23 22 2019 16 15 14 13 12 11 8 7 G = Granularity D/B = Default Operation Size AVL = Available for Use P = Segment Present DPL = Descriptor Privilege Size S = Descriptor Type Seitentabelleneintrag (Page Table Entry) 4-Byte Rechnerarchitektur I TeI rgs TI = Table Indicator RPL = Requestor Privilege Level T RPL I Index Segmenttabelleneintrag (Segment Descriptor) 8-Byte Seitenverzeichniseintrag (Page Directory Entry) 4-Byte RA I 9 PCD = Cache Disable P = Present 9 P Basisadresse 210 − 1 210 − 1 0 0 20 Seitenrahmen PWT = Write Through D = Dirty P P D A C W D T AVL 12 11 7 6 5 4 3 2 1 0 Segmentlänge R P W 6 5 4 3 2 1 0 90/ 97 RA I Rechnerarchitektur I 88/ 97 e e I TeI rgs =1 D C D C = I TeI rgs =1 D C D C = Virtueller Speicher T Physikalischer Cache log. Adresse Virtueller Speicher T Virtuelle Speicheradressierung beim Pentium II phy. Adresse virtuelle Adresse MMU Seitenrahmen CPU Cache lineare Adresse Offset Directory Seite reale Adresse Offset Seitenrahmen Offset Speicher Daten Segmenttabelle Segementierung RA I e Rechnerarchitektur I 95/ 97 e I TeI rgs =1 D C D C = RA I Virtueller Speicher T D C Zweistufige Seitenadressierung 93/ 97 I D C = Seitentabelle Rechnerarchitektur I TeI rgs =1 Tabellenverzeichnis Virtueller Speicher T Virtueller Cache log. Adresse A phy. Adresse MMU CPU D Speicher Cache PCD PS PWT P Daten RW US RA I Rechnerarchitektur I 94/ 97 RA I Wird vom Prozessor gesetzt, wenn eine read/write Operation auf die entsprechende Seite erfolgt. Wird vom Prozessor gesetzt, wenn eine write Operation auf die entsprechende Seite erfolgt. Zeigt an welche Daten der Seite in den Cache geladen werden. Gibt an, ob die Seitengrösse 4 KByte oder 4 MByte beträgt. Gibt die Cache-Strategie an, ob write-through oder write-back Gibt an, ob die Seitentabelle oder die Seite im Hauptspeicher ist. Für ”user-level“ Seiten, gibt an ob die Seite read-only oder read/write Rechte besitzt. Gibt an, ob die Seite nur für das Betriebssystem oder für Betriebssystem und Anwendungen verfügbar ist. Rechnerarchitektur I 92/ 97 e I TeI rgs =1 D C D C = Virtueller Speicher T UltraSPARC-I Adressierungsmechanismus Sign-extended 31-bit virtual page number 14-bit data cache index 13-bit context ID Virtually indexed, physically tagged, direct-mapped 16-Kbyte, L1 data cache 64-entry, fully associative instruction TLB 64-entry, fully associative data TLB Tag compare (cache hit/miss) 13-bit page offset Physically indexed, phsically tagged, pseudo 2-way set associative, 16Kbyte L1 instruction cache Page frame number 13-bit instruction cache index 8-bit ASI Tag: page frame number Cache data RA I e Rechnerarchitektur I 97/ 97 I TeI rgs =1 D C D C = Virtueller Speicher T Pentium II Adressierungsmechanismus 16-bit segment selector 32-bit segment offset Local and global descriptor tables 20-bit virtual page no. 32-entry, 4-way instruction TLB 64-entry, 4-way data TLB Tag compare (cache hit/miss) 12-bit page offset 16-Kbyte, 4-way data cache 16-Kbyte, 4-way instruction cache Page frame number Tag: page frame number Cache data RA I Rechnerarchitektur I 96/ 97