Research Goals

Discovering Codes and Primitives in the Brain

A constant chattering of 80 billion neurons through 100 trillion synapses could easily overheat our dense brains. To avoid that, each neuron spikes sparingly, and each spike carries as many bits of information as possible. This series of projects explore how spike activity encodes information, and how dendritic mechanisms decode this information.

Scaling Neuromorphic Systems

We translate the brain's spike encoding and dendritic decoding mechanisms into hardware designs that realize the same signaling codes and computational primitives to scale neuromorphic systems. As the problem size grows, the energy demands grow more favorably. For example, when there are only a few neurons chattering, a neuron can get its message across by increasing its volume (i.e, spiking at a higher rate), but when there are many neurons, it's much better for them to take turns (i.e, coordinate their spiking). Thus, the latter code scales more favorably.

Programming Neuromorphic Systems

To exploit these codes and primitives, which define our neuromorphic hardware's instruction set and data operations, we must devise new algorithms. To this end, we develop a full software stack, with clean abstractions and a high-level user interface. We aim to solve broad engineering challenges such as migrating tasks from the datacenter to the smartphone. This would improve privacy, enhance user experience, and reduce carbon emissions.