The goal of sequential detection is to automatically uncover a sequential access pattern. Such a pattern is not obvious to discover because of possible interleaving between various sequential streams and pauses between consecutive requests by a single stream, namely, the think time between requests.
The basic idea is to maintain a sequential detect counter with
every track, and to use a parameter seqThreshold that can be
set differently depending upon whether aggressive or conservative
sequential detection is desired. The counter is updated as
follows. On a hit or miss to track whose counter is
uninitialized, if track
is present in the cache, then set
the counter of track
to minimum of seqThreshold or one
plus the counter value for track
. If track
is not
present in the cache, set the counter for track
to
. Once
initialized, the counter value for a track is not changed unless
it reenters the cache after an eviction. When the counter equals
seqThreshold, the track is termed as a sequential
track. If a track gets designated as a sequential track on a
miss, then we say that a sequential miss has occurred.