Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.arch.embedded > #7810

Re: Floating point vs fixed arithmetics (signed 64-bit)

From Tim Wescott <tim@seemywebsite.please>
Subject Re: Floating point vs fixed arithmetics (signed 64-bit)
Newsgroups comp.arch.embedded
References (2 earlier) <u0o3n75ffv4gqng8qh16fdap2ugevln58q@4ax.com> <qcs3n7ponjd09bq27qgb648fnmovco9mn1@4ax.com> <4F720D71.DFDA7F7F@bytecraft.com> <68qdnRLw64LUj-_SnZ2dnUVZ_qSdnZ2d@web-ster.com> <4F722482.AB146260@bytecraft.com>
Message-ID <uf2dnaefP47GGu_SnZ2dnUVZ_r6dnZ2d@web-ster.com> (permalink)
Date 2012-03-27 22:36 -0500

Show all headers | View raw


On Tue, 27 Mar 2012 15:35:14 -0500, Walter Banks wrote:

> Tim Wescott wrote:
> 
>> On Tue, 27 Mar 2012 13:56:49 -0500, Walter Banks wrote:
>>
>> > "David T. Ashley" wrote:
>> >
>> >> On Tue, 27 Mar 2012 18:52:09 +0300, upsidedown@downunder.com wrote:
>> >>
>> >> >On Tue, 27 Mar 2012 11:28:18 -0400, David T. Ashley
>> >> ><dashley@gmail.com> wrote:
>> >> >
>> >> >
>> >> >>Without FPU support, assuming that the processor has basic integer
>> >> >>multiplication instructions, integer operations are ALWAYS faster
>> >> >>than floating-point operations.  Usually _far_ faster.  And always
>> >> >>more precise.
>> >> >
>> >> >Floating point instructions MUL/DIV are trivial, just
>> >> >multiply/divide the mantissa and add/sub the exponent.
>> >> >
>> >> >With FP add/sub you have to denormalize one operand and then
>> >> >normalize the result, which can be quite time consuming, without
>> >> >sufficient HW support.
>> >> >
>> >> >This can be really time consuming, if the HW is designed by an
>> >> >idiot.
>> >>
>> >> Your observations are valid.  But I have yet to see a practical
>> >> example of something that can be done faster and with equal accuracy
>> >> in floating point vs. using integer operations.
>> >>
>> >> I concur with your observations.  After reading your first paragaph
>> >> ... yeah, floating-point multiplication is pretty simple so long as
>> >> the floating point format is sane.
>> >>
>> >> Before reading your post, I my mental model was that floating-point
>> >> operations might be 20 times as slow as integer operations.  Now I'm
>> >> thinking maybe 2-3 times.
>> >
>> > I did a fixed point support package for our 8 bit embedded systems
>> > compilers and one interesting metric came out of the project.
>> >
>> > Given a number of bits in a number and similar error checking fixed
>> > or float took very similar amounts of execution time and code size in
>> > applications.
>> >
>> > For example 32 bit float and 32 bit fixed point. They are not exact
>> > but they are close. In the end much to my surprise the choice is
>> > dynamic range or resolution.
>> >
>> > There are other factors IEEE754 has potentially much more error
>> > checking but not all libraries a written to support it, and not
>> > applications need it.
>>
>> That's interesting, because in my experience fixed-point fractional
>> arithmetic (i.e., 0x7fffffff = 1 - 2^-31, 0x80000001 = -1 + 2^-31),
>> with saturation-on-add, is significantly faster (3x to 10x) than
>> floating point on all the machines I've tried it except for those with
>> floating- point hardware.
>>
>> I have a portable version that works on just about anything that's
>> ANSI-C compatible, and when I really need speed I rewrite the
>> arithmetic routines in assembly for about a 2x increase.
>>
>> The only processor that came close to matching it was the TMS320F2812,
>> where we used the ANSI-C compatible version that was just about matched
>> by the floating-point package that came with the tool set (and I _know_
>> that TI cut corners with that floating point package).  That's the
>> _only_ processor in my experience where the floating point could keep
>> up with the ANSI-C version, and I would expect that had I written an
>> assembly version it would have been faster yet.
> 
> What you saw was what I was expecting. My points in the post was to be
> careful in assuming that fixed is going to be dramatically better. At
> least for 8 bits the variable size in bits is a significant factor when
> all math is multiprecision.
> 
> One of the keys in our metrics was the target was 8 bit processors and
> there was an exchange between precision and dynamic range but the bit
> sizes remained the same.
> 
> Real applications are probably dominated by scaling and precision
> reducing the number of bits used by fixed point for the same
> application.
> 
> It didn't make sense until I realized that it was 8 bit processors using
> software mults and divides and 32 bit floating point uses for the most
> part 24bit mults and divides and a few adds/subtracts for the exponents.
> 32 bit fixed point uses 32 bit mults/divides adding to the cycle count.
> 
> My experience with 32 bit processors is similar to yours although I
> don't have metrics to back it up.

