1. A processing system for efficiently executing an application program, wherein a control flow graph of the application program is divided by a compiler into a plurality of waves, wherein each wave in the plurality comprises a connected, directed, partially ordered portion of the control flow graph, with a single entrance, the processing system comprising: (a) a plurality of processing elements organized into at least one of: (i) a cluster; and (ii) a domain; (b) each of the plurality of processing elements including: (i) an arithmetic logic unit; and (ii) a component that holds operands used by an instruction until all operands necessary to execute the instruction have been received, said instruction and the operands that were held then being executed by the arithmetic logic unit; and (c) a store buffer configured to: control a sequence in which instructions comprising the application program are executed by the plurality of processing elements, so as to ensure that the instructions are executed in a correct order, the order being controlled in response to annotations applied to memory operations by the compiler, wherein the annotations applied to the memory operations indicate, for each memory operation, (1) a sequence number of the memory operation that indicates the memory operation's position relative to each other memory operation in a wave, (2) a sequence number of a predecessor memory operation and a sequence number of a successor memory operation for any known and uniquely determined predecessor memory operation and any known and uniquely determined successor memory operation of the memory operation, respectively, the sequence number of the predecessor memory operation indicating the predecessor memory operation's position in the wave and the sequence number of the successor memory operation indicating the successor memory operation's position in the wave, (3) a wildcard value for any predecessor or successor memory operation of the memory operation that is unknown or that cannot be uniquely determined.