Taming Data Caches for Predictable Execution on GPU-based SoCs