New article: AMD's Jaguar Microarchitecture

Article: AMD's Jaguar Microarchitecture
By: Michael S (already5chosen.delete@this.yahoo.com), April 7, 2014 5:39 am
Room: Moderated Discussions
Wilco (Wilco.Dijkstra.delete@this.ntlworld.com) on April 7, 2014 3:27 am wrote:
> Michael S (already5chosen.delete@this.yahoo.com) on April 7, 2014 2:34 am wrote:
> > TREZA (no.delete@this.ema.il) on April 6, 2014 3:47 pm wrote:
> > > Wilco (Wilco.Dijkstra.delete@this.ntlworld.com) on April 6, 2014 2:48 pm wrote:
> > > > Extended precision as implemented in x87 is a huge mess. It even causes 32 and 64-bit
> > > > FP to return inconsistent and incorrect results. Nowadays it means 128-bits, not 80.
> > > >
> > > A mess because there is no separate instructions like FADDs, FADDd,
> > > FADDe, which makes programs prone to double rounding ?
> >
> > There are no separate instructions, but there is precision control field in the control
> > word, so, as long as you don't change precision very often, you (or your compiler)
> > can avoid double rounding at very relatively small performance penalty.
>
> Changing precision is expensive, and if you have code with both float and double, you need to
> change precision all the time (and you cannot guarantee whether a function you called changed
> it unless you change the ABI to say that every function must save/restore the precision).

I'm not sure about gcc, but as far as I remember Microsoft's ABI says that any function that changes precision away from it's default (53 bits, in Microsoft's case) is responsible for restoring to default. However, the ABI is not forced by compiler, it relies on coders (not just ASM coders, but HLL coders as well) well-behaving. Of course, some libraries violate rules (and, of course, big percentage of those are coming from rules setters themselves), but bugs like those should be reported to suppliers of libraries, and, hopefully, fixed.

As to "changing precision is expensive", it's not an absolute statement.
Changing precision every operation is expensive.
Changing precision every 10 operation, is affordable, esp if you are on fat Intel core and your FCW oscillates between 2 constant values.
Changing precision every 100 operation is an absolute non-issue. And that or lower rate of changes appear to be more typical.


>
> > The real problem is more exotic - x87 precision control can reduce the precision of
> > mantissa, but it can't reduce the range of exponent. So, results of x87 computations
> > with single or double precision remain the same as specified by IEEE only as long as
> > you stay within official range. Which sounds nearly impossible in practice.
>
> You can store to memory after every operation to get the exponent right - this is still
> not IEEE compliant as denormals suffer from double rounding. Of course doing this causes
> another performance penalty but at least it gives more consistent results than variables
> whose values suddenly change due to needing to be spilled to memory by the compiler.

As a programmer and user of numeric algorithms I should admit that I don't care in the slightest. From practical P.O.V x87 results tend to better rather than worse than standard-complaint IEEE results.
But I feel the pain of poor souls responsible for formal regression tests.

>
> Basically you cannot get IEEE results from x87. Quite ironic since
> x87 was supposed to be the first IEEE implementation...
>

I think, it's not ironic, but rather very typical for first implementations of anything.

> > > The Motorola 68881/2 did not have that problem, IIRC.
> > > (The whole x87 instruction set is a joke anyway)
>
> And ARM's FPA did get it right too. The broken stack implementation is another idiotic aspect of x87 indeed.
>
> Wilco
>

< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
New article: AMD's Jaguar MicroarchitectureDavid Kanter2014/04/01 01:19 AM
  New article: AMD's Jaguar MicroarchitectureSHK2014/04/01 06:09 AM
    New article: AMD's Jaguar MicroarchitectureJeff Rupley2014/04/01 07:13 PM
      New article: AMD's Jaguar MicroarchitectureSHK2014/04/02 06:45 AM
        CMOV is 3 operand given register renamingPaul A. Clayton2014/04/02 09:11 AM
          CMOV is 3 operand given register renamingSHK2014/04/02 12:17 PM
            Limited operand tags in issue queue entriesPaul A. Clayton2014/04/02 01:32 PM
        New article: AMD's Jaguar MicroarchitectureLinus Torvalds2014/04/02 12:48 PM
          New article: AMD's Jaguar MicroarchitectureLinus Torvalds2014/04/02 02:32 PM
  New article: AMD's Jaguar MicroarchitectureGeorge2014/04/01 02:10 PM
  New article: AMD's Jaguar Microarchitecturewillmore2014/04/01 06:37 PM
    New article: AMD's Jaguar Microarchitecturewillmore2014/04/01 07:08 PM
    New article: AMD's Jaguar MicroarchitectureNaN2014/04/02 08:58 AM
      New article: AMD's Jaguar MicroarchitectureUnmaskedUnderflow2014/04/04 07:16 AM
        New article: AMD's Jaguar MicroarchitectureLinus Torvalds2014/04/04 08:54 AM
          New article: AMD's Jaguar MicroarchitectureUnmaskedUnderflow2014/04/04 11:45 AM
            New article: AMD's Jaguar MicroarchitectureLinus Torvalds2014/04/04 02:00 PM
              New article: AMD's Jaguar MicroarchitectureNoSpammer2014/04/04 03:15 PM
              New article: AMD's Jaguar MicroarchitectureTREZA2014/04/04 03:18 PM
                New article: AMD's Jaguar MicroarchitectureLinus Torvalds2014/04/04 04:56 PM
                  New article: AMD's Jaguar MicroarchitectureTREZA2014/04/04 05:34 PM
                  New article: AMD's Jaguar MicroarchitectureMichael S2014/04/05 11:02 AM
                  New article: AMD's Jaguar Microarchitecturecomputational_scientist2014/04/05 06:50 PM
                    New article: AMD's Jaguar MicroarchitectureMichael S2014/04/06 01:22 AM
                    New article: AMD's Jaguar MicroarchitectureWilco2014/04/06 05:29 AM
                      New article: AMD's Jaguar Microarchitecturecomputational_scientist2014/04/06 07:33 AM
                        New article: AMD's Jaguar MicroarchitectureWilco2014/04/07 03:12 AM
                          New article: AMD's Jaguar MicroarchitectureMichael S2014/04/07 06:58 AM
                        New article: AMD's Jaguar MicroarchitectureEduardoS2014/04/07 04:34 PM
                      New article: AMD's Jaguar Microarchitecturecomputational_scientist2014/04/06 07:53 AM
                      New article: AMD's Jaguar MicroarchitectureMegol2014/04/06 08:21 AM
                        New article: AMD's Jaguar Microarchitecturenone2014/04/06 09:07 AM
                          New article: AMD's Jaguar MicroarchitectureMichael S2014/04/06 09:23 AM
                        New article: AMD's Jaguar MicroarchitectureWilco2014/04/06 02:48 PM
                          New article: AMD's Jaguar MicroarchitectureTREZA2014/04/06 03:47 PM
                            New article: AMD's Jaguar MicroarchitectureMichael S2014/04/07 02:34 AM
                              New article: AMD's Jaguar MicroarchitectureWilco2014/04/07 03:27 AM
                                New article: AMD's Jaguar MicroarchitectureMichael S2014/04/07 05:39 AM
                                  New article: AMD's Jaguar MicroarchitectureUnmaskedUnderflow2014/04/07 12:26 PM
                                    New article: AMD's Jaguar MicroarchitectureMichael S2014/04/07 01:42 PM
                                    New article: AMD's Jaguar MicroarchitectureWilco2014/04/07 01:50 PM
                                      New article: AMD's Jaguar MicroarchitectureUnmaskedUnderflow2014/04/07 02:11 PM
                                        New article: AMD's Jaguar MicroarchitectureWilco2014/04/07 05:44 PM
                                      New article: AMD's Jaguar MicroarchitectureTREZA2014/04/07 03:38 PM
              denormal on IvyB and HaswellMichael S2014/04/05 10:45 AM
                Forum searchiz2014/04/05 12:54 PM
                denormal on IvyB and HaswellLinus Torvalds2014/04/06 09:55 AM
                  denormal on IvyB and HaswellMichael S2014/04/17 06:43 PM
            New article: AMD's Jaguar Microarchitecturedmcq2014/04/05 06:52 AM
            New article: AMD's Jaguar MicroarchitectureMaynard Handley2014/04/05 10:38 AM
              New article: AMD's Jaguar MicroarchitectureMichael S2014/04/05 10:59 AM
                New article: AMD's Jaguar MicroarchitectureBrett2014/04/05 12:12 PM
                  New article: AMD's Jaguar MicroarchitectureEduardoS2014/04/05 12:29 PM
                    New article: AMD's Jaguar MicroarchitectureBrett2014/04/05 01:00 PM
                      New article: AMD's Jaguar MicroarchitectureMichael S2014/04/06 02:18 AM
                        New article: AMD's Jaguar MicroarchitectureBrett2014/04/06 10:08 AM
                          New article: AMD's Jaguar MicroarchitectureBrett2014/04/06 10:11 AM
                New article: AMD's Jaguar MicroarchitectureMaynard Handley2014/04/05 06:01 PM
                  New article: AMD's Jaguar MicroarchitectureMichael S2014/04/06 01:50 AM
                    New article: AMD's Jaguar MicroarchitectureMaynard Handley2014/04/06 03:52 PM
                      New article: AMD's Jaguar MicroarchitectureMichael S2014/04/07 02:20 AM
                        New article: AMD's Jaguar MicroarchitectureMaynard Handley2014/04/07 10:38 AM
                          New article: AMD's Jaguar MicroarchitectureWilco2014/04/07 10:47 AM
                            New article: AMD's Jaguar MicroarchitectureMaynard Handley2014/04/07 02:52 PM
                              New article: AMD's Jaguar MicroarchitectureWilco2014/04/07 04:01 PM
                                New article: AMD's Jaguar MicroarchitectureSeni2014/04/08 02:03 PM
                                  New article: AMD's Jaguar MicroarchitectureWilco2014/04/08 02:56 PM
                                    New article: AMD's Jaguar MicroarchitectureMichael S2014/04/08 04:05 PM
                                      New article: AMD's Jaguar MicroarchitectureMaynard Handley2014/04/08 06:55 PM
                                        New article: AMD's Jaguar MicroarchitectureMichael S2014/04/09 01:12 AM
                  New article: AMD's Jaguar MicroarchitectureWilco2014/04/06 04:51 AM
  New article: AMD's Jaguar MicroarchitectureWaltC2014/04/02 01:52 PM
    New article: AMD's Jaguar MicroarchitectureLinus Torvalds2014/04/02 02:25 PM
      New article: AMD's Jaguar Microarchitectureitsmydamnation2014/04/03 12:19 AM
      New article: AMD's Jaguar MicroarchitectureLinus Torvalds2014/04/09 01:44 PM
        New article: AMD's Jaguar MicroarchitectureDavid Kanter2014/04/10 11:24 PM
          New article: AMD's Jaguar Microarchitecturenone2014/04/11 01:49 AM
          New article: AMD's Jaguar MicroarchitectureLinus Torvalds2014/04/11 09:14 AM
    New article: AMD's Jaguar MicroarchitectureRyan Dean2014/04/03 01:04 AM
  New article: AMD's Jaguar MicroarchitecturePaul A. Clayton2014/04/02 05:02 PM
  New article: AMD's Jaguar MicroarchitectureRicky Chan2014/04/03 07:50 AM
    New article: AMD's Jaguar Microarchitecturesomeone2014/04/04 07:18 AM
  New article: AMD's Jaguar Microarchitecturebakaneko2014/04/09 03:08 PM
    New article: AMD's Jaguar MicroarchitectureTREZA2014/04/09 05:34 PM
  Jaguar's detailsHugo DĂ©charnes2014/06/07 04:08 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell green?