Redesigning Caches to Resist Side Channel Attacks