  Data movement is one of the main challenges of contemporary system
architectures. Near-Data Processing (NDP) mitigates this issue by moving
computation closer to the memory, avoiding excessive data movement. Our
proposal, Vector-In-Memory Architecture(VIMA), executes large vector
instructions near 3D-stacked memories using vector functional units and uses a
small data cache to enable short-term data reuse. It provides an easy
programming interface and guarantees precise exceptions. When executing
stream-behaved applications using a single core, VIMA offers a speedup of up to
26x over a CPU system baseline with vector operations in a single-core
processor while spending 93% less energy.
