The present invention relates to methods and apparatus for modifying a version of a software program to improve the results obtained when the software program is executed on a processor having far superior processing capabilities than those contemplated when the software program was developed.
The design marketing and sales of software programs for retail and commercial use continues to be an ever-evolving and expanding sector of the economy. Indeed, software developers are constantly seeking to satisfy a seemingly insatiable appetite by consumers for new and improved software applications. Nowhere is this more evident than in the area of computer graphics software, such as for video games, movie animation, and special effects, etc. Indeed, real-time, multimedia, applications are becoming increasingly important, particularly in the video game markets. These applications require extremely fast processing speeds, such as many thousands of megabits of data per second.
With this evolution of ever more complex and sophisticated software programs has been a corresponding evolution in the processing capabilities of the hardware on which such software program are executed. Indeed, incredible advancements have been made in the processing capabilities of microprocessors since the first microprocessor, Intel's 4004 , introduced in 1971, which was a 4 bit processor capable of only adding and subtracting. In 1979, Intel introduced its 8080 microprocessor, which was incorporated into the IBM personal computer. The Intel 8080 microprocessor utilized about 29,000 transistors at a clock speed of 5 MHz, which could execute 0.33 million instructions per second (MIPS). From 1982 through 1989, Intel introduced the 80286, 80386, and 80486 microprocessors. The Intel 80486 microprocessor employed 1.2 million transistors at a clock speed of 25 MHz, which could execute 20 MIPS. From 1993 through 2000, Intel introduced the Pentium series of microprocessors, where the Pentium 4 microprocessor employed 42 million transistors at a clock speed of 1.5 GHz, which could execute about 17,000 MIPS. These data show that the speed and power of the hardware on which software programs are being executed are ever increasing (note that the Intel Pentium 4 runs about 5,000 faster than the Intel 8088 microprocessor). As will be discussed further in this description, newer and more powerful microprocessors are currently being developed that may achieve clock frequencies of about 4 GHz and even higher MIPS levels.
While single processing units are capable of fast processing speeds, they cannot generally match the processing speeds of multi-processor architectures. Indeed, in multi-processor systems, a plurality of processors can operate in parallel (or at least in concert) to achieve desired processing results. The types of computers and computing devices that may employ multi-processing techniques are extensive. In addition to personal computers (PCs) and servers, these computing devices include cellular telephones, mobile computers, personal digital assistants (PDAs), set top boxes, digital televisions and many others.
Reference is now made to FIG. 1, which illustrates an evolution of software programs and a corresponding evolution of the hardware used to execute same. The hardware system 102 at a particular point in time is not as powerful as other hardware systems, such as hardware system 106 or hardware system 112. Even these hardware systems are not as powerful as the hardware system 118, which is the subject of the instant invention. Moreover, the software programs 104 (illustrated as being stored on an optical disk) were designed to be executed on the then-existing hardware system 102. For example, the software programs 104 may have been written with the understanding that they would be executed on a processing unit having the processing characteristics afforded by, for example, the Intel 80286 microprocessor. The software programs 110, which were designed and purchased after the software programs 104, may have been designed to be executed on a processing unit having the processing characteristics afforded by, for example, the Intel 80486 microprocessor. Alternatively, the software programs 110 may have designed and developed to be executed on a processing unit having the processing capabilities of a PlayStation game console, manufactured by the assignee of the present application, which was introduced in 1994. Further, the software programs 116 may have been designed and developed to be executed on a processing unit having processing capabilities afforded by Intel's Pentium 3 microprocessor. Alternatively, the software programs 116 may have been designed and developed to be executed on a PlayStation 2 console, manufactured by the assignee of the present application, which among other things, was designed to execute video game software programs.
The conventional wisdom is that any software programs developed to be executed on a given processing unit having certain processing characteristics will execute on another processing unit having greater processing characteristics. While this may be true in many circumstances, it is not always the case, particularly when the software program is designed to provide a multi-media experience to the user on a display, such as would be the case in a video game software program. Indeed, running a software program designed for a processing unit of moderate sophistication on a processing unit having substantially higher processing capabilities may result in excessively fast moving objects of a moving image, loss of synchronization between audio and video components of a moving image, etc. In general, these problems manifest when interdependencies between program threads (the unit of parallel processing) are not guaranteed.
Unless features have been designed into a given processing unit that permit execution of software programs specifically designed therefor and software programs that were designed to run on less sophisticated processing units, a user would have to maintain two separate processing units to support his or her full complement of software programs. An exception to this is the PlayStation console and PlayStation 2 console. Indeed, the PlayStation 2 console employs more than one microprocessor to accommodate software programs specifically written for the PlayStation console and software programs specifically written for the PlayStation 2 console. More particularly, the PlayStation 2 console incorporates the microprocessor found in the PlayStation console in order to execute the PlayStation video game software programs. The other microprocessor within the PlayStation 2 console is used to execute the video game software programs designed specifically for the PlayStation 2 console.
While designing future processing units with multiple microprocessors of differing processing capabilities may address some of the problems associated with supporting a complement of software programs, it would be desirable to achieve a more elegant solution, preferably one that is much more versatile, efficient, and cost effective.