In Android systems, there is a potential for significant power consumption due to entire DDR segments being enabled even during periods of lite usage of system when only a fraction of it is actively used, thereby consuming power unnecessarily.
We can optimize DDR power consumption by selectively disabling certain segments during lite system usage and enabling them when additional memory is required. By detecting memory events that exceed specific usage thresholds, one or more DDR segments are enabled successively to meet the demand, ensuring that unused segments remain collapsed or disabled during lite usage. This results in power reduction by turning OFF the self/auto-refresh of these DDR segments.
The memory pressure detection is done by an userspace daemon registering to Linux kernel’s PSI (Pressure Stall Information) mechanism and communicates with the kernel driver that uses memory-hotplug to dynamically add/remove DDR segments. The PASR (Partial Array Self Refresh) technology is used to control the refresh rates for these DDR segments. Importantly, the entire process of detecting memory pressure and enabling/disabling DDR segments incurs negligible latency. This helps increase overall DoU for given battery without any performance impact.