  We describe Janus, a massively parallel FPGA-based computer optimized for the
simulation of spin glasses, theoretical models for the behavior of glassy
materials. FPGAs (as compared to GPUs or many-core processors) provide a
complementary approach to massively parallel computing. In particular, our
model problem is formulated in terms of binary variables, and floating-point
operations can be (almost) completely avoided. The FPGA architecture allows us
to run many independent threads with almost no latencies in memory access, thus
updating up to 1024 spins per cycle. We describe Janus in detail and we
summarize the physics results obtained in four years of operation of this
machine; we discuss two types of physics applications: long simulations on very
large systems (which try to mimic and provide understanding about the
experimental non-equilibrium dynamics), and low-temperature equilibrium
simulations using an artificial parallel tempering dynamics. The time scale of
our non-equilibrium simulations spans eleven orders of magnitude (from
picoseconds to a tenth of a second). On the other hand, our equilibrium
simulations are unprecedented both because of the low temperatures reached and
for the large systems that we have brought to equilibrium. A finite-time
scaling ansatz emerges from the detailed comparison of the two sets of
simulations. Janus has made it possible to perform spin-glass simulations that
would take several decades on more conventional architectures. The paper ends
with an assessment of the potential of possible future versions of the Janus
architecture, based on state-of-the-art technology.
