  Die-stacked DRAM has been proposed for use as a large, high-bandwidth,
last-level cache with hundreds or thousands of megabytes of capacity. Not all
workloads (or phases) can productively utilize this much cache space, however.
Unfortunately, the unused (or under-used) cache continues to consume power due
to leakage in the peripheral circuitry and periodic DRAM refresh. Dynamically
adjusting the available DRAM cache capacity could largely eliminate this energy
overhead. However, the current proposed DRAM cache organization introduces new
challenges for dynamic cache resizing. The organization differs from a
conventional SRAM cache organization because it places entire cache sets and
their tags within a single bank to reduce on-chip area and power overhead.
Hence, resizing a DRAM cache requires remapping sets from the powered-down
banks to active banks.
  In this paper, we propose CRUNCH (Cache Resizing Using Native Consistent
Hashing), a hardware data remapping scheme inspired by consistent hashing, an
algorithm originally proposed to uniformly and dynamically distribute Internet
traffic across a changing population of web servers. CRUNCH provides a
load-balanced remapping of data from the powered-down banks alone to the active
banks, without requiring sets from all banks to be remapped, unlike naive
schemes to achieve load balancing. CRUNCH remaps only sets from the
powered-down banks, so it achieves this load balancing with low bank
power-up/down transition latencies. CRUNCH's combination of good load balancing
and low transition latencies provides a substrate to enable efficient DRAM
cache resizing.
