QUOTE (realityiswhere @ Sep 27 2009, 10:55 PM)

Required reading on the subject of 64bit from a true genius: Amit Singh, the author of
OS X Internals: A Systems Approach, creator of MacFUSE, and he works at Google no less.
In summary though: K64 doesn't matter at all to end users.. admittedly people in this community are tinkerers, and not end-users, so I think some people are going to use it regardless

The essentials of x64 in general compared to x32: Extended primary use registers (64bits compared to 32bits), now what this means in simple terms is the biggest number that can be stored in there. Since processors use binary, those numbers are going to be exponents of 2, that is 2^x (2,4,8,16,32,64,128,256,512 etc etc, notice the pattern? yeah that is why). Well, 2^32=4294967296, meaning that when it comes to addressing (seeing as memory is addressed byte by byte, or 1 count for each byte), that is ~4gb (for flat addressing model) 2^64=18446744073709551616, which is about 16 exabytes (1 exabyte = 1024 petabytes = 1048576 terabytes...), so yeah when you start getting into memory amounts like that it is extremely benefitial. Now dont take that to mean 32bit can only handle up to 4gb of ram, Most modern cpus have PAE, or physical address extension, which extends the registers 4 bits for addressing memory (2^36=64gb).
With that in mind, your 32bit kernel will operate the same as the 64bit kernel, provided you do not exceed the maximum memory, which is 64gb...
The other function of the larger registers is math. Now, remember that number for 2^32? well that is the biggest number storable in a 32bit register, meaning if you're doing math with a number bigger, you need to break the number and put it into 2 registers and do some asm magic to do the math (keep in mind, this also applies to verry long verry precise floating point numbers, think pi) With the 64bit registers, you can do that math with less operations, because numbers fit better, however if you reach the maximum for a 64bit number you still must do the asm magic

. What does this have to do with the kernel? nothing at all, teh kernel doesnt do math like that

.
Applications however do, and these applications can already run in 64bit so long as you have a 64bit processor. They, like the kernel though, can only address up to the kernels maximum memory, so 64bit app can do 64bit math and operations, but only address the 32bit memory with k32.
On a side note, the 64bit instrucitonset does provide 10 "extra" registers (r1 - r10), which classify as extended use registers (not usable with 32bit instruction set) These registers are only there, though, to ease flip/flopping of data in registers (if you've ever coded in x86 assembly you'll know what i'm talking about

, moving data in and out and in and out and back and forth and back and forth between registers is 80% of coding in asm haha) This doesnt really improve efficiency, efficient asm coders (and experienced ones at that) usually code without them because they can manage registers efficiently as is