Accommodating workload diversity in chip multiprocessors