  The cost of moving data between the memory units and the compute units is a
major contributor to the execution time and energy consumption of modern
workloads in computing systems. At the same time, we are witnessing an enormous
amount of data being generated across multiple application domains. These
trends suggest a need for a paradigm shift towards a data-centric approach
where computation is performed close to where the data resides. Further, a
data-centric approach can enable a data-driven view where we take advantage of
vast amounts of available data to improve architectural decisions.
  As a step towards modern architectures, this dissertation contributes to
various aspects of the data-centric approach and proposes several data-driven
mechanisms.
  First, we design NERO, a data-centric accelerator for a real-world weather
prediction application. Second, we explore the applicability of different
number formats, including fixed-point, floating-point, and posit, for different
stencil kernels. Third, we propose NAPEL, an ML-based application performance
and energy prediction framework for data-centric architectures. Fourth, we
present LEAPER, the first use of few-shot learning to transfer FPGA-based
computing models across different hardware platforms and applications. Fifth,
we propose Sibyl, the first reinforcement learning-based mechanism for data
placement in hybrid storage systems.
  Overall, this thesis provides two key conclusions: (1) hardware acceleration
on an FPGA+HBM fabric is a promising solution to overcome the data movement
bottleneck of our current computing systems; (2) data should drive system and
design decisions by leveraging inherent data characteristics to make our
computing systems more efficient.
