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 implementations.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 connection 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: laptops, 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 following paper drives home the point that just as a memory system combines heterogeneous technologies, so should an ideal battery system.
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-hardware 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!
a. Lampson, B.W. Hints for computer system design. ACM SIGOPS Review 17, 5 (1983).
To view the accompanying paper, visit doi.acm.org/10.1145/3007179
The Digital Library is published by the Association for Computing Machinery. Copyright © 2016 ACM, Inc.
No entries found