Gegend der Verweisung

In der Informatik sind Gegend der Verweisung, auch bekannt als der Grundsatz der Gegend, das Phänomen desselben Werts oder verwandter Speicherelemente, die oft zugreifen werden. Es gibt zwei grundlegende Typen der Bezugsgegend. Zeitliche Gegend bezieht sich auf den Wiedergebrauch von spezifischen Daten und/oder Mitteln innerhalb von relativ kleinen Zeitdauern. Raumgegend bezieht sich auf den Gebrauch von Datenelementen innerhalb von relativ nahen Speicherelementen. Folgende Gegend, ein spezieller Fall der Raumgegend, kommt vor, wenn Datenelemente eingeordnet und geradlinig z.B zugegriffen werden, die Elemente in einer eindimensionalen Reihe überquerend.

Gegend ist bloß ein Typ des voraussagbaren Verhaltens, das in Computersystemen vorkommt. Systeme, die starke Gegend der Verweisung ausstellen, sind gute Kandidaten für die Leistungsoptimierung durch den Gebrauch von Techniken wie das geheime Lager und Instruktionsvorabruf-Technologie für das Gedächtnis oder den fortgeschrittenen Zweigpropheten am pipelining von Verarbeitern.

Gegend der Verweisung

Die Gegend der Verweisung, auch bekannt als der Gegend-Grundsatz, sind das Phänomen, dass die Sammlung der Datenpositionen, die in einer kurzen Zeitspanne in einem laufenden Computer häufig Verweise angebracht sind, aus relativ gut voraussagbaren Trauben besteht. Wichtige spezielle Fälle der Gegend sind zeitlich, räumlich, gleich weit entfernt und Zweiggegend.

  • Zeitliche Gegend: Wenn einmal rechtzeitig in einer besonderen Speicherposition Verweise angebracht wird, dann ist es wahrscheinlich, dass in derselben Position wieder in der nahen Zukunft Verweise angebracht wird. Es gibt eine zeitliche Nähe zwischen den angrenzenden Verweisungen auf dieselbe Speicherposition. In diesem Fall ist es üblich, Anstrengungen zu machen, eine Kopie der Verweise angebrachten Daten in der speziellen Speicherlagerung zu versorgen, auf die schneller zugegriffen werden kann. Zeitliche Gegend ist ein ganz besonderer Fall der Raumgegend nämlich, wenn die zukünftige Position zum Standort identisch ist.
  • Raumgegend: Wenn in einer besonderen Speicherposition in einer bestimmten Zeit Verweise angebracht wird, dann ist es wahrscheinlich, dass in nahe gelegenen Speicherpositionen in der nahen Zukunft Verweise angebracht wird. In diesem Fall ist es üblich zu versuchen, die Größe und Gestalt des Gebiets um die aktuelle Verweisung zu erraten, auf die es lohnend ist, schnelleren Zugang vorzubereiten.
  • Gleich weit entfernte Gegend: Es ist zwischen der Raumgegend und der Zweiggegend auf halbem Weg. Denken Sie eine Schleife, die auf Positionen in einem gleich weit entfernten Muster zugreift, d. h. der Pfad im raumzeitlichen Koordinatenraum ist eine punktierte Linie. In diesem Fall kann eine einfache geradlinige Funktion voraussagen, auf welche Position in der nahen Zukunft zugegriffen wird.
  • Zweiggegend: Wenn es nur wenige Betrag von möglichen Alternativen für den zukünftigen Teil des Pfads im raumzeitlichen Koordinatenraum gibt. Das ist der Fall, wenn eine Instruktionsschleife eine einfache Struktur hat, oder das mögliche Ergebnis eines kleinen Systems von bedingten sich verzweigenden Instruktionen auf einen kleinen Satz von Möglichkeiten eingeschränkt wird. Zweiggegend ist normalerweise nicht eine Raumgegend, da die wenigen Möglichkeiten weit weg von einander gelegen werden können.

Um Vorteil der sehr oft vorkommenden zeitlichen und räumlichen Art der Gegend zu machen, sind die meisten Informationslagerungssysteme hierarchisch; sieh unten. Die gleich weit entfernte Gegend wird gewöhnlich durch die verschiedenen nichttrivialen Zunahme-Instruktionen der Verarbeiter unterstützt. Für den Fall der Zweiggegend haben die zeitgenössischen Verarbeiter hoch entwickelte Zweigpropheten, und auf der Basis dieser Vorhersage versucht der Speicherbetriebsleiter des Verarbeiters, die Daten der plausiblen Alternativen zu sammeln und zu vorbearbeiten.

Gründe für die Gegend

