  FPGAs are starting to be enhanced with High Bandwidth Memory (HBM) as a way
to reduce the memory bandwidth bottleneck encountered in some applications and
to give the FPGA more capacity to deal with application state. However, the
performance characteristics of HBM are still not well specified, especially in
the context of FPGAs. In this paper, we bridge the gap between nominal
specifications and actual performance by benchmarkingHBM on a state-of-the-art
FPGA, i.e., a Xilinx Alveo U280 featuring a two-stack HBM subsystem. To this
end, we propose Shuhai, a benchmarking tool that allows us to demystify all the
underlying details of HBM on an FPGA. FPGA-based benchmarking should also
provide a more accurate picture of HBM than doing so on CPUs/GPUs, since
CPUs/GPUs are noisier systems due to their complex control logic and cache
hierarchy. Since the memory itself is complex, leveraging custom hardware logic
to benchmark inside an FPGA provides more details as well as accurate and
deterministic measurements. We observe that 1) HBM is able to provide up to
425GB/s memory bandwidth, and 2) how HBM is used has a significant impact on
performance, which in turn demonstrates the importance of unveiling the
performance characteristics of HBM so as to select the best approach. As a
yardstick, we also applyShuhaito DDR4to show the differences between HBM and
DDR4.Shuhai can be easily generalized to other FPGA boards or other generations
of memory, e.g., HBM3, and DDR3. We will makeShuhaiopen-source, benefiting the
community
