  Bulk bitwise operations, i.e., bitwise operations on large bit vectors, are
prevalent in a wide range of important application domains, including
databases, graph processing, genome analysis, cryptography, and
hyper-dimensional computing. In conventional systems, the performance and
energy efficiency of bulk bitwise operations are bottlenecked by data movement
between the compute units and the memory hierarchy. In-flash processing (i.e.,
processing data inside NAND flash chips) has a high potential to accelerate
bulk bitwise operations by fundamentally reducing data movement through the
entire memory hierarchy. We identify two key limitations of the
state-of-the-art in-flash processing technique for bulk bitwise operations; (i)
it falls short of maximally exploiting the bit-level parallelism of bulk
bitwise operations; (ii) it is unreliable because it does not consider the
highly error-prone nature of NAND flash memory. We propose Flash-Cosmos (Flash
Computation with One-Shot Multi-Operand Sensing), a new in-flash processing
technique that significantly increases the performance and energy efficiency of
bulk bitwise operations while providing high reliability. Flash-Cosmos
introduces two key mechanisms that can be easily supported in modern NAND flash
chips: (i) Multi-Wordline Sensing (MWS), which enables bulk bitwise operations
on a large number of operands with a single sensing operation, and (ii)
Enhanced SLC-mode Programming (ESP), which enables reliable computation inside
NAND flash memory. We demonstrate the feasibility of performing bulk bitwise
operations with high reliability in Flash-Cosmos by testing 160 real 3D NAND
flash chips. Our evaluation shows that Flash-Cosmos improves average
performance and energy efficiency by 3.5x/32x and 3.3x/95x, respectively, over
the state-of-the-art in-flash/outside-storage processing techniques across
three real-world applications.
