The Polynomial Modular Number System (PMNS) is an integer number system which aims to speed up arithmetic operations modulo a prime p. Such a system is defined by a tuple (p, n, γ, ρ, E), where p, n, γ and ρ are positive integers, E ∈ Z[X], with E(γ) ≡ 0 (mod p). In [15] conditions required to build efficient AMNS (PMNS with E(X) = X n − λ, where λ ∈ Z \ {0}) are provided. In this paper, we generalise their approach for any monic polynomial E ∈ Z[X] of degree n. We present new bounds and highlight a set of polynomials E for very efficient operations in the PMNS and low memory requirement. We also provide AMNS and PMNS modular multiplication implementations, for a prime of size 256 bits, in classic C. We also provide, for the same prime, the first implementation taking advantage of the SIMD AVX512 instruction set. The AVX512 PMNS is 72 % faster than its AMNS counterpart (classical C version). This version presents a more than 60 % speed-up in comparison with the state-of-the-art Montgomery-CIOS modular multiplication of the GMP library.
The Polynomial Modular Number System (PMNS) and the Residue Number System (RNS) are integer number systems which aim to speed up modular arithmetic. Their parallel properties make them suitable for the implementation of cryptographic applications on modern processors with SIMD instructions. In this work, we will show the implementation choices made for the modular multiplication in both systems and compare their implementation performances for several sizes of moduli. We target the Intel 64-bit sequential instruction set and the Intel AVX-512 vector instruction set. This instruction set allows significant speed-ups up to 1 621 bit size moduli, while the vectorized PMNS implementation is up to 2.5 times faster than the vectorized RNS, though the vectorized RNS becomes slightly better for 3 251 bits, due to the difficulty to find a PMNS with a suitable parameter n. The vectorized RNS implementations reach performance levels close the state-of-the-art GMP library, while the retired instruction counts are lower for sizes between 401 and 3 251 bits.
The Polynomial Modular Number System (PMNS) is an integer number system which aims to speed up arithmetic operations modulo a prime p. Such a system is defined by a tuple (p, n, γ, ρ, E), where p, n, γ and ρ are positive integers, E ∈ Z[X], with E(γ) ≡ 0 (mod p). In [15] conditions required to build efficient AMNS (PMNS with E(X) = X n − λ, where λ ∈ Z \ {0}) are provided. In this paper, we generalise their approach for any monic polynomial E ∈ Z[X] of degree n. We present new bounds and highlight a set of polynomials E for very efficient operations in the PMNS and low memory requirement. We also provide AMNS and PMNS modular multiplication implementations, for a prime of size 256 bits, in classic C. We also provide, for the same prime, the first implementation taking advantage of the SIMD AVX512 instruction set. The AVX512 PMNS is 72 % faster than its AMNS counterpart (classical C version). This version presents a more than 60 % speed-up in comparison with the state-of-the-art Montgomery-CIOS modular multiplication of the GMP library.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
customersupport@researchsolutions.com
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Copyright © 2025 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.