Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: cmov isn't necessarily good

Author: Robert Hyatt

Date: 12:27:10 07/22/03

Go up one level in this thread


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??

> Did I say that Intel's implementation is ideal?

Did I say you said it was ideal?

> No, I
>didn't. And conditional move is just a poor man's predication, which has been
>implemented in processors LONG before Alpha. (And, IIRC, conditional move was a
>recently added Alpha instruction. I don't think it was in the 21064.)

It was there.  I have the original alpha architecture handbook published
by Digital.  It's explained on page 4-37 in this book which was published
in 1992.


>
>I see nothing wrong with what Intel did. If my hunch is right and they only
>thought of adding the instruction after the P6 datapaths were planned/designed,
>then the net effect is that they added an instruction that doesn't increase
>performance, or increases it only marginally. So it's a little something extra
>they threw in there to future-proof the processor which isn't hurting you
>because you DON'T EVEN HAVE TO USE IT. So you're being an ass for criticizing
>them for it. They could have just as easily left it out and then you would have
>had no complaints.

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.

Bob "the ass" Hyatt


>
>-Tom



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.