FPGA's are something I learned about at Uni and something I never thought I would use in my working career. Clearly, I was wrong.
An FPGA is a Field-Programmable Gate Array. Essentially, it is an array of 'digital rules' that can be set to perform a specific function. Once set up, it manipulates data based on the rules applied.
The benefit of FPGA's is they can perform functions much faster than a CPU. This is because they process data in parallel and are configured to perform a single function.
So what does this have to do with Flash Storage?
I'm glad you asked.
Low latency is one of the most important Flash Storage metrics. Every millisecond we spend waiting for the Flash Storage CPU is a millisecond higher latency.
By offloading common Flash Storage system tasks from a 'generic CPU' to a 'custom FPGA' we can dramatically reduce the latency.
The IBM Flash System 900 series uses FPGA's to process the hardware I/O logic, look up tables, write buffers, direct memory access AND compression.
Yup, you heard me right. You can process the compression algorithm on the FPGAs to reduce the latency. In fact, when you do compression via FPGA on IBM flash there is ZERO latency impact.
The proof is in the pudding and IBM recently demonstrated the power of this approach with a system that delivers 15 Million IOPS at 7 us latency.