Energy Reduction Techniques for Caches and Multiprocessors by