13.07.2015 Aufrufe

06 Speicher (VL15).pdf

06 Speicher (VL15).pdf

06 Speicher (VL15).pdf

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Entwicklungen der letzten JahreOrganisation des <strong>Speicher</strong>s in Zeilen und Spalten.Vorhalten einer ganzen Zeile in einem schnelleren RAM‐internen SRAM.SDRAM (Synchronous DRAM) – Eleminieren Zeit zur CPU‐RAM‐Synchronisation durcheigene Clock.DDR (Double‐Data‐Rate) – Verdopplung des Datentransfers durch Verwendung sowohlsteigender als auch fallendder Flanke eines Clock‐Zyklus.Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 30


Verbessern der Cache‐PerformanceSS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 31


Verbesserte Cache StrategienIm Folgenden betrachten wir eine Verbesserung von Direct‐Mapped‐Caching.Zur Darstellung der Verbesserung verwenden wir folgendevereinfachte Cache‐Darstellung:<strong>Speicher</strong>‐Blöcke Tag Data0 : ...1 : ...2 : .....8 : ...9 : ...10 : ....01234567SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 32


Fully‐Associative‐Cache<strong>Speicher</strong>‐BlöckeTag Data0 : ...01 : ...12 : ...2.3.8 : ...49 : ...510 : ... 6p.7Beobachtung: bei Direct‐Mapped‐Cache kann ein <strong>Speicher</strong>block nur aneiner Stelle gespeichert werden.Konsequenz: wechselhafter Zugriff aufzwei <strong>Speicher</strong>blöcke die auf die selbeStelle gemappt werden, führtpermanent zu Cache‐Misses.Praktisch wäre doch folgender Cache:Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag DataEin Eintrag kann überall stehen.Nachteil: Durchsuchen des Cache dauert länger und mehrHardware‐Aufwand! Wie wäre es mit einem Kompromiss: ...SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 33


(N‐Wege)‐Set‐Associative‐CacheTag Data01234567Direct‐Mapped<strong>Speicher</strong>‐Blöcke0 : ...1 : ...2 : .....8 : ...9 : ...10 : ....Set Tag Data Tag Data0123Two‐Way‐Set‐AssociativeSet Tag Data Tag Data Tag Data Tag Data01Four‐Way‐Set‐AssociativeTag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag DataFully‐AssociativeSS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 34


ZwischenbilanzFinden der Cache‐Teile c des <strong>Speicher</strong>‐Blocks n in einem Direct‐Mapped‐Cache der Größe k?(Vergleiche anschließend n mit dem in Zeile c gespeicherten Tag)Finden der Set s des <strong>Speicher</strong>‐Blocks n in einem N‐Way‐Set‐Associative‐Cache mit k Sets?(Durchlaufe dann die Set s und suche nach einem Tag der nentspricht)SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 35


Eine Frage ist noch zu klärenAnnahme die Set eines N‐Way‐Set‐Associative‐Cache ist voll (bzw.der Fully‐Associative‐Cache ist voll). Wo kann ein neuer<strong>Speicher</strong>block abgelegt werden?Tag Dt Data44 ...???Tag Data Tag Data Tag Data Tag Data24 ... 66 ... 20 ... 16 ...Häufig verwendete Strategie: Least‐Recently‐Used (LRU)Ersetze den Block, auf den schon am längsten nicht zugegriffenwurde.SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 36


Mehr Wege resultieren in weniger MissesBeispiel: betrachte Cache‐Varianten mit vier <strong>Speicher</strong>blöckenTagData01 Set Tag Data Tag Data2301Tag Data Tag Data Tag Data Tag DataDirect‐Mapped Set‐Associative Fully‐AssociativeWie viele Cache‐Misses erzeugt die folgende Sequenz von<strong>Speicher</strong>blockzugriffen?0 , 8 , 0 , 6 , 8SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 37


