Parallel computing works by dividing large problems into smaller problems which are then solved at the same time. SIMD and MIMD are two different parallel computing architectures that use multiple processors and sometimes multiple computers to process data. SIMD stands for Single Instruction stream Multiple Data stream, while MIMD stands for Multiple Instruction stream Multiple Data stream. SIMD and MIMD architectures permform similar basic functions, but they differ both practically and technically.
The SIMD architecture performs a single, identical action simultaneously on multiple data pieces, including retrieving, calculating or storing information. One example is retrieving multiple files at the same time. Processors with local memory containing different data execute the same instruction in a synchronized fashion, with inter-processor communication for shift allocation.
The MIMD architecture performs multiple actions simultaneously on numerous data pieces. One example is performing various mathematical calculations -- such as addition and multiplication -- simultaneously in order to solve a complex math problem with many separate components. MIMD computing may or may not be synchronized and is increasingly more common than SIMD computing.
SIMD is typically used for problems requiring lots of computations with processors performing the same operation in parallel. MIMD is frequently used for problems that break down algorithms into separate and independent parts, with each part assigned to a different processor for simultaneous solution.
SIMD and MIMD are also technically different. SIMD processors are usually simpler, smaller, cheaper and faster than MIMD processors, but MIMD is capable of far more complex operations. MIMD operations that SIMD can also accomplish tend to take more time with SIMD. SIMD processors must perform complex operations sequentially, while MIMD processors can do this concurrently.