Rust vs. C in networking application
Close

11 August 2022

Low-level programming

FPGA in network solutions: benefits and usage examples

10 minutes reading

FPGA in network solutions: benefits and usage examples

Silicon chips are a well-known and traditional resource often used in projects. However, sometimes they can be insufficiently flexible – here, the FPGA comes in. This solution is gaining popularity as FPGAs provide more options for customization. 

If you are looking for more information about FPGAs, their strengths, and in which types of projects FPGAs will work better than other solutions, this article provides the answers. We also offer examples of how we have used FPGAs in our clients’ projects

A small annotation: to better distinguish FPGAs from silicon chips, the term “silicon solution” is used in the article. This phrase is used to describe a traditional network circuit. 

FPGA - a short overview 

The abbreviation FPGA stands for field-programmable gate array. The “field-programmable” part means that connections between gates are configurable by the user. In digital electronics, the gate is a basic building block. Gates are used to create more complex logic structures which give the desired functionality. So, how does an FPGA work? 

FPGA modules are connected by routing signals which are made up of a programmable lookup table. They also contain logic elements used to perform the simplest memory functions, and switching elements. Some specific FPGA models can include static and dynamic on-chip memories. If you are into FPGA programming topic, this article might interest you.

This text will focus more on the advantages and strengths of FPGAs. It aims to show the expanded possibilities available with this particular solution and how it can benefit projects. If you are interested in a detailed description, you can check out our glossary definition for FPGA

FPGA benefits 

FPGAs are more adaptable to customer requirements, offering a changeable configuration compared to a silicon-integrated circuit - silicon must be physically replaced with another circuit. With an FPGA, there is only the need to change the configuration. This is only the tip of the iceberg of FPGA benefits. Keep reading for more examples. 

  • High customization opportunities

FPGAs differ from silicon chips because they are  programmable, and further updates can be made even after delivery.   

  • Better algorithm performance 

The standard solution to deal with more complex tasks is to solve them with software implementations using fast processors. An FPGA can be an alternative – thanks to parallelization and adaptation to the application, it allows for accelerated performance compared to processor-based solutions. 

  • FPGA availability – persistent and long-term 

FPGA functionality lies in its configuration, not in the module. Thanks to that, the whole component becomes independent of the integrated silicon circuits available on the market. 

  • Efficiency 

FPGAs allow for using parallel algorithms, which is a better-scalable solution than processors’ sequential approach. 

  • Shorter time-to-market

Complex systems can be developed faster because of the possibility of updating hardware in the field, since hardware development lies in IP cores. Their functionality may be adjusted specifically for project requirements. 

It is no surprise that FPGAs, alongside their benefits,  also come with some inconveniences. That does not mean that this solution is not worth your attention – the following paragraph aims to give a better insight. 

Some FPGA drawbacks 

If you choose FPGAs for your next project, you need to know that they consume more energy than silicon solutions. Another thing worth mentioning is the reduced speed. As a universal chip suitable for multiple purposes, an FPGA will be slower compared to a silicon chip that is designed for a single purpose. And last but not least, as a rule, silicon circuits are a cheaper solution than FPGAs.

However, in our opinion, the FPGA benefits far exceed these few nuisances.

When diving deeper into FPGA topics, it is impossible not to start wondering about how to choose between FPGAs and ready-to-use silicon solutions. Below there are some tips on when an FPGA will work better. 

Low-level programming, P4, DPDK, FPGA, smartNIC - CodiLime

When to use an FPGA? 

Silicon solutions are manufactured to offer a number of electronic functions in an integrated circuit. An FPGA has flexible logic cells and interconnects, which can be programmed with HDL coding language in parallel. 

Are you wondering how to program FPGAs? Check out our previous publication.

The best place for FPGAs are prototype projects where the hardware platform is not clear and there are a number of alternative ways to fulfill customer requirements.

FPGAs will also have a use in production projects which need some hardware flexibility. Instead of predicting all possible use cases and putting them into a fixed silicon solution, a prepared platform can provide generic features and leave the specifics to be added by the customer.

Nowadays, FPGAs can be found in many places (measurement equipment, digital TV decoders, network devices, etc). They are used for image processing, artificial intelligence (AI), encryption, and network traffic acceleration.

FPGAs are also famous for their low data latency, and rapid processing of data – mathematical operations, bit-mixing, encryptors, blockchain operations, hash-based searches, etc. 

Below, there are more details on how we use FPGAs to help our clients boost their projects. 

FPGAs at CodiLime 

At CodiLime, we work with SmartNICs, network cards with an FPGA as a core - thanks to that some of the card features may be carried out by hardware.

To make the topic clearer, let’s start with a short SmartNIC definition. This programmable NIC (network interface card) is a hardware component responsible for managing internal and external network data flow. This solution is used to relieve the server’s CPU of processes like routing, network address translation, telemetry, load balancing, or firewalling. 

For more information about SmartNICs,  you can check out our previous article where we more broadly describe what SmartNICs are

Besides the above wide range of FPGA strengths, we like to use them for offloading. What is offloading and how do we do it? 

Offloading, in simple words, aims to accelerate an application by transferring simple tasks that could unnecessarily absorb processor resources to an external platform, like a hardware accelerator or cloud. The processor requires a bit more time than an FPGA to analyze data packets – an FPGA is able to do it with reduced data latency.

How do we benefit from FPGAs in detail? With P4 onboard.

P4 is a language for programming the data plane of network devices. It enables description of the ins and outs inside the device. P4 then is translated into HDL and, as a final step, the configuration bitstream is prepared.

The SmartNIC vendor prepares the network card in PCIe standard with SFP sockets and the necessary transceivers connected to FPGA. They also prepare an HDL description of PCIe, an ethernet transceiver, and the necessary internal logic to interface with P4 components. The rest is in the end user's hands.

At CodiLime, we help end users to achieve their goals by adjusting the SmartNIC configuration to their needs using P4 and adding offload functionality to the existing services. FPGA flexibility allows us to experiment with the features which sometimes are out of the scope of the standard network approach.

Conclusion 

FPGAs are maybe not the fastest (in terms of latency) solution on the market (here dedicated silicon circuits are invincible), but they are faster than software that needs time to analyze data. FPGAs’ power lies in their flexibility. The above examples show the benefits of this feature when it comes to real-life cases. 

Hopefully, this article has offered some insights into FPGA use, and maybe, you’ll become an FPGA enthusiast like our experts at CodiLime. Contact us to discuss how FPGAs could support your future opportunities.

Daniel

Daniel Jędrzejczyk

Senior Software Engineer
Karolina

Karolina Rusinowicz

Content writer