Jens Teubner, Louis Woods. Snowfall: Hardware Stream Analysis Made Easy. In Theo Härder, Wolfgang Lehner, Bernhard Mitschang, Harald Schöning, Holger Schwarz, editors, Datenbanksysteme für Business, Technologie und Web (BTW), 14. Fachtagung des GI-Fachbereichs Datenbanken und Informationssysteme (DBIS), 2.-4.3.2011 in Kaiserslautern, Germany. Volume 180 of LNI, pages 738-741, GI, 2011.
Field-programmable gate arrays (FPGAs) are chip devices that can be runtime-reconfigured to realize arbitrary processing tasks directly in hardware. Industrial products as well as research prototypes demonstrated how this capability can be exploited to build highly efficient processors for data warehousing, data mining, or stream analysis tasks.
On the flip side, the construction of dedicated hardware circuits requires considerable engineering efforts and skills that are often not available in application-focussed development teams. To bridge this gap, at ETH we have developed a set of tools that aid developers of high-performance stream processing solutions and enable agile hardware generation for changing application demands.
In this demonstration, we showcase Snowfall, a compiler tool for low-level stream analysis. Comparable to scanner generators for software-based systems (e.g., lex/flex), Snowfall can be used to decode incoming data streams in hardware, react to low-level patterns in a stream, and perform initial input data analysis. Snowfall plays well together with Glacier, a query-to-hardware compiler that we described and demonstrated in. A typical use case is to use Snowfall for input parsing and pre-processing, then perform SQL-style query processing on top with a hardware query plan obtained with the help of Glacier.
In the demo, we illustrate Snowfall based on a real-world use case with exceptionally high demands for throughput and latency. With the help of Snowfall, we perform risk checking for financial trading applications. Snowfall allows for a declarative description of the problem, yet will generate a hardware circuit that can process input streams in real time.