Articulo de referencia

SSE4

SSE4 ( Streaming SIMD Extensions 4 ) es un conjunto de instrucciones SIMD para CPU utilizado en la microarquitectura Intel Core y AMD K10 (K8L) . Fue anunciado el 27 de septiemb...

SSE4 ( Streaming SIMD Extensions 4 ) es un conjunto de instrucciones SIMD para CPU utilizado en la microarquitectura Intel Core y AMD K10 (K8L) . Fue anunciado el 27 de septiembre de 2006 en el Foro de Desarrolladores de Intel de otoño de 2006 , con detalles vagos en un documento técnico ; [ 1 ] detalles más precisos de 47 instrucciones estuvieron disponibles en el Foro de Desarrolladores de Intel de primavera de 2007 en Beijing , en la presentación. [ 2 ] SSE4 extendió el conjunto de instrucciones SSE3 que fue lanzado a principios de 2004. Todo el software que utiliza instrucciones SIMD de Intel anteriores (por ejemplo, SSE3) es compatible con los microprocesadores modernos que admiten instrucciones SSE4. Todo el software existente continúa ejecutándose correctamente sin modificaciones en microprocesadores que incorporan SSE4, así como en presencia de aplicaciones existentes y nuevas que incorporan SSE4. [ 3 ]

Al igual que otros conjuntos de instrucciones SIMD de CPU de generaciones anteriores, SSE4 admite hasta 16 registros, cada uno de 128 bits de ancho, que pueden cargar cuatro enteros de 32 bits, cuatro números de punto flotante de precisión simple de 32 bits o dos números de punto flotante de precisión doble de 64 bits. [ 1 ] Las operaciones SIMD, como la suma/multiplicación elemento a elemento de vectores y la suma/multiplicación escalar de vectores, procesan múltiples bytes de datos en una sola instrucción de CPU. SSE4.2 introdujo nuevas operaciones de cadena SIMD, incluida una instrucción para comparar dos fragmentos de cadena de hasta 16 bytes cada uno. [ 1 ] SSE4.2 es un subconjunto de SSE4 y se lanzó unos años después del lanzamiento inicial de SSE4.

subconjuntos SSE4

El conjunto de instrucciones Intel SSE4 consta de 54 instrucciones. Un subconjunto de 47 instrucciones, denominado SSE4.1 en algunos documentos de Intel, está disponible en Penryn . Además, SSE4.2 , un segundo subconjunto compuesto por las siete instrucciones restantes, se implementó por primera vez en el Core i7 basado en Nehalem . Intel reconoce que los comentarios de los desarrolladores desempeñaron un papel importante en el desarrollo de este conjunto de instrucciones.

A partir de los procesadores basados ​​en Barcelona , ​​AMD introdujo el conjunto de instrucciones SSE4a , que incluye cuatro instrucciones SSE4 y cuatro nuevas instrucciones SSE. Estas instrucciones no se encuentran en los procesadores Intel compatibles con SSE4.1, y los procesadores AMD solo comenzaron a ser compatibles con SSE4.1 y SSE4.2 de Intel (el conjunto completo de instrucciones SSE4) en los procesadores FX basados ​​en Bulldozer . Con SSE4a también se introdujo la función SSE desalineada, lo que significaba que las instrucciones de carga no alineadas eran tan rápidas como las versiones alineadas en direcciones alineadas. También permitía deshabilitar la comprobación de alineación en las operaciones SSE sin carga que accedían a la memoria. [ 4 ] Posteriormente, Intel introdujo mejoras de velocidad similares para SSE sin alineación en sus procesadores Nehalem, pero no introdujo el acceso desalineado mediante instrucciones SSE sin carga hasta AVX . [ 5 ]

confusión de nombres

Lo que ahora se conoce como SSSE3 (Supplemental Streaming SIMD Extensions 3), introducido en la línea de procesadores Intel Core 2 , fue denominado SSE4 por algunos medios hasta que Intel le dio el nombre SSSE3. Conocidas internamente como Merom New Instructions, Intel inicialmente no planeaba asignarles un nombre especial, lo que fue criticado por algunos periodistas. [ 6 ] Finalmente, Intel aclaró la confusión y reservó el nombre SSE4 para su siguiente extensión del conjunto de instrucciones. [ 7 ]

Intel está utilizando el término de marketing HD Boost para referirse a SSE4. [ 8 ]

Nuevas instrucciones

A diferencia de todas las versiones anteriores de SSE, SSE4 contiene instrucciones que ejecutan operaciones no específicas de aplicaciones multimedia. Incluye varias instrucciones cuya acción está determinada por un campo constante y un conjunto de instrucciones que toman XMM0 como tercer operando implícito.

Varias de estas instrucciones son posibles gracias al motor de reordenamiento de un solo ciclo de Penryn. (Las operaciones de reordenamiento reordenan los bytes dentro de un registro).

SSE4.1

Estas instrucciones se introdujeron con la microarquitectura Penryn , la versión reducida a 45 nm de la microarquitectura Core  de Intel . La compatibilidad se indica mediante el indicador CPUID.01H:ECX.SSE41[Bit 19].

SSE4.2

SSE4.2 añadió STTNI (String and Text New Instructions), [ 10 ] varias instrucciones nuevas que realizan búsquedas de caracteres y comparaciones en dos operandos de 16 bytes a la vez. Estas fueron diseñadas (entre otras cosas) para acelerar el análisis de documentos XML . [ 11 ] También añadió una CRC32instrucción para calcular comprobaciones de redundancia cíclica como las que se utilizan en ciertos protocolos de transferencia de datos. Estas instrucciones se implementaron por primera vez en la línea de productos Intel Core i7 basada en Nehalem y completan el conjunto de instrucciones SSE4. AMD por otro lado fue el primero en añadir soporte a partir de la microarquitectura Bulldozer . Windows 7 de Microsoft fue el primer sistema operativo en implementar SSE4.2, ya que el soporte se indica mediante el indicador CPUID.01H:ECX.SSE42[Bit 20].

