A data dependence speculative execution method for executing parallel processing in units of threads by executing memory operation instructions in out-of-order execution by means of speculative execution with regard to dependence relationships between the memory operation instructions, comprising the steps of:
- a thread assignment step for assigning the threads to two or more processors so that the threads will be executed by the processors in parallel;
- an address conversion step for converting a target address of a memory operation instruction included in the threads into a corresponding entry number allowing the existence of aliases;
- a speculative execution result history storage step for storing history information concerning success/failure results of speculative execution of memory operation instructions of the past in history storage means, with regard to each of a plurality of entry numbers;
- a speculative execution success/failure prediction step for predicting whether speculative execution of particular memory operation instruction that is going to be carried out by a processor will succeed or fail by referring to an entry of the history storage means corresponding to an entry number that is obtained by the address conversion step for a target address of the particular memory operation instruction;
- a speculative execution step for letting the processor execute the particular memory operation instruction in out-of-order execution by means of speculative execution if the prediction by the speculative execution success/failure prediction step is success;
- a non-speculative execution step for letting the processor execute the particular memory operation instruction in in-order execution by means of non-speculative execution if the prediction by the speculative execution success/failure prediction step is failure;
- a speculative execution success/failure judgment step for judging whether speculative execution of the memory operation instructions has succeeded or failed by detecting the dependence relationships between the memory operation instructions;
- and
- a speculative execution result history update step for updating the history information stored in the history storage means taking the judgment by the speculative execution success/failure judgment step into account.