1. A method for processing a data request in a caching system, comprising: receiving a data request; selecting from at least one operational mode based on the data request and a predefined selection algorithm; delegating, based on the selected operational mode, the data request to at least one sub memory processing element (sub-MPE) for processing, the delegating comprising virtualizing at least one of the main MPE and the at least one sub-MPE into groups; and updating at least one of the groups based on: proximity, speed, power consumption, type of sub-MPE, and size of sub-MPE in order to meet application demands.