FPGAs are devices programmed using languages and methodologies originally developed for describing the circuit layouts used in today’s integrated circuits. As such, they are well suited for applications involving bit manipulations performed on a continuous stream of data. However, their general applicability to HPC applications is open to debate.
An FPGA is a chip designed to emulate a user-specified integrated circuit. As such, FPGAs can be very useful in prototyping efforts. More recently, they have been incorporated into add-on boards which frequently consist of the following:
One or more FPGAs
A small to moderate amount of fast memory (static random access memory [SRAM])
Optionally a larger amount of dedicated onboard memory (dynamic random access memory [DRAM])
An interface for connecting the board to the system that will be hosting it. At the time this research was conducted, that was based on either the peripheral component interconnect (PCI) or the peripheral component interconnect extended (PCI-X) standards
During the period when this research was conducted, Xilinx and Altera were the major manufacturers of the FPGAs. Many of their products included additional features such as the following:
A small amount of on chip fast memory
A complete embedded PowerPC processor
Specialized circuitry such as analog-to-digital converters
Digital signal processor (DSP) slices, from which entire DSPs and other types of computational units could be efficiently constructed.
At the time this research was conducted, there were many uses for FPGAs and most of them had nothing to do with high-performance computing (HPC). Examples of non-HPC applications for FPGAs include the following:
Replacing application specific integrated circuits (ASICs) in a design in an attempt to reduce the time to market.
Replacing ASICs in a low volume product in an attempt to save money (ASICs are cheaper, but only when ordered in quantity).
Temporarily replacing ASICs (or possibly even the processor itself) during the design phase of a project. This makes it easier to test out the merits of alternative designs before committing to one.
Accelerating applications that are primarily composed of a large number of bit manipulations, including signal and image processing and cryptography, which can all be HPC applications under the correct circumstances.
Simulating networks, which would otherwise be an HPC application.
Simulating ASICs prior to their production.
It was determined that FPGAs may be applied to HPC applications in the following distinct ways:
The acceleration of bit manipulations (as just mentioned)
Fixed-point (i.e. decimal) calculations
Floating-point calculations using dedicated adders, multipliers, and/or fused multiply-add units. These may be formed entirely from reconfigurable cells, or they may be formed from DSP slice technology combined with glue logic created out of reconfigurable cells.
Floating-point calculations using soft implementations of embedded microprocessors.
This work was done by Daniel M. Pressel for the Army Research Laboratory. For more information, download the Technical Support Package (free white paper) below. ARL-0245
This Brief includes a Technical Support Package (TSP).
FPGAs and HPC
(reference ARL-0245) is currently available for download from the TSP library.
Don't have an account? Sign up here.