Drowsy instruction caches: leakage power reduction using dynamic voltage scaling and cache sub-bank prediction