Compute-in-Memory (CIM) is a very active topic in current research, aiming to perform arithmetic operations directly on information stored in a memory array. There are two benefits to that: Firstly, it would enable massively parallel computation on a large amount of data at the same time. Secondly, it would save power that is usually associated with moving data through the memory hierarchy to a CPU or GPU.
While there are a myriad of approaches to addressing this objective, there is a strong interest to stay close to existing memory technologies. A few years ago, researchers have proposed a method to implement parallel AND and OR operations in standard DRAM. Essentially, two or more rows of memory capacitors in a DRAM are connected so that their charge can equalize. This allows implementing several logic operations in the analog domain without adding any additional circuitry to the DRAM array.
Curiously, another group found a way to implement these operations in off-the-shelf DRAM ("ComputeDRAM: In-Memory Compute Using Off-the-Shelf DRAMs") by cleverly violating the timing parameters. Earlier it was also shown how to copy data within the DRAM wihtout leaving the chip ("RowClone: Fast and Energy-Efficient
In-DRAM Bulk Data Copy and Initialization").
Taking these building blocks, a more recent publication even implements parts of large language model (LLM) computations in memory using this approach. ("MVDRAM: Enabling GeMV Execution in Unmodified DRAM for Low-Bit LLM Acceleration").
Now, if this isn't a glorious hack, what is?
Now, of course working with modern DRAMs is not that easy, and this reasearch required a relatively advanced setup with a modern FPGA ("DRAM Bender")
But, how about using an older, slow, DRAM and pair it with a modern microcontroller? Let's see how far we get.
Damn, I gave away my old DRAM some time ago. Never mind, if the technique is practical to manufacture then I expect to see a new category of chips come onto the market.