

Field-programmable gate arrays (FPGAs) are versatile silicon chips that are proving to be extremely fast at certain operations. Laid out on silicon much like any other chip, FPGAs are packed with configurable logic blocks that are wired together with interconnects and switches, and a small amount of memory in the form of SRAM, EEPROM, or an antifuse for each programmable element. In addition, FPGAs also have some special hardware to govern global clock cycles (clock drivers) and can be fitted with specific-function embedded cores such as digital signal processors (DSP).

The best part about FPGAs though, as their name suggests, is that they are fully programmable. The chip will have input and output pins, and using schematics or a software programming language like VHDL, you are able to design the digital circuitry necessary to perform tasks. You could take two input values and use the logic blocks and look up tables to add the values together and return the result, for a simple example. Alternatively, you could have the FPGA constantly adjusting fan speed based upon a temperature sensor input. Whatever your task, you generally load it onto the FPGA chip using an external memory device that programs the logic and flips the appropriate switches closed to connect various logic blocks and other hardware together.

Unlike a traditional CPU or GPU, FPGAs do not run code. In essence, an FPGA is equivalent to a silicon chip that has been specially made for a very specific task. In a traditional CPU, the operating system queues up instructions for the processor to carry out one at a time. FPGAs on the other hand are hard wired in a way that, for sake of simplicity and visualization, essentially means that the FPGA is the program (rather than it running a program).

It is here that FPGAs get interesting. Although they run at much lower clockspeeds than “hardwired” CPUs and GPUs, they are truly parallel designs — from the loop and task level down to the bit and instruction level — that are further free from instruction fetching operations (because the instructions are built-in).

Pico Computing FPGA module

FPGAs can accelerate simulations, encryption and decryption tasks, Bitcoin mining, and can even be used to brute force passwords. Many of those tasks are either starting to or are already commonly run on graphics cards using software programming languages like CUDA and OpenCL. Today’s graphics cards are quite fast (especially on the AMD side with its Graphics Core Next architecture), and running programs on the GPU can greatly speed up tasks that involve large amounts of data and highly paralleled processes. Nvidia’s Tesla cards are a good example of the GPU’s speed, where a few graphics cards are able to be used in place of a small CPU cluster (generally for simulations and modeling tasks).

With that said, even though GPUs run at 1GHz+ and have thousands of stream processors, they are still being beaten by FPGAs that use less power and run at much lower clockspeeds (but can, admittedly, cost more to purchase). For example, a new FPGA board from Pico Computing that uses six Xilinx Virtex-6 LX240T FPGAs and 3GB of DDR3 memory has the approximate computational power of 400 eight-core Intel E5-2687W processors — or ten AMD Radeon 7970 graphics cards — and it is able to do this drawing only 150 watts (much less than even one GPU, much less ten).

WPA-PSK password recovery, FPGA vs. CPU vs. GPU

Regarding password cracking specifically, ElcomSoft CEO Vladimir Katalov stated that a 4U chassis-sized FPGA cluster would have equivalent computational power of “over 2,000 dual-core processors” and use much less power at the same time. The press release further compares the WPA-PSK performance of an AMD 5970 at 103,000 guesses per second, while the Pico FPGA board is capable of 1,756,800 guesses per second. While those numbers should be taken with a grain of salt — it’s a press release, after all — the Microsoft research paper seems to at least back up the general claims that FPGAs are faster than CPUs, with the FPGA being 11 times faster than the researchers’ optimized MIPS baseline. It was able to take full advantage of the fact that JPEG compression is done in independent steps to break the images up into groups of pixels and run them through parallel logic and then combine the data in the final step. Doing this, the FPGA was able to process four images at a time.

In short, field-programmable gate arrays are extremely fast and are continuing to get faster and cheaper to produce, which may give Nvidia and AMD a run for their money in the HPC (high-performance computing; supercomputing) and high-end workstation markets in the future. On the other hand, the consumer and general computing markets are relatively safe from any sort of FPGA shake-up due to the cost of the chips and the fact that developer usage of GPGPU is still in its infancy, much less FGPA acceleration of consumer programs. There is also the issue that, as graphics cards continue to focus more on GPGPU performance, FPGAs will be even harder to justify over a “good enough” GPU for most when the graphics card can also do other tasks (such as 3D game rendering!) The FPGA will not be replacing your CPU or GPU any time soon, but it is interesting that reprogrammable hardware can offer much better performance than even today’s fastest graphics cards.