Occasionally new computing technologies are announced that feature “hardware-acceleration” but that term is rarely explained in those announcements. It’s actually relatively simple to understand thankfully. The majority of processing on a computer takes place in software running on the general-purpose CPU. It’s possible, however, to create a separate processor specifically designed to perform a small range of tasks or even just a single task. Utilizing a separate processor like this is called hardware-acceleration.
Benefits and drawbacks of hardware-acceleration
Hardware-acceleration comes with two main performance benefits. Firstly, processors designed to perform specific types of logic are faster and more efficient at performing a task than a general-purpose CPU would be. Secondly, by offloading that processing load, the main CPU has more processing power free to dedicate to other tasks. Other advantages include increased parallelism, reduced power consumption, and increased efficiency.
The use of dedicated separate processors for hardware-acceleration means that adding new features or even just patching bugs can be difficult, if not impossible in some cases without replacing the hardware. It’s also significantly harder and more expensive to develop new hardware than it is to develop software.
Types of hardware-acceleration
There are currently three types of hardware-acceleration: specialized processors, FPGAs, and ASICs. A specialized processor is a separate processor that uses hardware optimized for the intended type or types of logic. A popular example of a specialized processor is the GPU. A modern GPU contains a set of processors designed for certain tasks such as shading and ray tracing.
A Field Programmable Gate Array or FPGA is a processor that is designed to be able to be configured by the customer after manufacturing. An FPGA can be programmed to be suited for a range of different logic functions, depending on the task that it is being designed for. As FPGAs are re-programmable, they are popular for the development of ASIC processors.
ASICs or Application-Specific Integrated Circuits are processors optimized specifically for running a single task. With ASICs there is never any intent for the processor to be used for anything other than exactly what it was designed for. Through this depth of optimization, ASICs are very efficient at performing their task.