Our goal is to enable the execution of complex operations in-memory with simple changes to commodity DRAM that synergize well with available PuM-based operations [1]}, [2]}, [3]}, [4]}, [5]}.
To this end, we propose pLUTo: processing-in-memory with lookup table (LUT) operations, a DRAM substrate that enables massively parallel in-DRAM LUT queries.
pLUTo extends current PuM-enabled DRAM substrates [1]}, [2]} by integrating a novel LUT-querying mechanism that can be used to more efficiently perform arithmetic operations (e.g., multiplication, division), transcendental functions (e.g., binarization, exponentiation), and access precomputed results (e.g., memoization, LUT queries in cryptographic algorithms).
pLUTo stands out from prior works by being the first work to enable the massively parallel bulk querying of LUTs inside the DRAM array, which is our main contribution.
pLUTo's careful design enables these LUTs, which can be stored and queried directly inside memory, to express complex operations (e.g., multiplication, division, transcendental, memoization) and enables two critical LUT-based capabilities:
1) querying of LUT tables of arbitrary size and
2) the pipelining of LUT operations,
which significantly synergize with and enhance existing PuM mechanisms (e.g.,  [3]}, [4]}, [1]}).
Furthermore, LUTs are an integral component of many widespread algorithms, including AES, Blowfish, RC4, and CRC and Huffman codes [11]}, [12]}, [13]}, [14]}, [15]}.
