Home > Tracks > DSP & Machine Learning

Low-Power Algorithmic Approaches in DSP Implementations

Bryant Sorensen - Watch Now - Currently watching: 0

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
>

remco_at_itsonlyaudio.com
Score: 0 | 2 hours 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 | 31 minutes ago | no reply yet

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

RichardLyons
Score: 0 | 3 days ago | 1 reply

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

BryantSorensenSpeaker
Score: 0 | 2 days ago | 1 reply

Thank you!

RichardLyons
Score: 0 | 2 days 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 | 1 day ago | no reply yet

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 | 6 days ago | 1 reply

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

BryantSorensenSpeaker
Score: 0 | 5 days ago | 1 reply

Thank you!

Pi
Score: 0 | 5 days 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: 1 | 5 days 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 | 4 days 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 | 4 days ago | no reply yet

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 | 6 days ago | 1 reply

Obrigado! Ótima apresentação!

BryantSorensenSpeaker
Score: 0 | 5 days ago | no reply yet

Obrigado pra vc!

Brett
Score: 0 | 6 days 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 | 6 days ago | no reply yet

Thanks!

hMonsarrat
Score: 0 | 6 days ago | 1 reply

Thanks for the presentation!

BryantSorensenSpeaker
Score: 0 | 6 days ago | no reply yet

Thank you for watching.

Alexey
Score: 0 | 6 days ago | 1 reply

Simple and stunning
Thank you for your effort

BryantSorensenSpeaker
Score: 0 | 6 days ago | no reply yet

Thank you!

HR
Score: 0 | 6 days ago | 1 reply

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

BryantSorensenSpeaker
Score: 1 | 6 days ago | no reply yet

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 | 6 days 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 | 6 days ago | no reply yet

And TN is beautiful country, yes.

BryantSorensenSpeaker
Score: 0 | 6 days ago | no reply yet

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

jerryo
Score: 0 | 6 days 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 | 6 days ago | no reply yet

Good catch, thank you.

BryantSorensenSpeaker
Score: 0 | 6 days ago | no reply yet

Good morning to all! I am online for discussion.

OUR SPONSORS