skip to content

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 different 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, even for 32-bit applications. 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/Blur/AES for example. For further informations please take look here.

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).

* Used compiler has a large influence.
 
* 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 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.