17.5.8.2.3 Speculative Refresh

When the burst refresh is enabled (RFSHCTL0.refresh_burst > 0), you can also make use of a feature called speculative refresh.

Burst refresh is implemented by counting the number of times tREFI expires and issuing a group of refreshes when that number reaches the refresh burst number. Once tREFI has expired at least once, the UDDRC can also perform speculative refreshes. This is done by automatically inserting refreshes when there are no transactions pending in the CAM to a rank/bank address.

The RFSHCTL0.refresh_to_x1_x32 register determines how long the UDDRC must be idle before considering inserting these speculative refreshes. Each time a speculative refresh is performed, the count of tREFI expirations is decremented, thereby increasing the time before a burst of refreshes is required. This also ensures that speculative refreshes never occur more often than is required to keep the SDRAM properly refreshed.

If a new read or write transaction is accepted by the UDDRC during speculative refresh, the UDDRC services it as soon as legally possible. Most often it entails waiting for the required NOP cycles after a refresh before performing an activate and then servicing the read or write. If the UDDRC has begun closing pages for a speculative refresh but has not yet issued the refresh when the new transaction arrives, the speculative refresh is canceled.