El SSE5 (abreviatura de Streaming SIMD Extensions versión 5 ) fue una extensión del conjunto de instrucciones SIMD propuesta por AMD el 30 de agosto de 2007 como un suplemento a las instrucciones centrales SSE de 128 bits en la arquitectura AMD64 .
AMD decidió no implementar SSE5 como se propuso originalmente. En mayo de 2009, AMD reemplazó SSE5 con tres extensiones de conjunto de instrucciones más pequeñas denominadas XOP , FMA4 y F16C , que conservan la funcionalidad propuesta de SSE5, pero codifican las instrucciones de manera diferente para una mejor compatibilidad con el conjunto de instrucciones AVX propuesto por Intel .
Los tres conjuntos de instrucciones derivados de SSE5 se introdujeron en el núcleo del procesador Bulldozer , lanzado en octubre de 2011 en un proceso de 32 nm . [1]
Compatibilidad
Extensión haz SSE5 de AMD no incluye el conjunto completo de Intel 's SSE4 instrucciones, por lo que es un competidor para SSE4 en lugar de un sucesor.
Esto complica el desarrollo de software. Es una práctica recomendada para un programa probar la presencia de extensiones de conjuntos de instrucciones por medio de la instrucción CPUID antes de ingresar una ruta de código que depende de esas instrucciones para funcionar correctamente. Para una máxima portabilidad, una aplicación optimizada requerirá tres rutas de código: una ruta de código base para compatibilidad con procesadores más antiguos (de cualquier proveedor), una ruta de código Intel optimizada por separado que explota SSE4 o AVX, y una ruta de código AMD optimizada por separado que explota SSE5.
Debido a esta proliferación, los puntos de referencia entre los procesadores Intel y AMD reflejan cada vez más la inteligencia o la calidad de implementación de las rutas de código divergentes en lugar de la solidez de la plataforma subyacente.
Mejoras SSE5
El conjunto de instrucciones SSE5 propuesto constaba de 170 instrucciones (incluidas 46 instrucciones básicas), muchas de las cuales están diseñadas para mejorar el rendimiento de un solo subproceso. Algunas instrucciones SSE5 son instrucciones de 3 operandos , cuyo uso aumentará el número medio de instrucciones por ciclo que se pueden conseguir con el código x86 . [2] Las nuevas instrucciones seleccionadas incluyen: [3]
- Instrucciones fusionadas de multiplicación y acumulación (FMACxx)
- Instrucciones de multiplicación y acumulación de enteros (IMAC, IMADC)
- Instrucciones de permutación (PPERM, PERMPx) y movimiento condicional (PCMOV)
- Instrucciones de conversión, redondeo y control de precisión
AMD afirma que SSE5 proporcionará mejoras de rendimiento dramáticas, particularmente en aplicaciones de seguridad informática , multimedia y de computación de alto rendimiento (HPC), incluida una ganancia de rendimiento 5 veces mayor para el cifrado de Estándar de cifrado avanzado (AES) y una ganancia de rendimiento del 30% para la transformación de coseno discreta ( DCT) utilizado para procesar transmisiones de video. [2]
Para obtener información más detallada, consulte los conjuntos de instrucciones divididos posteriormente.
- XOP : una revisión de la mayor parte del conjunto de instrucciones SSE5
- FMA3 : Vector de coma flotante multiplicar-acumular .
- F16C : Conversión de punto flotante de media precisión .
Revisión de 2009
La especificación SSE5 incluyó una extensión propuesta al esquema de codificación general de las instrucciones x86 para permitir que las instrucciones tengan más de dos operandos. En 2008, Intel anunció su conjunto de instrucciones AVX planificado que proponía una forma diferente de codificar instrucciones con más de dos operandos. Los dos esquemas de codificación propuestos, SSE5 y AVX, son incompatibles entre sí, aunque el esquema AVX tiene ciertas ventajas sobre el esquema SSE5: lo más importante, AVX tiene mucho espacio para futuras extensiones, incluidos tamaños de vector más grandes.
En mayo de 2009, AMD publicó una especificación revisada para las instrucciones futuras planificadas. Esta revisión cambia el esquema de codificación para hacerlo compatible con el esquema AVX, pero con un byte de prefijo diferente para evitar la superposición entre las instrucciones introducidas por AMD y las instrucciones introducidas por Intel.
El conjunto de instrucciones revisado ya no lleva el nombre SSE5, que ha sido criticado por ser engañoso, pero la mayoría de las instrucciones en la nueva revisión son funcionalmente idénticas a la especificación SSE5 original; solo difiere la forma en que se codifican las instrucciones. Las adiciones planificadas al conjunto de instrucciones de AMD constan de tres subconjuntos:
- XOP : instrucciones de multiplicación-acumulación de vectores enteros, suma horizontal de vectores enteros, comparación de vectores enteros, instrucciones de desplazamiento y rotación, instrucciones de permutación de bytes y movimiento condicional, extracción de fracciones de punto flotante.
- FMA4 : Vector de coma flotante multiplicar-acumular .
- F16C : Conversión de punto flotante de media precisión .
Estos nuevos conjuntos de instrucciones incluyen soporte para futuras extensiones para el tamaño del vector de 128 bits a 256 bits. A partir de estas especificaciones preliminares no queda claro si el procesador Bulldozer admitirá registros vectoriales de 256 bits (registros YMM). [4]
Ver también
- listados de instrucciones x86
- Fusionar multiplicar - agregar
Referencias
- ^ Hruska, Joel (14 de noviembre de 2008). "AMD Fusion ahora se retrasa hasta 2011" . Ars Technica .
- ^ a b Vance, Ashlee (30 de agosto de 2007). "AMD traza un impulso de subproceso único con extensiones x86" . El registro .
- ^ "Conjunto de instrucciones SSE5 de 128 bits" . Central de desarrolladores de AMD . Archivado desde el original el 15 de enero de 2008 . Consultado el 28 de enero de 2008 .
- ^ "Manual del programador de la arquitectura AMD64, volumen 6: instrucciones XOP y FMA4 de 128 y 256 bits" (PDF) . AMD . 1 de mayo de 2009.
enlaces externos
- Un nuevo conjunto de instrucciones SSE: AMD anuncia SSE5 , AnandTech
- Manual del programador de la arquitectura AMD64 Volumen 6: Instrucciones de XOP y FMA4 de 128 y 256 bits
- AMD e Intel incompatibles: ¿qué hacer? Foros de desarrolladores de AMD