From: nmm1 on
In article <ggtgp-7041FB.01012620092009(a)netnews.asp.att.net>,
Brett Davis <ggtgp(a)yahoo.com> wrote:
>
>As for the half software FPU idea, not a fan of it. Mostly because it
>has a tiny niche between no FPU and the microcoded FPU. Not a big enough
>market to pay for the hardware design, much less the compiler support.

You have completely misunderstood my proposal, which was (effectively)
to make the firmware primitives accessible to software, and move the
controlling logic into software. It also wasn't intended for a
particular niche, but to be almost universal.

In any case, firmware-based floating-point implementations are rare
nowadays - full-blown hardware ones, sometimes supported by (yuck)
software interrupts are the norm. Inter alia, my proposal would
including abolishing interrupts for floating-point fixup.


Regards,
Nick Maclaren.
From: Brett Davis on
In article <h950ps$9ds$1(a)smaug.linux.pwf.cam.ac.uk>, nmm1(a)cam.ac.uk
wrote:

> In article <ggtgp-7041FB.01012620092009(a)netnews.asp.att.net>,
> Brett Davis <ggtgp(a)yahoo.com> wrote:
> >
> >As for the half software FPU idea, not a fan of it. Mostly because it
> >has a tiny niche between no FPU and the microcoded FPU. Not a big enough
> >market to pay for the hardware design, much less the compiler support.
>
> You have completely misunderstood my proposal, which was (effectively)
> to make the firmware primitives accessible to software, and move the
> controlling logic into software. It also wasn't intended for a
> particular niche, but to be almost universal.

Your intentions of universality do not mesh with the actual niche
economics, and the profit and loss tradeoff this would represent for the
first mover to actually implement this.

Pipelining floating point code is a big part of what I do for a living
as a software engineer, so I have a clear idea of where this fits in the
market, and I am afraid that market may be nonexistent.

Take a standard four way unrolled loop implemented as fixed point,
float, and firmware. The fixed point loop may be 20 instructions and
give four results, the float version also is 20 instructions and gives
four results. The firmware version is ~100 instructions and gives four
results.

If you think that is bad, now do a branchy code version where each
if/then/else has a single floating point operation in it. For fixed and
float you have 20 branches and 20 operations, for firmware you have
100's of instructions and ~1000 cycles blown in stalls.

The code bloat is outrageous and the performance is pathetic.

The Playstation One and the Nintendo handhelds do not have FPU units,
that did not stop us from writing lots of fully 3D games. We just used
lots of fixed point code.

There are a few math operations where fixed point gave gibberish
results, in those cases we implemented a software FPU similar to your
firmware proposal. You put the mantissa in one register and the fract in
another, and use ordinary integer math to generate a result with the
needed accuracy. Horribly slow, but it was 0.1% of the code and 1% of
the cycle time. Adding a real firmware assist would not have been cost
effective.

> In any case, firmware-based floating-point implementations are rare
> nowadays - full-blown hardware ones, sometimes supported by (yuck)
> software interrupts are the norm. Inter alia, my proposal would
> including abolishing interrupts for floating-point fixup.

None of the embedded FPU chips I know of will ever invoke a software
interrupt to fix up a float number. They all implement the standard
subset of IEEE float with simplified semantics.

The full IEEE float spec is an outdated grandiose kitchen sink. An easy
straw man to rally against, but irrelevant.

> Regards,
> Nick Maclaren.
From: nmm1 on
In article <ggtgp-E10513.17593120092009(a)netnews.asp.att.net>,
Brett Davis <ggtgp(a)yahoo.com> wrote:
>
>> >As for the half software FPU idea, not a fan of it. Mostly because it
>> >has a tiny niche between no FPU and the microcoded FPU. Not a big enough
>> >market to pay for the hardware design, much less the compiler support.
>>
>> You have completely misunderstood my proposal, which was (effectively)
>> to make the firmware primitives accessible to software, and move the
>> controlling logic into software. It also wasn't intended for a
>> particular niche, but to be almost universal.
>
>Your intentions of universality do not mesh with the actual niche
>economics, and the profit and loss tradeoff this would represent for the
>first mover to actually implement this.

Please read what I said, and don't read things I didn't say into it.

This is comp.arch, and I was talking about the engineering aspects.
What I should like to see, and what the assorted benchmarketers,
politicians, bean-counters, money-grubbers, gutter press and what
not ensure that we are give, are two entirely different things.


Regards,
Nick Maclaren.