Before diving into some deeper technical content, I thought it would probably be a good idea to talk about why people in the finance sector are becoming interested in FPGA technology. I’ve personally been involved with FPGA projects in the world of finance since 2006, so this technology is something people have been sniffing around for quite a while. But the view of the industry in 2013 generally seems to be that this is something that will become a little more mainstream this year.
Clearly, this interest wouldn’t occur if people didn’t percieve a benefit over the status quo, but what are those benefits and are they real?
State of the art technology today, and for many years has been data centres full of commodity servers built around an Intel or Intel derived processor or CPU. These servers won’t suddenly be disappearing of course! These general purpose servers are designed for performing a wide variety of different tasks, using the same digital circuit on the silicon of the processor.
Multicore CPUs today can have tens of individual processors per device, each able to run a number of different tasks independently, and switch between them within a few microseconds. The processors also have access to large amounts of memory. It’s a decent solution to alot of compute problems.
CPUs gain their flexibility by being based around a fixed yet versatile architecture, however this architecture is not always used efficiently to address a problem. As we’ve already seen, FPGAs have a different approach. As any digital circuit can be implemented this allows a fully custom architecture to address a specific problem in the most efficient way.
It doesn’t take too much imagination to realise that if compute happens faster, in finance trades can occur faster, leading to greater profitability.
But, there are disadvantages to FPGAs. Although FPGAs can be reprogrammed, they can just ‘be’ one circuit at any one time, the reprogramming procedure takes several seconds. Also, the programming concept is different. With a CPU a program is a list of steps carrying out operations on data, where as an FPGA is programmed with a circuit. With traditional FPGA programming methods, this makes development effort much higher for FPGAs than CPUs. New, faster, FPGA development approaches are likely to be the subject of a future blog.
The different architecture and programming methodology means not all computing tasks can be implemented on FPGAs in a more efficient way than a CPU. However, there are many places where FPGAs can help. Examples of applications where FPGAs can offer acceleration in the financial domain include:
- Monte Carlo pricing algorithms
- Network processing
- Market data feed handling
- Compression (eg in a wireless link)
Next time, I’ll be continuing this look at FPGA vs CPUs. I’ll discuss what features make an application likely to run faster on FPGAs than CPUs. I’ll also be discussing some hard numbers for this, derived from some of my academic work. Tune in!
Nice one. Keep it up!