FPGAs are integrated circuits (ICs) that fall under the umbrella of programmable logic devices (PLDs). The fundamental functionality of FPGA technology is built on adaptive hardware, which has the unique ability to be modified after manufacture. Arrays of hardware blocks, each configurable, can be connected as needed, allowing highly efficient, domain-specific architectures to be built for any application.
This hardware adaptability is a unique differentiator from CPUs and GPUs.
CPUs are highly flexible, but their underlying hardware is fixed. Once a CPU is manufactured the hardware cannot be changed. It relies on software to tell it which specific operation (arithmetic function) to perform, on which data in memory. The hardware must be capable of performing all possible operations, which are called using software instructions and can generally only execute one instruction at a time. FPGAs in contrast can process massive amounts of data in parallel. The benefit of adaptive hardware over CPUs varies by application—largely depending on the nature of the computation and its ability to be parallelized, but it’s not uncommon to see a 20X performance improvement vs. a CPU implementation of functions that can be highly parallelized.
GPUs address a major drawback of CPUs – the ability to process a large amount of data in parallel and can operate on very wide data sets. Fundamentally, GPUs are CPU-like because they have fixed hardware and operate using software instructions. A single instruction could process a thousand pieces of data or more, making them suitable for specific domains such as graphics acceleration, high performance computing, video processing, certain forms of machine learning, and more. Fundamentally, however, a GPU’s basic architecture and data flow are fixed prior to manufacturing.
FPGAs give programmers and designers the ability to adapt and update the compute architecture with greater flexibility —resulting in domain-specific architectures that are more specific to their requirements. FPGAs are not new, but are becoming more necessary due to the speed of innovation in areas like artificial intelligence. The first commercial-use FPGA was invented in 1985 by AMD, which dominates 60%-70% of today’s market for FPGAs.