Aligning execution point of duplicate copies of a user program by
exchanging information about instructions executed. At least some of the
exemplary embodiments may be a method of operating duplicate copies of a
user program in a first and second processor, allowing at least one of
the user programs to execute until retired instruction counter values in
each processor are substantially the same, and then executing a number of
instructions of each user program. Of the instructions executed, at least
some of the instructions are decoded and the inputs of each decoded
instruction determined (the decoding substantially simultaneously with
executing in each processor). The method further may include exchanging
among the processors addresses of decoded instructions and values
indicative of inputs of the decoded instructions, determining that an
execution point of the user program in the first processor lags with
respect to an execution point of the user program in the second processor
using at least the addresses of the decoded instructions, and advancing
the first processor until the execution point within each user program is
substantially aligned.