1. A 3D graphics processing system comprising: a fragment shading unit configured to perform shading operations, the fragment shading unit being further configured to run multiple shaders, each shader being run as a separate thread for a shading operation; a first on chip cache internal to the fragment shading unit and configured to store cached instruction used by the fragment shading unit; and a second on chip cache internal to the fragment shading unit and configured to store global data used by the fragment shading unit, wherein the global data is used by multiple shaders; wherein the fragment shading unit is further configured to switch operations between the multiple threads upon the occurrence of a cache miss.