Interesting study about fixed point vs. floating point in filter design

DSP, Plug-in and Host development discussion.
Kraku
KVRian
1413 posts since 13 Oct, 2003 from Prague, Czech Republic

Post Wed May 15, 2019 12:39 am

Not sure if people have already read this interesting study about integer vs floating point values in filter design.

http://www.jamminpower.com/PDF/48-bit%20Audio.pdf

If nothing else, it's "good to know" for DSP developers :)

Z1202
KVRian
1050 posts since 12 Apr, 2002

Re: Interesting study about fixed point vs. floating point in filter design

Post Wed May 15, 2019 12:47 am

I think it's generally agreed than once in a while (esp. at low filter cutoffs and osc frequencies) one needs to use 64-bit float rather than 32-bit float. Also direct forms are known to particularly suffer from quantization issues, so the need for a better precision tends to occur pretty soon there. Anyway, how often one would use a direct form filter in today's music DSP? ;)

Kraku
KVRian
1413 posts since 13 Oct, 2003 from Prague, Czech Republic

Re: Interesting study about fixed point vs. floating point in filter design

Post Wed May 15, 2019 9:58 am

For me the more interesting point was that you can do IIR filters with fairly small bit depth. I've no idea though if it's possible to do good quality fast filters with (for example) 64bit fixed points... Especially if there's some non-linearities involved.

Then again, if I remember correctly, someone made a good sounding SID filter emulation for one of the most famous C64 emulators. I think it used fixed points for the filter math. I could be wrong though.

User avatar
Max M.
KVRist
323 posts since 20 Apr, 2005 from Moscow, Russian Federation

Re: Interesting study about fixed point vs. floating point in filter design

Post Wed May 15, 2019 3:09 pm

... to do good quality fast filters with (for example) 64bit fixed points ...

Btw., was 64-bit integer add/mul ever faster than 64-bit floating-point add/mul in GP CPUs in modern times? (w/o even counting the extra shift one would need for fixed point mul via integer mul).
The paper was cool for its time (1999) and its area though: 32-bit floating-point DSPs vs. 32-48-64 fixed point DSPs, especially counting the latter were times cheaper. But for modern day "CPU-only-developers" it is of little interest I'm afraid.

mystran
KVRAF
5272 posts since 12 Feb, 2006 from Helsinki, Finland

Re: Interesting study about fixed point vs. floating point in filter design

Post Wed May 15, 2019 7:59 pm

Max M. wrote:
Wed May 15, 2019 3:09 pm
Btw., was 64-bit integer add/mul ever faster than 64-bit floating-point add/mul in GP CPUs in modern times? (w/o even counting the extra shift one would need for fixed point mul via integer mul).
ALU is potentially still faster on modern x86 (unless you do SIMD processing), but not by a huge margin.

The real question is whether it's worth the trouble and in most cases it definitely is not.

edit: also emphasis on "potentially" because it really depends... and it's far easier to get performance out of the floating point unit
If you'd like Signaldust to return, please ask Katinka Tuisku to resign.

Kraku
KVRian
1413 posts since 13 Oct, 2003 from Prague, Czech Republic

Re: Interesting study about fixed point vs. floating point in filter design

Post Thu May 16, 2019 1:09 pm

Full disclosure: I'm not (usually) working on Intel platforms, but different embedded processors/microcontrollers. :wink:

That's why I'm interested in this topic to see which parts still apply to various alternative CPU architectures. You'd be surprised how many hardware synth developers are working with fixed points every day, since the CPU/DSP they're using doesn't have floating points in it. I'm talking about major players in the hardware electronic instrument industry.

I haven't personally tried doing DSP stuff using fixed points so it would be an interesting experiment to see what kind of problems arise. For me it's always been floating points for the audio stuff. One question that's been on my table lately is: when is 32 bits enough and when 64 bits is really needed for the IIR/ZDF filter algorithms? This question pops up regularly when I try to figure out if I want to use SIMD to do couple of 32 bit floats in parallel or opt to using 64 bit floats and get the thing done with higher precision but slower speed.

Return to “DSP and Plug-in Development”