14.2. The Future of FPGA Computing
This book has introduced the concept of FPGAs as high-performance computing platforms, using the C language as a vehicle. While the use of a software programming language for FPGA programming may seem exotic, it is our belief that FPGAs and the factors that drive them into new applications are at an important point in their 20-year historya tipping point if you willbeyond which they can and will be applied to an increasing number of computational problems.
There are important signals that a fundamental shift in programmable platform architectures is underway as well. The first important signal is the existence of multiple, well-funded startups that have worked (with varying levels of success) on entirely new computing platforms that make use of what has variously been called dynamically reconfigurable logic (DRL), reconfigurable computing, or adaptive computing. What this new technology does is merge, almost completely, the idea of programmable hardware as represented in something like an FPGA with a software application as represented by embedded software operating in an embedded processor.
Creating such a platformone that balances the desire for general-purpose programmability with the need for application-specific hardware optimizationshas proven to be a challenge. A number of companies have tried and failed to produce a broadly applicable reconfigurable platform. Some of these companies have already folded their tents after grappling for years with the difficulty of providing both a hardware platform (the reconfigurable computer itself) and the design tools and application libraries needed to promote and support it.
The volatility of this technology and of reconfigurable computing in general has kept mainstream system designers from embracing these new reconfigurable computing systems. A major part of the problem is the lack of a universal, portable method of design. This is the same factor that limited the acceptance of earlier programmable hardware technologies including programmable logic devices and FPGAs in their early years. Until such time as a reasonably portable method of design becomes available, reconfigurable computing will remain an exotic, high-risk technology.
Bigger FPGAs and Increased System Integration
The most exciting FPGA developments in recent years have been in the area of systems-on-programmable-chips. We have explored some aspects of these developments in this book as we made use of embedded "soft" processors and other IP components to create mixed software/hardware applications. As FPGAs grow in density, in lockstep with Moore's Law, we will see a dramatic increase in the use of such predefined cores, which will be provided by FPGA vendors, by third-party IP core vendors, and through open-source efforts.
What will make these cores more compelling, however, will be improved software tools for hardware integration. The EDK tools from Xilinx and the SOPC Builder tools from Altera are powerful, but they remain challenging for users who are not already intimately familiar with FPGA devices. In the future, then, we can expect FPGA vendors or third-party tool suppliers to invest heavily in "system builder"-type products, making it easier for system designers to assemble complete, custom platforms within one or more FPGA devices. Such tools should make it easier to select and assemble a wide variety of system components, emulating at the level of an FPGA what is possible today in the domain of board-level (or even rack-level) system design.
As the effective prices of FPGAs continue to decline and the range of potential applications increases as a result, we can also expect to see FPGAs appearing in products with much higher volumes than were historically practical. FPGAs are already appearingand not as simple placeholders for ASICsin such domains as automotive telematics and network data communication equipment. Given the demonstrated practicality of programming these devices from software, it is not unreasonable to expect FPGAs to appear as reconfigurable software coprocessing elements in higher-end workstations and PCs. As a concrete example, it would be entirely possibleusing one of today's PCI-equipped FPGA-based development cardsto create an FPGA hardware accelerator for applications such as Adobe Photoshop. As the need for more complex image processing tasks grows, the demand for such specialized (but perhaps infrequently used) hardware accelerators will drive the use of FPGAs for more general types of computing problems, and into more widely available computing platforms. It is at that point, when you will be able to order the FPGA accelerator option with your new notebook PC, that the FPGA will have truly arrived as a computing resource.