Ah.  I see your point.  9 multiplies and some shifting during addition 
vs. 16 multiplies might well turn out to be a wash.

The first serious control loop I did was quite starved for clock cycles, 
and used a 24-bit accumulator, but with an 8 x 16 (or 8 x 8) multiply, 
and had 16-bit data paths other than that.

-- 
Tim Wescott
Control system and signal processing consulting
www.wescottdesign.com

Back to comp.arch.embedded | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Floating point vs fixed arithmetics (signed 64-bit) kishor <kiishor@gmail.com> - 2012-03-26 02:22 -0700
  Re: Floating point vs fixed arithmetics (signed 64-bit) "Boudewijn Dijkstra" <sp4mtr4p.boudewijn@indes.com> - 2012-03-26 12:08 +0200
  Re: Floating point vs fixed arithmetics (signed 64-bit) Arlet Ottens <usenet+5@c-scape.nl> - 2012-03-26 13:14 +0200
    Re: Floating point vs fixed arithmetics (signed 64-bit) David Brown <david@westcontrol.removethisbit.com> - 2012-03-26 13:24 +0200
      Re: Floating point vs fixed arithmetics (signed 64-bit) kishor <kiishor@gmail.com> - 2012-03-26 05:24 -0700
        Re: Floating point vs fixed arithmetics (signed 64-bit) Fredrik Östman <Fredrik_Oestman@work.invalid> - 2012-03-26 12:38 +0000
          Re: Floating point vs fixed arithmetics (signed 64-bit) kishor <kiishor@gmail.com> - 2012-03-26 06:33 -0700
            Re: Floating point vs fixed arithmetics (signed 64-bit) Arlet Ottens <usenet+5@c-scape.nl> - 2012-03-26 15:49 +0200
            Re: Floating point vs fixed arithmetics (signed 64-bit) David Brown <david@westcontrol.removethisbit.com> - 2012-03-26 15:45 +0200
            Re: Floating point vs fixed arithmetics (signed 64-bit) Fredrik Östman <Fredrik_Oestman@work.invalid> - 2012-03-26 14:34 +0000
        Re: Floating point vs fixed arithmetics (signed 64-bit) Arlet Ottens <usenet+5@c-scape.nl> - 2012-03-26 15:34 +0200
          Re: Floating point vs fixed arithmetics (signed 64-bit) Tim Wescott <tim@seemywebsite.com> - 2012-03-26 12:25 -0500
            Re: Floating point vs fixed arithmetics (signed 64-bit) Arlet Ottens <usenet+5@c-scape.nl> - 2012-03-26 20:19 +0200
              Re: Floating point vs fixed arithmetics (signed 64-bit) Rich Webb <bbew.ar@mapson.nozirev.ten> - 2012-03-26 16:45 -0400
                Re: Floating point vs fixed arithmetics (signed 64-bit) Tim Wescott <tim@seemywebsite.com> - 2012-03-26 17:15 -0500
                Re: Floating point vs fixed arithmetics (signed 64-bit) Rich Webb <bbew.ar@mapson.nozirev.ten> - 2012-03-26 19:09 -0400
                Re: Floating point vs fixed arithmetics (signed 64-bit) kishor <kiishor@gmail.com> - 2012-03-27 04:59 -0700
                Re: Floating point vs fixed arithmetics (signed 64-bit) David Brown <david@westcontrol.removethisbit.com> - 2012-03-27 15:25 +0200
                Re: Floating point vs fixed arithmetics (signed 64-bit) David T. Ashley <dashley@gmail.com> - 2012-03-29 13:17 -0400
  Re: Floating point vs fixed arithmetics (signed 64-bit) "Paul E. Bennett" <Paul_E.Bennett@topmail.co.uk> - 2012-03-27 11:28 +0100
  Re: Floating point vs fixed arithmetics (signed 64-bit) David T. Ashley <dashley@gmail.com> - 2012-03-27 11:28 -0400
    Re: Floating point vs fixed arithmetics (signed 64-bit) upsidedown@downunder.com - 2012-03-27 18:52 +0300
      Re: Floating point vs fixed arithmetics (signed 64-bit) David T. Ashley <dashley@gmail.com> - 2012-03-27 13:02 -0400
        Re: Floating point vs fixed arithmetics (signed 64-bit) Walter Banks <walter@bytecraft.com> - 2012-03-27 13:56 -0500
          Re: Floating point vs fixed arithmetics (signed 64-bit) Tim Wescott <tim@seemywebsite.com> - 2012-03-27 14:17 -0500
            Re: Floating point vs fixed arithmetics (signed 64-bit) Walter Banks <walter@bytecraft.com> - 2012-03-27 15:35 -0500
              Re: Floating point vs fixed arithmetics (signed 64-bit) Tim Wescott <tim@seemywebsite.please> - 2012-03-27 22:36 -0500
          Re: Floating point vs fixed arithmetics (signed 64-bit) David Brown <david@westcontrol.removethisbit.com> - 2012-03-28 09:00 +0200
          Re: Floating point vs fixed arithmetics (signed 64-bit) j.m.granville@gmail.com - 2012-03-30 04:08 -0700
            Re: Floating point vs fixed arithmetics (signed 64-bit) Mark Borgerson <mborgerson@comcast.net> - 2012-04-02 22:52 -0700
              Re: Floating point vs fixed arithmetics (signed 64-bit) John Devereux <john@devereux.me.uk> - 2012-04-03 11:33 +0100
                Re: Floating point vs fixed arithmetics (signed 64-bit) Anders.Montonen@kapsi.spam.stop.fi.invalid - 2012-04-03 12:05 +0000
                Re: Floating point vs fixed arithmetics (signed 64-bit) John Devereux <john@devereux.me.uk> - 2012-04-03 16:34 +0100
                Re: Floating point vs fixed arithmetics (signed 64-bit) Paul <paul@pcserviceselectronics.co.uk> - 2012-04-04 09:35 +0100
            Re: Floating point vs fixed arithmetics (signed 64-bit) Tim Wescott <tim@seemywebsite.com> - 2012-04-03 13:52 -0500
              Re: Floating point vs fixed arithmetics (signed 64-bit) Mark Borgerson <mborgerson@comcast.net> - 2012-04-04 16:50 -0700
                Re: Floating point vs fixed arithmetics (signed 64-bit) John Devereux <john@devereux.me.uk> - 2012-04-05 11:48 +0100
        Re: Floating point vs fixed arithmetics (signed 64-bit) David Brown <david@westcontrol.removethisbit.com> - 2012-03-28 09:17 +0200
          Re: Floating point vs fixed arithmetics (signed 64-bit) Tim Wescott <tim@seemywebsite.com> - 2012-03-28 12:20 -0500
            Re: Floating point vs fixed arithmetics (signed 64-bit) Andrew Reilly <areilly---@bigpond.net.au> - 2012-03-28 22:44 +0000
              Re: Floating point vs fixed arithmetics (signed 64-bit) Tim Wescott <tim@seemywebsite.com> - 2012-03-28 18:35 -0500
                Re: Floating point vs fixed arithmetics (signed 64-bit) David Brown <david@westcontrol.removethisbit.com> - 2012-03-29 10:58 +0200
                Re: Floating point vs fixed arithmetics (signed 64-bit) Mark Borgerson <mborgerson@comcast.net> - 2012-03-29 07:56 -0700
                Re: Floating point vs fixed arithmetics (signed 64-bit) Tim Wescott <tim@seemywebsite.com> - 2012-03-29 16:52 -0500
                Re: Floating point vs fixed arithmetics (signed 64-bit) Mark Borgerson <mborgerson@comcast.net> - 2012-03-29 21:19 -0700
                Re: Floating point vs fixed arithmetics (signed 64-bit) Tim Wescott <tim@seemywebsite.please> - 2012-03-30 00:42 -0500
              Re: Floating point vs fixed arithmetics (signed 64-bit) upsidedown@downunder.com - 2012-03-29 07:19 +0300
                Re: Floating point vs fixed arithmetics (signed 64-bit) Andrew Reilly <areilly---@bigpond.net.au> - 2012-03-29 11:53 +0000
                Re: Floating point vs fixed arithmetics (signed 64-bit) Walter Banks <walter@bytecraft.com> - 2012-03-29 09:40 -0500
                Re: Floating point vs fixed arithmetics (signed 64-bit) upsidedown@downunder.com - 2012-03-29 23:46 +0300
                Re: Floating point vs fixed arithmetics (signed 64-bit) Walter Banks <walter@bytecraft.com> - 2012-03-29 09:28 -0500
                Re: Floating point vs fixed arithmetics (signed 64-bit) David Brown <david@westcontrol.removethisbit.com> - 2012-03-29 16:58 +0200
            Re: Floating point vs fixed arithmetics (signed 64-bit) David Brown <david@westcontrol.removethisbit.com> - 2012-03-29 10:09 +0200
            Re: Floating point vs fixed arithmetics (signed 64-bit) Clifford Heath <cjh@no.spam.please.net> - 2012-04-01 18:08 +1000
          Re: Floating point vs fixed arithmetics (signed 64-bit) dp <dp@tgi-sci.com> - 2012-03-28 02:38 -0700
      Re: Floating point vs fixed arithmetics (signed 64-bit) upsidedown@downunder.com - 2012-03-28 22:59 +0300

csiph-web