Molecular Caches: A caching structure for dynamic creation of application-specific Heterogeneous cache regions