Table of Contents
4.3. Optimal Caching: A More Complex Exchange Argument
The Problem
- caching: The process of storing a small amount of data in a fast memory to reduce the time spent interacting with a slow memory.
- cache maintenance algorithms determine what to keep in the cache and what to delete from it when new data is brought in.
- The setting:
- Let U = set of n pieces of data stored in main memory.
- We have a faster memory, the cache, that can hold k < n pieces of data at once
- The cache initially holds some set of k items.
- The sequence of data we must process –> D = d1,d2,…,dm which is drawn from U
- When processing D, at each time we must decide which k items to keep in the cache
- When di is presented, we can quickly access it from the cache or bring it from memory to cache.
- cache miss: if the cache is full,we must remove some other items from the cache to make room for d1.
- At any specific sequence of memory references, a cache maintenance algorithm determines an eviction schedule:Specifying which items should be removed from the cache at which points in the sequence, and this determines the contents of the cache and the number of misses over time.
- So the goal of the algorithm is to produce an eviction schedule that incurs as few cache misses as possible.
Designing the Algorithm
Algorithm
When di needs to be brought into the cacheevict the item that is needed the farthest into the future
- This algorithm is called the Farthest-in-Future Algorithm
Analysis
- A reduced schedule: With this schedule, a item d is brought into the cache in a step i only if a request to d has been made during the step i and d is not already in the cache. This schedule does the minimal work necessary in a given step.
- For a schedule that is not reduced, an item d can be brought into the cache even if there was no request fro d in step i
- Let S be a schedule that is not reduced:
- For a reduction of S(let's call it S), when S brings in an item d that has not been requested in step i, S pretends to bring it into the cache but doesn't actually do it, instead, it leaves it in the main memory.
- S brings d into cache only in the next step j after which d is requested * So, the cache miss incurred by S in step j can be charged to the earlier cache operation performed by S in step i, when it brought it in d.
- Thus S** is a reduced schedule that brings in at most as many items as the schedule S
- Proving optimality of Farther-in-Future:
- Let SFF be a schedule produce by the Farthest-in-Future algorithm
- Let S* be the schedule that incurs the minimum possible number of misses
- –>Let S be a reduced schedule that makes the same eviction decisions as SFF through the first j items in the sequence, for a number j
- –>Then there's a reduced schedule S' that makes the same eviction decisions as SFF through the first j+1 items, and incurs no more misses than S does.
- SFF incurs no more misses than any other schedule S* and hence is optimal
–>–>–>Proof: Course book, page 135-36
- The caching algorithm can be extended to deal with eviction decisions without knowing the future
- Caching algorithms under this requirement are variants of the Least-Recently-Used(LRU) Principle which proposes eviction on an item from the cache that was referenced longest ago.
I give this section a 7/10.