This website is under development. If you come accross any issues, please report them to Konstantinos Kanellis (kkanellis@cs.wisc.edu) or Yannis Chronis (chronis@google.com).

Program your (custom) SIMD instruction set on FPGA in C++

Authors:
Johannes Pietrzyk, Alexander Krause, Christian Färber, Dirk Habich, Wolfgang Lehner
Abstract

Field Programmable Gate Arrays (FPGAs) are more and more becoming a viable option for implementing data processing pipelines as their computing capacity as well as the access bandwidth between host and device memory continue to increase. Unfortunately, nowadays hardware description languages are still mainly used for programming FPGAs which implies major limitations. To tackle this issue, our paper shows that the general-purpose parallel processing architecture SIMD (Single Instruction Multiple Data) is a perfect match for FPGAs. With this specific architecture, we are able to consider an FPGA as SIMD processing unit and the necessary SIMD instruction set can now be implemented in C++. As we will present, this offers a lot of advantages if both software (SIMDified query processing) and hardware can be written consistently in C++.