  RowHammer is a prime example of read disturbance in DRAM where repeatedly
accessing (hammering) a row of DRAM cells (DRAM row) induces bitflips in other
physically nearby DRAM rows. RowHammer solutions perform preventive actions
(e.g., refresh neighbor rows of the hammered row) that mitigate such bitflips
to preserve memory isolation, a fundamental building block of security and
privacy in modern computing systems. However, preventive actions induce
non-negligible memory request latency and system performance overheads as they
interfere with memory requests in the memory controller. As shrinking
technology node size over DRAM chip generations exacerbates RowHammer, the
overheads of RowHammer solutions become prohibitively large. As a result, a
malicious program can effectively hog the memory system and deny service to
benign applications by causing many RowHammer preventive actions. In this work,
we tackle the performance overheads of RowHammer solutions by tracking the
generators of memory accesses that trigger RowHammer solutions. To this end, we
propose BreakHammer. BreakHammer cooperates with existing RowHammer solutions
to identify hardware threads that trigger preventive actions. To do so,
BreakHammer estimates the RowHammer likelihood of a thread, based on how
frequently it triggers RowHammer preventive actions. BreakHammer limits the
number of on-the-fly requests a thread can inject into the memory system based
on the thread's RowHammer likelihood. By doing so, BreakHammer significantly
reduces the number of performed counter-measures, improves the system
performance by an average (maximum) of 48.7% (105.5%), and reduces the maximum
slowdown induced on a benign application by 14.6% with near-zero area overhead
(e.g., 0.0002% of a highend processor's chip area).