Es gibt mehrere Gründe für die Gegend. Diese Gründe sind entweder Absichten zu erreichen oder Verhältnisse, um abhängig vom Aspekt zu akzeptieren. Die Gründe sind unten nicht zusammenhanglos; tatsächlich geht die Liste unten vom allgemeinsten Fall bis spezielle Fälle.

  • Voraussagbarkeit: Tatsächlich ist Gegend bloß ein Typ des voraussagbaren Verhaltens in Computersystemen. Glücklicherweise sind viele der praktischen Probleme entscheidbar, und folglich kann sich das entsprechende Programm wie vorherzusehen war benehmen, wenn es gut geschrieben wird.
  • Struktur des Programms: Gegend kommt häufig wegen des Weges vor, auf den Computerprogramme geschaffen werden, um entscheidbare Probleme zu behandeln. Allgemein, zusammenhängende Daten wird in nahe gelegenen Positionen in der Lagerung versorgt. Ein allgemeines Muster in der Computerwissenschaft schließt die Verarbeitung von mehreren Sachen einer nach dem anderen ein. Das bedeutet, dass, wenn viel Verarbeitung getan wird, auf den einzelnen Artikel mehr zugegriffen wird als einmal, so zu zeitlicher Gegend der Verweisung führend. Außerdem deutet das Bewegen zum folgenden Artikel an, dass der folgende Artikel, folglich Raumgegend der Verweisung gelesen wird, da Speicherpositionen normalerweise in Gruppen gelesen werden.
  • Geradlinige Datenstrukturen: Gegend kommt häufig vor, weil Code Schleifen enthält, die dazu neigen, in Reihe oder anderen Datenstrukturen durch Indizes Verweise anzubringen. Folgende Gegend, ein spezieller Fall der Raumgegend, kommt vor, wenn relevante Datenelemente eingeordnet und geradlinig zugegriffen werden. Zum Beispiel würde das einfache Traversal von Elementen in einer eindimensionalen Reihe, von der Grundadresse bis das höchste Element die folgende Gegend der Reihe im Gedächtnis ausnutzen. Die allgemeinere gleich weit entfernte Gegend kommt vor, wenn das geradlinige Traversal über ein längeres Gebiet von angrenzenden Datenstrukturen ist, die identische Struktur und Größe, und zusätzlich dazu, nicht haben, sind die ganzen Strukturen im Zugang, aber nur dem gegenseitig entsprechenden dieselben Elemente der Strukturen. Das ist der Fall, wenn eine Matrix als eine folgende Matrix von Reihen vertreten wird und die Voraussetzung auf eine Einzelspalte der Matrix zugreifen soll.

Gebrauch der Gegend im Allgemeinen

Wenn den größten Teil der Zeit der wesentliche Teil der Bezugsanhäufung in Trauben, und wenn die Gestalt dieses Systems von Trauben gut vorausgesagt werden kann, dann kann es für die Geschwindigkeitsoptimierung verwendet werden. Es gibt mehrere Weisen, Vorteil der Gegend zu machen. Die allgemeinen Techniken für die Optimierung sind:

  • die Gegend von Verweisungen zu vergrößern. Das wird gewöhnlich auf der Softwareseite erreicht.
  • die Gegend von Verweisungen auszunutzen. Das wird gewöhnlich auf der Hardware-Seite erreicht. Die zeitliche und räumliche Gegend kann durch die hierarchische Lagerungshardware kapitalisiert werden. Die gleich weit entfernte Gegend kann durch die passend spezialisierten Instruktionen der Verarbeiter verwendet werden, diese Möglichkeit ist nicht nur die Verantwortung der Hardware, aber die Software ebenso, ob seine Struktur passend ist, für ein binäres Programm zu kompilieren, das die fraglichen Spezialinstruktionen nennt. Die Zweiggegend ist eine mehr wohl durchdachte Möglichkeit, folglich ist mehr sich entwickelnde Anstrengung erforderlich, aber es gibt viel größere Reserve für die zukünftige Erforschung in dieser Art der Gegend als in allen restlichen.

Gebrauch der räumlichen und zeitlichen Gegend: hierarchisches Gedächtnis

Hierarchisches Gedächtnis ist eine Hardware-Optimierung, die die Vorteile der räumlichen und zeitlichen Gegend nimmt und auf mehreren Niveaus der Speicherhierarchie verwendet werden kann. Paginierung zieht offensichtlich aus zeitlicher und räumlicher Gegend einen Nutzen. Ein geheimes Lager ist ein einfaches Beispiel, zeitliche Gegend auszunutzen, weil es ein besonders bestimmter schnellerer, aber kleinerer Speicherbereich, allgemein verwendet ist, um kürzlich Verweise angebrachte Daten und Daten in der Nähe von kürzlich Verweise angebrachten Daten zu behalten, die zu potenziellen Leistungszunahmen führen können. Daten im geheimen Lager entsprechen Daten nicht notwendigerweise, der im Hauptgedächtnis räumlich nah ist; jedoch werden Datenelemente ins geheime Lager eine Linie des geheimen Lagers auf einmal gebracht. Das bedeutet, dass Raumgegend wieder wichtig ist: Wenn in einem Element Verweise angebracht wird, werden einige benachbarte Elemente auch ins geheime Lager gebracht. Schließlich spielt zeitliche Gegend eine Rolle auf dem Tiefststand, da Ergebnisse, in denen sehr nah zusammen Verweise angebracht wird, in den Maschinenregistern behalten werden können. Programmiersprachen wie C erlauben dem Programmierer vorzuschlagen, dass bestimmte Variablen in Registern behalten werden.

