From 8ebd56901f42b213a94f59541317b995d96ad145 Mon Sep 17 00:00:00 2001 From: Per Thomas Lundal Date: Thu, 3 Apr 2014 22:07:59 +0200 Subject: [PATCH] More DC --- report.tex | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/report.tex b/report.tex index cf880f4..02ad677 100644 --- a/report.tex +++ b/report.tex @@ -47,8 +47,11 @@ \subsection{Delta Correlation Prefetching} Programs such as those that use large arrays benefit greatly from Stride Prefetching, as they usually access memory in constant repeating intervals. By storing a history of deltas instead of only the most recent, Data Correlation Prefetching is able to capture much more complex patterns than pure strides. +The history can then be searched for matches to the most recent deltas. +Each stored delta following the match would then be applied to the last address and prefethed. +It does however demand more storage space, which is proportional to the number of deltas. Fig.~\ref{fig:delta_stream} shows a repeating pattern that can be captured by Delta Correlation but not with Stride Prefetching. -It does however demand more storage space. +In the example, the two most recent deltas matches the first two, enabling a prefetch for address 31 and 40 to be issued. \begin{figure}[!ht] \centering @@ -63,7 +66,7 @@ \subsection{Global History Buffer} One such data structure is the Global History Buffer (GHB) \cite{ghb} which is shown in Fig.~\ref{fig:ghb}. GHB is an $n$-entry First-In, First-Out (FIFO) queue implemented as a circular buffer. It stores the $n$ most recent L1 cache misses in entries that contain the miss address and a link pointer. -The link pointer is used to chain entries together into time-ordered linked lists that holds the significant access patterns. +The link pointer is used to chain entries together into time-ordered linked lists that hold the significant access patterns. An Index Table (IT) is used to keep track of these lists. It maps some key to the most recent element of a linked list. The IT is based on a FIFO queue like GHB, but significantly smaller as each entry has to be evaluated for each cache miss to look up a matching key.