Elastic cooperative caching: an autonomous dynamically adaptive memory hierarchy for chip multiprocessors