  Supporting atomic durability of updates for persistent memories is typically
achieved with Write-Ahead Logging (WAL). WAL flushes log entries to persistent
memory before making the actual data persistent to ensure that a consistent
state can be recovered if a crash occurs. Performing WAL in hardware is
attractive because it makes most aspects of log management transparent to
software, and it completes log persist operations (LPs) and data persist
operations (DPs) in the background, overlapping them with the execution of
other instructions.
  Prior hardware logging solutions commit atomic regions synchronously. Once
the end of a region is reached, all outstanding persist operations required for
the region to commit must be completed before instruction execution may
proceed. For undo logging, LPs and DPs are both performed synchronously to
ensure that the region commits synchronously. For redo logging, DPs can be
performed asynchronously, but LPs are performed synchronously to ensure that
the region commits synchronously. In both cases, waiting for synchronous
persist operations (LP or DP) at the end of an atomic region causes atomic
regions to incur high latency.
  To tackle this limitation, we propose ASAP, a hardware logging solution that
allows atomic regions to commit asynchronously. That is, once the end of an
atomic region is reached, instruction execution may proceed without waiting for
outstanding persist operations to complete. As such, both LPs and DPs can be
performed asynchronously. The challenge with allowing atomic regions to commit
asynchronously is that it can lead to control and data dependence violations in
the commit order of the atomic regions, leaving data in an unrecoverable state
in case of a crash. To address this issue, ASAP tracks and enforces control and
data dependencies between atomic regions in hardware to ensure that the regions
commit in the proper order.
