Flikker: Saving DRAM Refresh Power Through Critical Data Partitioning

Song Liu, Karthik Pattabiraman, Thomas Moscibroda and Benjamin Zorn, Proceedings of the Symposium on Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2011. [ PDF | Talk Slides ]
You can find the tech report version of this paper here

NOTE: The technical report of the Flikker paper was made public in 2009, two years before its publication at ASPLOS’11

Abstract: Energy has become a first-class design constraint in computer systems. Memory is a significant contributor to total system power. This paper introduces Flikker, an application-level technique to reduce refresh power in DRAM memories. Flikker enables developers to specify critical and non-critical data in programs and the run- time system allocates this data in separate parts of memory. The portion of memory containing critical data is refreshed at the regular refresh-rate, while the portion containing non-critical data is refreshed at substantially lower rates. This partitioning saves energy at the cost of a modest increase in data corruption in the non-critical data. Flikker thus exposes and leverages an interesting trade-off between energy consumption and hardware correctness. We show that many applications are naturally tolerant to errors in the non-critical data, and in the vast majority of cases, the errors have little or no impact on the application’s final outcome. We also find that Flikker can save between 20-25% of the power consumed by the memory sub-system in a mobile device, with negligible impact on application performance. Flikker is implemented almost entirely in software, and requires only modest changes to the hardware.