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 ] e implementada 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 bitsrepresenta el polinomioLa 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 ]
Una aplicación de estas instrucciones es mejorar la velocidad de las aplicaciones que realizan cifrado por bloques en modo Galois/Contador , que depende de la multiplicación de campos finitos GF(2k ) . Otra aplicación es el cálculo rápido de valores CRC , [ 3 ] incluyendo aquellos 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 ".
New instructions
La instrucción calcula el producto sin acarreo de 128 bits de dos valores de 64 bits. El destino es un registro XMM de 128 bits . La fuente puede ser otro registro XMM o memoria. Un operando inmediato especifica qué mitades de los operandos de 128 bits se multiplican. También se definen mnemónicos que especifican valores concretos del operando inmediato.
Una versión vectorizada de EVEX (VPCLMULQDQ) se observa en AVX-512 .
CPUs con conjunto de instrucciones CLMUL
- Intel
- Procesador de Westmere (marzo de 2010).
- Procesador Sandy Bridge
- Procesador Ivy Bridge
- Procesador Haswell
- Procesador Broadwell (con mayor rendimiento y menor latencia [ 5 ] )
- Procesador Skylake (y posterior)
- Procesador Goldmont
- AMD :
- Procesadores basados en Jaguar y más recientes [ 6 ]
- Procesadores basados en Puma y más recientes
- Procesadores de "equipos pesados"
- Procesadores basados en excavadoras [ 7 ]
- Procesadores basados en Piledriver
- Procesadores basados en apisonadoras
- Procesadores basados en excavadoras y más nuevos
- Procesadores Zen
- Procesadores Zen+
- Procesadores Zen2 (y posteriores)
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
- ↑ "Red de software de Intel" . Intel. Archivado del original el 7 de abril de 2008. Consultado el 5 de abril de 2008 .
- ↑ Shay Gueron; Michael E. Kounavis (2014-04-20). "Instrucción de multiplicación sin acarreo de Intel y su uso para calcular el modo GCM – Rev 2.02" (PDF) . Intel . Archivado del original el 6 de agosto de 2019.
- ↑ "Cálculo rápido de CRC para polinomios genéricos usando PCLMULQDQ" (PDF) .
- ↑ Vlad Krasnov (2015-07-08). "Luchando contra el cáncer: el beneficio inesperado de publicar nuestro código como código abierto" . CloudFlare . Recuperado el 2016-09-04 .
- ↑ Johan De Gelas (31 de marzo de 2017). "Análisis del Intel Xeon E5 v4: Pruebas de Broadwell-EP con cargas de trabajo de servidor exigentes" . Anandtech . pág. 3.
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "Diapositiva que detalla las mejoras de Jaguar con respecto a Bobcat" . AMD. 29 de agosto de 2012. Consultado el 3 de agosto de 2013 .
- ↑ Dave Christie (6 de mayo de 2009). "Encontrar el equilibrio" . Blogs de desarrolladores de AMD . Consultado el 11 de marzo de 2011 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
- Arquitectura X86
- Instrucciones X86
- extensiones del conjunto de instrucciones