diff options
author | Jussi Kivilinna <jussi.kivilinna@mbnet.fi> | 2011-09-26 09:47:25 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2011-10-21 08:23:08 -0400 |
commit | 8280daad436edb7dd9e7e06fc13bcecb6b2a885c (patch) | |
tree | 0d4cb032c6da8617bd4a2dd84bd8ef1a605fa19d /crypto/Kconfig | |
parent | 91d41f159d75d602f6001218eec64c5e761475a6 (diff) |
crypto: twofish - add 3-way parallel x86_64 assembler implemention
Patch adds 3-way parallel x86_64 assembly implementation of twofish as new
module. New assembler functions crypt data in three blocks chunks, improving
cipher performance on out-of-order CPUs.
Patch has been tested with tcrypt and automated filesystem tests.
Summary of the tcrypt benchmarks:
Twofish 3-way-asm vs twofish asm (128bit 8kb block ECB)
encrypt: 1.3x speed
decrypt: 1.3x speed
Twofish 3-way-asm vs twofish asm (128bit 8kb block CBC)
encrypt: 1.07x speed
decrypt: 1.4x speed
Twofish 3-way-asm vs twofish asm (128bit 8kb block CTR)
encrypt: 1.4x speed
Twofish 3-way-asm vs AES asm (128bit 8kb block ECB)
encrypt: 1.0x speed
decrypt: 1.0x speed
Twofish 3-way-asm vs AES asm (128bit 8kb block CBC)
encrypt: 0.84x speed
decrypt: 1.09x speed
Twofish 3-way-asm vs AES asm (128bit 8kb block CTR)
encrypt: 1.15x speed
Full output:
http://koti.mbnet.fi/axh/kernel/crypto/tcrypt-speed-twofish-3way-asm-x86_64.txt
http://koti.mbnet.fi/axh/kernel/crypto/tcrypt-speed-twofish-asm-x86_64.txt
http://koti.mbnet.fi/axh/kernel/crypto/tcrypt-speed-aes-asm-x86_64.txt
Tests were run on:
vendor_id : AuthenticAMD
cpu family : 16
model : 10
model name : AMD Phenom(tm) II X6 1055T Processor
Also userspace test were run on:
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU E7330 @ 2.40GHz
stepping : 11
Userspace test results:
Encryption/decryption of twofish 3-way vs x86_64-asm on AMD Phenom II:
encrypt: 1.27x
decrypt: 1.25x
Encryption/decryption of twofish 3-way vs x86_64-asm on Intel Xeon E7330:
encrypt: 1.36x
decrypt: 1.36x
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/Kconfig')
-rw-r--r-- | crypto/Kconfig | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig index 07637745e23..404a846b1e4 100644 --- a/crypto/Kconfig +++ b/crypto/Kconfig | |||
@@ -828,6 +828,26 @@ config CRYPTO_TWOFISH_X86_64 | |||
828 | See also: | 828 | See also: |
829 | <http://www.schneier.com/twofish.html> | 829 | <http://www.schneier.com/twofish.html> |
830 | 830 | ||
831 | config CRYPTO_TWOFISH_X86_64_3WAY | ||
832 | tristate "Twofish cipher algorithm (x86_64, 3-way parallel)" | ||
833 | depends on (X86 || UML_X86) && 64BIT | ||
834 | select CRYPTO_ALGAPI | ||
835 | select CRYPTO_TWOFISH_COMMON | ||
836 | select CRYPTO_TWOFISH_X86_64 | ||
837 | help | ||
838 | Twofish cipher algorithm (x86_64, 3-way parallel). | ||
839 | |||
840 | Twofish was submitted as an AES (Advanced Encryption Standard) | ||
841 | candidate cipher by researchers at CounterPane Systems. It is a | ||
842 | 16 round block cipher supporting key sizes of 128, 192, and 256 | ||
843 | bits. | ||
844 | |||
845 | This module provides Twofish cipher algorithm that processes three | ||
846 | blocks parallel, utilizing resources of out-of-order CPUs better. | ||
847 | |||
848 | See also: | ||
849 | <http://www.schneier.com/twofish.html> | ||
850 | |||
831 | comment "Compression" | 851 | comment "Compression" |
832 | 852 | ||
833 | config CRYPTO_DEFLATE | 853 | config CRYPTO_DEFLATE |