public WriteAlgorithm(WriteAlgorithms type) { this.Type = type; switch (type) { case WriteAlgorithms.WriteThroughWithAssignementOnWrite: case WriteAlgorithms.CopyBack: ShouldBringBlockOnWriteFail = true; break; case WriteAlgorithms.WriteThroughWithoutAssignementOnWrite: ShouldBringBlockOnWriteFail = false; break; default: ShouldBringBlockOnWriteFail = true; break; } }
public ProblemOption(UbicationAlgorithm ubicationAlg, WriteAlgorithms writeAlgo) { WriteAlgorithm = writeAlgo; UbicationAlgorithm = ubicationAlg; Ways = null; }
public ProblemOption(UbicationAlgorithm ubicationAlg, WriteAlgorithms writeAlg, int ways) { WriteAlgorithm = writeAlg; UbicationAlgorithm = ubicationAlg; Ways = ways; }
public NWayCache(int size_bytes, int block_size_bytes, int ways, ReplacementAlgorithm al, WriteAlgorithms wrAl) { cacheSize = size_bytes; nWays = ways; nSets = cacheSize / (nWays * block_size_bytes); bitsSet = (int)Math.Log(nSets, 2); bitsOffset = (int)Math.Log(block_size_bytes, 2); bitsTag = 32 - bitsOffset - bitsSet; _sets = new IReplacementAlgorithm <T> [nSets]; for (int i = 0; i < nSets; i++) { _sets[i] = new FIFO <T>(nWays, new WriteAlgorithm(wrAl)); } }