  Processing-in-memory (PIM) architecture is an inherent match for data
analytics application, but we observe major challenges to address when
accelerating it using PIM. In this paper, we propose Darwin, a practical
LRDIMM-based multi-level PIM architecture for data analytics, which fully
exploits the internal bandwidth of DRAM using the bank-, bank group-, chip-,
and rank-level parallelisms. Considering the properties of data analytics
operators and DRAM's area constraints, Darwin maximizes the internal data
bandwidth by placing the PIM processing units, buffers, and control circuits
across the hierarchy of DRAM. More specifically, it introduces the bank
processing unit for each bank in which a single instruction multiple data
(SIMD) unit handles regular data analytics operators and bank group processing
unit for each bank group to handle workload imbalance in the condition-oriented
data analytics operators. Furthermore, Darwin supports a novel PIM instruction
architecture that concatenates instructions for multiple thread executions on
bank group processing entities, addressing the command bottleneck by enabling
separate control of up to 512 different in-memory processing units
simultaneously. We build a cycle-accurate simulation framework to evaluate
Darwin with various DRAM configurations, optimization schemes and workloads.
Darwin achieves up to 14.7x speedup over the non-optimized version. Finally,
the proposed Darwin architecture achieves 4.0x-43.9x higher throughput and
reduces energy consumption by 85.7% than the baseline CPU system (Intel Xeon
Gold 6226 + 4 channels of DDR4-2933). Compared to the state-of-the-art PIM,
Darwin achieves up to 7.5x and 7.1x in the basic query operators and TPC-H
queries, respectively. Darwin is based on the latest GDDR6 and requires only
5.6% area overhead, suggesting a promising PIM solution for the future main
memory system.
