Accelerating Hash-Based Query Processing Operations on FPGAs by a Hash Table Caching Technique
Document typeConference lecture
PublisherSpringer International Publishing
Rights accessOpen Access
Extracting valuable information from the rapidly growing field of Big Data faces serious performance constraints, especially in the software-based database management systems (DBMS). In a query processing system, hash-based computational primitives such as the hash join and the group-by are the most time-consuming operations, as they frequently need to access the hash table on the high-latency off-chip memories and also to traverse whole the table. Subsequently, the hash collision is an inherent issue related to the hash tables, which can adversely degrade the overall performance. In order to alleviate this problem, in this paper, we present a novel pure hardware-based hash engine, implemented on the FPGA. In order to mitigate the high memory access latencies and also to faster resolve the hash collisions, we follow a novel design point. It is based on caching the hash table entries in the fast on-chip Block-RAMs of FPGA. Faster accesses to the correspondent hash table entries from the cache can lead to an improved overall performance. We evaluate the proposed approach by running hash-based table join and group-by operations of 5 TPC-H benchmark queries. The results show 2.9×–4.4× speedups over the cache-less FPGA-based baseline.
CitationSalami, B. [et al.]. Accelerating Hash-Based Query Processing Operations on FPGAs by a Hash Table Caching Technique. A: 2016 LatinAmerican High Performance Computing Conference (CARLA), México, Aug 29-Sep 02, 2016. "CARLA 2016: High Performance Computing". Springer International Publishing, 2017, p. 131-145.
All rights reserved. This work is protected by the corresponding intellectual and industrial property rights. Without prejudice to any existing legal exemptions, reproduction, distribution, public communication or transformation of this work are prohibited without permission of the copyright holder