x86/x64 ?
Are there performance differences within x86/x64 versions of MaxxPI²?
This annoying question is always such a contentious and embattled topic, so my personal
testing was mostly performed with current dual/quad-core processors, from diffenent CPU Manufacturers.
It was my goal to determine a difference between x86/x64 operating systems, while using
MaxxPI²'s main bench-routines as a native x64/x86 task/application.
Microsoft tells anecdotally that x64 has proven to be an amazing resilient architecture,
offering full 32-bit application performance when running under a 64-bit operating system.
This was a performance goal that eluded the company when working with the Itanium and later
processors . "We wanted to eliminate any adoption barrier (for x64)," Iain McDonald,
a Microsoft director of Windows (Server) program management, told recently.
"We think we nailed it." he said and yes, I can say that this is true for MaxxPI².
But even for 32-bit applications, the x64 platform offers some advantages over x86 hardware.
When you boot into a 64-bit Windows operating system on x64 hardware,
you get additional registers, and 32-bit applications each get a full 4 GB of address space,
compared to 2 GB, typically, on a 32-bit box (Previous 32-bit Windows client and server versions
do support an optional 2/3 GB native application address space mode).
Of course MaxxPI² will take benefit from this.
Architectural improvements in the x64 chips, also enhanced performance.
The net effect is that 32-bit applications running in a 64-bit Windows version run at parity when
compared to running in a 32-bit OS. In some cases, the code runs faster on x64, even dramatically faster,
even like MaxxPI² (SinglePI/MultiPI for example) will do. The reason, Microsoft says,
is the additional resources a true x64 environment provides. The aforementioned application address space
size is over 4,000 times larger than with x86 systems. The non-paged and pages memory pools are about
256 times larger on x64. Again, of course MaxxPI² will take benefit from this.
The nice thing about this performance boost is that it's not manufactured to meet a certain agenda.
Instead, they've found Windows x64 to be faster running 32-bit code than 32-bit versions of Windows
across the board and for MaxxPI² i found that all benches take an impact running on x64,
especially types which are multithreaded and/or use lots of memory, like MultiPI for example.
In practice every data type on a 64-bit binary is not 64-bit only. 64-bit binaries might have 8,16,32 bit
data objects in them and caches do allow you to address a byte in a cache line. In reality not every one
who codes a 64-bit program makes all the data 64-bit quantities and that's the point, so...
Conclusion:
* Some code may get zero benefit from 64bit, other code get a plus performance gain,
some show lower performance, mostly they correspond approximately (without code changes).
* The CPU performance gains, when moving to native x64 code or running x64
OS are not equal on different CPU Manufacturers.
* For now i can say, that running an x86 MaxxPI² (or MaxxPI-Preview) on a x64 OS
will give you almost the same (higher)results as an native (without code changes) x64 MaxxPI² will do.
* x64 MaxxPI² surely come, but actually i see no reason to do so, since the overwhelming majority
uses x86 OS and applications. If this might change, i will take a look.