Patent ID: 7684971

Claim:
A method of improving the performance of a software simulator for use in simulating a digital computer system by providing a technique for “fast forwarding” through the execution of instructions or code fragments to a certain time T, comprising: running the software simulator on a processor to simulate a state of the digital computer system and provide simulation results accessible by a user, including: determining, with the processor, a frequency of execution of each instruction or code fragment of a set of instructions or code fragments of a simulation session; comparing, with the processor, the determined frequency of execution of each instruction or code fragment to a predetermined threshold, and if the frequency of execution exceeds the threshold for that instruction or code fragment, collecting state changes relating to that instruction or code fragment and marking that instruction or code fragment; identifying, with the processor, marked instructions or code fragments as potential candidates for “fast forwarding” to the certain time T by analyzing the corresponding collected state changes related to those marked instructions or code fragments and determining that the execution of those marked instructions or code fragments is cyclic; and generating, with the processor, a function g to be applied next and subsequent times the identified instructions or code fragments are executed in which application of function g at a certain time t provides accelerated advancement through the code fragments and produces the same result when compared to applying a next state function repeatedly until time T is reached, wherein the function g is generated by computing state changes from a state s(t) from execution of a code fragment and events that will occur in future en(tn), where en represents an event occurring at time tn and n is an integer index such that a time t2 is greater than a time t1.