SIMD (Single Instruction Multiple Data) is a computer science method of combining multiple operations into a single computer instruction. The total number of operations combined is normally a factor of the power of two. The employment of SIMD results in significant savings in speed for algorithms designed to work in parallel. The technology is used on IA-32 and PowerPC architectures, and is referred to as AltiVec on the PowerPC and MMX (MultiMedia eXtensions) on IA-32 machines. SIMD results in significant gains when used for image processing, 3G graphics, scientific calculations, and video processing applications. It is employed on all G4, G5, and Pentium 3, 4, and M processors.
Why is SIMD Used?
SIMD provides significantly improved performance in communications, audio, and video applications when compared to pre-SIMD technology. It has become the cornerstone for increasingly complex application and processing development in these areas across operating system (OS) chipsets, resulting in an extension of the scalar instruction available for use.
When was SIMD First Employed?
SIMD technology was first used in supercomputers such as the CM-1 and CM-2 Thinking Machines. As technology improved, supercomputers shifted to the less expensive MIMD technology. Increased research and SIMD use began again when real-time video games became popular, resulting in higher performance on home computers and Intel releasing the MMX extensions for the x86 architecture in the mid 1990s. IBM and Motorola followed suit as all developments focused on the game industry. Today, modern supercomputers still use clusters of MIMD computers. However, each of the MIMDs are now capable of running SIMD-encapsulated instructions.
What are the Advantages of SIMD?
SIMD’s primary advantage is its ability to conduct mathematical operations that are applied to large sets of data points in a much quicker manner than non-SIMD machines. In 3G graphics for example, when a player moves through a scene and the light source changes, the pixel of each visible image’s brightness value has to be changed, a task that an SIMD very efficiently performs. Unlike other computer processors, SIMD does not conduct these operations in rapid sequences, but loads as many as possible into memory to execute the command(s) in parallel.
What are the Disadvantages of SIMD?
SIMD technology cannot be applied to all algorithms. For example, parsing applications cannot be vectorized easily and do not gain from SIMD. The technology also consumes quite a bit of power and occupies a great deal of space on the microprocessor chip. Implementing SIMD supported instructions in a computer program requires significantly more human interaction than traditional C or C++ programming. Finally, SIMD instructions are very architecture specific and require recoding to extend the application(s) that is using it across platforms.