SIMD and More
While a relatively common feature in the HPC arena, the Pentium with MMX was the first x86 chip to incorporate single instruction, multiple data (SIMD) instructions. These instructions do exactly what their name suggests, providing a way to perform the same operation on multiple sets of data. While a traditional (scalar) instruction might subtract one number from another, the SIMD equivalent could subtract four numbers from four other numbers, performing the same operation on four inputs. This kind of thing is used a lot in image and video processing.
SIMD instructions are relatively cheap to add to CPUs, and provide a good return on investment. If your process is taking 10% of your CPU and you upgrade, you’re unlikely to notice that it’s now taking only 5%. But if you have a process that uses 100% of your CPU, you’re very likely to notice if it takes 2 minutes to run instead of 10. Most of the applications that benefit from SIMD fall into the latter category—activities that use a lot of CPU power—so allowing them to run faster provides a perceptible improvement.
Beyond SIMD, some processors have instructions tailored to specific algorithms. The VIA C3, for example, had instructions dedicated to accelerating AES encryption. The C7 added more for accelerating SHA-1 and SHA-256 hashing. Like graphics, cryptographic algorithms are typically CPU-bound. They’re likely to be even more important in the future, as more data is sent over the network and more machines are mobile. It’s not uncommon for a laptop hard drive to be AES-encrypted in case of theft; accelerating AES on these machines makes anything that uses the disk faster.
Hardware acceleration for cryptography is not new. Several companies produce cryptographic accelerators that sit on a PCI card.