Is 32 bits really better than 64?

At OSNews.com there are a number of benchmarks that promote the theory that 32-bit binaries are faster than 64-bit binaries. They use a venerable 333MHz UltraSPARC 2i as a test platform. Their first example is RSA operations, using OpenSSL 0.9.7c.

To counter their claims, we have benchmarked the same RSA operations using GMP 4.1.2. Since we didn't have access to any 333MHz UltraSPARC 2i system, we used a 296MHz UltraSPARC 2 system instead. Since scaling results is a questionable business, we haven't tried to compensate the GMP figures for our slightly slower machines. The gray bars below are taken from OSNews.com's best results. The violet bars denote results for GMP using 32-bit binaries and the wine-red bars denote results for GMP using 64-bit binaries.

As you can see, GMP is much faster than OpenSSL. That's no news, and it's not the main point with these diagrams. The point is that the 64-bit binaries are much faster than the 32-bit binaries. This is expected for bignum operations, as we have wider basic arithmetic operations, and thus get more work done with each machine instruction.

Now, UltraSPARC is a particularly poor example for showing the superiority of 64-bit processors for this problem domain, since this processor has a uniquely poor instruction set for bignum operations.

If we instead would compare an Athlon XP and an Athlon 64, the latter would be almost 4 times faster. Why 4 times and not just 2 times? Because a 64x64=>128 bit integer multiplication actually performs 4 times more work than a 32x32=>64 bit integer multiplication!

Niels Möller & Torbjörn Granlund

GMP developers