Note: These tutorials are incomplete. More complete versions are being made available for our members. Sign up for free.

FPGA-based Solutions

For many bioinformatics programs, memory bandwidth and latency have become bigger bottlenecks than the number of processing cores working in parallel. The drawback is not an inherent flaw of the semiconductor technology, because the chips themselves can be designed to work in highly parallelizable manner to access the memory. However, the full extent of parallelizability cannot be exploited by the prevalent computing architecture. Earlier we explained how the parallelizability of hardware can be utilized by designing a custom chip for bioinformatics analysis. That option is very expensive, with the biggest expense coming from the need to create photolithography masks for transistor gates and interconnects.

Field Programmable Gated Array (FPGA) technology has been making inroads as an alternative by providing relatively inexpensive chips, which contain millions of generic logic units. The wiring between those logic units can be reconfigured to make the FPGA chip function in any desirable manner. For example, the user can reprogram an FPGA chip to run various bioinformatics algorithms, such as genome assembly, BLAST, BWA, Smith Waterman, etc. In fact, many of those useful algorithms have already been implemented on FPGA.

An FPGA/embedded solution comes in the form of an installed hardware card. The user needs to plug in the card in the PCI express slot of his server and install relevant software code. Once that is done, the rest of the operation remains transparent to the user, while the CPU interacts with the FPGA by treating it as a fast-running computing unit.

Programming cost remains to be the largest drawback of FPGAs. The coding needs to be done in one of the two hardware languages - Verilog or VHDL. The language itself is not a barrier, because both languages are fairly easy to learn. Instead, the alternate mindset needed to program a hardware is what makes FPGAs harder to adopt for conventional software programmers. The programmer needs to accept the inherent parallizability of hardware and make sure the operations are properly synchronized to take full advantage of the technology.


Web Statistics