tops, mobile phones, smart glasses,
tablets, drones, vacuum cleaners, electric cars, and even electrical grid substations. Thus, this work has potential
for enormous real-world impact. Finally, from a commercial perspective,
it is fascinating to note the authors
work at Microsoft and Tesla. Microsoft
has long viewed itself as an operating
systems and applications provider for
desktop, laptop, and mobile computers, and it now appears to wish to be
the operating system for vacuum cleaners and cars, as well.
The paper offers some key insights.
To start, batteries are not a single, homogeneous technology, but complex
devices that represent a balance between power density, energy density,
cost, volume, and mass, amongst other
things. So, choosing the right battery
for a device is a non-trivial task. Second,
the paper drives home the point that,
just as a memory system combines heterogeneous technologies, so should an
ideal battery system. Third, the use of
a simple but powerful software-hard-ware interface allows the development
of arbitrarily complex operating strategies without require hardware to be
rebuilt. This enables rapid innovation
in storage systems. Finally, the evaluation of the system uses both a prototype hardware system and a validated
software emulator. This combination
allows rapid exploration of the design
space without sacrificing realism.
In summary, although at first glance
the paper seems to be about a dry and
somewhat technical topic—the management of heterogeneous systems—
when viewed from a different perspective, it represents the advancement of
computational thinking, general-purpose computing, and Microsoft into
new realms. Enjoy!
Srinivasan Keshav is a professor and Cisco Chair at the
David R. Cheriton School of Computer Science, University
of Waterloo, Canada.
Copyright held by author.
ABOUT FOUR DECADES ago, the widespread availability of low-cost, general-purpose microprocessors allowed
them to be incorporated into many
real-world systems, where they replaced analog or purpose-built digital
controls. For instance, small microprocessors are embedded in systems as
diverse as laser printers, DVD players,
and digital watches. However, these microprocessors are incapable of hosting
a general-purpose operating system,
so programming them has required
specialized technically adept programmers. In recent years, with the advent
of low-cost multi-GHz microprocessors that can host a general-purpose
operating system, such as Linux or
Android, even naïve programmers can
use a sophisticated high-level development environment to engage with the
physical world. Under the broad banner of cyber-physical systems, this has
allowed computation to make inroads
into areas as diverse as the electrical
grid, water distribution systems, building heating, ventilation and air conditioning systems, and electric vehicles.
How should such systems be designed? A time-tested principle in computer systems design is to use an interface to separate an abstraction from
its implementation.a This separation
allows independent evolution of each
component and for complex policies
to be layered over underlying simple
mechanisms, which in turn could be
composed from yet simpler ones. A remarkable success of this design philosophy is the architecture of the Internet,
where each layer of abstraction adds a
limited level of additional complexity,
and the top level of the layered protocol stack allows even naïve programmers to access the entire power of the
Internet: a novice Python programmer
can, in a few lines of code, obtain a reliable, byte-ordered, end-to-end connec-
a Lampson, B.W. Hints for computer system
design. ACM SIGOPS Review 17, 5 (1983).
tion from any Internet endpoint to any
other endpoint, a task that requires a
considerable amount of complex protocol machinery to accomplish.
The following paper represents a
convergence of these two evolutionary
threads. It combines the use of a general-purpose operating system to manage
a new category of physical devices (
storage batteries) along with the design of
an interface that cleanly separates the
complex operating policies for the battery system from the physical mechanisms that implement this interface.
This allows programmers to come up
with new, user- or application-specific
storage management policies without
having to understand the complexities
of a battery management system.
This paper is significant along three
dimensions. First, in order to provide
the interface, it was necessary to redesign battery management hardware.
The new hardware (a switched mode
regulator) allows fine-grained control
over the amount of power entering or
leaving each battery, something heretofore impossible. It is interesting to
see how the need for a good software
interface forced hardware innovation.
Second, the type of battery system discussed in this paper can be found in a
dizzying array of modern devices: lap-
The following paper
drives home the point
that just as a memory
system combines
heterogeneous
technologies,
so should an ideal
battery system.
Technical Perspective
The Chemistry of
Software-Defined Batteries
By Srinivasan Keshav
research highlights
DOI: 10.1145/3007177
To view the accompanying paper,
visit doi.acm.org/10.1145/3007179