public Cache(int s, int l, int m, boolean writeThrough,
			boolean writeAround, int cycles) {
		this.s = s;
		this.l = l;
		this.m = m;
		this.c = s / l;
		this.i = (int) (Math.log(c / m) / Math.log(2));
		this.offset = (int) (Math.log(l) / Math.log(2));
		this.t = 16 - (i + offset);
		cache = new HashMap<String, Set>();
		if (i == 0)
			fullyAssociative = true;
		this.writeThrough = writeThrough; // false is write back
		this.writeAround = writeAround; // false is write allocate
		this.cycles = cycles;
	}