Reconfigurable computing is a term applied to several computing options. A reconfigurable computer is one where the computer architecture chips and components can be swapped out for others on demand. Alternatively, the chips and components may be rearranged and wired together differently in order to perform different functions and follow different dataflow arrangements. A reconfigurable computer may or may not contain a general purpose computer processing unit (CPU), may have several CPUs, or only be run by dedicated integrated circuits and field-programmable gate arrays. Some people refer to reconfigurable computing as hybrid computing, parallel computing, pipeline computing, or high-performance computing.
Field-programmable gate array (FPGA) computers may have a CPU to perform platform and network functions, or may perform all CPU functions independently, in a reconfigurable computer. These FPGAs are computer logic components that can be clustered together in a variety of wiring setups, producing differing function and data flows, and can be reorganized into new arrangements at any time. This flexibility gives maximum raw computing power for specialized computing tasks and increased speed capabilities over general purpose computers. In alternative options, FPGAs can be repeatedly reprogrammed by hardware-specific languages, in parallel computing use, to produce differing dataflow paths and concurrent pipeline data operations.
Hybrid computing is considered reconfigurable computing as it involves a general purpose CPU core matched with application-specific cores for specific uses, increasing the capabilities and speed of certain computing functions. These application-specific cores may be FPGAs, reconfigured by a consumer, or reconfigurable data processing arrays (rDPAs). Additionally, a PCI Express® computer expansion card may be added internally to the motherboard, or externally in its own enclosure, for increased graphics or signaling card capabilities. Reconfigurable computing is all about offering high-performance options for specialized tasks.
The reason why reconfigurable computing systems are preferred over general purpose computing is that the reconfigurable systems provide such performance flexibility. A reconfigurable system can be changed on the fly before execution, between function sets, or at nearly any point during execution by bit streams of instructions. These reconfigurations can take place while another part of the logic system is computing other tasks. There is a large speed difference between using software-performing tasks and using the flexibility of reconfigurable computing to perform the same tasks, while consuming less power.
In scientific, academic, military, and business communities, many fields of research are being done to advance reconfigurable computing practices. Much of this research is aimed at producing better overhead management in operating systems. In a related manner, research is being done on choices in the delegation of tasks to host CPUs and logic FPGAs. Additionally, optimization strategies for FPGAs in video, signal, and network processing for scientific and military communities, and bioinformatics for medical communities, are stressed.