Autovectorization support for Motorola's PowerPC AltiVec vector processor

Santa Barbara 22 May 2001 Green Hills Software unveiled a new PowerPC compiler for its MULTI Integrated Development Environment that provides automatic vectorization support for Motorola PowerPC processors equipped with the AltiVec vector-processing engine. The new compiler converts ordinary C code into optimized AltiVec object code, enabling designers to achieve a 2-4x increase in vector processing performance without having to write custom AltiVec source code.

AltiVec is a SIMD (Single Instruction Multiple Data) processing engine for Motorola PowerPC processors that enhances performance for compute-intensive applications by processing up to sixteen data elements per clock cycle. Utilizing a 32- word register file (128-bit words) for data storage, the SIMD engine uses 162 distinct instructions to process data 128 bits at a time. These 128-bit vectors may be organized as four 32-bit, eight 16-bit or sixteen 8-bit elements. For example, the AltiVec engine can load, store, add or subtract four 32-bit integer or floating-point data elements every clock cycle.

Until now, programmers who wanted to take full advantage of AltiVec's high-speed vector processing capabilities had to add special AltiVec instructions to their C programs, or write AltiVec-specific assembly langue code. Green Hills' new compiler eliminates the need to write specialized AltiVec code in C or assembly language. Instead, the compiler analyzes the user's C program and identifies code sequences that can benefit from SIMD processing and generates object code for optimal execution on the AltiVec processor. Generally, these sequences are the inner loops of computationally demanding DSP algorithms like vector multiply, dot product, and matrix multiply.

As implemented in the Green Hills compiler, autovectorization is an easy-to-use compile-time option. If the option is selected, the compiled code is tailored to use AltiVec vector operations wherever the compiler can determine that such operations are intended by the programmer. If the option is not selected, no AltiVec vector operations will be employed in the generated object code produced by the compiler. In either case, the source code remains unchanged, and portable to other PowerPC processors.

Green Hills' optimizing C/C++ compiler is part of the MULTI 2000 Integrated Development Environment, which automates all aspects of software development for PowerPC microprocessors. Featuring a window-oriented editor, RTOS-aware source-level debugger, and graphical program builder, MULTI 2000 also includes a run-time error checker, version control system, and performance profiler. MULTI also features an instruction set simulator that allows programmers to develop and test PowerPC code on a PC or workstation without the need for the target hardware.


Ad Emmen

[News on Advanced IT]   [Calendar]   [Analysis]   [IT in Medicine]