Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: cmov isn't necessarily good

Author: Robert Hyatt

Date: 15:31:51 07/22/03

Go up one level in this thread


On July 22, 2003 at 17:41:55, Tom Kerrigan wrote:

>On July 22, 2003 at 15:27:10, Robert Hyatt wrote:
>
>>On July 22, 2003 at 15:02:46, Tom Kerrigan wrote:
>>
>>>On July 22, 2003 at 14:18:23, Robert Hyatt wrote:
>>>
>>>>>Of course, this is contrary to the point of a conditional move instruction. My
>>>>>only comment to that is that Intel must have decided to add the conditional move
>>>>>after they were done designing the relevant parts of the core. The decision to
>>>>>add the instruction makes sense for forward-compatibility, i.e., "use this
>>>>>instruction and you will see a performance improvement with it on later
>>>>>processors."
>>>>
>>>>That could be.  However, the idea was not new.  The alpha did this 10+ years
>>>>ago.  So the advantage to a real CMOV implementation should be real.
>>>
>>>Did I ever say it was new?
>>
>>I'll play the game.
>>
>>Did I _say_ you said it was new??
>
>No, but that's what I read into the "However" part of "However, the idea was not
>new." What in the world were you Howevering if you didn't think I thought it was
>new? (And BTW, it was new, for the x86.)
>
>>> Did I say that Intel's implementation is ideal?
>>
>>Did I say you said it was ideal?
>
>Similar argument. Another "however."

It is cold outside, however I don't like it myself.

What does that "however" have to do with implying you said it was
cold, _or_ you didn't like the cold?

It is just a conjunction to join two sentences together, one of which
modifies the idea proposed in the other.



>
>>If Intel implemented it poorly, when it had been implemented _correctly_ 12
>>years previously, then I hardly think "I am being an ass for criticizing them
>>for doing it _badly_."
>>
>>Had they left it out, I _would_ have had complaints, because the alpha has
>>an instruction that directly addresses a common operation in C, the conditional
>>assignment operator.
>>
>>So I feel perfectly sane in complaining if they omit something that has been
>>around long enough for them to include it, or if they include something but
>>implement it poorly so that it doesn't do what the "concept" suggests it
>>does, namely eliminate branch mis-predictions by eliminating branches.  It's
>>not hard to do this in hardware.  It's been done more than once already.
>
>Oh, come now. You can't seriously mean this. I'll do you one better--ARM had a
>fully predicated ISA in '83, so Intel is a bunch of idiots for not adding full
>predication to the 386. (Well, DEC too, for that matter, because they only have
>cmove.)
>
>-Tom

I'm not hyped on predication.  CMOV does _not_ have to be implemented in that
way.  IE it isn't on the alpha.  It just moves one of two values into a
destination, depending on some logical result.  In the hardware I can think of
a _trivial_ way to make this happen.  IE a 2-1 demultiplexor.

So it's "been there, done that, got the T-shirt" for several vendors.  If Intel
did it badly, they just did it badly.  However, it is hard to explain how it
appears to be faster than a traditional compare and jump...  Yet it was when I
did the assembly testing.






This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.