A Battery pack has one or more battery cells. Multiple cells
are used to achieve higher voltage or higher capacity. While
such multi-cell configurations exist today, for example in the
Surface Pro, Galaxy Tab, and iPad, these cells have the same
chemistry and are either connected in series, parallel, or a
combination thereof. They are treated as a single monolithic
battery by the OS. Our aim is to use a heterogeneous set of
cells and achieve wide dynamic characteristics by exposing
the cells directly to the OS.
The Fuel gauge keeps track of the state of charge (SoC)
of the battery by measuring the voltage across the battery
terminals, and the coulombs flowing in and out of it. This
information is exposed to the OS.
The Battery charger charges the battery with an appropriate charging current profile based on the battery’s SoC, the
terminal voltage (the potential difference between the anode
and the cathode), and the capability of the power source.
Due to the battery’s internal resistance R, the battery terminal voltage changes with the load current I due to the IR
voltage drop. The internal resistance and the battery voltage themselves change with the SoC. The job of the Voltage
Regulator is to hide these terminal voltage variations due
to changing potentials at the electrodes and the changing internal resistance and present a constant voltage to
the load. Mobile devices use switched mode voltage regulators due to their high efficiency. As the name implies, a
switch mode power supply contains a switch that opens
and closes to transfer packets of energy (Figure 2). A control loop maintains a constant voltage under varying load
currents by changing the energy per packet or the packet
Typically, all these modules are contained in a single
power management integrated circuit (PMIC), which communicates with the OS over a serial bus. In current designs,
the interactions between the OS and PMIC are limited to
query operations, such as inquiring about remaining SoC.
However, none of these APIs allow the OS to set the battery parameters, and in particular to change the amount of
charge to be drawn from or provided to each cell within a
battery pack. Through the SDB system, we propose enabling
fine grain control by exposing a richer software API to the
OS to dynamically change the amount of charge to be drawn
from or provided to each battery.
3. SDB DESIGN
SDB allows a device to use diverse batteries through fine-
grain control of the amount of charge flowing in and out
of each battery. SDB provides APIs to the OS to change the
aforementioned power values based on user workload. We
describe the SDB system in detail in this section.
3. 1. System overview
The SDB system spans components across three layers: the
batteries and their chemistry, the battery management circuit, and the OS. We outline these components and their
interactions in Figure 3.
SDB allows a system designer to combine diverse batteries. The particular batteries chosen depend on the scenario,
such as a fast charging battery and a high energy battery for
a tablet, or a bendable battery and high energy battery for a
However, combining different battery types is not trivial.
These batteries might have different capacities and different
terminal voltages. Therefore, we design a new power distribution circuit for fine-grain control of how multiple batteries are discharged to support system load. A microcontroller
interfaces between this power distribution circuitry and the
mobile device OS to control the charging and discharging of
To enable flexibility in design, and to allow quick changes
in policy, we only implement the mechanisms in hardware,
and all policies are managed and set by the OS. A runtime
component in the OS monitors the charging and discharging behavior and accordingly sets policies that meet user
expectations in terms of daily battery life and longevity of
3. 2. SDB hardware
The SDB hardware needs to support discharging and charging across multiple, heterogeneous batteries. For discharging, it has to provide a flexible mechanism for fine-grain
control of how the load current is supplied from each battery. This should support two things: coarse grain switching
of the load across multiple batteries where the total load is
supplied by a particular battery for an extended period of
time and the fine grain sharing of the load where a certain
fraction of the load is drawn from each battery.
Figure 2. Traditional power management hardware.
Capacitor Fixed charging profile
Figure 3. SDB system overview.
Power Supply Power