My i7-5820K/GA-X99-UD4/2400MHz Crucial Ballistix DDR4 system was failing rowhammer (a few hundred errors per pass) until I reduced the refresh interval timing from the default of 7.8ms, in spite of the fact that DDR4 is supposed to include rowhammer mitigation (source: https://en.wikipedia.org/wiki/Row_hammer#Mitigation)
In my board's BIOS, the two settings were tREFI (default of 9360) and tREFIX9 (default of 82).
refresh interval (ms) = tREFI / (RAM clock (MHz) / 2)
tREFIX9 = 8.9 * tREFI / 1024
so...
9360/(2400/2)=7.8ms
(Source: page 123 of http://www.intel.com/content/dam/www...-datasheet.pdf)
The standard recommendation is to reduce the refresh interval to 3.9ms and thereby double the refresh rate (source: http://support.lenovo.com/us/en/prod...ity/row_hammer). Doing that gave me one error per pass at the same address both times, so I reduced the interval to 75% of 3.9ms (i.e. tREFI=3510, tREFIX9=31) and it's now error free over 8 passes overnight.
Because the memory controller is refreshing slightly more frequently, it reduces the frequency which the RAM can be accessed, so it slightly hurts performance, but I don't care too much. 45GB/s is enough for me.
In my board's BIOS, the two settings were tREFI (default of 9360) and tREFIX9 (default of 82).
refresh interval (ms) = tREFI / (RAM clock (MHz) / 2)
tREFIX9 = 8.9 * tREFI / 1024
so...
9360/(2400/2)=7.8ms
(Source: page 123 of http://www.intel.com/content/dam/www...-datasheet.pdf)
The standard recommendation is to reduce the refresh interval to 3.9ms and thereby double the refresh rate (source: http://support.lenovo.com/us/en/prod...ity/row_hammer). Doing that gave me one error per pass at the same address both times, so I reduced the interval to 75% of 3.9ms (i.e. tREFI=3510, tREFIX9=31) and it's now error free over 8 passes overnight.
Because the memory controller is refreshing slightly more frequently, it reduces the frequency which the RAM can be accessed, so it slightly hurts performance, but I don't care too much. 45GB/s is enough for me.
Comment