CodeAnalyst
Encyclopedia
AMD
Advanced Micro Devices
Advanced Micro Devices, Inc. or AMD is an American multinational semiconductor company based in Sunnyvale, California, that develops computer processors and related technologies for commercial and consumer markets...

 CodeAnalyst is a GUI
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...

-based code profiler for x86-based machines. CodeAnalyst has similar look and feel on both Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 and Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

 platforms. CodeAnalyst uses specific hardware and event profiling techniques which are designed to work with AMD processors, as well as a timer-based profiling technique which does not require a specific processor; this allows a subset of profiling features to work on non-AMD processors, such as Intel processors.

Code optimization

CodeAnalyst is built on OProfile for the Linux platform and is available as a free download. The GUI assists in various kinds of code profiling
Performance analysis
In software engineering, profiling is a form of dynamic program analysis that measures, for example, the usage of memory, the usage of particular instructions, or frequency and duration of function calls...

 including time based profile, event based profile and others. This produces statistics about details such as time spent in each subroutine
Subroutine
In computer science, a subroutine is a portion of code within a larger program that performs a specific task and is relatively independent of the remaining code....

 which can be drilled down
Data drilling
Data drilling refers to any of various operations and transformations on tabular, relational, and multidimensional data...

 to the instruction level
Instruction set
An instruction set, or instruction set architecture , is the part of the computer architecture related to programming, including the native data types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O...

. The time taken by the instructions are indicative of stalls in the pipeline during instruction execution. Better code optimization
Optimization (computer science)
In computer science, program optimization or software optimization is the process of modifying a software system to make some aspect of it work more efficiently or use fewer resources...

 can be accomplished with the understanding of pipeline stages in x86 and the graphical representation of pipeline simulation provided by CodeAnalyst. The optimization could be as simple as reordering the instructions or altering/removing the branches
Branch (computer science)
A branch is sequence of code in a computer program which is conditionally executed depending on whether the flow of control is altered or not . The term can be used when referring to programs in high level languages as well as program written in machine code or assembly language...

 and loops so that the maximum number of execution units(Load/Store units, ALU
Arithmetic logic unit
In computing, an arithmetic logic unit is a digital circuit that performs arithmetic and logical operations.The ALU is a fundamental building block of the central processing unit of a computer, and even the simplest microprocessors contain one for purposes such as maintaining timers...

, FP
Floating point
In computing, floating point describes a method of representing real numbers in a way that can support a wide range of values. Numbers are, in general, represented approximately to a fixed number of significant digits and scaled using an exponent. The base for the scaling is normally 2, 10 or 16...

execution unit...) are utilized in parallel.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK