Home > Tracks > DSP & Machine Learning

Low-Power Algorithmic Approaches in DSP Implementations

Bryant Sorensen - Watch Now

Hearing aid signal processing is a challenging task because of the extreme low-power, highly-constrained cycle performance required. The audio signal processing is always on, and requires complex algorithms and computations. A typical hearing aid will have multi-band analysis and synthesis, automatic feedback cancellation, environment detection and action, automatic gain control, and user interface - and AI is arriving as well. In order to reconcile the two disparate requirements (complexity vs. low power & reduced cycles), various approaches are needed to achieve low power while still providing sophisticated calculations. In this talk, I will discuss a sampling of numerical methods, shortcuts, refactorings, and approximations which significantly lower power in DSP algorithms. This will be an overview which I hope sparks thinking to extend the presented concepts to other low-power algorithmic tasks. While the focus is on algorithms and computations, some of these topics will also touch on implications to HW design, HW vs. FW tradeoffs, and ASIP / programmable DSP core design.

M↓ MARKDOWN HELP
italicssurround text with
*asterisks*
boldsurround text with
**two asterisks**
hyperlink
[hyperlink](https://example.com)
or just a bare URL
code
surround text with
`backticks`
strikethroughsurround text with
~~two tilde characters~~
quote
prefix with
>

Doini
Score: 0 | 3 months ago | no reply

Thank you for the nice presentation!

Cesar_Santos
Score: 0 | 4 months ago | 2 replies

This may sound repetitive based on previous comment, but still worth mentioned: congrats for the presentation. Bastante enriquecedora e um ótimo resumo :)
As my question, since I'm not really versed into DSP, I'd like to know if you recommend any book/tutorial/online course to start into this world. Ideally, I'd like to see if there's a problem definition, modelling and then creating a solution. Unfortunately most resources I've seen until now already provides an equation then an algorithm, or simply the algorithm, so hard for me as a newbie to understand in which context I can apply such knowledge.
Thanks in advance.

BryantSorensenSpeaker
Score: 0 | 4 months ago | 1 reply

Cesar - sorry for the delay in replying. Part of it is that I don't have a really good book to recommend. I started learning DSP in university, where we started with signals and systems, then went to more classic DSP concepts. I can only suggest you look for a book that discusses things like energy signals, power signals, periodic signals, linear time invariance, Laplace transforms, and Fourier Transforms. Sorry, no shortcuts here if you really want to learn DSP. You might look on dsprelated.com for suggestions as well. Bryant

Cesar_Santos
Score: 0 | 3 months ago | no reply

Until then, I only had http://www.dspguide.com/ as a reference when I took the course back in 2011. After this lecture, I have more places to go for and ask in case of doubts. Thanks for the feedback.

Umesh
Score: 0 | 3 months ago | 1 reply
Cesar_Santos
Score: 0 | 3 months ago | no reply

Thanks for this amazing suggestion :)

EEngstrom77
Score: 0 | 5 months ago | 1 reply

I loved the injected humor and thanks for all of the links. I was just searching for Numerical Recipes in C the other day!

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

Thanks, very kind.

remco_at_itsonlyaudio.com
Score: 0 | 5 months ago | 1 reply

Excellent presentation, some tools I already had on my belt, some new ones I've learned.
I would consider 'maximized performance DSP algorithms' or some such as a generalized title, this pertains to many more fields than just low-power. Thanks for the great work.

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

Thanks for watching. I'm glad there's some crossover

RichardLyons
Score: 0 | 5 months ago | 1 reply

I liked this presentation. It provided a number of interesting ideas that deserve further study.

BryantSorensenSpeaker
Score: 0 | 5 months ago | 1 reply

Thank you!

RichardLyons
Score: 0 | 5 months ago | 1 reply

Hi Bryant, I do have a comment. Instead of a photo of James Taylor maybe next time you could use a picture of Elizabeth Taylor. ;-)

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

That would be old school, for sure. But I'm not sure what series Elizabeth had, other than her perfumes...
I considered Taylor Swift too. :)

Pi
Score: 0 | 5 months ago | 1 reply

Excellent presentation! Definitely some practical lessons I can apply directly to my work.

BryantSorensenSpeaker
Score: 0 | 5 months ago | 1 reply

Thank you!

Pi
Score: 0 | 5 months ago | 1 reply

I think I came up with a question worth asking.
When developing a system, would you normally use these power-saving approximations from the start, or do you begin with more precise solutions and then substitute as needed when moving towards a final implementation?

BryantSorensenSpeaker
Score: 2 | 5 months ago | 1 reply

The standard answer is, "it depends" (of course - how cliche).
There are some things I always use. I generally work with fixed point processors. I have yet to encounter one that had a divide instruction, other than synthetic division (1b per iteration). So I generally use log2 to do my divides as needed, as many processors have either an instruction, an accelerator, or normalization means. Newton-Raphson is my backup.
It's also rare to find a processor with sine, cosine, tangent, arctan, etc. calculation instructions. Some have acceleration, but these can be slow. I generally do these numerically.
For square root, I either work in the log2 domain (divide by 2), or use a Newton-Raphson.
I've used LUTs a lot, generally to kick-start or give a low-precision result. I've used them for log2, inverse, square root.
Single-pole filters - ALL the time.
For reduced-rate processing, we usually see what fits first, then cut it down as needed.
Powers of two - use it for smoothing all the time; other places we see if we can get away with a full multiply. Many times, the multiply is equal in cycles (hopefully 1) to a shift - and on a programmable processor, power is primarily correlated to cycles.
Bit manipulations are as needed.
For filters, FFTs, and the like - we usually start with a more direct approach, then refine them down if needed. Those take time, and most processors already account well for them.

In sum, I would say it's mainly determined by the processor or other resources I have when I start a project. If I have instructions or HW accelerators, I use those first.

Pi
Score: 0 | 5 months ago | 1 reply

Thanks for the very complete answer!
On a somewhat related topic, I'm finding myself at a loss for sources of good time-domain signal processing techniques. FFTs are expensive, and incur a delay penalty based on the transform window that can be just a bit too much for real-time processing.
Do you have any good reference books for time-domain or low-delay DSP algorithms?

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

I don't have a resource, other than my standard DSP textbooks.
You mention FFT, so I assume you're looking for some kind of frequency analysis. You can make IIR filterbanks quite efficient. I would look under "complementary filters", where two all-pass filters can be added and subtracted to produce a phase-aligned high-pass and low-pass pair. The Wave Digital Filter I mention in the presentation can be used for that, but in general an IIR filter can be used. All-pass filters can be quite efficient because of the shared coefficients also.

Elielder
Score: 0 | 5 months ago | 1 reply

Obrigado! Ótima apresentação!

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

Obrigado pra vc!

Brett
Score: 0 | 5 months ago | 1 reply

Thank you for a very informative talk. It reminded me of several techniques I had forgotten about. It was a good balance between moving too fast and too slow since, as you pointed out, we can pause and digest it more or look up the references. Introduced many new things I can wait to look at in more detail later.

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

Thanks!

hMonsarrat
Score: 0 | 5 months ago | 1 reply

Thanks for the presentation!

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

Thank you for watching.

Alexey
Score: 0 | 5 months ago | 1 reply

Simple and stunning
Thank you for your effort

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

Thank you!

HR
Score: 0 | 5 months ago | 1 reply

Lots of informations on the slides, presentation feels quite rushed through

BryantSorensenSpeaker
Score: 1 | 5 months ago | no reply

Yeah, it felt rushed making it too. Probably tried to cram too much in.
I hope you can download the slides or rewatch the presentation. I was counting on people being able to review at their leisure.

Norwood
Score: 0 | 5 months ago | 2 replies

Thanks, Bryant! Great info to have in my toolbox. Side note: I'm a TN native that went to UT Chattanooga and interned at Arnold AFB. Loved the Space Institute campus. I also lived in the Azores for a stint and thought I recognized some Portuguese at the beginning of your presentation.

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

And TN is beautiful country, yes.

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

Yes, it was Portuguese! I lived in Brazil for 2 years. Thanks for watching.

jerryo
Score: 0 | 5 months ago | 1 reply

There's a typo in slide 19 with the log10 from log2 eqn.
log10(a) = log2(a)/log2(10)
Good presentation, thanks!

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

Good catch, thank you.

BryantSorensenSpeaker
Score: 0 | 5 months ago | no reply

Good morning to all! I am online for discussion.

OUR SPONSORS