#14,
Yea, so that's all fine and dandy, but the people at overclockers.com are completely talking out their ass and/or have no knowledge about how programming actually works. To use their example of multiplying 2x2, moving to 64-bit actually makes the process of multiplication much more efficient (in a programming sense). Here's the technical explanation:
On a 32-bit x86 based CPU, you have only four 32-bit (4 byte) registers to work with freely: EAX, EBX, ECX, EDX. There are more 32-bit registers than that, but they have specialized purposes, so I wont get into those. Anyway, in general, the processing taking place in a given program only has those 16 bytes on the CPU for free use, any other data has to go on the stack (in memory). Putting data on the stack, then taking it off later, is extremely slow compared to just working with the data in CPU registers. So, in a complex routine/algorithm working with lots of variables, you keep the most commonly accessed data in CPU registers (so as not to act as a bottleneck) and the rest of the data on the stack. To reiterate, because putting data on the stack is so much slower than working with data in registers, you want to keep as much data (and/or the most commonly referenced data) in registers as possible, and use the stack as little as possible.
To get to the multiplication example, the assembler instruction for multiplication is MUL. MUL returns a 64-bit result, the upper 32 bits of which are put in EDX, the lower 32 bits in EAX. So, just to multiply 2x2 on a 32-bit processor, you have to preserve the data in EAX and EDX (assuming you need it later) by taking their existing contents and putting them on the stack (or in different registers, which are most likely already in use, so you're stuck with the stack), then retreiving that data off the stack later. As we have already established, this is slow. So, with 2x2, even though we know beforehand that we won't need EDX (because 2x2 = 4, with is less than the maximim value stored in 32-bits, 4294967296), we still have to slow things down (access the stack) to preserve the data in EDX before doing the multiplication.
Their example of multiplying 2x2 in binary is nice and all, but it's irrelevant because in reality, multiplication
already returns a 64-bit result (even on 32-bit processors). But if this were a 64-bit CPU, that 64-bit result could have been stored on one register instead of two, thus there may not have been any need to access the stack, which thus speeds up the process. So, you see, even the simple 2x2 is faster on a 64-bit CPU, and certainly nothing is being "wasted". Yes, this is an oversimplification, but it illistrates the point. Nothing against overclockers.com, but they obviously don't know what the hell they're talking about, in a practical sense.
Are they going to re-code the whole game to take advantage of the extra 32 bits?
Actually, no re-coding is required (except any code that was written in assembler). All that is required is to recompile the code with a compiler that supports the new architecture (64-bit x86). Not too difficult or time-consuming there, so yea, why wouldn't Epic do it?
This comment was edited on Feb 27, 04:41.