aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>2011-09-26 09:47:25 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2011-10-21 08:23:08 -0400
commit8280daad436edb7dd9e7e06fc13bcecb6b2a885c (patch)
tree0d4cb032c6da8617bd4a2dd84bd8ef1a605fa19d /crypto
parent91d41f159d75d602f6001218eec64c5e761475a6 (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')
-rw-r--r--crypto/Kconfig20
1 files changed, 20 insertions, 0 deletions
diff --git a/crypto/Kconfig b/crypto/Kconfig
index 07637745e234..404a846b1e43 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
831config 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
831comment "Compression" 851comment "Compression"
832 852
833config CRYPTO_DEFLATE 853config CRYPTO_DEFLATE