What Is an FPGA? A Basic Definition

CPUs and GPUs dominate the mainstream hardware scene, so it’s often easy to forget that there are other computing paradigms used in more specialized applications. Take FPGAs, for example, short for field-programmable gate array.

(Image credit: Shutterstock / Giacomo Carrabino)

FPGA vs. ASIC

CPUs and ASICs (application specific integrated circuits) are the two polar opposites of the computing spectrum. As the name suggests, ASICs are hard-wired pieces of silicon and are meant to run specific algorithms. Those are the fastest and most efficient chips possible, as they only do the one thing they were manufactured for, but consequently, they lack the flexibility to run any other algorithms. CPUs, meanwhile, can be freely programmed to run any software.

FPGAs fall in between those two extremes. At their core, FPGAs consist of millions of so-called logic elements (LEs) or gate arrays, which is what the last part of the FPGA name refers to. A logic element is quite simply just a lookup table (also known as a LUT or truth table) that stores the output for all possible input combinations. For example, a 2-bit LUT can have four distinct inputs: 00, 01, 10 and 11. The lookup table will then tell you how a boolean function gets evaluated — to true or false — for each of those possible inputs. Simply put, FPGAs look up the answer, instead of having to fetch, decode and execute instructions like a general-purpose CPU would.

Those logic elements (aka gate arrays) can be programmed (reconfigured) at any time ‘in the field,’ which is where the “field-programmable” part of the name comes from. That means algorithms can be updated, or the FPGA can even be quickly re-purposed for completely different applications. This programmability also significantly reduces the time to market compared to a hard-wired ASIC.

In summary, FPGAs are fast and efficient because they can be optimized for algorithms, and their programmability gives them a lot of flexibility. High-end FPGAs contain millions of those aforementioned logic elements.

What Uses FPGAs? 

(Image credit: Intel)

FPGAs are used for all sorts of applications. That includes for consumer electronics, like smartphones, autonomous vehicles, cameras and displays, video and image processing and security systems. They're also used for many commercial uses, like in servers, and various vertical markets, including in aerospace and defense, for medical electronics and for distributed monetary systems. 

Other IP in an FPGA

Apart from LEs and registers (memory), FPGAs contain quite a few other hardware blocks. As many applications require number crunching capabilities, high-end FPGAs are known for their high floating-point and integer performance by having thousands of DSPs (digital signal processors) that allow them to rival or even surpass GPUs in the FLOPS metric.

FPGAs not only process data, but they also move a lot of data, for which they contain transceivers. Intel’s most capable FPGAs deliver 8Tbps bandwidth from 144 58G transceivers connected via EMIB (embedded multi-die interconnect bridge) packaging technology.

Lastly, FPGAs also contain hard intellectual property. For example, they can contain PCIe interfaces or compute cores from an Arm CPU.

This article is part of the Tom's Hardware Glossary.

Further reading: