Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1995-06-07
2001-10-30
Chaki, Kakali (Department: 2122)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
Reexamination Certificate
active
06311324
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention is related to computer systems and more specifically to a program development tool for automatically analyzing programming code and providing a programmer with advice with respect to modifications that could improve program performance.
2. Prior Art
The IBM personal computer (PC) architecture has become a de-facto standard for personal computers over the past decade. The main hardware part of the computer is a central processing unit (CPU) which is an INTEL Pentium™ brand microprocessor, random access memory (RAM), and microprocessor support chips. The IBM PC architecture uses a MICROSOFT brand disc operating system (DOS) as the software program that controls the overall operation of the computer.
Application programs, programs that perform a particular task such as word processing, are developed by many different vendors for use with the IBM personal computer. Software application programs that are written for the Microsoft DOS, Microsoft NT, Microsoft Windows or UNIX operating system by application programmers use a programming language that results in lines of code, called source code. Source code is programming instructions, written by a user, that instruct a computer to perform a series of functions. Since the actual computer logic cannot understand source code statements, the source code must be changed to more precise statements, called object code, that the computer can understand.
An assembler or compiler translates source code into object or assembly language code. Most programmers do not write programs directly in assembly language because to do so would be very tedious, requiring many lines of code to perform a simple task that in source code would require only a simple statement.
The object code created by an assembler or compiler consists of lines of code that are machine instructions, instructions that are understood by a particular computer machine's central processing unit (CPU) and that will run on that CPU. A compiler will make certain assumptions in order to preserve program semantics due to restrictions put on it by the programming language that the user has used to create the source code.
After an application program is written it is translated by a compiler into object code and is run on the microprocessor. Problem areas in the program may appear where the central processing unit (CPU) has spent a large amount of processing time. For example a large number of cache misses, branch mis-predicts, etc. Currently, engineers familiar with the microprocessor and the source code language analyze the source code at the problem areas and recommend changes that could improve the performance of the particular microprocessor. In the past, automatic tools have been available that suggest improvements of various kinds. The shortcoming is that these prior tools are labor intensive, requiring the services of a systems analyst to work with a user on problem areas targeted by the tool. It is therefore desirable to have an automated tool that a application program developer can use without the need for the services of a systems analyst.
SUMMARY OF THE INVENTION
Briefly, the invention is a program tuning advisor method embodied in a computer system including a central processing unit (CPU) and a number of program modules running on the CPU. Code samples are collected and analyzed to identify hotspots in the code samples. A graphical view of CPU time spent in each module is displayed in a window. At the request of a user, a graphical view of the hotspots is displayed in another window. By clicking on a hotspot, a user causes a graphical view of a section of code related to a particular one hotspot selected by a user from the second graphical view to be displayed. Then, optimization advice for the section of code is displayed.
The program tuning advisor analyzes program source code and suggests improvements to the source code that could improve the program in areas of the program where a CPU spends a lot of execution time. Since the advisor only suggests improvements for execution hotspots, this focuses the advice to the places where it has the greatest impact.
An advantage of this invention is that the programming tool is connected to a profiler so that suggestions are only made on small parts of the program. This prevents information overload where the suggestions become overwhelming.
An advantage of this invention is that the tool also suggests changes which cannot automatically be done by a compiler since they could be unsafe due to language semantics. Yet the tool of this invention can recommend such changes and it is up to the program tuner to verify that the changes are safe in the particular context. Typically, a change can safely be made because the original algorithm could have been expressed in multiple ways, one of which is the recommended change. The programmer was probably unaware of the performance difference between the original code and recommended code and had arbitrarily chosen the original code.
An advantage of this invention is that the tool analyzes only the sections of users' code that are based on hotspots.
An advantage of this invention is that the tool gives advice on the necessary source code modifications that would improve the performance of the application on the target processor.
An advantage of this invention is that the tool gives advice based on optimizations that are not possible in traditional optimizing compilers, due to the general assumptions forced by the programming language.
The foregoing and other objects, features, and advantages of the invention will be apparent from the following more particular description of a preferred embodiment of the invention as illustrated in the accompanying drawings.
REFERENCES:
patent: 5175856 (1992-12-01), Van Dyke et al.
patent: 5179702 (1993-01-01), Spix et al.
patent: 5187789 (1993-02-01), O'Hair
patent: 5287511 (1994-02-01), Robinson et al.
patent: 5432932 (1995-07-01), Chen et al.
patent: 5452457 (1995-09-01), Alpert et al.
patent: 5465258 (1995-11-01), Adams
patent: 5473773 (1995-12-01), Aman et al.
patent: 5481708 (1996-01-01), Kukol
Smith Kevin J.
Sridharan K.
Blakely , Sokoloff, Taylor & Zafman LLP
Chaki Kakali
Ingberg Todd D.
Intel Corporation
LandOfFree
Software profiler which has the ability to display... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Software profiler which has the ability to display..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Software profiler which has the ability to display... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2565014