// ICS 331 Assignment 4 Solution
// by David N. Chin
//
// N-way set-associative cache with FIFO cache eviction policy,
// write-back, and one word block size

public class FifoCache extends Cache
{
  // eviction method bookeeping
  private int queueNexts[];
  
  public FifoCache( int cacheSize, int associativity )
  {
    super( cacheSize, associativity );
    queueNexts = new int[slots];
  }

  public void put ( int tag, int slotNum, boolean write ) {
    int queueNext = queueNexts[slotNum];
    store( slotNum, queueNext, tag, write );
    
    queueNexts[slotNum] = (queueNext + 1) % associativity;
  }

} // class FifoCache
