In my previous blog article, I introduced the first of three stages of reconfigurable computing, which described the use of reconfigurable computing solutions to address specific challenges. With solution-focused reconfigurable computing, it is the requirements of the solution that drives the adoption of reconfigurable computing. Reconfigurable computing just happens to solve the problem better than the alternatives.
In the next two articles, I will talk more about the next stages of development for reconfigurable computing, where it is the possibilities that reconfigurable computing enables that inspires new solutions and innovation. The difference between the stages relate to the maturity and sophistication of supporting frameworks. In this article, we are taking the first steps on that journey with customer-invoked reconfigurable computing.
Customer-invoked reconfigurable computing
Software programmability is a hot topic across many industries. The ability to change the behavior of a system through software is highly desirable and it is also one of the main reasons behind the interest in reconfigurable computing. It is the ability to reconfigure FPGAs on-the-fly that has captured the imagination, and which makes reconfigurable computing a natural choice for software-defined datacenter computing, networking, storage or security.
The new programming languages that enable customers to directly program FPGAs in the same way as a CPU is programmed today are evolving rapidly. P4, OpenCL, Xilinx’s SDAccel and Intel’s OPAE are all paving the way for software frameworks that will allow all programmers and not just FPGA experts to take advantage of reconfigurable computing.
However, there is still some way to go with these solutions. As many of the underlying technologies were not designed for FPGAs, but for other technologies and paradigms, like GPUs, it will take time to adapt and enhance them so that they can exploit the specific advantages of FPGAs.
The crux of the issue is that FPGAs are not processors. Processors interpret instructions to perform actions. FPGAs, on the other hand, are a direct implementation of an algorithm that can be parallelized and scaled to run very fast. This is more akin to designing an Application Specific Standard Product (ASSP) semiconductor chip to perform a specific task, such as a cross-bar switch or mapper chip. This is a very different computing paradigm to processors, so it is natural that enabling the definition of FPGA solutions through C/C++ or P4 will take time to mature.
In the interim, alternative approaches can be taken based on reconfiguration of the FPGA chip either partially or completely. One of the advantages of FPGAs is that the functionality of the FPGA, as defined by the FPGA image file, the firmware that defines what the FPGA does, can be replaced instantly, on-the-fly and remotely with minimal disruption. This allows various FPGA image-based solutions to be designed and made available for loading on FPGAs when required.
This is an example of a complete reconfiguration, but it is also possible to perform partial reconfiguration where only a portion of the FPGA is reconfigured. The basic principles are well understood, and real examples exist (such as the Napatech compression offload solution built for Nokia and our latest demonstration of a virtual RAN PDCP acceleration solution at Mobile World Congress 2018 together with Xilinx, Radisys and Silex Inside). However, the frameworks to fully support partial reconfiguration are still maturing, so a solution-focused approach is still to be recommended.
This drives the need for reconfigurable computing solution providers who can implement a customer-invoked reconfigurable computing solution. As the tools and mechanisms mature, it will become possible to provide more generalized solutions where users can “drop-in” their own developed or sourced FPGA-based functionality using partial reconfiguration, but until then, a solution-focused approach ensures that the benefits of the reconfigurable computing solution can still be realized.
We are on a quickly maturing development curve for customer-invoked reconfigurable computing that opens exciting possibilities for new solutions. Working with reconfigurable computing solution providers today enables users to enjoy the benefits immediately while building their understanding of reconfigurable computing so that maturing tools and frameworks can be fully exploited once available.
In the next article, we will look even further ahead to the challenges that emerge when multiple reconfigurable computing solutions need to be deployed and managed in a datacenter environment.
Here you can download the Napatech Reconfigurable Computing flyer