Hashmaps are widely utilized data structures in many applications to perform a probe on key-value pairs. However, their performance tends to degrade with the increase in the dataset size, which leads to expensive off-chip memory accesses to perform bucket traversals associated with hash collision. In this work, we propose HashMem, a processing-in-memory (PIM) architecture designed to perform bucket traversals along the row buffers at the subarray level. Due to the inherent parallelism achieved with many concurrent subarray accesses and the massive bandwidth available within DRAM, the execution time related to bucket traversals is significantly reduced. We have evaluated two versions of HashMem, performance-optimized and area-optimized, which have a speedup of 49.1x/17.1x and 9.2x/3.2x over standard C++ map and hyper-optimized hopscotch map implementations, respectively.
翻译:哈希表是许多应用中广泛用于键值对探测的数据结构。然而,其性能会随数据集规模增大而下降,这导致因哈希冲突引发的桶遍历需要大量片外内存访问。本文提出了一种内存处理(PIM)架构HashMem,旨在子阵列级别沿着行缓冲区执行桶遍历。由于并发子阵列访问的内在并行性以及DRAM内部的高带宽,与桶遍历相关的执行时间显著减少。我们评估了HashMem的两种版本——性能优化版和面积优化版——相较于标准C++映射和超优化跳房子映射实现,分别实现了49.1倍/17.1倍和9.2倍/3.2倍的加速比。