3 ms·
I mostly agree with you but in the case of key/value store the problem is mostly an I/O issue, not CPU performance. It is an architectural issue. An FPGA can gi
by bravo22 11y ago
I mostly agree with you but in the case of key/value store the problem is mostly an I/O issue, not CPU performance. It is an architectural issue. An FPGA can give you deterministic, consistent storage at very low latency -- even microseconds -- specially when network processing is done on the wire.
This is the same reason a lot of deep packet inspection and do-X-with-a-packet-on-the-wire hardware is built around FPGA. Moore's law speeds up FPGAs the same as other ASICs. Newest Xilinx FPGAs are 16nm FinFET.
It may not make much sense to deploy this for a small shop but at Google or AWS scale having a hardware based key/value store has many advantages.
- mprovost 11y agoThat's why I thought of Bluearc - it was a storage system so the overall throughput was ultimately limited by hard disks. The FPGAs were used to optimise all of the front end protocol and filesystem processing. I imagine the same is true of most key-value stores, at scale you're going to have to store the values somewhere slow and optimising key lookups only gains you so much. My impression of FPGAs is that yes, Moore's law does help, but at this point it's mostly by adding transistors. If your design doesn't take advantage of them, don't they just sit idle? Whereas Intel puts a lot of effort into making those extra transistors speed up even single threaded legacy code. Your example of network hardware is interesting where you can keep the whole problem domain local I imagine it's a better use case.
- bravo22 11y agoKV would be stored in DDR memory in this case, which on an FPGA you can have many channels all working in parallel. In fact you could design a system that could saturate a 10Gbps network link and give you deterministic, 1ms or less, I/O latency. That is difficult to match for a regular CPU system. You'll find that a lot of high-throughput CPU systems end up using FPGAs on PCIe cards to the same thing in order to achieve the needed performance.