stringtranslate.com

Conjunto de instrucciones CLMUL

La multiplicación sin acarreo ( CLMUL ) es una extensión del conjunto de instrucciones x86 utilizado por los microprocesadores de Intel y AMD , propuesta por Intel en marzo de 2008 [1] y disponible en los procesadores Intel Westmere anunciados a principios de 2010. Matemáticamente, la instrucción implementa la multiplicación de polinomios sobre el campo finito GF(2) donde la cadena de bits representa el polinomio . La instrucción CLMUL también permite una implementación más eficiente de la multiplicación estrechamente relacionada de campos finitos más grandes GF(2 k ) que el conjunto de instrucciones tradicional. [2]

Un uso de estas instrucciones es mejorar la velocidad de las aplicaciones que realizan cifrado de bloques en modo Galois/Contador , que depende de la multiplicación de un campo finito GF(2 k ). Otra aplicación es el cálculo rápido de valores CRC , [3] incluidos los utilizados para implementar el algoritmo DEFLATE de ventana deslizante LZ77 en zlib y pngcrush . [4]

ARMv8 también tiene una versión de CLMUL. SPARC llama a su versión XMULX, por "multiplicación XOR".

Nuevas instrucciones

La instrucción calcula el producto de 128 bits sin acarreo de dos valores de 64 bits. El destino es un registro XMM de 128 bits . La fuente puede ser otro registro XMM o la memoria. Un operando inmediato especifica qué mitades de los operandos de 128 bits se multiplican. También se definen mnemotécnicos que especifican valores específicos del operando inmediato:

Una versión vectorizada de EVEX (VPCLMULQDQ) se ve en AVX-512 .

CPU con conjunto de instrucciones CLMUL

La presencia del conjunto de instrucciones CLMUL se puede comprobar probando uno de los bits de características de la CPU .

Véase también

Referencias

  1. ^ "Red de software de Intel". Intel. Archivado desde el original el 7 de abril de 2008. Consultado el 5 de abril de 2008 .
  2. ^ Shay Gueron; Michael E. Kounavis (20 de abril de 2014). "Instrucción de multiplicación sin acarreo de Intel y su uso para calcular el modo GCM – Rev 2.02" (PDF) . Intel . Archivado desde el original el 6 de agosto de 2019.
  3. ^ "Cálculo CRC rápido para polinomios genéricos utilizando PCLMULQDQ" (PDF) .
  4. ^ Vlad Krasnov (8 de julio de 2015). "La lucha contra el cáncer: el beneficio inesperado de publicar nuestro código en código abierto". CloudFlare . Consultado el 4 de septiembre de 2016 .
  5. ^ Johan De Gelas (31 de marzo de 2017). "Revisión de Intel Xeon E5 v4: prueba de Broadwell-EP con cargas de trabajo de servidor exigentes". Anandtech . pág. 3.
  6. ^ "Diapositiva que detalla las mejoras de Jaguar con respecto a Bobcat". AMD. 29 de agosto de 2012. Consultado el 3 de agosto de 2013 .
  7. ^ Dave Christie (6 de mayo de 2009). "Lograr un equilibrio". Blogs de desarrolladores de AMD. Archivado desde el original el 9 de noviembre de 2013. Consultado el 11 de marzo de 2011 .