Truncated multiplication and batch software SIMD AVX512 implementation for faster Montgomery multiplications and modular exponentiation
Multiplication Tronquée et implantation logicielle vectorisée en lot avec SIMD AVX512 pour des multiplications et exponentiation de Montgomery plus efficaces
Résumé
This paper presents software implementations of batch computations, dealing with multi-precision integer operations. In this work, we use the Single Instruction Multiple Data (SIMD) AVX512 instruction set of the x86-64 processors, in particular the vectorized fused multiplier-adder VPMADD52. We focus on batch multiplications, squarings, modular multiplications, modular squarings and constant time modular exponentiations of 8 values using a word-slicing storage. We explore the use of Schoolbook and Karatsuba approaches with operands up to 4108 and 4154 bits respectively. We also introduce a truncated multiplication that speeds up the computation of the Montgomery modular reduction in the context of software implementation. Our Truncated Montgomery modular multiplication improvement offers speed gains of almost 20 % over the conventional non-truncated versions. Compared to the state-of-the-art GMP and OpenSSL libraries, our speedup modular operations are more than 4 times faster. Compared to OpenSSL BN_mod_exp_mont_consttimex2 using AVX512 and madd52* (madd52hi or madd52lo) in 256-bit registers, in fixed-window exponentiations of sizes 1024 and 2048 , our 512-bit implementation provides speedups of respectively 1.75 and 1.38, while the 256-bit version speedups are 1.51 and 1.05 for 1024 and 2048 -bit sizes (batch of 4 values in this case).
Cet article présente des implémentations logicielles de calculs par lots, traitant d'opérations entières multi-précision. Dans ce travail, nous utilisons le jeu d’instructions SIMD (Single Instruction Multiple Data) AVX512 des processeurs x86-64, en particulier le multiplicateur-additionneur fusionné vectorisé VPMADD52. Nous nous concentrons sur les multiplications par lots, les mises au carré, les multiplications modulaires, les mises au carré modulaires et les exponentiations modulaires à temps constant de 8 valeurs à l'aide d'un stockage par découpage de mots. Nous explorons l'utilisation des approches Schoolbook et Karatsuba avec des opérandes allant respectivement jusqu'à 4108 et 4154 bits. Nous introduisons également une multiplication tronquée qui accélère le calcul de la réduction modulaire de Montgomery dans le contexte de l'implémentation logicielle. Notre amélioration de multiplication modulaire Montgomery tronquée offre des gains de vitesse de près de 20 % par rapport aux versions conventionnelles non tronquées. Par rapport aux bibliothèques GMP et OpenSSL de référence, nos opérations modulaires d'accélération sont plus de 4 fois plus rapides. Par rapport à OpenSSL BN_mod_exp_mont_consttimex2 utilisant AVX512 et madd52* (madd52hi ou madd52lo) dans des registres de 256 bits, dans des exponentiations à fenêtre fixe de tailles 1024 et 2048 , notre implémentation 512 bits fournit des accélérations de respectivement 1,75 et 1,38, tandis que la version 256 bits les accélérations sont de 1,51 et 1,05 pour les tailles de 1 024 et 2 048 bits (lot de 4 valeurs dans ce cas).
Origine | Fichiers produits par l'(les) auteur(s) |
---|---|
licence |