It happended I have both Nocona(EM64T) and Opteron in hand. I tested
these patchs and found interesting things!

On Opteron248 2.2G, with gcc 3.3.x Throught RC4_INT RC4_CHUNK
0.9.7e 148MB/s unsigned char N/A
0.9.7e 122MB/s unsigned char unsigned long
0.9.7e 212MB/s unsigned long unsigned long
rc4-amd64.marc 392MB/s unsigned long N/A
rc4-amd64.v1.2 252MB/s unsigned long N/A
rc4-amd64.v1.3 371MB/s unsigned long N/A

For all OpenSSL rc4-amd64s RC4_INT is int, not long. And for *all* rc4-amd64 RC4_CHUNK is effectively long.


On Nocona(EM64T) 3.6G, with gcc 3.3.x Throught RC4_INT RC4_CHUNK
0.9.7e 358MB/s unsigned char N/A
0.9.7e 374MB/s unsigned char unsigned long
0.9.7e 151MB/s unsigned long unsigned long

This is kind of unexpected... Not that performance is better for narrower RC4_INT (it's known to vary from platform to platform), but rather performance difference... At least on other platforms which benefit from narrower RC4_INT difference in performance is not larger than 30%... BTW, Marc's page mentions that "P4 is known to be perform poor on RC4 benchmark." This refers to assembler implementation, which is implemented for RC4_INT=int. It might happen that RC4_INT=char would perform better on plain P4 as well... It's never simple, huh?


rc4-amd64.marc   161MB/s     unsigned long       N/A
rc4-amd64.v1.2   293MB/s     unsigned long       N/A
rc4-amd64.v1.3   290MB/s     unsigned long       N/A

All rc4-amd64s rely on partial register arithmetics, something P4 core was never good at [which is why you see "How IA32E would perform remains to be seen..." in commentary section]...


So, we can find these patches have different impact on Opteron and EM64T.

I'd like to reserve for option to send you some code for benchmarking on EM64T within few days. Is it OK? A.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]

Reply via email to