Wikipedia · einfach zusammengefasst · Stand
Lokalitätseigenschaft
So können beispielsweise Speicherbereiche, auf die erst kürzlich zugegriffen wurde, in einem Cache-Speicher verwaltet werden. Der Cache ist ein relativ …
Inhalt4 Abschnitte
Bedeutung der Lokalitätseigenschaft
Die Lokalitätseigenschaft, auch Lokalitätsprinzip oder Lokalitätseffekt (englisch locality of reference), ist eine Eigenschaft typischer Computerprogramme. Sie besagt, dass Daten, die gerade benutzt werden, mit sehr hoher Wahrscheinlichkeit auch in naher Zukunft wieder benötigt werden.
Programme und Prozesse verhalten sich dabei relativ stationär in Zeit und Raum. Das lässt sich nutzen, um die Datenverarbeitungsleistung zu verbessern. Man unterscheidet zeitliche und räumliche Lokalität.
Zeitliche Lokalität und Cache
Zeitliche Lokalität bedeutet: Auf Adressbereiche, auf die zugegriffen wurde, wird wahrscheinlich bald erneut zugegriffen. Im Ablauf eines Programms wird daher relativ häufig dieselbe Speicheradresse verwendet.
Diese Eigenschaft kann auf allen Ebenen der Speicherhierarchie genutzt werden, damit wichtige Speicherbereiche schnell verfügbar bleiben. Beispielsweise verwaltet ein Cache-Speicher Bereiche, auf die erst kürzlich zugegriffen wurde. Ein Cache ist ein relativ kleiner Hochgeschwindigkeitsspeicher, der häufig benötigte Daten zwischen CPU und Arbeitsspeicher puffert.
Räumliche Lokalität
Räumliche Lokalität bedeutet: Nach einem Zugriff auf einen Adressbereich erfolgt der nächste Zugriff mit hoher Wahrscheinlichkeit auf eine Adresse in unmittelbarer Nachbarschaft. Im Programmablauf werden also wiederholt Speicheradressen angesprochen, die nahe beieinander liegen.
Daraus folgt: Bei einem Speicherzugriff können zugleich benachbarte Adressbereiche in die nächste Stufe der Speicherhierarchie gebracht werden.
Ursachen in Schleifen
Peter J. Denning stellte bereits 1968 fest, dass sich der Arbeitsbereich eines Prozesses (englisch working set) im Verlauf eines Programms nur sehr langsam verändert.
Eine wichtige Ursache der Lokalitätseigenschaft ist das häufige Auftreten von Schleifen in imperativen Programmiersprachen. In einer Schleife werden dieselben Befehlsadressen immer wieder benutzt; je kürzer der Schleifen-Code ist, desto häufiger geschieht das. Die Befehle ändern sich nicht, nur die Adressen der benötigten Daten, also der Operanden.
Beim Abarbeiten von Schleifen wird meist indizierte Adressierung verwendet. Die damit aufgerufenen Daten oder Operanden liegen üblicherweise in aufeinander folgenden Speicherplätzen. Dies erklärt insbesondere die räumliche Lokalität.