The present invention provides a method and apparatus for using input data
to optimize a computer program. Initially, the computer program is divided
into one or more logical units of code. Next, a CPU simulator is used to
simulate execution of each logical unit using the input data. The output
from the simulation is used to generate a first optimization metric value
and corresponding state information for each logical unit. In one
embodiment, the first optimization metric value and corresponding state
information are stored in a first optimization vector. Using well known
optimization techniques, the instructions within each logical unit are
optimized iteratively until additional optimizations would result in very
small incremental performance improvements. A second simulation is
performed using the same input data except that this time the optimized
logical units are used. This second simulation is used to measure how much
the optimizer has improved the code. The output from the second simulation
is used to generate a second optimization metric value and corresponding
state information. The degree of optimization is determined by determining
the difference between the first optimization metric value and the second
optimization metric value for the sum of the logical units. If the
difference is less than a predetermined threshold value, additional
optimization iterations would provide little code improvement and thus the
optimization is complete. However, if the difference is greater than or
equal to the predetermined threshold value, additional optimizations would
likely improve performance. In the latter case, the present invention
would repeat the optimization process described above.
Die anwesende Erfindung stellt eine Methode und einen Apparat für das Verwenden von von Eingang Daten, um ein Computerprogramm zu optimieren zur Verfügung. Zuerst wird das Computerprogramm in eine oder mehr logischen Maßeinheiten Code geteilt. Zunächst wird ein CPU Simulator benutzt, um Durchführung jeder logischen Maßeinheit mit den Eingang Daten zu simulieren. Der Ausgang von der Simulation wird benutzt, um einen erste Optimierung metrischen Wert und entsprechende Zustandinformationen für jede logische Maßeinheit zu erzeugen. In einer Verkörperung werden der erste Optimierung metrische Wert und entsprechenden die Zustandinformationen in einem ersten Optimierung Vektor gespeichert. Mit weithin bekannten Optimierung Techniken werden die Anweisungen innerhalb jeder logischen Maßeinheit wiederholend optimiert, bis zusätzliche Optimierungen sehr kleine zusätzliche Leistung Verbesserungen ergeben würden. Eine zweite Simulation wird mit den gleichen Eingang Daten durchgeführt, außer daß dieses mal werden die optimierten logischen Maßeinheiten benutzt. Diese zweite Simulation wird verwendet, um zu messen, wieviel der Optimierer den Code verbessert hat. Der Ausgang von der zweiten Simulation wird benutzt, um einen zweite Optimierung metrischen Wert und entsprechende Zustandinformationen zu erzeugen. Der Grad von Optimierung wird festgestellt, indem man den Unterschied zwischen dem erste Optimierung metrischen Wert und dem zweite Optimierung metrischen Wert für die Summe der logischen Maßeinheiten feststellt. Wenn der Unterschied kleiner als ein vorbestimmter Schwellenwert ist, würden zusätzliche Optimierung Wiederholungen wenig Codeverbesserung liefern und folglich ist die Optimierung komplett. Jedoch wenn der Unterschied grösser als oder Gleichgestelltes zum vorbestimmten Schwellenwert ist, würden zusätzliche Optimierungen wahrscheinlich Leistung verbessern. Im letzten Fall würde die anwesende Erfindung den Optimierung Prozeß wiederholen, der oben beschrieben wurde.