1. A computer implemented method for performing a generic data access operation for a group of threads executing on a processing unit, the method comprising: receiving a memory access request from a thread within the group of threads; determining that a portion of data associated with the memory access request is not present in a cache memory unit; retrieving the portion of data associated with the memory access request from global memory; storing the portion of data within the cache memory unit during execution of the threads within the thread group; and flushing the portion of data from the cache memory unit upon determining that each thread within the group of threads has completed executing on the processing unit.