Mehr Wege resultieren in weniger MissesBeispiel: Direct‐Mapped012TagDataVorüberlegung: Auf welchen Cache‐Blockwerden die Block‐Adressen gemapped?Block‐Adresse3 8<strong>06</strong>Cache‐Block<strong>Speicher</strong>blockzugriffe: 0 , 8 , 0 , 6 , 8 (<strong>Speicher</strong>blockinhalt (p = M[i]) [])Zugriff08<strong>06</strong>8Hit oderMissInhalt der Cache‐Blöcke nach der Referenz0 1 2 3SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 38


Mehr Wege resultieren in weniger MissesBeispiel: Set‐AssociativeSet Tag Data Tag Data01Vorüberlegung: In welche Set werden dieBlock‐Adressen gemapped?Block‐Adresse<strong>06</strong>8Cache‐Set<strong>Speicher</strong>blockzugriffe: 0 , 8 , 0 , 6 , 8 (<strong>Speicher</strong>blockinhalt (p = M[i]) [])Zugriff08<strong>06</strong>8Hit oderMissInhalt der Cache‐Blöcke nach der ReferenzSet 0 Set 0 Set 1 Set1SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 39


Mehr Wege resultieren in weniger MissesBeispiel: Fully‐AssociativeTag Data Tag Data Tag Data Tag Data<strong>Speicher</strong>blockzugriffe: 0 , 8 , 0 , 6 , 8 (<strong>Speicher</strong>blockinhalt (p = M[i]) [])Zugriff08<strong>06</strong>8Hit oderMissInhalt der Cache‐Blöcke nach der ReferenzBlock 0 Block 1 Block 2 Block 3SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 40


Wie Aufwendig sind mehr Wege?Offset2 BitsBildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 41


Wie viele Wege sind sinnvoll?Feste Zahl kann hier nicht genannt werden. Tradeoff:Zeit/Hardware‐Aufwand versus Miss‐Raten.Beobachtung:(64KB Cache, 16‐Word‐Blöcke)Miss‐Raten lassen sich in dem Beispiel mit mehr Assoziativität nichtbesonders weiter reduzieren. Zeit/Hardware‐Aufwand durch mehrAssoziativität würde sich hier nicht weiter lohnen.Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 42


Multi‐Level‐CachesCPUFirst‐Level‐CacheSecond‐Level‐CacheOptimiert auf geringeHit‐Time (und damitrecht klein)Optimiert auf geringeMiss‐Ratio (also mehrund größere Blöcke unddamit höhere Hit‐Time)<strong>Speicher</strong>SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 43


Virtueller <strong>Speicher</strong>SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 44


Die IdeeVi irtuelle Ad dressenProzess 1<strong>Speicher</strong>block 0<strong>Speicher</strong>block 1<strong>Speicher</strong>block 2<strong>Speicher</strong>block 3<strong>Speicher</strong>block 4<strong>Speicher</strong>block 5<strong>Speicher</strong>block 6<strong>Speicher</strong>block 7...Address‐Translation<strong>Speicher</strong>block 0<strong>Speicher</strong>block 1<strong>Speicher</strong>block 2<strong>Speicher</strong>block 3<strong>Speicher</strong>block 4<strong>Speicher</strong>block 5...<strong>Speicher</strong>block mPhysikalischer h <strong>Speicher</strong>Address‐TranslationProzess 2<strong>Speicher</strong>block 0<strong>Speicher</strong>block 1<strong>Speicher</strong>block 2<strong>Speicher</strong>block 3<strong>Speicher</strong>block 4<strong>Speicher</strong>block 5<strong>Speicher</strong>block 6<strong>Speicher</strong>block 7...Virtuelle Adresse en<strong>Speicher</strong>block nVirtueller <strong>Speicher</strong>Sekundärer <strong>Speicher</strong>(Festplatte oder SSD)<strong>Speicher</strong>block nVirtueller <strong>Speicher</strong>SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 45


