Impulse is a memory system architecture that adds an optional level of addr
ess indirection at the memory controller. Applications can use this level o
f indirection to remap their data structures in memory. As a result, they c
an control how their data is accessed and cached, which can improve cache a
nd bus utilization. The Impulse design does not require any modification to
processor, cache, or bus designs since all the functionality resides at th
e memory controller. As a result, Impulse can be adopted in conventional sy
stems without major system changes. We describe the design of the Impulse a
rchitecture and how an Impulse memory system can be used in a variety of wa
ys to improve the performance of memory-bound applications. Impulse can be
used to dynamically create superpages cheaply, to dynamically recolor physi
cal pages, to perform strided fetches, and to perform gathers and scatters
through indirection vectors. Our performance results demonstrate the effect
iveness of these optimizations in a variety of scenarios. Using Impulse can
speed up a range of applications from 20 percent to over a factor of 5. Al
ternatively, Impulse can be used by the OS for dynamic superpage creation;
the best policy for creating superpages using Impulse outperforms previousl
y known superpage creation policies.