Datengegend ist eine typische Speicherbezugseigenschaft von regelmäßigen Programmen (obwohl viele unregelmäßige Speicherzugriffsmuster bestehen). Es macht das hierarchische Speicherlay-Out gewinnbringend. In Computern wird Gedächtnis in eine Hierarchie zerteilt, um Datenzugänge zu beschleunigen. Die niedrigeren Ebenen der Speicherhierarchie neigen dazu, langsamer, aber größer zu sein. So wird ein Programm größere Leistung erreichen, wenn es Gedächtnis verwendet, während es in den oberen Niveaus der Speicherhierarchie versteckt wird und vermeidet, andere Daten in die oberen Niveaus der Hierarchie zu bringen, die Daten versetzen wird, die kurz in der Zukunft verwendet werden. Das ist ein Ideal, und kann manchmal nicht erreicht werden.

Typische Speicherhierarchie (sind Zugriffszeiten und Größen des geheimen Lagers Annäherungen von typischen zum Zweck der Diskussion verwendeten Werten; Ist-Werte und wirkliche Zahlen von Niveaus in der Hierarchie ändern sich):

  • Zentraleinheitsregister (8-32 Register) - unmittelbarer Zugang
  • L1 geheime Zentraleinheitslager (32 KiB zu 128 KiB) - schneller Zugang
  • L2 geheime Zentraleinheitslager (128 KiB zu 12 MiB) - ein bisschen langsamerer Zugang
  • Physisches Hauptgedächtnis (RAM) (256 MiB zu 24 GiB) - verlangsamt Zugang
  • Platte (Dateisystem) (100 GiB zu 2 TiB) - sehr langsamer
  • Entferntes Gedächtnis (wie andere Computer oder das Internet) (praktisch unbegrenzt) - Geschwindigkeit ändert

Moderne Maschinen neigen dazu, Blöcke des niedrigeren Gedächtnisses ins folgende Niveau der Speicherhierarchie zu lesen. Wenn das verwendetes Gedächtnis versetzt, versucht das Betriebssystem vorauszusagen, auf welche Daten kleinste (oder letzt) zugegriffen und es unten die Speicherhierarchie bewegen wird. Vorhersagealgorithmen neigen dazu, einfach zu sein, Hardware-Kompliziertheit zu reduzieren, obwohl sie etwas mehr kompliziert werden.

Räumliches und zeitliches Gegend-Beispiel: Matrixmultiplikation

Ein allgemeines Beispiel ist Matrixmultiplikation:

weil ich in 0.. n

für j in 0.. M

für k in 0.. p

C [ich] [j] = C [ich] [j] + [ich] [k] * B [k] [j];

Wenn, sich mit großem matrices befassend, dieser Algorithmus dazu neigt, Daten ringsherum zu viel herzuschieben. Da Gedächtnis die Hierarchie in Konsekutivadressblöcken auf der C Programmiersprache hochgezogen wird, die es vorteilhaft sein würde, auf mehrere Speicheradressen zu verweisen, die dieselbe Reihe (Raumgegend) teilen. Durch das Halten der Reihennummer befestigt ändert sich das zweite Element schneller. In C und C ++ bedeutet das, dass die Speicheradressen aufeinander mehr folgend verwendet werden. Man kann sehen, dass seitdem die Säulenverweisung sowohl von matrices betrifft, als auch davon sollte in der innersten Schleife wiederholt werden (das wird die Reihe iterators befestigen, und, während jede Säule in der Reihe bewältigt). Das wird das mathematische Ergebnis nicht ändern, aber es verbessert Leistungsfähigkeit. Durch die Schaltung der sich schlingenden Ordnung für und wird die Beschleunigung in großen Matrixmultiplikationen dramatisch. (In diesem Fall, 'groß', bedeutet ungefähr, mehr als 100,000 Elemente in jeder Matrix oder genug addressable solches Gedächtnis, dass der matrices L1 und L2 geheime Lager nicht einfügen wird.)

Zeitliche Gegend kann auch im obengenannten Beispiel durch das Verwenden des genannten Blockierens einer Technik verbessert werden. Die größere Matrix kann in gleichmäßig großen sub-matrices geteilt werden, so dass in den kleineren Blöcken (multipliziert) mehrere Male während im Gedächtnis Verweise angebracht werden kann.

für (ii = 0; ii


Die Atmen-Methode / Die grüne Meile (Roman)
Impressum & Datenschutz