Non-Monopolizable Caches: Low-Complexity Mitigation of Cache Side Channel Attacks