Abbilden von virtuellen auf physikalische AdressenVirtuelle Adresse31 30 29 28 27 ...................... 15 14 13 12 11 10 9 8 .......... 3 2 1 0Virtuelle SeitennummerSeiten‐OffsetTranslationPhysikalische Adresse29 28 27 ...................... 15 14 13 12 11 10 9 8 .......... 3 2 1 0Physikalische SeitennummerSeiten‐OffsetQuiz: Größe x des virtuellen Adressraumes, Größe y des physikalischen Adressraumes undGröße z der <strong>Speicher</strong>blöcke?SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 46


Address‐Translation im DetailBildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 47


Page‐FaultsPage‐Fault: die Page muss in eine freie Page im <strong>Speicher</strong> geladenwerden. Was, wenn keine Page mehr frei ist?Andere Page im <strong>Speicher</strong> muss ausgelagert werden. MöglicheErsetzungsstrategie: LRU (siehe voriges Thema Caching).Woher weis man eigentlich, welche Page schon lange nicht mehradressiert wurde?Manche Prozessoren können die Page‐Table mit einemReference/Use‐Bit taggen. Den Rest muss das Betriebssystemübernehmen (mehr dazu in der Vorlesung Betriebssysteme)SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 48


Wie groß ist die Page‐Table?Im vorigen (typischen) Beispiel verwenden wir 20 Bits zumindizieren der Page‐Table. Typischerweise spendiert man 32 Bits proTbll Tabellen‐Zeile Zil (im Vorigen Bi Beispiel ilbrauchten wir mindestens 18Bits). Damit benötigen wir insgesamt:Anzahl Page‐Table‐Einträge:Größe der Page‐Table:Wir benötigen so eine Page‐Table Tbl pro Prozess!Noch gravierender ist es natürlich für 64‐Bit‐Adressen!Größe der Page‐Table:SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 49


Techniken zur Reduktion der Page‐Table‐GrößePage‐Table‐Größe ist limitiert durch ein spezielles Limit‐Register:Adressen erst mal nur bis maximal dem Inhalt des Limit‐Registerserlaubt. Limit‐Register wird nur bei Bedarf (also überschreiten)erhöht. Sinnvoll, wenn <strong>Speicher</strong> nur in eine Richtung wächst.Page‐Table ist in zwei Segmenten organisiert:Beide Segmente wachsen wie vorhin beschrieben mittels eines Limit‐Register nur bei Bedarf. Ein Segment wird für den Stack verwendetund wächst von oben nach unten. Das andere Segment wird für denHeap verwendet und wächst von unten nach oben. Höchstes Adress‐Bit bestimmt welches der beiden Segmente verwendet wird. (Also:<strong>Speicher</strong> in zwei gleich große Teile unterteilt)SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 50


Techniken zur Reduktion der Page‐Table‐GrößeInvertierte Page‐Tables:Es wird eine Hash‐Funktion auf die virtuelle Adresse angewendet.Die Größe der Page‐Table entspricht der Anzahl Seiten imphysikalischen <strong>Speicher</strong>. Jeder Eintrag speichert die aktuellen High‐Order‐Bits der Adressen zu den die aktuelle Page gehört.Mehrere Level von Page‐Tables:Oberster Level zeigt zunächst auf sehr große Blöcke (auch alsSegmente bezeichnet). Innerhalb eines Segments wird wiederummittels Page‐Table feiner (dann als Pages bezeichnet) unterteilt.Referenzieren einer Page: High‐Order‐Bits bestimmen das Segment(wenn vorhanden); die nächsten Bits dann die richtige Page indiesem Segment. Nachteil dieses Verfahrens: Adress‐Translation istaufwendiger.SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 51


Techniken zur Reduktion der Page‐Table‐GrößeGepagte Page‐Tables:Page‐Table befindet sich selber im virtuellen <strong>Speicher</strong>. Möglicherekursive Page‐Faults müssen durch geeignete Betriebssystem‐Mechanismen verhindert werden. (Keine weiteren Details hier)SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 52


