Computers that harvest energy from radio waves, solar energy, heat and vibrations have tremendous technological potential.
But such energy sources provide intermittent power, making energy-harvesting computers unreliable. The problem is in the programming.
"Energy is not always available in the environment for a device to harvest," Brandon Lucia, an assistant professor of electrical and computer engineering at Carnegie Mellon University, explained in a news release. "Intermittent operation makes it difficult to build applications because existing software programming languages -- and programmers themselves -- assume that energy is a continuously available resource."
Lucia and his colleagues at CMU have a solution: a new computer programming language called Chain. The new language ensures programs can pick up where they left off when interrupted by a brief power outage.
"When power is not continuously available, power failures disrupt the software's execution, often leading to unrecoverable errors," Lucia explained. "Chain solves this problem by requiring computational tasks in the program to use a novel channel-based memory abstraction that ensures tasks complete without error."
Researchers are preparing to install Chain-based software on an energy-harvesting satellite. The computer satellite consists of two tiny postage stamp-sized chips powered by a miniature solar panel array.
Chain programming will ensure the computer can efficiently collect, store and transmit data back to Earth using limited power resources.
"If we can guarantee that even tiny, energy-harvesting satellites operate without interruption, we can make it easier to conduct other scientific research in space," said Lucia. "Further out, we may even see future applications like extraterrestrial natural resource discovery relying on this technology."
Lucia and his research partners are preparing to present their programming language with attendees of the SPLASH conference in Amsterdam this weeked, organized annually by the Association for Computing Machinery.