  It has become increasingly difficult to understand the complex interaction
between modern applications and main memory, composed of DRAM chips.
Manufacturers are now selling and proposing many different types of DRAM, with
each DRAM type catering to different needs (e.g., high throughput, low power,
high memory density). At the same time, the memory access patterns of prevalent
and emerging workloads are rapidly diverging, as these applications manipulate
larger data sets in very different ways. As a result, the combined
DRAM-workload behavior is often difficult to intuitively determine today, which
can hinder memory optimizations in both hardware and software.
  In this work, we identify important families of workloads, as well as
prevalent types of DRAM chips, and rigorously analyze the combined
DRAM--workload behavior. To this end, we perform a comprehensive experimental
study of the interaction between nine different DRAM types and 115 modern
applications and multiprogrammed workloads. We draw 12 key observations from
our characterization, enabled in part by our development of new metrics that
take into account contention between memory requests due to hardware design.
Notably, we find that (1) newer DRAM types such as DDR4 and HMC often do not
outperform older types such as DDR3, due to higher access latencies and, in the
case of HMC, poor exploitation of locality; (2) there is no single DRAM type
that can cater to all components of a heterogeneous system (e.g., GDDR5
significantly outperforms other memories for multimedia acceleration, while HMC
significantly outperforms other memories for network acceleration); and (3)
there is still a strong need to lower DRAM latency, but unfortunately the
current design trend of commodity DRAM is toward higher latencies to obtain
other benefits. We hope that the trends we identify can drive optimizations in
both hardware and software design.
