I'm gonna get murdered for this post
.
I'm not sure if anyone truly answered your question. I am a programmer, i don't know if that helps... To the point. ATI/AMD has a one single operation that nvida does not have. It is called RightRotate aka BIT_ALIGN_INT. It is the fundamental basis for optimized bitcoin hashing. As it stands, with the most briliant minds working towards making nvidia operations as optimized as possible, It takes 3 operations; 2 shifts + 1 add
. There are some people that are working their best to petition for an updated set of cuda instructions to get the RightRotate and LeftRotate included. Just getting it down to one operation is an amazing improvement. The other issue as you obviously read, is that amd just hase a massive amount more of the stream processors as compared to nvidia. the stream processors are what process the SHA-256 operations, be it nvidia or amd.
The rotate right (circular right shift) operation ROTR n(x), where x is a w-bit word
and n is an integer with 0 £ n < w, is defined by
ROTRn(x) = (x >> n) Ú (x << w - n).
Thus, ROTR n(x) is equivalent to a circular shift (rotation) of x by n positions to the
right.
This operation is used by the SHA-256, SHA-384, and SHA-512 algorithms.
I don't want to over complicate things, but i love teaching so here it goes. This is super simplified btw and i am sure someone will wince and bash me over the head for it. I apologize in advance...
The SHA-256 Hash, is an operation that creates a random number, in hexadecimal of course, based off of a value. In the case of bitcoin it would be the current Block, or "Target". The main goal of bitcoin hashing is to try and randomly create a hash that is less value than the target. For example, the current target is
0000000000000E86680000000000000000000000000000000000000000000000
getting a random hash of
0000000000000E86670000000000000000000000000000000000000000000000
^
Lesser value
would "win" you the "Target" Block thus giving you 50 BTCs.
Based off of the current Difficulty the probability of winning is 0.0000000000000002015752067216838860908012520667398348450
The lower the difficulty the higher the value of the target and vice versa for the higher diffculty.
The hash also has to be verified as a hash, you can't obviously have a program just throw back, "oh I found the lower value wink wink" lol.
This guy David Perry gives an awesome explanation on why AMD is cornering the market on integer based calculations and proves its not just the "bitcoin" world.
http://bitcoin.stackexchange.com/questions/1523/bitcoin-alternative-designed-for-nvidiaThis SHA-256 stuff is and was mostly used for GPGPU processes by hackers. I wouldn't be surprised if it was group of hackers that originally wrote all the bitmining programs we use today. It is the dominate force right now in password cracking, encryption etc.
In closing, nvida, in order to keep up with market demands, will eventually have to start bringing back small integer math into their design to keep up with the next generation uses for things like full hardrive encryption, faster SSL handshakes, etc. Computer Security is ever evolving, once we start getting into the 10-50-100MB encryption algorithms, CPU processing, as it is now, will never be able to keep up; hell it can't keep up with our 2MB encryptions lol.
I don't know if you are a programmer, I assume you must have knowledge else you wouldn't be seeking more knowledge. It's addicting. Here is a post of the process of getting a target in really really simple C language.
http://pastebin.com/n8UEGA86Thanks,
icvader