
虽然 Linus Torvalds 并不太喜欢默认启用新的内核选项,但在一个已经证明有益且那些配置自己内核构建的人可能会忽略的领域,就是架构优化的加密算法实现。有些人只启用对不同的内核加密算法的支持,却忘记或不知道还有针对 CPU 架构特定的实现,这些实现通常也可以启用,以获得比通用代码更好的性能。Google 工程师 Eric Biggers 一直在清理这些问题,BLAKE2s 是最新接受处理的。
多年来以其不懈的加密内核优化而闻名的 Eric Biggers 于周三发布了一系列新的补丁,以更好地清理 ChaCha 和 BLAKE2s 代码。该补丁系列还包括默认启用架构优化的 BLAKE2s 代码,类似于其他加密算法所经历的过程。
该补丁系列中最有趣的是始终启用架构优化 BLAKE2s 代码的补丁。在那里他提出:
当启用加密算法支持时,该算法的架构优化实现也应该启用。我们多年来多次从困难中学习到这一点:人们经常忘记启用加密算法的架构优化实现,导致性能损失严重。
目前,BLAKE2s 支持始终启用(’obj-y’),因为 random.c 使用了它。因此,适用于 ARM 和 x86_64 的架构优化 BLAKE2s 代码也应该始终启用。让我们这么做。
请注意,对内核映像大小的影响非常小,不应成为担忧。在 ARM 上,启用 CRYPTO_BLAKE2S_ARM 实际上会*缩小*内核大小约 1200 字节,因为 ARM 优化的 blake2s_compress()完全替换了通用的 blake2s_compress()。在 x86_64 上,启用 CRYPTO_BLAKE2S_X86 会增加内核大小约 1400 字节,因为通用的 blake2s_compress()仍然作为后备包括在内;然而,从上下文来看,这仅是通用 blake2s_compress()的四分之一大小。x86_64 优化的 BLAKE2s 代码在运行时使用的 icache 比通用代码少得多。”
在针对 x86_64 优化的 BLAKE2s 的情况下,这允许使用 SSSE3 和 AVX-512 指令,以实现更快的 BLAKE2s 加密散列性能。
Linuxeden开源社区