This document describes the structure and execution of the bloom filter module, implemented as a bloomFilter function.
The structure of bloomFilter
is described as follows. The primitive has two functions, bv-update
and bv-check
. It takes block RAM or URAM as internal storage for the bloom filter vectors. The input hash value is the addressing parameter for updating the bloom filter vector and checking the built vector. Chip select is based on the most significant bits (MSBs) of the hash value, and the width select is based on its least significant bits (LSBs). The total storage size is related to the value of 1 << BV_W
. Make sure the storage size is less than the maximum storage size of a single SLR, otherwise, it will result in a placing failure.
The primitive provides an efficient way to filter redundant data. It can be easily applied on the Hash Join primitive to eliminate false shoots in the Hash Join Probe, as shown below: