Home > On-Demand Archives > Talks >
Low-Power Algorithmic Approaches in DSP Implementations
Bryant Sorensen - Watch Now - EOC 2020 - Duration: 31:38
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.
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.
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
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.
Try MIT OCW course on signals and systems 6.003
link-> https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-003-signals-and-systems-fall-2011/lecture-videos/
Thanks for this amazing suggestion :)
I loved the injected humor and thanks for all of the links. I was just searching for Numerical Recipes in C the other day!
Thanks, very kind.
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.
Thanks for watching. I'm glad there's some crossover
I liked this presentation. It provided a number of interesting ideas that deserve further study.
Thank you!
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. ;-)
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. :)
Excellent presentation! Definitely some practical lessons I can apply directly to my work.
Thank you!
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?
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.
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?
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.
Obrigado! Ótima apresentação!
Obrigado pra vc!
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.
Thanks!
Thanks for the presentation!
Thank you for watching.
Simple and stunning
Thank you for your effort
Thank you!
Lots of informations on the slides, presentation feels quite rushed through
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.
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.
And TN is beautiful country, yes.
Yes, it was Portuguese! I lived in Brazil for 2 years. Thanks for watching.
There's a typo in slide 19 with the log10 from log2 eqn.
log10(a) = log2(a)/log2(10)
Good presentation, thanks!
Good catch, thank you.
Good morning to all! I am online for discussion.
Thank you for the nice presentation!