> On Apr 26, 2023, at 12:45 AM, Ethan Duni <ethan.d...@gmail.com> wrote:
> 
> Judicious scaling helps, as does throwing more bits at the problem. But 
> neither of those can totally eliminate the concern about overflow, in 
> principle. The best you can do is to reduce the probability of overflow to 
> some extremely small value. Which is what we do with floating point 
> implementations, which have hundreds of dB of headroom.

Another issue is that while DSP hardware generally implements saturating signed 
fixed-point math in the ALUs, the general purpose ALUs in GP CPUS generally do 
not implement saturating match (at least not without jumping through a lot of 
hoops - if the ALU actually even supports saturation modes). 

While clipping due to saturation will obviously distort the signal processing 
if it happens internally to the alogrithm (e.g. in state variables) and that 
distortion can be objectionable, it absolutely benign as compared to the sort 
of distortion that happens when a non-saturating ALU wraps around (e.g. 
Full-Scale +1 -> -Full-Scale).

This doesn’t happen with floating point. 

So while it is possible (although often difficult) to efficiently implement 
fixed point processing with DSP’s and ALU’s that support  saturating math, it 
is far more difficult to *efficiently* implement fixed point on GP processors 
without saturating math that do not suffer from the potential for significant 
and catastrophic distortion, as all computations must be saturated if there is 
any possibility of overload.

ARM supports it (at least in some micro architectures) but may require using 
asm, intrinsics or libraries.
Intel seems to support it in the MMX/SSE/AVX unit, but not in the main cpu ALU, 
so again requires asm, intrinsics or libraries.

This is significantly more involved that simply implementing an algorithm in FP.

Best regards,

B.J. Buchalter
Metric Halo 
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.mhlabs.com&d=DwIFaQ&c=009klHSCxuh5AI1vNQzSO0KGjl4nbi2Q0M1QLJX9BeE&r=TRvFbpof3kTa2q5hdjI2hccynPix7hNL2n0I6DmlDy0&m=yqEWQ4m7gxL3VaGEFESFviyzdIJ0S1iCD9GhJQTFuxplxlBl0IH9VVLwN3srYTh4&s=njd_54bCbiOgAX6Uxf3O6j2ArP9JdFm5OZ-t0bm7ejg&e=
 
        

Reply via email to