Transcript Anzeigen
Prozessor E/AGeräte Leitwerk Speicher Rechenwerk Verbindungsnetzwerk E/A-Steuerungen (controller) E/A-Einheiten 4.4 Speicherarchitektur Universität Dortmund Mehrprozess-System (Multitasking, Multiprocessing) In realen Rechnern meist mehrere „Programme“ gespeichert. Ausführbare Programme heißen Prozesse oder tasks. Prozessen wird durch einen dispatcher (z.TL. scheduler genannt) Rechenzeit auf dem Prozessor zugeteilt. Dispatcher schaltet zwischen Ausführung von Prozessen um (context switch). Bei context switch werden alle Register - des anzuhaltenden Prozesses in einen ihm zugeordneten Datenblock (process control block, PCB) gerettet & - die des zu fortzuführenden Prozesses aus seinem PCB geladen. Prozessen wird suggeriert, Prozessor gehöre ihnen allein (bis auf Zeitverhalten). P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 2 - Universität Dortmund Context switch Prozessor Speicher PCB A Register A B PCB B Ausführung A B A B P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 3 - Universität Dortmund Speicherverwaltung Unterscheidung zwischen den Adressen, welche der Prozessor generiert und jenen, mit denen der physikalische Speicher adressiert wird. Prozessor Speicher Def.: Prozessadressen bzw. virtuelle Adressen sind die effektiven Adressen nach Ausführung aller dem Assemblerprogrammierer sichtbaren Adressmodifikationen, d.h. die von einem Prozess dem Rechner angebotenen Adressen. Def.: Maschinenadressen, reale Adressen bzw. physikalische Adressen sind die zur Adressierung der realen Speicher verwendeten Adressen. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 4 - Universität Dortmund Memory Management Unit (MMU) MMU ist für das Umrechnen der Adressen verantwortlich. Beispiel Motorola Daten/Befehle Prozessor MC 68020 Kontrolle virtuelle Adressen MMU 68851 Speicher reale Adressen Adressbits (7:0) P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 5 - Universität Dortmund 4.4.1.1 Identität Bei einfachen Systemen sind reale und virtuelle Adressen identisch („memory management without swapping or paging“). Prozessor Speicher Adressraum durch real vorhandenen Speicher beschränkt. Kommt v.a. bei eingebetteten Systemen (Fahrzeugelektronik, Handys usw.) vor, weniger bei PCs und Workstations. 0 Sehr einfache Systeme: - Aufteilung in Systembereich und Benutzerprogramm ( SPIM) P. Marwedel, Univ. Dortmund, Informatik 12, 2006 system user user system Speicher - 6 - Lücken? SPIM Universität Dortmund Einteilung in Laufbereiche (core partitions) Adressbereich der Prozesse zusammenhängend im virtuellen und im realen Adressraum. Compiler adressieren Befehle ab Adresse 0. Beim Laden muss auf alle Adressen Anfangsadresse der Partition addiert werden. Identifikation von Adressen im übersetzten Programm! Prozesse Betriebssystem Partition 1 Partition 2 1,2 4 5 4,5 Partition 3 3 Partition 4 6,7,8 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Jeweils ein Prozess im Speicher, die übrigen auf der Platte. Aus Aufwandsgründen statt flexibler Speicherzuteilung an Prozesse feste Partitionierung des Speichers. Speicher - 7 - Universität Dortmund Speicherschutz durch Grenzregister möglich Betriebssystem Z.Tl. nur Zugriff auf durch Grenzregister begrenzten Speicherbereich erlaubt ( Speicherschutz); Grenzregister werden bei context switch umgeladen. Prozesse Partition 1 1,2 Partition 2 4,5 Partition 3 3 Partition 4 6,7,8 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 8 - Universität Dortmund Was tun, wenn Prozesse mehr Speicher benötigen? (1) Man könnte Partitionen verschmelzen, wenn Prozesse mit dem Speicher der zugeteilten Partition nicht auskommen. Aus Aufwandsgründen selten realisiert. Betriebssystem Prozesse Partition 1 1,2 Partition 2 4,5 Partition 3 3 Platte Partition 4 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 9 - Universität Dortmund Was tun, wenn Prozesse mehr Speicher benötigen? (2) Verschieben von Prozessen im Speicher nicht möglich, da Adressen angepasst werden müssten, andere Informationen nicht. Im Speicher sind Adressen und andere Informationen ununterscheidbar Betriebssystem Aus demselben Grund kann nur der gesamte Inhalt einer Partition auf die Platte ausgelagert werden (swapping) und an dieselbe Stelle zurückgeschrieben werden. Partition 1 f Partition 2 Partition 3 0x010101FF 0x23040501 pointer (Adresse) integer Partition 4 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 10 - Universität Dortmund Einsatzbereiche • Sehr einfache Rechner, eingebettete Systeme (Handys, Fahrzeugelektronik). • Systeme, bei denen die Programme von vornherein alle bekannt sind. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 11 - Universität Dortmund Beurteilung Nachteile: • Sehr starke „externe Fragmentierung“ (Speicherbereiche bleiben ungenutzt). • Adressraum durch real vorhandenen Speicher beschränkt. • Man muss den Speicherbedarf von Applikationen recht genau kennen, um eine möglichst passende Speichergröße zuzuweisen. • Risiko des Prozessabbruchs, wenn Speicher nicht ausreicht. Gründe für bessere Verfahren. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 12 - Universität Dortmund 4.4.1.2 Seiten-Adressierung (paging) • Einteilung der realen Adressen in Bereiche gleicher Länge (Seitenrahmen, Kacheln, page frames). Kacheln Seiten Prozess 2 0 1 2 3 0 1 2 3 4 5 6 7 8 .. Seiten Prozess 1 0 1 2 3 Jede Seite kann auf jeder Kachel gespeichert werden. • Einteilung der virtuellen Adressen in Bereiche konstanter Länge (Seiten, pages) P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 13 - Universität Dortmund Seiten-Adressierung (paging) Kacheln 0 1 2 3 4 5 6 7 8 .. Seiten Prozess 1 Seitennr. Offset Zu jedem Prozess existiert eine Tabelle, die Seitentabelle. 0 1 2 3 0 1 2 3 virtuelle Adresse Seiten Prozess 2 P1:Seite Kachel 0 1 1 5 2 7 3 6 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 reale Adresse = Anfangsadresse der Kachel + Offset Speicher - 14 - Universität Dortmund Vorteile • Man muss sich nicht vorab überlegen, welchem Speicherbereich (text, stack ,heap) man wie viel Speicher zuweist. • Jede Kachel des Speichers kann genutzt werden (keine „externe Fragmentierung“). • Lücken im virtuellen Adressraum (wie beim SPIM) sind kein Problem. • Virtuelle Adressräume aller Prozesse können bei 0 beginnen, nur bei getrennt übersetzten Prozeduren sind Adressanpassungen erforderlich. Nachteil (): • „interne Fragmentierung“ (Seiten nicht unbedingt gefüllt) P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 15 - Universität Dortmund Lücken im virtuellen Adressraum Bei MIPS-Konvention: Adressbereiche zwischen Stack, Befehls- und Datenadressen werden meist nicht benutzt. virtueller Adressraum Seitentabelle 0 Ungenutzte Seiten- bzw. Segmentnummern: bei der bisherigen Methode werden Tafeleinträge nicht benutzt! Befehle Daten Stack unbenutzt Seitentafel benötigt großen zusammenhäng. Speicherbereich. Berücksichtigung von Lücken im virtuellen Adressraum: nicht für jede mögliche Seite auch Einträge in der Seitentafel! P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 16 - Universität Dortmund Organisation der Adressabbildung Schnelle Umrechnung von virtuellen auf reale Adressen! Bei zusammenhängenden Adressen und Seitenadressierung: virtuelle Adresse Nummer des Worts in der Seite („Offset“) Seitennummer Speicher .... Seitentafel -basis + Zugriffsrechte, im Speicher? Anfangsadressen der Kacheln Seitentabelle .... -länge > & Reale Adresse Überprüfung Weil Seitengröße immer eine 2er Potenz ist. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 17 - Universität Dortmund Hierarchische Seitentabellen Mehrfache Verzweigung anhand einzelner Adressbits. Erspart Speicherung von Seitentabellen in manchen Teilen von Adressbereichen P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 18 - Universität Dortmund Invertierte Seitentabelle Selbst bei hierarchischen Seitentabellen kann ein großer Speicherbedarf entstehen, v.a. bei großen Adressräumen „invertierte Seitentabellen“ virtuelle Adresse Seitennummer ?? i Kachel i zugeordnete Seite # der Einträge = # der Kacheln Suche durch die gesamte Kacheltabelle wäre zu langsam P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 19 - Universität Dortmund Beschleunigung mittels Hashtabellen virtuelle Adresse Seitennummer Tag Index Lineare Ketten von Zeigern auf Einträge in der invertierten Seitentabelle, die zu einem bestimmten Seitenindex gehören Hashtabelle Sequentielle Suche nach passendem Tag in der invertierten Seitentabelle; kein Treffer, falls Seite nicht im Speicher. i Kachel i zugeordnete Seite # der Einträge = # der Kacheln Tradeoff: Laufzeit Speicherplatz P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 20 - Universität Dortmund Sharing (shared libraries) Einfache Idee: Seiten-Abbildungen mehrerer Prozesse führen zur selben Kachel virt. Adressen Prozess A 0 Xlib 1 2 3 4 Seitentabelle Prozess A virt. Adressen Prozess B 0 1 2 3 Xlib 4 Seitentabelle Prozess B realer Speicher j ? & … P. Marwedel, Univ. Dortmund, Informatik 12, 2006 0 1 Xlib 2 3 4 5 6 7 . . . Speicher - 21 - Universität Dortmund Idee ist so nicht realisierbar Im gemeinsam genutzten Code kommen (virtuelle) Befehlsadressen vor, die sich z.B. auf Adressen in diesem Code beziehen. Adressen müssen Seitennummern verwenden, die nach Abbildung auf die realen Adressen über die jeweiligen Seitentafeln wieder auf den gemeinsam genutzten Bereich verweisen. Wenn diese Seitennummern verschieden sind, so können sie nicht korrekt im Code eingetragen werden (in eine Speicherzelle „passt“ nur eine Seitennummer). Nutzen Prozesse gemeinsamen Code, so muss dieser bei der Seitenadressierung bei allen beteiligten Prozessen auf dieselben virtuellen Adressen abgebildet werden. Windows nutzt für gemeinsamen Code die obere Hälfte des Adressbereichs und benutzt Absprachen zur Adressvergabe. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 22 - Universität Dortmund Realisierbares Sharing Shared libraries befinden sich an derselben Stelle des virtuellen Adressraums virt. Adressen Prozess A 0 Xlib 1 2 3 4 Seitentabelle Prozess A virt. Adressen Prozess B 0 Xlib 1 2 3 4 Seitentabelle Prozess B realer Speicher j 1 & … P. Marwedel, Univ. Dortmund, Informatik 12, 2006 0 1 Xlib 2 3 4 5 6 7 . . . Speicher - 23 - Universität Dortmund Beobachtungen • Paging in der beschriebenen Form funktioniert ohne größeren Speicher (Plattenlaufwerk, hard disc (HD)) als weiteren Speicher. • Wird bei Systemen ohne HD eingesetzt (in vielen eingebetteten Systemen). • Paging bietet Form des Speicherschutzes: Prozesse können unterschiedliche Rechte zur Nutzung von Speicherbereichen haben. • Speicherschutz mittels paging ist grob: Wunsch, durch verschiedene Prozesse auf Speicheradressen abgebildete Peripheriegräte mit unterschiedlichen Rechten zu nutzen. Häufig werden viele Peripheriegeräte auf dieselbe Seite abgebildet. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 24 - Universität Dortmund Demand paging Wenn größerer und langsamerer Speicher (HD) verfügbar: Einteilung des Speichers in Bereiche konstanter Länge + automatisches Auslagern selten benutzter Seiten sowie Einlagern von ausgelagerten Seiten, wenn auf die entsprechenden Adressen zugegriffen wird. Kacheln Seiten Prozess 2 0 1 2 3 0 1 2 3 Platte 0 3 Auslagern einzelner Seiten auf die Platte und P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Rückschreiben auf beliebige Kachel möglich. Seiten Prozess 3 0 0 1 2 3 4 5 6 7 8 .. Seiten Prozess 1 Speicher - 25 - Universität Dortmund Paging Paging ist mehrdeutig: 1. Einteilung des Speichers in Bereiche konstanter Länge, evtl. ohne Ein- und Auslagern (z.B., weil man Realzeit-Verhalten erzielen will). 2. Benutzung im Sinne von demand paging. Speicher 4 5 Definition 2 ist die Gebräuchlichere. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 26 - Universität Dortmund Segmentadressierung (1) Beispiel: Zusammenhängenden Speicherbereichen (für Befehle, Daten, und den stack) im Prozessadressenraum werden zusammenhängende Bereiche im realen Adressraum zugeordnet. Segment 1 (Befehle Prozess 1, schreibgeschützt) Segment 2 (Stack Prozess 2) frei Segment 4 (Befehle Prozess 2) Segment 3 (Daten Prozess 1) S. 5, Stack Proz.1 S. 6, Daten Proz.2 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 27 - Universität Dortmund Segmentadressierung (2) Prozesse adressieren in jedem Segment ab Adresse 0; Beispiel: Segment 1 (Befehle Prozess 1, schreibgeschützt) 0 0100 Segment 2 (Stack Prozess 2) 0 0230 frei Segment 4 (Befehle Prozess 2) 0304 0 0390 Segment 3 (Daten Prozess 1) 0 0520 Länge 0 0720 Bei jedem Speicherzugriff wird die verdeckte Basis des jeweiligen Segments zur virtuellen Adresse addiert. S. 5, Stack Proz.1 S. 6, Daten Proz.2 0 0830 Zu jedem Prozess gehört eine Tabelle der für ihre Segmente zu addierenden Adressen (verdeckte Basen). Prozess 2 1 Befehle 0100 0390 Daten 0520 0830 Stack 0720 0230 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Erfordert Befehlssatz mit separaten Befehlen für stackZugriffe Speicher - 28 - Universität Dortmund Eigenschaften der Segmentadressierung (1) • Speicherschutz: Abfrage der Segmentlänge, R/W/E-Modi • Beim Laden müssen keine Adressen angepasst werden, dies passiert stets zur Laufzeit. • Verschieben von Segmenten ist möglich, da alle Adressen mittels Änderung der verdeckten Basis automatisch angepasst werden. • Auslagern ganzer Segmente und Rückschreiben an beliebige, ausreichend große Lücke ist möglich. Strategien zur Suche einer ausreichend großen, freien Lücke: frei frei ? first fit frei best fit P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 29 - Universität Dortmund Eigenschaften der Segmentadressierung (2) • Segmente können sich ausdehnen. Ist der anschließende Speicher belegt, so müssen sie umkopiert werden. • Ein Teil des Speichers außerhalb der Segmente bleibt unbenutzt (externe Fragmentierung). • Ggf. müssen Segmente verschoben werden, um ausreichend große freie Bereiche herzustellen. frei ? frei frei frei frei P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 30 - Universität Dortmund Adressabbildung bei Segmentadressierung virtuelle Adresse Nummer des Worts im Segment („Offset“) Segmentnummer Speicher .... Segmenttafel-basis + Zugriffsrechte, im Speicher? Segmenttabelle SegVerdeckte ment- Basen längen Reale Adresse .... -länge > + Überprüfung > Fehler? Bei zusammenhängenden Segmentnummern effizient. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 31 - Universität Dortmund 2 Formen der Segmentadressierung Segmentnummern in separaten Registern Beispiel: Intel Pentium Kein Problem mit dem sharing: Segmentregister müssen nur auf den gemeinsam genutzten Speicher „zeigen“. Wird von Microsoft nicht genutzt. Segmentnummern sind Teil der Adressen im Speicher Beispiel: PowerPC, IBM-Großrechner Beim sharing dasselbe Problem wie bei Seitenadressierung P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 32 - Universität Dortmund Kombination von Segment- und Seitenadressierung Segmentadressierung besitzt: • Vorteile beim Sharing, wenn Segmentnummern in Registern gespeichert werden. • Nachteile durch externe Fragmentierung Kombination von Segment- und Seitenadressierung: • Jedes Segment enthält Seiten, diese wiederum Worte • Fragmentierung reduziert sich auf interne Fragmentierung • Jede Kachel kann jede Seite aufnehmen (kein Kopieren) • Vorteile bei shared libraries virtuelle Adressen Segmentnr. Seitennr. Offset P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 33 - Universität Dortmund Segmentadressierung mit Seitenadressierung virtuelle Adresse Nummer des Worts in der Seite („Offset“) Speicher (derselbe) Segmentnummer Seitennummer .... Zugriffsrechte, im Speicher? + Segmentlängen Basen der Seitentabellen .... .... .... + Überprüfung Seite im Speicher? Benutzt? Beschrieben? Anfangsadressen der Kacheln > Länge | Basis der Segmenttafel Überprüfung Segmenttafel Fehler? P. Marwedel, Univ. Dortmund, Informatik 12, 2006 & Reale Adresse Speicher - 34 - Universität Dortmund Adressabbildung beim Intel 386 Segmentnummer virtuelle Adresse reale Adresse 12 16 LDT Seitentabellenverzeichnis + & Seitentabelle 10 10 & LDTR, Register für LDTBasisadresse 20 & Controlregister CR3 Die Local Descriptor Table LDT benötigt Einträge für den Bereich möglicher Segmentnummern; Tabellen für unbenutzte Seiten sind nicht erforderlich. Diese haben selbst wieder die Größe einer Seite. Adressübersetzungs-tabellen können teilweise auf die Platte ausgelagert werden P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 35 - Universität Dortmund 4.4.3 Translation Look-Aside Buffer (TLBs) Seitentabellen und Segmenttabellen im Hauptspeicher: Jeder einzelne Zugriff auf einen Befehl oder ein Datum erfordert zusätzliche Speicherzugriffe zur Umrechnung von virtuellen in reale Adressen. Unakzeptable Verlangsamung der Ausführung. Einführung zusätzlicher, kleiner, schneller Hardwarespeicher, welche häufig die benötigten Tabelleneinträge enthalten. Diese heißen translation look aside buffer (TLB) oder auch address translation memory (ATM). P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 36 - Universität Dortmund Die 3 Organisationsformen von TLBs In jedem Fall enthalten die TLBs nur Auszüge aus den vollständigen Tabellen, die weiterhin im Speicher sind. Ist die gesuchte Seiten- bzw. Segmentnummer nicht im TLB enthalten, so muss in der vollständigen Tabelle nachgesehen werden. Der Eintrag aus der vollständigen Tabelle verdrängt dann einen Eintrag aus dem TLB nach einem noch zu bestimmenden Algorithmus. Drei Organisationsformen von TLBs: 1. direct mapping, 2. Mengen-assoziative Abbildung (set associative mapping), 3. und Assoziativspeicher (associative mapping). P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 37 - Universität Dortmund Direct Mapping Die Seitennummer oder ein Teil davon adressiert den TLB. virtuelle Adresse Seitennummer Tag Nummer des Worts in der Seite („Offset“) Index TLB Tags Zugriffsrechte, im Speicher? Anfangsadressen der Kacheln = & Reale Adresse Tags gleich? P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 38 - Universität Dortmund Aliasing bei direct mapping virtueller Adressraum 00004 0100 0200 0300 1000 TLB Alle Seiten, deren Adressen im Indexteil übereinstimmen, werden derselben TLB-Zelle (demselben Namen (Alias)) zugeordnet. Teilweise starkes Anwachsen der Laufzeit. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 39 - Universität Dortmund Mengen-assoziative Abbildung - Prinzip Zu jedem Index-Wert gibt es n zugeordnete Plätze, mit n>1. virtueller Adressraum oder TLB Sofern über die vollständigen Tabellen im Hauptspeicher abgebildet werden muss, wird ein Platz im TLB überschrieben, z.B. der am Längsten nicht benutzte (least recently used (LRU)Strategie) P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 40 - Universität Dortmund Mengen-assoziative Abbildung - Realisierung Beispiel: Setgrösse n=2 virtuelle Adresse Seitennummer Tag Nummer des Worts in der Seite („Offset“) Index TLB ZugriffsTags rechte, im Speicher? = Anfangsadressen der Kacheln ZugriffsTags rechte, im Speicher? Anfangsadressen der Kacheln = & Treffer? 1 Alles ok ? P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Reale Adresse Speicher - 41 - Universität Dortmund Assoziativspeicher, associative mapping - Prinzip virtueller Adressraum Der Fall associative mapping entsteht aus dem set associative mapping für „Anzahl der Bits für den IndexTeil 0“. Jeder Platz des TLB kann die VerwaltungsInformation für jede beliebe Seite enthalten (kein aliasing). P. Marwedel, Univ. Dortmund, Informatik 12, 2006 oder oder oder TLB Speicher - 42 - Universität Dortmund Hardware-mäßige Realisierung mit content-adressable memory (CAM). Assoziativspeicher, associative mapping Ein CAM vergleicht den Tag-Bereich aller Zellen gleichzeitig mit dem Beispiel: 4 Einträge im CAM angelegten Suchwert und liefert im Fall eines Treffers die übrigen Informationen der betreffenden Zelle. virtuelle Adresse Nummer des Worts in der Seite („Offset“) Seitennummer TLB = CAM Tag Zugriffsrechte, im Speicher? Anfangsadresse Tag der Kachel = Zugriffsrechte, im Speicher? Anfangsadresse Tag der Kachel = Zugriffsrechte, im Speicher? = Anfangsadresse Tag der Kachel Zugriffsrechte, im Speicher? Anfangsadresse der Kachel = & 1 Treffer? Alles ok ? P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Reale Adresse Speicher - 43 - Universität Dortmund Anwendung: Memory Management Unit (MMU) Motorola MC 68851 Daten/Befehle Prozessor MC 68020 Kontrolle virtuelle Adressen MMU 68851 Speicher reale Adressen Adressbits (7:0) Voll-assoziativer TLB mit 64 Einträgen P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 44 - Universität Dortmund 4.4.4 Caches Cache = Speicher, der vor einen größeren, langsamen Speicher geschaltet wird. Im weiteren Sinn: Puffer zur Aufnahme häufig benötigter Daten. Im engeren Sinn: Puffer zwischen Hauptspeicher und Prozessor. Prozessor Cache (Haupt-/Arbeits-) Speicher Ursprung: cacher (frz.): verstecken („versteckter Speicher“). P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 45 - Universität Dortmund Ablauf Organisation von Caches (im engeren Sinn): • Prüfung anhand der (virtuellen oder realen) Adresse, ob benötigte Daten im Cache vorhanden sind („Treffer“; cache hit). • Falls nicht (cache miss): Zugriff auf den (Haupt-) Speicher, Eintrag in den Cache. Prozessor (Haupt-/Arbeits-) Speicher Cache lese 0x600 Adresse Daten lese 0x400 0x400 9999 9999 5555 0x600 5555 lese 0x600 5555 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 0x600 5555 Speicher - 46 - Universität Dortmund Prüfung auf cache hit: Cache-Zeilen (cache lines). Such-Einheit im Cache: Cache-Zeile (cache line). Adresse tag Index Für line size =4. Cache-Zeile = Weniger tag bits, als wenn man jedem Wort tag bits zuordnen würde. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 47 - Universität Dortmund Cache-Blöcke (cache blocks) - 1 Die Blockgröße ist die Anzahl der Worte, die im Fall eines cache misses aus dem Speicher nachgeladen werden. Beispiel: (Blockgröße = line size): 0x88C0 0xC 0x88 0x22 0x88 = 4444 5555 7777 9999 5555 7777 9999 miss Speicher 4444 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 48 - Universität Dortmund Cache-Blöcke (cache blocks) - 2 Wenn block size < line size, dann sind zusätzliche Gültigkeitsbits erforderlich. Beispiel: Blockgröße = line size / 2. Gültigkeitsbits Block 0x88C0 0xC 0x88 0x22 1 0x88 0 = 1 7777 0 9999 7777 9999 miss Speicher 4444 5555 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 49 - Universität Dortmund Cache-Blöcke (cache blocks) - 3 Wenn block size > line size, dann werden bei jedem miss mehrere Zeilen nachgeladen. Stets wird zuerst das gesuchte Wort, dann der Rest des Blocks geladen. Verbindung Speicher/Cache so entworfen, dass der Speicher durch das zusätzliche Lesen nicht langsamer wird: Methoden dazu: 1. Schnelles Lesen aufeinanderfolgender Speicherzellen (nibble mode, block/page mode der Speicher) 2. Interleaving (mehrere Speicher-ICs mit überlappenden Zugriffen) 3. Block-Mode beim Buszugriff, Page-Mode beim Speicherzugriff 4. Fließbandzugriff auf den Speicher (EDO-RAM, SDRAM) 5. breite Speicher, die mehrere Worte parallel übertragen können. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 50 - Universität Dortmund Organisationsformen von Caches • Direct mapping Für caching von Befehlen besonders sinnvoll, weil bei Befehlen aliasing sehr unwahrscheinlich ist. • Set associative mapping Sehr häufige Organisationsform, mit Set-Größe=2 oder 4, selten 8. • Associative mapping Wegen der Größe eines Caches kommt diese Organisationsform kaum in Frage. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 51 - Universität Dortmund Virtuelle und reale Caches Virtuelle Caches (schnell) Prozessor virtuelle Adressen MMU reale Adressen Speicher reale Adressen Speicher Cache Daten Reale Caches (langsamer): Prozessor virtuelle Adressen MMU Cache Daten P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 52 - Universität Dortmund Schreibverfahren Strategien zum Rückschreiben Cache -> (Haupt-) Speicher 1. Write-Through (durchschreiben) Jeder Schreibvorgang in den Cache führt zu einer unmittelbaren Aktualisierung des (Haupt-) Speichers Prozessor Cache [0x88C0] := 5555 Speicher [0x88C0] := 5555 0x88C0 0x77C0 5555 4444 0x88C0 5555 4444 Index Speicher wird Engpass, es sei denn, der Anteil an Schreiboperationen ist klein oder der (Haupt-) Speicher ist nur wenig langsamer als der Cache. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 53 - Universität Dortmund Schreibverfahren 2. Copy-Back, conflicting use write back: Rückschreiben erfolgt erst, wenn die Cache-Zeile überschrieben wird. Prozessor Cache [0x88C0] [0x55C0] [0x88C0] := 3333 5555 9999 Speicher [0x88C0] := 9999 0x55C0 9999 3333 0x77C0 0x88C0 4444 5555 0x88C0 9999 4444 Index Funktioniert auch bei großen Geschwindigkeitsunterschieden zwischen Cache und Speicher. Vorkehrungen erforderlich, damit keine veralteten Werte aus dem Speicher kopiert werden. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 54 - Universität Dortmund Realer Cache bei Prozesswechsel (context switch) Zu einer bestimmten Adresse im Cache gehört vor und nach dem Prozesswechsel dieselbe Zelle im Speicher. Prozessor lese 0x88D0 lese 0x88D0 3333 4444 MMU Cache lese 0x22B0 lese 0x11C0 3333 4444 0x22B0 4444 0x11C0 3333 P1 P2 Prozess P1 Prozess P2 Seite Kachel Seite Kachel 0x88D. 0x11C. 0x88D. 0x22B. Speicher lese 0x22B0 lese 0x11C0 3333 4444 0x11C0 3333 0x22B0 4444 Bei Prozesswechsel bleiben Informationen im Cache korrekt. Keine Aktionen erforderlich. Eintrag 0x11C0 ist nach Rückschalten auf P1 immer noch korrekt. Einträge überleben evtl. mehrere Prozesswechsel! Caches! Speicher - 55 P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Gut für große Universität Dortmund Realer Cache bei Seitenfehler (Seite muss per demand paging eingelagert werden) Zu einer bestimmten Adresse im Cache gehört vor und nach dem Aus- & Einlagern von Seiten eine andere Information. Prozessor lese 0x77F0 lese 0x88D0 3333 5555 MMU Cache Speicher lese 0x11C0 lese 0x11C0 3333 5555 0x11C0 5555 3333 P1 Vor Aus/Einlagern Nach Aus/Einlagern Seite Kachel Seite Kachel 0x88D. 0x11C. 0x77F. 0x11C. 0x88D. Platte P. Marwedel, Univ. Dortmund, Informatik 12, 2006 lese 0x11C0 lese 0x11C0 3333 5555 0x11C0 5555 3333 Bei Seitenfehlern müssen alle CacheZeilen, die Kopien der verdrängten Seite enthalten, ungültig erklärt werden. Speicher - 56 - Universität Dortmund Bus snooping (Bus-Lauschen) Bei Seitenfehler müssen alle Cache-Zeilen, die Kopien der verdrängten Seite enthalten, ungültig erklärt werden. Prozessor P1 MMU Cache 0x11C0 3333 Speicher 0x11C0 3333 5555 Cache „lauscht“, ob ein Schreibvorgang in den Speicher eine Zelle betrifft, von der er eine Kopie hat. Wenn ja, dann erklärt er diese für ungültig. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 57 - Universität Dortmund Gemeinsam genutzte Seiten (sharing) Kacheln Seiten Prozess 2 0 1 2 3 0 1 2 3 0 1 2 3 4 5 6 7 8 .. Seiten Prozess 1 Für gemeinsame Daten oder gemeinsame Befehle: Eintrag derselben Kachel in mehrere Seitentabellen. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 58 - Universität Dortmund Realer Cache bei gemeinsam genutzter Seite Annahme *: Beide Prozesse benutzen dieselbe virtuelle Adresse für den gemeinsamen Speicherbereich Prozessor lese 0x88D0 lese 0x88D0 3333 3333 MMU Cache lese 0x11C0 lese 0x11C0 3333 3333 Speicher lese 0x11C0 3333 0x11C0 3333 P1 P2 0x11C0 3333 Prozess P1 Prozess P2 Seite Kachel Seite Kachel 0x88D. 0x11C. 0x88D. 0x11C. Nach Prozesswechsel erhält P2 aus dem Cache die richtigen Informationen (unabhängig von *). P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 59 - Universität Dortmund Virtueller Cache bei Prozesswechsel (context switch) Zu einer bestimmten Adresse im Cache gehört vor und nach dem Prozesswechsel eine andere Zelle im Speicher. Prozessor Cache MMU lese 0x88D0 lese 0x88D0 3333 4444 P1 P2 lese 0x88D0 lese 0x88D0 3333 4444 lese 0x22B0 lese 0x11C0 3333 4444 0x11C0 3333 0x22B0 0x88D0 0x88D0 4444 3333 Bei Prozesswechsel muss der Cache ungültig erklärt werden. Speicher 4444 Prozess P1 Prozess P2 Seite Kachel Seite Kachel 0x88D. 0x11C. 0x88D. 0x22B. Bei jedem Prozesswechsel gehen alle Informationen im Cache verloren. Schlecht für große Caches! Speicher P. Marwedel, Univ. Dortmund, Informatik 12, 2006 60 - Universität Dortmund Virtueller Cache bei Seitenfehler Zu einer bestimmten Adresse im Cache gehört vor und nach dem Seitenfehler dieselbe Information. Prozessor Cache lese 0x88D0 lese 0x88D0 3333 3333 MMU lese 0x88D0 3333 Speicher lese 0x11C0 3333 0x11C0 3333 4444 P1 0x88D0 3333 Bei Seitenfehlern keine Aktion im Cache. Vor Aus-/Einlagern Nach Aus-/Einlagern Seite Kachel Seite Kachel 0x88D. 0x11C. 0x77F. 0x11C. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 61 - Universität Dortmund Virtueller Cache bei gemeinsam genutzter Seite (sharing) Annahme: Beide Prozesse benutzen dieselbe virtuelle Adresse für den gemeinsamen Speicherbereich Prozessor Cache MMU lese 0x88D0 lese 0x88D0 3333 3333 P1 P2 lese 0x88D0 lese 0x88D0 3333 3333 Speicher lese 0x11C0 lese 0x11C0 3333 3333 0x11C0 3333 0x88D0 0x88D0 3333 3333 Der zweite Prozess füllt den Cache erneut. Langsam, aber korrekt. Prozess P1 Prozess P2 Seite Kachel Seite Kachel 0x88D. 0x11C. 0x88D. 0x11C. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 62 - Universität Dortmund Virtueller Cache mit PIDs bei Prozesswechsel (context switch) Virtuelle Adresse wird um Prozessnummer (process identifier, PID) erweitert. Zu einer bestimmten Adresse im Cache gehört vor und nach dem Prozesswechsel wieder dieselbe Zelle. Prozessor Cache MMU lese 0x288D0 lese 0x188D0 3333 4444 lese 0x288D0 lese 0x188D0 3333 4444 P1 P2 Speicher lese 0x22B0 lese 0x11C0 3333 4444 0x11C0 3333 0x22B0 0x188D0 3333 0x288D0 4444 4444 Bei Prozesswechsel keine Aktion im Cache erforderlich. Prozess P1 Prozess P2 Seite Kachel Seite Kachel Set associative mapping Eintrag für P1 würde erhalten. Gut für große Caches! 0x88D. 0x11C. 0x88D. 0x22B. TLBs in der MMU könnten PIDs nutzen. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 63 - Universität Dortmund Virtueller Cache mit PIDs bei Seitenfehler Zu einer bestimmten Adresse im Cache gehört vor und nach dem Seitenfehler dieselbe Information. Prozessor Cache lese 0x188D0 lese 0x188D0 3333 3333 MMU lese 0x88D0 3333 Speicher lese 0x11C0 3333 0x11C0 3333 4444 P1 0x188D0 3333 Bei Seitenfehlern keine Aktion im Cache. Vor Aus-/Einlagern Nach Aus-/Einlagern Seite Kachel Seite Kachel 0x88D. 0x11C. 0x77F. 0x11C. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 64 - Universität Dortmund Virtueller Cache mit PIDs bei gemeinsam genutzter Seite (sharing) Prozessor Cache MMU [0x188D0]:=7777 lese 0x288D0 lese 0x188D0 3333 3333 P1 P2 lese 0x288D0 lese 0x188D0 3333 3333 0x288D0 0x 188D0 3333 0x188D0 7777 0x288D0 3333 Einträge für P1 und P2 können beide im Cache existieren (z.B. bei set associative mapping); sie werden nicht abgeglichen mögliche Inkonsistenz bzw. Inkohärenz Speicher lese 0x11C0 lese 0x11C0 3333 3333 0x11C0 3333 Prozess P1 Prozess P2 Seite Kachel Seite Kachel 0x88D. 0x11C. 0x88D. 0x11C. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 65 - Universität Dortmund Cache-Kohärenz Realer Cache Virtueller Cache mit PIDs Virtueller Cache Inhalt nach Prozesswechsel gültig gültig, falls es ausreichend viele PIDs gibt ungültig Inhalt nach Seitenfehler modifizierte Kachel ungültig gültig gültig* Geschwindigkeit langsam schnell schnell Automatische Kohärenz bei Sharing ja nein ja, aber Code muss neu geladen werden. primäre Anwendung große Caches kleine Caches; Befehlscaches, falls dynamisches Überschreiben von Befehlen verboten ist. * Potenzielle Schwierigkeiten, wenn Cacheinhalte Hauptspeicherinhalte. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher - 66 - Universität Dortmund Systeme mit mehreren Caches Chip P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Speicher Realer L2- Cache, snooping; copy back Realer L1 Datencache, write-through virtueller L1Befehlscache Beispiel: Speicher - 67 - Universität Dortmund Austauschverfahren Überschreiben von Einträgen in TLB, Caches, Kacheln: 1. Random- bzw. Zufallsverfahren Ein zufällig ausgewählter Eintrag wird überschrieben. 2. NRU, not recently used Einteilung von Einträgen in 4 Klassen: 1. Nicht benutzte, nicht modifizierte Einträge 2. Nicht benutzte, modifizierte Seiten Benutzt-Kennzeichnung wird nach einiger Zeit zurückgesetzt. 3. Benutzte, nicht modifizierte Seiten 4. Benutzte, modifizierte Seiten Überschrieben wird ein zufällig ausgewählter Eintrag der niedrigsten Klasse, die nicht-leer ist. 3. LRU=least recently used Überschreiben des Eintrags, der am längsten nicht benutzt wurde. P. Marwedel, Univ. Dortmund, Informatik 12, 2006 Pentium CacheFilm Speicher - 68 -