Windows 11 24H2 y Windows Server 2025 requieren que la CPU sea compatible con SSE4.2; de lo contrario, el kernel de Windows no se puede arrancar. [ 12 ]

POPCNTyLZCNT

Estas instrucciones operan sobre registros enteros en lugar de registros SSE, porque no son instrucciones SIMD, pero aparecen al mismo tiempo y, aunque AMD las introdujo con el conjunto de instrucciones SSE4a, se consideran extensiones separadas con sus propios bits CPUID dedicados para indicar la compatibilidad. Intel las implementa POPCNTa partir de la microarquitectura Nehalem y LZCNTa partir de la microarquitectura Haswell . AMD implementa ambas, a partir de la microarquitectura Barcelona .

AMD denomina a este par de instrucciones Manipulación Avanzada de Bits (ABM) .

La codificación de LZCNTsigue la misma ruta de codificación que la BSRinstrucción (revisión inversa de bits). Esto genera un problema: LZCNTen algunas CPU que no la admiten, como las CPU Intel anteriores a Haswell, la BSRoperación puede ejecutarse incorrectamente en lugar de generar una excepción de instrucción no válida . Esto es problemático, ya que los valores resultantes de LZCNTy BSRson diferentes.

Los ceros finales se pueden contar utilizando las instrucciones BSF(escaneo de bits hacia adelante) .TZCNT

Windows 11 24H2 y Windows Server 2025 requieren que la CPU sea compatible POPCNT; de ​​lo contrario, el kernel de Windows no se puede arrancar. [ 15 ]

SSE4a

El grupo de instrucciones SSE4a se introdujo en la microarquitectura Barcelona de AMD . Estas instrucciones no están disponibles en los procesadores Intel. La compatibilidad se indica mediante el indicador CPUID.80000001H:ECX.SSE4A[Bit 6]. [ 17 ]

Véase también

Referencias

  1. 1 2 3 Intel Streaming SIMD Extensions 4 (SSE4) Instruction Set Innovation Archivado el 30 de mayo de 2009 en Wayback Machine , Intel.
  2. Ajuste para Intel SSE4 para la microarquitectura Intel Core de próxima generación de 45 nm Archivado el 8 de marzo de 2021 en Wayback Machine , Intel.
  3. "Intel SSE4 Programming Reference" (PDF) . Archivado (PDF) del original el 15 de febrero de 2020. Consultado el 26 de diciembre de 2014 .
  4. "Característica del procesador "Barcelona": Acceso desalineado SSE . AMD. Archivado del original el 9 de agosto de 2016. Recuperado el 3 de marzo de 2015 .
  5. "Inside Intel Nehalem Microarchitecture" . Archivado del original el 2 de abril de 2015. Consultado el 3 de marzo de 2015 .
  6. Mi experiencia con "Conroe" Archivado el 15 de octubre de 2013 en Wayback Machine , DailyTech
  7. Ampliando la arquitectura de procesador más popular del mundo , Intel
  8. "Intel - Soluciones para centros de datos, IoT e innovación en PC" . Intel . Archivado del original el 7 de febrero de 2013. Consultado el 17 de septiembre de 2009 .
  9. Estimación de movimiento con Intel Streaming SIMD Extensions 4 (Intel SSE4) Archivado el 16 de junio de 2018 en Wayback Machine , Intel.
  10. "Validación de esquema con Intel Streaming SIMD Extensions 4 (Intel SSE4)" . Archivado del original el 17 de junio de 2018. Recuperado el 6 de febrero de 2012 .
  11. "Acelerador de análisis XML con extensiones SIMD de transmisión Intel 4 (Intel SSE4)" . Archivado del original el 17 de junio de 2018. Consultado el 6 de febrero de 2012 .
  12. Klotz, Aaron (24 de abril de 2024). "Microsoft bloquea algunos PC para Windows 11 24H2: la CPU debe ser compatible con SSE4.2 o el sistema operativo no arrancará" . Tom's Hardware . Consultado el 29 de abril de 2024 .
  13. Referencia de programación Intel SSE4 Archivada el 15 de febrero de 2020 en Wayback Machine , pág. 61. Véase también RFC 3385 Archivada el 19 de junio de 2008 en Wayback Machine para un análisis del polinomio CRC32C.
  14. Cálculo rápido y paralelizado de CRC mediante la instrucción Nehalem CRC32 Dr. Dobbs, 12 de abril de 2011
  15. Sen, Sayan (17 de marzo de 2024). "Microsoft corrige un error en el bloque PopCnt, pero los requisitos de Windows 11 24H2 podrían ser permanentes" . Neowin . Consultado el 17 de marzo de 2024 .
  16. Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32, Volumen 2B: Referencia del conjunto de instrucciones, N–Z Archivado el 8 de marzo de 2011 en Wayback Machine .
  17. 1 2 "Especificación AMD CPUID" (PDF) . Archivado (PDF) del original el 1 de noviembre de 2013. Recuperado el 30 de octubre de 2013 .
  18. ^ Rahul Chaturvedi (17 de septiembre de 2007). "Característica del procesador "Barcelona": Conjunto de instrucciones SSE4a .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  19. Rahul Chaturvedi (2 de octubre de 2007) .Característica del procesador "Barcelona": SSE4a, parte 2" .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  • Referencia de programación SSE4 de Intel
  • Calculadora PCMPSTR para las instrucciones de cadena SSE 4.2 archivada en Ghostarchive.org el 10 de mayo de 2022.