  Persistent memory (pmem) products bring the persistence domain up to the
memory level. Intel recently introduced the eADR feature that guarantees to
flush data buffered in CPU cache to pmem on a power outage, thereby making the
CPU cache a transient persistence domain. Researchers have explored how to
enable the atomic durability for applications' in-pmem data. In this paper, we
exploit the eADR-supported CPU cache to do so. A modified cache line, until
written back to pmem, is a natural redo log copy of the in-pmem data. However,
a write-back due to cache replacement or eADR on a crash overwrites the
original copy. We accordingly develop Hercules, a hardware logging design for
the transaction-level atomic durability, with supportive components installed
in CPU cache, memory controller (MC), and pmem. When a transaction commits,
Hercules commits on-chip its data staying in cache lines. For cache lines
evicted before the commit, Hercules asks the MC to redirect and persist them
into in-pmem log entries and commits them off-chip upon committing the
transaction. Hercules lazily conducts pmem writes only for cache replacements
at runtime. On a crash, Hercules saves metadata and data for active
transactions into pmem for recovery. Experiments show that, by using CPU cache
for both buffering and logging, Hercules yields much higher throughput and
incurs significantly fewer pmem writes than state-of-the-art designs.
