Main memory is responsible for a significant fraction of the energy
consumed by servers. Prior work has focused on exploiting memory
low-power states to conserve energy. However, these states require
entire ranks of DRAM to be idle, which is difficult to achieve even in
lightly loaded servers. In this work, we propose three techniques for
exploiting *active* low-power modes to conserve full-system energy,
while remaining within user-prescribed performance bounds. The first
technique, called MemScale, creates active memory system low-power
modes by applying dynamic voltage and frequency scaling to the memory
controller and dynamic frequency scaling to the memory channels and
DRAM devices. The second technique, called CoScale, coordinates the CPU
and main memory active low-power modes to avoid instability and
increase energy savings. The third technique, called MultiScale,
tackles servers with multiple memory controllers, by coordinating the
active low-power modes across the controllers. Our extensive results
demonstrate that the three techniques reduce full-system energy
consumption significantly, compared to prior approaches, while
consistently remaining within the user-prescribed performance bounds.
We conclude that the potential benefits of those three mechanisms and
policies more than compensate for their small hardware cost.