  Many modern workloads such as neural network inference and graph processing
are fundamentally memory-bound. For such workloads, data movement between
memory and CPU cores imposes a significant overhead in terms of both latency
and energy. A major reason is that this communication happens through a narrow
bus with high latency and limited bandwidth, and the low data reuse in
memory-bound workloads is insufficient to amortize the cost of memory access.
Fundamentally addressing this data movement bottleneck requires a paradigm
where the memory system assumes an active role in computing by integrating
processing capabilities. This paradigm is known as processing-in-memory (PIM).
Recent research explores different forms of PIM architectures, motivated by the
emergence of new technologies that integrate memory with a logic layer, where
processing elements can be easily placed. Past works evaluate these
architectures in simulation or, at best, with simplified hardware prototypes.
In contrast, the UPMEM company has designed and manufactured the first
publicly-available real-world PIM architecture. The UPMEM PIM architecture
combines traditional DRAM memory arrays with general-purpose in-order cores,
called DRAM Processing Units (DPUs), integrated in the same chip. This paper
presents key takeaways from the first comprehensive analysis of the first
publicly-available real-world PIM architecture. We provide four key takeaways
about the UPMEM PIM architecture, which stem from our study. More insights
about suitability of different workloads to the PIM system, programming
recommendations for software designers, and suggestions and hints for hardware
and architecture designers of future PIM systems are available in
arXiv:2105.03814
