[Speicher] Ergänze LFU-Strategie

This commit is contained in:
Andre Meyering 2017-12-04 09:08:07 +01:00
parent ff3b81431d
commit 38fba031e3
Signed by: Andre
GPG key ID: 5A1BBB0FB1D4716B
2 changed files with 37 additions and 2 deletions

View file

@ -559,7 +559,7 @@ Verwaltung der \acsp{CL} als einfach verwaltete Liste, \dash Zeiger auf den Nach
Ständig genutzte Datenstücke werden genauso schnell verdrängt wie Daten, die nur ein einziges Mal gebraucht werden. Anders gesagt: Daten, die lange nicht benötigt wurden, werden auch nicht schneller verdrängt, als Daten, die genauso lange im Cache sind, aber erst kürzlich gebraucht wurden. Ständig genutzte Datenstücke werden genauso schnell verdrängt wie Daten, die nur ein einziges Mal gebraucht werden. Anders gesagt: Daten, die lange nicht benötigt wurden, werden auch nicht schneller verdrängt, als Daten, die genauso lange im Cache sind, aber erst kürzlich gebraucht wurden.
\subsubsection{Least-Recently-Used (LRU)} \subsubsection{Least-Recently-Used (LRU)}
Bei der \acf{LRU}-Strategie wird die \acl{HSS}, auf welche am längsten nicht zugegriffen wurde, verdrängt. Bei der \acf{LRU} Strategie wird die \acl{HSS}, auf welche am längsten nicht zugegriffen wurde, verdrängt.
\textit{Aufwand}: \newline \textit{Aufwand}: \newline
Timestamp mit Update bei jedem Zugriff $\Rightarrow$ Die Suche bei Verdrängung ist zu aufwändig Timestamp mit Update bei jedem Zugriff $\Rightarrow$ Die Suche bei Verdrängung ist zu aufwändig
@ -568,4 +568,38 @@ Timestamp mit Update bei jedem Zugriff $\Rightarrow$ Die Suche bei Verdrängung
Verwaltung als \textit{doppelt} verkettete Liste, \dash Zeiger auf Vorgänger \textit{und} Nachfolger in jeder \acs{CL}. Globalen Zeiger auf ersten und letzten Eintrag. Verwaltung als \textit{doppelt} verkettete Liste, \dash Zeiger auf Vorgänger \textit{und} Nachfolger in jeder \acs{CL}. Globalen Zeiger auf ersten und letzten Eintrag.
\textit{Schlecht unterstützte Zugriffsmuster}: \newline \textit{Schlecht unterstützte Zugriffsmuster}: \newline
Häufigkeit der Zugriffe wird nicht berücksichtigt, \dash vielfach genutzte \aclp{HSS} werden genauso verdrängt wie \acs{HSS} mit nur einem Zugriff) Häufigkeit der Zugriffe wird nicht berücksichtigt, \dash vielfach genutzte \aclp{HSS} werden genauso verdrängt wie \acs{HSS} mit nur einem Zugriff)
\subsubsection{Least-Frequently-Used (LFU)}
Bei der \acf{LFU} Strategie wird die \acl{HSS} verdrängt, welche bisher am seltensten (\enquote{am wenigsten häufig}) verwendet wurde.
\columnratio{0.35}
\begin{paracol}{2}
\textit{Aufwand (für Statusinfo):}
\begin{itemize}[noitemsep]
\item Benutzungszähler
\item Einlagerungszeit
\end{itemize}
\switchcolumn
\medskip
Häufigkeit=$\frac{\text{Zugriffe}}{\text{Zeit}}$
$\Rightarrow$ Bei Verdrängung aufwändige Berechnung und Suche
\end{paracol}
\newpage % Nur für's Layout
\textit{Problem (Zugriffsmuster)}: \newline
Neu eingelagerte Seiten werden schnell wieder verdrängt, wenn sich der Zugriffszähler am Anfang nicht schnell genug erhöht und andere etablierte Seiten eine höhere Häufigkeit aufgrund vieler \enquote{alter} Zugriffe aufweisen.
\textit{Lösungsansatz}: \newline
Zugriffe müssen \enquote{altern}, \dash alte Zugriffe werden weniger stark gewichtet als neue Zugriffe.
\textit{Mögliche Implementierung}: \newline
Mehrere Zugriffszähler in jeder \acs{CL} für die letzten $i$ Zeitscheiben.
Dividieren ist damit überflüssig (alle Zeitscheiben sind gleich lang): Addition der mit $2^j$ gewichteten Zähler als \enquote{Häufigkeit} ($j=i-1$ für jüngste Zeitscheiben, $j=0$ für älteste Zeitscheibe).
\textit{Weiterhin}: \newline
Bei der Verdrängung gibt ein Problem bei der Suche nach der niedrigsten \enquote{Häufigkeit}. \newline
$\Rightarrow$ evtl. Lösung über eine bei Beginn jedes Zeitslots neu aufzubauende verkettete Liste. \newline
\phantom{$\Rightarrow$ }Hier gibt es viel Platz für Optimierungen der \acs{CPU}-Hersteller.

View file

@ -63,6 +63,7 @@
\acro{HSS}{Hauptspeicherseite} \acro{HSS}{Hauptspeicherseite}
\acrodefplural{HSS}[HSS]{Hauptspeicherseiten} \acrodefplural{HSS}[HSS]{Hauptspeicherseiten}
\acro{HW}{Hardware} \acro{HW}{Hardware}
\acro{LFU}{Least-Frequently-Used}
\acro{LRU}{Least-Recently-Used} \acro{LRU}{Least-Recently-Used}
\acro{LW}{Laufwerk} \acro{LW}{Laufwerk}
\acro{PC}{Personal Computer} \acro{PC}{Personal Computer}