In a multithreaded data processing system having a processing element for imperative processing of plural threads of computation, a method for executing load instructions by the processing element to load data from a global memory location of global memory to a local memory location of local memory, the local memory being local to the processing element, the method comprising, for each of said load instructions, the steps of:
- a) generating a request message from the processing element to a memory controller to read the data held at the global memory location, the request message including a thread descriptor identifying a next operation in one of said plural threads of computation to be processed and an identification of the local memory location;
- b) generating a response message to respond to the request message using the memory controller wherein the response message comprises the data from the global memory location, the thread descriptor of the request message, and the identification of the local memory location, such that the response message is generated independent of current activity of the processing element;
- and
- c) from the response message loading the data from the global memory into the local memory location and storing the thread descriptor of the response message in said thread descriptor storage only upon the storing of all data required for processing of the next operation identified by the thread descriptor, such that the storing of the thread descriptors in the thread descriptor storage and resultant imperative processing of the plural threads of computation are independently performed by the processing element.