Schreiben von PagesSchreiben einer Page in den Swap‐Space ist sehr teuer (kostetmillionen von CPU‐Zyklen).Write‐Through‐Strategie (siehe Abschnitt über Caching) ist hiersomit nicht sinnvoll. Eine sinnvolle Strategie ist Write‐Back Back, dh d.h. nur,wenn die Seite von einer anderen in den Swap‐Space verdrängtwird, wird diese auch in den Swap‐Space geschrieben.Auf das ist immer noch gleich so teuer, kommt aber seltener vor.Muss man eine verdrängte Seite eigentlich immer zurückschreiben?Nur, wenn diese verändert wurde.CPU muss bei jedem schreibenden Zugriff auf eine Page in der Page‐Table ein Dirty‐Bit setzen.SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 53


Beobachtung für jeden <strong>Speicher</strong>zugriffVirtueller <strong>Speicher</strong> ist aufwendiger als direkter physikalischer Zugriff• Erst nachschlagen der Page im <strong>Speicher</strong>.• Dann Zugriff auf den <strong>Speicher</strong>.Wie kann man das soweit wie möglich beschleunigen?Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 54


Der Translation‐Lookaside‐Buffer (TLB)Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 55


Protection mittels virtuellem <strong>Speicher</strong>Virtueller <strong>Speicher</strong> erlaubt, dass mehrere Prozesse auf denselbenphysikalischen <strong>Speicher</strong> zugreifen.Es ist unter umständen sinnvoll, den <strong>Speicher</strong>bereich vorSchreibzugriff zu schützen.TLB und Page‐Table speichern ein extra RW‐Bit.(1) Wer setzt dieses RW‐Bit? (2) Wie setzt man dieses Bit?Zu (1): Ein Betriebssystem‐Prozess.Zu (2): Einfache Maschineninstruktionen?Problem: Jeder kann dann das Bit setzen.Prozess 1 PageProzess 2SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 56


Betriebsmodi einer CPUHäufig zwei unterschiedliche Betriebsmodi:• Normaler Betriebsmodus• Kernel‐ (oder auch Supervisor)‐ModeCPU erlaubt die Ausführung bestimmter Maschinen‐Instruktionennur im Kernel‐Mode.Page‐Tables werden im physikalischen <strong>Speicher</strong> abgelegt, auf denkein anderer Virtueller Adressraum zeigt.Wie erreicht man den Kernel‐Mode? Es muss verhindert werden,dass jeder die CPU in diesen Modus versetzen kann.Üblicher Weg: System‐Call.Erinnerung: damit kann man eine Betriebssystemfunktion aufrufen.Mit System‐Call wird eine Exception ausgelöst und an eine<strong>Speicher</strong>stelle gesprungen, die nur in Kernel‐Mode zugreifbar ist.SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 57


Was passiert bei einem Page‐Fault noch?Aktueller Prozess kann die Instruktion, die den Page‐Fault ausgelösthat nicht weiter ausgeführt werden.Betriebssystem kann einem anderen Prozess die CPU zur Verfügungstellen.Sobald die Page geladen ist, kann dem ursprünglichen Prozess dieCPU wieder zur Verfügung gestellt werden.Hierzu muss der ursprüngliche Prozesskontext wieder hergestelltwerden; unter anderem natürlich der PC auf die Instruktion gesetztwerden, die den Page‐Fault verursacht hatte.SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 58


Randbemerkung: SegmentierungBisher haben wir feste Blockgrößen betrachtet. Es gibt auch einKonzept mit variablen Blockgrößen: Segmentierung.Adresse besteht aus Segment‐Nummer und Segment‐Offset:tAnfang kann auf einen beliebigen Startpunkt im <strong>Speicher</strong> zeigen.Die physikalische Adresse ergibt sich aus Anfang + Offset.Segmente können beliebig lang sein; benötigt auch „Bounds‐Check“.Bildquelle: http://de.wikipedia.org/wiki/Segmentierung_(<strong>Speicher</strong>verwaltung)SS 2012 Grundlagen der Rechnerarchitektur ‐ <strong>Speicher</strong> 59

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!