[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.
\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
Timestamp mit Update bei jedem Zugriff $\Rightarrow$ Die Suche bei Verdrängung ist zu aufwändig
@ -569,3 +569,37 @@ Verwaltung als \textit{doppelt} verkettete Liste, \dash Zeiger auf Vorgänger \t
\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)
\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}
\acrodefplural{HSS}[HSS]{Hauptspeicherseiten}
\acro{HW}{Hardware}
\acro{LFU}{Least-Frequently-Used}
\acro{LRU}{Least-Recently-Used}
\acro{LW}{Laufwerk}
\acro{PC}{Personal Computer}